angular2
Version:
Angular 2 - a web framework for modern web apps
1 lines • 11.6 kB
Source Map (JSON)
{"version":3,"sources":["switch.js"],"names":[],"mappings":"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","file":"angular2/src/directives/switch.es6","sourcesContent":["import {Decorator, Viewport} from 'angular2/src/core/annotations/annotations';\nimport {ViewContainer} from 'angular2/src/core/compiler/view_container';\nimport {isPresent, isBlank, normalizeBlank} from 'angular2/src/facade/lang';\nimport {ListWrapper, List, MapWrapper, Map} from 'angular2/src/facade/collection';\nimport {Parent} from 'angular2/src/core/annotations/visibility';\n\n/**\n * The `Switch` directive is used to conditionally swap DOM structure on your template based on a\n * scope expression.\n * Elements within `Switch` but without `SwitchWhen` or `SwitchDefault` directives will be\n * preserved at the location as specified in the template.\n *\n * `Switch` simply chooses nested elements and makes them visible based on which element matches\n * the value obtained from the evaluated expression. In other words, you define a container element\n * (where you place the directive), place an expression on the **`[switch]=\"...\"` attribute**),\n * define any inner elements inside of the directive and place a `[switch-when]` attribute per\n * element.\n * The when attribute is used to inform Switch which element to display when the expression is\n * evaluated. If a matching expression is not found via a when attribute then an element with the\n * default attribute is displayed.\n *\n * # Example:\n *\n * ```\n * <ANY [switch]=\"expression\">\n * <template [switch-when]=\"whenExpression1\">...</template>\n * <template [switch-when]=\"whenExpression1\">...</template>\n * <template [switch-default]>...</template>\n * </ANY>\n * ```\n *\n * @exportedAs angular2/directives\n */\n@Decorator({\n selector: '[switch]',\n properties: {\n 'value': 'switch'\n }\n})\nexport class Switch {\n _switchValue: any;\n _useDefault: boolean;\n _valueViewContainers: Map;\n _activeViewContainers: List<ViewContainer>;\n\n constructor() {\n this._valueViewContainers = MapWrapper.create();\n this._activeViewContainers = ListWrapper.create();\n this._useDefault = false;\n }\n\n set value(value) {\n // Empty the currently active ViewContainers\n this._emptyAllActiveViewContainers();\n\n // Add the ViewContainers matching the value (with a fallback to default)\n this._useDefault = false;\n var containers = MapWrapper.get(this._valueViewContainers, value);\n if (isBlank(containers)) {\n this._useDefault = true;\n containers = normalizeBlank(MapWrapper.get(this._valueViewContainers, _whenDefault));\n }\n this._activateViewContainers(containers);\n\n this._switchValue = value;\n }\n\n _onWhenValueChanged(oldWhen, newWhen, viewContainer: ViewContainer) {\n this._deregisterViewContainer(oldWhen, viewContainer);\n this._registerViewContainer(newWhen, viewContainer);\n\n if (oldWhen === this._switchValue) {\n viewContainer.remove();\n ListWrapper.remove(this._activeViewContainers, viewContainer);\n } else if (newWhen === this._switchValue) {\n if (this._useDefault) {\n this._useDefault = false;\n this._emptyAllActiveViewContainers();\n }\n viewContainer.create();\n ListWrapper.push(this._activeViewContainers, viewContainer);\n }\n\n // Switch to default when there is no more active ViewContainers\n if (this._activeViewContainers.length === 0 && !this._useDefault) {\n this._useDefault = true;\n this._activateViewContainers(MapWrapper.get(this._valueViewContainers, _whenDefault));\n }\n }\n\n _emptyAllActiveViewContainers() {\n var activeContainers = this._activeViewContainers;\n for (var i = 0; i < activeContainers.length; i++) {\n activeContainers[i].remove();\n }\n this._activeViewContainers = ListWrapper.create();\n }\n\n _activateViewContainers(containers: List<ViewContainer>) {\n // TODO(vicb): assert(this._activeViewContainers.length === 0);\n if (isPresent(containers)) {\n for (var i = 0; i < containers.length; i++) {\n containers[i].create();\n }\n this._activeViewContainers = containers;\n }\n }\n\n _registerViewContainer(value, container: ViewContainer) {\n var containers = MapWrapper.get(this._valueViewContainers, value);\n if (isBlank(containers)) {\n containers = ListWrapper.create();\n MapWrapper.set(this._valueViewContainers, value, containers);\n }\n ListWrapper.push(containers, container);\n }\n\n _deregisterViewContainer(value, container: ViewContainer) {\n // `_whenDefault` is used a marker for non-registered whens\n if (value == _whenDefault) return;\n var containers = MapWrapper.get(this._valueViewContainers, value);\n if (containers.length == 1) {\n MapWrapper.delete(this._valueViewContainers, value);\n } else {\n ListWrapper.remove(containers, container);\n }\n }\n}\n\n/**\n * Defines a case statement as an expression.\n *\n * If multiple `SwitchWhen` match the `Switch` value, all of them are displayed.\n *\n * Example:\n *\n * ```\n * // match against a context variable\n * <template [switch-when]=\"contextVariable\">...</template>\n *\n * // match against a constant string\n * <template [switch-when]=\"'stringValue'\">...</template>\n * ```\n *\n * @exportedAs angular2/directives\n */\n@Viewport({\n selector: '[switch-when]',\n properties: {\n 'when' : 'switch-when'\n }\n})\nexport class SwitchWhen {\n _value: any;\n _switch: Switch;\n _viewContainer: ViewContainer;\n\n constructor(viewContainer: ViewContainer, @Parent() sswitch: Switch) {\n // `_whenDefault` is used as a marker for a not yet initialized value\n this._value = _whenDefault;\n this._switch = sswitch;\n this._viewContainer = viewContainer;\n }\n\n set when(value) {\n this._switch._onWhenValueChanged(this._value, value, this._viewContainer);\n this._value = value;\n }\n}\n\n\n/**\n * Defines a default case statement.\n *\n * Default case statements are displayed when no `SwitchWhen` match the `switch` value.\n *\n * Example:\n *\n * ```\n * <template [switch-default]>...</template>\n * ```\n *\n * @exportedAs angular2/directives\n */\n@Viewport({\n selector: '[switch-default]'\n})\nexport class SwitchDefault {\n constructor(viewContainer: ViewContainer, @Parent() sswitch: Switch) {\n sswitch._registerViewContainer(_whenDefault, viewContainer);\n }\n}\n\nvar _whenDefault = new Object();\n"]}