@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
41 lines (40 loc) • 1.2 kB
JavaScript
;
import { incrementRefSafely, ref } from "../../core/reactivity/CoreReactivity";
const refByNodePathByParamName = /* @__PURE__ */ new Map();
export function getOrCreateParamRef(node, paramName) {
return getParamRef(node, paramName) || createParamRef(node, paramName);
}
export function getParamRef(node, paramName) {
var _a;
return (_a = refByNodePathByParamName.get(node.path())) == null ? void 0 : _a.get(paramName);
}
export function createParamRef(node, paramName) {
let mapForNode = refByNodePathByParamName.get(node.path());
if (!mapForNode) {
mapForNode = /* @__PURE__ */ new Map();
refByNodePathByParamName.set(node.path(), mapForNode);
}
let refForParam = mapForNode.get(paramName);
if (!refForParam) {
refForParam = ref(0);
mapForNode.set(paramName, refForParam);
}
return refForParam;
}
export function touchParamRef(node, paramName) {
const _ref = getParamRef(node, paramName);
if (!_ref) {
return;
}
incrementRefSafely(_ref);
}
export function touchParamRefFromParam(param) {
if (!param.node) {
return;
}
const _ref = getParamRef(param.node, param.name());
if (!_ref) {
return;
}
incrementRefSafely(_ref);
}