{"version":3,"sources":["webpack://common/webpack/universalModuleDefinition","webpack://common/webpack/bootstrap","webpack://common/./src/main/typescript/animations/coSlide.ts","webpack://common/./src/main/typescript/common_module.ts","webpack://common/./src/main/typescript/common_validation_module.ts","webpack://common/./src/main/typescript/common_validation_semantic_module.ts","webpack://common/./src/main/typescript/common_validation_service_module.ts","webpack://common/./src/main/typescript/debugmodel/DebugUiToggleService.ts","webpack://common/./src/main/typescript/debugmodel/DebugUiToggleType.ts","webpack://common/./src/main/typescript/debugmodel/DebugUiToggleValue.ts","webpack://common/./src/main/typescript/debugmodel/IDebugUiToggleService.ts","webpack://common/./src/main/typescript/debugmodel/debugUi/DebugUiController.ts","webpack://common/./src/main/typescript/debugmodel/debugUi/coDebugUi.ts","webpack://common/./src/main/typescript/debugmodel/debugUi/coDebugUiTemplate.html","webpack://common/./src/main/typescript/debugmodel/debugUiElement/DebugUiElementController.ts","webpack://common/./src/main/typescript/debugmodel/debugUiElement/coDebugUiElement.ts","webpack://common/./src/main/typescript/debugmodel/debugUiElement/coDebugUiElementTemplate.html","webpack://common/./src/main/typescript/decorators/DebugToggle.ts","webpack://common/./src/main/typescript/decorators/Injectables.ts","webpack://common/./src/main/typescript/decorators/ValueMetaInfo.ts","webpack://common/./src/main/typescript/decorators/ValueMetaProperty.ts","webpack://common/./src/main/typescript/directive/adaptiveIf/coAdaptiveIf.ts","webpack://common/./src/main/typescript/directive/affix/coAffix.ts","webpack://common/./src/main/typescript/directive/callAction/coCallAction.ts","webpack://common/./src/main/typescript/directive/clickPreventDefault/coClickPreventDefault.ts","webpack://common/./src/main/typescript/directive/content/coResolveContent.ts","webpack://common/./src/main/typescript/directive/content/coResolveContentTemplate.html","webpack://common/./src/main/typescript/directive/csiApp/CsiAppController.ts","webpack://common/./src/main/typescript/directive/csiApp/coCsiApp.ts","webpack://common/./src/main/typescript/directive/draggable/coDraggable.ts","webpack://common/./src/main/typescript/directive/feedback/feedbackPanel.ts","webpack://common/./src/main/typescript/directive/feedback/feedbackPanelTemplate.html","webpack://common/./src/main/typescript/directive/floatLabel/floatLabel.ts","webpack://common/./src/main/typescript/directive/includeHtml/coIncludeHtml.ts","webpack://common/./src/main/typescript/directive/initializeExternalContent/coInitializeExternalContent.ts","webpack://common/./src/main/typescript/directive/loader/coLoader.ts","webpack://common/./src/main/typescript/directive/modalDialog/coModalDialog.ts","webpack://common/./src/main/typescript/directive/modalDialog/coModalDialogTemplate.html","webpack://common/./src/main/typescript/directive/modalInfo/coModalInfo.ts","webpack://common/./src/main/typescript/directive/modalInfo/coModalInfoTemplate.html","webpack://common/./src/main/typescript/directive/postForm/coPostForm.ts","webpack://common/./src/main/typescript/directive/removeLowerAttributeDirectives/coRemoveLowerAttributeDirectives.ts","webpack://common/./src/main/typescript/directive/scrollTo/coScrollTo.ts","webpack://common/./src/main/typescript/directive/scrollTo/coScrollToTop.ts","webpack://common/./src/main/typescript/directive/seo/coSeoHide.ts","webpack://common/./src/main/typescript/directive/seo/coSeoHref.ts","webpack://common/./src/main/typescript/directive/tooltip/coTooltip.ts","webpack://common/./src/main/typescript/directive/tracking/TrackingController.ts","webpack://common/./src/main/typescript/directive/tracking/coTrackingId.ts","webpack://common/./src/main/typescript/directive/trackingAttributes/TrackingProductLineController.ts","webpack://common/./src/main/typescript/directive/trackingAttributes/coTrackingAttributes.ts","webpack://common/./src/main/typescript/directive/trackingAttributes/coTrackingAttributesCsi.ts","webpack://common/./src/main/typescript/directive/trackingAttributes/coTrackingProductLines.ts","webpack://common/./src/main/typescript/directive/uppercase/coUppercase.ts","webpack://common/./src/main/typescript/domain/Call.ts","webpack://common/./src/main/typescript/domain/Content.ts","webpack://common/./src/main/typescript/domain/DayOfWeekType.ts","webpack://common/./src/main/typescript/domain/GenericRequestError.ts","webpack://common/./src/main/typescript/domain/Html.ts","webpack://common/./src/main/typescript/domain/Link.ts","webpack://common/./src/main/typescript/domain/MetaInfo.ts","webpack://common/./src/main/typescript/domain/PiranhaLoginFormDataValue.ts","webpack://common/./src/main/typescript/domain/Trackable.ts","webpack://common/./src/main/typescript/domain/TrackingInfoValue.ts","webpack://common/./src/main/typescript/domain/TrackingProductLine.ts","webpack://common/./src/main/typescript/domain/Url.ts","webpack://common/./src/main/typescript/filter/DisplayMoney.ts","webpack://common/./src/main/typescript/filter/coCentsFilter.ts","webpack://common/./src/main/typescript/filter/coEuroFilter.ts","webpack://common/./src/main/typescript/filter/coPriceFilter.ts","webpack://common/./src/main/typescript/filter/coUnsafeHtmlFilter.ts","webpack://common/./src/main/typescript/global/coNg.ts","webpack://common/./src/main/typescript/global/snapshot.ts","webpack://common/./src/main/typescript/global/tracking.ts","webpack://common/./src/main/typescript/index.ts","webpack://common/./src/main/typescript/interceptors/HeaderInterceptor.ts","webpack://common/./src/main/typescript/service/AdaptiveService.ts","webpack://common/./src/main/typescript/service/BusyService.ts","webpack://common/./src/main/typescript/service/CallService.ts","webpack://common/./src/main/typescript/service/ContentService.ts","webpack://common/./src/main/typescript/service/DebugInfoService.ts","webpack://common/./src/main/typescript/service/EventService.ts","webpack://common/./src/main/typescript/service/ExternalService.ts","webpack://common/./src/main/typescript/service/FeedbackService.ts","webpack://common/./src/main/typescript/service/FlowIdService.ts","webpack://common/./src/main/typescript/service/IAdaptiveService.ts","webpack://common/./src/main/typescript/service/IBusyService.ts","webpack://common/./src/main/typescript/service/ICallService.ts","webpack://common/./src/main/typescript/service/IContentService.ts","webpack://common/./src/main/typescript/service/IDebugInfoService.ts","webpack://common/./src/main/typescript/service/IEventService.ts","webpack://common/./src/main/typescript/service/IExternalService.ts","webpack://common/./src/main/typescript/service/IFeedbackService.ts","webpack://common/./src/main/typescript/service/IFlowIdService.ts","webpack://common/./src/main/typescript/service/IMappingService.ts","webpack://common/./src/main/typescript/service/IPageValueProvider.ts","webpack://common/./src/main/typescript/service/IRenderModeService.ts","webpack://common/./src/main/typescript/service/ITrackingAttributesService.ts","webpack://common/./src/main/typescript/service/ITrackingService.ts","webpack://common/./src/main/typescript/service/LoggerService.ts","webpack://common/./src/main/typescript/service/MappingService.ts","webpack://common/./src/main/typescript/service/MockSettingsService.ts","webpack://common/./src/main/typescript/service/PageValueProvider.ts","webpack://common/./src/main/typescript/service/PostURLService.ts","webpack://common/./src/main/typescript/service/RelativLocationService.ts","webpack://common/./src/main/typescript/service/RenderModeService.ts","webpack://common/./src/main/typescript/service/SnapshotService.ts","webpack://common/./src/main/typescript/service/TrackingAttributesService.ts","webpack://common/./src/main/typescript/service/TrackingService.ts","webpack://common/./src/main/typescript/service/Utils.ts","webpack://common/./src/main/typescript/validation/AsyncValidationResult.ts","webpack://common/./src/main/typescript/validation/FieldConfiguration.ts","webpack://common/./src/main/typescript/validation/IValidationRepository.ts","webpack://common/./src/main/typescript/validation/IValidationRepositoryProvider.ts","webpack://common/./src/main/typescript/validation/ValidationRepository.ts","webpack://common/./src/main/typescript/validation/ValidationRepositoryProvider.ts","webpack://common/./src/main/typescript/validation/ValidationStatus.ts","webpack://common/./src/main/typescript/validation/constraints/AcceptanceConstraint.ts","webpack://common/./src/main/typescript/validation/constraints/CallConstraint.ts","webpack://common/./src/main/typescript/validation/constraints/ClientsideFieldEqualityConstraint.ts","webpack://common/./src/main/typescript/validation/constraints/ConditionalConstraint.ts","webpack://common/./src/main/typescript/validation/constraints/DateDaysOfWeekConstraint.ts","webpack://common/./src/main/typescript/validation/constraints/DateExcludedDatesConstraint.ts","webpack://common/./src/main/typescript/validation/constraints/DateRangeConstraint.ts","webpack://common/./src/main/typescript/validation/constraints/EmailConstraint.ts","webpack://common/./src/main/typescript/validation/constraints/IConstraint.ts","webpack://common/./src/main/typescript/validation/constraints/InvisibleFieldMappedConstraint.ts","webpack://common/./src/main/typescript/validation/constraints/NameConstraint.ts","webpack://common/./src/main/typescript/validation/constraints/NumberRangeConstraint.ts","webpack://common/./src/main/typescript/validation/constraints/NumericConstraint.ts","webpack://common/./src/main/typescript/validation/constraints/PreventSpecialCharAddressConstraint.ts","webpack://common/./src/main/typescript/validation/constraints/PreventSpecialCharConstraint.ts","webpack://common/./src/main/typescript/validation/constraints/PreventSpecialCharNameConstraint.ts","webpack://common/./src/main/typescript/validation/constraints/RegExpConstraint.ts","webpack://common/./src/main/typescript/validation/constraints/RequiredConstraint.ts","webpack://common/./src/main/typescript/validation/constraints/StringLengthConstraint.ts","webpack://common/./src/main/typescript/validation/constraints/ValidDateConstraint.ts","webpack://common/./src/main/typescript/validation/directive/coField/FieldController.ts","webpack://common/./src/main/typescript/validation/directive/coField/coField.ts","webpack://common/./src/main/typescript/validation/directive/coField/coFieldInput.ts","webpack://common/./src/main/typescript/validation/directive/coField/coFieldInputSemantic.ts","webpack://common/./src/main/typescript/validation/directive/coField/coFieldMessage.ts","webpack://common/./src/main/typescript/validation/directive/coField/coFieldMessageSemantic.ts","webpack://common/./src/main/typescript/validation/directive/coField/coFieldPopover.ts","webpack://common/./src/main/typescript/validation/directive/coField/coFieldSemantic.ts","webpack://common/external \"angular\"","webpack://common/external {\"commonjs\":\"jquery\",\"commonjs2\":\"jquery\",\"amd\":\"jquery\",\"root\":\"jQuery\"}","webpack://common/external {\"root\":\"Reflect\",\"commonjs\":\"reflect-metadata\",\"commonjs2\":\"reflect-metadata\",\"amd\":\"reflect-metadata\"}","webpack://common/external {\"root\":\"_\",\"commonjs\":\"underscore\",\"commonjs2\":\"underscore\",\"amd\":\"underscore\"}"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"), require(\"reflect-metadata\"), require(\"underscore\"), require(\"jquery\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"angular\", \"reflect-metadata\", \"underscore\", \"jquery\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"common\"] = factory(require(\"angular\"), require(\"reflect-metadata\"), require(\"underscore\"), require(\"jquery\"));\n\telse\n\t\troot[\"common\"] = factory(root[\"angular\"], root[\"Reflect\"], root[\"_\"], root[\"jQuery\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE_angular__, __WEBPACK_EXTERNAL_MODULE_reflect_metadata__, __WEBPACK_EXTERNAL_MODULE_underscore__, __WEBPACK_EXTERNAL_MODULE_jquery__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","import * as jQuery from \"jquery\";\n\nexport class CoSlide {\n\n    enter(element, doneFn) {\n        element.finish();\n        // initial \"instant\" slideUp needed since the element is inserted via ng-if\n        element.slideUp(0, () => {\n            element.slideDown(350, doneFn);\n        });\n    }\n\n    leave(element, doneFn) {\n        element.finish();\n        jQuery(element).slideUp(350, doneFn);\n    }\n}\n","import {enumMetaInfo, valueMetaInfo} from './domain/MetaInfo';\nimport {classToFactory} from './global/coNg';\nimport {tracking} from './global/tracking';\nimport {mappingServiceProvider} from './service/MappingService';\nimport {createUtils, IUtilsService} from './service/Utils';\nimport {createLoggerService} from './service/LoggerService';\nimport {PostUrlService} from './service/PostURLService';\nimport {SnapshotService} from './service/SnapshotService';\nimport {FlowIdService} from './service/FlowIdService';\nimport {RenderModeService} from './service/RenderModeService';\nimport {CallService} from './service/CallService';\nimport {ContentService} from './service/ContentService';\nimport {FeedbackService} from './service/FeedbackService';\nimport {BusyService} from './service/BusyService';\nimport {DebugInfoService} from './service/DebugInfoService';\nimport {IDebugInfoService} from './service/IDebugInfoService';\nimport {AdaptiveService} from './service/AdaptiveService';\nimport {RelativeLocationService} from './service/RelativLocationService';\nimport {PageValueProvider} from './service/PageValueProvider';\nimport {IPageValueProvider} from './service/IPageValueProvider';\nimport {TrackingService} from './service/TrackingService';\nimport {IMappingServiceProvider} from './service/IMappingService';\nimport {IValidationRepositoryProvider} from './validation/IValidationRepositoryProvider';\nimport {coCentsFilter} from './filter/coCentsFilter';\nimport {coEuroFilter} from './filter/coEuroFilter';\nimport {coPriceFilter} from './filter/coPriceFilter';\nimport {coUnsafeHtmlFilter} from './filter/coUnsafeHtmlFilter';\nimport {coDraggable} from './directive/draggable/coDraggable';\nimport {coModalInfo} from './directive/modalInfo/coModalInfo';\nimport {coModalDialog} from './directive/modalDialog/coModalDialog';\nimport {coLoader} from './directive/loader/coLoader';\nimport {coTooltip} from './directive/tooltip/coTooltip';\nimport {coSeoHide} from './directive/seo/coSeoHide';\nimport {coSeoHref} from './directive/seo/coSeoHref';\nimport {coAffix} from './directive/affix/coAffix';\nimport {coIncludeHtml} from './directive/includeHtml/coIncludeHtml';\nimport {coFeedback} from './directive/feedback/feedbackPanel';\nimport {coScrollTo} from './directive/scrollTo/coScrollTo';\nimport {coScrollToTop} from './directive/scrollTo/coScrollToTop';\nimport {coCallAction} from './directive/callAction/coCallAction';\nimport {coResolveContent} from './directive/content/coResolveContent';\nimport {coAdaptiveIf} from './directive/adaptiveIf/coAdaptiveIf';\nimport {coRemoveLowerAttributeDirectives} from './directive/removeLowerAttributeDirectives/coRemoveLowerAttributeDirectives';\nimport {coUppercase} from './directive/uppercase/coUppercase';\nimport {coPostForm} from './directive/postForm/coPostForm';\nimport {coTrackingId} from './directive/tracking/coTrackingId';\nimport {floatLabel} from './directive/floatLabel/floatLabel';\nimport {TrackingController} from './directive/tracking/TrackingController';\nimport {\n    AbstractCall,\n    Call,\n    ConstantCall,\n    DeleteCall,\n    FormSubmitEvent,\n    GetCall,\n    NavigationEvent,\n    PostCall\n} from './domain/Call';\nimport {GenericRequestError} from './domain/GenericRequestError';\nimport {Link} from './domain/Link';\nimport {LazyContent, ResolvedContent} from './domain/Content';\nimport {TrackingInfoValue} from './domain/TrackingInfoValue';\nimport {PiranhaLoginFormDataValue} from './domain/PiranhaLoginFormDataValue';\nimport {FieldConfiguration} from './validation/FieldConfiguration';\nimport {AcceptanceConstraint} from './validation/constraints/AcceptanceConstraint';\nimport {NumericConstraint} from './validation/constraints/NumericConstraint';\nimport {StringLengthConstraint} from './validation/constraints/StringLengthConstraint';\nimport {RequiredConstraint} from './validation/constraints/RequiredConstraint';\nimport {RegExpConstraint} from './validation/constraints/RegExpConstraint';\nimport {PreventSpecialCharConstraint} from './validation/constraints/PreventSpecialCharConstraint';\nimport {NumberRangeConstraint} from './validation/constraints/NumberRangeConstraint';\nimport {DateRangeConstraint} from './validation/constraints/DateRangeConstraint';\nimport {ValidDateConstraint} from './validation/constraints/ValidDateConstraint';\nimport {NameConstraint} from './validation/constraints/NameConstraint';\nimport {EmailConstraint} from './validation/constraints/EmailConstraint';\nimport {ConditionalConstraint} from './validation/constraints/ConditionalConstraint';\nimport {CallConstraint} from './validation/constraints/CallConstraint';\nimport {coField} from './validation/directive/coField/coField';\nimport {coFieldInput} from './validation/directive/coField/coFieldInput';\nimport {coFieldMessage} from './validation/directive/coField/coFieldMessage';\nimport {coFieldPopover} from './validation/directive/coField/coFieldPopover';\nimport {CoSlide} from './animations/coSlide';\nimport {snapshot} from './global/snapshot';\nimport {coClickPreventDefault} from './directive/clickPreventDefault/coClickPreventDefault';\nimport {EventService} from './service/EventService';\nimport {ExternalService} from './service/ExternalService';\nimport {Injectables} from './decorators/Injectables';\nimport {ValueMetaInfo} from './decorators/ValueMetaInfo';\nimport {ValueMetaProperty} from './decorators/ValueMetaProperty';\nimport {DebugToggle} from './decorators/DebugToggle';\nimport {IExternalService} from './service/IExternalService';\nimport {ICallService} from './service/ICallService';\nimport {IDebugUiToggleService} from './debugmodel/IDebugUiToggleService';\nimport {DebugUiToggleService} from './debugmodel/DebugUiToggleService';\nimport {CoDebugUi} from './debugmodel/debugUi/coDebugUi';\nimport {CoDebugUiElement} from './debugmodel/debugUiElement/coDebugUiElement';\nimport {DayOfWeekType} from \"./domain/DayOfWeekType\";\nimport {MockSettingsService} from \"./service/MockSettingsService\";\nimport {HeaderInterceptor} from \"./interceptors/HeaderInterceptor\";\nimport {IAngularStatic} from \"angular\";\nimport * as _ from \"underscore\";\nimport {coCsiApp} from \"./directive/csiApp/coCsiApp\";\nimport {coInitializeExternalContent} from \"./directive/initializeExternalContent/coInitializeExternalContent\";\nimport {coTrackingAttributes} from \"./directive/trackingAttributes/coTrackingAttributes\";\nimport {TrackingAttributesService} from \"./service/TrackingAttributesService\";\nimport {ITrackingAttributesService} from './service/ITrackingAttributesService';\nimport {coTrackingProductLines} from \"./directive/trackingAttributes/coTrackingProductLines\";\nimport {InvisibleFieldMappedConstraint} from './validation/constraints/InvisibleFieldMappedConstraint';\nimport {TrackingProductLine} from \"./domain/TrackingProductLine\";\nimport {coTrackingAttributesCsi} from \"./directive/trackingAttributes/coTrackingAttributesCsi\";\n\n\nexport {snapshot, tracking, classToFactory};\nexport {valueMetaInfo, enumMetaInfo};\nexport {\n    CallService,\n    ConstantCall,\n    DeleteCall,\n    GetCall,\n    PostCall,\n    NavigationEvent,\n    FormSubmitEvent,\n    Call,\n    AbstractCall\n}\nexport {Link}\nexport {\n    AcceptanceConstraint,\n    NumericConstraint,\n    StringLengthConstraint,\n    RequiredConstraint,\n    RegExpConstraint,\n    PreventSpecialCharConstraint,\n    NumberRangeConstraint,\n    DateRangeConstraint,\n    ValidDateConstraint,\n    NameConstraint,\n    EmailConstraint,\n    ConditionalConstraint,\n    CallConstraint,\n    InvisibleFieldMappedConstraint\n}\nexport {\n    coField,\n    coFieldInput,\n    coFieldMessage,\n    coFieldPopover,\n    coModalInfo,\n    coTooltip,\n    coScrollTo,\n    coClickPreventDefault\n}\nexport {GenericRequestError}\nexport {FieldConfiguration}\nexport {createLoggerService, createUtils, IUtilsService}\nexport {floatLabel}\nexport {PageValueProvider, IPageValueProvider}\nexport {coCallAction}\nexport {TrackingService, TrackingInfoValue}\nexport {TrackingAttributesService, ITrackingAttributesService}\nexport {ExternalService, IExternalService}\nexport {Injectables, ValueMetaInfo, ValueMetaProperty, DebugToggle}\nexport {IMappingServiceProvider}\nexport {ICallService}\nexport {IValidationRepositoryProvider}\n\n\nexport function loadModuleCommerceCommon(angular: IAngularStatic) {\n    (<any>angular.module('commerce_common', ['ngAnimate'])\n\n\n    // service provider\n        .provider('mappingService', mappingServiceProvider)\n\n        // service level dependencies\n        .factory('utils', createUtils)\n        .factory('loggerService', createLoggerService)\n        .factory('postUrlService', classToFactory(PostUrlService))\n        .factory('snapshotService', classToFactory(SnapshotService))\n        .factory('flowIdService', classToFactory(FlowIdService))\n        .factory('mockSettingsService', classToFactory(MockSettingsService))\n        .factory('headerInterceptor', classToFactory(HeaderInterceptor))\n        .factory('renderModeService', classToFactory(RenderModeService))\n        .factory(ICallService.injectableName, classToFactory(CallService))\n        .factory('contentService', classToFactory(ContentService))\n        .factory('eventService', classToFactory(EventService))\n        .factory('feedbackService', classToFactory(FeedbackService))\n        .factory('busyService', classToFactory(BusyService))\n        .factory('debugInfoService', classToFactory(DebugInfoService))\n        .factory('adaptiveService', classToFactory(AdaptiveService))\n        .factory(IExternalService.injectableName, classToFactory(ExternalService))\n        .factory('relativeLocation', ['$location', function ($location: ng.ILocationService) {\n            return new RelativeLocationService($location);\n        }])\n        .factory(IPageValueProvider.injectableName, classToFactory(PageValueProvider))\n        .factory('trackingService', classToFactory(TrackingService))\n        .factory('trackingAttributesService', classToFactory(TrackingAttributesService))\n        .factory(IDebugUiToggleService.injectableName, classToFactory(DebugUiToggleService))\n        .filter('coCents', coCentsFilter)\n        .filter('coEuro', coEuroFilter)\n        .filter('coPrice', coPriceFilter)\n        .filter('coUnsafeHtml', coUnsafeHtmlFilter)\n\n        .directive('coDraggable', coDraggable)\n        .directive('coModalInfo', coModalInfo)\n        .directive('coModalDialog', coModalDialog)\n        .directive('coLoader', coLoader)\n        .directive('coTooltip', coTooltip)\n        .directive('coSeoHide', coSeoHide)\n        .directive('coSeoHref', coSeoHref)\n        .directive('coAffix', coAffix)\n        .directive('coIncludeHtml', coIncludeHtml)\n        .directive('coFeedback', coFeedback)\n        .directive('coScrollTo', coScrollTo)\n        .directive('coScrollToTop', coScrollToTop)\n        .directive('coCallAction', coCallAction)\n        .directive('coResolveContent', coResolveContent)\n        .directive('coAdaptiveIf', coAdaptiveIf)\n        .directive('coRemoveLowerAttributeDirectives', coRemoveLowerAttributeDirectives)\n        .directive('coUppercase', coUppercase)\n        .directive('coPostForm', coPostForm)\n        .directive('coTrackingId', coTrackingId)\n        // floatLabel directive should not have the \"co\" prefix, while used to redefine bootstrap data-float-label\n        .directive('floatLabel', floatLabel)\n\n        .directive('coInitializeExternalContent', coInitializeExternalContent)\n        .directive('coTrackingAttributes', coTrackingAttributes)\n        .directive('coTrackingProductLines', coTrackingProductLines)\n        .directive(\"coTrackingAttributesCsi\", coTrackingAttributesCsi)\n\n\n        .directive('coClickPreventDefault', coClickPreventDefault)\n        .directive(\"coCsiApp\", coCsiApp)\n\n\n\n        .controller('TrackingController', <any>TrackingController)\n        .config(['$httpProvider', function ($httpProvider) {\n            $httpProvider.interceptors.push('headerInterceptor');\n        }])\n\n        .component('coDebugUi', new CoDebugUi())\n        .component('coDebugUiElement', new CoDebugUiElement())\n\n        .config([IMappingServiceProvider.injectableName, function (mappingServiceProvider: IMappingServiceProvider) {\n            mappingServiceProvider.addAnnotatedType(ConstantCall);\n            mappingServiceProvider.addAnnotatedType(DeleteCall);\n            mappingServiceProvider.addAnnotatedType(GenericRequestError);\n            mappingServiceProvider.addAnnotatedType(GetCall);\n            mappingServiceProvider.addAnnotatedType(Link);\n            mappingServiceProvider.addAnnotatedType(NavigationEvent);\n            mappingServiceProvider.addAnnotatedType(FormSubmitEvent);\n            mappingServiceProvider.addAnnotatedType(PostCall);\n            mappingServiceProvider.addAnnotatedType(ResolvedContent);\n            mappingServiceProvider.addAnnotatedType(LazyContent);\n            mappingServiceProvider.addAnnotatedType(TrackingInfoValue);\n            mappingServiceProvider.addAnnotatedType(TrackingProductLine);\n            mappingServiceProvider.addAnnotatedType(PiranhaLoginFormDataValue);\n            mappingServiceProvider.addCustomType(\n                'infrastructure:LocalDate',\n                (obj) => _.isDate(obj),\n                (json) => {\n\n                    let date = new Date(json.date);\n                    // date['$$localDate'] = true;\n                    return date\n                },\n                (date: Date) => {\n                    // yes, we we need the outer curly braces to make sure this gets interpreted as an object\n                    var year = date.getFullYear();\n                    var month = date.getMonth() + 1;\n                    var day = date.getDate();\n                    return {date: year + \"-\" + (month < 10 ? \"0\" : \"\") + month + \"-\" + (day < 10 ? \"0\" : \"\") + day}\n                }\n            );\n            mappingServiceProvider.addCustomType(\n                'infrastructure:DayOfWeek',\n                (obj) => obj instanceof DayOfWeekType,\n                (json) => DayOfWeekType.forName(json.name),\n                (dayOfWeek: DayOfWeekType) => dayOfWeek.name\n            )\n        }])\n        .run([IPageValueProvider.injectableName, function (pageValueSource: IPageValueProvider<{}>) {\n            tracking.setupPageValueSource(() => pageValueSource.createPageValue());\n        }])\n        .run(['debugInfoService', function (debugInfoService: IDebugInfoService) {\n            debugInfoService.logDebugInfo();\n        }]))\n        .animation('.co-slide', classToFactory(CoSlide))\n    ;\n}\n\n","import {coFieldMessage} from \"./validation/directive/coField/coFieldMessage\";\nimport {coFieldInput} from \"./validation/directive/coField/coFieldInput\";\nimport {coField} from \"./validation/directive/coField/coField\";\nimport {coFieldPopover} from \"./validation/directive/coField/coFieldPopover\";\n\nexport function loadModuleCommerceCommonValidation(angular) {\n    angular.module('commerce_common_validation', ['commerce_common', 'commerce_common_validation_services'])\n        .directive('coField', coField)\n        .directive('coFieldInput', coFieldInput)\n        .directive('coFieldPopover', coFieldPopover)\n        .directive('coFieldMessage', coFieldMessage)\n    ;\n}\n","import {coFieldMessageSemantic} from \"./validation/directive/coField/coFieldMessageSemantic\";\nimport {coFieldInputSemantic} from \"./validation/directive/coField/coFieldInputSemantic\";\nimport {coFieldSemantic} from \"./validation/directive/coField/coFieldSemantic\";\n\nexport function loadModuleCommerceCommonValidationSemantic(angular) {\n    angular.module('commerce_common_validation_semantic', ['commerce_common', 'commerce_common_validation_services'])\n        .directive('coField', coFieldSemantic)\n        .directive('coFieldInput', coFieldInputSemantic)\n        .directive('coFieldMessage', coFieldMessageSemantic)\n    ;\n}\n","import {AsyncValidationResult} from './validation/AsyncValidationResult';\nimport {ValidationStatus} from './validation/ValidationStatus';\nimport {ConditionalConstraint} from './validation/constraints/ConditionalConstraint';\nimport {EmailConstraint} from './validation/constraints/EmailConstraint';\nimport {NameConstraint} from './validation/constraints/NameConstraint';\nimport {ValidDateConstraint} from './validation/constraints/ValidDateConstraint';\nimport {DateRangeConstraint} from './validation/constraints/DateRangeConstraint';\nimport {NumberRangeConstraint} from './validation/constraints/NumberRangeConstraint';\nimport {PreventSpecialCharNameConstraint} from './validation/constraints/PreventSpecialCharNameConstraint';\nimport {PreventSpecialCharConstraint} from './validation/constraints/PreventSpecialCharConstraint';\nimport {RegExpConstraint} from './validation/constraints/RegExpConstraint';\nimport {RequiredConstraint} from './validation/constraints/RequiredConstraint';\nimport {StringLengthConstraint} from './validation/constraints/StringLengthConstraint';\nimport {NumericConstraint} from './validation/constraints/NumericConstraint';\nimport {AcceptanceConstraint} from './validation/constraints/AcceptanceConstraint';\nimport {FieldConfiguration} from './validation/FieldConfiguration';\nimport {IMappingServiceProvider} from './service/IMappingService';\nimport {CallConstraint} from './validation/constraints/CallConstraint';\nimport {validationRepositoryProvider} from './validation/ValidationRepositoryProvider';\nimport {IValidationRepository} from './validation/IValidationRepository';\nimport {DateExcludedDatesConstraint} from \"./validation/constraints/DateExcludedDatesConstraint\";\nimport {DateDaysOfWeekConstraint} from \"./validation/constraints/DateDaysOfWeekConstraint\";\nimport {PreventSpecialCharAddressConstraint} from \"./validation/constraints/PreventSpecialCharAddressConstraint\";\nimport {ClientsideFieldEqualityConstraint} from \"./validation/constraints/ClientsideFieldEqualityConstraint\";\nimport {InvisibleFieldMappedConstraint} from \"./validation/constraints/InvisibleFieldMappedConstraint\";\n\nexport function loadModuleCommerceCommonValidationService(angular: ng.IAngularStatic) {\n    angular.module('commerce_common_validation_services', ['commerce_common'])\n\n        .provider(IValidationRepository.injectableName, validationRepositoryProvider)\n\n        .config([IMappingServiceProvider.injectableName, function (mappingServiceProvider: IMappingServiceProvider) {\n            mappingServiceProvider.addAnnotatedType(<any>FieldConfiguration);\n            mappingServiceProvider.addAnnotatedType(AcceptanceConstraint);\n            mappingServiceProvider.addAnnotatedType(NumericConstraint);\n            mappingServiceProvider.addAnnotatedType(StringLengthConstraint);\n            mappingServiceProvider.addAnnotatedType(RequiredConstraint);\n            mappingServiceProvider.addAnnotatedType(RegExpConstraint);\n            mappingServiceProvider.addAnnotatedType(PreventSpecialCharConstraint);\n            mappingServiceProvider.addAnnotatedType(PreventSpecialCharNameConstraint);\n            mappingServiceProvider.addAnnotatedType(PreventSpecialCharAddressConstraint);\n            mappingServiceProvider.addAnnotatedType(NumberRangeConstraint);\n            mappingServiceProvider.addAnnotatedType(DateRangeConstraint);\n            mappingServiceProvider.addAnnotatedType(DateExcludedDatesConstraint);\n            mappingServiceProvider.addAnnotatedType(DateDaysOfWeekConstraint);\n            mappingServiceProvider.addAnnotatedType(ValidDateConstraint);\n            mappingServiceProvider.addAnnotatedType(NameConstraint);\n            mappingServiceProvider.addAnnotatedType(EmailConstraint);\n            mappingServiceProvider.addAnnotatedType(ConditionalConstraint);\n            mappingServiceProvider.addAnnotatedType(CallConstraint);\n            mappingServiceProvider.addAnnotatedType(ValidationStatus);\n            mappingServiceProvider.addAnnotatedType(AsyncValidationResult);\n            mappingServiceProvider.addAnnotatedType(ClientsideFieldEqualityConstraint);\n            mappingServiceProvider.addAnnotatedType(InvisibleFieldMappedConstraint);\n        }])\n    ;\n\n}\n\n","import * as _ from \"underscore\";\n\nimport {DebugUiToggleValue} from \"./DebugUiToggleValue\";\nimport {IDebugUiToggleService} from \"./IDebugUiToggleService\";\nimport {\n    deleteDebugUiToggle,\n    featureToggles,\n    featureToggleValues,\n    getDebugUiToggle,\n    setDebugUiToggle\n} from \"../decorators/DebugToggle\";\nimport {createUtils} from \"../service/Utils\";\n\nexport class DebugUiToggleService implements IDebugUiToggleService {\n\n    static $inject: string[] = ['$location', '$window'];\n\n    localStorage: Storage = createUtils().getLocalStorage();\n    private _enabled: boolean;\n\n    defaultValues: { [toggleName: string]: any } = {\n        'BOOLEAN': false,\n        'STRING': 'Luminous Elucidator'\n    };\n\n    constructor(private $location: ng.ILocationService, private $window: ng.IWindowService) {\n    }\n\n    $onInit(): void {\n        // test if 'debugUi' is in the query parameters\n        this._enabled = /debugUi/i.test(this.$window.location.search);\n\n        if (this.enabled) {\n            this.readToggles();\n        }\n    }\n\n    get toggles(): DebugUiToggleValue[] {\n        return featureToggles;\n    }\n\n    get enabled(): boolean {\n        return this._enabled;\n    }\n\n    setActive(toggle: DebugUiToggleValue, active: boolean) {\n        if (!active) {\n            deleteDebugUiToggle(toggle.name);\n        } else {\n            let value = this.defaultValues[toggle.type.name];\n            setDebugUiToggle(toggle.name, value)\n            this.storeToggles();\n        }\n        this.storeToggles();\n    }\n\n    activateAllElements(): void {\n        _.each(this.toggles, (t) => {\n            this.setActive(t, true);\n        });\n    }\n\n    deactivateAllElements(): void {\n        _.each(this.toggles, (t) => {\n            this.setActive(t, false);\n        });\n    }\n\n    allElementsActive(): boolean {\n        return _.filter(this.toggles, (t) => {\n            return !this.isActive(t);\n        }).length == 0;\n    }\n\n    isActive(toggle: DebugUiToggleValue): boolean {\n        return !_.isUndefined(getDebugUiToggle(toggle.name));\n    }\n\n    setValue(toggle: DebugUiToggleValue, value: any) {\n        setDebugUiToggle(toggle.name, value);\n        this.storeToggles();\n    }\n\n    getValue(toggle: DebugUiToggleValue): any {\n        return getDebugUiToggle(toggle.name);\n    }\n\n    private readToggles(): void {\n        let storedToggles: { [featureToggleName: string]: any } = JSON.parse(this.localStorage.getItem('toggles'));\n\n        if (!_.isNull(storedToggles)) {\n            featureToggles\n                .filter(t => !_.isUndefined(t) && !_.isNull(t))\n                .forEach(t => {\n                    featureToggleValues[t.name] = storedToggles[t.name];\n                });\n        }\n\n    }\n\n    private storeToggles(): void {\n        this.localStorage.setItem('toggles', JSON.stringify(featureToggleValues));\n    }\n\n\n}\n","import * as _ from \"underscore\";\n\n\nexport class DebugUiToggleType {\n    private static _values: { [s: string]: DebugUiToggleType; } = {};\n\n    static forName(obj): DebugUiToggleType {\n        argsContract(arguments, 'str');\n        if (obj === null) {\n            return null;\n        }\n        return DebugUiToggleType._values[obj];\n    }\n\n    static values(): DebugUiToggleType[] {\n        return _.values(DebugUiToggleType._values);\n    }\n\n    static BOOLEAN: DebugUiToggleType = new DebugUiToggleType('BOOLEAN');\n    static STRING: DebugUiToggleType = new DebugUiToggleType('STRING');\n\n    constructor(public  name: string) {\n        argsContract(arguments, 'str');\n        DebugUiToggleType._values[name] = this;\n    }\n}\n","import {DebugUiToggleType} from \"./DebugUiToggleType\";\n\nexport class DebugUiToggleValue {\n\n    constructor(public name: string, public type: DebugUiToggleType) {\n    }\n\n}\n","import {DebugUiToggleValue} from \"./DebugUiToggleValue\";\n\nexport interface IDebugUiToggleService {\n    toggles: DebugUiToggleValue[];\n\n    setActive(toggle: DebugUiToggleValue, active: boolean);\n\n    isActive(toggle: DebugUiToggleValue): boolean;\n\n    setValue(toggle: DebugUiToggleValue, value: any);\n\n    getValue(toggle: DebugUiToggleValue): any;\n\n    activateAllElements(): void;\n\n    deactivateAllElements(): void;\n\n    allElementsActive(): boolean;\n\n    enabled: boolean;\n}\n\nexport class IDebugUiToggleService {\n    static injectableName: string = 'debugUiToggleService';\n}\n","import {IDebugUiToggleService} from \"../IDebugUiToggleService\";\nimport {DebugUiToggleValue} from \"../DebugUiToggleValue\";\nimport {Injectables} from \"../../decorators/Injectables\";\nimport {DebugUiToggleType} from \"../DebugUiToggleType\";\n\n@Injectables(IDebugUiToggleService)\nexport class DebugUiController {\n    constructor(private debugUiToggleService: IDebugUiToggleService) {\n    }\n\n    private uiMinimized: boolean;\n\n    get enabled(): boolean {\n        return this.debugUiToggleService.enabled;\n    }\n\n    get toggles(): DebugUiToggleValue[] {\n        return this.debugUiToggleService.toggles;\n    }\n\n    get booleanToggles(): DebugUiToggleValue[] {\n        return this.toggles.filter((t) => {\n            return t.type == DebugUiToggleType.BOOLEAN;\n        })\n    }\n\n    get stringToggles(): DebugUiToggleValue[] {\n        return this.toggles.filter((t) => {\n            return t.type == DebugUiToggleType.STRING;\n        })\n    }\n\n    toggleAllElements(): void {\n        if (this.allElementsActive()) {\n            this.debugUiToggleService.deactivateAllElements();\n        } else {\n            this.debugUiToggleService.activateAllElements();\n        }\n    }\n\n    allElementsActive(): boolean {\n        return this.debugUiToggleService.allElementsActive();\n    }\n\n    isUiMinimized(): boolean {\n        return this.uiMinimized;\n    }\n\n    toggleUiMinimized(): void {\n        this.uiMinimized = !this.uiMinimized;\n    }\n\n\n}","import {DebugUiController} from \"./DebugUiController\";\nimport {IComponentOptions} from \"angular\";\nimport coDebugUiTemplate from \"./coDebugUiTemplate.html\";\n\nexport class CoDebugUi implements IComponentOptions {\n    controller: any = DebugUiController;\n    template: string = coDebugUiTemplate;\n}\n","export default \"<div data-ng-if=\\\"$ctrl.enabled\\\">\\n\\n    <style>\\n        .co-debug-ui {\\n            position: fixed;\\n            width: 100%;\\n            height: 300px;\\n            bottom: 0;\\n            background: white;\\n            padding-left: 20px;\\n            padding-right: 20px;\\n            box-shadow: 0px -10px 60px 0px rgba(0, 0, 0, 0.13);\\n            overflow-y: scroll;\\n            transition: all 0.3s;\\n            z-index: 9999;\\n            max-height: 50vh;\\n        }\\n\\n        .co-debug-ui--minimized {\\n            height: 10px;\\n        }\\n\\n        .co-debug-ui-header {\\n            padding-top: 10px;\\n            padding-bottom: 10px;\\n        }\\n\\n        .co-debug-ui__toggle {\\n            margin-bottom: 10px;\\n            height: 10px;\\n            background: repeating-linear-gradient(\\n                    45deg,\\n                    #606dbc,\\n                    #606dbc 10px,\\n                    #465298 0,\\n                    #465298 20px);\\n            margin-left: -20px;\\n            margin-right: -20px;\\n            cursor: pointer;\\n        }\\n\\n        .co-debug-ui-element {\\n            border-left: 8px solid #EAEAEA;\\n            padding-left: 20px;\\n            display: flex;\\n            flex-direction: row;\\n            margin-bottom: 5px;\\n        }\\n\\n        .co-debug-ui-checkbox {\\n            display: inline-block;\\n        }\\n\\n        .co-debug-ui-element--active {\\n            border-left-color: limegreen;\\n        }\\n\\n        .co-debug-ui-element__state {\\n            width: 250px;\\n        }\\n\\n        .co-debug-ui-element__value {\\n            width: 300px;\\n        }\\n\\n        .co-debug-ui-editor {\\n            display: inline-block;\\n        }\\n    </style>\\n\\n    <div class=\\\"co-debug-ui\\\" data-ng-class=\\\"{'co-debug-ui--minimized': $ctrl.isUiMinimized()}\\\">\\n        <div class=\\\"co-debug-ui__toggle\\\" data-ng-click=\\\"$ctrl.toggleUiMinimized()\\\"></div>\\n        <div class=\\\"co-debug-ui-header\\\">\\n            <p>\\n                <strong>Debug UI</strong> -\\n                <span class=\\\"link link-action\\\"\\n                      data-ng-click=\\\"$ctrl.toggleAllElements()\\\">\\n            <span data-ng-if=\\\"$ctrl.allElementsActive()\\\">\\n                Deactivate all elements\\n            </span>\\n              <span data-ng-if=\\\"!$ctrl.allElementsActive()\\\">\\n                Activate all elements\\n            </span>\\n        </span>\\n            </p>\\n        </div>\\n\\n        <div class=\\\"panel-group section-accordion\\\">\\n            <div class=\\\"panel\\\">\\n                <a data-toggle=\\\"collapse\\\"\\n                   href=\\\"#boolean-toggles\\\">\\n                    Toggle states (boolean)\\n                </a>\\n                <div id=\\\"boolean-toggles\\\" class=\\\"accordion-content collapse in\\\">\\n                    <div class=\\\"article\\\">\\n                        <div data-ng-repeat=\\\"toggle in $ctrl.booleanToggles\\\">\\n                            <co-debug-ui-element co-debug-ui-element-toggle=\\\"toggle\\\"></co-debug-ui-element>\\n                        </div>\\n                    </div>\\n                </div>\\n            </div>\\n\\n            <div class=\\\"panel\\\">\\n                <a data-toggle=\\\"collapse\\\"\\n                   href=\\\"#string-toggles\\\"\\n                   class=\\\"collapsed\\\">\\n                    Modify text\\n                </a>\\n                <div id=\\\"string-toggles\\\" class=\\\"accordion-content collapse\\\">\\n                    <div class=\\\"article\\\">\\n                        <div data-ng-repeat=\\\"toggle in $ctrl.stringToggles\\\">\\n                            <co-debug-ui-element co-debug-ui-element-toggle=\\\"toggle\\\"></co-debug-ui-element>\\n                        </div>\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n</div>\";","import {IDebugUiToggleService} from \"../IDebugUiToggleService\";\nimport {DebugUiToggleValue} from \"../DebugUiToggleValue\";\nimport {Injectables} from \"../../decorators/Injectables\";\n\n@Injectables(IDebugUiToggleService)\nexport class DebugUiElementController {\n\n    public toggle: DebugUiToggleValue;\n\n    constructor(private debugUiToggleService: IDebugUiToggleService) {\n    }\n\n    set active(active: boolean) {\n        this.debugUiToggleService.setActive(this.toggle, active);\n    }\n\n    get active() {\n        return this.debugUiToggleService.isActive(this.toggle);\n    }\n\n    set value(value: any) {\n        this.debugUiToggleService.setValue(this.toggle, value);\n    }\n\n    get value(): any {\n        return this.debugUiToggleService.getValue(this.toggle);\n    }\n\n}\n","import {DebugUiElementController} from \"./DebugUiElementController\";\nimport {IComponentOptions} from \"angular\";\nimport coDebugUiElementTemplate from \"./coDebugUiElementTemplate.html\";\n\nexport class CoDebugUiElement implements IComponentOptions {\n    bindings: any = {\n        toggle: '=coDebugUiElementToggle'\n    };\n    controller: any = DebugUiElementController;\n    template: string = coDebugUiElementTemplate;\n}\n","export default \"<div class=\\\"co-debug-ui-element\\\"\\n     data-ng-class=\\\"{'co-debug-ui-element--active': $ctrl.active }\\\">\\n\\n    <div class=\\\"co-debug-ui-element__state\\\">\\n        <div class=\\\"checkbox co-debug-ui-checkbox\\\">\\n            <input data-ng-model=\\\"$ctrl.active\\\"\\n                   id=\\\"enable_{{$ctrl.toggle.name}}\\\"\\n                   type=\\\"checkbox\\\">\\n            <label for=\\\"enable_{{$ctrl.toggle.name}}\\\">\\n                {{$ctrl.toggle.name}}\\n            </label>\\n        </div>\\n    </div>\\n\\n    <div class=\\\"co-debug-ui-element__value\\\" data-ng-switch=\\\"$ctrl.toggle.type.name\\\">\\n\\n        <span data-ng-switch-when=\\\"BOOLEAN\\\">\\n\\n                    <div class=\\\"checkbox co-debug-ui-checkbox\\\">\\n                        <input id=\\\"checkbox_{{$ctrl.toggle.name}}\\\"\\n                               type=\\\"checkbox\\\"\\n                               data-ng-model=\\\"$ctrl.value\\\">\\n                        <label for=\\\"checkbox_{{$ctrl.toggle.name}}\\\">\\n                        </label>\\n                    </div>\\n                </span>\\n\\n        <span data-ng-switch-when=\\\"STRING\\\">\\n                    <span class=\\\"js-float-label hide-label\\\">\\n                        <span class=\\\"float-label-text\\\"\\n                              data-text=\\\"{{$ctrl.toggle.name}}\\\">\\n                        </span>\\n                        <input type=\\\"text\\\"\\n                               data-ng-model=\\\"$ctrl.value\\\"\\n                               data-float-label=\\\"{{$ctrl.toggle.name}}\\\"\\n                               placeholder=\\\"{{$ctrl.toggle.name}}\\\"\\n                               class=\\\"form-control\\\">\\n                    </span>\\n        </span>\\n    </div>\\n</div>\\n\\n\\n\";","import {DebugUiToggleValue} from \"../debugmodel/DebugUiToggleValue\";\nimport {DebugUiToggleType} from \"../debugmodel/DebugUiToggleType\";\nimport {createLoggerService, ILogger} from \"../service/LoggerService\";\nimport {createUtils} from \"../service/Utils\";\nimport * as _ from \"underscore\";\n\n\nexport var featureToggles: DebugUiToggleValue[] = [];\nexport var featureToggleValues: { [featureToggleName: string]: any } = {};\nvar logger: ILogger = createLoggerService(createUtils()).create('DebugToggle');\nconst types = {\n    'Boolean': DebugUiToggleType.BOOLEAN,\n    'String': DebugUiToggleType.STRING\n}\n\nexport function DebugToggle(metaProperty?: string) {\n    return function (target: any, key: any, propertyDesciptor: PropertyDescriptor) {\n        let metaData = Reflect.getMetadata('design:returntype', target, key).name;\n        let debugUiToggleType: DebugUiToggleType = types[metaData];\n\n        if (debugUiToggleType) {\n            let toggle = new DebugUiToggleValue(metaProperty, debugUiToggleType);\n            featureToggles.push(toggle);\n\n            var oldFunction = propertyDesciptor.value;\n            propertyDesciptor.value = function () {\n                var replacedResult = featureToggleValues[toggle.name];\n                var originalResult = oldFunction.call(this, arguments);\n                if (_.isUndefined(replacedResult)) {\n                    return originalResult;\n                } else {\n                    logger.debug('intercepted call', {toggle, originalResult, replacedResult});\n                    return replacedResult;\n                }\n            }\n        }\n    }\n}\n\nexport function getDebugUiToggle(toggleName: string) {\n    return featureToggleValues[toggleName];\n}\n\nexport function setDebugUiToggle(toggleName: string, value: any) {\n    featureToggleValues[toggleName] = value;\n}\n\nexport function deleteDebugUiToggle(toggleName: string) {\n    delete featureToggleValues[toggleName];\n}\n","import * as _ from \"underscore\";\n\n/*\n* Class decorator which expects classes with a static property of injectableName.\n* The properties from the entering classes will be mapped to the $inject field to satisfy strict dependency injection of Angular.\n* */\nexport function Injectables(...injectables: ({ new(...args: any[]): any; injectableName: string; } | string)[]) {\n    let i = _.toArray(injectables);\n\n    return function (target: any) {\n        target['$inject'] = _.map(i, (arg: any) => arg.injectableName ? arg.injectableName : arg);\n    };\n}\n","import {valueMetaInfo} from '../domain/MetaInfo';\n\n/*\n* Class decorator which sets the META_INFO static property for the mapping service\n* and expects an already provided metaInfoObject property.\n* */\nexport function ValueMetaInfo(metaValueInfo: string) {\n    return function (target: any) {\n        target['metaInfoObject'] = target['metaInfoObject'] || {};\n        target['META_INFO'] = valueMetaInfo(metaValueInfo, target['metaInfoObject']);\n    }\n}\n","/*\n* Property decorator which uses reflection to determine the type of the entering property from the page value.\n* If there should be another check, an optional paramtere can be provided.\n* */\nexport function ValueMetaProperty(metaProperty?: string) {\n    return function (target: any, key: any) {\n        if (!metaProperty) {\n            let metaData = Reflect.getMetadata('design:type', target, key).name;\n\n            switch (metaData) {\n                case 'String':\n                    metaData = 'string';\n                    break;\n                case 'Number':\n                    metaData = 'number';\n                    break;\n                case 'Boolean':\n                    metaData = 'boolean';\n                    break;\n            }\n\n            metaProperty = metaProperty || metaData;\n        }\n\n        target.constructor['metaInfoObject'] = target.constructor['metaInfoObject'] || {};\n        target.constructor['metaInfoObject'][key] = metaProperty;\n    }\n}\n","import {IAdaptiveService} from '../../service/IAdaptiveService';\nimport {IDirective} from \"angular\";\n\n\n// Inject the ng-if directive\ncoAdaptiveIf.$inject = ['adaptiveService', 'ngIfDirective'];\n\n/**\n * Directive to remove/add DOM elements depending on the allowed breakpint\n *\n * IMPORTANT: If you are using ng-if on the same element, this directive will not work - ng-if has precedence.\n * For such cases, use the adaptive service and its breakpoints checking API.\n */\nexport function coAdaptiveIf(adaptiveService: IAdaptiveService,\n                             ngIfDirective: IDirective): IDirective {\n    // Get the actual directive object\n    var ngIf = ngIfDirective[0];\n\n    return {\n        // Set defaults as they already are on the ng-if directive\n        transclude: ngIf.transclude,\n        priority: ngIf.priority - 1, // ng-if has precedence\n        terminal: ngIf.terminal,\n        restrict: ngIf.restrict,\n        link: function ($scope, $element, attributes: any) {\n            // Check if there already is an ng-if directive on the element\n            var initialNgIf = attributes.ngIf,\n                ifEvaluator;\n            // If there is a ng-if directive on the element, this directive does nothing\n            if (initialNgIf) {\n                ifEvaluator = function () {\n                    return $scope.$eval(initialNgIf);\n                }\n            } else {\n                // If there is no ng-if directive, continue\n                ifEvaluator = function () {\n                    var breakpoints = attributes.coAdaptiveIf.split(',');\n\n                    if (breakpoints.length === 0) {\n                        return true;\n                    }\n                    else {\n                        return adaptiveService.checkBreakpoints(breakpoints);\n                    }\n                }\n            }\n\n            attributes.ngIf = ifEvaluator;\n            ngIf.link.apply(ngIf, arguments);\n        }\n    }\n}\n","import {IDirective} from \"angular\";\n\nexport function coAffix(): IDirective {\n    return {\n        scope: {},\n        link: (scope: any, element: any): void => {\n            var markerDiv: JQuery = $('<div class=\"markerAffix\" style=\"height: 0;\"></div>');\n\n            element.before(markerDiv);\n\n            /* affix the navbar after scroll below header */\n            element\n                .affix({\n                    offset: {\n                        top: (): number => {\n                            return markerDiv.offset().top;\n                        }\n                    }\n                })\n                .on('affixed.bs.affix', () => {\n                    markerDiv.height(element.height());\n                })\n                .on('affixed-top.bs.affix', () => {\n                    markerDiv.height(0);\n                });\n\n            scope.$on('$destroy', () => {\n                markerDiv.remove();\n            });\n        }\n    };\n}\n","import {AbstractCall, ConstantCall, NavigationEvent} from '../../domain/Call';\nimport {ICallService} from '../../service/ICallService';\nimport {IDirective} from \"angular\";\n\n\ncoCallAction.$inject = ['callService'];\n\nexport function coCallAction(callService: ICallService): IDirective {\n    return {\n        scope: {\n            callAction: '=coCallAction',\n            callActionPreventDefault: '=coCallActionPreventDefault',\n            callActionStopPropagation: '=coCallActionStopPropagation'\n        },\n\n        link: function (scope: any, element: any) {\n\n            var callAction = scope.callAction;\n            var paramPreventDefault: boolean = !!scope.callActionPreventDefault;\n            var paramStopPropagation: boolean = !!scope.callActionStopPropagation;\n\n            if (callAction == null) {\n                throw new Error('callAction is null')\n            }\n            var targetElement: HTMLElement = element.get(0);\n            var tagName = targetElement.nodeName;\n\n            if (tagName.toUpperCase() === 'A') {\n                var anchorElement: HTMLAnchorElement = <HTMLAnchorElement>targetElement;\n\n                if (callAction instanceof ConstantCall) {\n                    try {\n                        var constantCall: ConstantCall<NavigationEvent> = <ConstantCall<NavigationEvent>>callAction;\n                        var linkUrl = constantCall.constantPayload.link.uri;\n\n                        anchorElement.href = linkUrl;\n                    } catch (e) {\n                        throw new Error('error while handling NavigationEvent:' + e)\n                    }\n                } else if (callAction instanceof AbstractCall) {\n                    element.on('click', function (event: ng.IAngularEvent) {\n                        event.stopPropagation();\n                        event.preventDefault();\n\n                        callService.handleCall(callAction);\n                    });\n                } else {\n                    throw new Error('unimplemented Call type requested');\n                }\n            } else {\n                element.on('click', function (event: ng.IAngularEvent) {\n                    if (paramPreventDefault) {\n                        event.preventDefault();\n                    }\n\n                    if (paramStopPropagation) {\n                        event.stopPropagation();\n                    }\n\n                    callService.handleCall(callAction);\n                });\n            }\n        }\n    };\n}\n","import {IAugmentedJQuery, IDirective} from \"angular\";\n\nexport function coClickPreventDefault(): IDirective {\n    return {\n        link: (scope: any, $element: IAugmentedJQuery) => {\n            $element.on('click', (e: JQuery.Event) => {\n                e.preventDefault();\n            });\n        }\n    }\n}\n","import {IContentService} from '../../service/IContentService';\nimport coResolveContentTemplate from \"./coResolveContentTemplate.html\";\n\n\ncoResolveContent.$inject = <any>['contentService', '$sce'];\n\nexport function coResolveContent(contentService: IContentService, $sce: ng.ISCEService): ng.IDirective {\n    return {\n        scope: {\n            content: '=coResolveContent',\n            onContentResolved: '&'\n        },\n        replace: true,\n        transclude: true,\n        template: coResolveContentTemplate,\n        link: (scope:any, element, attrs) => {\n            scope.$watch('content', () => {\n\n                var content = scope['content'];\n                if (content) {\n                    var contentPromise:ng.IPromise<string> = contentService.resolve(content);\n                    contentPromise.then((markup:string) => {\n                        scope['markup'] = $sce.trustAsHtml(markup);\n                        setTimeout(()=> {\n                            scope.$digest();\n                            scope.onContentResolved();\n                        }, 0);\n                    })\n                }\n            })\n        }\n    };\n}\n","export default \"<div>\\n    <!-- commerce.common.coResolveContent -->\\n    <div data-ng-if=\\\"markup\\\" data-ng-bind-html=\\\"markup\\\"></div>\\n    <div data-ng-if=\\\"!markup\\\" data-ng-transclude></div>\\n</div>\\n\";","import {CsiApp, CsiChannel, CsiMessage, CsiMessageListener} from \"@shop/js-infrastructure-generic-csi\";\nimport {IController} from \"angular\";\n\nexport class CsiAppController implements CsiChannel, IController {\n\n    public csiApp: CsiApp;\n    private name: string;\n    private queuedMessages: CsiMessage[] = [];\n    private messageListeners: { [key: string]: CsiMessageListener } = {};\n    private listenerId = 0;\n    private unsubscribeCallback: () => void;\n\n    send(messsage: CsiMessage) {\n        if (this.csiApp) {\n            this.csiApp.channel.send(messsage);\n        } else {\n            this.queuedMessages.push(messsage);\n        }\n    }\n\n    subscribe(fn: CsiMessageListener): () => void {\n        // store the current id and increment ...\n        const id = (this.listenerId ++ );\n        this.messageListeners[id] = fn;\n        return () => delete this.messageListeners[id];\n    }\n\n    initCsiApp(name: string, csiApp: CsiApp) {\n        if (this.csiApp) {\n            throw new Error(`csiApp '${this.name}' already initialised`);\n        }\n        this.csiApp = csiApp;\n\n        // send the queued messages now that the csi is ready\n        this.queuedMessages.forEach(message => this.csiApp.channel.send(message));\n        // remove the message queue ... we directly send the messages to the csi ...\n        this.queuedMessages = null;\n\n        // now subscribe to the csi and forward the messages to our subscribers...\n        this.unsubscribeCallback = this.csiApp.channel.subscribe((message: CsiMessage) => {\n            Object.keys(this.messageListeners).forEach(key => {\n                this.messageListeners[key].call(null, message)\n            });\n        });\n    }\n\n    $onDestroy(): void {\n        if(this.unsubscribeCallback){\n            this.unsubscribeCallback();\n        }\n    }\n\n}","\nimport {CsiWebpackModule} from \"@shop/js-infrastructure-generic-csi\";\nimport {ILogger, ILoggerService} from \"../../service/LoggerService\";\nimport {ITranscludeFunction} from \"angular\";\nimport {CsiAppController} from \"./CsiAppController\";\n\ncoCsiApp.$inject = [\"loggerService\"]\nexport function coCsiApp(loggerService: ILoggerService): ng.IDirective {\n\n    let logger = loggerService.create(\"common.coCsiApp\");\n    let warningLoggedForCsi ={};\n\n    return {\n        scope: {\n            moduleName: '@',\n            config: '&',\n            load: '&'\n        },\n        transclude: true,\n        controller: CsiAppController,\n\n        link: function (scope: any, element: ng.IAugmentedJQuery, attrs: ng.IAttributes, ctrl: ng.IController, transcludeFn: ITranscludeFunction) {\n            const moduleName = scope.moduleName;\n            if(!moduleName){\n\n                throw new Error(\"Attribute 'module-name' must be set for directive 'co-csi-app'!\");\n            }\n            const controller = <CsiAppController> ctrl;\n\n            let webpackModule = <CsiWebpackModule>window[moduleName];\n\n            if(!webpackModule){\n                // only log once...\n                if(!warningLoggedForCsi[moduleName]){\n                    logger.warn(\"CSI module '\" + moduleName + \"' not found in global scope!, Ignoring ...\");\n                    warningLoggedForCsi[moduleName] = true;\n                }\n                element.append(transcludeFn());\n                scope.load({error: \"CSI Module not available in root scope!\"})\n            } else {\n                element.children().remove();\n                let config = null;\n                if(scope.config){\n                    config = scope.config.apply();\n                }\n\n                let csiPromise = webpackModule.bootstrap(element[0], config);\n                csiPromise.then((csiApp) => {\n                    controller.initCsiApp(moduleName, csiApp);\n                    if(scope.load){\n                        scope.load({app: csiApp});\n                    }\n                })\n            }\n        }\n    };\n}\n\n\n","import {IDirective} from \"angular\";\n\nexport function coDraggable(): IDirective {\n    return {\n        link: function (scope, element, attrs) {\n            (<any>element).draggable();\n        }\n    };\n}\n","import {FeedbackService} from '../../service/FeedbackService';\nimport * as _ from \"underscore\";\nimport {IAugmentedJQuery, IDirective} from \"angular\";\nimport * as $ from \"jquery\";\nimport feedbackPanelTemplate from \"./feedbackPanelTemplate.html\";\n\n\ncoFeedback.$inject = ['feedbackService'];\n\nexport function coFeedback(feedbackService: FeedbackService): IDirective {\n    return {\n        scope: {\n            messageType: '@coFeedbackMessageType',\n        },\n        template: feedbackPanelTemplate,\n        link: function (scope: any, $element: IAugmentedJQuery) {\n\n            if (!_.contains(['info', 'warn', 'error'], scope.messageType)) {\n                throw new Error('Unexpected message type found: ' + scope.messageType);\n            }\n\n            function scrollToFeedback(): void {\n                $('html, body').stop(); // stop all animations that might be running - we want to scroll directly to the panel\n                $('html, body').animate({scrollTop: $element.offset().top - 50}, 1000);\n            }\n\n            function updateScope(): void {\n                // rebind messages\n                // so we don't rely on the fact that the same messages instance is reused\n                let messages = [];\n                switch (scope.messageType) {\n                    case 'info':\n                        messages = feedbackService.messages.info;\n                        break;\n                    case 'warn':\n                        messages = feedbackService.messages.warn;\n                        break;\n                    case 'error':\n                        messages = feedbackService.messages.error;\n                        break;\n                }\n                scope['messages'] = messages;\n\n                if (!_.isEmpty(messages)) {\n                    scrollToFeedback();\n                }\n            }\n\n            // setting up watch for updating view and scrolling\n            scope.$watch(() => feedbackService.messages, updateScope, true);\n            updateScope();\n        }\n    };\n}\n","export default \"<div class=\\\"margin-top-md margin-bottom-md\\\" data-ng-if=\\\"messages.length > 0\\\">\\n  <div\\n    data-ng-class=\\\"{\\n            'info': 'alert-info',\\n            'warn': 'alert-warning',\\n            'error': 'alert-danger'\\n          }[messageType]\\\"\\n    class=\\\"alert\\\"\\n    role=\\\"alert\\\"\\n  >\\n    <div data-ng-repeat=\\\"message in messages\\\">\\n      <div data-ng-bind-html=\\\"message | coUnsafeHtml\\\"></div>\\n    </div>\\n  </div>\\n</div>\\n\";","import {IDirective} from \"angular\";\n\n\n// floatLabel directive should not have the \"co\" prefix, while used to redefine bootstrap data-float-label\nexport function floatLabel(): IDirective {\n    return {\n        link: function (scope, element: any, attributes) {\n\n            // hide label elements for inputs with a float-label directive\n            element.prevAll('label').hide();\n\n            // find directive and select previous element (the actual label <span>)\n            scope.$watch(function () {\n                return element.attr('data-float-label')\n            }, function (value) {\n                element.prev().attr('data-text', value);\n            });\n\n            scope.$watch(function () {\n                return element.val();\n            }, function () {\n                if (element.val() === '') {\n                    element.parent().addClass('hide-label');\n                } else {\n                    element.parent().removeClass('hide-label').addClass('js-unhighlight-label');\n                }\n            });\n            element.floatLabel().parent().addClass('js-unhighlight-label');\n        }\n    };\n}\n","import * as _ from \"underscore\";\nimport {IAttributes, IAugmentedJQuery, IDirective} from \"angular\";\n\n\ncoIncludeHtml.$inject = ['$sce'];\n\nexport function coIncludeHtml($sce: ng.ISCEService): IDirective {\n\n    return {\n        scope: {\n            includeHtmlUrl: '=coIncludeHtmlUrl',\n            coLoadCallback: '&'\n        },\n        replace: true,\n        link: function (scope: any, element: IAugmentedJQuery, attrs: IAttributes) {\n\n            function trustedUrl() {\n\n                var includeHtmlUrl = scope.includeHtmlUrl;\n                return _.isString(includeHtmlUrl) ? includeHtmlUrl : $sce.getTrustedUrl(includeHtmlUrl);\n            }\n\n            function loadElementContent(element: IAugmentedJQuery, url: string, scope: any) {\n                element.load(url, (response, status, xhr) => {\n                    element.html(response);\n                    if (scope.coLoadCallback != undefined) {\n                        scope.coLoadCallback({responseContent: response});\n                    }\n                });\n            }\n\n            // if trustedUrl returns null, nothing will happen\n            scope.$watch(trustedUrl, (newUrl) => {\n                loadElementContent(element, newUrl, scope);\n            });\n        }\n    }\n}\n","import {IDirective} from \"angular\";\n\ncoInitializeExternalContent.$inject = ['$window'];\n\n/**\n * This directive should be used on DOM elements whose children potentially contain\n * external content (i.e. CMS teasers, adspaces, ...) which might have to be initialized\n * by the Compendium JS (webapp.js).\n * The directive registers a MutationObserver on the given element and triggers a call to\n * webapp.initializePlugins() if the child nodes are changed.\n */\nexport function coInitializeExternalContent(windowService: ng.IWindowService): IDirective {\n    function initExternalApps(): void {\n\n        let webApp: any = windowService['webapp'];\n\n        if (webApp && webApp.initializePlugins) {\n            webApp.initializePlugins();\n        }\n    }\n\n    return {\n        link: (scope: any, element: ng.IAugmentedJQuery): void => {\n            let nativeElement = element.get(0);\n            // we are interested in changes to the child nodes (childList) and\n            // their descendants (subtree)\n            let config = {childList: true, subtree: true};\n\n            let observer = new MutationObserver(mutations => {\n                initExternalApps();\n            });\n\n            observer.observe(nativeElement, config);\n\n        }\n    };\n}","import {IBusyService} from '../../service/IBusyService';\nimport * as _ from \"underscore\";\nimport {IDirective} from \"angular\";\n\n\n/**\n * Directive to bind a loader to an element.\n *\n * The loader overlay is going to be bound to the parent element and depends on the Call Service to get triggered.\n * A boolean value available at the Call Service (isCalling) is being watched.\n *\n * If the call:\n * - gets a quick response - the overlay won't be shown\n * - gets a response that isn't quick but also isn't long - the animation will be displayed for a set amount of time\n * - gets a response that takes a long time - the overlay will be removed once the call gets a response\n * - gets a response that takes very long time - the overlay will show after a couple\n *\n * This is done so that users don't get flickers because most of the calls are very quick.\n *\n * @param callService Call Service to watch for isCalling\n * @returns ng.IDirective Angular Directive\n */\nexport function coLoader(busyService: IBusyService): IDirective {\n    const waitingTimeLimit = 600; // How long to wait before adding overlay\n    const waitingTimeDelay = 600; // How long to display the loader\n\n    return {\n        link: (scope, element: any) => {\n            // Check if the element is outside of body\n            let parent = element.parent().is('html') ? element : element.parent();\n            parent.attr('waiting-time', 'none');\n            let position = parent.css('position');\n\n            let removeLoader = () => {\n                parent.attr('waiting-time', 'none');\n                parent.removeClass('has-loading-overlay loading-overlay-position');\n                parent.children('.loading-overlay').remove();\n            };\n\n            let createOverlayMarkup = (title: string, subtitle: string, isSlowOverlay: boolean) => {\n                let loaderMarkup = '';\n                if (isSlowOverlay) {\n                    // TODO: OSD-2254 Here we should add animation for slow transition when it is available in Compendium\n                    loaderMarkup = '<div class=\"loading-spinner-2\"><div class=\"bounce1\"></div>' +\n                        '<div class=\"bounce2\"></div><div class=\"bounce3\"></div></div>';\n                } else {\n                    loaderMarkup = '<div class=\"loading-spinner-2\"><div class=\"bounce1\"></div>' +\n                        '<div class=\"bounce2\"></div><div class=\"bounce3\"></div></div>';\n                }\n\n                if (title) {\n                    loaderMarkup = `<h2>${title}</h2> ${loaderMarkup}`;\n                }\n\n                if (subtitle) {\n                    loaderMarkup = `${loaderMarkup} <p><strong>${subtitle}</strong></p>`;\n                }\n\n                let overlayMarkup =\n                    `<div class=\"loading-overlay\">\n                        <div class=\"loading-overlay-spinner\" style=\"height: auto; margin: 0; transform: translateY(-50%);\">\n                            ${loaderMarkup}\n                        </div>\n                    </div>`;\n                return overlayMarkup;\n            };\n\n            scope.$watch(() => {\n                return busyService.isBusy();\n            }, () => {\n                // The Call Service started a call\n                if (busyService.isBusy()) {\n                    let overlayMarkup = createOverlayMarkup(busyService.title, busyService.subtitle, false);\n\n                    parent.attr('waiting-time', 'short');\n                    if (!position || position === '' || position === 'static') {\n                        parent.addClass('loading-overlay-position');\n                    }\n                    parent.addClass('has-loading-overlay');\n\n                    setTimeout(() => {\n                        let waitingTime = parent.attr('waiting-time');\n                        // If the call lasted a longer time, wait a while and then reset it\n                        if (waitingTime === 'short') {\n                            parent.attr('waiting-time', 'long');\n                            parent.append(overlayMarkup);\n\n                            // Wait for a short amount of time to display overlay\n                            setTimeout(() => {\n                                let waitingTime = parent.attr('waiting-time');\n                                // The call is done while the animation was playing\n                                if (waitingTime === 'done') {\n                                    removeLoader();\n                                }\n                                // The call still isn't done - let the animation break when the call is done\n                                if (waitingTime === 'long') {\n                                    parent.attr('waiting-time', 'longer');\n                                }\n                            }, waitingTimeDelay);\n                        }\n                    }, waitingTimeLimit);\n\n                    // If slowTimeout is set means that we should show another text after 'slowTimeout' milliseconds\n                    let slowTimeout: number = busyService.slowTimeout;\n                    if (!_.isNull(slowTimeout)) {\n                        setTimeout(() => {\n                            removeLoader();\n                            // Before we add the overlay we ask the busy service again if it is still busy\n                            // in order to prevent a never ending waiting animation loop\n                            if (busyService.isBusy()) {\n                                parent.attr('waiting-time', 'long');\n                                let overlayMarkup = createOverlayMarkup(\n                                    busyService.titleSlow,\n                                    busyService.subtitleSlow,\n                                    true);\n\n                                parent.attr('waiting-time', 'short');\n                                if (!position || position === '' || position === 'static') {\n                                    parent.addClass('loading-overlay-position');\n                                }\n                                parent.addClass('has-loading-overlay');\n                                parent.append(overlayMarkup);\n                            }\n                        }, slowTimeout);\n                    }\n                }\n                // The Call Service ended a call\n                else {\n                    let waitingTime = parent.attr('waiting-time');\n                    // If the call lasted a short time or longer than the minimum animation\n                    // time, reset the loader and remove it\n                    if (waitingTime === 'short' || waitingTime === 'longer') {\n                        removeLoader();\n                    }\n                    // If the call ended at a point in time when the animation was playing\n                    else if (waitingTime === 'long') {\n                        parent.attr('waiting-time', 'done');\n                    }\n                }\n            });\n        }\n    };\n}\n\ncoLoader.$inject = <any>['busyService'];\n","import {IExternalService} from '../../service/IExternalService';\nimport {IAttributes, IDirective} from \"angular\";\nimport coModalDialogTemplate from \"./coModalDialogTemplate.html\";\n\nexport function coModalDialog(externalService: IExternalService): IDirective {\n    return {\n        scope: {\n            open: '&coModalDialogOpen',\n            onClose: '&coModalDialogOnClose',\n            title: '@coModalDialogTitle',\n            limitHeight: '=coModalDialogLimitHeight'\n        },\n        transclude: true,\n        template: coModalDialogTemplate,\n        replace: true,\n        link: function (scope: any, element: any, attrs: IAttributes, ctrl, transcludeFn) {\n            let callOpenClose = () => {\n                if (scope.open()) {\n                    element.modal('show');\n                } else {\n                    element.modal('hide');\n                }\n            };\n\n            element.modal({show: false});\n            callOpenClose();\n\n            element.on('hidden.bs.modal', () =>\n                scope.$apply(() => {\n                    scope.onClose();\n                    callOpenClose();\n                })\n            );\n\n            if (scope.limitHeight) {\n                let limitModalHeight = () => {\n                    element.find('.modal-body').css({\n                        maxHeight: $(window).innerWidth()<768 ? $(window).height() : $(window).height() - 120,\n                        overflowX: 'hidden'\n                    });\n                };\n\n                element.on('show.bs.modal', () => {\n                    limitModalHeight();\n                });\n\n                $(window).on('resize', () => {\n                    limitModalHeight();\n                });\n            }\n\n            scope.$watch(\n                function () {\n                    return scope.open();\n                },\n                function (newValue: boolean) {\n                    callOpenClose();\n                });\n        }\n    };\n}\n\ncoModalDialog.$inject = [IExternalService.injectableName];\n","export default \"<div class=\\\"modal fade\\\" tabindex=\\\"-1\\\">\\n    <!-- commerce.common.coModalDialog -->\\n    <div class=\\\"modal-dialog modal-lg\\\">\\n        <div class=\\\"modal-content\\\">\\n\\n            <div class=\\\"modal-header\\\">\\n                <button type=\\\"button\\\" class=\\\"close\\\" data-dismiss=\\\"modal\\\"\\n                        data-co-tracking-attributes\\n                        data-co-tracking-attributes-action=\\\"close\\\"\\n                        data-co-tracking-attributes-element-id=\\\"closeModal\\\">\\n                    <span class=\\\"sr-only\\\">Close</span>\\n                </button>\\n                <span data-ng-if=\\\"title\\\" class=\\\"h4 modal-title\\\">\\n                    <span data-ng-bind-html=\\\"title | coUnsafeHtml\\\"></span>\\n                </span>\\n            </div>\\n\\n            <div class=\\\"modal-body\\\">\\n\\n                <div class=\\\"content\\\">\\n                    <div data-ng-transclude>\\n\\n                    </div>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n</div>\\n\";","import * as $ from \"jquery\";\nimport coModalInfoTemplate from \"./coModalInfoTemplate.html\";\n\ncoModalInfo.$inject = ['$compile', \"$timeout\"];\n\nexport function coModalInfo($compile: ng.ICompileService, $timeout: ng.ITimeoutService): ng.IDirective {\n    return {\n        scope: false,\n        link: function (scope, element, attrs) {\n            // create a new scope, since we can't rely on an isolate scope here\n            let newScope = scope.$new(true, scope);\n\n            let modal = <ng.IAugmentedJQuery & { modal: any }>$compile(coModalInfoTemplate)(newScope, function (clonedElement, scope) {\n                clonedElement.insertAfter(element);\n            });\n\n            const $BODY = $(document.body);\n            modal.on('hide.bs.modal', () => {\n                // Very stupid to do - this resembles the callback on backdrop() in Bootstrap's modal.js:\n                $BODY.removeClass('modal-open');\n                modal.css({\n                    paddingLeft: '',\n                    paddingRight: ''\n                });\n                $BODY.css('padding-right', '');\n                modal.trigger('hidden.bs.modal');\n            });\n\n            scope.$on('$destroy', function () {\n                newScope.$destroy();\n                modal.remove();\n            });\n\n            element.on('click', ((e: JQuery.Event) => {\n\n                e.stopPropagation();\n\n                // wrap this in a timeout block ...\n                // it seems that something on outside the click sometimes starts a digest cycle ...\n                $timeout(() => {\n                    // the model content is either loaded externally via the provided URL or passed directly\n                    newScope.$apply(() => {\n                        let url = attrs['coModalInfoUrl'];\n                        let modalContent = attrs['coModalInfoContent'];\n                        let titleContent = attrs['coModalInfoTitle'];\n\n                        if (url) {\n                            $.get(url, null, (result) => {\n                                newScope.$apply(() => {\n                                    newScope['body'] = result;\n                                })\n                            });\n                        }\n                        if (modalContent) {\n                            newScope['body'] = modalContent;\n                        }\n\n                        if (titleContent) {\n                            newScope['title'] = titleContent;\n                        } else {\n                            newScope['title'] = null;\n                        }\n\n                        modal.modal('show');\n                        e.preventDefault();\n                    });\n                }, 0);\n            }))\n        }\n    };\n}\n","export default \"<div class=\\\"modal fade\\\" id=\\\"co-modal-info\\\" tabindex=\\\"-1\\\" role=\\\"dialog\\\" aria-hidden=\\\"true\\\">\\n    <!-- commerce.common.coModalInfo -->\\n    <div class=\\\"modal-dialog modal-lg\\\">\\n        <div class=\\\"modal-content\\\">\\n\\n            <div class=\\\"modal-header\\\">\\n                <span data-ng-if=\\\"title\\\" class=\\\"h4 modal-title\\\">{{title}}</span>\\n\\n                <button type=\\\"button\\\" class=\\\"close\\\" data-dismiss=\\\"modal\\\"\\n                        data-co-tracking-attributes\\n                        data-co-tracking-attributes-action=\\\"close\\\"\\n                        data-co-tracking-attributes-element-id=\\\"closeModal\\\">\\n                    <span aria-hidden=\\\"true\\\"\\n                >&times;</span><span\\n                        class=\\\"sr-only\\\">Close</span></button>\\n            </div>\\n\\n            <div class=\\\"modal-body\\\">\\n                 <div data-ng-bind-html=\\\"body | coUnsafeHtml\\\"></div>\\n            </div>\\n\\n            <!--<div class=\\\"modal-footer\\\">-->\\n            <!--<button type=\\\"button\\\" class=\\\"btn btn-default\\\" data-dismiss=\\\"modal\\\">Schließen</button>-->\\n            <!--</div>-->\\n        </div>\\n    </div>\\n</div>\\n\";","import {IPostUrlService} from '../../service/PostURLService';\nimport {ILoggerService} from '../../service/LoggerService';\nimport {IDirective, IScope} from \"angular\";\nimport * as $ from \"jquery\";\n\n\ncoPostForm.$inject = ['postUrlService', 'loggerService'];\n\nexport function coPostForm(postUrlService: IPostUrlService, loggerService: ILoggerService): IDirective {\n\n    var logger = loggerService.create('commerce.common.coPostForm');\n\n    function link(scope: IScope, element: JQuery) {\n        var form = $('<form class=\"hidden\">');\n        form.attr('method', 'post');\n        form.attr('enctype', 'application/x-www-form-urlencoded');\n        $(element).append(form);\n\n        postUrlService.setFormSubmitCallback((data, url) => {\n            buildFormAndPostToURL(data, url, form);\n        });\n        scope.$on('$destroy', () => postUrlService.resetCallback());\n\n    }\n\n    function buildFormAndPostToURL(data: { [key: string]: any }, targetURL: string, form: JQuery) {\n\n        form.children().remove();\n        form.attr('action', targetURL);\n\n        for (var key in data) {\n            if (data.hasOwnProperty(key)) {\n                logger.info(key, data[key]);\n                var field = $('<input>').attr('type', 'hidden').attr('name', key).val(data[key]);\n                form.append(field);\n            }\n        }\n        form.submit();\n    }\n\n\n    return {\n        scope: {},\n        link: link\n    };\n}\n","/**\n * This directive removes any directive that would appear as a child directive.\n * It is used if you need to remove a child directive even before the HTML has been compiled (way before linking\n * phase). Because they'll be removed from the template that should be linked, the child directives will never\n * be considered.\n *\n * The directive accepts a comma-separated list of directive names that should be removed, e.g. \"data-co-slick,data-co-modal-info\".\n */\nimport * as angular from \"angular\";\nimport {IDirective} from \"angular\";\n\n\nexport function coRemoveLowerAttributeDirectives(): IDirective {\n    return {\n        priority: -1,\n        compile: function (element: ng.IAugmentedJQuery, attributes: any) {\n            var attributesToRemove = attributes.coRemoveLowerAttributeDirectives.split(\",\");\n\n            angular.forEach(attributesToRemove, function (attribute) {\n                element.find(\"[\" + attribute + \"]\").removeAttr(attribute);\n            });\n\n            return {}\n        }\n    };\n}\n","/**\n * Directive for scrolling to a certain point of the page.\n *\n * @param target CSS Selector of the scroll's target element\n * @param [offset] In pixels, how much should the scrolling be shorter\n * @param [offsetSelector] CSS Selector of an element whose height is going to be used as offset\n * @param [delay] Number of milliseconds to wait for scroll to start\n * @param [shouldNotPreventDefault] If the default click event handler should be triggered\n */\nimport {IAugmentedJQuery, IDirective} from \"angular\";\n\nexport function coScrollTo(): IDirective {\n    return {\n        scope: {\n            target: '=coScrollToTarget',\n            offset: '=coScrollToOffset',\n            offsetSelector: '@coScrollToOffsetSelector',\n            delay: '@coScrollToDelay',\n            duration: '@coScrollToDuration',\n            shouldNotPreventDefault: '=coScrollToShouldNotPreventDefault'\n        },\n        link: (scope: any, element: IAugmentedJQuery): void => {\n            element.on('click', (e: JQuery.Event) => {\n\n                if (!scope.shouldNotPreventDefault) {\n                    e.preventDefault();\n                }\n\n                scope.delay ? setTimeout(scroll, scope.delay) : scroll();\n\n                function scroll(): void {\n                    var $target: JQuery = $(scope.target);\n                    if ($target.length === 0) {\n                        return;\n                    }\n\n                    var targetHeight: number = $target.offset().top;\n\n                    if (scope.offsetSelector) {\n                        targetHeight = targetHeight - $(scope.offsetSelector).height();\n                    }\n                    if (scope.offset) {\n                        targetHeight = targetHeight - scope.offset;\n                    }\n\n                    var duration: number = scope.duration ? parseInt(scope.duration) : 1000;\n                    $('body,html').animate({scrollTop: targetHeight}, duration);\n                }\n            });\n        }\n    };\n}\n","/**\n * can be appended to any form component and triggers a scroll to the top of the page.\n * In contrast to coScrollTo-Directive does not prevent the original event to bubble up.\n */\nimport {IDirective} from \"angular\";\n\nexport function coScrollToTop(): IDirective {\n    return {\n        scope: false,\n        restrict: 'A',\n        link: function (scope: any, element, attrs: any) {\n            element.on('click', (e) => {\n                $(\"body,html\").animate({scrollTop: 0}, 0);\n            });\n        }\n    };\n}\n","import {IDirective} from \"angular\";\n\ncoSeoHide.$inject = ['renderModeService'];\n\n/**\n * Directive to hide element when the render mode is prerender.\n *\n * @param renderModeService This service provides the current render mode.\n * @returns {{restrict: string, scope: boolean, link: (function(any, any): undefined)}}\n */\nexport function coSeoHide(renderModeService): IDirective {\n    return {\n        restrict: 'A',\n        scope: false,\n        link: function ($scope, $element, attr) {\n            var attributeValue = attr['coSeoHide'];\n\n            if (attributeValue === \"false\") {\n                return;\n            } else {\n                if (renderModeService.isPrerender()) {\n                    $element.remove();\n                }\n            }\n        }\n    };\n}\n","import {IDirective} from \"angular\";\n\ncoSeoHref.$inject = ['renderModeService'];\n\n/**\n * Directive to replace a link when the render mode is prerender.\n */\nexport function coSeoHref(renderModeService): IDirective {\n    return {\n        scope: {\n            coSeoHrefCall: '=coSeoHrefCall'\n        },\n        link: function (scope: any, element, attributes) {\n            if (renderModeService.isPrerender() && element.prop('tagName') === \"A\") {\n                attributes.$set('href', scope.coSeoHrefCall.constantPayload.link.uri);\n            }\n        }\n    };\n}\n","import {IDirective} from \"angular\";\n\nexport function coTooltip(): IDirective {\n    return {\n        scope: {\n            placement: '@coTooltipPlacement',\n            container: '@coTooltipContainer',\n            title: '@coTooltipTitle',\n        },\n        link: (scope: ng.IScope, element: any) => {\n            scope.$watchGroup(['placement', 'container', 'title'], function () {\n                var options = {\n                    placement: scope['placement'] || 'top',\n                    container: scope['container'] || false,\n                    title: scope['title']\n                };\n\n                element.tooltip(options);\n            });\n        }\n    }\n}\n","export class TrackingController {\n\n    trackingPrefix: string;\n\n    constructor() {\n        this.trackingPrefix = null;\n    }\n\n    getPrefix(): string {\n        return this.trackingPrefix;\n    }\n\n    setPrefix(prefix: string) {\n        this.trackingPrefix = prefix;\n    }\n\n}\n","import {TrackingController} from './TrackingController';\nimport {IDirective} from \"angular\";\n\nexport function coTrackingId(): IDirective {\n    return {\n        controller: <any>TrackingController,\n        link: <any> {\n            pre: function (scope: any, element: ng.IAugmentedJQuery, attr, trackingController: TrackingController) {\n                (function handleTrackingValue() {\n                    var idPrefix = attr['coTrackingId'];\n\n                    var parentController: TrackingController = (<ng.IAugmentedJQuery>element.parent()).controller('coTrackingId');\n\n                    if (idPrefix) {\n                        if (parentController) {\n                            trackingController.setPrefix(parentController.getPrefix() + '.' + idPrefix);\n                        }\n                        else {\n                            trackingController.setPrefix(idPrefix);\n                        }\n                        element.attr('data-tracking', trackingController.getPrefix());\n                    }\n                })();\n            }\n        }\n    };\n}\n","import * as _ from \"underscore\";\nimport {TrackingProductLine, TrackingProductLineName} from \"../..\";\n\n\nexport type TrackingProductLineControllerBindingType = TrackingProductLineName | TrackingProductLineName []\n    | TrackingProductLine | TrackingProductLine[] | null | undefined;\n\nexport class TrackingProductLineController {\n\n    private _coTrackingProductLines: TrackingProductLineControllerBindingType;\n    private productLines: TrackingProductLine[];\n\n    set coTrackingProductLines(value: TrackingProductLineControllerBindingType) {\n        this._coTrackingProductLines = value;\n\n        // reset product lines if an error occurs\n        this.productLines = [];\n\n        if (!value) {\n            return;\n        }\n\n        // first normalize the array / single element part\n        let array = _.isArray(value) ? value : [value];\n\n        // then normalize the element types\n        // supported values are strings with the value of the enum instance names for use in templates or\n        // the enum instances for use in typescript code like controllers.\n        let arrayOfEnum = array.map((element) => {\n            if (element instanceof TrackingProductLine) {\n                // nothing to do ...\n                return element;\n            }\n            if (_.isString(element)) {\n                // try parse the the string ...\n                let trackingProductLine = TrackingProductLine.forName(element);\n                if (!trackingProductLine) {\n                    throw new Error(`${element} is not a valid product line!`);\n                }\n                return trackingProductLine;\n            }\n            throw new Error(`Unsupported value type ${typeof element}`);\n        });\n        this.productLines = arrayOfEnum;\n    }\n\n    get coTrackingProductLines(): TrackingProductLineControllerBindingType {\n        return this._coTrackingProductLines;\n    }\n\n    get productLinesTrackingString() {\n        return (this.productLines || []).map(productLine => productLine.trackingValue).sort().join(\",\");\n    }\n\n\n}","import {IController, IDirective, IScope} from \"angular\";\nimport {ITrackingAttributesService} from \"../..\";\nimport {TrackingProductLineController} from \"./TrackingProductLineController\";\nimport * as _ from \"underscore\";\n\ncoTrackingAttributes.$inject = ['trackingAttributesService', '$window'];\n\nconst TRACKING_ACTION_KEY: string = \"data-tracking-action\";\nconst TRACKING_DESCRIPTION_KEY: string = \"data-tracking-description\";\nconst ELEMENT_ID_ATTRIBUTE = 'coTrackingAttributesElementId';\nconst ACTION_ATTRIBUTE = 'coTrackingAttributesAction';\n\nconst VALID_TRACKING_ACTION_VALUES: string[] = ['button', 'accordion', 'link', 'radiobutton', 'checkbox', 'close', 'tab', 'form', 'selectionfield'];\nconst TRACKING_DESCRIPTION_PART_DELIMITER = \"_\";\n\n/**\n * This directive is used to add two tracking-attributes to a given element.\n * Those attributes are: \"data-tracking-action\" and \"data-tracking-description\" (see OSD-2338)\n *\n * - coTrackingAttributesAction: used to provide the type of element this directive is used on (despite its name)\n * - coTrackingElementId: used to provide an ID for the element this directive is used on\n *\n */\n\nexport function coTrackingAttributes(trackingAttributesService: ITrackingAttributesService): IDirective {\n\n    return {\n        require: ['^?coTrackingProductLines'], // require the next coTrackingProductLiensController, going upward\n        link: (scope: IScope, element: ng.IAugmentedJQuery, attrs: ng.IAttributes, controllers: IController[]): void => {\n\n            // since this directive doesn't have a controller, we can access the parent controller at [0]\n            const productLinesController = <TrackingProductLineController> controllers[0];\n\n            if (!productLinesController) {\n                // if we throw an error in this case all tests must be wrapped in coTrackingProductLines directive\n                // so we only log an error and ignore this ...\n                console.error(\"Can't render coTrackingAttributes on element - no coTrackingProductLines directive found any parent element\", {element});\n                return;\n            }\n\n            function buildTrackingDescription(productLineString: string, elementId: string): string {\n\n                const application = trackingAttributesService.getApplication();\n                const pageArea = trackingAttributesService.getPageArea();\n\n                if (productLineString && application && pageArea) {\n                    return [application, productLineString, pageArea, elementId].join(TRACKING_DESCRIPTION_PART_DELIMITER);\n                } else {\n                    return null;\n                }\n            }\n\n            const trackingAction = attrs[ACTION_ATTRIBUTE];\n            const elementId = attrs[ELEMENT_ID_ATTRIBUTE];\n\n            // validate bindings\n            if (VALID_TRACKING_ACTION_VALUES.indexOf(trackingAction) === -1) {\n                throw new Error(`Invalid value for \"${trackingAction}\" for ${ACTION_ATTRIBUTE}. Valid values: ${VALID_TRACKING_ACTION_VALUES}`);\n            }\n\n            if (!elementId) {\n                throw new Error(`No value was provided for ${ELEMENT_ID_ATTRIBUTE}. Please provide am ID for the element you are using this directive on.`);\n            }\n\n            // debug mode: visually highlight tracking elements and log attribute values on hover\n            if (trackingAttributesService.isDebuggingEnabled()) {\n                element.css(\"border\", \"3px solid #AB47BC\");\n                element.on(\"mouseenter\", () => {\n                    let debugStyle = \"background: #AB47BC; color: white; border-radius: 2px;\";\n                    let trackingDescription = element.attr(TRACKING_DESCRIPTION_KEY);\n                    console.log(`%c TRACKING-DEBUG: %c action: ${trackingAction} | description: ${trackingDescription}`, debugStyle, \"\");\n                });\n            }\n\n            // since the productLine may change due to user interaction, we have to dynamically update the tracking-description\n            scope.$watch(() => productLinesController.productLinesTrackingString, (newProductLineString: string) => {\n                const trackingDescription = buildTrackingDescription(newProductLineString, elementId);\n                if (trackingDescription) {\n                    element.attr(TRACKING_ACTION_KEY, trackingAction);\n                    element.attr(TRACKING_DESCRIPTION_KEY, trackingDescription);\n                } else {\n                    element.attr(TRACKING_ACTION_KEY, undefined);\n                    element.attr(TRACKING_DESCRIPTION_KEY, undefined);\n                }\n            });\n        }\n    };\n}","import {IController, IDirective, IScope} from \"angular\";\nimport {ITrackingAttributesService} from \"../..\";\nimport {TrackingProductLineController} from \"./TrackingProductLineController\";\nimport * as _ from \"underscore\";\nimport {CsiApp} from \"@shop/js-infrastructure-generic-csi\";\nimport {CsiAppController} from \"../csiApp/CsiAppController\";\n/**\n * This directive is used to add two tracking-attributes to a given element.\n * Those attributes are: \"data-tracking-action\" and \"data-tracking-description\" (see OSD-2338)\n *\n * - coTrackingAttributesAction: used to provide the type of element this directive is used on (despite its name)\n * - coTrackingElementId: used to provide an ID for the element this directive is used on\n *\n */\n\nconst MESSAGE_TYPE = 'tracking-product-lines';\n\nexport function coTrackingAttributesCsi(): IDirective {\n\n    return {\n        require: ['^?coTrackingProductLines', 'coCsiApp'], // require the next coTrackingProductLiensController, going upward\n        link: (scope: IScope, element: ng.IAugmentedJQuery, attrs: ng.IAttributes, controllers: IController[]): void => {\n\n            // since this directive doesn't have a controller, we can access the parent controller at [0]\n            const productLinesController = <TrackingProductLineController> controllers[0];\n            const csiAppController = <CsiAppController> controllers[1];\n\n            if (!productLinesController) {\n                // if we throw an error in this case all tests must be wrapped in coTrackingProductLines directive\n                // so we only log an error and ignore this ...\n                console.error(\"Can't render coTrackingAttributes on element - no coTrackingProductLines directive found any parent element\", {element});\n                return;\n            }\n\n            scope.$watch(() => productLinesController.productLinesTrackingString, (newProductLineString: string) => {\n                csiAppController.send(<any>{\n                    type: MESSAGE_TYPE,\n                    value: newProductLineString\n                })\n            });\n        }\n    };\n}","import {IDirective} from \"angular\";\nimport {TrackingProductLineController} from \"./TrackingProductLineController\";\n\nexport function coTrackingProductLines(): IDirective {\n    return {\n        controller: TrackingProductLineController,\n        // use here a long and very specific controller name ...\n        // this directive has no isolated scope, so the controller will be bound to the parent scope...\n        controllerAs: \"$trackingProductLineController\",\n        bindToController: {coTrackingProductLines: \"<coTrackingProductLines\"},\n    };\n}","import {IDirective} from \"angular\";\n\nexport function coUppercase(): IDirective {\n    return {\n        require: 'ngModel',\n\n        link: (scope, element, attrs, modelCtrl: any) => {\n            modelCtrl.$parsers.push(function (inputValue) {\n                if (inputValue !== undefined) {\n                    var updatedInputValue = inputValue.toUpperCase();\n                    modelCtrl.$setViewValue(updatedInputValue);\n                    modelCtrl.$render();\n\n                    return updatedInputValue;\n                } else {\n                    return inputValue;\n                }\n            });\n        }\n\n    }\n}\n","import {Link} from './Link';\nimport {valueMetaInfo, MetaInfo} from './MetaInfo';\n\n\n\n\n/**\n * This class is used to abstract a call to the server and encapsulates information like url, http method,\n * or data to post. Typically instances of call are created on the server side. The client chooses the appropriate\n * call instance for an action and calls the {@link ICallService} to execute the call and return the result of this\n * call.\n */\nexport class Call<T> {\n\n    static fromObj<T>(obj): Call<T> {\n        if (obj.method === 'POST') {\n            return Call.post<T>(obj.link, obj.data);\n        }\n        else if (obj.method === 'DELETE') {\n            return Call.delete(obj.link);\n        }\n        else {\n            return Call.get<T>(obj.link);\n        }\n    }\n\n    static post<T>(url: string, data: any): PostCall<T> {\n        return new PostCall<T>(new Link(url, null), data);\n    }\n\n    static get<T>(url: string): GetCall<T> {\n        return new GetCall<T>(new Link(url, null));\n    }\n\n    static delete<T>(url: string): DeleteCall<T> {\n        return new DeleteCall<T>(new Link(url, null));\n    }\n\n    static navigateTo(url: string): ConstantCall<NavigationEvent> {\n        var navigationEvent: NavigationEvent = new NavigationEvent(new Link(url, null));\n        return new ConstantCall<NavigationEvent>(navigationEvent);\n    }\n\n    static printCall<T>(call: Call<T>): string {\n        if (call instanceof AbstractCall) {\n            var abstractCall: AbstractCall<T> = <AbstractCall<T>>call;\n            if (abstractCall instanceof GetCall) {\n                var getCall: GetCall<T> = <GetCall<T>>abstractCall;\n                return 'GET ' + getCall.link.uri;\n            }\n            if (abstractCall instanceof PostCall) {\n                var postCall: PostCall<T> = <PostCall<T>>abstractCall;\n                return 'POST (' + JSON.stringify(postCall.data) + ')' + postCall.link.uri;\n            }\n            if (abstractCall instanceof DeleteCall) {\n                var deleteCall: DeleteCall<T> = <DeleteCall<T>>abstractCall;\n                return 'DELETE' + deleteCall.link.uri;\n            }\n        }\n\n        if (call instanceof ConstantCall) {\n            var constantCall: ConstantCall<T> = call;\n            var payload: T = constantCall.constantPayload;\n            if (payload instanceof NavigationEvent) {\n                var navigationEvent: NavigationEvent = <NavigationEvent><any>payload;\n                return 'ConstantCall:NavigationEvent:' + navigationEvent.link.uri;\n            }\n            if (payload instanceof FormSubmitEvent) {\n                var formSubmitEvent: FormSubmitEvent = <FormSubmitEvent><any>payload;\n                return 'ConstantCall:FormSubmitEvent:' + formSubmitEvent.link.uri + ', data ' + JSON.stringify(formSubmitEvent.data);\n            }\n            else {\n                var typeName = Object.prototype.toString.call(payload).slice(8, -1);\n                return 'ConstantCall:' + typeName;\n            }\n        }\n\n        throw new Error('unknown call type')\n    }\n}\n\nexport class AbstractCall<T> extends Call<T> {\n    constructor(public link: Link) {\n        super();\n        argsContract(arguments, 'Link');\n    }\n}\n\nexport class GetCall<T> extends AbstractCall<T> {\n    static META_INFO = () => valueMetaInfo('infrastructure:GetCall', {\n        link: 'Link'\n    });\n\n    constructor(link: Link) {\n        super(link);\n        argsContract(arguments, 'Link');\n    }\n\n    withVariables(variables: { [key: string]: string }): GetCall<T> {\n\n        var urlWithPattern = this.link.uri;\n        var resultUrl = urlWithPattern.replace(/_(\\w+)_/g, function (match, group1) {\n            return variables[group1];\n        });\n\n        return new GetCall(new Link(resultUrl, this.link.mediaType));\n    }\n}\n\nexport class PostCall<T> extends AbstractCall<T> {\n    static META_INFO = () => valueMetaInfo('infrastructure:PostCall', {\n        link: 'Link',\n        data: 'any & !undefined'\n    });\n\n    constructor(link: Link, public data: any) {\n        super(link);\n        argsContract(arguments, 'Link, any');\n    }\n\n    withData(data: any): PostCall<T> {\n        return new PostCall(this.link, data);\n    }\n}\n\nexport class DeleteCall<T> extends AbstractCall<T> {\n    static META_INFO = () => valueMetaInfo('infrastructure:DeleteCall', {\n        link: 'Link'\n    });\n\n    constructor(link: Link) {\n        super(link);\n        argsContract(arguments, 'Link');\n    }\n}\n\nexport class ConstantCall<T> extends Call<T> {\n    static META_INFO = () => valueMetaInfo('infrastructure:ConstantCall', {\n        constantPayload: 'any'\n    });\n\n    constructor(public constantPayload: T) {\n        super();\n        argsContract(arguments, 'any');\n\n    }\n}\n\nexport class NavigationEvent {\n    static META_INFO = () => valueMetaInfo('infrastructure:NavigationEvent', {\n        link: 'Link'\n    });\n\n    constructor(public link: Link) {\n        argsContract(arguments, 'Link');\n    }\n}\n\nexport class FormSubmitEvent {\n    static META_INFO = () => valueMetaInfo('infrastructure:FormSubmitEvent', {\n        link: 'Link',\n        data: 'any & !undefined'\n    });\n\n    constructor(public link: Link, public data: any) {\n        argsContract(arguments, 'Link', 'any');\n    }\n}\n","import {Call} from './Call';\nimport {valueMetaInfo, MetaInfo} from './MetaInfo';\n\n\n\n/**\n * This class is used to abstract a content that is either already resolved or can be lazily loaded.\n * Should be handled by {@link IContentService} to execute resolve the content.\n */\nexport class Content {\n\n    static fromObj(obj): Content {\n        if (obj.contentType === 'RESOLVED') {\n            return Content.resolvedContent(obj.content);\n        }\n        else {\n            return Content.lazyContent(obj.callForContent);\n        }\n    }\n\n    static resolvedContent(content: string): ResolvedContent {\n        return new ResolvedContent(content);\n    }\n\n    static lazyContent(callForContent: Call<Content>): LazyContent {\n        return new LazyContent(callForContent);\n    }\n\n    constructor() {\n    }\n\n}\n\nexport class ResolvedContent extends Content {\n\n    static META_INFO: () => MetaInfo = () => valueMetaInfo('infrastructure:ResolvedContent', {\n        content: 'string'\n    });\n\n    constructor(public content: string) {\n        super();\n        argsContract(arguments, 'string');\n    }\n\n}\n\nexport class LazyContent extends Content {\n\n    static META_INFO: () => MetaInfo = () => valueMetaInfo('infrastructure:LazyContent', {\n        callForContent: 'Call'\n    });\n\n    constructor(public callForContent: Call<string>) {\n        super();\n        argsContract(arguments, 'GetCall');\n    }\n\n}\n","\nimport * as _ from \"underscore\"\n\nexport class DayOfWeekType {\n\n    private static _values: { [s: string]: DayOfWeekType; } = {};\n\n    public static forName(obj): DayOfWeekType {\n        argsContract(arguments, 'str');\n        if (obj === null) {\n            return null;\n        }\n        return DayOfWeekType._values[obj];\n    }\n\n    public static values(): DayOfWeekType[] {\n        return _.values(DayOfWeekType._values);\n    }\n\n    // index mapping based on JS standard\n    public static MONDAY = new DayOfWeekType(\"MONDAY\", 1);\n    public static TUESDAY = new DayOfWeekType(\"TUESDAY\", 2);\n    public static WEDNESDAY = new DayOfWeekType(\"WEDNESDAY\", 3);\n    public static THURSDAY = new DayOfWeekType(\"THURSDAY\", 4);\n    public static FRIDAY = new DayOfWeekType(\"FRIDAY\", 5);\n    public static SATURDAY = new DayOfWeekType(\"SATURDAY\", 6);\n    public static SUNDAY = new DayOfWeekType(\"SUNDAY\", 0);\n\n    constructor(public name: string, public index: number) {\n        argsContract(arguments, 'str, number');\n        DayOfWeekType._values[name] = this;\n    }\n}\n","import {valueMetaInfo, MetaInfo} from './MetaInfo';\n\n/**\n * Generic Error that can be the return value of a failed request.\n */\nexport class GenericRequestError {\n\n    static META_INFO = () => valueMetaInfo('infrastructure:GenericRequestError', {\n        messages: '[string]',\n    });\n\n    messages: string[];\n}\n","/**\n * interface with no methods:\n * just provide an attribute \"value\"\n */\nexport interface Html {\n}\n\nexport abstract class Html{}\n","import {valueMetaInfo, MetaInfo} from './MetaInfo';\n\n\n\n/**\n * This class is used on the client side for a ResolvedLink which is generated in the JSON Mapping from a Link object\n * and LinkResolver\n */\nexport class Link {\n\n    static META_INFO = () => valueMetaInfo('infrastructure:Link', {\n        uri: 'string',\n        mediaType: 'string | null'\n    });\n\n    constructor(public uri: string, public mediaType: string) {\n        argsContract(arguments, 'string, string | null');\n    }\n\n}\n","\n\n\n/**\n * This function is used to construct a new {@link MetaInfo} instance for a value class.\n * @param typeName logical name of this class, this should match the name of the constructor function.\n * @param propertyNamesAndContracts a hash object which keys are the property names of the object and its values\n * are a string that describes the contract of this field {@see https://github.com/okrammer/cs-args-contract}.\n */\nexport function valueMetaInfo(typeName: string, propertyNamesAndContracts: { [propertyName: string]: string }) {\n    argsContract(arguments, 'string, {*: string}')\n    return new MetaInfo(typeName, MetaType.VALUE, propertyNamesAndContracts)\n}\n\n/**\n * This function is used to construct a new {@link MetaInfo} instance for a enum class.\n * @param typeName logical name of this class, this should match the name of the constructor function.\n */\nexport function enumMetaInfo(typeName: string) {\n    argsContract(arguments, 'string')\n    return new MetaInfo(typeName, MetaType.ENUM, null);\n}\n\n\n/**\n * This class encapsulates the meta data of a class that is used to reflect apon it's properties.\n */\nexport class MetaInfo {\n    constructor(public typeName: string,\n                public typeMetaType: MetaType,\n                public propertyNamesAndContracts: { [propertyName: string]: string }) {\n        argsContract(arguments, 'string, MetaType, {*: string} | null')\n\n    }\n}\n\n/**\n * This enum defines two types of classes one for regular values (eg. Entities) and enums.\n */\nexport class MetaType {\n\n    private static _values: { [key: string]: MetaType } = {};\n\n    static ENUM: MetaType = new MetaType('ENUM');\n    static VALUE: MetaType = new MetaType('VALUE');\n\n    constructor(public name: string) {\n        argsContract(arguments, 'string')\n        MetaType._values[name] = this;\n    }\n}\n","import {MetaInfo, valueMetaInfo} from './MetaInfo';\nimport {Link} from './Link';\n\nexport class PiranhaLoginFormDataValue {\n\n    static META_INFO: MetaInfo = valueMetaInfo('infrastructure:PiranhaLoginFormDataValue', {\n            IDToken1: 'string | null',\n            IDToken2: 'string | null',\n            goto: 'Link | null'\n        }\n    );\n\n    IDToken1: string;\n    IDToken2: string;\n    goto: Link;\n\n    setCredentials(login: string, password: string) {\n        this.IDToken1 = login;\n        this.IDToken2 = password;\n    }\n\n}\n","import {Call} from './Call';\nimport {TrackingInfoValue} from './TrackingInfoValue';\n\n/**\n * any object that provides\n * tracking infos can implement trackable\n * and is thus - indeed - Trackable.\n */\nexport interface Trackable {\n\n    /**\n     * marks an object as holder for tracking data.\n     */\n    trackingInfoCall: Call<TrackingInfoValue>;\n}\n\nexport abstract class Trackable{}\n","import {MetaInfo, valueMetaInfo} from './MetaInfo';\n\n/**\n * Implements a wrapper for tracking data, typically holds a raw json.\n */\nexport class TrackingInfoValue {\n\n    static META_INFO: MetaInfo = valueMetaInfo('infrastructure:TrackingInfoValue', {\n        rawContent: 'string | null',\n    });\n\n    rawContent: string;\n}\n","// import {enumMetaInfo} from \"./MetaInfo\";\n\nimport {enumMetaInfo, MetaInfo} from \"./MetaInfo\";\n\nexport type TrackingProductLineName = 'SIM_ONLY' | 'HARDWARE_ONLY' | 'BUNDLE' | 'DSL' | 'GADGETS';\n\nexport class TrackingProductLine {\n\n    public static readonly META_INFO:MetaInfo = enumMetaInfo(\"infrastructure:TrackingProductLine\");\n\n    private static readonly VALUES: { [key: string]: TrackingProductLine } = {};\n\n    public static readonly SIM_ONLY = new TrackingProductLine('SIM_ONLY', 'simOnly');\n    public static readonly HARDWARE_ONLY = new TrackingProductLine('HARDWARE_ONLY', 'hardwareOnly');\n    public static readonly BUNDLE = new TrackingProductLine('BUNDLE', 'bundle');\n    public static readonly DSL = new TrackingProductLine('DSL', 'dsl');\n    public static readonly GADGETS = new TrackingProductLine('GADGETS', 'gadgets');\n\n    public static forName(name: string): TrackingProductLine{\n        return TrackingProductLine.VALUES[name] || null;\n    }\n\n    private constructor(public readonly name: TrackingProductLineName, public readonly trackingValue: string) {\n        TrackingProductLine.VALUES[name] = this;\n    }\n\n\n    /**\n     * This method is for safe compare of enum instances.\n     * Angular may create copies from enums during scope checks ... so we use a compare of a value attribute instead of\n     * the identity.\n\n     * @param {TrackingProductLine} other\n     * @returns {boolean} true if it is the same enum instance.\n     */\n    public is(other: TrackingProductLine): boolean{\n        if(!other){\n            return false;\n        }\n        return this.name === other.name;\n    }\n}\n\n","/**\n * interface with no methods:\n * just provide an attribute \"value\"\n * call valueOf() to get the value\n */\nexport interface Url {\n}\n\nexport abstract class Url{}\n","/**\n * converts a number to a string with a\n * fixed decimal size. Only used to display\n * prices in the UI.\n */\nexport class DisplayMoney {\n\n    euros: string;\n    cents: string;\n    currency = \"€\";\n\n    constructor(public amount: number, currency: string = \"€\") {\n        if (amount == undefined) {\n            return;\n        }\n        var money = amount.toFixed(2).toString();\n        var values: string[] = money.split('.');\n        this.euros = values[0];\n        this.cents = values[1];\n        this.currency = currency;\n    }\n}\n","import {DisplayMoney} from './DisplayMoney';\n\nexport function coCentsFilter() {\n    return function (input: number): string {\n        return new DisplayMoney(input).cents;\n    }\n}\n","import {DisplayMoney} from './DisplayMoney';\n\nexport function coEuroFilter() {\n    return function (input: number): string {\n        return new DisplayMoney(input).euros;\n    }\n}\n","import {DisplayMoney} from './DisplayMoney';\n\nexport function coPriceFilter() {\n    return function (input: number, displayZeroAs: string): string {\n        var money = new DisplayMoney(input);\n        if (!money.euros || !money.cents) {\n            return '';\n        }\n        if (displayZeroAs != undefined && money.euros == \"0\" && money.cents == \"00\") {\n            return displayZeroAs;\n        }\n        else {\n            return money.euros + ',' + money.cents + ' ' + money.currency;\n        }\n    }\n}\n","import {ISCEService} from \"angular\";\n\ncoUnsafeHtmlFilter.$inject = ['$sce'];\n\nexport function coUnsafeHtmlFilter($sce: ISCEService) {\n    return function (input: String) {\n        return $sce.trustAsHtml(input);\n    }\n}\n","export function classToFactory(ctor: any): any {\n    var dependencies = ctor.$inject || [];\n    var factoryFunction = function () {\n        var instance = Object.create(ctor.prototype);\n        ctor.apply(instance, arguments);\n\n        var initFunction = instance['$onInit'];\n        if (initFunction) {\n            initFunction.apply(instance);\n        }\n\n        return instance;\n    };\n    return [].concat(dependencies).concat([factoryFunction]);\n}\n","import * as angular from \"angular\";\nimport * as $ from \"jquery\";\n\n\nimport {createLoggerService, ILogger} from '../service/LoggerService';\nimport {createUtils} from '../service/Utils';\n\n/**\n * This logger is initialised lazy by calling the #logger() function.\n */\nvar _logger: ILogger = null;\n\n// exported snapshot object ...\nexport var snapshot = {\n    /**\n     * This function is used to boot a pre-rendered page, this is done by the following steps:\n     * 1.) find the script tag that contains the original body source\n     * 2.) take the content of the script tag\n     * 3.) unescape the script tags in the body source\n     * 4.) parse the unescaped body source\n     * 5.) extract all js script tags\n     * 6.) remove the body of the document\n     * 7.) insert the original body source\n     * 8.) boot angular\n     * 9.) load and execute the java script tags that has been extracted before in 5.)\n     * 10.) celebrate!\n     */\n    boot() {\n        // registering on dom ready boot script ...\n        logger().info('original body -- searching');\n\n        // find the script tag that contains the body\n        var $bodyContentScript = $('script#originalBodyContent');\n        if ($bodyContentScript.length === 1) {\n            logger().info('original body -- found');\n        } else if ($bodyContentScript.length === 0) {\n            error('original body -- not found');\n        } else {\n            error('original body -- more than one found');\n        }\n\n        logger().info('unescaping original body content');\n        // the origianl body content is the text in the script tag ...\n        var escapedBodySource = $bodyContentScript.text();\n\n        if (!escapedBodySource) {\n            error('unescaping original body content -- no content found!')\n        }\n\n        // all script tags are escaped ... we must first unescaped them ...\n        var bodySource = escapedBodySource.replace(/<([\\/\\s]*)__script__([^>]*)>/ig, '<$1script$2>');\n\n        // parse the body so we can modify its content ...\n        var newBody = $(bodySource);\n\n\n        // If we let jquery replace the body with js script elements, these elements are loaded async and out of order\n        // so we extract the script tags and load one script after the other to ensure the right order ...\n        var scriptsToLoad = extractJsScriptElements(newBody);\n\n        // first replace the body and boot angular ... all other body scripts are evaluated afterwards ...\n        // if an error is thrown angular is still up and running ...\n        replaceBodyAndBootAngular(newBody, 'coApp');\n\n        // reverse the order of the array so we can use Array#pop()\n        scriptsToLoad.reverse();\n\n        // start adding script after script and at the end replace the remaining body elements ...\n        setTimeout(\n            () => {\n                logger().info(\"Begin loading scripts in body tag ...\");\n                loadNextScript(\n                    scriptsToLoad,\n                    () => onFinishBoot()\n                );\n\n            },\n            0\n        );\n\n    }\n};\n\n/**\n * Remove all script tags that are of type javascript or have no type and return the removed elements.\n */\nfunction extractJsScriptElements(newBody): JQuery[] {\n    var jsScriptElements = [];\n    newBody.find(\"script\").each((idx, scriptElement) => {\n        var script = $(scriptElement);\n        var type = script.attr(\"type\")\n\n        // only process javascript types\n        if (type && !/.*javascript.*/.test(type.toLowerCase())) {\n            return;\n        }\n\n        script.remove();\n        jsScriptElements.push(script);\n    });\n\n    return jsScriptElements;\n}\n\n/**\n * Replace the body content with the newBody content and starts the supplied angular applicaiton.\n *\n * @param newBody the original body without javascript tags.\n * @param appName the name of the angular application that should be booted.\n */\nfunction replaceBodyAndBootAngular(newBody: JQuery, appName: string) {\n    logger().info('replacing body');\n    //var bodyHtml = newBody[0].outerHTML;\n    //$('body').html(bodyHtml);\n    $('body').children().remove();\n    $('body').append(newBody);\n\n    logger().info('booting angular -- app: ' + appName);\n    if (!angular) {\n        error('booting angular -- \\'angular\\' not found');\n    }\n    angular.bootstrap(document, [appName]);\n    logger().info('booting angular -- done');\n}\n\n\n/**\n * Load or execute the first script tag in the array and remove it.\n * If it is a reference load it via ajax and execute it, if it is a inline script execute it immediately.\n * After the execution of the script the function is invoked recursively.\n * If the array is empty execute the onDone callback.\n */\nfunction loadNextScript(scriptsToLoad: JQuery[], onDone: () => void) {\n\n    // check if we have loaded all scripts ...\n    if (scriptsToLoad.length === 0) {\n        // call the onDone callback ...\n        onDone();\n        return;\n    }\n\n    // remove the top script from the array ...\n    var script = scriptsToLoad.pop();\n    var src = script.attr('src');\n\n    // check if it is a script ref or a inline script\n    if (src) {\n\n        // if its a ref load it via jquery and after the ajax call returns load the next ...\n        logger().info('loading script: ' + src);\n        $.ajax({\n            async: true,\n            url: src,\n            dataType: \"script\",\n            success: (data) => {\n                logger().info('finished loading ... loading next');\n                loadNextScript(scriptsToLoad, onDone);\n            }\n        });\n    } else {\n\n        // if its a inline script ... put it into the page directly ... and load the next ...\n        logger().info('appending inline script: ' + script.text());\n        $('head').append(script);\n        loadNextScript(scriptsToLoad, onDone);\n    }\n}\n\n/**\n * get a logger or construct one on the fly...\n */\nfunction logger(): ILogger {\n    if (!_logger) {\n        // create the logger lazy so we are sure we are independent of the order of js packaging\n        _logger = createLoggerService(createUtils()).create('snapshot');\n    }\n    return _logger;\n}\n\n/**\n * Log a error message and throw an error.\n */\nfunction error(msg): void {\n    logger().error(msg);\n    throw new Error('SNAPSHOT -- ' + msg);\n}\n\nfunction onFinishBoot(): void {\n\n    logger().info(\"Done loading scrip   ts in body tag\")\n\n    logger().info('sending event tel.app.init to init bootstrap');\n    $(document).trigger('tel.app.init');\n\n    /**\n     * TODO (poslekk) - Temporary initialisation of CMS functions\n     * Should be removed once snapshotting is compatible with bindings of non-live events.\n     */\n    var anyWindow = <any>window;\n\n    if ((anyWindow).$.fn.responsiveTabs) {\n        (<any>$('.nav.nav-tabs')).responsiveTabs();\n    }\n\n    if ((anyWindow).webapp) {\n        if ((anyWindow).webapp.cmpModal) {\n            (anyWindow).webapp.cmpModal.init();\n        }\n        if ((anyWindow).webapp.cmpTopOffer) {\n            (anyWindow).webapp.cmpTopOffer.init();\n        }\n    }\n\n}\n","import {createLoggerService, ILogger} from '../service/LoggerService';\nimport {createUtils} from '../service/Utils';\nimport * as _ from \"underscore\";\n\n\n/**\n * This class is used as a parameter for tracking callbacks.\n */\nexport class TrackingData {\n    constructor(public pageValue: {}) {\n    }\n}\n\n/**\n * Class for global instance to test the class and not a global object.\n */\nexport class Tracking {\n\n    private _logger: ILogger = null;\n\n    /**\n     * This function is used to get the current page value.\n     * This must be a function to evaluate the pageValueSource only if there are any 'prepare' scripts, so no that the\n     * pageValue can be lazy for testing.\n     */\n    private _pageValueSource: () => {} = null;\n\n    /**\n     * This variable is used to store the tracking function that should be invoked or null if the function should be\n     * invoked immediate.\n     */\n    private _prepareTrackingFunctions: { (data: TrackingData): void; } [] = [];\n\n\n    /**\n     * This function is used to add a function to prepare the tracking data. This function is invoked when all\n     * tracking data is available or instantly if the tracking data is already available.\n     */\n    prepare(fn: (data: TrackingData) => void) {\n        if (this._prepareTrackingFunctions !== null) {\n            this._prepareTrackingFunctions.push(fn);\n        } else {\n            this.invokeTrackingFunction(fn);\n        }\n\n    }\n\n    /**\n     * This function is used to setup the function that returns the pageValue of this site as part of the tracking data.\n     * The first invocation of this function triggers already added prepare functions.\n     */\n    setupPageValueSource(pageValueSource: () => {}) {\n        this._pageValueSource = pageValueSource;\n        this.tryDoInit()\n    }\n\n    /**\n     * This function is used check if setup is completed and then run the stored _prepareTrackingFunctions.\n     */\n    private tryDoInit() {\n        // check if all tracking data is set ...\n        // at the moment only the pageValue is used...\n        if (this.isSetupComplete() && this._prepareTrackingFunctions !== null) {\n            _.forEach(this._prepareTrackingFunctions, (fn) => this.invokeTrackingFunction(fn));\n            this._prepareTrackingFunctions = null;\n        }\n    }\n\n    /**\n     * Checks if all needed setup values are set. At the moment only pageValueSource is checked possible there may be\n     * other values.\n     */\n    private isSetupComplete(): boolean {\n        return this._pageValueSource !== null;\n    }\n\n    /**\n     * This function is used to invoke a tracking function within its own event callback and surrounded with try/catch.\n     */\n    private invokeTrackingFunction(fn) {\n        // invoke the function in own interpreter run and within try catch block ... max security ;)\n        // check if this is fine for GTM event ordering ...\n        setTimeout(\n            () => {\n                var data = new TrackingData(this._pageValueSource.call(null));\n                try {\n                    fn.call(null, data);\n                } catch (error) {\n                    this.logger().warn('Error invoking tracking function!', {fn: fn, error: error})\n                }\n            },\n            0\n        );\n    }\n\n\n    private logger() {\n        if (!this._logger) {\n            // create the logger lazy so we are sure we are independent of the order of js packaging\n            this._logger = createLoggerService(createUtils()).create('tracking');\n        }\n        return this._logger;\n    }\n\n}\n\n/**\n * global instance\n * @type {commerce.common.Tracking}\n */\nexport var tracking = new Tracking();\n","/// <reference types=\"@shop/args-contract-types\" />\n/// <reference types=\"@types/node\" />\n\nimport * as angular from \"angular\";\nimport \"reflect-metadata\";\n// imports to tell browserify we want to include this modules ...\nimport {loadModuleCommerceCommon} from './common_module';\nimport {loadModuleCommerceCommonValidationService} from './common_validation_service_module';\nimport {loadModuleCommerceCommonValidation} from './common_validation_module';\nimport {loadModuleCommerceCommonValidationSemantic} from './common_validation_semantic_module';\n\nexport {valueMetaInfo, enumMetaInfo} from './domain/MetaInfo';\nexport {classToFactory} from './global/coNg';\nexport {tracking} from './global/tracking';\nexport {createUtils, IUtilsService} from './service/Utils';\nexport {createLoggerService, ILogger, ILoggerService} from './service/LoggerService';\nexport {CallService} from './service/CallService';\nexport {PageValueProvider} from './service/PageValueProvider';\nexport {IPageValueProvider} from './service/IPageValueProvider';\nexport {TrackingService} from './service/TrackingService';\nexport {IMappingServiceProvider} from './service/IMappingService';\nexport {IValidationRepositoryProvider} from './validation/IValidationRepositoryProvider';\nexport {validationRepositoryProvider} from './validation/ValidationRepositoryProvider'\nexport {coModalInfo} from './directive/modalInfo/coModalInfo';\nexport {coTooltip} from './directive/tooltip/coTooltip';\nexport {coScrollTo} from './directive/scrollTo/coScrollTo';\nexport {coCallAction} from './directive/callAction/coCallAction';\nexport {floatLabel} from './directive/floatLabel/floatLabel';\nexport {coInitializeExternalContent} from './directive/initializeExternalContent/coInitializeExternalContent';\nexport {coTrackingAttributes} from './directive/trackingAttributes/coTrackingAttributes';\nexport {\n    ConstantCall,\n    DeleteCall,\n    GetCall,\n    PostCall,\n    NavigationEvent,\n    FormSubmitEvent,\n    Call,\n    AbstractCall\n} from './domain/Call';\nexport {\n    Content,\n    ResolvedContent,\n    LazyContent\n} from './domain/Content';\nexport {GenericRequestError} from './domain/GenericRequestError';\nexport {Link} from './domain/Link';\nexport {TrackingInfoValue} from './domain/TrackingInfoValue';\nexport {FieldConfiguration} from './validation/FieldConfiguration';\nexport {AcceptanceConstraint} from './validation/constraints/AcceptanceConstraint';\nexport {NumericConstraint} from './validation/constraints/NumericConstraint';\nexport {StringLengthConstraint} from './validation/constraints/StringLengthConstraint';\nexport {RequiredConstraint} from './validation/constraints/RequiredConstraint';\nexport {RegExpConstraint} from './validation/constraints/RegExpConstraint';\nexport {PreventSpecialCharConstraint} from './validation/constraints/PreventSpecialCharConstraint';\nexport {NumberRangeConstraint} from './validation/constraints/NumberRangeConstraint';\nexport {DateRangeConstraint} from './validation/constraints/DateRangeConstraint';\nexport {DateExcludedDatesConstraint} from './validation/constraints/DateExcludedDatesConstraint';\nexport {DateDaysOfWeekConstraint} from './validation/constraints/DateDaysOfWeekConstraint';\nexport {ValidDateConstraint} from './validation/constraints/ValidDateConstraint';\nexport {NameConstraint} from \"./validation/constraints/NameConstraint\";\nexport {EmailConstraint} from './validation/constraints/EmailConstraint';\nexport {InvisibleFieldMappedConstraint} from './validation/constraints/InvisibleFieldMappedConstraint';\nexport {ConditionalConstraint} from './validation/constraints/ConditionalConstraint';\nexport {CallConstraint} from './validation/constraints/CallConstraint';\nexport {coField} from './validation/directive/coField/coField';\nexport {coFieldInput} from './validation/directive/coField/coFieldInput';\nexport {coFieldMessage} from './validation/directive/coField/coFieldMessage';\nexport {coFieldPopover} from './validation/directive/coField/coFieldPopover';\n\nexport {snapshot} from './global/snapshot';\nexport {coClickPreventDefault} from './directive/clickPreventDefault/coClickPreventDefault';\nexport {ExternalService} from './service/ExternalService';\nexport {Injectables} from './decorators/Injectables';\nexport {ValueMetaInfo} from './decorators/ValueMetaInfo';\nexport {ValueMetaProperty} from './decorators/ValueMetaProperty';\nexport {DebugToggle} from './decorators/DebugToggle';\nexport {IExternalService} from './service/IExternalService';\nexport {ICallService} from './service/ICallService';\nexport {IBusyService} from './service/IBusyService';\nexport {IFeedbackService} from './service/IFeedbackService'\nexport {IEventService} from './service/IEventService';\nexport {IContentService} from './service/IContentService';\nexport {ISnapshotService} from './service/SnapshotService';\nexport {IMappingService} from './service/IMappingService';\nexport {ITrackingService} from './service/ITrackingService';\nexport {ITrackingAttributesService} from \"./service/ITrackingAttributesService\";\nexport {TrackingAttributesService} from \"./service/TrackingAttributesService\";\nexport {IAdaptiveService} from './service/IAdaptiveService';\nexport {IRenderModeService} from './service/IRenderModeService';\nexport {IPostUrlService} from './service/PostURLService';\nexport {IValidationRepository} from './validation/IValidationRepository';\nexport {PiranhaLoginFormDataValue} from './domain/PiranhaLoginFormDataValue';\nexport {IConstraint} from \"./validation/constraints/IConstraint\";\nexport {IDebugInfoService} from \"./service/IDebugInfoService\";\nexport * from \"./service/IFlowIdService\";\nexport * from \"./domain/Trackable\";\nexport * from \"./service/RelativLocationService\";\nexport * from \"./domain/Html\";\nexport * from \"./domain/Url\";\n\n// Exports for tests\nexport * from './directive/loader/coLoader';\nexport * from './directive/tracking/coTrackingId';\nexport * from './service/FeedbackService';\nexport * from './service/TrackingService';\nexport * from './service/TrackingAttributesService';\nexport * from './service/AdaptiveService';\nexport * from './service/BusyService';\nexport * from './service/ContentService';\nexport * from './service/DebugInfoService';\nexport * from './service/EventService';\nexport * from './service/MappingService';\nexport * from './service/PageValueProvider';\nexport * from './service/PostURLService';\nexport * from './service/RenderModeService';\nexport * from './service/SnapshotService';\nexport * from './validation/ValidationRepository';\nexport * from './validation/constraints/DateDaysOfWeekConstraint';\nexport * from './validation/constraints/PreventSpecialCharAddressConstraint';\nexport * from './validation/constraints/PreventSpecialCharNameConstraint'\nexport * from './validation/directive/coField/FieldController';\nexport * from './validation/directive/coField/coFieldInputSemantic';\nexport * from './validation/directive/coField/coFieldInput';\nexport * from './validation/directive/coField/coFieldMessage';\nexport * from './validation/directive/coField/coFieldSemantic';\nexport * from './validation/directive/coField/coField';\nexport * from './validation/directive/coField/coFieldMessageSemantic';\nexport * from './validation/AsyncValidationResult';\nexport * from './validation/ValidationStatus';\nexport * from './directive/tracking/TrackingController';\nexport * from './global/tracking';\nexport * from './domain/MetaInfo';\nexport * from './domain/DayOfWeekType'\nexport * from './domain/TrackingProductLine';\nexport * from './directive/trackingAttributes/TrackingProductLineController';\n\n\n\n\n\nimport IAngularBootstrapConfig = angular.IAngularBootstrapConfig;\n\n\nloadModuleCommerceCommon(angular);\nloadModuleCommerceCommonValidationService(angular);\nloadModuleCommerceCommonValidation(angular);\nloadModuleCommerceCommonValidationSemantic(angular);\n\nangular.element(document).ready(() => {\n\n    let appNames = angular.element('meta[name=\"appName\"]').toArray().map((element: Element) => {\n        return angular.element(element).attr('content');\n    });\n    if (appNames.length === 0) {\n        return;\n    }\n\n    angular.module('coApp', appNames);\n\n    let bootApp = angular.element('meta[name=\"bootApp\"]').attr('content');\n    if (!bootApp || bootApp === 'false') {\n        return;\n    }\n\n    let config: IAngularBootstrapConfig = {\n        strictDi: true\n    };\n    angular.bootstrap(document, ['coApp'], config);\n});\n","import {FlowIdService} from \"../service/FlowIdService\";\nimport {MockSettingsService} from \"../service/MockSettingsService\";\n\n\nexport class HeaderInterceptor {\n\n    static $inject = ['flowIdService', 'mockSettingsService'];\n\n    constructor(private flowIdService: FlowIdService, private mockSettingsService: MockSettingsService) {\n\n        // interceptors are called with functions without object handle eg.\n        // flowInterceptor = ...\n        // fn = flowInterceptor.request;\n        // fn(request);\n\n        // use don't use bind to access this because phantomjs dont support this...\n        this['request'] = function (config: ng.IRequestConfig): ng.IRequestConfig {\n            let flowId = flowIdService.getFlowId();\n            if (flowId) {\n                config.headers['flowId'] = flowId;\n            }\n            let mockSettings = mockSettingsService.getMockSettings();\n            if (mockSettings) {\n                config.headers['X-MOCK'] = mockSettings;\n            }\n            return config;\n        };\n    }\n\n}\n","import {AdaptiveState, IAdaptiveService} from './IAdaptiveService';\nimport {ILogger, ILoggerService} from './LoggerService';\nimport {IRenderModeService} from './IRenderModeService';\nimport * as angular from \"angular\";\nimport {IRootScopeService} from \"angular\";\n\nimport * as _ from \"underscore\";\n\n\n/**\n * The adaptive service offers utilities to work with Bootstrap breakpoints.\n */\nexport class AdaptiveService implements IAdaptiveService {\n\n    static $inject = ['$window', 'loggerService', '$rootScope', 'renderModeService'];\n\n    private logger: ILogger;\n    private watching: boolean;\n    private adaptiveState: AdaptiveState;\n\n    constructor(private $window: ng.IWindowService, loggerService: ILoggerService, private $rootScope: IRootScopeService, private renderModeService: IRenderModeService) {\n        this.logger = loggerService.create('commerce.common.AdaptiveService');\n        this.adaptiveState = new AdaptiveState();\n        this.setInitialBreakpoints();\n\n        this.watching = false;\n        this.watchViewport();\n    }\n\n    /**\n     * sets breakpoint sizes. configure breakpoints here.\n     */\n    private setInitialBreakpoints(): void {\n        this.adaptiveState.breakpoints = {\n            lg: 1200,\n            md: 992,\n            sm: 768,\n            xs: 480\n        }\n    }\n\n    /**\n     * Set breakpoint for adaptive recognition.\n     * @param screenWidth Width of the screen for which to set the breakpoint\n     */\n    public setBreakpoint(screenWidth: number): void {\n        if (_.isUndefined(screenWidth)) {\n            this.adaptiveState.currentBreakpoint = undefined;\n        }\n\n        this.adaptiveState.currentBreakpoint =\n            screenWidth >= this.adaptiveState.breakpoints.lg ? 'lg' :\n                screenWidth < this.adaptiveState.breakpoints.lg && screenWidth >= this.adaptiveState.breakpoints.md ? 'md' :\n                    screenWidth < this.adaptiveState.breakpoints.md && screenWidth >= this.adaptiveState.breakpoints.sm ? 'sm' : 'xs';\n    }\n\n    /**\n     * Override breakpoint with the needed value\n     * @param breakpoint Example: 'lg' or 'sm'\n     */\n    public overrideBreakpoint(breakpoint: string) {\n        this.adaptiveState.currentBreakpoint = breakpoint;\n    }\n\n    /**\n     * Return the current breakpoint\n     * @returns {string} Example: 'lg' or 'sm'\n     */\n    public getBreakpoint(): string {\n        return this.adaptiveState.currentBreakpoint;\n    }\n\n    public getWidthForBreakpoint(breakpoint: string): number {\n        return this.adaptiveState.breakpoints[breakpoint];\n    }\n\n    /**\n     * Check if the current breakpoint corresponds to the entering array of valid breakpoints\n     * @param breakpoints Array of breakpoints that are accepted\n     * @returns {boolean}\n     */\n    public checkBreakpoints(breakpoints: string[]): boolean {\n        // If we're in prerender mode (snapshotting), always ask as if you're in desktop mode (lg or md breakpoints)\n        if (this.renderModeService.isPrerender()) {\n            return _.contains(breakpoints, 'lg')\n                || _.contains(breakpoints, 'md');\n        }\n\n        return _.contains(breakpoints, this.getBreakpoint());\n    }\n\n    /**\n     * Start the viewport watcher\n     */\n    private watchViewport(): void {\n        if (this.watching) {\n            return;\n        }\n        this.watching = true;\n\n        this.setBreakpoint(this.$window.innerWidth);\n        var timeoutRunning = undefined;\n\n        angular.element(this.$window).on('resize', () => {\n            // Keep running timeouts until the user is done with resizing\n            if (!_.isUndefined(timeoutRunning)) {\n                this.$window.clearTimeout(timeoutRunning);\n            }\n\n            timeoutRunning = this.$window.setTimeout(() => {\n                /*\n                 Do a digest loop each time the breakpoint is set.\n                 It's needed because the resize element on window doesn't fire an Angular digest loop.\n                 There is no danger of multiple digest cycles because we're in setTimeout and\n                 the event loop won't allow for multiple digest cycles (stack clearing).\n                 */\n                this.$rootScope.$apply(() => {\n                    this.setBreakpoint(this.$window.innerWidth);\n                    timeoutRunning = undefined;\n                });\n            }, 300);\n        });\n    }\n}\n","import {IBusyService} from './IBusyService';\n\n\nexport class BusyService implements IBusyService {\n\n    private busyProcesses: number = 0;\n\n    private _title: string = null;\n    private _subtitle: string = null;\n    private _titleSlow: string = null;\n    private _subtitleSlow: string = null;\n    private _slowTimeout: number = null;\n\n    constructor() {\n    }\n\n    isBusy(): boolean {\n        return this.busyProcesses !== 0;\n    }\n\n    busy<T>(promise: ng.IPromise<T>, loaderConfig?: {\n        title: string,\n        subtitle: string,\n        titleSlow: string,\n        subtitleSlow: string,\n        slowTimeout: number\n    }): ng.IPromise<T> {\n        this.busyProcesses++;\n        this.setConfig(loaderConfig);\n        return promise.then((t: T) => {\n            this.decrementBusyProcesses();\n            return t;\n        }, (t: T) => {\n            this.decrementBusyProcesses();\n            return t;\n        });\n    }\n\n    busyWithPreservedPromise<T>(promise: ng.IPromise<T>, loaderConfig?: {\n        title: string,\n        subtitle: string,\n        titleSlow: string,\n        subtitleSlow: string,\n        slowTimeout: number\n    }): ng.IPromise<T> {\n        this.busyProcesses++;\n        this.setConfig(loaderConfig)\n        return promise.finally(() => this.decrementBusyProcesses());\n    }\n\n    private setConfig(loaderConfig?: { title: string; subtitle: string; titleSlow: string; subtitleSlow: string; slowTimeout: number }) {\n        if (loaderConfig) {\n            this._title = loaderConfig.title;\n            this._subtitle = loaderConfig.subtitle;\n            this._titleSlow = loaderConfig.titleSlow;\n            this._subtitleSlow = loaderConfig.subtitleSlow;\n            this._slowTimeout = loaderConfig.slowTimeout;\n        }\n    }\n\n    private decrementBusyProcesses(): void {\n        this.busyProcesses--;\n        if (this.busyProcesses == 0) {\n            this._title = null;\n            this._subtitle = null;\n        }\n    }\n\n    public get title(): string {\n        return this._title;\n    }\n\n    public get subtitle(): string {\n        return this._subtitle;\n    }\n\n    public get titleSlow(): string {\n        return this._titleSlow;\n    }\n\n    public get subtitleSlow(): string {\n        return this._subtitleSlow;\n    }\n\n    get slowTimeout(): number {\n        return this._slowTimeout;\n    }\n}\n","import {IMappingService} from './IMappingService';\nimport {ILogger, ILoggerService} from './LoggerService';\nimport {IBusyService} from './IBusyService';\nimport {ICallService} from './ICallService';\nimport {IPostUrlService} from './PostURLService';\nimport {\n    AbstractCall,\n    Call,\n    ConstantCall,\n    DeleteCall,\n    FormSubmitEvent,\n    GetCall,\n    NavigationEvent,\n    PostCall\n} from '../domain/Call';\nimport {Link} from '../domain/Link';\n\nimport * as _ from \"underscore\";\nimport {IDocumentService, IHttpPromise, IHttpService, IPromise, IQService, IWindowService} from \"angular\";\n\n\nexport class CallService implements ICallService {\n\n    static $inject = ['$document', '$http', '$window', 'mappingService', '$q', 'busyService', 'postUrlService', 'loggerService'];\n\n    static RECURSION_LIMIT: number = 10;\n\n    private logger: ILogger;\n\n    constructor(private $document: IDocumentService,\n                private $http: IHttpService,\n                private $window: IWindowService,\n                private mappingService: IMappingService,\n                private $q: IQService,\n                private busyService: IBusyService,\n                private postUrlService: IPostUrlService,\n                private loggerService: ILoggerService) {\n        this.logger = loggerService.create('commerce.common.MappingService');\n    }\n\n    handleCall<T>(call: Call<T>, recursionCounter: number = 0): ng.IPromise<T> {\n        argsContract(arguments, 'Call, number?');\n        this.logger.debug('CallService.handleCall: ' + JSON.stringify(call));\n\n        if (recursionCounter >= CallService.RECURSION_LIMIT) {\n            throw new Error('Trying to have more than 10 recursive Calls, this looks like an infinite loop... ');\n        }\n\n        if (call instanceof ConstantCall) {\n            return this.handleConstantCall(<ConstantCall<T>>call);\n        } else {\n            // otherwise we do a ajax call\n            var restCall: AbstractCall<T> = <AbstractCall<T>>call;\n            var resultPromise: ng.IPromise<T> = this.doExec(restCall);\n\n            return resultPromise.then((p: any): ng.IPromise<T> => {\n                // check if the result is a constant call (e.g. navigationEvent)...\n                if (p instanceof ConstantCall) {\n                    var constantCall: ConstantCall<T> = <ConstantCall<T>>p;\n                    return this.handleCall(constantCall, recursionCounter + 1);\n                }\n                // or a AbstractCall\n                if (p instanceof AbstractCall) {\n                    var abstractCall: AbstractCall<T> = <AbstractCall<T>>(<any>p);\n                    return this.handleCall(abstractCall, recursionCounter + 1);\n                }\n                return p;\n            }).catch((requestError: any): IPromise<T> => {\n                var deferred = this.$q.defer<T>();\n                var parsedRequestError = this.mappingService.fromJson(requestError.data);\n                deferred.reject(parsedRequestError);\n                var errorPromise: IPromise<T> = deferred.promise;\n                return errorPromise;\n            });\n        }\n    }\n\n    /**\n     * In case of a constant call as it's payload will be returned as a promise.\n     */\n    private handleConstantCall<T>(constantCall: ConstantCall<T>): ng.IPromise<T> {\n        if (constantCall.constantPayload instanceof NavigationEvent) {\n            var navigationEvent: NavigationEvent = <NavigationEvent>(<any>constantCall.constantPayload);\n            this.doRedirect(navigationEvent.link.uri);\n        } else if (constantCall.constantPayload instanceof FormSubmitEvent) {\n            var formSubmitEvent: FormSubmitEvent = <FormSubmitEvent>(<any>constantCall.constantPayload);\n            this.doSubmitForm(formSubmitEvent.link.uri, formSubmitEvent.data);\n        }\n\n        return this.$q.when(constantCall.constantPayload);\n    }\n\n    private doRedirect(url: string): void {\n        CallService.validateUrl(url);\n        this.$window.location.href = url;\n    }\n\n    private doSubmitForm(url: string, data: any): void {\n        CallService.validateUrl(url);\n        var postData: { [key: string]: any } = {};\n        _.each(data, function (value, key) {\n            if (value instanceof Link) {\n                postData[key] = (<Link> value).uri;\n            } else {\n                postData[key] = value;\n            }\n        });\n        this.postUrlService.buildFormAndPostToURL(postData, url);\n    }\n\n    private doExec<T>(call: AbstractCall<T>): IPromise<T> {\n        argsContract(arguments, 'Call, boolean?');\n\n        var promise: IHttpPromise<T>;\n        var headers = {};\n        if (call.link.mediaType !== null) {\n            headers['Content-Type'] = call.link.mediaType;\n\n        }\n        var method;\n        var data;\n        if (call instanceof PostCall) {\n            var jsonData = this.mappingService.toJson((<PostCall<T>>call).data);\n            data = JSON.stringify(jsonData);\n            method = 'POST';\n        } else if (call instanceof GetCall) {\n            method = 'GET';\n        } else if (call instanceof DeleteCall) {\n            method = 'DELETE'\n        } else {\n            throw new Error('Unknown Method of call: ' + call);\n        }\n\n        promise = this.$http(<any>{\n            url: call.link.uri,\n            method: method,\n            data: data,\n            headers: headers,\n            withCredentials: this.isSendRequestWithCredentials(),\n            transformResponse: (data) => {\n                // we do not want to throw an Error in case of an empty response - just pass through...\n                if (!data || 0 === data.length) {\n                    return data;\n                }\n                return JSON.parse(data);\n            }\n        });\n\n        return promise.then((response: ng.IHttpPromiseCallbackArg<any>) => {\n            return this.mappingService.fromJson(response.data);\n        });\n    }\n\n    // ugly workaround to fix CORS issues in DEV environments, but only there!\n    private isSendRequestWithCredentials(): boolean {\n        let metaElement = this.$document.find('meta[name=corsEnabled]');\n        if (metaElement.length !== 0) {\n            return metaElement.attr(\"content\") === 'true';\n        }\n    }\n\n    private static validateUrl(url: string): void {\n        if (!_.isString(url)) {\n            throw new Error('The given URL is not a string!');\n        }\n    }\n\n}\n","import {IContentService} from './IContentService';\nimport {ICallService} from './ICallService';\nimport {Content, LazyContent, ResolvedContent} from '../domain/Content';\n\n\nexport class ContentService implements IContentService {\n\n    static $inject = ['callService', '$q'];\n\n    constructor(private callService: ICallService, private $q: ng.IQService) {\n    }\n\n    resolve(content: Content): ng.IPromise<string> {\n        argsContract(arguments, 'Content');\n\n        if (content instanceof ResolvedContent) {\n            return this.$q.when((<ResolvedContent>content).content);\n        } else if (content instanceof LazyContent) {\n            return this.callService.handleCall((<LazyContent>content).callForContent);\n        } else {\n            throw new Error(\"Unknown type of content.\");\n        }\n    }\n}\n","import {IDebugInfoService} from './IDebugInfoService';\nimport * as angular from \"angular\";\n\n\nexport class DebugInfoService implements IDebugInfoService {\n\n    logDebugInfo(): void {\n        var metaTags = angular.element('meta[name^=debugInfo]').each(function () {\n            let element = <HTMLMetaElement> this;\n            var msg = \"DEBUG INFO AVAILABLE: type:'\" + element.name + \"' info:'\" + element.content + \"'\";\n            //older browsers might not support console.log\n            if (window.console && window.console.log) {\n                window.console.log(msg)\n            }\n        });\n    }\n}\n","import {IEventService} from './IEventService';\nimport * as _ from \"underscore\";\n\n\nexport class EventService implements IEventService {\n\n    private subscribers: { [eventName: string]: Function[] } = {};\n\n    public subscribe(eventName: string, callBack: Function) {\n        if (!this.subscribers[eventName]) {\n            this.subscribers[eventName] = [];\n        }\n        this.subscribers[eventName].push(callBack);\n    }\n\n    public emit(eventName: string, arg?: any) {\n        if (this.subscribers[eventName]) {\n            _.each(this.subscribers[eventName], (callBack: Function) => {\n                try {\n                    arg ? callBack(arg) : callBack();\n                }\n                catch (e) {\n                    console.log('EventService error with eventName \"' + eventName + '\": ', e);\n                    console.log('EventService error message: ', e.message);\n                }\n            });\n        }\n    }\n\n}\n","import {IExternalService} from './IExternalService';\nimport * as $ from \"jquery\";\n\n\nexport class ExternalService implements IExternalService {\n\n    static $inject: string[] = ['$window', '$timeout'];\n\n    constructor(private windowService: ng.IWindowService, private timeoutService: ng.ITimeoutService) {\n    }\n\n    public initExternalApps(): void {\n        let webApp: any = this.windowService['webapp'];\n\n        if (webApp && webApp.initializePlugins) {\n            this.timeoutService(() => {\n                webApp.initializePlugins();\n                $(document).trigger('tel.app.init');\n            }, 0);\n        }\n    }\n\n}\n","import {IFeedbackService} from './IFeedbackService';\n\n\nexport class FeedbackService implements IFeedbackService {\n\n    messages = new FeedbackMessages();\n\n    constructor() {\n    }\n\n    info(message: string): void {\n        this.pushMessage(this.messages.info, message);\n    }\n\n    warn(message: string): void {\n        this.pushMessage(this.messages.warn, message);\n    }\n\n    error(message: string): void {\n        this.pushMessage(this.messages.error, message);\n    }\n\n    private pushMessage(list: string[], message: string) {\n        if (list.indexOf(message) === -1) {\n            list.push(message);\n        }\n    }\n\n    isEmpty(): boolean {\n        return (\n            Object\n                .keys(this.messages)\n                .every(property => this.messages[property].length == 0)\n        );\n    }\n\n    clear(): void {\n        (Object\n                .keys(this.messages)\n                .map(property => this.messages[property].length = 0)\n        );\n    }\n}\n\n// full fledged class for typing the directive logic\nexport class FeedbackMessages {\n    info: string[] = [];\n    warn: string[] = [];\n    error: string[] = [];\n}\n","import {IDocumentService} from \"angular\";\n\n\nexport class FlowIdService {\n\n    static $inject = ['$document'];\n\n    private flowIdString;\n\n    constructor($document: IDocumentService) {\n        var metaElement = $document.find('meta[name=flowId]');\n        if (metaElement.length !== 0) {\n            this.flowIdString = metaElement.attr(\"content\");\n        }\n    }\n\n    getFlowId(): string {\n        return this.flowIdString;\n    }\n\n}\n","export interface IAdaptiveService {\n    setBreakpoint(screenWidth: number): void;\n\n    overrideBreakpoint(breakpoint: string): void;\n\n    getBreakpoint(): string;\n\n    getWidthForBreakpoint(breakpoint: string): number;\n\n    checkBreakpoints(breakpoints: string[]): boolean;\n}\n\nexport class AdaptiveState {\n    currentBreakpoint: string;\n    breakpoints: {\n        lg: number;\n        md: number;\n        sm: number;\n        xs: number;\n    }\n}\n","import {IPromise} from \"angular\";\n\nexport interface IBusyService {\n\n    busy<T>(promise: IPromise<T>, config?: {\n        title: string,\n        subtitle: string,\n        titleSlow: string,\n        subtitleSlow: string,\n        slowTimeout: number\n    }): IPromise<T>;\n\n    busyWithPreservedPromise<T>(promise: IPromise<T>, config?: {\n        title: string,\n        subtitle: string,\n        titleSlow: string,\n        subtitleSlow: string,\n        slowTimeout: number\n    }): IPromise<T>;\n\n    isBusy(): boolean;\n\n    title: string;\n    subtitle: string;\n    titleSlow: string;\n    subtitleSlow: string;\n    slowTimeout: number;\n\n}\n\nexport class IBusyService {\n    static injectableName: string = 'busyService';\n}\n","import {Call} from '../domain/Call';\nimport {IPromise} from \"angular\";\n\n/**\n * This interface is used to abstract a call to the server on a higher level than the $http service.\n */\nexport interface ICallService {\n    handleCall<T>(call: Call<T>, recursionCounter?): IPromise<T>;\n}\n\nexport class ICallService {\n    static injectableName: string = 'callService';\n}\n","import {Content} from '../domain/Content';\nimport {IPromise} from \"angular\";\n\nexport interface IContentService {\n\n    /**\n     * Resolve the string for the given content, i.e. fetch content from server if lazy, otherwise just return.\n     */\n    resolve(content: Content): IPromise<string>\n}\n\nexport class IContentService {\n}\n","/**  Logs debug infos into console if any available\n *  Debug infos are currently provided as meta tag with pattern 'debugInfo:*'\n *  Example: <meta name=\"debugInfo:invalidTariffProduct\" content=\"debug msg\">\n */\nexport interface IDebugInfoService {\n    logDebugInfo(): void;\n}\n\nexport abstract class IDebugInfoService{}\n","export interface IEventService {\n    subscribe(eventName: string, callBack: Function): void;\n\n    emit(eventName: string, ...args: any[]): void;\n}\n\nexport class IEventService {\n    static injectableName: string = 'eventService';\n}\n","export interface IExternalService {\n    initExternalApps(): void;\n}\n\nexport class IExternalService {\n    static injectableName: string = 'externalService';\n}\n","export interface IFeedbackService {\n    info(message: string): void;\n\n    warn(message: string): void;\n\n    error(message: string): void;\n\n    isEmpty(): boolean;\n\n    clear(): void;\n}\n\nexport class IFeedbackService {\n    static injectableName: string = 'feedbackService';\n}\n","export interface IFlowIdService {\n    getFlowId(): string;\n\n    setFlowId(id: string): void;\n}\n\nexport abstract class IFlowIdService{}\n","/**\n * This interface is used to type a constructor function that has a META_INFO field for the metaData information.\n * The field can be the MetaInfo itself of a function that construct the metaInfo lazy, this can be required if the\n * order in which the files are concatenated is not specified.\n */\nimport {IServiceProvider} from \"angular\";\nimport {MetaInfo} from \"..\";\n\n/**\n * A constructor function with a META_INFO property.\n * Don't use NewableType here because Enums will not have a accessible constructor.\n */\nexport interface AnnotatedConstructor extends Function {\n\n    prototype: {}\n\n    META_INFO?: MetaInfo | (() => MetaInfo)\n}\n\nexport interface IMappingServiceProvider extends IServiceProvider {\n\n    /**\n     * This function is used to register a constructor that has a metaInfo 'annotation', this done be defining a static\n     * META_INFO field on the class by calling {@link commerce.common.valueMetaInfo()} or\n     * {@link commerce.common.enumMetaInfo()}\n     * @param ctor a constructor with the META_INFO field.\n     */\n    addAnnotatedType(ctor: AnnotatedConstructor): void\n\n    /**\n     * This function is used to register a non standard javascript type (eg. Date, Regex, etc.).\n     * @param typeName The logical type name that is used to mark the type in json.\n     * @param isType A function that is used to check for this type in the object graph when it is serialized\n     *              _to_ JSON.\n     * @param fromJson A function that can construct an instance of the registered type from a deserialized\n     *                 JSON object.\n     * @param toJson A function that is used to construct a javascript object that is serialized to JSON from an\n     *               instance of the registered type.\n     */\n    addCustomType<T>(typeName: string, isType: (obj: T) => boolean, fromJson: (json: any) => T, toJson: (obj: T) => any): void\n\n    /**\n     * This function is used to instantiate a new MappingService instance.\n     * Primary for testing purpose.\n     */\n    createMappingService(loggerService): IMappingService;\n\n\n}\n\nexport class IMappingServiceProvider {\n    static injectableName: string = 'mappingServiceProvider';\n}\n\n/**\n * This service is used to map between value classes in javascript and javascript objects that are deserialized from\n * JSON. Any type that should be serialized or deserialized must be registered first by the provider via a call to\n * {@link #addAnnotatedType} or {@link #addCustomType}.\n */\nexport interface IMappingService {\n\n\n    /**\n     * This function takes a javascript object graph that is returned form json deserialization and creates\n     * a new typed object graph based on the registered types.\n     */\n    fromJson(json: any, config?: IMappingConfig): any;\n\n    /**\n     * This function takes a typed object graph based on the registered types and returns a javascript object graph\n     * that can be serialized to json.\n     */\n    toJson(value: any, config?: IMappingConfig): any;\n}\n\nexport interface IMappingConfig {\n    path?: string\n    failOnUndefined?: boolean\n    validate?: boolean\n}\n","export interface IPageValueProvider<T> {\n\n    /**\n     * This method reads the pageValue from the page and returns with every invocation the same mapped instance.\n     */\n    getPageValue(name?: string): T\n\n    /**\n     * This method creates for every call a new mapped pageValue instance.\n     */\n    createPageValue(name?: string): T\n}\n\nexport class IPageValueProvider<T> {\n    static injectableName: string = 'pageValueProvider';\n    static defaultPageValueName: string = 'pageValue';\n}\n","/**\n * This Service resolves the render mode for the current request.\n */\nexport interface IRenderModeService {\n    /**\n     * Returns true if the current render mode if 'prerender'.\n     */\n    isPrerender(): boolean;\n\n\n}\n\nexport class IRenderModeService {\n}\n","export interface ITrackingAttributesService {\n    getApplication(): string;\n\n    getPageArea(): string;\n\n    isDebuggingEnabled(): boolean;\n}\n\nexport class ITrackingAttributesService {\n};\n","import {TrackingInfoValue} from '../domain/TrackingInfoValue';\nimport {Call} from '../domain/Call';\nimport {IPromise} from \"angular\";\n\n/**\n * Tracking Service\n */\nexport interface ITrackingService {\n    /**\n     * allows to track the given data.\n     * @param data\n     */\n    track(call: Call<TrackingInfoValue>): IPromise<any>;\n}\n\nexport class ITrackingService {\n};\n","import {IUtilsService} from './Utils';\nimport * as _ from \"underscore\";\n\n\n'use strict';\n\nexport interface ILogger {\n    name: string\n\n    error(subject: string, context?: {});\n\n    warn(subject: string, context?: {});\n\n    info(subject: string, context?: {});\n\n    debug(subject: string, context?: {});\n\n    sub(name: string): ILogger\n}\n\nexport interface ILoggerService {\n    DEBUG: number;\n    INFO: number;\n    WARN: number;\n    ERROR: number;\n\n    create(name: string): ILogger\n\n    config: ILoggerConfigService\n}\n\nexport class ILoggerService {\n    static injectableName: string = 'loggerService';\n}\n\nexport interface ILoggerConfigService {\n    set(config: {}): void\n\n    get(): {}\n\n    add(name: string, level: number): void\n\n    reset(): void\n\n    fromUrl(url: string): void\n}\n\ncreateLoggerService.$inject = ['utils'];\n\nexport function createLoggerService(utils: IUtilsService) {\n    'use strict';\n    var LEVELS = {\n        OFF: 40,\n        ERROR: 30,\n        WARN: 20,\n        INFO: 10,\n        DEBUG: 0\n    };\n\n    var DEFAULT_CONFIG = {\n        '*': LEVELS.ERROR,\n        'commerce.log.*': LEVELS.INFO\n    };\n\n    /**\n     * The Logger used to log system events in the log package,\n     * it is initialised as noop object and will will be replaced\n     * after the base log infrastructure is initialized.\n     *\n     * @type {{error: Function, warn: Function, info: Function, debug: Function}} a logger instance.\n     */\n    var logLogger: ILogger = {\n        name: 'logLogger',\n        error: function (subject: string, context?: {}) {\n        },\n        warn: function (subject: string, context?: {}) {\n        },\n        info: function (subject: string, context?: {}) {\n        },\n        debug: function (subject: string, context?: {}) {\n        },\n        sub: function (name: string) {\n            return null;\n        }\n    };\n\n    var logFunctionFactory = function (levelName) {\n        if (typeof(window['console']) === 'undefined') {\n            return function () {\n            };\n        }\n        var consoleFunction = window['console'][levelName.toLowerCase()];\n\n        if (!_.isFunction(consoleFunction)) {\n            return function () {\n                consoleFunction = window['console']['log'];\n            };\n        }\n        return function () {\n            consoleFunction.apply(window['console'], arguments);\n        };\n    };\n\n    /**\n     * currently set config\n     * The key should be a pattern string with '*' as wildcard\n     * The value is a number or string of the required level.\n     */\n    var currentConfig = {};\n\n    /**\n     * Compiled config rules\n     * @type {Array<CompiledRule>}\n     *\n     */\n    var currentCompiledConfig = [];\n\n    function CompiledRule(regexp, level, pattern) {\n        this.regexp = regexp;\n        this.level = level;\n        this.pattern = pattern;\n    }\n\n    /**\n     * This function tries to create an error level from a number or a string.\n     * @param {string|number} level A errror level representated as a number or as a error level name,\n     * the case does not matter.\n     * @return {number}\n     */\n    function interpreteLevel(level) {\n        if (typeof level === 'string') {\n            return LEVELS[level.toUpperCase().trim()] || LEVELS.DEBUG;\n        }\n        if (typeof level === 'number') {\n            return level;\n        }\n        logLogger.warn('Failed to interprete level!', {level: level});\n        return LEVELS.DEBUG;\n    }\n\n    /**\n     * This function compiles a config object by creating RegExp objects from the string keys\n     * and tries to interprete the value as an error level.\n     *\n     * @param {{}} config The key must be a string, the value could be a string or a number.\n     */\n    function compileConfig(config) {\n        var pattern;\n\n        var compiledConfig = [];\n        for (pattern in config) {\n            if (config.hasOwnProperty(pattern)) {\n                // escape '.' in pattern and replace stars with '.*' for regexp processing\n                var regexp = utils.regExpFromSimplePattern(pattern);\n                compiledConfig.push(new CompiledRule(regexp, interpreteLevel(config[pattern]), pattern));\n            }\n        }\n\n        // sort rules so that the longest rules are applied first\n        return compiledConfig.sort(function (obj1, obj2) {\n            return obj2.pattern.length - obj1.pattern.length;\n        });\n    }\n\n    /**\n     * This function compiles and loads an config object.\n     * @param {{}} config\n     */\n    function loadLogConfig(config) {\n        try {\n            currentCompiledConfig = compileConfig(config);\n            currentConfig = config;\n        } catch (e) {\n            logLogger.error('Failed compiling config!', {config: config, exception: e});\n        }\n    }\n\n    /**\n     * This function stores the config in local storage and set it as current config.\n     * @param {{}} config\n     */\n    function setLogConfig(config) {\n        var localStorage = utils.getLocalStorage();\n        if (localStorage !== null) {\n            logLogger.info('writing config to local storage', {config: config});\n            localStorage['logConfig'] = JSON.stringify(config);\n        } else {\n            logLogger.warn('Can not set log config, no local storage supported!', undefined);\n        }\n        loadLogConfig(config);\n    }\n\n    /**\n     * This function retrieve the current config from local storage.\n     */\n    function getLogConfig() {\n        var currentLogSettings = DEFAULT_CONFIG;\n        var localStorage = utils.getLocalStorage();\n        if (localStorage) {\n            var configString = localStorage['logConfig'];\n            if (configString) {\n                try {\n                    currentLogSettings = JSON.parse(configString);\n                } catch (e) {\n                    logLogger.error(\n                        'Failed reading config from local storage!',\n                        {string: configString, exception: e}\n                    );\n                }\n            }\n        }\n        return currentLogSettings;\n    }\n\n    /**\n     * This function adds a new rule to the current log config.\n     * @param {string} loggerNamePart A pattern to filter the logger name, with '*' as wildcard character.\n     * @param {string|number} level The log level that should be applied to the matched logger,\n     * can be the log level name or the log level number.\n     */\n    function addLogConfig(loggerNamePart, level) {\n        var config = getLogConfig();\n        config[loggerNamePart] = level;\n        setLogConfig(config);\n    }\n\n    /**\n     * This function reset the log config to the default value.\n     */\n    function resetLogConfig() {\n        setLogConfig(DEFAULT_CONFIG);\n        logLogger.info('config reset', undefined);\n    }\n\n    /**\n     * This function extracts the value of the jsLogConfig parameter from an url string.\n     * @param {string} url that should be parsed.\n     * @return {string} the value of the url parameter.\n     */\n    function getLogConfigStringFromUrl(url) {\n        var regexp = new RegExp('[?&]jsLogConfig=([\\'\"a-zA-Z0-9._:,*]+)');\n        var match = regexp.exec(url);\n        return (match && match[1]) || '';\n    }\n\n    /**\n     * This function parses an string to an object which keys and values are strings.\n     * Each entry is separated by an ',' and key and value is separated by ':'\n     *\n     * @param {string} configString a string in the format \"key:value,key1:value2\"\n     * that should be parsed to an object.\n     *\n     * @return {{}}\n     */\n    function parseConfigString(configString) {\n        var rules = configString.split(',');\n        var config = {};\n        var i;\n        for (i = 0; i < rules.length; i += 1) {\n            var rule = rules[i];\n            var tokens = rule.split(':');\n            if (tokens.length === 2) {\n                config[tokens[0]] = tokens[1];\n            }\n        }\n        return config;\n    }\n\n    /**\n     * Reads the current url of the browser and searches for the query parameter\n     * 'jsLogConfig' and constructs a log config from its value.\n     * This config is stored in the local storage to survives a page reload.\n     */\n    function setupLogConfigFromUrl() {\n        var url = window.location.href;\n\n        // find the url parameter value in a basic way without help of a lib\n        var configString = getLogConfigStringFromUrl(url);\n        if (configString.length !== 0) {\n            if (configString === 'reset') {\n                resetLogConfig();\n            } else {\n                var config = parseConfigString(configString);\n                logLogger.info('found config in page url', {config: config});\n                setLogConfig(config);\n            }\n        } else {\n            loadLogConfig(getLogConfig());\n        }\n    }\n\n    /**\n     * simple utilitiy function to create a readable string representation of a integer log level.\n     * @param {number} level the log level.\n     * @return {string} the string representation.\n     */\n    function levelToString(level) {\n        var levelName;\n\n        for (levelName in LEVELS) {\n            if (LEVELS.hasOwnProperty(levelName) && level === LEVELS[levelName]) {\n                return levelName;\n            }\n        }\n        return 'UNKNOWN';\n    }\n\n    /**\n     * This function determines if a message should be suppressed according to the log config.\n     *\n     * @param {string} loggerName of the message.\n     * @param {number} level the log level of the message.\n     * @return {boolean} if true the message should not be processed.\n     */\n    function isMessageSuppressed(loggerName, level) {\n        var i,\n            configRule;\n\n        for (i = 0; i < currentCompiledConfig.length; i += 1) {\n            configRule = currentCompiledConfig[i];\n            if (configRule.regexp.exec(loggerName)) {\n                return configRule.level > level;\n            }\n        }\n        return false;\n    }\n\n\n    /**\n     * This function implements the actual logging to the Console object.\n     *\n     * @param {string} loggerName the logical name of a logger, this should correspond to the namespace\n     *                    of the object that logs the message.\n     * @param {number} level the log level of the message.\n     * values that should be logged with the message.\n     * @return {function(*)} returns a functions that supports variable arguments that are all logged.\n     */\n    function createLogFunction(loggerName, level) {\n\n        var levelName = levelToString(level);\n        var evt = '[';\n        evt += levelName;\n        evt += '][';\n        evt += loggerName;\n        evt += ']';\n\n\n        return function () {\n            if (isMessageSuppressed(loggerName, level)) {\n                return;\n            }\n            var array = [];\n            array.push(evt);\n            for (var i = 0; i < arguments.length; i += 1) {\n                var arg = arguments[i];\n                array.push(arg);\n            }\n            logFunctionFactory(levelName).apply(null, array);\n        };\n    }\n\n    /**\n     * Function that creates a new logger object for the supplied loggerName.\n     * a object that contains a function for each log level.\n     */\n    function createLogObject(loggerName): ILogger {\n        var levelName,\n            logger = {};\n\n        for (levelName in LEVELS) {\n            if (LEVELS.hasOwnProperty(levelName) && levelName !== 'OFF') {\n                logger[levelName.toLowerCase()] = createLogFunction(loggerName, LEVELS[levelName]);\n            }\n        }\n        logger['name'] = loggerName;\n        logger['sub'] = function (subName) {\n            return createLogObject(loggerName + \"/\" + subName);\n        };\n        return <ILogger>logger;\n    }\n\n    function setupLogFunctionFactory(f) {\n        if (typeof(f) !== 'function') {\n            throw new TypeError('LogFunctionFactory must be a Function');\n        }\n        logFunctionFactory = f;\n    }\n\n    // create a logger instance for the usage in the log package\n    logLogger = createLogObject('commerce.common.log');\n\n    setupLogConfigFromUrl();\n\n\n    // publish api\n    var logService: ILoggerService = {\n        create: createLogObject,\n        DEBUG: LEVELS.DEBUG,\n        INFO: LEVELS.INFO,\n        WARN: LEVELS.WARN,\n        ERROR: LEVELS.ERROR,\n        config: {\n            'set': setLogConfig,\n            'get': getLogConfig,\n            'add': addLogConfig,\n            'reset': resetLogConfig,\n            'fromUrl': setupLogConfigFromUrl\n        }\n    };\n    return logService;\n}\n","import {MetaInfo, MetaType} from '../domain/MetaInfo';\nimport {AnnotatedConstructor, IMappingConfig, IMappingService, IMappingServiceProvider} from './IMappingService';\nimport {ILogger, ILoggerService} from './LoggerService';\nimport * as _ from \"underscore\";\n\n\nexport function mappingServiceProvider(): IMappingServiceProvider {\n\n    var annotatedTypes: AnnotatedConstructor[] = [];\n    var customTypes: CustomType[] = [];\n\n    // exposed here to circumvent 'this' reference...\n    function createMappingService(loggerService) {\n        return new MappingService(loggerService, annotatedTypes, customTypes);\n    }\n\n    return {\n\n        createMappingService: createMappingService,\n\n        $get: ['loggerService', (loggerService: ILoggerService) => {\n            return createMappingService(loggerService);\n        }],\n\n        addCustomType: function <T>(typeName: string,\n                                    isType: (obj: T) => boolean,\n                                    fromJson: (json: any) => T,\n                                    toJson: (obj: T) => any): void {\n            argsContract(arguments, 'string, function, function, function');\n            customTypes.push(new CustomType(typeName, isType, fromJson, toJson));\n        },\n\n        addAnnotatedType: function (ctor: AnnotatedConstructor): void {\n            argsContract(arguments, 'function & {META_INFO: (func | MetaInfo)}');\n            annotatedTypes.push(ctor);\n        }\n    };\n\n}\n\n\n/**\n * This service maps between untyped objects that are created from json to TypeScript classes.\n * To use this service the ts class and type safe enums must define a static field of type MetaInfo.\n * Every class that should be mapped must be registered via the addType method.\n */\nclass MappingService implements IMappingService {\n\n    static $inject = ['loggerService'];\n    /**\n     * this string is used to add and extract type information to and from the json graph.\n     */\n    private static TYPE_INFO_PROPERTY = '@type';\n\n    /**\n     * this string is the property name that is used to place or extract the name of a enum constant.\n     */\n    private static ENUM_NAME_PROPERTY = 'name';\n\n    private logger: ILogger;\n\n    private annotatedTypes: { [key: string]: CtorWithMetaInfo } = {};\n    private customTypes: { [key: string]: CustomType } = {};\n\n    constructor(loggerService: ILoggerService, annotatedTypes: AnnotatedConstructor[], customTypes: CustomType[]) {\n        argsContract(arguments, '{}, {}, {}');\n        this.logger = loggerService.create('commerce.common.MappingService');\n        _.forEach(annotatedTypes, (ctor) => this.addAnnotatedType(ctor));\n        _.forEach(customTypes, (customType) => this.addCustomType(customType));\n    }\n\n    private addAnnotatedType(ctor: AnnotatedConstructor): void {\n        argsContract(arguments, 'function & {META_INFO: (func | MetaInfo)}');\n\n\n        //replace the function for constructing the metaInfo with its result\n        // the function my be needed to solve the resolution problem if the class that use the\n        // commerce.common.valueMetaInfo() function before it is defined, this can happen if the packaging of the\n        // js app don't define a order for the files.\n        if (_.isFunction(ctor.META_INFO)) {\n            ctor.META_INFO = (<() => MetaInfo>ctor.META_INFO)();\n        }\n\n        // okey now this function is in every case compatible\n        var ctorWithMetaInfo: CtorWithMetaInfo = <any>ctor;\n\n        var typeName = ctorWithMetaInfo.META_INFO.typeName;\n        if (!typeName) {\n            this.reportError('Type name is empty or null!', null, {\n                typeName: typeName,\n                newCtor: ctor,\n                registeredCtors: this.annotatedTypes\n            });\n        }\n        var existingCtor = this.annotatedTypes[typeName];\n        if (existingCtor) {\n            this.reportError('Type name already registered!', null, {\n                typeName: typeName,\n                existingCtor: existingCtor,\n                newCtor: ctor,\n                registeredCtors: this.annotatedTypes\n            });\n        }\n\n        this.annotatedTypes[typeName] = ctorWithMetaInfo;\n    }\n\n    private addCustomType(customType: CustomType): void {\n        argsContract(arguments, 'CustomType');\n        this.customTypes[customType.typeName] = customType;\n    }\n\n    fromJson(json: any, config?: IMappingConfig): any {\n        return this.fromJsonImpl(json, MappingOptions.fromObj(config));\n    }\n\n\n    fromJsonImpl(json: any, options: MappingOptions): any {\n\n        if (options.failOnUndefined && _.isUndefined(json)) {\n            this.reportError('Encountered \"undefined\" value!', options.path, {json: json});\n        }\n        if (json === null) {\n            return null;\n        }\n\n        if (_.isArray(json)) {\n            return _.map(json, (value: any, index: number) =>\n                this.fromJsonImpl(value, options.withPathSegment('[' + index + ']'))\n            );\n        }\n\n\n        if (_.isObject(json)) {\n            var typeInfo: string = json[MappingService.TYPE_INFO_PROPERTY];\n            if (!typeInfo) {\n                // okay used as simple value object ... no type information ...\n                var result = {};\n                _.each(json, (value: any, key: string) =>\n                    result[key] = this.fromJsonImpl(value, options.withPathSegment('.' + key))\n                );\n                return result;\n            }\n\n            return this.fromTypedJson(json, typeInfo, options);\n        }\n\n        return json;\n\n    }\n\n\n    private fromTypedJson(json: any, typeInfo: string, options: MappingOptions): any {\n\n        var ctor: CtorWithMetaInfo = this.annotatedTypes[typeInfo];\n        if (ctor) {\n            if (ctor.META_INFO.typeMetaType === MetaType.ENUM) {\n                return this.enumFromTypedJson(json, ctor, options);\n            } else if (ctor.META_INFO.typeMetaType === MetaType.VALUE) {\n                return this.valueFromTypedJson(json, ctor, options);\n            }\n            this.reportError('Unknown metaType: \"' + ctor.META_INFO + '\"',\n                options.path, {\n                    typeInfo: typeInfo,\n                    metaType: ctor.META_INFO,\n                    json: json,\n                    knownAnnotatedConstructors: this.annotatedTypes\n                }\n            );\n        }\n\n        var customType: CustomType = this.customTypes[typeInfo];\n        if (customType) {\n            return customType.fromJson(json);\n        }\n\n        this.reportError('Unknown metaType: \"' + typeInfo + '\"', options.path, {\n            typeInfo: typeInfo,\n            json: json,\n            knownAnnotatedConstructors: this.annotatedTypes\n        });\n    }\n\n    private valueFromTypedJson(json: any, ctorWithMetaInfo: CtorWithMetaInfo, options: MappingOptions) {\n\n        var metaInfo = ctorWithMetaInfo.META_INFO;\n        var properties = {};\n        _.each(\n            metaInfo.propertyNamesAndContracts,\n            (contract: string, name: string) => {\n                var newOptions = options.withPathSegment('.' + name);\n                var value = this.fromJsonImpl(json[name], newOptions);\n                this.checkValueAgainstContract(value, contract, newOptions);\n                properties[name] = value;\n            }\n        );\n\n        var result = Object.create(ctorWithMetaInfo.prototype);\n        _.extend(result, properties);\n        return result;\n    }\n\n    private enumFromTypedJson(json: any, ctorWithMetaInfo: CtorWithMetaInfo, options: MappingOptions) {\n        var enumTypeName = ctorWithMetaInfo.META_INFO.typeName;\n\n        var enumName = json[MappingService.ENUM_NAME_PROPERTY];\n        if (!enumName) {\n            this.reportError('Invalid json for enum!', options.path, {\n                json: json,\n                enumConstructor: ctorWithMetaInfo,\n                enumTypeName: enumTypeName\n            });\n        }\n\n        var enumValue = ctorWithMetaInfo[enumName];\n        if (!enumValue) {\n            this.reportError('Invalid enum name!', options.path, {\n                enumName: enumName,\n                enumConstructor: ctorWithMetaInfo,\n                enumTypeName: enumTypeName\n            });\n        }\n        return enumValue;\n    }\n\n\n    private checkValueAgainstContract(value: any, contract: string, options: MappingOptions) {\n        if (!options.validate) {\n            return;\n        }\n        try {\n            argsContract([value], contract);\n        } catch (e) {\n            if (e.name === 'ContractViolation') {\n                this.reportError('Contract for value violated!', options.path, {\n                    contract: contract,\n                    value: value\n                });\n            }\n            throw e;\n        }\n    }\n\n    private reportError(message: string, debugPath: string, args?: any) {\n        if (debugPath) {\n            args = _.extend({path: debugPath}, args);\n        }\n\n        this.logger.error(message, args);\n\n        var exceptionMessage = message + ' ';\n        _.each(args, (value: any, name: string) => {\n            exceptionMessage += (name + '=' + value + '; ');\n        });\n\n        throw new Error(exceptionMessage);\n    }\n\n    toJson(value: any, config?: IMappingConfig): any {\n        return this.toJsonImpl(value, MappingOptions.fromObj(config));\n    }\n\n    toJsonImpl(value: any, options: MappingOptions): any {\n\n        if (_.isUndefined(value)) {\n            if (options.failOnUndefined) {\n                this.reportError('Encountered undefined value!', options.path, {});\n            } else {\n                return value;\n            }\n\n        }\n        if (_.isNull(value)) {\n            return null;\n        }\n        if (_.isArray(value)) {\n            return _.map(value, (element: any, index: number) => {\n                return this.toJsonImpl(\n                    element,\n                    options.withPathSegment('[' + index + ']')\n                );\n            });\n        }\n\n        var customType: CustomType = _.find(this.customTypes, (ct: CustomType) => ct.isType(value));\n        if (customType) {\n            var obj = customType.toJson(value);\n            obj[MappingService.TYPE_INFO_PROPERTY] = customType.typeName;\n            return obj;\n        }\n\n        if (_.isObject(value)) {\n            var metaInfo: MetaInfo = value.constructor && value.constructor.META_INFO;\n            if (metaInfo) {\n                if (!(metaInfo instanceof MetaInfo)) {\n                    this.reportError('Invalid META_INFO field on ctor!', options.path, {\n                        metaInfo: metaInfo,\n                        value: value\n                    });\n                }\n\n                if (metaInfo && metaInfo.typeMetaType === MetaType.ENUM) {\n                    return this.enumToJson(value, metaInfo, options);\n                }\n\n                if (metaInfo && metaInfo.typeMetaType === MetaType.VALUE) {\n                    return this.valueToJson(value, metaInfo, options);\n                }\n            } else {\n                return this.objectToJson(value, options);\n            }\n        }\n\n        return value;\n    }\n\n    private valueToJson(value: any, metaInfo: MetaInfo, options: MappingOptions): any {\n        var obj = {};\n        obj[MappingService.TYPE_INFO_PROPERTY] = metaInfo.typeName;\n        _.each(metaInfo.propertyNamesAndContracts, (contract: string, key: string) => {\n            var propertyValue = value[key];\n            this.checkValueAgainstContract(propertyValue, contract, options.withPathSegment('.' + key));\n            obj[key] = this.toJsonImpl(propertyValue, options)\n        });\n        return obj;\n    }\n\n    private enumToJson(value: any, metaInfo: MetaInfo, options: MappingOptions): any {\n        var obj = {};\n        var enumTypeName = metaInfo.typeName;\n        var enumValue = value[MappingService.ENUM_NAME_PROPERTY];\n        if (!enumValue) {\n            this.reportError('Failed building json from enum, \"' + MappingService.ENUM_NAME_PROPERTY +\n                '\" is undefined or null!',\n                options.path, {\n                    enumObject: value,\n                    enumTypeName: enumTypeName\n                });\n        }\n        obj[MappingService.TYPE_INFO_PROPERTY] = enumTypeName;\n        obj[MappingService.ENUM_NAME_PROPERTY] = enumValue;\n        return obj;\n    }\n\n    private objectToJson(value: any, options: MappingOptions): any {\n        var obj = {};\n        _.each(value, (value: any, key: string) =>\n            obj[key] = this.toJsonImpl(value, options.withPathSegment('.' + key))\n        );\n        return obj;\n    }\n}\n\nclass MappingOptions {\n\n    static fromObj(obj: IMappingConfig): MappingOptions {\n\n        // use a default set on values and override these with the values supplied by the user ...\n        var config = _.extend({\n            path: 'ROOT',\n            failOnUndefined: true,\n            validate: true\n        }, obj);\n        // convert the parameter from the untrusted object to the right types ...\n        return new MappingOptions(\n            config.path.toString(),\n            config.failOnUndefined === true,\n            config.validate === true\n        )\n    }\n\n    constructor(public path: string,\n                public failOnUndefined: boolean,\n                public validate: boolean) {\n    }\n\n    withPathSegment(pathAddition: string) {\n        return new MappingOptions(this.path + pathAddition, this.failOnUndefined, this.validate);\n    }\n}\n\n\nclass CustomType {\n    constructor(public typeName: string,\n                public isType: (obj: any) => boolean,\n                public fromJson: (json: any) => any,\n                public toJson: (obj: any) => any) {\n    }\n}\n\n\ninterface CtorWithMetaInfo {\n    prototype: any\n    META_INFO: MetaInfo\n}\n","import {IDocumentService} from \"angular\";\n\nexport class MockSettingsService {\n\n    static $inject = ['$document'];\n\n    private mockSettingsString;\n\n    constructor($document: IDocumentService) {\n        var metaElement = $document.find('meta[name=mock]');\n        if (metaElement.length !== 0) {\n            this.mockSettingsString = metaElement.attr(\"content\");\n        }\n    }\n\n    getMockSettings(): string {\n        return this.mockSettingsString;\n    }\n\n}\n","import {IPageValueProvider} from './IPageValueProvider';\nimport {IMappingService} from './IMappingService';\nimport * as angular from \"angular\";\n\n\nexport class PageValueProvider<T> implements IPageValueProvider<T> {\n    static $inject = ['mappingService'];\n\n    private pageValueJsons: { [name: string]: {} } = {};\n    private pageValues: { [name: string]: T } = {};\n\n    constructor(private mappingService: IMappingService) {\n    }\n\n    getPageValue(name?: string): T {\n\n        let pageValueName = name ? name : IPageValueProvider.defaultPageValueName;\n\n        if (!this.pageValues[pageValueName]) {\n            this.pageValues[pageValueName] = this.createPageValue(pageValueName);\n        }\n\n        return this.pageValues[pageValueName];\n    }\n\n    public createPageValue(name?: string): T {\n        let pageValueName = name ? name : IPageValueProvider.defaultPageValueName;\n\n        return <T> this.mappingService.fromJson(this.getPageValueJson(pageValueName));\n    }\n\n    private getPageValueJson(name: string) {\n        if (!this.pageValueJsons[name]) {\n            var pageValueString = angular.element('script#' + name).html();\n            this.pageValueJsons[name] = JSON.parse(pageValueString);\n        }\n\n        return this.pageValueJsons[name];\n    }\n}\n","import {ILogger, ILoggerService} from './LoggerService';\n\nexport interface IPostUrlService {\n    buildFormAndPostToURL(data: { [key: string]: string }, targetURL: string): void\n\n    setFormSubmitCallback(callback: (data: { [key: string]: any }, targetURL: string) => void)\n\n    resetCallback();\n}\n\nexport class PostUrlService implements IPostUrlService {\n    static $inject = ['loggerService'];\n\n    private logger: ILogger;\n    private callback: (data: { [key: string]: any }, targetURL: string) => void = null;\n\n    constructor(loggerService: ILoggerService) {\n        this.logger = loggerService.create('commerce.common.PostURLService');\n    }\n\n    buildFormAndPostToURL(data: { [key: string]: any }, targetURL: string) {\n        this.callback(data, targetURL);\n    }\n\n    setFormSubmitCallback(callback: (data: { [key: string]: any }, targetURL: string) => void) {\n\n        if (this.callback) {\n            this.logger.error('callback already registered by another dude.', {callback: callback});\n            throw new Error('callback already registered by another dude.')\n        }\n        this.callback = callback;\n    }\n\n    resetCallback() {\n        this.callback = null;\n    }\n}\n","import {Call, ConstantCall, NavigationEvent} from '../domain/Call';\nimport {ILocationService} from \"angular\";\n\nexport interface IRelativeLocationService {\n    pushState(targetURL: string): void;\n\n    pushCallToState(targetCall: Call<any>): void\n}\n\nexport class RelativeLocationService implements IRelativeLocationService {\n    static $inject = ['$location'];\n\n    constructor(private $location: ILocationService) {\n    }\n\n    pushState(targetURL: string) {\n        var baseRelativeTabUrl = targetURL;\n        baseRelativeTabUrl = baseRelativeTabUrl\n            .replace(/^(https?:)?\\/\\/[^\\/]*/, '')\n            .replace($('head').find('base').attr('href'), '');\n\n        /*\n         OSD-441: Workaround to enable switching to the default tab in hardware catalog with query parameters\n         e.g. from /tablets?tarif=o2-blue-all-in-m to /?tarif=o2-blue-all-in-m\n         without the leading slash (/?) the url won't get updated in the browser\n         */\n        if (baseRelativeTabUrl.charAt(0) === '?') {\n            baseRelativeTabUrl = '/' + baseRelativeTabUrl;\n        }\n\n        this.$location.url(baseRelativeTabUrl).replace();\n    }\n\n    pushCallToState(targetCall: Call<any>): void {\n        if (targetCall instanceof ConstantCall) {\n            if (targetCall.constantPayload instanceof NavigationEvent) {\n                this.pushState(targetCall.constantPayload.link.uri);\n                return;\n            }\n        }\n        throw new Error('can only push ConstantCall containing NavigationEvent');\n    }\n}\n","import {IDocumentService} from \"angular\";\n\nexport class RenderModeService {\n\n    static $inject = ['$document'];\n\n    private renderMode;\n\n    constructor($document: IDocumentService) {\n        var metaElement = $document.find('meta[name=renderMode]');\n        if (metaElement.length !== 0) {\n            this.renderMode = metaElement.attr(\"content\");\n        }\n    }\n\n    isPrerender(): boolean {\n        return this.renderMode === 'prerender';\n    }\n}\n","import {IRootScopeService} from \"angular\";\n\nexport interface ISnapshotService {\n    snapshot()\n}\n\nexport class SnapshotService implements ISnapshotService {\n    static $inject = ['$rootScope'];\n\n    private snapShotRequested: boolean = false;\n    private digestCycleRun: boolean;\n\n    constructor(private $rootScope: IRootScopeService) {\n\n        $rootScope.$watch(() => {\n            this.digestCycleRun = true;\n        });\n    }\n\n    private triggerSnapShot() {\n        if (typeof window['callPhantom'] == 'function') {\n            window['callPhantom']();\n        }\n        this.snapShotRequested = false;\n    }\n\n    /**\n     * we use setTimeout and not the $timeout service as $timeout triggers a digest cycle\n     * and we would get caught in an infinite loop\n     */\n    private triggerSnapshotIfNoDigestCycleRun() {\n        if (this.snapShotRequested && !this.digestCycleRun) {\n            this.triggerSnapShot();\n        } else {\n            this.digestCycleRun = false;\n            window.setTimeout(() => {\n                this.triggerSnapshotIfNoDigestCycleRun()\n            }, 0);\n        }\n    }\n\n    snapshot() {\n        this.snapShotRequested = true;\n        this.$rootScope.$evalAsync(() => { // fire after $digest\n            window.setTimeout(() => {\n                this.triggerSnapshotIfNoDigestCycleRun()\n            }, 0);\n        });\n    }\n}\n","import {IWindowService} from \"angular\";\nimport {ITrackingAttributesService} from \"./ITrackingAttributesService\";\n\nexport class TrackingAttributesService implements ITrackingAttributesService {\n\n    static $inject = ['$window'];\n    private debug: boolean;\n    private pageArea: string;\n\n    constructor(private $window: IWindowService) {\n    }\n\n    $onInit(): void{\n        let debugMetaElementContent = this.getMetaElementContent('commerce_debug_modes');\n        this.debug = debugMetaElementContent && debugMetaElementContent.indexOf('tracking') !== -1;\n\n        this.pageArea = this.getMetaElementContent('pagearea');\n\n        if(!this.pageArea){\n            console.error(\"Could not find <meta name='pagearea' content='...'/> - no tracking attributes will be rendered!\");\n        }\n    }\n\n    getApplication(): string {\n        return \"e-shop\";\n    }\n\n    getPageArea(): string {\n        return this.pageArea;\n    }\n\n    isDebuggingEnabled(): boolean {\n        return this.debug;\n    }\n\n    private getMetaElementContent(name: string): string {\n        let metaElement = this.$window.document.querySelector(`meta[name=${name}]`);\n        return  (metaElement && metaElement['content']) || null;\n\n    }\n}\n","import {ITrackingService} from './ITrackingService';\nimport {ICallService} from './ICallService';\nimport {ILogger, ILoggerService} from './LoggerService';\nimport {TrackingInfoValue} from '../domain/TrackingInfoValue';\nimport {Call} from '../domain/Call';\nimport {IPromise, IWindowService} from \"angular\";\nimport * as _ from \"underscore\";\n\n\nexport class TrackingService implements ITrackingService {\n\n    static $inject = ['callService', '$window', 'loggerService'];\n\n    private logger: ILogger;\n\n    constructor(private callService: ICallService, private $window: IWindowService, private loggerService: ILoggerService) {\n        this.logger = loggerService.create('commerce.common.ITrackingService');\n    }\n\n    track(call: Call<TrackingInfoValue>): IPromise<any> {\n        if (_.isNull(call) || _.isUndefined(call)) {\n            return;\n        }\n\n        //resolve the call to get the tracking info\n        var promise: IPromise<TrackingInfoValue> = this.callService.handleCall(call);\n        return promise.then((result: TrackingInfoValue) => {\n            //when tracking data was resolved\n            if (this.$window['tefDataLayer']) {\n                try {\n                    this.logger.info(\"Logging Event : \", {\n                        'content': result.rawContent\n                    });\n                    //push to tefDataLayer\n                    this.$window['tefDataLayer'].push(JSON.parse(result.rawContent));\n                } catch (e) {\n                    //ignore by intention\n                    this.logger.error(e);\n                }\n            }\n        });\n    }\n\n}\n","export interface IUtilsService {\n    regExpFromSimplePattern(patternString: string): RegExp\n\n    getLocalStorage(): Storage\n}\n\n\n/**\n * Function to access local storage if available defined here to be accessible by the log package.\n * @return {null | Storage} The local storage or null if no local storage is available.\n */\nfunction getLocalStorage(): Storage {\n    if (typeof(Storage) !== 'undefined') {\n        try {\n            if (window.localStorage) {\n                window.localStorage.setItem('test', 'test');\n                window.localStorage.removeItem('test');\n                return window.localStorage;\n            }\n        } catch (e) {\n        }\n    }\n    return null;\n}\n\n\n/**\n * Creates a regular expression that match a simple string pattern that contains '*' for any string.\n * The string can only contain word characters and '.'.\n * @return {RegExp}\n */\nfunction regExpFromSimplePattern(patternString) {\n    argsContract(arguments, 'str');\n    if (!/^[\\w.:/*]*$/.test(patternString)) {\n        throw new Error(\"Failed compiling '\" + patternString + \"' illegal character found!\");\n    }\n    return new RegExp(patternString.replace(/\\./g, '\\\\.').replace(/\\*/g, '.*'));\n}\n\nexport function createUtils(): IUtilsService {\n    return {\n        getLocalStorage: getLocalStorage,\n        regExpFromSimplePattern: regExpFromSimplePattern\n    }\n}\n","import {ValidationStatus} from './ValidationStatus';\nimport {MetaInfo, valueMetaInfo} from '../domain/MetaInfo';\n\n/**\n * Validation Result of an async call (Remote Validation)\n */\nexport class AsyncValidationResult {\n\n    static META_INFO: MetaInfo = valueMetaInfo('infrastructure:AsyncValidationResult', {\n        validationStatus: 'ValidationStatus',\n    });\n\n    constructor(public validationStatus: ValidationStatus) {\n    }\n}\n","import {IConstraint} from './constraints/IConstraint';\nimport {ValueMetaInfo} from '../decorators/ValueMetaInfo';\nimport {ValueMetaProperty} from '../decorators/ValueMetaProperty';\nimport {RequiredConstraint} from './constraints/RequiredConstraint';\n\n@ValueMetaInfo('infrastructure:FieldConfiguration')\nexport class FieldConfiguration {\n\n    @ValueMetaProperty('string | null')\n    name: string;\n\n    @ValueMetaProperty()\n    enabled: boolean;\n\n    @ValueMetaProperty()\n    visible: boolean;\n\n    @ValueMetaProperty('{}[]')\n    constraints: IConstraint[];\n\n    public constructor(name: string, enabled: boolean, visible: boolean, constraints: IConstraint[]) {\n        this.name = name;\n        this.enabled = enabled;\n        this.visible = visible;\n        this.constraints = constraints;\n    }\n\n    public allowsValidation(): boolean {\n        return this.visible && this.enabled;\n    }\n\n    public isRequired(): boolean {\n        return this.constraints.some(e => e instanceof RequiredConstraint);\n    }\n}\n","import {FieldConfiguration} from './FieldConfiguration';\n\nexport interface IValidationRepository {\n    findAllFieldConfigurations(): FieldConfiguration[];\n\n    findFieldConfigurationByName(name: string): FieldConfiguration;\n\n    getValidationMessage(key: string): string;\n}\n\nexport class IValidationRepository {\n    static injectableName: string = 'validationRepository';\n}\n","import {ILoggerService} from '../service/LoggerService';\nimport {IPageValueProvider} from '../service/IPageValueProvider';\nimport {IValidationRepository} from './IValidationRepository';\n\nexport interface IValidationRepositoryProvider extends ng.IServiceProvider {\n    create(loggerService: ILoggerService, pageValueProvider: IPageValueProvider<any>): IValidationRepository;\n\n    addPageValueName(pageValueName: string): void;\n\n    addDefaultPageValueName(): void;\n}\n\nexport class IValidationRepositoryProvider {\n    static injectableName: string = 'validationRepositoryProvider';\n}\n","import {IValidationRepository} from './IValidationRepository';\nimport {Injectables} from '../decorators/Injectables';\nimport {ILogger, ILoggerService} from '../service/LoggerService';\nimport {IPageValueProvider} from '../service/IPageValueProvider';\nimport {FieldConfiguration} from './FieldConfiguration';\nimport * as _ from \"underscore\";\n\n\n@Injectables(ILoggerService, IPageValueProvider)\nexport class ValidationRepository implements IValidationRepository {\n\n    private logger: ILogger;\n    private validationMessages: { [key: string]: string };\n\n    constructor(loggerService: ILoggerService, private pageValueProvider: IPageValueProvider<any>, private pageValueNames: string[]) {\n        this.logger = loggerService.create('commerce.common.ValidationRepository');\n    }\n\n    /**\n     * just reads and maps field configurations from the page value.\n     */\n    public findAllFieldConfigurations(): FieldConfiguration[] {\n\n        return this.pageValueNames.reduce((allFieldConfigurations, pageValueName) => {\n            let pageValue = this.pageValueProvider.getPageValue(pageValueName);\n            let fieldConfigurations = (pageValue && pageValue.fieldConfigurations) || [];\n\n            return allFieldConfigurations.concat(fieldConfigurations);\n        }, []);\n\n    }\n\n    /**\n     * find a certain constraint by its name.\n     */\n    public findFieldConfigurationByName(name: string): FieldConfiguration {\n        return _.chain(this.findAllFieldConfigurations()).filter((fieldConfiguration) => {\n            return _.isEqual(fieldConfiguration.name, name);\n        }).first().value();\n    }\n\n    public getValidationMessage(key: string): string {\n        var validationMessages: { [key: string]: string } = this.getValidationMessages();\n\n        if (!key || !validationMessages) {\n            return undefined;\n        }\n\n        var msg = validationMessages[key];\n        return msg;\n    }\n\n    public getValidationMessages(): { [key: string]: string } {\n\n        if (!this.validationMessages) {\n            this.validationMessages = this.pageValueNames.reduce((map: { [key: string]: string }, pageValueName: string) => {\n                let pageValue = this.pageValueProvider.getPageValue(pageValueName);\n                let validationMessage: { [key: string]: string } = pageValue.validationMessages;\n\n                return _.extend({}, map, validationMessage);\n            }, {});\n\n        }\n        return this.validationMessages;\n    }\n\n}\n","import {IValidationRepositoryProvider} from './IValidationRepositoryProvider';\nimport {ILoggerService} from '../service/LoggerService';\nimport {IPageValueProvider} from '../service/IPageValueProvider';\nimport {ValidationRepository} from './ValidationRepository';\n\nexport function validationRepositoryProvider(): IValidationRepositoryProvider {\n\n    let pageValueNames: string[] = [];\n\n    // exposed here to circumvent 'this' reference...\n    function create(loggerService, pageValueProvider) {\n        return new ValidationRepository(loggerService, pageValueProvider, pageValueNames);\n    }\n\n    return {\n\n        create: create,\n\n        $get: ['loggerService', 'pageValueProvider', (loggerService: ILoggerService, pageValueProvider: IPageValueProvider<any>) => {\n            return create(loggerService, pageValueProvider);\n        }],\n\n        addPageValueName: function (pageValueName: string): void {\n            pageValueNames.push(pageValueName);\n        },\n\n        addDefaultPageValueName(): void {\n            this.addPageValueName(IPageValueProvider.defaultPageValueName);\n        }\n    };\n\n}\n","import {enumMetaInfo, MetaInfo} from '../domain/MetaInfo';\nimport * as _ from \"underscore\";\n\n\n/**\n * Generic Status enum for a executed validation.\n * A Validation can either be succesful / failed or there was an error.\n */\nexport class ValidationStatus {\n\n    static META_INFO: MetaInfo = enumMetaInfo('infrastructure:ValidationStatus');\n\n    private static _values: { [s: string]: ValidationStatus; } = {};\n\n    static forName(obj): ValidationStatus {\n        argsContract(arguments, 'str');\n        if (obj === null) {\n            return null;\n        }\n        return ValidationStatus._values[obj];\n    }\n\n    static values(): ValidationStatus[] {\n        return _.values(ValidationStatus._values);\n    }\n\n\n    static SUCCESS: ValidationStatus = new ValidationStatus('SUCCESS');\n    static FAILED: ValidationStatus = new ValidationStatus('FAILED');\n    static ERROR: ValidationStatus = new ValidationStatus('ERROR');\n\n    constructor(public  name: string) {\n        argsContract(arguments, 'str');\n        ValidationStatus._values[name] = this;\n    }\n\n}\n","import {IConstraint} from './IConstraint';\nimport {MetaInfo, valueMetaInfo} from '../../domain/MetaInfo';\nimport {IAugmentedJQuery} from \"angular\";\n\n/**\n * requires that something has to be accepted.\n * In technical terms, one could say required the value to be truthy - but in\n * our domain, this requires someone to accept for example terms and conditions.\n *\n * technically, you could think that the required-constraint fits better but -\n * required means, something has to be set - in case of a boolean value, there is no unset -\n * its either true or false - both are not undefined, thus the required constraint will never fail.\n * (I know, i fell trap to it too).\n */\nexport class AcceptanceConstraint implements IConstraint {\n\n    static META_INFO: MetaInfo = valueMetaInfo('infrastructure:AcceptanceConstraint', {\n        key: 'string'\n    });\n\n    constructor(public key: string) {\n    }\n\n    public applies(value: any): boolean {\n        return value == true;\n    }\n\n    public modifyInputField(input: IAugmentedJQuery): void{}\n}\n","import {IConstraint} from './IConstraint';\nimport {MetaInfo, valueMetaInfo} from '../../domain/MetaInfo';\nimport {PostCall} from '../../domain/Call';\nimport {IAugmentedJQuery} from \"angular\";\n\n/**\n * A Constraint that resolves its result from a remote call instead of a local validation.\n */\nexport class CallConstraint implements IConstraint {\n\n    static META_INFO: MetaInfo = valueMetaInfo('infrastructure:CallConstraint', {\n        key: 'string',\n        call: 'PostCall'\n    });\n\n    public constructor(public key: string, public call: PostCall<any>) {\n    }\n\n    /**\n     * Not used for call constraints. Validation is done in @see FieldController.\n     */\n    public applies(value: any): boolean {\n        throw new Error('not used for call constraints');\n    }\n\n    public modifyInputField(input: IAugmentedJQuery): void{}\n}\n","import {IConstraint} from './IConstraint';\nimport {MetaInfo, valueMetaInfo} from '../../domain/MetaInfo';\nimport {IAugmentedJQuery} from \"angular\";\n\n/**\n * has no real functionality. Only used to provide and map propper feedback messages.\n * Constraint is used in conjunction with coFieldEqualityValidation-Directive.\n */\nexport class ClientsideFieldEqualityConstraint implements IConstraint {\n\n    static META_INFO: MetaInfo = valueMetaInfo('infrastructure:ClientsideFieldEqualityConstraint', {});\n\n    constructor(public key: string) {\n    }\n\n    public applies(value: any): boolean {\n        return true\n    }\n\n    public modifyInputField(input: IAugmentedJQuery): void{}\n}\n","import {IConstraint} from './IConstraint';\nimport {MetaInfo, valueMetaInfo} from '../../domain/MetaInfo';\nimport {IAugmentedJQuery} from \"angular\";\n\nexport class ConditionalConstraint implements IConstraint {\n\n    static META_INFO: MetaInfo = valueMetaInfo('infrastructure:ConditionalConstraint', {\n        key: 'string',\n        keyPrefix: 'string',\n        constraint: '{}',\n        pattern: 'string',\n        matchesPattern: 'boolean'\n    });\n\n    private regexp: RegExp;\n\n    constructor(public key: string, private keyPrefix, private pattern: string, private constraint: IConstraint, private matchesPattern: boolean) {\n    }\n\n    public applies(value: any): boolean {\n        var conditionMatch = this.getRegex().test(value);\n        if (this.matchesPattern ? conditionMatch : !conditionMatch) {\n            return this.constraint.applies(value);\n        }\n\n        return true\n    }\n\n    private getRegex(): RegExp {\n        if (!this.regexp) {\n            this.regexp = new RegExp(this.pattern);\n        }\n        return this.regexp;\n    }\n\n    public modifyInputField(input: IAugmentedJQuery): void{}\n}\n","import {IConstraint} from './IConstraint';\nimport {MetaInfo, valueMetaInfo} from '../../domain/MetaInfo';\nimport {DayOfWeekType} from \"../../domain/DayOfWeekType\";\nimport * as _ from \"underscore\";\nimport {IAugmentedJQuery} from \"angular\";\n\n\nexport class DateDaysOfWeekConstraint implements IConstraint {\n\n    static META_INFO: MetaInfo = valueMetaInfo('infrastructure:DateDaysOfWeekConstraint', {\n        key: 'string',\n        excludedDaysOfWeek: 'DayOfWeekType[]'\n    });\n\n    public constructor(public key: string, private excludedDaysOfWeek: DayOfWeekType[]) {\n    }\n\n    public applies(value: any): boolean {\n        if (!_.isDate(value)) {\n            //required validation is handled elsewhere...\n            return true;\n        }\n\n        return !this.excludedDaysOfWeek.some(excludedDayOfWeek => DateDaysOfWeekConstraint.isExcludedDayOfWeek(excludedDayOfWeek, value));\n    }\n\n    public static isExcludedDayOfWeek(excludedDayOfWeek: DayOfWeekType, date: Date): boolean {\n        return excludedDayOfWeek.index === date.getDay();\n    }\n\n    public modifyInputField(input: IAugmentedJQuery): void{}\n}\n","import {IConstraint} from './IConstraint';\nimport {MetaInfo, valueMetaInfo} from '../../domain/MetaInfo';\nimport * as _ from \"underscore\";\nimport {IAugmentedJQuery} from \"angular\";\n\n\nexport class DateExcludedDatesConstraint implements IConstraint {\n\n    static META_INFO: MetaInfo = valueMetaInfo('infrastructure:DateExcludedDatesConstraint', {\n        key: 'string',\n        excludedDates: 'Date[]'\n    });\n\n    public constructor(public key: string, private excludedDates: Date[]) {\n    }\n\n    public applies(value: any): boolean {\n        if (!_.isDate(value)) {\n            //required validation is handled elsewhere...\n            return true;\n        }\n\n        return !this.excludedDates.some(excluded => DateExcludedDatesConstraint.isEqualDay(excluded, value));\n    }\n\n    public static isEqualDay(date1: Date, date2: Date): boolean {\n        // avoid the entire time comparison magic and simply use the date string\n        return date1.toDateString() === date2.toDateString();\n    }\n\n    public modifyInputField(input: IAugmentedJQuery): void{}\n}\n","import {IConstraint} from './IConstraint';\nimport {MetaInfo, valueMetaInfo} from '../../domain/MetaInfo';\nimport * as _ from \"underscore\";\nimport {IAugmentedJQuery} from \"angular\";\n\n\nexport class DateRangeConstraint implements IConstraint {\n\n    static META_INFO: MetaInfo = valueMetaInfo('infrastructure:DateRangeConstraint', {\n        key: 'string',\n        lowerBound: 'date | null',\n        upperBound: 'date | null'\n    });\n\n\n    public constructor(public key: string, private lowerBound: Date, private upperBound: Date) {\n    }\n\n    public isRange(): boolean {\n        return this.lowerBound != null && this.upperBound != null;\n    }\n\n    public isUpperBound() {\n        return !this.isRange() && this.upperBound != null;\n    }\n\n    public isLowerBound() {\n        return !this.isRange() && this.lowerBound != null;\n    }\n\n    public applies(value: any): boolean {\n        if (!_.isDate(value)) {\n            //required validation is handled elsewhere...\n            return true;\n        }\n        if (this.isLowerBound()) {\n            return this.lowerBound <= value;\n        } else if (this.isUpperBound()) {\n            return this.upperBound >= value;\n        } else if (this.isRange()) {\n            return this.lowerBound <= value && this.upperBound >= value;\n        }\n        return true;\n    }\n\n    public modifyInputField(input: IAugmentedJQuery): void{}\n}\n","import {IConstraint} from './IConstraint';\nimport {MetaInfo, valueMetaInfo} from '../../domain/MetaInfo';\nimport {IAugmentedJQuery} from \"angular\";\n\nexport class EmailConstraint implements IConstraint {\n\n    static META_INFO: MetaInfo = valueMetaInfo('infrastructure:EmailConstraint', {\n        key: 'string',\n        pattern: 'string'\n    });\n\n    public constructor(public key: string, private pattern: string) {\n        this.pattern = pattern;\n    }\n\n    public applies(value: any): boolean {\n        if (value === null || value == undefined || value === \"\") {\n            //required validation is handled elsewhere...\n            return true;\n        }\n        return new RegExp(this.pattern).test(value);\n    }\n\n    public modifyInputField(input: IAugmentedJQuery): void{}\n}\n","import {IAugmentedJQuery} from \"angular\";\n\nexport interface IConstraint {\n\n    applies(value: any): boolean;\n\n    modifyInputField(input: IAugmentedJQuery): void;\n\n    key: string;\n}\n\nexport class IConstraint {\n}\n","import {IConstraint} from './IConstraint';\nimport {MetaInfo, valueMetaInfo} from '../../domain/MetaInfo';\nimport {IAugmentedJQuery} from \"angular\";\n\n/**\n * This constraint seems useless because it always returns true and if the rules are configured correctly, this\n * constraint only appears on invisible fields and will then not even be added to ngModel by the FieldController.\n * This constraint only exists because the Configuration for the frontend validation has to be the same as the\n * configuration for the backend validation. In the backend the matching constraint checks if invisible fields have\n * been mapped to the order.\n */\nexport class InvisibleFieldMappedConstraint implements IConstraint {\n\n    static META_INFO: MetaInfo = valueMetaInfo('infrastructure:InvisibleFieldMappedConstraint', {\n        key: 'string'\n    });\n\n    public constructor(public key: string) {\n    }\n\n    public applies(value: any): boolean {\n        return true;\n    }\n\n    public modifyInputField(input: IAugmentedJQuery): void{}\n}\n","import {IConstraint} from \"./IConstraint\";\nimport {MetaInfo, valueMetaInfo} from \"../../domain/MetaInfo\";\nimport {IAugmentedJQuery} from \"angular\";\n\nexport class NameConstraint implements IConstraint {\n\n    static META_INFO: MetaInfo = valueMetaInfo('infrastructure:NameConstraint', {\n        key: 'string',\n        pattern: 'string'\n    });\n\n    public constructor(public key: string, private pattern: string) {\n        this.pattern = pattern;\n    }\n\n    public applies(value: any): boolean {\n        if (value === null || value == undefined || value === \"\") {\n            //if value is not set, another validator takes care\n            return true;\n        }\n        return new RegExp(this.pattern).test(value);\n    }\n\n    public modifyInputField(input: IAugmentedJQuery): void{}\n}\n","import {IConstraint} from './IConstraint';\nimport {MetaInfo, valueMetaInfo} from '../../domain/MetaInfo';\nimport {IAugmentedJQuery} from \"angular\";\n\nexport class NumberRangeConstraint implements IConstraint {\n\n    static META_INFO: MetaInfo = valueMetaInfo('infrastructure:NumberRangeConstraint', {\n        key: 'string',\n        lowerBound: 'number | null',\n        upperBound: 'number | null'\n    });\n\n    public constructor(public key: string, private lowerBound: number, private upperBound: number) {\n    }\n\n    public isRange(): boolean {\n        return this.lowerBound != null && this.upperBound != null;\n    }\n\n    public isUpperBound() {\n        return !this.isRange() && this.upperBound != null;\n    }\n\n    public isLowerBound() {\n        return !this.isRange() && this.lowerBound != null;\n    }\n\n    public applies(value: any): boolean {\n        if (value === null || value == undefined || value === \"\") {\n            //required validation is handled elsewhere...\n            return true;\n        }\n\n        if (!/\\d+/.test(value)) {\n            // validation should fail if the input is not a number\n            return false;\n        }\n\n        var number = parseInt(value);\n\n        if (this.isLowerBound()) {\n            return this.lowerBound <= number;\n        } else if (this.isUpperBound()) {\n            return this.upperBound >= number;\n        } else if (this.isRange()) {\n            return this.lowerBound <= number && this.upperBound >= number;\n        }\n        return true;\n    }\n\n    public modifyInputField(input: IAugmentedJQuery): void{}\n}\n","import {IConstraint} from './IConstraint';\nimport {MetaInfo, valueMetaInfo} from '../../domain/MetaInfo';\nimport * as _ from \"underscore\";\nimport {IAugmentedJQuery} from \"angular\";\n\n\nexport class NumericConstraint implements IConstraint {\n\n    static META_INFO: MetaInfo = valueMetaInfo('infrastructure:NumericConstraint', {\n        key: 'string'\n    });\n\n    constructor(public key: string) {\n    }\n\n    public applies(value: any): boolean {\n        if (value === null || _.isUndefined(value) || value.length === 0) {\n            return true;\n        }\n        return /^\\d+$/.test(value.toString());\n    }\n\n    public modifyInputField(input: IAugmentedJQuery): void{}\n}\n","import {IConstraint} from './IConstraint';\nimport {MetaInfo, valueMetaInfo} from '../../domain/MetaInfo';\nimport {IAugmentedJQuery} from \"angular\";\n\nexport class PreventSpecialCharAddressConstraint implements IConstraint {\n\n    static META_INFO: MetaInfo = valueMetaInfo('infrastructure:PreventSpecialCharAddressConstraint', {\n        key: 'string',\n        pattern: 'string'\n    });\n\n    public constructor(public key: string, private pattern: string) {\n    }\n\n    public applies(value: any): boolean {\n        if (!value) {\n            /*fields that are not initalized or empty shall not cause a validation error*/\n            return true;\n        }\n\n        return this.pattern.split(\"\").filter(function (forbiddenChar) {\n            return value.toString().indexOf(forbiddenChar) !== -1;\n        }).length == 0;\n    }\n\n    public modifyInputField(input: IAugmentedJQuery): void{}\n}\n","import {IConstraint} from './IConstraint';\nimport {MetaInfo, valueMetaInfo} from '../../domain/MetaInfo';\nimport {IAugmentedJQuery} from \"angular\";\n\nexport class PreventSpecialCharConstraint implements IConstraint {\n\n    static META_INFO: MetaInfo = valueMetaInfo('infrastructure:PreventSpecialCharConstraint', {\n        key: 'string',\n        pattern: 'string'\n    });\n\n    public constructor(public key: string, private pattern: string) {\n    }\n\n    public applies(value: any): boolean {\n        if (!value) {\n            /*fields that are not initalized or empty shall not cause a validation error*/\n            return true;\n        }\n\n        return this.pattern.split('').filter(function (forbiddenChar) {\n            return value.toString().indexOf(forbiddenChar) !== -1;\n        }).length == 0;\n    }\n\n    public modifyInputField(input: IAugmentedJQuery): void{}\n}\n","import {IConstraint} from './IConstraint';\nimport {MetaInfo, valueMetaInfo} from '../../domain/MetaInfo';\nimport {IAugmentedJQuery} from \"angular\";\n\nexport class PreventSpecialCharNameConstraint implements IConstraint {\n\n    static META_INFO: MetaInfo = valueMetaInfo('infrastructure:PreventSpecialCharNameConstraint', {\n        key: 'string',\n        pattern: 'string'\n    });\n\n    public constructor(public key: string, private pattern: string) {\n    }\n\n    public applies(value: any): boolean {\n        if (!value) {\n            /*fields that are not initalized or empty shall not cause a validation error*/\n            return true;\n        }\n\n        return this.pattern.split(\"\").filter(function (forbiddenChar) {\n            return value.toString().indexOf(forbiddenChar) !== -1;\n        }).length == 0;\n    }\n\n    public modifyInputField(input: IAugmentedJQuery): void{}\n}\n","import {IConstraint} from './IConstraint';\nimport {MetaInfo, valueMetaInfo} from '../../domain/MetaInfo';\nimport {IAugmentedJQuery} from \"angular\";\n\nexport class RegExpConstraint implements IConstraint {\n\n    static META_INFO: MetaInfo = valueMetaInfo('infrastructure:RegExpConstraint', {\n        key: 'string',\n        pattern: 'string',\n        ignoreCase: 'boolean'\n    });\n\n    public constructor(public key: string, private pattern: string, private ignoreCase: boolean) {\n\n    }\n\n    public applies(value: any): boolean {\n        if (!value || value.length === 0) {\n            return true;\n        }\n        var regexFlags = this.ignoreCase ? \"i\" : \"\";\n        return new RegExp(this.pattern, regexFlags).test(value);\n    }\n\n    public modifyInputField(input: IAugmentedJQuery): void{}\n}\n","import {IConstraint} from './IConstraint';\nimport {MetaInfo, valueMetaInfo} from '../../domain/MetaInfo';\nimport {IAugmentedJQuery} from \"angular\";\n\nexport class RequiredConstraint implements IConstraint {\n\n    static META_INFO: MetaInfo = valueMetaInfo('infrastructure:RequiredConstraint', {\n        key: 'string'\n    });\n\n    constructor(public key: string) {\n    }\n\n    public applies(value: any): boolean {\n        return value != null && value !== undefined && value !== \"\";\n    }\n\n    public modifyInputField(input: IAugmentedJQuery): void{}\n}\n","import {IConstraint} from './IConstraint';\nimport {MetaInfo, valueMetaInfo} from '../../domain/MetaInfo';\nimport {IAugmentedJQuery} from \"angular\";\n\nexport class StringLengthConstraint implements IConstraint {\n\n    static META_INFO: MetaInfo = valueMetaInfo('infrastructure:StringLengthConstraint', {\n        key: 'string',\n        minLength: 'number | null',\n        maxLength: 'number | null'\n    });\n\n\n    public constructor(public key: string, private minLength: number, private maxLength: number) {\n    }\n\n    public applies(value: any): boolean {\n        if (value == null || value.length == 0) {\n            /**\n             * if value is not set or length is null,\n             * the required validator will take care not the length\n             * validator.\n             * To prevent false negatives, if no data was entered yet.\n             */\n            return true;\n        }\n\n        if (!value.length) {\n            // we probably have something that is not natively a string, e.g. a number\n            value = value.toString();\n        }\n\n        if (value.length) {\n            if (this.isMin()) {\n                return value.length >= this.minLength;\n            } else if (this.isMax()) {\n                return value.length <= this.maxLength;\n            } else if (this.isWithin()) {\n                return value.length >= this.minLength && value.length <= this.maxLength;\n            }\n        }\n        return false;\n    }\n\n    public isWithin(): boolean {\n        return this.minLength != null && this.maxLength != null;\n    }\n\n    public isMin(): boolean {\n        return !this.isWithin() && this.minLength != null;\n    }\n\n    public isMax(): boolean {\n        return !this.isWithin() && this.maxLength != null;\n    }\n\n    public modifyInputField(input: IAugmentedJQuery): void{\n        if (this.maxLength){\n            input.attr('maxlength', this.maxLength.toString());\n        }\n    }\n}\n","import {IConstraint} from './IConstraint';\nimport {MetaInfo, valueMetaInfo} from '../../domain/MetaInfo';\nimport * as _ from \"underscore\";\nimport {IAugmentedJQuery} from \"angular\";\n\n\nexport class ValidDateConstraint implements IConstraint {\n\n    static META_INFO: MetaInfo = valueMetaInfo('infrastructure:ValidDateConstraint', {\n        key: 'string'\n    });\n\n    constructor(public key: string) {\n    }\n\n    public applies(value: any): boolean {\n        // these cases are handled by the required validator ...\n        if (_.isUndefined(value) || _.isNull(value) || value === '') {\n            return true;\n        }\n        return _.isDate(value);\n    }\n\n    public modifyInputField(input: IAugmentedJQuery): void{}\n}\n","import {AsyncValidationResult} from '../../AsyncValidationResult';\nimport {ValidationStatus} from '../../ValidationStatus';\nimport {CallConstraint} from '../../constraints/CallConstraint';\nimport {FieldConfiguration} from '../../FieldConfiguration';\nimport {ILogger, ILoggerService} from '../../../service/LoggerService';\nimport {ICallService} from '../../../service/ICallService';\nimport {Injectables} from '../../../decorators/Injectables';\nimport {IValidationRepository} from '../../IValidationRepository';\nimport * as _ from \"underscore\";\nimport {IAugmentedJQuery, IFormController, INgModelController, IPromise, IQService} from \"angular\";\nimport {IConstraint} from \"../../..\";\n\n\n/**\n * This controller is used to connect multiple directives of the co-field infrastructure.\n * The controller is initialised by the co-field directive.\n * The co-field-input directive is used to mark a element that contains the model of this field.\n * The co-field-popover directive is used to show a popover with the error messages of this field.\n */\n@Injectables(IValidationRepository, ILoggerService, ICallService, '$q')\nexport class FieldController {\n    // auto bound by directive\n    public fieldName: string;\n\n    //created in ctor\n    private logger: ILogger;\n\n    // set by connecting to FieldInput directive\n    public ngModel: INgModelController;\n    public inputElement: IAugmentedJQuery;\n\n    // set after initialisation ...\n    public parent: FieldController;\n    public form: IFormController;\n\n    constructor(private validationRepository: IValidationRepository,\n                loggerService: ILoggerService,\n                public callService: ICallService,\n                private $q: IQService) {\n        this.logger = loggerService.create('commerce.common.FieldController');\n    }\n\n\n    /**\n     * This method is used by the directive that declare this controller to initialise it with infrastructure from the parent elements.\n     * @param parent The parent controller which might be undefined. This is used for multifield validation. Can be null.\n     * @param form The form in which this field is located. This is mainly needed for checking of the submitted state. Can be null.\n     */\n    init(parent: FieldController, form: IFormController): void {\n        argsContract(arguments, 'FieldController | null, {} | null');\n        this.checkFieldName();\n        this.parent = parent;\n        this.form = form;\n    }\n\n\n    private checkFieldName() {\n        if (!this.fieldName) {\n            throw new Error('No field name set by binding!');\n        }\n    }\n\n\n    /**\n     * This method is used to connect a element which contains the ng-model to this controller.\n     * This method is called by co-field-input.\n     *\n     * @param ngModel the INgModelController object for the element.\n     * @param inputElement the element which the model, this is typically a input element but can be anythi\n     * In the case of a multifield input this can be a div.\n     */\n    connectCoFieldInput(ngModel: INgModelController, inputElement: IAugmentedJQuery): void {\n        argsContract(arguments, '{}, {}');\n        this.checkFieldName();\n        if (this.ngModel) {\n            this.logger.error('This FieldController has already a ngModel instance,' +\n                ' are there more than one connected co-field-inputs in this co-field?', {\n                    fieldController: this,\n                    ngModel: ngModel,\n                    inputElement: inputElement\n                }\n            );\n            throw new Error('This FieldController has already a ngModel instance, ' +\n                'are there more than one connected co-field-inputs in this co-field?');\n        }\n        this.ngModel = ngModel;\n        this.inputElement = inputElement;\n\n        /**\n         *  if the field is invisible the viewValue is emptied and no validators are added.\n         *  This prevents data from loaded customers or Chrome-plugins for autofilling forms to be sent back\n         *  to the server.\n         */\n        if(this.isFieldVisible()){\n            let validators: Validator<boolean>[] = this.getValidators();\n            let asyncValidators: Validator<IPromise<AsyncValidationResult>>[] = this.getAsyncValidators();\n            let configuration: FieldConfiguration = this.getConfiguration();\n\n            validators.forEach((validator: Validator<boolean>) => {\n                ngModel.$validators[validator.key] = validator.validationFunction\n            });\n\n            asyncValidators.forEach((validator: Validator<IPromise<AsyncValidationResult>>) => {\n                ngModel.$asyncValidators[validator.key] = validator.validationFunction;\n            });\n\n            if (configuration && configuration.allowsValidation()){\n                configuration.constraints.forEach((constraint: IConstraint) => {\n                    constraint.modifyInputField(inputElement);\n                });\n            }\n\n        } else {\n            ngModel.$setViewValue(null);\n        }\n    }\n\n\n    /**\n     * @returns {boolean} Returns true if there is a validation configuration for this field.\n     */\n    allowsValidation(): boolean {\n        var fieldConstraint: FieldConfiguration = this.getConfiguration();\n        return !_.isUndefined(fieldConstraint) && fieldConstraint.allowsValidation();\n    }\n\n    /**\n     * @returns {FieldConfiguration} Returns the FieldConfiguration for this field.\n     */\n    getConfiguration(): FieldConfiguration {\n        this.checkFieldName();\n        return this.validationRepository.findFieldConfigurationByName(this.fieldName);\n    }\n\n    /**\n     * @returns {boolean} Returns true if this field is configured to be visible.\n     */\n    isFieldVisible(): boolean {\n        var fieldConstraint: FieldConfiguration = this.getConfiguration();\n        return _.isUndefined(fieldConstraint) || fieldConstraint.visible;\n    }\n\n    /**\n     * @returns {boolean} Returns true if this field is configured to be enabled.\n     */\n    isFieldEnabled(): boolean {\n        var fieldConstraint: FieldConfiguration = this.getConfiguration();\n        return _.isUndefined(fieldConstraint) || fieldConstraint.enabled;\n    }\n\n    /**\n     *\n     * @returns {boolean} Returns true if error messages should be displayed.\n     * Based on the dirty state of this model,\n     * the dirty state of the parent controller and the submitted state of the form hierarchy.\n     */\n    public shouldShowMessages(): boolean {\n        // convert to boolean ...\n        return !!(\n            // guard ... if there is no model nothing should happen\n            this.ngModel\n            // check if this field was edited or a parent was edited or any form is submitted\n            && (this.isDirty() || this.isSubmitted())\n        );\n    }\n\n    /**\n     *\n     * @returns {boolean} Returns true if this ng model is dirty or the parent controller is dirty.\n     */\n    public isDirty(): boolean {\n        return !!(\n            (this.ngModel && this.ngModel.$dirty)\n            || (this.parent && this.parent.isDirty())\n        );\n    }\n\n    /**\n     *\n     * @returns {string[]} Returns the user readable messages from this controller and its parents.\n     */\n    getMessages(): string[] {\n        if (!this.shouldShowMessages()) {\n            return [];\n        }\n\n        var errors: { [key: string]: boolean } = (this.ngModel && this.ngModel.$error) || {};\n        var messages: string[] = _(errors)\n            .chain()\n            .map((key, value) => this.validationRepository.getValidationMessage('' + value))\n            .filter((message) => !!message)\n            .value();\n\n        if (this.parent) {\n            messages = messages.concat(this.parent.getMessages());\n        }\n\n        return messages;\n\n    }\n\n    /**\n     *\n     * @returns {Validator[]} This class returns a list of Validators that can be registered by a ngModel.\n     */\n    private getValidators(): Validator<boolean>[] {\n        var configuration: FieldConfiguration = this.getConfiguration();\n        if (!configuration || !configuration.allowsValidation()) {\n            return [];\n        }\n\n        return configuration.constraints.filter((constraint) => {\n            //ignore async constraints\n            return !(constraint instanceof CallConstraint);\n        }).map((constraint) => {\n            var key = this.fieldName + '.' + constraint.key;\n            return new Validator(key, (modelValue: any): boolean => {\n                var successful = constraint.applies(modelValue);\n                if (!successful) {\n                    this.logger.debug('Validation failed: ' + key, {\n                        constraint: constraint,\n                        key: key,\n                        modelValue: modelValue,\n                        fieldConfiguration: configuration\n                    });\n                }\n                return successful;\n            });\n        });\n    }\n\n    getAsyncValidators(): Validator<IPromise<AsyncValidationResult>>[] {\n        var configuration: FieldConfiguration = this.getConfiguration();\n        if (!configuration || !configuration.allowsValidation()) {\n            return [];\n        }\n\n        return configuration.constraints.filter((constraint) => {\n            //we only want to have asyncvalidators\n            return constraint instanceof CallConstraint;\n        }).map((constraint) => {\n            var key = this.fieldName + '.' + constraint.key;\n            return new Validator(key, (modelValue: any): IPromise<AsyncValidationResult> => {\n                var handleCallPromise: IPromise<AsyncValidationResult> = this.callService.handleCall((<CallConstraint>constraint).call.withData(modelValue));\n                return handleCallPromise.then((result: AsyncValidationResult) => {\n                    if (result.validationStatus == ValidationStatus.SUCCESS) {\n                        return handleCallPromise;\n                    } else {\n                        return this.$q.reject();\n                    }\n                });\n                // return handleCallPromise;\n            });\n        });\n    }\n\n    /**\n     * @returns {boolean} True if a form in the hierarchy is submitted.\n     */\n    public isSubmitted(): boolean {\n        for (var ctrl = this.form; ctrl;) {\n            if (ctrl.$submitted) {\n                return true;\n            }\n            // yes this is a angular private field ...\n            // if this is removed we must find another way to get the parent forms submitted state ...\n            ctrl = ctrl['$$parentForm'];\n        }\n        return false;\n    }\n\n    public isRequired(): boolean {\n        if (this.getConfiguration()) {\n            return this.getConfiguration().isRequired();\n        }\n        return false;\n    }\n}\n\n/**\n * Value class to hold a validator which is ready to use in an angular model\n */\nexport class Validator<T> {\n    constructor(public key: string, public validationFunction: (modelValue: any) => T) {\n    }\n}\n","import {FieldController} from './FieldController';\nimport {IAttributes, IAugmentedJQuery, IDirective, IFormController, IScope} from \"angular\";\n\n\n/**\n *\n * This directive marks a 'logical field' on a container element which contains the label and optionally the input of\n * this field.\n *\n * The marked element is hidden by adding 'ng-hide' if the field is configured as invisible.\n */\nexport function coField(): IDirective {\n    return {\n        scope: {\n            fieldName: '@coField',\n        },\n\n        controller: <any>FieldController,\n        require: ['coField', '^?form'],\n        controllerAs: 'controller',\n        bindToController: true,\n\n        link: function (scope: IScope, element: IAugmentedJQuery, attrs: IAttributes, controllers: any[]) {\n            var myController: FieldController = controllers[0];\n            var formController: IFormController = controllers[1];\n\n            // this style of controller lookup is used by the angular infrastructure to connect a form controller to its parent\n            // the normal require handle the lookup for the parent wrong and injects the own controller a second time...\n            var parentController: FieldController = (<IAugmentedJQuery>element.parent()).controller('coField');\n\n            // initialise own controller with its parent and formController\n            // explicitly pass null to ease debugging\n            myController.init(parentController || null, formController || null);\n\n            /**\n             * we need the watchers here, as this is a timing issue.\n             * at the time this link function is used for the first time,\n             * the\n             */\n            // hide element if not visible\n            scope.$watch(\n                () => (myController.isFieldVisible()),\n                (visible: boolean) => {\n                    if (!myController.isFieldVisible()) {\n                        element.addClass(\"ng-hide\")\n                    }\n                }\n            );\n\n            //OSD-360 - set field disabled - investigate IE11 - see\n            // https://connect.microsoft.com/IE/feedbackdetail/view/962368/can-still-edit-input-type-text-within-fieldset-disabled\n            scope.$watch(\n                () => (myController.isFieldEnabled()),\n                (enabled: boolean) => {\n                    if (!enabled) {\n                        element.find(\"fieldset\").attr(\"disabled\", \"disabled\");\n                    }\n                }\n            );\n        }\n    };\n}\n","import {FieldController} from './FieldController';\nimport {IAttributes, IAugmentedJQuery, IDirective, INgModelController, IScope} from \"angular\";\n\n/**\n * This directive is used to mark an element that contains the ngModel that should be used by this field.\n *\n */\nexport function coFieldInput(): IDirective {\n    return {\n        //get hold of the ngModel\n        require: ['ngModel', '^coField'],\n        link: function (scope: IScope, element: IAugmentedJQuery, attr: IAttributes, controllers: any[]) {\n\n            // fields requested in order they were defined in 'require'.\n            var ngModel: INgModelController = controllers[0];\n            var fieldController: FieldController = controllers[1];\n\n            // mark this field with a class for styling errors in a sensible way\n            element.addClass('co-field-input');\n\n            //handle the ng-model and input element to the parent form field directive, that is responsible for this form field.\n            fieldController.connectCoFieldInput(ngModel, element);\n\n\n            var placeholder = attr['placeholder'];\n\n            if (placeholder) {\n                if (fieldController.isRequired() && placeholder.indexOf('*') !== (placeholder.length - 1)) {\n                    attr.$set('placeholder', placeholder + '*');\n                }\n            }\n\n\n            function updateValidationStatus() {\n\n                var messages = fieldController.getMessages();\n\n                if (messages.length > 0) {\n                    element.addClass('co-invalid');\n                    element.removeClass('co-valid');\n                } else {\n                    element.addClass('co-valid');\n                    element.removeClass('co-invalid');\n                }\n\n            }\n\n            scope.$watch(() => {\n                    return fieldController.getMessages();\n                },\n                updateValidationStatus,\n                true\n            );\n\n            /**\n             * This is kind of a hack.\n             * If you validate complex models (not just strings) you need to\n             * react on changes in this model.\n             *\n             * For example:\n             *\n             * You validate an address object, so you want the validation to be\n             * triggered again if for example the street changes.\n             *\n             * Angular does not do deep model watches, hence the validation\n             * will only be triggered if the complete address object is switched.\n             * Alternatively you can set co-field-input-deep-watch-model to \"true\",\n             * angular will automatically do a deep watch on this model.\n             */\n            if (attr['coFieldInputDeepWatchModel']) {\n                scope.$watch(() => {\n                        return ngModel.$modelValue;\n                    }, () => {\n                        ngModel.$validate();\n                        ngModel.$setDirty();\n                    },\n                    true\n                )\n            }\n\n        }\n\n    };\n\n}\n","import {FieldController} from './FieldController';\nimport {IAttributes, IAugmentedJQuery, IDirective, INgModelController, IScope} from \"angular\";\n\n/**\n * This directive is used to mark an element that contains the ngModel that should be used by this field.\n *\n */\nexport function coFieldInputSemantic(): IDirective {\n    return {\n        //isolated scope, no attributes - this directive does not receive any input from outside.\n        scope: {},\n        //get hold of the ngModel\n        require: ['ngModel', '^coField'],\n        link: function (scope: IScope, element: IAugmentedJQuery, attr: IAttributes, controllers: any[]) {\n\n            // fields requested in order they were defined in 'require'.\n            var ngModel: INgModelController = controllers[0];\n            var fieldController: FieldController = controllers[1];\n\n            // mark this field with a class for styling errors in a sensible way\n            element.addClass('co-field-input');\n\n            //handle the ng-model and input element to the parent form field directive, that is responsible for this form field.\n            fieldController.connectCoFieldInput(ngModel, element);\n\n            /**\n             * This is kind of a hack.\n             * If you validate complex models (not just strings) you need to\n             * react on changes in this model.\n             *\n             * For example:\n             *\n             * You validate an address object, so you want the validation to be\n             * triggered again if for example the street changes.\n             *\n             * Angular does not do deep model watches, hence the validation\n             * will only be triggered if the complete address object is switched.\n             * Alternatively you can set co-field-input-deep-watch-model to \"true\",\n             * angular will automatically do a deep watch on this model.\n             */\n            if (attr['coFieldInputDeepWatchModel']) {\n                scope.$watch(() => {\n                        return ngModel.$modelValue;\n                    }, () => {\n                        ngModel.$validate();\n                        ngModel.$setDirty();\n                    },\n                    true\n                )\n            }\n\n        }\n\n    };\n\n}\n","import {FieldController} from './FieldController';\nimport {IAttributes, IAugmentedJQuery, IDirective, IScope} from \"angular\";\n\n/**\n * This directive is used to mark an element (typically an input) that should show an error message.\n * This directive must be a child of a co-field directive.\n *\n */\nexport function coFieldMessage(): IDirective {\n    return {\n        require: ['^coField'],\n        link: function (scope: IScope, element: IAugmentedJQuery, attr: IAttributes, controllers: any[]) {\n\n            var fieldController: FieldController = controllers[0];\n\n            // use this local variable to push messages into the popover via closure bindi..\n            var messageContent: string = '';\n            element.hide();\n\n            function updateMessage() {\n\n                var messages = fieldController.getMessages();\n                messageContent = messages.join('<br><br>');\n                element.text(messageContent);\n\n                if (messages.length > 0) {\n                    element.fadeIn(\"slow\");\n                } else {\n                    element.hide();\n                }\n            }\n\n            // watch if the messages are changed or if the messages should be displayed or not ...\n            scope.$watch(() => {\n                    return fieldController.getMessages();\n                },\n                updateMessage,\n                true\n            );\n        }\n\n    };\n}\n","import {FieldController} from './FieldController';\nimport {IAttributes, IAugmentedJQuery, IDirective, IScope} from \"angular\";\n\n/**\n * This directive is used to mark an element (typically an input) that should show a error messages popover.\n * This directive must be a child of a co-field directive.\n *\n */\nexport function coFieldMessageSemantic(): IDirective {\n    return {\n        require: ['^coField'],\n        link: function (scope: IScope, element: IAugmentedJQuery, attr: IAttributes, controllers: any[]) {\n\n            let fieldController: FieldController = controllers[0];\n\n            // use this local variable to push messages into the help block via closure bindi..\n            let helpBlockContent: string = '';\n\n            // markup block for displaying validation messages, as required by the Compendium\n            let helpBlockElement = $('<span class=\"help-block\"></span>');\n            // insert this block adjacent to the input element (also required by the Compendium)\n            element.after(helpBlockElement);\n\n            function updateBlock() {\n\n                let fieldTouched = fieldController.ngModel.$touched,\n                    formSubmitted = fieldController.form && fieldController.form.$submitted,\n                    messages: string[] = fieldController.getMessages();\n\n                helpBlockContent = messages.join('<br>');\n\n                if (messages.length > 0 && (fieldTouched || formSubmitted)) {\n                    // using ng-hide (or other CSS classes) to show and hide the block causes unwanted UI jumps\n                    helpBlockElement.html(helpBlockContent);\n                } else {\n                    helpBlockElement.html('');\n                }\n            }\n\n            // react on the field blur event\n            element.on('blur', () => {\n                // jQuery Blur doesn't trigger a digest cycle\n                scope.$apply(updateBlock);\n            });\n\n            // watch for model changes on the field\n            scope.$watch(() => {\n                    return fieldController.ngModel.$touched;\n                },\n                updateBlock\n            );\n\n            // watch if the messages are changed or if the messages should be displayed or not ...\n            scope.$watch(() => {\n                    return fieldController.getMessages();\n                },\n                updateBlock,\n                true\n            );\n        }\n\n    };\n}\n","import {FieldController} from './FieldController';\nimport {IAttributes, IDirective, IScope} from \"angular\";\n\n/**\n * This directive is used to mark an element (typically an input) that should show a error messages popover.\n * This directive must be a child of a co-field directive.\n *\n */\nexport function coFieldPopover(): IDirective {\n    return {\n        require: ['^coField'],\n        link: function (scope: IScope, element: any, attr: IAttributes, controllers: any[]) {\n\n            var fieldController: FieldController = controllers[0];\n\n            // use this local variable to push messages into the popover via closure bindi..\n            var popoverContent: string = '';\n\n            function updatePopover() {\n\n                var messages = fieldController.getMessages();\n                popoverContent = messages.join('<br><br>');\n\n                // use a class to simulate a focus ...\n                // focus is untestable, in the case you can focus the element in the test,\n                // a gui interaction can break it...\n                if (messages.length > 0 && (element.is(':focus') || element.hasClass('focused')) && (element.hasClass('ng-touched'))) {\n                    element.popover('show');\n                } else {\n                    element.popover('hide');\n                }\n            }\n\n            element.popover({\n                trigger: 'manual',\n                placement: 'bottom',\n                html: true,\n                content: () => popoverContent\n            });\n\n            element.on('focus', function () {\n                element.popover('show');\n            });\n\n            element.on('blur', function () {\n                element.popover('hide');\n            });\n\n            // watch if the messages are changed or if the messages should be displayed or not ...\n            scope.$watch(() => {\n                    return fieldController.getMessages();\n                },\n                updatePopover,\n                true\n            );\n        }\n\n    };\n}\n","import {FieldController} from './FieldController';\nimport {IAttributes, IAugmentedJQuery, IDirective, IFormController, IScope} from \"angular\";\n\n/**\n *\n * This directive marks a 'logical field' on a container element which contains the label and optionally the input of\n * this field.\n *\n * The marked element is hidden by adding 'ng-hide' if the field is configured as invisible.\n */\nexport function coFieldSemantic(): IDirective {\n    return {\n        scope: {\n            fieldName: '@coField',\n        },\n\n        controller: <any>FieldController,\n        require: ['coField', '^?form'],\n        controllerAs: 'controller',\n        bindToController: true,\n\n        link: function (scope: IScope, element: any, attrs: IAttributes, controllers: any[]) {\n            let myController: FieldController = controllers[0];\n            let formController: IFormController = controllers[1];\n\n            // this style of controller lookup is used by the angular infrastructure to connect a form controller to its parent\n            // the normal require handle the lookup for the parent wrong and injects the own controller a second time...\n            let parentController: FieldController = (<IAugmentedJQuery>element.parent()).controller('coField');\n\n            // initialise own controller with its parent and formController\n            // explicitly pass null to ease debugging\n            myController.init(parentController || null, formController || null);\n\n            function updateValidationStatus() {\n\n                // conditions for adding the error class\n                let messagesPresent = myController.getMessages().length > 0,\n                    fieldTouched = myController.ngModel ? myController.ngModel.$touched : false,\n                    formSubmitted = formController && formController.$submitted;\n\n                if (messagesPresent && (fieldTouched || formSubmitted)) {\n                    element.addClass('has-error');\n                } else {\n                    element.removeClass('has-error');\n                }\n            }\n\n            scope.$watch(\n                () => myController.ngModel ? myController.ngModel.$touched : false,\n                updateValidationStatus\n            );\n\n            scope.$watch(\n                () => myController.getMessages(),\n                updateValidationStatus,\n                true\n            );\n\n            /**\n             * we need the watchers here, as this is a timing issue.\n             */\n            // hide element if not visible\n            scope.$watch(\n                () => (myController.isFieldVisible()),\n                (visible: boolean) => {\n                    if (!visible) {\n                        element.addClass(\"ng-hide\")\n                    }\n                }\n            );\n\n            scope.$watch(\n                () => (myController.isFieldEnabled()),\n                (enabled: boolean) => {\n                    if (!enabled) {\n                        element.find(\"fieldset\").attr(\"disabled\", \"disabled\");\n                    }\n                }\n            );\n        }\n    };\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE_angular__;","module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__;","module.exports = __WEBPACK_EXTERNAL_MODULE_reflect_metadata__;","module.exports = __WEBPACK_EXTERNAL_MODULE_underscore__;"],"sourceRoot":""}