123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- 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
|