UNPKG

reka-ui

Version:

Vue port for Radix UI Primitives.

80 lines (77 loc) 2.69 kB
const require_rolldown_runtime = require('../rolldown-runtime.cjs'); const require_shared_createContext = require('../shared/createContext.cjs'); const vue = require_rolldown_runtime.__toESM(require("vue")); //#region src/Drawer/DrawerProvider.vue?vue&type=script&setup=true&lang.ts const [injectDrawerProviderContext, provideDrawerProviderContext] = require_shared_createContext.createContext("DrawerProvider"); var DrawerProvider_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({ __name: "DrawerProvider", setup(__props) { function createVisualStateStore() { let state = { swipeProgress: 0, frontmostHeight: 0 }; const listeners = /* @__PURE__ */ new Set(); return { getSnapshot: () => state, set(next) { const nextProgress = next.swipeProgress !== void 0 ? Number.isFinite(next.swipeProgress) ? next.swipeProgress : 0 : state.swipeProgress; const nextHeight = next.frontmostHeight !== void 0 ? Number.isFinite(next.frontmostHeight) ? next.frontmostHeight : 0 : state.frontmostHeight; if (nextProgress === state.swipeProgress && nextHeight === state.frontmostHeight) return; state = { swipeProgress: nextProgress, frontmostHeight: nextHeight }; listeners.forEach((l) => l()); }, subscribe(listener) { listeners.add(listener); return () => listeners.delete(listener); } }; } const openById = (0, vue.ref)(/* @__PURE__ */ new Map()); const visualStateStore = createVisualStateStore(); const active = (0, vue.computed)(() => { for (const open of openById.value.values()) if (open) return true; return false; }); provideDrawerProviderContext({ active, setDrawerOpen(id, open) { const prev = openById.value.get(id); if (prev === open) return; const next = new Map(openById.value); next.set(id, open); openById.value = next; }, removeDrawer(id) { if (!openById.value.has(id)) return; const next = new Map(openById.value); next.delete(id); openById.value = next; }, visualStateStore }); return (_ctx, _cache) => { return (0, vue.renderSlot)(_ctx.$slots, "default"); }; } }); //#endregion //#region src/Drawer/DrawerProvider.vue var DrawerProvider_default = DrawerProvider_vue_vue_type_script_setup_true_lang_default; //#endregion Object.defineProperty(exports, 'DrawerProvider_default', { enumerable: true, get: function () { return DrawerProvider_default; } }); Object.defineProperty(exports, 'injectDrawerProviderContext', { enumerable: true, get: function () { return injectDrawerProviderContext; } }); //# sourceMappingURL=DrawerProvider.cjs.map