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