UNPKG

can

Version:

MIT-licensed, client-side, JavaScript framework that makes building rich web applications easy.

54 lines (53 loc) 1.87 kB
/*! * CanJS - 2.3.34 * http://canjs.com/ * Copyright (c) 2018 Bitovi * Mon, 30 Apr 2018 20:56:51 GMT * Licensed MIT */ /*can@2.3.34#construct/proxy/proxy*/ define([ 'can/util/library', 'can/construct' ], function (can, Construct) { var isFunction = can.isFunction, isArray = can.isArray, makeArray = can.makeArray, proxy = function (funcs) { var args = makeArray(arguments), self; funcs = args.shift(); if (!isArray(funcs)) { funcs = [funcs]; } self = this; for (var i = 0; i < funcs.length; i++) { if (typeof funcs[i] === 'string' && !isFunction(this[funcs[i]])) { throw new Error('class.js ' + (this.fullName || this.Class.fullName) + ' does not have a ' + funcs[i] + 'method!'); } } return function class_cb() { var cur = args.concat(makeArray(arguments)), isString, length = funcs.length, f = 0, func; for (; f < length; f++) { func = funcs[f]; if (!func) { continue; } isString = typeof func === 'string'; cur = (isString ? self[func] : func).apply(self, cur || []); if (f < length - 1) { cur = !isArray(cur) || cur._use_call ? [cur] : cur; } } return cur; }; }; can.Construct.proxy = can.Construct.prototype.proxy = proxy; var correctedClasses = [ can.Map, can.Control, can.Model ], i = 0; for (; i < correctedClasses.length; i++) { if (correctedClasses[i]) { correctedClasses[i].proxy = proxy; } } return can; });