@cdx-ui/primitives 0.0.1-beta.44 → 0.0.1-beta.45

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.
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useLinkInteractionContext = exports.LinkInteractionProvider = void 0;
7
+ var _utils = require("@cdx-ui/utils");
8
+ const [LinkInteractionProvider, useLinkInteractionContext] = (0, _utils.createContext)('LinkInteractionContext');
9
+ exports.useLinkInteractionContext = useLinkInteractionContext;
10
+ exports.LinkInteractionProvider = LinkInteractionProvider;
11
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_utils","require","LinkInteractionProvider","useLinkInteractionContext","createContext","exports"],"sourceRoot":"../../../src","sources":["link/context.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAQO,MAAM,CAACC,uBAAuB,EAAEC,yBAAyB,CAAC,GAC/D,IAAAC,oBAAa,EAAuB,wBAAwB,CAAC;AAACC,OAAA,CAAAF,yBAAA,GAAAA,yBAAA;AAAAE,OAAA,CAAAH,uBAAA,GAAAA,uBAAA","ignoreList":[]}
@@ -9,6 +9,7 @@ var _utils = require("@cdx-ui/utils");
9
9
  var _focus = require("@react-native-aria/focus");
10
10
  var _interactions = require("@react-native-aria/interactions");
11
11
  var _dataAttributes = require("../utils/dataAttributes");
12
+ var _context = require("./context");
12
13
  var _useLink = require("./useLink");
13
14
  var _jsxRuntime = require("react/jsx-runtime");
14
15
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
@@ -20,6 +21,7 @@ const createLink = ({
20
21
  isPressed: isPressedProp,
21
22
  isFocused: isFocusedProp,
22
23
  isFocusVisible: isFocusVisibleProp,
24
+ isVisited: isVisitedProp,
23
25
  href,
24
26
  onPress,
25
27
  action,
@@ -50,24 +52,36 @@ const createLink = ({
50
52
  action,
51
53
  webProps
52
54
  });
55
+ const hover = isHoveredProp || isHovered;
56
+ const visited = isVisitedProp ?? false;
57
+ const focusVisible = isFocusVisibleProp || isFocusVisible;
58
+ const interactionState = (0, _react.useMemo)(() => ({
59
+ hover,
60
+ visited,
61
+ focusVisible
62
+ }), [hover, visited, focusVisible]);
53
63
  const interactionAttrs = (0, _dataAttributes.dataAttributes)({
54
- hover: isHoveredProp || isHovered,
64
+ hover,
55
65
  focus: isFocusedProp || isFocused,
56
66
  active: isPressedProp || isPressed,
57
- focusVisible: isFocusVisibleProp || isFocusVisible
67
+ focusVisible,
68
+ visited
58
69
  });
59
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(Root, {
60
- ref: ref,
61
- ...interactionAttrs,
62
- ...linkProps,
63
- ...props,
64
- onPressIn: (0, _utils.composeEventHandlers)(props?.onPressIn, pressProps.onPressIn),
65
- onPressOut: (0, _utils.composeEventHandlers)(props?.onPressOut, pressProps.onPressOut),
66
- onHoverIn: (0, _utils.composeEventHandlers)(props?.onHoverIn, hoverProps.onHoverIn),
67
- onHoverOut: (0, _utils.composeEventHandlers)(props?.onHoverOut, hoverProps.onHoverOut),
68
- onFocus: (0, _utils.composeEventHandlers)((0, _utils.composeEventHandlers)(props?.onFocus, focusProps.onFocus), focusRingProps.onFocus),
69
- onBlur: (0, _utils.composeEventHandlers)((0, _utils.composeEventHandlers)(props?.onBlur, focusProps.onBlur), focusRingProps.onBlur),
70
- children: children
70
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_context.LinkInteractionProvider, {
71
+ value: interactionState,
72
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Root, {
73
+ ref: ref,
74
+ ...interactionAttrs,
75
+ ...linkProps,
76
+ ...props,
77
+ onPressIn: (0, _utils.composeEventHandlers)(props?.onPressIn, pressProps.onPressIn),
78
+ onPressOut: (0, _utils.composeEventHandlers)(props?.onPressOut, pressProps.onPressOut),
79
+ onHoverIn: (0, _utils.composeEventHandlers)(props?.onHoverIn, hoverProps.onHoverIn),
80
+ onHoverOut: (0, _utils.composeEventHandlers)(props?.onHoverOut, hoverProps.onHoverOut),
81
+ onFocus: (0, _utils.composeEventHandlers)((0, _utils.composeEventHandlers)(props?.onFocus, focusProps.onFocus), focusRingProps.onFocus),
82
+ onBlur: (0, _utils.composeEventHandlers)((0, _utils.composeEventHandlers)(props?.onBlur, focusProps.onBlur), focusRingProps.onBlur),
83
+ children: children
84
+ })
71
85
  });
72
86
  });
73
87
  exports.createLink = createLink;
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_utils","_focus","_interactions","_dataAttributes","_useLink","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","createLink","Root","forwardRef","children","isHovered","isHoveredProp","isPressed","isPressedProp","isFocused","isFocusedProp","isFocusVisible","isFocusVisibleProp","href","onPress","action","webProps","props","ref","focusProps","useFocus","focusRingProps","useFocusRing","pressProps","usePress","hoverProps","useHover","linkProps","useLink","interactionAttrs","dataAttributes","hover","focus","active","focusVisible","jsx","onPressIn","composeEventHandlers","onPressOut","onHoverIn","onHoverOut","onFocus","onBlur","exports"],"sourceRoot":"../../../src","sources":["link/createLink.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_utils","_focus","_interactions","_dataAttributes","_context","_useLink","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","createLink","Root","forwardRef","children","isHovered","isHoveredProp","isPressed","isPressedProp","isFocused","isFocusedProp","isFocusVisible","isFocusVisibleProp","isVisited","isVisitedProp","href","onPress","action","webProps","props","ref","focusProps","useFocus","focusRingProps","useFocusRing","pressProps","usePress","hoverProps","useHover","linkProps","useLink","hover","visited","focusVisible","interactionState","useMemo","interactionAttrs","dataAttributes","focus","active","jsx","LinkInteractionProvider","value","onPressIn","composeEventHandlers","onPressOut","onHoverIn","onHoverOut","onFocus","onBlur","exports"],"sourceRoot":"../../../src","sources":["link/createLink.tsx"],"mappings":"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","ignoreList":[]}
@@ -3,6 +3,12 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ Object.defineProperty(exports, "LinkInteractionProvider", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _context.LinkInteractionProvider;
10
+ }
11
+ });
6
12
  Object.defineProperty(exports, "LinkProvider", {
7
13
  enumerable: true,
8
14
  get: function () {
@@ -21,7 +27,14 @@ Object.defineProperty(exports, "useLink", {
21
27
  return _useLink.useLink;
22
28
  }
23
29
  });
30
+ Object.defineProperty(exports, "useLinkInteractionContext", {
31
+ enumerable: true,
32
+ get: function () {
33
+ return _context.useLinkInteractionContext;
34
+ }
35
+ });
24
36
  var _createLink = require("./createLink");
37
+ var _context = require("./context");
25
38
  var _LinkProvider = require("./LinkProvider");
26
39
  var _useLink = require("./useLink");
27
40
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_createLink","require","_LinkProvider","_useLink"],"sourceRoot":"../../../src","sources":["link/index.tsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AAEA,IAAAE,QAAA,GAAAF,OAAA","ignoreList":[]}
1
+ {"version":3,"names":["_createLink","require","_context","_LinkProvider","_useLink"],"sourceRoot":"../../../src","sources":["link/index.tsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAEA,IAAAE,aAAA,GAAAF,OAAA;AAEA,IAAAG,QAAA,GAAAH,OAAA","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ import { createContext } from '@cdx-ui/utils';
4
+ export const [LinkInteractionProvider, useLinkInteractionContext] = createContext('LinkInteractionContext');
5
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createContext","LinkInteractionProvider","useLinkInteractionContext"],"sourceRoot":"../../../src","sources":["link/context.tsx"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,eAAe;AAQ7C,OAAO,MAAM,CAACC,uBAAuB,EAAEC,yBAAyB,CAAC,GAC/DF,aAAa,CAAuB,wBAAwB,CAAC","ignoreList":[]}
@@ -1,10 +1,11 @@
1
1
  "use strict";
2
2
 
3
- import React, { forwardRef } from 'react';
3
+ import React, { forwardRef, useMemo } from 'react';
4
4
  import { composeEventHandlers } from '@cdx-ui/utils';
5
5
  import { useFocusRing, useFocus } from '@react-native-aria/focus';
6
6
  import { useHover, usePress } from '@react-native-aria/interactions';
7
7
  import { dataAttributes } from '../utils/dataAttributes';
8
+ import { LinkInteractionProvider } from './context';
8
9
  import { useLink } from './useLink';
9
10
  import { jsx as _jsx } from "react/jsx-runtime";
10
11
  export const createLink = ({
@@ -15,6 +16,7 @@ export const createLink = ({
15
16
  isPressed: isPressedProp,
16
17
  isFocused: isFocusedProp,
17
18
  isFocusVisible: isFocusVisibleProp,
19
+ isVisited: isVisitedProp,
18
20
  href,
19
21
  onPress,
20
22
  action,
@@ -45,24 +47,36 @@ export const createLink = ({
45
47
  action,
46
48
  webProps
47
49
  });
50
+ const hover = isHoveredProp || isHovered;
51
+ const visited = isVisitedProp ?? false;
52
+ const focusVisible = isFocusVisibleProp || isFocusVisible;
53
+ const interactionState = useMemo(() => ({
54
+ hover,
55
+ visited,
56
+ focusVisible
57
+ }), [hover, visited, focusVisible]);
48
58
  const interactionAttrs = dataAttributes({
49
- hover: isHoveredProp || isHovered,
59
+ hover,
50
60
  focus: isFocusedProp || isFocused,
51
61
  active: isPressedProp || isPressed,
52
- focusVisible: isFocusVisibleProp || isFocusVisible
62
+ focusVisible,
63
+ visited
53
64
  });
54
- return /*#__PURE__*/_jsx(Root, {
55
- ref: ref,
56
- ...interactionAttrs,
57
- ...linkProps,
58
- ...props,
59
- onPressIn: composeEventHandlers(props?.onPressIn, pressProps.onPressIn),
60
- onPressOut: composeEventHandlers(props?.onPressOut, pressProps.onPressOut),
61
- onHoverIn: composeEventHandlers(props?.onHoverIn, hoverProps.onHoverIn),
62
- onHoverOut: composeEventHandlers(props?.onHoverOut, hoverProps.onHoverOut),
63
- onFocus: composeEventHandlers(composeEventHandlers(props?.onFocus, focusProps.onFocus), focusRingProps.onFocus),
64
- onBlur: composeEventHandlers(composeEventHandlers(props?.onBlur, focusProps.onBlur), focusRingProps.onBlur),
65
- children: children
65
+ return /*#__PURE__*/_jsx(LinkInteractionProvider, {
66
+ value: interactionState,
67
+ children: /*#__PURE__*/_jsx(Root, {
68
+ ref: ref,
69
+ ...interactionAttrs,
70
+ ...linkProps,
71
+ ...props,
72
+ onPressIn: composeEventHandlers(props?.onPressIn, pressProps.onPressIn),
73
+ onPressOut: composeEventHandlers(props?.onPressOut, pressProps.onPressOut),
74
+ onHoverIn: composeEventHandlers(props?.onHoverIn, hoverProps.onHoverIn),
75
+ onHoverOut: composeEventHandlers(props?.onHoverOut, hoverProps.onHoverOut),
76
+ onFocus: composeEventHandlers(composeEventHandlers(props?.onFocus, focusProps.onFocus), focusRingProps.onFocus),
77
+ onBlur: composeEventHandlers(composeEventHandlers(props?.onBlur, focusProps.onBlur), focusRingProps.onBlur),
78
+ children: children
79
+ })
66
80
  });
67
81
  });
68
82
  //# sourceMappingURL=createLink.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","forwardRef","composeEventHandlers","useFocusRing","useFocus","useHover","usePress","dataAttributes","useLink","jsx","_jsx","createLink","Root","children","isHovered","isHoveredProp","isPressed","isPressedProp","isFocused","isFocusedProp","isFocusVisible","isFocusVisibleProp","href","onPress","action","webProps","props","ref","focusProps","focusRingProps","pressProps","hoverProps","linkProps","interactionAttrs","hover","focus","active","focusVisible","onPressIn","onPressOut","onHoverIn","onHoverOut","onFocus","onBlur"],"sourceRoot":"../../../src","sources":["link/createLink.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,UAAU,QAAQ,OAAO;AACzC,SAASC,oBAAoB,QAAQ,eAAe;AACpD,SAASC,YAAY,EAAEC,QAAQ,QAAQ,0BAA0B;AACjE,SAASC,QAAQ,EAAEC,QAAQ,QAAQ,iCAAiC;AACpE,SAASC,cAAc,QAAQ,yBAAyB;AACxD,SAASC,OAAO,QAAQ,WAAW;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGpC,OAAO,MAAMC,UAAU,GAAGA,CAAqB;EAAEC;AAA2C,CAAC,kBAC3FX,UAAU,CACR,CACE;EACEY,QAAQ;EACRC,SAAS,EAAEC,aAAa;EACxBC,SAAS,EAAEC,aAAa;EACxBC,SAAS,EAAEC,aAAa;EACxBC,cAAc,EAAEC,kBAAkB;EAClCC,IAAI;EACJC,OAAO;EACPC,MAAM;EACNC,QAAQ;EACR,GAAGC;AACO,CAAC,EACbC,GAA0B,KACvB;EACH,MAAM;IAAET,SAAS;IAAEU;EAAW,CAAC,GAAGxB,QAAQ,CAAC,CAAC;EAC5C,MAAM;IAAEgB,cAAc;IAAEQ,UAAU,EAAEC;EAAe,CAAC,GAAG1B,YAAY,CAAC,CAGnE;EACD,MAAM;IAAE2B,UAAU;IAAEd;EAAU,CAAC,GAAGV,QAAQ,CAAC,CAAC,CAAC,CAAC;EAC9C,MAAM;IAAEQ,SAAS;IAAEiB;EAAW,CAAC,GAAG1B,QAAQ,CAAC,CAAC;EAE5C,MAAM;IAAE2B;EAAU,CAAC,GAAGxB,OAAO,CAAC;IAC5Bc,IAAI;IACJC,OAAO;IACPC,MAAM;IACNC;EACF,CAAC,CAAC;EAEF,MAAMQ,gBAAgB,GAAG1B,cAAc,CAAC;IACtC2B,KAAK,EAAEnB,aAAa,IAAID,SAAS;IACjCqB,KAAK,EAAEhB,aAAa,IAAID,SAAS;IACjCkB,MAAM,EAAEnB,aAAa,IAAID,SAAS;IAClCqB,YAAY,EAAEhB,kBAAkB,IAAID;EACtC,CAAC,CAAC;EAEF,oBACEV,IAAA,CAACE,IAAI;IACHe,GAAG,EAAEA,GAAI;IAAA,GACLM,gBAAgB;IAAA,GAChBD,SAAS;IAAA,GACRN,KAAK;IACVY,SAAS,EAAEpC,oBAAoB,CAACwB,KAAK,EAAEY,SAAS,EAAER,UAAU,CAACQ,SAAS,CAAE;IACxEC,UAAU,EAAErC,oBAAoB,CAACwB,KAAK,EAAEa,UAAU,EAAET,UAAU,CAACS,UAAU,CAAE;IAC3EC,SAAS,EAAEtC,oBAAoB,CAACwB,KAAK,EAAEc,SAAS,EAAET,UAAU,CAACS,SAAS,CAAE;IACxEC,UAAU,EAAEvC,oBAAoB,CAACwB,KAAK,EAAEe,UAAU,EAAEV,UAAU,CAACU,UAAU,CAAE;IAC3EC,OAAO,EAAExC,oBAAoB,CAC3BA,oBAAoB,CAACwB,KAAK,EAAEgB,OAAO,EAAEd,UAAU,CAACc,OAAO,CAAC,EACxDb,cAAc,CAACa,OACjB,CAAE;IACFC,MAAM,EAAEzC,oBAAoB,CAC1BA,oBAAoB,CAACwB,KAAK,EAAEiB,MAAM,EAAEf,UAAU,CAACe,MAAM,CAAC,EACtDd,cAAc,CAACc,MACjB,CAAE;IAAA9B,QAAA,EAEDA;EAAQ,CACL,CAAC;AAEX,CACF,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","forwardRef","useMemo","composeEventHandlers","useFocusRing","useFocus","useHover","usePress","dataAttributes","LinkInteractionProvider","useLink","jsx","_jsx","createLink","Root","children","isHovered","isHoveredProp","isPressed","isPressedProp","isFocused","isFocusedProp","isFocusVisible","isFocusVisibleProp","isVisited","isVisitedProp","href","onPress","action","webProps","props","ref","focusProps","focusRingProps","pressProps","hoverProps","linkProps","hover","visited","focusVisible","interactionState","interactionAttrs","focus","active","value","onPressIn","onPressOut","onHoverIn","onHoverOut","onFocus","onBlur"],"sourceRoot":"../../../src","sources":["link/createLink.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  export { createLink } from './createLink';
4
+ export { LinkInteractionProvider, useLinkInteractionContext } from './context';
4
5
  export { LinkProvider } from './LinkProvider';
5
6
  export { useLink } from './useLink';
6
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createLink","LinkProvider","useLink"],"sourceRoot":"../../../src","sources":["link/index.tsx"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AACzC,SAASC,YAAY,QAAQ,gBAAgB;AAE7C,SAASC,OAAO,QAAQ,WAAW","ignoreList":[]}
1
+ {"version":3,"names":["createLink","LinkInteractionProvider","useLinkInteractionContext","LinkProvider","useLink"],"sourceRoot":"../../../src","sources":["link/index.tsx"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AACzC,SAASC,uBAAuB,EAAEC,yBAAyB,QAAQ,WAAW;AAE9E,SAASC,YAAY,QAAQ,gBAAgB;AAE7C,SAASC,OAAO,QAAQ,WAAW","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ export interface LinkInteractionState {
2
+ hover: boolean;
3
+ visited: boolean;
4
+ focusVisible: boolean;
5
+ }
6
+ export declare const LinkInteractionProvider: import("react").FunctionComponent<{
7
+ children: import("react").ReactNode;
8
+ value: LinkInteractionState;
9
+ }>, useLinkInteractionContext: () => LinkInteractionState;
10
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/link/context.tsx"],"names":[],"mappings":"AAEA,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,eAAO,MAAO,uBAAuB;;;IAAE,yBAAyB,4BACD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"createLink.d.ts","sourceRoot":"","sources":["../../../src/link/createLink.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAM1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,eAAO,MAAM,UAAU,GAAI,KAAK,EAAE,CAAC,GAAG,OAAO,EAAE,UAAU;IAAE,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;CAAE,yEA8D1F,CAAC"}
1
+ {"version":3,"file":"createLink.d.ts","sourceRoot":"","sources":["../../../src/link/createLink.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAOnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,eAAO,MAAM,UAAU,GAAI,KAAK,EAAE,CAAC,GAAG,OAAO,EAAE,UAAU;IAAE,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;CAAE,yEA+E1F,CAAC"}
@@ -1,4 +1,6 @@
1
1
  export { createLink } from './createLink';
2
+ export { LinkInteractionProvider, useLinkInteractionContext } from './context';
3
+ export type { LinkInteractionState } from './context';
2
4
  export { LinkProvider } from './LinkProvider';
3
5
  export type { LinkConfig } from './LinkProvider';
4
6
  export { useLink } from './useLink';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/link/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/link/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAC/E,YAAY,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC"}
@@ -30,6 +30,7 @@ export interface ILinkProps extends PressableProps {
30
30
  isHovered?: boolean;
31
31
  isFocused?: boolean;
32
32
  isFocusVisible?: boolean;
33
+ isVisited?: boolean;
33
34
  /**
34
35
  * HTML anchor attributes applied only on web. Ignored on native platforms.
35
36
  * `target`, `rel`, and `download` are forwarded via react-native-web's `hrefAttrs`.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/link/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE1E;;;;;;;;;;GAUG;AACH,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;AAEzD,MAAM,WAAW,UAAW,SAAQ,cAAc;IAChD;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,qBAAqB,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IACvE;;;OAGG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;CAC1D;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,qBAAqB,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IACtE,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,QAAQ,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;CAC1D"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/link/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE1E;;;;;;;;;;GAUG;AACH,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;AAEzD,MAAM,WAAW,UAAW,SAAQ,cAAc;IAChD;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,qBAAqB,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IACvE;;;OAGG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;CAC1D;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,qBAAqB,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IACtE,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,QAAQ,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;CAC1D"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cdx-ui/primitives",
3
- "version": "0.0.1-beta.44",
3
+ "version": "0.0.1-beta.45",
4
4
  "main": "lib/commonjs/index.js",
5
5
  "module": "lib/module/index.js",
6
6
  "react-native": "src/index.ts",
@@ -60,7 +60,7 @@
60
60
  "@react-stately/checkbox": "3.7.4",
61
61
  "@react-stately/radio": "3.12.0",
62
62
  "@react-stately/toggle": "3.9.4",
63
- "@cdx-ui/utils": "0.0.1-beta.44"
63
+ "@cdx-ui/utils": "0.0.1-beta.45"
64
64
  },
65
65
  "devDependencies": {
66
66
  "@types/react": "*",
@@ -0,0 +1,10 @@
1
+ import { createContext } from '@cdx-ui/utils';
2
+
3
+ export interface LinkInteractionState {
4
+ hover: boolean;
5
+ visited: boolean;
6
+ focusVisible: boolean;
7
+ }
8
+
9
+ export const [LinkInteractionProvider, useLinkInteractionContext] =
10
+ createContext<LinkInteractionState>('LinkInteractionContext');
@@ -1,8 +1,9 @@
1
- import React, { forwardRef } from 'react';
1
+ import React, { forwardRef, useMemo } from 'react';
2
2
  import { composeEventHandlers } from '@cdx-ui/utils';
3
3
  import { useFocusRing, useFocus } from '@react-native-aria/focus';
4
4
  import { useHover, usePress } from '@react-native-aria/interactions';
5
5
  import { dataAttributes } from '../utils/dataAttributes';
6
+ import { LinkInteractionProvider } from './context';
6
7
  import { useLink } from './useLink';
7
8
  import type { ILinkProps } from './types';
8
9
 
@@ -15,6 +16,7 @@ export const createLink = <RootT, R = unknown>({ Root }: { Root: React.Component
15
16
  isPressed: isPressedProp,
16
17
  isFocused: isFocusedProp,
17
18
  isFocusVisible: isFocusVisibleProp,
19
+ isVisited: isVisitedProp,
18
20
  href,
19
21
  onPress,
20
22
  action,
@@ -38,34 +40,50 @@ export const createLink = <RootT, R = unknown>({ Root }: { Root: React.Component
38
40
  webProps,
39
41
  });
40
42
 
43
+ const hover = isHoveredProp || isHovered;
44
+ const visited = isVisitedProp ?? false;
45
+ const focusVisible = isFocusVisibleProp || isFocusVisible;
46
+
47
+ const interactionState = useMemo(
48
+ () => ({
49
+ hover,
50
+ visited,
51
+ focusVisible,
52
+ }),
53
+ [hover, visited, focusVisible],
54
+ );
55
+
41
56
  const interactionAttrs = dataAttributes({
42
- hover: isHoveredProp || isHovered,
57
+ hover,
43
58
  focus: isFocusedProp || isFocused,
44
59
  active: isPressedProp || isPressed,
45
- focusVisible: isFocusVisibleProp || isFocusVisible,
60
+ focusVisible,
61
+ visited,
46
62
  });
47
63
 
48
64
  return (
49
- <Root
50
- ref={ref}
51
- {...interactionAttrs}
52
- {...linkProps}
53
- {...(props as RootT)}
54
- onPressIn={composeEventHandlers(props?.onPressIn, pressProps.onPressIn)}
55
- onPressOut={composeEventHandlers(props?.onPressOut, pressProps.onPressOut)}
56
- onHoverIn={composeEventHandlers(props?.onHoverIn, hoverProps.onHoverIn)}
57
- onHoverOut={composeEventHandlers(props?.onHoverOut, hoverProps.onHoverOut)}
58
- onFocus={composeEventHandlers(
59
- composeEventHandlers(props?.onFocus, focusProps.onFocus),
60
- focusRingProps.onFocus,
61
- )}
62
- onBlur={composeEventHandlers(
63
- composeEventHandlers(props?.onBlur, focusProps.onBlur),
64
- focusRingProps.onBlur,
65
- )}
66
- >
67
- {children}
68
- </Root>
65
+ <LinkInteractionProvider value={interactionState}>
66
+ <Root
67
+ ref={ref}
68
+ {...interactionAttrs}
69
+ {...linkProps}
70
+ {...(props as RootT)}
71
+ onPressIn={composeEventHandlers(props?.onPressIn, pressProps.onPressIn)}
72
+ onPressOut={composeEventHandlers(props?.onPressOut, pressProps.onPressOut)}
73
+ onHoverIn={composeEventHandlers(props?.onHoverIn, hoverProps.onHoverIn)}
74
+ onHoverOut={composeEventHandlers(props?.onHoverOut, hoverProps.onHoverOut)}
75
+ onFocus={composeEventHandlers(
76
+ composeEventHandlers(props?.onFocus, focusProps.onFocus),
77
+ focusRingProps.onFocus,
78
+ )}
79
+ onBlur={composeEventHandlers(
80
+ composeEventHandlers(props?.onBlur, focusProps.onBlur),
81
+ focusRingProps.onBlur,
82
+ )}
83
+ >
84
+ {children}
85
+ </Root>
86
+ </LinkInteractionProvider>
69
87
  );
70
88
  },
71
89
  );
@@ -1,4 +1,6 @@
1
1
  export { createLink } from './createLink';
2
+ export { LinkInteractionProvider, useLinkInteractionContext } from './context';
3
+ export type { LinkInteractionState } from './context';
2
4
  export { LinkProvider } from './LinkProvider';
3
5
  export type { LinkConfig } from './LinkProvider';
4
6
  export { useLink } from './useLink';
package/src/link/types.ts CHANGED
@@ -32,6 +32,7 @@ export interface ILinkProps extends PressableProps {
32
32
  isHovered?: boolean;
33
33
  isFocused?: boolean;
34
34
  isFocusVisible?: boolean;
35
+ isVisited?: boolean;
35
36
  /**
36
37
  * HTML anchor attributes applied only on web. Ignored on native platforms.
37
38
  * `target`, `rel`, and `download` are forwarded via react-native-web's `hrefAttrs`.