computed.js 757 B

123456789101112131415161718192021
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.computed = void 0;
  4. const tracker_1 = require("./tracker");
  5. const system_1 = require("./system");
  6. const dep_1 = require("./dep");
  7. function computed(getter) {
  8. let oldValue;
  9. const tracker = new tracker_1.Tracker(() => (0, system_1.trigger)(dep, 1 /* DirtyLevels.ComputedValueMaybeDirty */));
  10. const fn = () => {
  11. (0, system_1.track)(dep);
  12. if (tracker.dirty
  13. && !Object.is(oldValue, oldValue = tracker.track(() => getter(oldValue)))) {
  14. (0, system_1.trigger)(dep, 2 /* DirtyLevels.ComputedValueDirty */);
  15. }
  16. return oldValue;
  17. };
  18. const dep = new dep_1.Dep(fn);
  19. return fn;
  20. }
  21. exports.computed = computed;