apply.transform.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import { errorTransform } from './utils/errorTransform.js';
  2. import { factory } from '../../utils/factory.js';
  3. import { createApply } from '../../function/matrix/apply.js';
  4. import { isBigNumber, isNumber } from '../../utils/is.js';
  5. var name = 'apply';
  6. var dependencies = ['typed', 'isInteger'];
  7. /**
  8. * Attach a transform function to math.apply
  9. * Adds a property transform containing the transform function.
  10. *
  11. * This transform changed the last `dim` parameter of function apply
  12. * from one-based to zero based
  13. */
  14. export var createApplyTransform = /* #__PURE__ */factory(name, dependencies, _ref => {
  15. var {
  16. typed,
  17. isInteger
  18. } = _ref;
  19. var apply = createApply({
  20. typed,
  21. isInteger
  22. });
  23. // @see: comment of concat itself
  24. return typed('apply', {
  25. '...any': function any(args) {
  26. // change dim from one-based to zero-based
  27. var dim = args[1];
  28. if (isNumber(dim)) {
  29. args[1] = dim - 1;
  30. } else if (isBigNumber(dim)) {
  31. args[1] = dim.minus(1);
  32. }
  33. try {
  34. return apply.apply(null, args);
  35. } catch (err) {
  36. throw errorTransform(err);
  37. }
  38. }
  39. });
  40. }, {
  41. isTransformFunction: true
  42. });