UNPKG

ember-source

Version:

A JavaScript framework for creating ambitious web applications

54 lines (49 loc) 1.77 kB
import { associateDestroyableChild } from '../@glimmer/destroyable/index.js'; import { g as getInternalHelperManager, h as hasValue, a as hasDestroyable } from './api-Co-k4HVs.js'; import { createCache, getValue } from '../@glimmer/validator/index.js'; import './reference-BNqcwZWH.js'; import './capabilities-DGmQ_mz4.js'; import { getOwner } from '../@glimmer/owner/index.js'; import { E as EMPTY_ARGS, c as EMPTY_NAMED, d as EMPTY_POSITIONAL } from './on-CrTl7JQU.js'; function getArgs(proxy) { // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- @fixme return getValue(proxy.argsCache); } class SimpleArgsProxy { argsCache; constructor(context, computeArgs = () => EMPTY_ARGS) { let argsCache = createCache(() => computeArgs(context)); { this.argsCache = argsCache; } } get named() { return getArgs(this).named || EMPTY_NAMED; } get positional() { return getArgs(this).positional || EMPTY_POSITIONAL; } } //////////// function invokeHelper(context, definition, computeArgs) { const owner = getOwner(context); const internalManager = getInternalHelperManager(definition); const manager = internalManager.getDelegateFor(owner); let args = new SimpleArgsProxy(context, computeArgs); let bucket = manager.createHelper(definition, args); let cache; if (hasValue(manager)) { cache = createCache(() => { return manager.getValue(bucket); }); associateDestroyableChild(context, cache); } else { throw new Error('TODO: unreachable, to be implemented with hasScheduledEffect'); } if (hasDestroyable(manager)) { let destroyable = manager.getDestroyable(bucket); associateDestroyableChild(cache, destroyable); } return cache; } export { invokeHelper as i };