@dxos/react-ui-text-tooltip 0.8.2-staging.7ac8446 → 0.8.2

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,33 +1,35 @@
1
1
  // packages/ui/react-ui-text-tooltip/src/components/TextTooltip.tsx
2
+ import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
2
3
  import { useComposedRefs } from "@radix-ui/react-compose-refs";
3
- import React, { forwardRef, Fragment, useRef, useState } from "react";
4
+ import React, { forwardRef, useCallback, useRef } from "react";
4
5
  import { Tooltip } from "@dxos/react-ui";
5
- var TextTooltip = /* @__PURE__ */ forwardRef(({ text, children, onlyWhenTruncating, asChild = true, portal = true, zIndex = 70, sideOffset, side, truncateQuery, ...props }, forwardedRef) => {
6
- const ContentRoot = portal ? Tooltip.Portal : Fragment;
7
- const content = useRef(null);
8
- const ref = useComposedRefs(content, forwardedRef);
9
- const [open, setOpen] = useState(false);
10
- return /* @__PURE__ */ React.createElement(Tooltip.Root, {
11
- open,
12
- onOpenChange: (nextOpen) => {
13
- if (onlyWhenTruncating && nextOpen && content.current) {
6
+ var TextTooltip = /* @__PURE__ */ forwardRef(({ __scopeTooltip, text, children, onlyWhenTruncating, asChild = true, side, truncateQuery, ...props }, forwardedRef) => {
7
+ var _effect = _useSignals();
8
+ try {
9
+ const content = useRef(null);
10
+ const ref = useComposedRefs(content, forwardedRef);
11
+ const handleInteract = useCallback((event) => {
12
+ if (onlyWhenTruncating && content.current) {
14
13
  const element = truncateQuery ? content.current.querySelector(truncateQuery) : content.current;
15
- return setOpen(element ? element.scrollWidth > element.offsetWidth : false);
16
- } else {
17
- return setOpen(nextOpen);
14
+ if (!element || element.scrollWidth <= element.offsetWidth) {
15
+ event.preventDefault();
16
+ }
18
17
  }
19
- }
20
- }, /* @__PURE__ */ React.createElement(Tooltip.Trigger, {
21
- asChild,
22
- ...props,
23
- ref
24
- }, children), /* @__PURE__ */ React.createElement(ContentRoot, null, /* @__PURE__ */ React.createElement(Tooltip.Content, {
25
- side,
26
- sideOffset,
27
- style: {
28
- zIndex
29
- }
30
- }, text, /* @__PURE__ */ React.createElement(Tooltip.Arrow, null))));
18
+ }, [
19
+ onlyWhenTruncating,
20
+ truncateQuery
21
+ ]);
22
+ return /* @__PURE__ */ React.createElement(Tooltip.Trigger, {
23
+ asChild,
24
+ ...props,
25
+ content: text,
26
+ side,
27
+ onInteract: handleInteract,
28
+ ref
29
+ }, children);
30
+ } finally {
31
+ _effect.f();
32
+ }
31
33
  });
32
34
  export {
33
35
  TextTooltip
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/TextTooltip.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport React, {\n type ComponentPropsWithoutRef,\n type CSSProperties,\n forwardRef,\n Fragment,\n type PropsWithChildren,\n useRef,\n useState,\n} from 'react';\n\nimport { Tooltip, type TooltipContentProps } from '@dxos/react-ui';\n\nexport type TextTooltipProps = PropsWithChildren<\n {\n text: string;\n asChild?: boolean;\n portal?: boolean;\n zIndex?: CSSProperties['zIndex'];\n onlyWhenTruncating?: boolean;\n truncateQuery?: string;\n } & Pick<TooltipContentProps, 'side' | 'sideOffset'> &\n ComponentPropsWithoutRef<'button'>\n>;\n\nexport const TextTooltip = forwardRef<HTMLButtonElement, TextTooltipProps>(\n (\n {\n text,\n children,\n onlyWhenTruncating,\n asChild = true,\n portal = true,\n zIndex = 70,\n sideOffset,\n side,\n truncateQuery,\n ...props\n },\n forwardedRef,\n ) => {\n const ContentRoot = portal ? Tooltip.Portal : Fragment;\n const content = useRef<HTMLButtonElement | null>(null);\n const ref = useComposedRefs(content, forwardedRef);\n const [open, setOpen] = useState(false);\n return (\n <Tooltip.Root\n open={open}\n onOpenChange={(nextOpen) => {\n if (onlyWhenTruncating && nextOpen && content.current) {\n const element: HTMLElement | null = truncateQuery\n ? content.current.querySelector(truncateQuery)\n : content.current;\n return setOpen(element ? element.scrollWidth > element.offsetWidth : false);\n } else {\n return setOpen(nextOpen);\n }\n }}\n >\n <Tooltip.Trigger asChild={asChild} {...props} ref={ref}>\n {children}\n </Tooltip.Trigger>\n <ContentRoot>\n <Tooltip.Content\n {...{\n side,\n sideOffset,\n style: { zIndex },\n }}\n >\n {text}\n <Tooltip.Arrow />\n </Tooltip.Content>\n </ContentRoot>\n </Tooltip.Root>\n );\n },\n);\n"],
5
- "mappings": ";AAIA,SAASA,uBAAuB;AAChC,OAAOC,SAGLC,YACAC,UAEAC,QACAC,gBACK;AAEP,SAASC,eAAyC;AAc3C,IAAMC,cAAcC,2BACzB,CACE,EACEC,MACAC,UACAC,oBACAC,UAAU,MACVC,SAAS,MACTC,SAAS,IACTC,YACAC,MACAC,eACA,GAAGC,MAAAA,GAELC,iBAAAA;AAEA,QAAMC,cAAcP,SAASQ,QAAQC,SAASC;AAC9C,QAAMC,UAAUC,OAAiC,IAAA;AACjD,QAAMC,MAAMC,gBAAgBH,SAASL,YAAAA;AACrC,QAAM,CAACS,MAAMC,OAAAA,IAAWC,SAAS,KAAA;AACjC,SACE,sBAAA,cAACT,QAAQU,MAAI;IACXH;IACAI,cAAc,CAACC,aAAAA;AACb,UAAItB,sBAAsBsB,YAAYT,QAAQU,SAAS;AACrD,cAAMC,UAA8BlB,gBAChCO,QAAQU,QAAQE,cAAcnB,aAAAA,IAC9BO,QAAQU;AACZ,eAAOL,QAAQM,UAAUA,QAAQE,cAAcF,QAAQG,cAAc,KAAA;MACvE,OAAO;AACL,eAAOT,QAAQI,QAAAA;MACjB;IACF;KAEA,sBAAA,cAACZ,QAAQkB,SAAO;IAAC3B;IAAmB,GAAGM;IAAOQ;KAC3ChB,QAAAA,GAEH,sBAAA,cAACU,aAAAA,MACC,sBAAA,cAACC,QAAQmB,SACH;IACFxB;IACAD;IACA0B,OAAO;MAAE3B;IAAO;EAClB,GAECL,MACD,sBAAA,cAACY,QAAQqB,OAAK,IAAA,CAAA,CAAA,CAAA;AAKxB,CAAA;",
6
- "names": ["useComposedRefs", "React", "forwardRef", "Fragment", "useRef", "useState", "Tooltip", "TextTooltip", "forwardRef", "text", "children", "onlyWhenTruncating", "asChild", "portal", "zIndex", "sideOffset", "side", "truncateQuery", "props", "forwardedRef", "ContentRoot", "Tooltip", "Portal", "Fragment", "content", "useRef", "ref", "useComposedRefs", "open", "setOpen", "useState", "Root", "onOpenChange", "nextOpen", "current", "element", "querySelector", "scrollWidth", "offsetWidth", "Trigger", "Content", "style", "Arrow"]
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport React, {\n type ComponentPropsWithoutRef,\n forwardRef,\n type PropsWithChildren,\n type SyntheticEvent,\n useCallback,\n useRef,\n} from 'react';\n\nimport { Tooltip, type TooltipScopedProps, type TooltipTriggerProps } from '@dxos/react-ui';\n\nexport type TextTooltipProps = PropsWithChildren<\n {\n text: string;\n asChild?: boolean;\n onlyWhenTruncating?: boolean;\n truncateQuery?: string;\n } & Pick<TooltipTriggerProps, 'side'> &\n ComponentPropsWithoutRef<'button'>\n>;\n\nexport const TextTooltip = forwardRef<HTMLButtonElement, TooltipScopedProps<TextTooltipProps>>(\n (\n { __scopeTooltip, text, children, onlyWhenTruncating, asChild = true, side, truncateQuery, ...props },\n forwardedRef,\n ) => {\n const content = useRef<HTMLButtonElement | null>(null);\n const ref = useComposedRefs(content, forwardedRef);\n const handleInteract = useCallback(\n (event: SyntheticEvent) => {\n if (onlyWhenTruncating && content.current) {\n const element: HTMLElement | null = truncateQuery\n ? content.current.querySelector(truncateQuery)\n : content.current;\n if (!element || element.scrollWidth <= element.offsetWidth) {\n event.preventDefault();\n }\n }\n },\n [onlyWhenTruncating, truncateQuery],\n );\n return (\n <Tooltip.Trigger asChild={asChild} {...props} content={text} side={side} onInteract={handleInteract} ref={ref}>\n {children}\n </Tooltip.Trigger>\n );\n },\n);\n"],
5
+ "mappings": ";;AAIA,SAASA,uBAAuB;AAChC,OAAOC,SAELC,YAGAC,aACAC,cACK;AAEP,SAASC,eAAkE;AAYpE,IAAMC,cAAcC,2BACzB,CACE,EAAEC,gBAAgBC,MAAMC,UAAUC,oBAAoBC,UAAU,MAAMC,MAAMC,eAAe,GAAGC,MAAAA,GAC9FC,iBAAAA;;;AAEA,UAAMC,UAAUC,OAAiC,IAAA;AACjD,UAAMC,MAAMC,gBAAgBH,SAASD,YAAAA;AACrC,UAAMK,iBAAiBC,YACrB,CAACC,UAAAA;AACC,UAAIZ,sBAAsBM,QAAQO,SAAS;AACzC,cAAMC,UAA8BX,gBAChCG,QAAQO,QAAQE,cAAcZ,aAAAA,IAC9BG,QAAQO;AACZ,YAAI,CAACC,WAAWA,QAAQE,eAAeF,QAAQG,aAAa;AAC1DL,gBAAMM,eAAc;QACtB;MACF;IACF,GACA;MAAClB;MAAoBG;KAAc;AAErC,WACE,sBAAA,cAACgB,QAAQC,SAAO;MAACnB;MAAmB,GAAGG;MAAOE,SAASR;MAAMI;MAAYmB,YAAYX;MAAgBF;OAClGT,QAAAA;;;;AAGP,CAAA;",
6
+ "names": ["useComposedRefs", "React", "forwardRef", "useCallback", "useRef", "Tooltip", "TextTooltip", "forwardRef", "__scopeTooltip", "text", "children", "onlyWhenTruncating", "asChild", "side", "truncateQuery", "props", "forwardedRef", "content", "useRef", "ref", "useComposedRefs", "handleInteract", "useCallback", "event", "current", "element", "querySelector", "scrollWidth", "offsetWidth", "preventDefault", "Tooltip", "Trigger", "onInteract"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"packages/ui/react-ui-text-tooltip/src/components/TextTooltip.tsx":{"bytes":6535,"imports":[{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-text-tooltip/src/components/index.ts":{"bytes":527,"imports":[{"path":"packages/ui/react-ui-text-tooltip/src/components/TextTooltip.tsx","kind":"import-statement","original":"./TextTooltip"}],"format":"esm"},"packages/ui/react-ui-text-tooltip/src/index.ts":{"bytes":511,"imports":[{"path":"packages/ui/react-ui-text-tooltip/src/components/index.ts","kind":"import-statement","original":"./components"}],"format":"esm"}},"outputs":{"packages/ui/react-ui-text-tooltip/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3671},"packages/ui/react-ui-text-tooltip/dist/lib/browser/index.mjs":{"imports":[{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"exports":["TextTooltip"],"entryPoint":"packages/ui/react-ui-text-tooltip/src/index.ts","inputs":{"packages/ui/react-ui-text-tooltip/src/components/TextTooltip.tsx":{"bytesInOutput":1331},"packages/ui/react-ui-text-tooltip/src/components/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-text-tooltip/src/index.ts":{"bytesInOutput":0}},"bytes":1460}}}
1
+ {"inputs":{"packages/ui/react-ui-text-tooltip/src/components/TextTooltip.tsx":{"bytes":5276,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-text-tooltip/src/components/index.ts":{"bytes":495,"imports":[{"path":"packages/ui/react-ui-text-tooltip/src/components/TextTooltip.tsx","kind":"import-statement","original":"./TextTooltip"}],"format":"esm"},"packages/ui/react-ui-text-tooltip/src/index.ts":{"bytes":479,"imports":[{"path":"packages/ui/react-ui-text-tooltip/src/components/index.ts","kind":"import-statement","original":"./components"}],"format":"esm"}},"outputs":{"packages/ui/react-ui-text-tooltip/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":2828},"packages/ui/react-ui-text-tooltip/dist/lib/browser/index.mjs":{"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"exports":["TextTooltip"],"entryPoint":"packages/ui/react-ui-text-tooltip/src/index.ts","inputs":{"packages/ui/react-ui-text-tooltip/src/components/TextTooltip.tsx":{"bytesInOutput":1171},"packages/ui/react-ui-text-tooltip/src/components/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-text-tooltip/src/index.ts":{"bytesInOutput":0}},"bytes":1300}}}
@@ -31,35 +31,37 @@ __export(node_exports, {
31
31
  TextTooltip: () => TextTooltip
32
32
  });
33
33
  module.exports = __toCommonJS(node_exports);
34
+ var import_tracking = require("@preact-signals/safe-react/tracking");
34
35
  var import_react_compose_refs = require("@radix-ui/react-compose-refs");
35
36
  var import_react = __toESM(require("react"));
36
37
  var import_react_ui = require("@dxos/react-ui");
37
- var TextTooltip = /* @__PURE__ */ (0, import_react.forwardRef)(({ text, children, onlyWhenTruncating, asChild = true, portal = true, zIndex = 70, sideOffset, side, truncateQuery, ...props }, forwardedRef) => {
38
- const ContentRoot = portal ? import_react_ui.Tooltip.Portal : import_react.Fragment;
39
- const content = (0, import_react.useRef)(null);
40
- const ref = (0, import_react_compose_refs.useComposedRefs)(content, forwardedRef);
41
- const [open, setOpen] = (0, import_react.useState)(false);
42
- return /* @__PURE__ */ import_react.default.createElement(import_react_ui.Tooltip.Root, {
43
- open,
44
- onOpenChange: (nextOpen) => {
45
- if (onlyWhenTruncating && nextOpen && content.current) {
38
+ var TextTooltip = /* @__PURE__ */ (0, import_react.forwardRef)(({ __scopeTooltip, text, children, onlyWhenTruncating, asChild = true, side, truncateQuery, ...props }, forwardedRef) => {
39
+ var _effect = (0, import_tracking.useSignals)();
40
+ try {
41
+ const content = (0, import_react.useRef)(null);
42
+ const ref = (0, import_react_compose_refs.useComposedRefs)(content, forwardedRef);
43
+ const handleInteract = (0, import_react.useCallback)((event) => {
44
+ if (onlyWhenTruncating && content.current) {
46
45
  const element = truncateQuery ? content.current.querySelector(truncateQuery) : content.current;
47
- return setOpen(element ? element.scrollWidth > element.offsetWidth : false);
48
- } else {
49
- return setOpen(nextOpen);
46
+ if (!element || element.scrollWidth <= element.offsetWidth) {
47
+ event.preventDefault();
48
+ }
50
49
  }
51
- }
52
- }, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Tooltip.Trigger, {
53
- asChild,
54
- ...props,
55
- ref
56
- }, children), /* @__PURE__ */ import_react.default.createElement(ContentRoot, null, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Tooltip.Content, {
57
- side,
58
- sideOffset,
59
- style: {
60
- zIndex
61
- }
62
- }, text, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Tooltip.Arrow, null))));
50
+ }, [
51
+ onlyWhenTruncating,
52
+ truncateQuery
53
+ ]);
54
+ return /* @__PURE__ */ import_react.default.createElement(import_react_ui.Tooltip.Trigger, {
55
+ asChild,
56
+ ...props,
57
+ content: text,
58
+ side,
59
+ onInteract: handleInteract,
60
+ ref
61
+ }, children);
62
+ } finally {
63
+ _effect.f();
64
+ }
63
65
  });
64
66
  // Annotate the CommonJS export names for ESM import in node:
65
67
  0 && (module.exports = {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/TextTooltip.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport React, {\n type ComponentPropsWithoutRef,\n type CSSProperties,\n forwardRef,\n Fragment,\n type PropsWithChildren,\n useRef,\n useState,\n} from 'react';\n\nimport { Tooltip, type TooltipContentProps } from '@dxos/react-ui';\n\nexport type TextTooltipProps = PropsWithChildren<\n {\n text: string;\n asChild?: boolean;\n portal?: boolean;\n zIndex?: CSSProperties['zIndex'];\n onlyWhenTruncating?: boolean;\n truncateQuery?: string;\n } & Pick<TooltipContentProps, 'side' | 'sideOffset'> &\n ComponentPropsWithoutRef<'button'>\n>;\n\nexport const TextTooltip = forwardRef<HTMLButtonElement, TextTooltipProps>(\n (\n {\n text,\n children,\n onlyWhenTruncating,\n asChild = true,\n portal = true,\n zIndex = 70,\n sideOffset,\n side,\n truncateQuery,\n ...props\n },\n forwardedRef,\n ) => {\n const ContentRoot = portal ? Tooltip.Portal : Fragment;\n const content = useRef<HTMLButtonElement | null>(null);\n const ref = useComposedRefs(content, forwardedRef);\n const [open, setOpen] = useState(false);\n return (\n <Tooltip.Root\n open={open}\n onOpenChange={(nextOpen) => {\n if (onlyWhenTruncating && nextOpen && content.current) {\n const element: HTMLElement | null = truncateQuery\n ? content.current.querySelector(truncateQuery)\n : content.current;\n return setOpen(element ? element.scrollWidth > element.offsetWidth : false);\n } else {\n return setOpen(nextOpen);\n }\n }}\n >\n <Tooltip.Trigger asChild={asChild} {...props} ref={ref}>\n {children}\n </Tooltip.Trigger>\n <ContentRoot>\n <Tooltip.Content\n {...{\n side,\n sideOffset,\n style: { zIndex },\n }}\n >\n {text}\n <Tooltip.Arrow />\n </Tooltip.Content>\n </ContentRoot>\n </Tooltip.Root>\n );\n },\n);\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,gCAAgC;AAChC,mBAQO;AAEP,sBAAkD;AAc3C,IAAMA,cAAcC,6CACzB,CACE,EACEC,MACAC,UACAC,oBACAC,UAAU,MACVC,SAAS,MACTC,SAAS,IACTC,YACAC,MACAC,eACA,GAAGC,MAAAA,GAELC,iBAAAA;AAEA,QAAMC,cAAcP,SAASQ,wBAAQC,SAASC;AAC9C,QAAMC,cAAUC,qBAAiC,IAAA;AACjD,QAAMC,UAAMC,2CAAgBH,SAASL,YAAAA;AACrC,QAAM,CAACS,MAAMC,OAAAA,QAAWC,uBAAS,KAAA;AACjC,SACE,6BAAAC,QAAA,cAACV,wBAAQW,MAAI;IACXJ;IACAK,cAAc,CAACC,aAAAA;AACb,UAAIvB,sBAAsBuB,YAAYV,QAAQW,SAAS;AACrD,cAAMC,UAA8BnB,gBAChCO,QAAQW,QAAQE,cAAcpB,aAAAA,IAC9BO,QAAQW;AACZ,eAAON,QAAQO,UAAUA,QAAQE,cAAcF,QAAQG,cAAc,KAAA;MACvE,OAAO;AACL,eAAOV,QAAQK,QAAAA;MACjB;IACF;KAEA,6BAAAH,QAAA,cAACV,wBAAQmB,SAAO;IAAC5B;IAAmB,GAAGM;IAAOQ;KAC3ChB,QAAAA,GAEH,6BAAAqB,QAAA,cAACX,aAAAA,MACC,6BAAAW,QAAA,cAACV,wBAAQoB,SACH;IACFzB;IACAD;IACA2B,OAAO;MAAE5B;IAAO;EAClB,GAECL,MACD,6BAAAsB,QAAA,cAACV,wBAAQsB,OAAK,IAAA,CAAA,CAAA,CAAA;AAKxB,CAAA;",
6
- "names": ["TextTooltip", "forwardRef", "text", "children", "onlyWhenTruncating", "asChild", "portal", "zIndex", "sideOffset", "side", "truncateQuery", "props", "forwardedRef", "ContentRoot", "Tooltip", "Portal", "Fragment", "content", "useRef", "ref", "useComposedRefs", "open", "setOpen", "useState", "React", "Root", "onOpenChange", "nextOpen", "current", "element", "querySelector", "scrollWidth", "offsetWidth", "Trigger", "Content", "style", "Arrow"]
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport React, {\n type ComponentPropsWithoutRef,\n forwardRef,\n type PropsWithChildren,\n type SyntheticEvent,\n useCallback,\n useRef,\n} from 'react';\n\nimport { Tooltip, type TooltipScopedProps, type TooltipTriggerProps } from '@dxos/react-ui';\n\nexport type TextTooltipProps = PropsWithChildren<\n {\n text: string;\n asChild?: boolean;\n onlyWhenTruncating?: boolean;\n truncateQuery?: string;\n } & Pick<TooltipTriggerProps, 'side'> &\n ComponentPropsWithoutRef<'button'>\n>;\n\nexport const TextTooltip = forwardRef<HTMLButtonElement, TooltipScopedProps<TextTooltipProps>>(\n (\n { __scopeTooltip, text, children, onlyWhenTruncating, asChild = true, side, truncateQuery, ...props },\n forwardedRef,\n ) => {\n const content = useRef<HTMLButtonElement | null>(null);\n const ref = useComposedRefs(content, forwardedRef);\n const handleInteract = useCallback(\n (event: SyntheticEvent) => {\n if (onlyWhenTruncating && content.current) {\n const element: HTMLElement | null = truncateQuery\n ? content.current.querySelector(truncateQuery)\n : content.current;\n if (!element || element.scrollWidth <= element.offsetWidth) {\n event.preventDefault();\n }\n }\n },\n [onlyWhenTruncating, truncateQuery],\n );\n return (\n <Tooltip.Trigger asChild={asChild} {...props} content={text} side={side} onInteract={handleInteract} ref={ref}>\n {children}\n </Tooltip.Trigger>\n );\n },\n);\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,gCAAgC;AAChC,mBAOO;AAEP,sBAA2E;AAYpE,IAAMA,cAAcC,6CACzB,CACE,EAAEC,gBAAgBC,MAAMC,UAAUC,oBAAoBC,UAAU,MAAMC,MAAMC,eAAe,GAAGC,MAAAA,GAC9FC,iBAAAA;;;AAEA,UAAMC,cAAUC,qBAAiC,IAAA;AACjD,UAAMC,UAAMC,2CAAgBH,SAASD,YAAAA;AACrC,UAAMK,qBAAiBC,0BACrB,CAACC,UAAAA;AACC,UAAIZ,sBAAsBM,QAAQO,SAAS;AACzC,cAAMC,UAA8BX,gBAChCG,QAAQO,QAAQE,cAAcZ,aAAAA,IAC9BG,QAAQO;AACZ,YAAI,CAACC,WAAWA,QAAQE,eAAeF,QAAQG,aAAa;AAC1DL,gBAAMM,eAAc;QACtB;MACF;IACF,GACA;MAAClB;MAAoBG;KAAc;AAErC,WACE,6BAAAgB,QAAA,cAACC,wBAAQC,SAAO;MAACpB;MAAmB,GAAGG;MAAOE,SAASR;MAAMI;MAAYoB,YAAYZ;MAAgBF;OAClGT,QAAAA;;;;AAGP,CAAA;",
6
+ "names": ["TextTooltip", "forwardRef", "__scopeTooltip", "text", "children", "onlyWhenTruncating", "asChild", "side", "truncateQuery", "props", "forwardedRef", "content", "useRef", "ref", "useComposedRefs", "handleInteract", "useCallback", "event", "current", "element", "querySelector", "scrollWidth", "offsetWidth", "preventDefault", "React", "Tooltip", "Trigger", "onInteract"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"packages/ui/react-ui-text-tooltip/src/components/TextTooltip.tsx":{"bytes":6535,"imports":[{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-text-tooltip/src/components/index.ts":{"bytes":527,"imports":[{"path":"packages/ui/react-ui-text-tooltip/src/components/TextTooltip.tsx","kind":"import-statement","original":"./TextTooltip"}],"format":"esm"},"packages/ui/react-ui-text-tooltip/src/index.ts":{"bytes":511,"imports":[{"path":"packages/ui/react-ui-text-tooltip/src/components/index.ts","kind":"import-statement","original":"./components"}],"format":"esm"}},"outputs":{"packages/ui/react-ui-text-tooltip/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3671},"packages/ui/react-ui-text-tooltip/dist/lib/node/index.cjs":{"imports":[{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"exports":["TextTooltip"],"entryPoint":"packages/ui/react-ui-text-tooltip/src/index.ts","inputs":{"packages/ui/react-ui-text-tooltip/src/components/TextTooltip.tsx":{"bytesInOutput":1331},"packages/ui/react-ui-text-tooltip/src/components/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-text-tooltip/src/index.ts":{"bytesInOutput":0}},"bytes":1460}}}
1
+ {"inputs":{"packages/ui/react-ui-text-tooltip/src/components/TextTooltip.tsx":{"bytes":5276,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-text-tooltip/src/components/index.ts":{"bytes":495,"imports":[{"path":"packages/ui/react-ui-text-tooltip/src/components/TextTooltip.tsx","kind":"import-statement","original":"./TextTooltip"}],"format":"esm"},"packages/ui/react-ui-text-tooltip/src/index.ts":{"bytes":479,"imports":[{"path":"packages/ui/react-ui-text-tooltip/src/components/index.ts","kind":"import-statement","original":"./components"}],"format":"esm"}},"outputs":{"packages/ui/react-ui-text-tooltip/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":2828},"packages/ui/react-ui-text-tooltip/dist/lib/node/index.cjs":{"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"exports":["TextTooltip"],"entryPoint":"packages/ui/react-ui-text-tooltip/src/index.ts","inputs":{"packages/ui/react-ui-text-tooltip/src/components/TextTooltip.tsx":{"bytesInOutput":1171},"packages/ui/react-ui-text-tooltip/src/components/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-text-tooltip/src/index.ts":{"bytesInOutput":0}},"bytes":1300}}}
@@ -1,35 +1,37 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
 
3
3
  // packages/ui/react-ui-text-tooltip/src/components/TextTooltip.tsx
4
+ import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
4
5
  import { useComposedRefs } from "@radix-ui/react-compose-refs";
5
- import React, { forwardRef, Fragment, useRef, useState } from "react";
6
+ import React, { forwardRef, useCallback, useRef } from "react";
6
7
  import { Tooltip } from "@dxos/react-ui";
7
- var TextTooltip = /* @__PURE__ */ forwardRef(({ text, children, onlyWhenTruncating, asChild = true, portal = true, zIndex = 70, sideOffset, side, truncateQuery, ...props }, forwardedRef) => {
8
- const ContentRoot = portal ? Tooltip.Portal : Fragment;
9
- const content = useRef(null);
10
- const ref = useComposedRefs(content, forwardedRef);
11
- const [open, setOpen] = useState(false);
12
- return /* @__PURE__ */ React.createElement(Tooltip.Root, {
13
- open,
14
- onOpenChange: (nextOpen) => {
15
- if (onlyWhenTruncating && nextOpen && content.current) {
8
+ var TextTooltip = /* @__PURE__ */ forwardRef(({ __scopeTooltip, text, children, onlyWhenTruncating, asChild = true, side, truncateQuery, ...props }, forwardedRef) => {
9
+ var _effect = _useSignals();
10
+ try {
11
+ const content = useRef(null);
12
+ const ref = useComposedRefs(content, forwardedRef);
13
+ const handleInteract = useCallback((event) => {
14
+ if (onlyWhenTruncating && content.current) {
16
15
  const element = truncateQuery ? content.current.querySelector(truncateQuery) : content.current;
17
- return setOpen(element ? element.scrollWidth > element.offsetWidth : false);
18
- } else {
19
- return setOpen(nextOpen);
16
+ if (!element || element.scrollWidth <= element.offsetWidth) {
17
+ event.preventDefault();
18
+ }
20
19
  }
21
- }
22
- }, /* @__PURE__ */ React.createElement(Tooltip.Trigger, {
23
- asChild,
24
- ...props,
25
- ref
26
- }, children), /* @__PURE__ */ React.createElement(ContentRoot, null, /* @__PURE__ */ React.createElement(Tooltip.Content, {
27
- side,
28
- sideOffset,
29
- style: {
30
- zIndex
31
- }
32
- }, text, /* @__PURE__ */ React.createElement(Tooltip.Arrow, null))));
20
+ }, [
21
+ onlyWhenTruncating,
22
+ truncateQuery
23
+ ]);
24
+ return /* @__PURE__ */ React.createElement(Tooltip.Trigger, {
25
+ asChild,
26
+ ...props,
27
+ content: text,
28
+ side,
29
+ onInteract: handleInteract,
30
+ ref
31
+ }, children);
32
+ } finally {
33
+ _effect.f();
34
+ }
33
35
  });
34
36
  export {
35
37
  TextTooltip
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/TextTooltip.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport React, {\n type ComponentPropsWithoutRef,\n type CSSProperties,\n forwardRef,\n Fragment,\n type PropsWithChildren,\n useRef,\n useState,\n} from 'react';\n\nimport { Tooltip, type TooltipContentProps } from '@dxos/react-ui';\n\nexport type TextTooltipProps = PropsWithChildren<\n {\n text: string;\n asChild?: boolean;\n portal?: boolean;\n zIndex?: CSSProperties['zIndex'];\n onlyWhenTruncating?: boolean;\n truncateQuery?: string;\n } & Pick<TooltipContentProps, 'side' | 'sideOffset'> &\n ComponentPropsWithoutRef<'button'>\n>;\n\nexport const TextTooltip = forwardRef<HTMLButtonElement, TextTooltipProps>(\n (\n {\n text,\n children,\n onlyWhenTruncating,\n asChild = true,\n portal = true,\n zIndex = 70,\n sideOffset,\n side,\n truncateQuery,\n ...props\n },\n forwardedRef,\n ) => {\n const ContentRoot = portal ? Tooltip.Portal : Fragment;\n const content = useRef<HTMLButtonElement | null>(null);\n const ref = useComposedRefs(content, forwardedRef);\n const [open, setOpen] = useState(false);\n return (\n <Tooltip.Root\n open={open}\n onOpenChange={(nextOpen) => {\n if (onlyWhenTruncating && nextOpen && content.current) {\n const element: HTMLElement | null = truncateQuery\n ? content.current.querySelector(truncateQuery)\n : content.current;\n return setOpen(element ? element.scrollWidth > element.offsetWidth : false);\n } else {\n return setOpen(nextOpen);\n }\n }}\n >\n <Tooltip.Trigger asChild={asChild} {...props} ref={ref}>\n {children}\n </Tooltip.Trigger>\n <ContentRoot>\n <Tooltip.Content\n {...{\n side,\n sideOffset,\n style: { zIndex },\n }}\n >\n {text}\n <Tooltip.Arrow />\n </Tooltip.Content>\n </ContentRoot>\n </Tooltip.Root>\n );\n },\n);\n"],
5
- "mappings": ";;;AAIA,SAASA,uBAAuB;AAChC,OAAOC,SAGLC,YACAC,UAEAC,QACAC,gBACK;AAEP,SAASC,eAAyC;AAc3C,IAAMC,cAAcC,2BACzB,CACE,EACEC,MACAC,UACAC,oBACAC,UAAU,MACVC,SAAS,MACTC,SAAS,IACTC,YACAC,MACAC,eACA,GAAGC,MAAAA,GAELC,iBAAAA;AAEA,QAAMC,cAAcP,SAASQ,QAAQC,SAASC;AAC9C,QAAMC,UAAUC,OAAiC,IAAA;AACjD,QAAMC,MAAMC,gBAAgBH,SAASL,YAAAA;AACrC,QAAM,CAACS,MAAMC,OAAAA,IAAWC,SAAS,KAAA;AACjC,SACE,sBAAA,cAACT,QAAQU,MAAI;IACXH;IACAI,cAAc,CAACC,aAAAA;AACb,UAAItB,sBAAsBsB,YAAYT,QAAQU,SAAS;AACrD,cAAMC,UAA8BlB,gBAChCO,QAAQU,QAAQE,cAAcnB,aAAAA,IAC9BO,QAAQU;AACZ,eAAOL,QAAQM,UAAUA,QAAQE,cAAcF,QAAQG,cAAc,KAAA;MACvE,OAAO;AACL,eAAOT,QAAQI,QAAAA;MACjB;IACF;KAEA,sBAAA,cAACZ,QAAQkB,SAAO;IAAC3B;IAAmB,GAAGM;IAAOQ;KAC3ChB,QAAAA,GAEH,sBAAA,cAACU,aAAAA,MACC,sBAAA,cAACC,QAAQmB,SACH;IACFxB;IACAD;IACA0B,OAAO;MAAE3B;IAAO;EAClB,GAECL,MACD,sBAAA,cAACY,QAAQqB,OAAK,IAAA,CAAA,CAAA,CAAA;AAKxB,CAAA;",
6
- "names": ["useComposedRefs", "React", "forwardRef", "Fragment", "useRef", "useState", "Tooltip", "TextTooltip", "forwardRef", "text", "children", "onlyWhenTruncating", "asChild", "portal", "zIndex", "sideOffset", "side", "truncateQuery", "props", "forwardedRef", "ContentRoot", "Tooltip", "Portal", "Fragment", "content", "useRef", "ref", "useComposedRefs", "open", "setOpen", "useState", "Root", "onOpenChange", "nextOpen", "current", "element", "querySelector", "scrollWidth", "offsetWidth", "Trigger", "Content", "style", "Arrow"]
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport React, {\n type ComponentPropsWithoutRef,\n forwardRef,\n type PropsWithChildren,\n type SyntheticEvent,\n useCallback,\n useRef,\n} from 'react';\n\nimport { Tooltip, type TooltipScopedProps, type TooltipTriggerProps } from '@dxos/react-ui';\n\nexport type TextTooltipProps = PropsWithChildren<\n {\n text: string;\n asChild?: boolean;\n onlyWhenTruncating?: boolean;\n truncateQuery?: string;\n } & Pick<TooltipTriggerProps, 'side'> &\n ComponentPropsWithoutRef<'button'>\n>;\n\nexport const TextTooltip = forwardRef<HTMLButtonElement, TooltipScopedProps<TextTooltipProps>>(\n (\n { __scopeTooltip, text, children, onlyWhenTruncating, asChild = true, side, truncateQuery, ...props },\n forwardedRef,\n ) => {\n const content = useRef<HTMLButtonElement | null>(null);\n const ref = useComposedRefs(content, forwardedRef);\n const handleInteract = useCallback(\n (event: SyntheticEvent) => {\n if (onlyWhenTruncating && content.current) {\n const element: HTMLElement | null = truncateQuery\n ? content.current.querySelector(truncateQuery)\n : content.current;\n if (!element || element.scrollWidth <= element.offsetWidth) {\n event.preventDefault();\n }\n }\n },\n [onlyWhenTruncating, truncateQuery],\n );\n return (\n <Tooltip.Trigger asChild={asChild} {...props} content={text} side={side} onInteract={handleInteract} ref={ref}>\n {children}\n </Tooltip.Trigger>\n );\n },\n);\n"],
5
+ "mappings": ";;;;AAIA,SAASA,uBAAuB;AAChC,OAAOC,SAELC,YAGAC,aACAC,cACK;AAEP,SAASC,eAAkE;AAYpE,IAAMC,cAAcC,2BACzB,CACE,EAAEC,gBAAgBC,MAAMC,UAAUC,oBAAoBC,UAAU,MAAMC,MAAMC,eAAe,GAAGC,MAAAA,GAC9FC,iBAAAA;;;AAEA,UAAMC,UAAUC,OAAiC,IAAA;AACjD,UAAMC,MAAMC,gBAAgBH,SAASD,YAAAA;AACrC,UAAMK,iBAAiBC,YACrB,CAACC,UAAAA;AACC,UAAIZ,sBAAsBM,QAAQO,SAAS;AACzC,cAAMC,UAA8BX,gBAChCG,QAAQO,QAAQE,cAAcZ,aAAAA,IAC9BG,QAAQO;AACZ,YAAI,CAACC,WAAWA,QAAQE,eAAeF,QAAQG,aAAa;AAC1DL,gBAAMM,eAAc;QACtB;MACF;IACF,GACA;MAAClB;MAAoBG;KAAc;AAErC,WACE,sBAAA,cAACgB,QAAQC,SAAO;MAACnB;MAAmB,GAAGG;MAAOE,SAASR;MAAMI;MAAYmB,YAAYX;MAAgBF;OAClGT,QAAAA;;;;AAGP,CAAA;",
6
+ "names": ["useComposedRefs", "React", "forwardRef", "useCallback", "useRef", "Tooltip", "TextTooltip", "forwardRef", "__scopeTooltip", "text", "children", "onlyWhenTruncating", "asChild", "side", "truncateQuery", "props", "forwardedRef", "content", "useRef", "ref", "useComposedRefs", "handleInteract", "useCallback", "event", "current", "element", "querySelector", "scrollWidth", "offsetWidth", "preventDefault", "Tooltip", "Trigger", "onInteract"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"packages/ui/react-ui-text-tooltip/src/components/TextTooltip.tsx":{"bytes":6535,"imports":[{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-text-tooltip/src/components/index.ts":{"bytes":527,"imports":[{"path":"packages/ui/react-ui-text-tooltip/src/components/TextTooltip.tsx","kind":"import-statement","original":"./TextTooltip"}],"format":"esm"},"packages/ui/react-ui-text-tooltip/src/index.ts":{"bytes":511,"imports":[{"path":"packages/ui/react-ui-text-tooltip/src/components/index.ts","kind":"import-statement","original":"./components"}],"format":"esm"}},"outputs":{"packages/ui/react-ui-text-tooltip/dist/lib/node-esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3673},"packages/ui/react-ui-text-tooltip/dist/lib/node-esm/index.mjs":{"imports":[{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"exports":["TextTooltip"],"entryPoint":"packages/ui/react-ui-text-tooltip/src/index.ts","inputs":{"packages/ui/react-ui-text-tooltip/src/components/TextTooltip.tsx":{"bytesInOutput":1331},"packages/ui/react-ui-text-tooltip/src/components/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-text-tooltip/src/index.ts":{"bytesInOutput":0}},"bytes":1553}}}
1
+ {"inputs":{"packages/ui/react-ui-text-tooltip/src/components/TextTooltip.tsx":{"bytes":5276,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-text-tooltip/src/components/index.ts":{"bytes":495,"imports":[{"path":"packages/ui/react-ui-text-tooltip/src/components/TextTooltip.tsx","kind":"import-statement","original":"./TextTooltip"}],"format":"esm"},"packages/ui/react-ui-text-tooltip/src/index.ts":{"bytes":479,"imports":[{"path":"packages/ui/react-ui-text-tooltip/src/components/index.ts","kind":"import-statement","original":"./components"}],"format":"esm"}},"outputs":{"packages/ui/react-ui-text-tooltip/dist/lib/node-esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":2830},"packages/ui/react-ui-text-tooltip/dist/lib/node-esm/index.mjs":{"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"exports":["TextTooltip"],"entryPoint":"packages/ui/react-ui-text-tooltip/src/index.ts","inputs":{"packages/ui/react-ui-text-tooltip/src/components/TextTooltip.tsx":{"bytesInOutput":1171},"packages/ui/react-ui-text-tooltip/src/components/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-text-tooltip/src/index.ts":{"bytesInOutput":0}},"bytes":1393}}}
@@ -1,21 +1,19 @@
1
- import React, { type ComponentPropsWithoutRef, type CSSProperties, type PropsWithChildren } from 'react';
2
- import { type TooltipContentProps } from '@dxos/react-ui';
1
+ import React, { type ComponentPropsWithoutRef, type PropsWithChildren } from 'react';
2
+ import { type TooltipTriggerProps } from '@dxos/react-ui';
3
3
  export type TextTooltipProps = PropsWithChildren<{
4
4
  text: string;
5
5
  asChild?: boolean;
6
- portal?: boolean;
7
- zIndex?: CSSProperties['zIndex'];
8
6
  onlyWhenTruncating?: boolean;
9
7
  truncateQuery?: string;
10
- } & Pick<TooltipContentProps, 'side' | 'sideOffset'> & ComponentPropsWithoutRef<'button'>>;
8
+ } & Pick<TooltipTriggerProps, 'side'> & ComponentPropsWithoutRef<'button'>>;
11
9
  export declare const TextTooltip: React.ForwardRefExoticComponent<{
12
10
  text: string;
13
11
  asChild?: boolean;
14
- portal?: boolean;
15
- zIndex?: CSSProperties["zIndex"];
16
12
  onlyWhenTruncating?: boolean;
17
13
  truncateQuery?: string;
18
- } & Pick<TooltipContentProps, "side" | "sideOffset"> & Omit<React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & {
14
+ } & Pick<TooltipTriggerProps, "side"> & Omit<React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & {
19
15
  children?: React.ReactNode | undefined;
16
+ } & {
17
+ __scopeTooltip?: import("@radix-ui/react-context").Scope;
20
18
  } & React.RefAttributes<HTMLButtonElement>>;
21
19
  //# sourceMappingURL=TextTooltip.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TextTooltip.d.ts","sourceRoot":"","sources":["../../../../src/components/TextTooltip.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,EACZ,KAAK,wBAAwB,EAC7B,KAAK,aAAa,EAGlB,KAAK,iBAAiB,EAGvB,MAAM,OAAO,CAAC;AAEf,OAAO,EAAW,KAAK,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAEnE,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,CAC9C;IACE,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IACjC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,IAAI,CAAC,mBAAmB,EAAE,MAAM,GAAG,YAAY,CAAC,GAClD,wBAAwB,CAAC,QAAQ,CAAC,CACrC,CAAC;AAEF,eAAO,MAAM,WAAW;UAVd,MAAM;cACF,OAAO;aACR,OAAO;aACP,aAAa,CAAC,QAAQ,CAAC;yBACX,OAAO;oBACZ,MAAM;;;2CAyDzB,CAAC"}
1
+ {"version":3,"file":"TextTooltip.d.ts","sourceRoot":"","sources":["../../../../src/components/TextTooltip.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,EACZ,KAAK,wBAAwB,EAE7B,KAAK,iBAAiB,EAIvB,MAAM,OAAO,CAAC;AAEf,OAAO,EAAoC,KAAK,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAE5F,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,CAC9C;IACE,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC,GACnC,wBAAwB,CAAC,QAAQ,CAAC,CACrC,CAAC;AAEF,eAAO,MAAM,WAAW;UARd,MAAM;cACF,OAAO;yBACI,OAAO;oBACZ,MAAM;;;;;2CA+BzB,CAAC"}
@@ -1 +1 @@
1
- {"version":"5.7.3"}
1
+ {"version":"5.8.3"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/react-ui-text-tooltip",
3
- "version": "0.8.2-staging.7ac8446",
3
+ "version": "0.8.2",
4
4
  "description": "An opinionated card component.",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -24,6 +24,7 @@
24
24
  "src"
25
25
  ],
26
26
  "dependencies": {
27
+ "@preact-signals/safe-react": "^0.9.0",
27
28
  "@radix-ui/react-compose-refs": "1.1.1"
28
29
  },
29
30
  "devDependencies": {
@@ -33,15 +34,15 @@
33
34
  "react": "~18.2.0",
34
35
  "react-dom": "~18.2.0",
35
36
  "vite": "5.4.7",
36
- "@dxos/react-ui": "0.8.2-staging.7ac8446",
37
- "@dxos/react-ui-theme": "0.8.2-staging.7ac8446"
37
+ "@dxos/react-ui": "0.8.2",
38
+ "@dxos/react-ui-theme": "0.8.2"
38
39
  },
39
40
  "peerDependencies": {
40
41
  "@phosphor-icons/react": "^2.0.5",
41
42
  "react": "~18.2.0",
42
43
  "react-dom": "~18.2.0",
43
- "@dxos/react-ui": "0.8.2-staging.7ac8446",
44
- "@dxos/react-ui-theme": "0.8.2-staging.7ac8446"
44
+ "@dxos/react-ui": "0.8.2",
45
+ "@dxos/react-ui-theme": "0.8.2"
45
46
  },
46
47
  "publishConfig": {
47
48
  "access": "public"
@@ -5,78 +5,49 @@
5
5
  import { useComposedRefs } from '@radix-ui/react-compose-refs';
6
6
  import React, {
7
7
  type ComponentPropsWithoutRef,
8
- type CSSProperties,
9
8
  forwardRef,
10
- Fragment,
11
9
  type PropsWithChildren,
10
+ type SyntheticEvent,
11
+ useCallback,
12
12
  useRef,
13
- useState,
14
13
  } from 'react';
15
14
 
16
- import { Tooltip, type TooltipContentProps } from '@dxos/react-ui';
15
+ import { Tooltip, type TooltipScopedProps, type TooltipTriggerProps } from '@dxos/react-ui';
17
16
 
18
17
  export type TextTooltipProps = PropsWithChildren<
19
18
  {
20
19
  text: string;
21
20
  asChild?: boolean;
22
- portal?: boolean;
23
- zIndex?: CSSProperties['zIndex'];
24
21
  onlyWhenTruncating?: boolean;
25
22
  truncateQuery?: string;
26
- } & Pick<TooltipContentProps, 'side' | 'sideOffset'> &
23
+ } & Pick<TooltipTriggerProps, 'side'> &
27
24
  ComponentPropsWithoutRef<'button'>
28
25
  >;
29
26
 
30
- export const TextTooltip = forwardRef<HTMLButtonElement, TextTooltipProps>(
27
+ export const TextTooltip = forwardRef<HTMLButtonElement, TooltipScopedProps<TextTooltipProps>>(
31
28
  (
32
- {
33
- text,
34
- children,
35
- onlyWhenTruncating,
36
- asChild = true,
37
- portal = true,
38
- zIndex = 70,
39
- sideOffset,
40
- side,
41
- truncateQuery,
42
- ...props
43
- },
29
+ { __scopeTooltip, text, children, onlyWhenTruncating, asChild = true, side, truncateQuery, ...props },
44
30
  forwardedRef,
45
31
  ) => {
46
- const ContentRoot = portal ? Tooltip.Portal : Fragment;
47
32
  const content = useRef<HTMLButtonElement | null>(null);
48
33
  const ref = useComposedRefs(content, forwardedRef);
49
- const [open, setOpen] = useState(false);
50
- return (
51
- <Tooltip.Root
52
- open={open}
53
- onOpenChange={(nextOpen) => {
54
- if (onlyWhenTruncating && nextOpen && content.current) {
55
- const element: HTMLElement | null = truncateQuery
56
- ? content.current.querySelector(truncateQuery)
57
- : content.current;
58
- return setOpen(element ? element.scrollWidth > element.offsetWidth : false);
59
- } else {
60
- return setOpen(nextOpen);
34
+ const handleInteract = useCallback(
35
+ (event: SyntheticEvent) => {
36
+ if (onlyWhenTruncating && content.current) {
37
+ const element: HTMLElement | null = truncateQuery
38
+ ? content.current.querySelector(truncateQuery)
39
+ : content.current;
40
+ if (!element || element.scrollWidth <= element.offsetWidth) {
41
+ event.preventDefault();
61
42
  }
62
- }}
63
- >
64
- <Tooltip.Trigger asChild={asChild} {...props} ref={ref}>
65
- {children}
66
- </Tooltip.Trigger>
67
- <ContentRoot>
68
- <Tooltip.Content
69
- {...{
70
- side,
71
- sideOffset,
72
- style: { zIndex },
73
- }}
74
- >
75
- {text}
76
- <Tooltip.Arrow />
77
- </Tooltip.Content>
78
- </ContentRoot>
79
- </Tooltip.Root>
43
+ }
44
+ },
45
+ [onlyWhenTruncating, truncateQuery],
46
+ );
47
+ return (
48
+ <Tooltip.Trigger asChild={asChild} {...props} content={text} side={side} onInteract={handleInteract} ref={ref}>
49
+ {children}
50
+ </Tooltip.Trigger>
80
51
  );
81
52
  },
82
53
  );