@radix-ui/react-primitive 0.1.5-rc.4 → 0.1.5-rc.42

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -11,6 +11,43 @@ export type PrimitivePropsWithRef<E extends React.ElementType> = React.Component
11
11
  interface PrimitiveForwardRefComponent<E extends React.ElementType> extends React.ForwardRefExoticComponent<PrimitivePropsWithRef<E>> {
12
12
  }
13
13
  export const Primitive: Primitives;
14
+ /**
15
+ * Flush custom event dispatch
16
+ * https://github.com/radix-ui/primitives/pull/1378
17
+ *
18
+ * React batches *all* event handlers since version 18, this introduces certain considerations when using custom event types.
19
+ *
20
+ * Internally, React prioritises events in the following order:
21
+ * - discrete
22
+ * - continuous
23
+ * - default
24
+ *
25
+ * https://github.com/facebook/react/blob/a8a4742f1c54493df00da648a3f9d26e3db9c8b5/packages/react-dom/src/events/ReactDOMEventListener.js#L294-L350
26
+ *
27
+ * `discrete` is an important distinction as updates within these events are applied immediately.
28
+ * React however, is not able to infer the priority of custom event types due to how they are detected internally.
29
+ * Because of this, it's possible for updates from custom events to be unexpectedly batched when
30
+ * dispatched by another `discrete` event.
31
+ *
32
+ * In order to ensure that updates from custom events are applied predictably, we need to manually flush the batch.
33
+ * This utility should be used when dispatching a custom event from within another `discrete` event, this utility
34
+ * is not nessesary when dispatching known event types, or if dispatching a custom type inside a non-discrete event.
35
+ * For example:
36
+ *
37
+ * dispatching a known click 👎
38
+ * target.dispatchEvent(new Event(‘click’))
39
+ *
40
+ * dispatching a custom type within a non-discrete event 👎
41
+ * onScroll={(event) => event.target.dispatchEvent(new CustomEvent(‘customType’))}
42
+ *
43
+ * dispatching a custom type within a `discrete` event 👍
44
+ * onPointerDown={(event) => dispatchDiscreteCustomEvent(event.target, new CustomEvent(‘customType’))}
45
+ *
46
+ * Note: though React classifies `focus`, `focusin` and `focusout` events as `discrete`, it's not recommended to use
47
+ * this utility with them. This is because it's possible for those handlers to be called implicitly during render
48
+ * e.g. when focus is within a component as it is unmounted, or when managing focus on mount.
49
+ */
50
+ export function dispatchDiscreteCustomEvent<E extends CustomEvent>(target: E['target'], event: E): void;
14
51
  export const Root: Primitives;
15
52
 
16
53
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"mappings":";AAGA,QAAA,MAAM,sGAcI,CAAC;AAKX,qBAAqB,CAAC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,KAAK,SAAS,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAC7G,qCAA8B,CAAC,SAAS,MAAM,WAAW,IAAI,gBAC3D,MAAM,cAAc,CAAC,CAAC,CAAC,CACxB,CAAC;AAEF,kBAAkB;KAAG,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,GAAG,6BAA6B,CAAC,CAAC;CAAE,CAAC;AACnF,kCAA2B,CAAC,SAAS,MAAM,WAAW,IAAI,MAAM,qBAAqB,CAAC,CAAC,CAAC,GAAG;IACzF,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,uCAAuC,CAAC,SAAS,MAAM,WAAW,CAChE,SAAQ,KAAK,CAAC,yBAAyB,CAAC,sBAAsB,CAAC,CAAC,CAAC;CAAG;AAMtE,OAAA,MAAM,qBAoBL,CAAC;AAMF,OAAA,MAAM,gBAAgB,CAAC","sources":["packages/react/primitive/src/packages/react/primitive/src/Primitive.tsx","packages/react/primitive/src/packages/react/primitive/src/index.ts","packages/react/primitive/src/index.ts"],"sourcesContent":[null,null,"export * from './Primitive';\n"],"names":[],"version":3,"file":"index.d.ts.map"}
1
+ {"mappings":";AAIA,QAAA,MAAM,sGAcI,CAAC;AAKX,qBAAqB,CAAC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,KAAK,SAAS,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAC7G,qCAA8B,CAAC,SAAS,MAAM,WAAW,IAAI,gBAC3D,MAAM,cAAc,CAAC,CAAC,CAAC,CACxB,CAAC;AAEF,kBAAkB;KAAG,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,GAAG,6BAA6B,CAAC,CAAC;CAAE,CAAC;AACnF,kCAA2B,CAAC,SAAS,MAAM,WAAW,IAAI,MAAM,qBAAqB,CAAC,CAAC,CAAC,GAAG;IACzF,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,uCAAuC,CAAC,SAAS,MAAM,WAAW,CAChE,SAAQ,KAAK,CAAC,yBAAyB,CAAC,sBAAsB,CAAC,CAAC,CAAC;CAAG;AAMtE,OAAA,MAAM,qBAoBc,CAAC;AAUrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,4CAAqC,CAAC,SAAS,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,QAExF;AAID,OAAA,MAAM,gBAAgB,CAAC","sources":["packages/react/primitive/src/packages/react/primitive/src/Primitive.tsx","packages/react/primitive/src/packages/react/primitive/src/index.ts","packages/react/primitive/src/index.ts"],"sourcesContent":[null,null,"export {\n Primitive,\n //\n Root,\n //\n dispatchDiscreteCustomEvent,\n} from './Primitive';\nexport type { ComponentPropsWithoutRef, PrimitivePropsWithRef } from './Primitive';\n"],"names":[],"version":3,"file":"index.d.ts.map"}
package/dist/index.js CHANGED
@@ -1,33 +1,19 @@
1
1
  var $iMixA$babelruntimehelpersextends = require("@babel/runtime/helpers/extends");
2
2
  var $iMixA$react = require("react");
3
+ var $iMixA$reactdom = require("react-dom");
3
4
  var $iMixA$radixuireactslot = require("@radix-ui/react-slot");
4
5
 
5
- function $parcel$exportWildcard(dest, source) {
6
- Object.keys(source).forEach(function(key) {
7
- if (key === 'default' || key === '__esModule' || dest.hasOwnProperty(key)) {
8
- return;
9
- }
10
-
11
- Object.defineProperty(dest, key, {
12
- enumerable: true,
13
- get: function get() {
14
- return source[key];
15
- }
16
- });
17
- });
18
-
19
- return dest;
6
+ function $parcel$export(e, n, v, s) {
7
+ Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
20
8
  }
21
9
  function $parcel$interopDefault(a) {
22
10
  return a && a.__esModule ? a.default : a;
23
11
  }
24
- function $parcel$export(e, n, v, s) {
25
- Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
26
- }
27
- var $c3def6332c2749a6$exports = {};
28
12
 
29
- $parcel$export($c3def6332c2749a6$exports, "Primitive", () => $c3def6332c2749a6$export$250ffa63cdc0d034);
30
- $parcel$export($c3def6332c2749a6$exports, "Root", () => $c3def6332c2749a6$export$be92b6f5f03c0fe9);
13
+ $parcel$export(module.exports, "Primitive", () => $c3def6332c2749a6$export$250ffa63cdc0d034);
14
+ $parcel$export(module.exports, "Root", () => $c3def6332c2749a6$export$be92b6f5f03c0fe9);
15
+ $parcel$export(module.exports, "dispatchDiscreteCustomEvent", () => $c3def6332c2749a6$export$6d1a0317bde7de7f);
16
+
31
17
 
32
18
 
33
19
 
@@ -50,25 +36,68 @@ const $c3def6332c2749a6$var$NODES = [
50
36
  // prettier-ignore
51
37
  /* -------------------------------------------------------------------------------------------------
52
38
  * Primitive
53
- * -----------------------------------------------------------------------------------------------*/ const $c3def6332c2749a6$export$250ffa63cdc0d034 = $c3def6332c2749a6$var$NODES.reduce((primitive, node)=>({
39
+ * -----------------------------------------------------------------------------------------------*/ const $c3def6332c2749a6$export$250ffa63cdc0d034 = $c3def6332c2749a6$var$NODES.reduce((primitive, node)=>{
40
+ const Node = /*#__PURE__*/ $iMixA$react.forwardRef((props, forwardedRef)=>{
41
+ const { asChild: asChild , ...primitiveProps } = props;
42
+ const Comp = asChild ? $iMixA$radixuireactslot.Slot : node;
43
+ $iMixA$react.useEffect(()=>{
44
+ window[Symbol.for('radix-ui')] = true;
45
+ }, []); // DEPRECATED
46
+ return /*#__PURE__*/ $iMixA$react.createElement(Comp, ($parcel$interopDefault($iMixA$babelruntimehelpersextends))({}, primitiveProps, {
47
+ ref: forwardedRef
48
+ }));
49
+ });
50
+ Node.displayName = `Primitive.${node}`;
51
+ return {
54
52
  ...primitive,
55
- [node]: /*#__PURE__*/ $iMixA$react.forwardRef((props, forwardedRef)=>{
56
- const { asChild: asChild , ...primitiveProps } = props;
57
- const Comp = asChild ? $iMixA$radixuireactslot.Slot : node;
58
- $iMixA$react.useEffect(()=>{
59
- window[Symbol.for('radix-ui')] = true;
60
- }, []); // DEPRECATED
61
- return /*#__PURE__*/ $iMixA$react.createElement(Comp, ($parcel$interopDefault($iMixA$babelruntimehelpersextends))({}, primitiveProps, {
62
- ref: forwardedRef
63
- }));
64
- })
65
- })
66
- , {});
53
+ [node]: Node
54
+ };
55
+ }, {});
67
56
  /* -----------------------------------------------------------------------------------------------*/ const $c3def6332c2749a6$var$AS_ERROR = `Warning: The \`as\` prop has been removed in favour of \`asChild\`. For details, see https://radix-ui.com/docs/primitives/overview/styling#changing-the-rendered-element`;
68
- const $c3def6332c2749a6$export$be92b6f5f03c0fe9 = $c3def6332c2749a6$export$250ffa63cdc0d034;
57
+ /* -------------------------------------------------------------------------------------------------
58
+ * Utils
59
+ * -----------------------------------------------------------------------------------------------*/ /**
60
+ * Flush custom event dispatch
61
+ * https://github.com/radix-ui/primitives/pull/1378
62
+ *
63
+ * React batches *all* event handlers since version 18, this introduces certain considerations when using custom event types.
64
+ *
65
+ * Internally, React prioritises events in the following order:
66
+ * - discrete
67
+ * - continuous
68
+ * - default
69
+ *
70
+ * https://github.com/facebook/react/blob/a8a4742f1c54493df00da648a3f9d26e3db9c8b5/packages/react-dom/src/events/ReactDOMEventListener.js#L294-L350
71
+ *
72
+ * `discrete` is an important distinction as updates within these events are applied immediately.
73
+ * React however, is not able to infer the priority of custom event types due to how they are detected internally.
74
+ * Because of this, it's possible for updates from custom events to be unexpectedly batched when
75
+ * dispatched by another `discrete` event.
76
+ *
77
+ * In order to ensure that updates from custom events are applied predictably, we need to manually flush the batch.
78
+ * This utility should be used when dispatching a custom event from within another `discrete` event, this utility
79
+ * is not nessesary when dispatching known event types, or if dispatching a custom type inside a non-discrete event.
80
+ * For example:
81
+ *
82
+ * dispatching a known click 👎
83
+ * target.dispatchEvent(new Event(‘click’))
84
+ *
85
+ * dispatching a custom type within a non-discrete event 👎
86
+ * onScroll={(event) => event.target.dispatchEvent(new CustomEvent(‘customType’))}
87
+ *
88
+ * dispatching a custom type within a `discrete` event 👍
89
+ * onPointerDown={(event) => dispatchDiscreteCustomEvent(event.target, new CustomEvent(‘customType’))}
90
+ *
91
+ * Note: though React classifies `focus`, `focusin` and `focusout` events as `discrete`, it's not recommended to use
92
+ * this utility with them. This is because it's possible for those handlers to be called implicitly during render
93
+ * e.g. when focus is within a component as it is unmounted, or when managing focus on mount.
94
+ */ function $c3def6332c2749a6$export$6d1a0317bde7de7f(target, event) {
95
+ if (target) $iMixA$reactdom.flushSync(()=>target.dispatchEvent(event)
96
+ );
97
+ }
98
+ /* -----------------------------------------------------------------------------------------------*/ const $c3def6332c2749a6$export$be92b6f5f03c0fe9 = $c3def6332c2749a6$export$250ffa63cdc0d034;
69
99
 
70
100
 
71
- $parcel$exportWildcard(module.exports, $c3def6332c2749a6$exports);
72
101
 
73
102
 
74
103
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;A;;;ACGA,MAAME,2BAAK,GAAG;IACZ,GADY;IAEZ,QAFY;IAGZ,KAHY;IAIZ,IAJY;IAKZ,IALY;IAMZ,KANY;IAOZ,IAPY;IAQZ,KARY;IASZ,IATY;IAUZ,GAVY;IAWZ,MAXY;IAYZ,KAZY;IAaZ,IAbY;CAAd,A,EAgBA,8CAhBA;AAiBA,gEAAA;AACA,kBAAA;AAcA;;oGAEA,CAEA,MAAMC,yCAAS,GAAGD,2BAAK,CAACE,MAAN,CAChB,CAACC,SAAD,EAAYC,IAAZ,GAAsB,CAAA;QACpB,GAAGD,SADiB;QAEpB,CAACC,IAAD,CAAA,EAAA,aAAQN,CAAAA,uBAAA,CAAiB,CAACQ,KAAD,EAA4CC,YAA5C,GAAkE;YACzF,MAAM,E,SAAEC,OAAF,CAAA,EAAW,GAAGC,cAAH,EAAX,GAAiCH,KAAvC,AAAM;YACN,MAAMI,IAAS,GAAGF,OAAO,GAAGT,4BAAH,GAAUK,IAAnC,AAAA;YAEAN,sBAAA,CAAgB,IAAM;gBACnBc,MAAD,CAAgBC,MAAM,CAACC,GAAP,CAAW,UAAX,CAAhB,CAAA,GAA0C,IAA1C,CAACF;aADH,EAEG,EAFH,CAAA,CAJyF,CAQzF,aAFC;YAOD,OAAA,aAAO,CAAA,0BAAA,CAAC,IAAD,EAAA,2DAAA,CAAA,EAAA,EAAUH,cAAV,EAAP;gBAAiC,GAAG,EAAEF,YAAL;aAA1B,CAAA,CAAP,CAAO;SAbD,CAcP;KAhBH,CAAA;AADgB,EAmBhB,EAnBgB,CAAlB,AACwB;AAqBxB,oGAAA,CAEA,MAAMc,8BAAQ,GAAI,CAAA,wKAAA,CAAlB,AAAA;AAEA,MAAMC,yCAAI,GAAGrB,yCAAb,AAAA;;ADjEA","sources":["packages/react/primitive/src/index.ts","packages/react/primitive/src/Primitive.tsx"],"sourcesContent":["export * from './Primitive';\n","import * as React from 'react';\nimport { Slot } from '@radix-ui/react-slot';\n\nconst NODES = [\n 'a',\n 'button',\n 'div',\n 'h2',\n 'h3',\n 'img',\n 'li',\n 'nav',\n 'ol',\n 'p',\n 'span',\n 'svg',\n 'ul',\n] as const;\n\n// Temporary while we await merge of this fix:\n// https://github.com/DefinitelyTyped/DefinitelyTyped/pull/55396\n// prettier-ignore\ntype PropsWithoutRef<P> = P extends any ? ('ref' extends keyof P ? Pick<P, Exclude<keyof P, 'ref'>> : P) : P;\ntype ComponentPropsWithoutRef<T extends React.ElementType> = PropsWithoutRef<\n React.ComponentProps<T>\n>;\n\ntype Primitives = { [E in typeof NODES[number]]: PrimitiveForwardRefComponent<E> };\ntype PrimitivePropsWithRef<E extends React.ElementType> = React.ComponentPropsWithRef<E> & {\n asChild?: boolean;\n};\n\ninterface PrimitiveForwardRefComponent<E extends React.ElementType>\n extends React.ForwardRefExoticComponent<PrimitivePropsWithRef<E>> {}\n\n/* -------------------------------------------------------------------------------------------------\n * Primitive\n * -----------------------------------------------------------------------------------------------*/\n\nconst Primitive = NODES.reduce(\n (primitive, node) => ({\n ...primitive,\n [node]: React.forwardRef((props: PrimitivePropsWithRef<typeof node>, forwardedRef: any) => {\n const { asChild, ...primitiveProps } = props;\n const Comp: any = asChild ? Slot : node;\n\n React.useEffect(() => {\n (window as any)[Symbol.for('radix-ui')] = true;\n }, []);\n\n // DEPRECATED\n if (process.env.NODE_ENV === 'development' && (props as any).as) {\n console.warn(AS_ERROR);\n }\n\n return <Comp {...primitiveProps} ref={forwardedRef} />;\n }),\n }),\n {} as Primitives\n);\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst AS_ERROR = `Warning: The \\`as\\` prop has been removed in favour of \\`asChild\\`. For details, see https://radix-ui.com/docs/primitives/overview/styling#changing-the-rendered-element`;\n\nconst Root = Primitive;\n\nexport {\n Primitive,\n //\n Root,\n};\nexport type { ComponentPropsWithoutRef, PrimitivePropsWithRef };\n"],"names":["React","Slot","NODES","Primitive","reduce","primitive","node","forwardRef","props","forwardedRef","asChild","primitiveProps","Comp","useEffect","window","Symbol","for","process","env","NODE_ENV","as","console","warn","AS_ERROR","Root"],"version":3,"file":"index.js.map"}
1
+ {"mappings":";;;;;;;;;;;;;;;A;;;;ACIA,MAAMM,2BAAK,GAAG;IACZ,GADY;IAEZ,QAFY;IAGZ,KAHY;IAIZ,IAJY;IAKZ,IALY;IAMZ,KANY;IAOZ,IAPY;IAQZ,KARY;IASZ,IATY;IAUZ,GAVY;IAWZ,MAXY;IAYZ,KAZY;IAaZ,IAbY;CAAd,A,EAgBA,8CAhBA;AAiBA,gEAAA;AACA,kBAAA;AAcA;;oGAEA,CAEA,MAAMN,yCAAS,GAAGM,2BAAK,CAACC,MAAN,CAAa,CAACC,SAAD,EAAYC,IAAZ,GAAqB;IAClD,MAAMC,IAAI,GAAA,aAAGP,CAAAA,uBAAA,CAAiB,CAACS,KAAD,EAA4CC,YAA5C,GAAkE;QAC9F,MAAM,E,SAAEC,OAAF,CAAA,EAAW,GAAGC,cAAH,EAAX,GAAiCH,KAAvC,AAAM;QACN,MAAMI,IAAS,GAAGF,OAAO,GAAGT,4BAAH,GAAUI,IAAnC,AAAA;QAEAN,sBAAA,CAAgB,IAAM;YACnBe,MAAD,CAAgBC,MAAM,CAACC,GAAP,CAAW,UAAX,CAAhB,CAAA,GAA0C,IAA1C,CAACF;SADH,EAEG,EAFH,CAAA,CAJ8F,CAQ9F,aAFC;QAOD,OAAA,aAAO,CAAA,0BAAA,CAAC,IAAD,EAAA,2DAAA,CAAA,EAAA,EAAUH,cAAV,EAAP;YAAiC,GAAG,EAAEF,YAAL;SAA1B,CAAA,CAAP,CAAO;KAbI,CAAb,AAcC;IAEDH,IAAI,CAACkB,WAAL,GAAoB,CAAA,UAAA,EAAYnB,IAAK,CAAA,CAArC,CAAAC;IAEA,OAAO;QAAE,GAAGF,SAAL;QAAgB,CAACC,IAAD,CAAA,EAAQC,IAAR;KAAvB,CAAO;CAnBS,EAoBf,EApBe,CAAlB,AAoBC;AAED,oGAAA,CAEA,MAAMiB,8BAAQ,GAAI,CAAA,wKAAA,CAAlB,AAAA;AAEA;;oGAEA,CAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCA,CAEA,SAASzB,yCAAT,CAA4D2B,MAA5D,EAAiFC,KAAjF,EAA2F;IACzF,IAAID,MAAJ,EAAYzB,yBAAA,CAAmB,IAAMyB,MAAM,CAACG,aAAP,CAAqBF,KAArB,CAAzB;IAAA,CAAZ,CAAA;CACD;AAED,oGAAA,CAEA,MAAM7B,yCAAI,GAAGD,yCAAb,AAAA;;ADjHA","sources":["packages/react/primitive/src/index.ts","packages/react/primitive/src/Primitive.tsx"],"sourcesContent":["export {\n Primitive,\n //\n Root,\n //\n dispatchDiscreteCustomEvent,\n} from './Primitive';\nexport type { ComponentPropsWithoutRef, PrimitivePropsWithRef } from './Primitive';\n","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { Slot } from '@radix-ui/react-slot';\n\nconst NODES = [\n 'a',\n 'button',\n 'div',\n 'h2',\n 'h3',\n 'img',\n 'li',\n 'nav',\n 'ol',\n 'p',\n 'span',\n 'svg',\n 'ul',\n] as const;\n\n// Temporary while we await merge of this fix:\n// https://github.com/DefinitelyTyped/DefinitelyTyped/pull/55396\n// prettier-ignore\ntype PropsWithoutRef<P> = P extends any ? ('ref' extends keyof P ? Pick<P, Exclude<keyof P, 'ref'>> : P) : P;\ntype ComponentPropsWithoutRef<T extends React.ElementType> = PropsWithoutRef<\n React.ComponentProps<T>\n>;\n\ntype Primitives = { [E in typeof NODES[number]]: PrimitiveForwardRefComponent<E> };\ntype PrimitivePropsWithRef<E extends React.ElementType> = React.ComponentPropsWithRef<E> & {\n asChild?: boolean;\n};\n\ninterface PrimitiveForwardRefComponent<E extends React.ElementType>\n extends React.ForwardRefExoticComponent<PrimitivePropsWithRef<E>> {}\n\n/* -------------------------------------------------------------------------------------------------\n * Primitive\n * -----------------------------------------------------------------------------------------------*/\n\nconst Primitive = NODES.reduce((primitive, node) => {\n const Node = React.forwardRef((props: PrimitivePropsWithRef<typeof node>, forwardedRef: any) => {\n const { asChild, ...primitiveProps } = props;\n const Comp: any = asChild ? Slot : node;\n\n React.useEffect(() => {\n (window as any)[Symbol.for('radix-ui')] = true;\n }, []);\n\n // DEPRECATED\n if (process.env.NODE_ENV === 'development' && (props as any).as) {\n console.warn(AS_ERROR);\n }\n\n return <Comp {...primitiveProps} ref={forwardedRef} />;\n });\n\n Node.displayName = `Primitive.${node}`;\n\n return { ...primitive, [node]: Node };\n}, {} as Primitives);\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst AS_ERROR = `Warning: The \\`as\\` prop has been removed in favour of \\`asChild\\`. For details, see https://radix-ui.com/docs/primitives/overview/styling#changing-the-rendered-element`;\n\n/* -------------------------------------------------------------------------------------------------\n * Utils\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * Flush custom event dispatch\n * https://github.com/radix-ui/primitives/pull/1378\n *\n * React batches *all* event handlers since version 18, this introduces certain considerations when using custom event types.\n *\n * Internally, React prioritises events in the following order:\n * - discrete\n * - continuous\n * - default\n *\n * https://github.com/facebook/react/blob/a8a4742f1c54493df00da648a3f9d26e3db9c8b5/packages/react-dom/src/events/ReactDOMEventListener.js#L294-L350\n *\n * `discrete` is an important distinction as updates within these events are applied immediately.\n * React however, is not able to infer the priority of custom event types due to how they are detected internally.\n * Because of this, it's possible for updates from custom events to be unexpectedly batched when\n * dispatched by another `discrete` event.\n *\n * In order to ensure that updates from custom events are applied predictably, we need to manually flush the batch.\n * This utility should be used when dispatching a custom event from within another `discrete` event, this utility\n * is not nessesary when dispatching known event types, or if dispatching a custom type inside a non-discrete event.\n * For example:\n *\n * dispatching a known click 👎\n * target.dispatchEvent(new Event(‘click’))\n *\n * dispatching a custom type within a non-discrete event 👎\n * onScroll={(event) => event.target.dispatchEvent(new CustomEvent(‘customType’))}\n *\n * dispatching a custom type within a `discrete` event 👍\n * onPointerDown={(event) => dispatchDiscreteCustomEvent(event.target, new CustomEvent(‘customType’))}\n *\n * Note: though React classifies `focus`, `focusin` and `focusout` events as `discrete`, it's not recommended to use\n * this utility with them. This is because it's possible for those handlers to be called implicitly during render\n * e.g. when focus is within a component as it is unmounted, or when managing focus on mount.\n */\n\nfunction dispatchDiscreteCustomEvent<E extends CustomEvent>(target: E['target'], event: E) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = Primitive;\n\nexport {\n Primitive,\n //\n Root,\n //\n dispatchDiscreteCustomEvent,\n};\nexport type { ComponentPropsWithoutRef, PrimitivePropsWithRef };\n"],"names":["Primitive","Root","dispatchDiscreteCustomEvent","React","ReactDOM","Slot","NODES","reduce","primitive","node","Node","forwardRef","props","forwardedRef","asChild","primitiveProps","Comp","useEffect","window","Symbol","for","process","env","NODE_ENV","as","console","warn","AS_ERROR","displayName","target","event","flushSync","dispatchEvent"],"version":3,"file":"index.js.map"}
@@ -1,14 +1,9 @@
1
1
  import $4q5Fq$babelruntimehelpersesmextends from "@babel/runtime/helpers/esm/extends";
2
2
  import {forwardRef as $4q5Fq$forwardRef, useEffect as $4q5Fq$useEffect, createElement as $4q5Fq$createElement} from "react";
3
+ import {flushSync as $4q5Fq$flushSync} from "react-dom";
3
4
  import {Slot as $4q5Fq$Slot} from "@radix-ui/react-slot";
4
5
 
5
- function $parcel$export(e, n, v, s) {
6
- Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
7
- }
8
- var $8927f6f2acc4f386$exports = {};
9
6
 
10
- $parcel$export($8927f6f2acc4f386$exports, "Primitive", () => $8927f6f2acc4f386$export$250ffa63cdc0d034);
11
- $parcel$export($8927f6f2acc4f386$exports, "Root", () => $8927f6f2acc4f386$export$be92b6f5f03c0fe9);
12
7
 
13
8
 
14
9
 
@@ -31,25 +26,69 @@ const $8927f6f2acc4f386$var$NODES = [
31
26
  // prettier-ignore
32
27
  /* -------------------------------------------------------------------------------------------------
33
28
  * Primitive
34
- * -----------------------------------------------------------------------------------------------*/ const $8927f6f2acc4f386$export$250ffa63cdc0d034 = $8927f6f2acc4f386$var$NODES.reduce((primitive, node)=>({
29
+ * -----------------------------------------------------------------------------------------------*/ const $8927f6f2acc4f386$export$250ffa63cdc0d034 = $8927f6f2acc4f386$var$NODES.reduce((primitive, node)=>{
30
+ const Node = /*#__PURE__*/ $4q5Fq$forwardRef((props, forwardedRef)=>{
31
+ const { asChild: asChild , ...primitiveProps } = props;
32
+ const Comp = asChild ? $4q5Fq$Slot : node;
33
+ $4q5Fq$useEffect(()=>{
34
+ window[Symbol.for('radix-ui')] = true;
35
+ }, []); // DEPRECATED
36
+ return /*#__PURE__*/ $4q5Fq$createElement(Comp, $4q5Fq$babelruntimehelpersesmextends({}, primitiveProps, {
37
+ ref: forwardedRef
38
+ }));
39
+ });
40
+ Node.displayName = `Primitive.${node}`;
41
+ return {
35
42
  ...primitive,
36
- [node]: /*#__PURE__*/ $4q5Fq$forwardRef((props, forwardedRef)=>{
37
- const { asChild: asChild , ...primitiveProps } = props;
38
- const Comp = asChild ? $4q5Fq$Slot : node;
39
- $4q5Fq$useEffect(()=>{
40
- window[Symbol.for('radix-ui')] = true;
41
- }, []); // DEPRECATED
42
- return /*#__PURE__*/ $4q5Fq$createElement(Comp, $4q5Fq$babelruntimehelpersesmextends({}, primitiveProps, {
43
- ref: forwardedRef
44
- }));
45
- })
46
- })
47
- , {});
43
+ [node]: Node
44
+ };
45
+ }, {});
48
46
  /* -----------------------------------------------------------------------------------------------*/ const $8927f6f2acc4f386$var$AS_ERROR = `Warning: The \`as\` prop has been removed in favour of \`asChild\`. For details, see https://radix-ui.com/docs/primitives/overview/styling#changing-the-rendered-element`;
49
- const $8927f6f2acc4f386$export$be92b6f5f03c0fe9 = $8927f6f2acc4f386$export$250ffa63cdc0d034;
47
+ /* -------------------------------------------------------------------------------------------------
48
+ * Utils
49
+ * -----------------------------------------------------------------------------------------------*/ /**
50
+ * Flush custom event dispatch
51
+ * https://github.com/radix-ui/primitives/pull/1378
52
+ *
53
+ * React batches *all* event handlers since version 18, this introduces certain considerations when using custom event types.
54
+ *
55
+ * Internally, React prioritises events in the following order:
56
+ * - discrete
57
+ * - continuous
58
+ * - default
59
+ *
60
+ * https://github.com/facebook/react/blob/a8a4742f1c54493df00da648a3f9d26e3db9c8b5/packages/react-dom/src/events/ReactDOMEventListener.js#L294-L350
61
+ *
62
+ * `discrete` is an important distinction as updates within these events are applied immediately.
63
+ * React however, is not able to infer the priority of custom event types due to how they are detected internally.
64
+ * Because of this, it's possible for updates from custom events to be unexpectedly batched when
65
+ * dispatched by another `discrete` event.
66
+ *
67
+ * In order to ensure that updates from custom events are applied predictably, we need to manually flush the batch.
68
+ * This utility should be used when dispatching a custom event from within another `discrete` event, this utility
69
+ * is not nessesary when dispatching known event types, or if dispatching a custom type inside a non-discrete event.
70
+ * For example:
71
+ *
72
+ * dispatching a known click 👎
73
+ * target.dispatchEvent(new Event(‘click’))
74
+ *
75
+ * dispatching a custom type within a non-discrete event 👎
76
+ * onScroll={(event) => event.target.dispatchEvent(new CustomEvent(‘customType’))}
77
+ *
78
+ * dispatching a custom type within a `discrete` event 👍
79
+ * onPointerDown={(event) => dispatchDiscreteCustomEvent(event.target, new CustomEvent(‘customType’))}
80
+ *
81
+ * Note: though React classifies `focus`, `focusin` and `focusout` events as `discrete`, it's not recommended to use
82
+ * this utility with them. This is because it's possible for those handlers to be called implicitly during render
83
+ * e.g. when focus is within a component as it is unmounted, or when managing focus on mount.
84
+ */ function $8927f6f2acc4f386$export$6d1a0317bde7de7f(target, event) {
85
+ if (target) $4q5Fq$flushSync(()=>target.dispatchEvent(event)
86
+ );
87
+ }
88
+ /* -----------------------------------------------------------------------------------------------*/ const $8927f6f2acc4f386$export$be92b6f5f03c0fe9 = $8927f6f2acc4f386$export$250ffa63cdc0d034;
50
89
 
51
90
 
52
91
 
53
92
 
54
- export {$8927f6f2acc4f386$export$250ffa63cdc0d034 as Primitive, $8927f6f2acc4f386$export$be92b6f5f03c0fe9 as Root};
93
+ export {$8927f6f2acc4f386$export$250ffa63cdc0d034 as Primitive, $8927f6f2acc4f386$export$be92b6f5f03c0fe9 as Root, $8927f6f2acc4f386$export$6d1a0317bde7de7f as dispatchDiscreteCustomEvent};
55
94
  //# sourceMappingURL=index.module.js.map
@@ -1 +1 @@
1
- {"mappings":";;;;;;;;;;;A;;;ACGA,MAAME,2BAAK,GAAG;IACZ,GADY;IAEZ,QAFY;IAGZ,KAHY;IAIZ,IAJY;IAKZ,IALY;IAMZ,KANY;IAOZ,IAPY;IAQZ,KARY;IASZ,IATY;IAUZ,GAVY;IAWZ,MAXY;IAYZ,KAZY;IAaZ,IAbY;CAAd,A,EAgBA,8CAhBA;AAiBA,gEAAA;AACA,kBAAA;AAcA;;oGAEA,CAEA,MAAMC,yCAAS,GAAGD,2BAAK,CAACE,MAAN,CAChB,CAACC,SAAD,EAAYC,IAAZ,GAAsB,CAAA;QACpB,GAAGD,SADiB;QAEpB,CAACC,IAAD,CAAA,EAAA,aAAQN,CAAAA,iBAAA,CAAiB,CAACQ,KAAD,EAA4CC,YAA5C,GAAkE;YACzF,MAAM,E,SAAEC,OAAF,CAAA,EAAW,GAAGC,cAAH,EAAX,GAAiCH,KAAvC,AAAM;YACN,MAAMI,IAAS,GAAGF,OAAO,GAAGT,WAAH,GAAUK,IAAnC,AAAA;YAEAN,gBAAA,CAAgB,IAAM;gBACnBc,MAAD,CAAgBC,MAAM,CAACC,GAAP,CAAW,UAAX,CAAhB,CAAA,GAA0C,IAA1C,CAACF;aADH,EAEG,EAFH,CAAA,CAJyF,CAQzF,aAFC;YAOD,OAAA,aAAO,CAAA,oBAAA,CAAC,IAAD,EAAA,oCAAA,CAAA,EAAA,EAAUH,cAAV,EAAP;gBAAiC,GAAG,EAAEF,YAAL;aAA1B,CAAA,CAAP,CAAO;SAbD,CAcP;KAhBH,CAAA;AADgB,EAmBhB,EAnBgB,CAAlB,AACwB;AAqBxB,oGAAA,CAEA,MAAMc,8BAAQ,GAAI,CAAA,wKAAA,CAAlB,AAAA;AAEA,MAAMC,yCAAI,GAAGrB,yCAAb,AAAA;;ADjEA","sources":["packages/react/primitive/src/index.ts","packages/react/primitive/src/Primitive.tsx"],"sourcesContent":["export * from './Primitive';\n","import * as React from 'react';\nimport { Slot } from '@radix-ui/react-slot';\n\nconst NODES = [\n 'a',\n 'button',\n 'div',\n 'h2',\n 'h3',\n 'img',\n 'li',\n 'nav',\n 'ol',\n 'p',\n 'span',\n 'svg',\n 'ul',\n] as const;\n\n// Temporary while we await merge of this fix:\n// https://github.com/DefinitelyTyped/DefinitelyTyped/pull/55396\n// prettier-ignore\ntype PropsWithoutRef<P> = P extends any ? ('ref' extends keyof P ? Pick<P, Exclude<keyof P, 'ref'>> : P) : P;\ntype ComponentPropsWithoutRef<T extends React.ElementType> = PropsWithoutRef<\n React.ComponentProps<T>\n>;\n\ntype Primitives = { [E in typeof NODES[number]]: PrimitiveForwardRefComponent<E> };\ntype PrimitivePropsWithRef<E extends React.ElementType> = React.ComponentPropsWithRef<E> & {\n asChild?: boolean;\n};\n\ninterface PrimitiveForwardRefComponent<E extends React.ElementType>\n extends React.ForwardRefExoticComponent<PrimitivePropsWithRef<E>> {}\n\n/* -------------------------------------------------------------------------------------------------\n * Primitive\n * -----------------------------------------------------------------------------------------------*/\n\nconst Primitive = NODES.reduce(\n (primitive, node) => ({\n ...primitive,\n [node]: React.forwardRef((props: PrimitivePropsWithRef<typeof node>, forwardedRef: any) => {\n const { asChild, ...primitiveProps } = props;\n const Comp: any = asChild ? Slot : node;\n\n React.useEffect(() => {\n (window as any)[Symbol.for('radix-ui')] = true;\n }, []);\n\n // DEPRECATED\n if (process.env.NODE_ENV === 'development' && (props as any).as) {\n console.warn(AS_ERROR);\n }\n\n return <Comp {...primitiveProps} ref={forwardedRef} />;\n }),\n }),\n {} as Primitives\n);\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst AS_ERROR = `Warning: The \\`as\\` prop has been removed in favour of \\`asChild\\`. For details, see https://radix-ui.com/docs/primitives/overview/styling#changing-the-rendered-element`;\n\nconst Root = Primitive;\n\nexport {\n Primitive,\n //\n Root,\n};\nexport type { ComponentPropsWithoutRef, PrimitivePropsWithRef };\n"],"names":["React","Slot","NODES","Primitive","reduce","primitive","node","forwardRef","props","forwardedRef","asChild","primitiveProps","Comp","useEffect","window","Symbol","for","process","env","NODE_ENV","as","console","warn","AS_ERROR","Root"],"version":3,"file":"index.module.js.map"}
1
+ {"mappings":";;;;;A;;;;ACIA,MAAMM,2BAAK,GAAG;IACZ,GADY;IAEZ,QAFY;IAGZ,KAHY;IAIZ,IAJY;IAKZ,IALY;IAMZ,KANY;IAOZ,IAPY;IAQZ,KARY;IASZ,IATY;IAUZ,GAVY;IAWZ,MAXY;IAYZ,KAZY;IAaZ,IAbY;CAAd,A,EAgBA,8CAhBA;AAiBA,gEAAA;AACA,kBAAA;AAcA;;oGAEA,CAEA,MAAMN,yCAAS,GAAGM,2BAAK,CAACC,MAAN,CAAa,CAACC,SAAD,EAAYC,IAAZ,GAAqB;IAClD,MAAMC,IAAI,GAAA,aAAGP,CAAAA,iBAAA,CAAiB,CAACS,KAAD,EAA4CC,YAA5C,GAAkE;QAC9F,MAAM,E,SAAEC,OAAF,CAAA,EAAW,GAAGC,cAAH,EAAX,GAAiCH,KAAvC,AAAM;QACN,MAAMI,IAAS,GAAGF,OAAO,GAAGT,WAAH,GAAUI,IAAnC,AAAA;QAEAN,gBAAA,CAAgB,IAAM;YACnBe,MAAD,CAAgBC,MAAM,CAACC,GAAP,CAAW,UAAX,CAAhB,CAAA,GAA0C,IAA1C,CAACF;SADH,EAEG,EAFH,CAAA,CAJ8F,CAQ9F,aAFC;QAOD,OAAA,aAAO,CAAA,oBAAA,CAAC,IAAD,EAAA,oCAAA,CAAA,EAAA,EAAUH,cAAV,EAAP;YAAiC,GAAG,EAAEF,YAAL;SAA1B,CAAA,CAAP,CAAO;KAbI,CAAb,AAcC;IAEDH,IAAI,CAACkB,WAAL,GAAoB,CAAA,UAAA,EAAYnB,IAAK,CAAA,CAArC,CAAAC;IAEA,OAAO;QAAE,GAAGF,SAAL;QAAgB,CAACC,IAAD,CAAA,EAAQC,IAAR;KAAvB,CAAO;CAnBS,EAoBf,EApBe,CAAlB,AAoBC;AAED,oGAAA,CAEA,MAAMiB,8BAAQ,GAAI,CAAA,wKAAA,CAAlB,AAAA;AAEA;;oGAEA,CAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCA,CAEA,SAASzB,yCAAT,CAA4D2B,MAA5D,EAAiFC,KAAjF,EAA2F;IACzF,IAAID,MAAJ,EAAYzB,gBAAA,CAAmB,IAAMyB,MAAM,CAACG,aAAP,CAAqBF,KAArB,CAAzB;IAAA,CAAZ,CAAA;CACD;AAED,oGAAA,CAEA,MAAM7B,yCAAI,GAAGD,yCAAb,AAAA;;ADjHA","sources":["packages/react/primitive/src/index.ts","packages/react/primitive/src/Primitive.tsx"],"sourcesContent":["export {\n Primitive,\n //\n Root,\n //\n dispatchDiscreteCustomEvent,\n} from './Primitive';\nexport type { ComponentPropsWithoutRef, PrimitivePropsWithRef } from './Primitive';\n","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { Slot } from '@radix-ui/react-slot';\n\nconst NODES = [\n 'a',\n 'button',\n 'div',\n 'h2',\n 'h3',\n 'img',\n 'li',\n 'nav',\n 'ol',\n 'p',\n 'span',\n 'svg',\n 'ul',\n] as const;\n\n// Temporary while we await merge of this fix:\n// https://github.com/DefinitelyTyped/DefinitelyTyped/pull/55396\n// prettier-ignore\ntype PropsWithoutRef<P> = P extends any ? ('ref' extends keyof P ? Pick<P, Exclude<keyof P, 'ref'>> : P) : P;\ntype ComponentPropsWithoutRef<T extends React.ElementType> = PropsWithoutRef<\n React.ComponentProps<T>\n>;\n\ntype Primitives = { [E in typeof NODES[number]]: PrimitiveForwardRefComponent<E> };\ntype PrimitivePropsWithRef<E extends React.ElementType> = React.ComponentPropsWithRef<E> & {\n asChild?: boolean;\n};\n\ninterface PrimitiveForwardRefComponent<E extends React.ElementType>\n extends React.ForwardRefExoticComponent<PrimitivePropsWithRef<E>> {}\n\n/* -------------------------------------------------------------------------------------------------\n * Primitive\n * -----------------------------------------------------------------------------------------------*/\n\nconst Primitive = NODES.reduce((primitive, node) => {\n const Node = React.forwardRef((props: PrimitivePropsWithRef<typeof node>, forwardedRef: any) => {\n const { asChild, ...primitiveProps } = props;\n const Comp: any = asChild ? Slot : node;\n\n React.useEffect(() => {\n (window as any)[Symbol.for('radix-ui')] = true;\n }, []);\n\n // DEPRECATED\n if (process.env.NODE_ENV === 'development' && (props as any).as) {\n console.warn(AS_ERROR);\n }\n\n return <Comp {...primitiveProps} ref={forwardedRef} />;\n });\n\n Node.displayName = `Primitive.${node}`;\n\n return { ...primitive, [node]: Node };\n}, {} as Primitives);\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst AS_ERROR = `Warning: The \\`as\\` prop has been removed in favour of \\`asChild\\`. For details, see https://radix-ui.com/docs/primitives/overview/styling#changing-the-rendered-element`;\n\n/* -------------------------------------------------------------------------------------------------\n * Utils\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * Flush custom event dispatch\n * https://github.com/radix-ui/primitives/pull/1378\n *\n * React batches *all* event handlers since version 18, this introduces certain considerations when using custom event types.\n *\n * Internally, React prioritises events in the following order:\n * - discrete\n * - continuous\n * - default\n *\n * https://github.com/facebook/react/blob/a8a4742f1c54493df00da648a3f9d26e3db9c8b5/packages/react-dom/src/events/ReactDOMEventListener.js#L294-L350\n *\n * `discrete` is an important distinction as updates within these events are applied immediately.\n * React however, is not able to infer the priority of custom event types due to how they are detected internally.\n * Because of this, it's possible for updates from custom events to be unexpectedly batched when\n * dispatched by another `discrete` event.\n *\n * In order to ensure that updates from custom events are applied predictably, we need to manually flush the batch.\n * This utility should be used when dispatching a custom event from within another `discrete` event, this utility\n * is not nessesary when dispatching known event types, or if dispatching a custom type inside a non-discrete event.\n * For example:\n *\n * dispatching a known click 👎\n * target.dispatchEvent(new Event(‘click’))\n *\n * dispatching a custom type within a non-discrete event 👎\n * onScroll={(event) => event.target.dispatchEvent(new CustomEvent(‘customType’))}\n *\n * dispatching a custom type within a `discrete` event 👍\n * onPointerDown={(event) => dispatchDiscreteCustomEvent(event.target, new CustomEvent(‘customType’))}\n *\n * Note: though React classifies `focus`, `focusin` and `focusout` events as `discrete`, it's not recommended to use\n * this utility with them. This is because it's possible for those handlers to be called implicitly during render\n * e.g. when focus is within a component as it is unmounted, or when managing focus on mount.\n */\n\nfunction dispatchDiscreteCustomEvent<E extends CustomEvent>(target: E['target'], event: E) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = Primitive;\n\nexport {\n Primitive,\n //\n Root,\n //\n dispatchDiscreteCustomEvent,\n};\nexport type { ComponentPropsWithoutRef, PrimitivePropsWithRef };\n"],"names":["Primitive","Root","dispatchDiscreteCustomEvent","React","ReactDOM","Slot","NODES","reduce","primitive","node","Node","forwardRef","props","forwardedRef","asChild","primitiveProps","Comp","useEffect","window","Symbol","for","process","env","NODE_ENV","as","console","warn","AS_ERROR","displayName","target","event","flushSync","dispatchEvent"],"version":3,"file":"index.module.js.map"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@radix-ui/react-primitive",
3
- "version": "0.1.5-rc.4",
3
+ "version": "0.1.5-rc.42",
4
4
  "license": "MIT",
5
5
  "source": "src/index.ts",
6
6
  "main": "dist/index.js",
@@ -17,13 +17,14 @@
17
17
  },
18
18
  "dependencies": {
19
19
  "@babel/runtime": "^7.13.10",
20
- "@radix-ui/react-slot": "0.1.3-rc.4"
20
+ "@radix-ui/react-slot": "0.1.3-rc.42"
21
21
  },
22
22
  "devDependencies": {
23
23
  "@testing-library/react": "^10.4.8"
24
24
  },
25
25
  "peerDependencies": {
26
- "react": "^16.8 || ^17.0 || ^18.0"
26
+ "react": "^16.8 || ^17.0 || ^18.0",
27
+ "react-dom": "^16.8 || ^17.0 || ^18.0"
27
28
  },
28
29
  "homepage": "https://radix-ui.com/primitives",
29
30
  "repository": {