{"version":3,"names":["FrameBasedActiveExpression","__SystemJSRewritingHack","FRAME_BASED_AEXPRS","checkLoop","aexpr","func","args","__unload__","pause","_export","setters","_activeExpression","BaseActiveExpression","_activeExpressionTickingJs","check","setExpressionOptionsForConventionStrategies","_utils","PausableLoop","execute","_recorder_","_src_client_reactive_active_expression_convention_active_expression_frame_based_js","Object","defineProperty","get","set","thisIsVererySecretVariableName","enumerable","configurable","constructor","meta","strategy","enabled","new","target","addToRegistry","onChange","result","_isDisposed","add","ensureRunning","offChange","hasCallbacks","revoke","dispose","delete","size","setExpression","params","Set"],"sources":["active-expression-frame-based.js"],"sourcesContent":["import { BaseActiveExpression } from 'active-expression';\nimport { check, setExpressionOptionsForConventionStrategies } from \"./active-expression-ticking.js\";\nimport { PausableLoop } from 'utils';\n\nexport class FrameBasedActiveExpression extends BaseActiveExpression {\n  constructor(func, ...args) {\n    super(func, ...args);\n    this.meta({ strategy: 'Frame-based' });\n\n    // needed for check function for aexpr-ticking\n    this.enabled = true;\n\n    if(new.target === FrameBasedActiveExpression) {\n      this.addToRegistry();\n    }\n  }\n\n  onChange(...args) {\n    const result = super.onChange(...args);\n\n    if(!this._isDisposed) {\n      FRAME_BASED_AEXPRS.add(this);\n      checkLoop.ensureRunning();\n    }\n    \n    return result;\n  }\n\n  offChange(...args) {\n    const result = super.offChange(...args);\n\n    if(!this.hasCallbacks()) {\n      this.revoke();\n    }\n    \n    return result;\n  }\n\n  dispose(...args) {\n    const result = super.dispose(...args);\n    this.revoke();\n    \n    return result;\n  }\n\n  // #TODO: unused!\n  revoke() {\n    FRAME_BASED_AEXPRS.delete(this);\n    if(FRAME_BASED_AEXPRS.size === 0) {\n      checkLoop.pause();\n    }\n  }\n\n  /** the parameter `checkImmediately` is by default false for convention strategies */\n  setExpression(...params) {\n    return super.setExpression(...setExpressionOptionsForConventionStrategies(...params))\n  }\n\n}\n\nexport function aexpr(func, ...args) {\n  return new FrameBasedActiveExpression(func, ...args);\n}\n\nconst FRAME_BASED_AEXPRS = new Set();\n\n// update Active Expressions once per frame\nconst checkLoop = new PausableLoop(() => check(FRAME_BASED_AEXPRS));\n\nexport function __unload__() {\n  checkLoop.pause();\n}\n"],"mappings":"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"}