106 lines
4.5 KiB
JavaScript
106 lines
4.5 KiB
JavaScript
var $iMixA$babelruntimehelpersextends = require("@babel/runtime/helpers/extends");
|
||
var $iMixA$react = require("react");
|
||
var $iMixA$reactdom = require("react-dom");
|
||
var $iMixA$radixuireactslot = require("@radix-ui/react-slot");
|
||
|
||
function $parcel$export(e, n, v, s) {
|
||
Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
|
||
}
|
||
function $parcel$interopDefault(a) {
|
||
return a && a.__esModule ? a.default : a;
|
||
}
|
||
|
||
$parcel$export(module.exports, "Primitive", () => $c3def6332c2749a6$export$250ffa63cdc0d034);
|
||
$parcel$export(module.exports, "Root", () => $c3def6332c2749a6$export$be92b6f5f03c0fe9);
|
||
$parcel$export(module.exports, "dispatchDiscreteCustomEvent", () => $c3def6332c2749a6$export$6d1a0317bde7de7f);
|
||
|
||
|
||
|
||
|
||
const $c3def6332c2749a6$var$NODES = [
|
||
'a',
|
||
'button',
|
||
'div',
|
||
'form',
|
||
'h2',
|
||
'h3',
|
||
'img',
|
||
'input',
|
||
'label',
|
||
'li',
|
||
'nav',
|
||
'ol',
|
||
'p',
|
||
'span',
|
||
'svg',
|
||
'ul'
|
||
]; // Temporary while we await merge of this fix:
|
||
// https://github.com/DefinitelyTyped/DefinitelyTyped/pull/55396
|
||
// prettier-ignore
|
||
/* -------------------------------------------------------------------------------------------------
|
||
* Primitive
|
||
* -----------------------------------------------------------------------------------------------*/ const $c3def6332c2749a6$export$250ffa63cdc0d034 = $c3def6332c2749a6$var$NODES.reduce((primitive, node)=>{
|
||
const Node = /*#__PURE__*/ $iMixA$react.forwardRef((props, forwardedRef)=>{
|
||
const { asChild: asChild , ...primitiveProps } = props;
|
||
const Comp = asChild ? $iMixA$radixuireactslot.Slot : node;
|
||
$iMixA$react.useEffect(()=>{
|
||
window[Symbol.for('radix-ui')] = true;
|
||
}, []);
|
||
return /*#__PURE__*/ $iMixA$react.createElement(Comp, ($parcel$interopDefault($iMixA$babelruntimehelpersextends))({}, primitiveProps, {
|
||
ref: forwardedRef
|
||
}));
|
||
});
|
||
Node.displayName = `Primitive.${node}`;
|
||
return {
|
||
...primitive,
|
||
[node]: Node
|
||
};
|
||
}, {});
|
||
/* -------------------------------------------------------------------------------------------------
|
||
* Utils
|
||
* -----------------------------------------------------------------------------------------------*/ /**
|
||
* Flush custom event dispatch
|
||
* https://github.com/radix-ui/primitives/pull/1378
|
||
*
|
||
* React batches *all* event handlers since version 18, this introduces certain considerations when using custom event types.
|
||
*
|
||
* Internally, React prioritises events in the following order:
|
||
* - discrete
|
||
* - continuous
|
||
* - default
|
||
*
|
||
* https://github.com/facebook/react/blob/a8a4742f1c54493df00da648a3f9d26e3db9c8b5/packages/react-dom/src/events/ReactDOMEventListener.js#L294-L350
|
||
*
|
||
* `discrete` is an important distinction as updates within these events are applied immediately.
|
||
* React however, is not able to infer the priority of custom event types due to how they are detected internally.
|
||
* Because of this, it's possible for updates from custom events to be unexpectedly batched when
|
||
* dispatched by another `discrete` event.
|
||
*
|
||
* In order to ensure that updates from custom events are applied predictably, we need to manually flush the batch.
|
||
* This utility should be used when dispatching a custom event from within another `discrete` event, this utility
|
||
* is not nessesary when dispatching known event types, or if dispatching a custom type inside a non-discrete event.
|
||
* For example:
|
||
*
|
||
* dispatching a known click 👎
|
||
* target.dispatchEvent(new Event(‘click’))
|
||
*
|
||
* dispatching a custom type within a non-discrete event 👎
|
||
* onScroll={(event) => event.target.dispatchEvent(new CustomEvent(‘customType’))}
|
||
*
|
||
* dispatching a custom type within a `discrete` event 👍
|
||
* onPointerDown={(event) => dispatchDiscreteCustomEvent(event.target, new CustomEvent(‘customType’))}
|
||
*
|
||
* Note: though React classifies `focus`, `focusin` and `focusout` events as `discrete`, it's not recommended to use
|
||
* this utility with them. This is because it's possible for those handlers to be called implicitly during render
|
||
* e.g. when focus is within a component as it is unmounted, or when managing focus on mount.
|
||
*/ function $c3def6332c2749a6$export$6d1a0317bde7de7f(target, event) {
|
||
if (target) $iMixA$reactdom.flushSync(()=>target.dispatchEvent(event)
|
||
);
|
||
}
|
||
/* -----------------------------------------------------------------------------------------------*/ const $c3def6332c2749a6$export$be92b6f5f03c0fe9 = $c3def6332c2749a6$export$250ffa63cdc0d034;
|
||
|
||
|
||
|
||
|
||
//# sourceMappingURL=index.js.map
|