From d24439479729ca005062142c97d0ad84fa4f6bee Mon Sep 17 00:00:00 2001 From: Gavin Joyce Date: Sat, 7 Jan 2017 19:59:30 +0000 Subject: [PATCH] [BUGFIX beta] refactor _pushToDebugStack --- .../lib/syntax/abstract-manager.js | 19 +++++++++++++++++++ .../lib/syntax/curly-component.js | 10 ++-------- packages/ember-glimmer/lib/syntax/mount.js | 13 ++++--------- packages/ember-glimmer/lib/syntax/outlet.js | 10 ++-------- packages/ember-glimmer/lib/syntax/render.js | 8 ++------ 5 files changed, 29 insertions(+), 31 deletions(-) create mode 100644 packages/ember-glimmer/lib/syntax/abstract-manager.js diff --git a/packages/ember-glimmer/lib/syntax/abstract-manager.js b/packages/ember-glimmer/lib/syntax/abstract-manager.js new file mode 100644 index 00000000000..56c1d4872bd --- /dev/null +++ b/packages/ember-glimmer/lib/syntax/abstract-manager.js @@ -0,0 +1,19 @@ +import { runInDebug } from 'ember-metal'; + +class AbstractManager { + +} + +runInDebug(() => { + AbstractManager.prototype._pushToDebugStack = function(name, environment) { + this.debugStack = environment.debugStack; + this.debugStack.push(name); + }; + + AbstractManager.prototype._pushEngineToDebugStack = function(name, environment) { + this.debugStack = environment.debugStack; + this.debugStack.pushEngine(name); + }; +}); + +export default AbstractManager; diff --git a/packages/ember-glimmer/lib/syntax/curly-component.js b/packages/ember-glimmer/lib/syntax/curly-component.js index f94861bb564..b2b281d24a6 100644 --- a/packages/ember-glimmer/lib/syntax/curly-component.js +++ b/packages/ember-glimmer/lib/syntax/curly-component.js @@ -30,6 +30,7 @@ import { ComponentArgs } from '../utils/process-args'; import { privatize as P } from 'container'; +import AbstractManager from './abstract-manager'; const DEFAULT_LAYOUT = P`template:components/-default`; @@ -176,7 +177,7 @@ function rerenderInstrumentDetails(component) { return component.instrumentDetails({ initialRender: false }); } -class CurlyComponentManager { +class CurlyComponentManager extends AbstractManager { prepareArgs(definition, args) { if (definition.ComponentClass) { validatePositionalParameters(args.named, args.positional.values, definition.ComponentClass.class.positionalParams); @@ -370,13 +371,6 @@ class CurlyComponentManager { } } -runInDebug(() => { - CurlyComponentManager.prototype._pushToDebugStack = function(name, environment) { - this.debugStack = environment.debugStack; - this.debugStack.push(name); - }; -}); - const MANAGER = new CurlyComponentManager(); class TopComponentManager extends CurlyComponentManager { diff --git a/packages/ember-glimmer/lib/syntax/mount.js b/packages/ember-glimmer/lib/syntax/mount.js index 5ac25077d43..611599e80ce 100644 --- a/packages/ember-glimmer/lib/syntax/mount.js +++ b/packages/ember-glimmer/lib/syntax/mount.js @@ -13,6 +13,8 @@ import { RootReference } from '../utils/references'; import { generateControllerFactory } from 'ember-routing'; import { OutletLayoutCompiler } from './outlet'; import { FACTORY_FOR } from 'container'; +import AbstractManager from './abstract-manager'; + /** The `{{mount}}` helper lets you embed a routeless engine in a template. Mounting an engine will cause an instance to be booted and its `application` @@ -68,13 +70,13 @@ export class MountSyntax extends StatementSyntax { } } -class MountManager { +class MountManager extends AbstractManager { prepareArgs(definition, args) { return args; } create(environment, { name, env }, args, dynamicScope) { - runInDebug(() => this._pushToDebugStack(`engine:${name}`, env)); + runInDebug(() => this._pushEngineToDebugStack(`engine:${name}`, env)); dynamicScope.outletState = UNDEFINED_REFERENCE; @@ -116,13 +118,6 @@ class MountManager { didUpdate(state) {} } -runInDebug(() => { - MountManager.prototype._pushToDebugStack = function(name, environment) { - this.debugStack = environment.debugStack; - this.debugStack.pushEngine(name); - }; -}); - const MOUNT_MANAGER = new MountManager(); class MountDefinition extends ComponentDefinition { diff --git a/packages/ember-glimmer/lib/syntax/outlet.js b/packages/ember-glimmer/lib/syntax/outlet.js index 25d677745d5..02883c4b7ef 100644 --- a/packages/ember-glimmer/lib/syntax/outlet.js +++ b/packages/ember-glimmer/lib/syntax/outlet.js @@ -15,6 +15,7 @@ import { ConstReference, combine } from 'glimmer-reference'; +import AbstractManager from './abstract-manager'; function outletComponentFor(vm) { let { outletState } = vm.dynamicScope(); @@ -174,7 +175,7 @@ class StateBucket { } } -class OutletComponentManager { +class OutletComponentManager extends AbstractManager { prepareArgs(definition, args) { return args; } @@ -216,13 +217,6 @@ class OutletComponentManager { didUpdate(state) {} } -runInDebug(() => { - OutletComponentManager.prototype._pushToDebugStack = function(name, environment) { - this.debugStack = environment.debugStack; - this.debugStack.push(name); - }; -}); - const MANAGER = new OutletComponentManager(); class TopLevelOutletComponentManager extends OutletComponentManager { diff --git a/packages/ember-glimmer/lib/syntax/render.js b/packages/ember-glimmer/lib/syntax/render.js index a26b8d7bf47..e647e4e4717 100644 --- a/packages/ember-glimmer/lib/syntax/render.js +++ b/packages/ember-glimmer/lib/syntax/render.js @@ -13,6 +13,7 @@ import { RootReference } from '../utils/references'; import { generateController, generateControllerFactory } from 'ember-routing'; import { OutletLayoutCompiler } from './outlet'; import { FACTORY_FOR } from 'container'; +import AbstractManager from './abstract-manager'; function makeComponentDefinition(vm) { let env = vm.env; @@ -137,7 +138,7 @@ export class RenderSyntax extends StatementSyntax { } } -class AbstractRenderManager { +class AbstractRenderManager extends AbstractManager { prepareArgs(definition, args) { return args; } @@ -172,11 +173,6 @@ runInDebug(() => { AbstractRenderManager.prototype.didRenderLayout = function() { this.debugStack.pop(); }; - - AbstractRenderManager.prototype._pushToDebugStack = function(name, environment) { - this.debugStack = environment.debugStack; - this.debugStack.push(name); - }; }); class SingletonRenderManager extends AbstractRenderManager {