@ryo-98/react-api-bridge
Version:
A registry for component imperative api
60 lines (59 loc) • 1.98 kB
JavaScript
;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var getResolverOrCreateWhenMissing_exports = {};
__export(getResolverOrCreateWhenMissing_exports, {
getResolverOrCreateWhenMissing: () => getResolverOrCreateWhenMissing
});
module.exports = __toCommonJS(getResolverOrCreateWhenMissing_exports);
function getResolverOrCreateWhenMissing(apiNList, contextValue, initial, pendingResolverMap) {
let contextValueMap = pendingResolverMap.get(apiNList);
if (!contextValueMap) {
contextValueMap = /* @__PURE__ */ new Map();
pendingResolverMap.set(apiNList, contextValueMap);
}
let bucket = contextValueMap.get(contextValue);
if (!bucket) {
bucket = {
waiters: /* @__PURE__ */ new Set()
};
contextValueMap.set(contextValue, bucket);
}
let resolver = initial ? bucket.initialResolver : void 0;
if (!resolver) {
let outerResolve;
const newPromise = new Promise((resolve) => {
outerResolve = resolve;
});
resolver = {
initial,
promise: newPromise,
resolve: outerResolve
};
if (initial) {
bucket.initialResolver = resolver;
} else {
bucket.waiters.add(resolver);
}
}
return {
resolver,
contextValueMap,
bucket
};
}