{"version":3,"file":"app.js","mappings":"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","sources":["webpack://VirtoCommerce.Core/./Scripts/virtoCommerce-core.js","webpack://VirtoCommerce.Core/./Scripts/PackageType/packageType.js","webpack://VirtoCommerce.Core/./Scripts/PackageType/blades/package-type-detail.js","webpack://VirtoCommerce.Core/./Scripts/PackageType/blades/package-type-list.js","webpack://VirtoCommerce.Core/./Scripts/PackageType/resources/packageTypeApi.js","webpack://VirtoCommerce.Core/./Scripts/SEO/seo.js","webpack://VirtoCommerce.Core/./Scripts/SEO/blades/seo-detail.js","webpack://VirtoCommerce.Core/./Scripts/SEO/blades/seo-duplicates.js","webpack://VirtoCommerce.Core/./Scripts/SEO/blades/seo-list.js","webpack://VirtoCommerce.Core/./Scripts/SEO/resources/seoResource.js","webpack://VirtoCommerce.Core/./Scripts/SEO/widgets/seoWidget.js","webpack://VirtoCommerce.Core/./Scripts/common/common.js","webpack://VirtoCommerce.Core/./Scripts/common/blades/address-detail.js","webpack://VirtoCommerce.Core/./Scripts/common/blades/address-list.js","webpack://VirtoCommerce.Core/./Scripts/common/directives/info-button.js","webpack://VirtoCommerce.Core/./Scripts/common/directives/uikit-htmleditor.js","webpack://VirtoCommerce.Core/./Scripts/currency/currency.js","webpack://VirtoCommerce.Core/./Scripts/currency/blades/currency-detail.js","webpack://VirtoCommerce.Core/./Scripts/currency/blades/currency-list.js","webpack://VirtoCommerce.Core/./Scripts/currency/resources/currencyApi.js","webpack://VirtoCommerce.Core/./Scripts/currency/widgets/currencyWidget.js","webpack://VirtoCommerce.Core/./Scripts/dynamicConditions/dynamicExpression.js","webpack://VirtoCommerce.Core/./Scripts/dynamicConditions/expression-directives.js"],"sourcesContent":["var moduleName = \"virtoCommerce.coreModule\";\n\nif (AppDependencies != undefined) {\n AppDependencies.push(moduleName);\n}\n\nangular.module(moduleName, [\n 'virtoCommerce.coreModule.packageType',\n 'virtoCommerce.coreModule.currency',\n 'virtoCommerce.coreModule.seo',\n 'virtoCommerce.coreModule.common'\n])\n.run(['platformWebApp.metaFormsService', function (metaFormsService) {\n\n metaFormsService.registerMetaFields('currencyDetail',\n [\n {\n name: 'code',\n title: 'core.blades.currency-detail.labels.code',\n templateUrl: 'currencyDetail-code.html'\n },\n {\n name: 'name',\n title: 'core.blades.currency-detail.labels.name',\n templateUrl: 'currencyDetail-name.html'\n },\n {\n name: 'isPrimary',\n title: 'core.blades.currency-detail.labels.is-primary',\n templateUrl: 'currencyDetail-isPrimary.html'\n },\n {\n name: 'exchangeRate',\n title: 'core.blades.currency-detail.labels.exchange-rate',\n templateUrl: 'currencyDetail-exchangeRate.html'\n },\n {\n name: 'symbol',\n title: 'core.blades.currency-detail.labels.symbol',\n templateUrl: 'currencyDetail-symbol.html'\n },\n {\n name: 'customFormatting',\n title: 'core.blades.currency-detail.labels.custom-formatting',\n templateUrl: 'currencyDetail-customFormatting.html'\n },\n {\n name: 'midpointRounding',\n title: 'core.blades.currency-detail.labels.midpoint-rounding',\n templateUrl: 'currencyDetail-midpointRounding.html'\n },\n {\n name: 'roundingType',\n title: 'core.blades.currency-detail.labels.rounding-type',\n templateUrl: 'currencyDetail-roundingType.html'\n }\n ]);\n}]);\n","angular.module(\"virtoCommerce.coreModule.packageType\", [])\n.factory('virtoCommerce.coreModule.packageType.packageTypeUtils', ['virtoCommerce.coreModule.packageType.packageTypeApi', 'platformWebApp.bladeNavigationService', function (packageTypeApi, bladeNavigationService) {\n\tvar packageTypesRef;\n\treturn {\n\t\tgetPackageTypes: function () { return packageTypesRef = packageTypeApi.query(); },\n\t\teditPackageTypes: function (blade) {\n\t\t\tvar newBlade = {\n\t\t\t\tid: 'packageTypeList',\n\t\t\t\tparentRefresh: function (data) { angular.copy(data, packageTypesRef); },\n\t\t\t\tcontroller: 'virtoCommerce.coreModule.packageType.packageTypeListController',\n\t\t\t\ttemplate: 'Modules/$(VirtoCommerce.Core)/Scripts/PackageType/blades/package-type-list.tpl.html'\n\t\t\t};\n\t\t\tbladeNavigationService.showBlade(newBlade, blade);\n\t\t}\n\t};\n}])\n;","angular.module('virtoCommerce.coreModule.packageType')\n.controller('virtoCommerce.coreModule.packageType.packageTypeDetailController', ['$scope', 'platformWebApp.dialogService', 'platformWebApp.bladeNavigationService', 'virtoCommerce.coreModule.packageType.packageTypeApi', 'platformWebApp.settings',\n function ($scope, dialogService, bladeNavigationService, packageTypeApi, settings) {\n \tvar blade = $scope.blade;\n\n \t$scope.saveChanges = function () {\n \t\tblade.isLoading = true;\n\n \t\tif (blade.isNew) {\n \t\t\tblade.currentEntity.id = blade.currentEntity.name;\n \t\t\tpackageTypeApi.save(blade.currentEntity, function () {\n \t\t\t\tangular.copy(blade.currentEntity, blade.origEntity);\n \t\t\t\t$scope.bladeClose();\n \t\t\t\tblade.parentBlade.refresh(true);\n \t\t\t},function (error) {\n \t\t\t\tbladeNavigationService.setError('Error ' + error.status, blade);\n \t\t\t});\n \t\t} else {\n \t\t\tpackageTypeApi.update(blade.currentEntity, function (data) {\n \t\t\t\tangular.copy(blade.currentEntity, blade.origEntity);\n \t\t\t\t$scope.bladeClose();\n \t\t\t\tblade.parentBlade.refresh(true);\n \t\t\t}, function (error) {\n \t\t\t\tbladeNavigationService.setError('Error ' + error.status, blade);\n \t\t\t});\n \t\t}\n\n \t};\n\n \tfunction initializeBlade(data) {\n \t\tif (blade.isNew) data = { };\n \t\t$scope.measureUnits = settings.getValues({ id: 'VirtoCommerce.Core.General.MeasureUnits' });\n\n \t\tblade.currentEntity = angular.copy(data);\n \t\tblade.origEntity = data;\n \t\tblade.isLoading = false;\n\n \t\tblade.title = blade.isNew ? 'core.blades.package-type-detail.new-title' : data.name;\n \t\tblade.subtitle = blade.isNew ? 'core.blades.package-type-detail.new-subtitle' : 'core.blades.package-type-detail.subtitle';\n \t};\n\n \t$scope.openMeasureUnitsDictionarySettingManagement = function (setting) {\n \t\tvar newBlade = {\n \t\t\tid: 'settingDetailChild',\n \t\t\tcurrentEntityId: 'VirtoCommerce.Core.General.MeasureUnits',\n \t\t\tparentRefresh: function (data) { $scope.measureUnits = data; },\n \t\t\tisApiSave: true,\n \t\t\tcontroller: 'platformWebApp.settingDictionaryController',\n \t\t\ttemplate: '$(Platform)/Scripts/app/settings/blades/setting-dictionary.tpl.html'\n \t\t};\n \t\tbladeNavigationService.showBlade(newBlade, blade);\n \t};\n\n \tvar formScope;\n \t$scope.setForm = function (form) {\n \t\tformScope = form;\n \t}\n\n \tfunction isDirty() {\n \t\treturn !angular.equals(blade.currentEntity, blade.origEntity) && blade.hasUpdatePermission();\n \t}\n\n \tfunction canSave() {\n \t\treturn isDirty() && formScope && formScope.$valid;\n \t}\n\n \tblade.headIcon = 'fa fa-money';\n\n \tif (!blade.isNew)\n \t\tblade.toolbarCommands = [\n {\n \tname: \"platform.commands.save\", icon: 'fas fa-save',\n \texecuteMethod: $scope.saveChanges,\n \tcanExecuteMethod: canSave,\n \tpermission: 'core:packageType:update'\n },\n {\n \tname: \"platform.commands.reset\", icon: 'fa fa-undo',\n \texecuteMethod: function () {\n \t\tangular.copy(blade.origEntity, blade.currentEntity);\n \t},\n \tcanExecuteMethod: isDirty\n },\n {\n \tname: \"platform.commands.delete\", icon: 'fas fa-trash-alt',\n \texecuteMethod: deleteEntry,\n \tcanExecuteMethod: function () {\n \t\treturn !blade.origEntity.isPrimary;\n \t},\n \tpermission: 'core:packageType:delete'\n }\n \t\t];\n\n \tfunction deleteEntry() {\n \t\tvar dialog = {\n \t\t\tid: \"confirmDelete\",\n \t\t\ttitle: \"core.dialogs.package-type-delete.title\",\n \t\t\tmessage: \"core.dialogs.package-type-delete.message\",\n \t\t\tcallback: function (remove) {\n \t\t\t\tif (remove) {\n \t\t\t\t\tblade.isLoading = true;\n \t\t\t\t\tpackageTypeApi.remove({ ids: blade.currentEntity.id }, function () {\n \t\t\t\t\t\tangular.copy(blade.currentEntity, blade.origEntity);\n \t\t\t\t\t\t$scope.bladeClose();\n \t\t\t\t\t\tblade.parentBlade.refresh(true);\n \t\t\t\t\t}, function (error) {\n \t\t\t\t\t\tbladeNavigationService.setError('Error ' + error.status, blade);\n \t\t\t\t\t});\n \t\t\t\t}\n \t\t\t}\n \t\t}\n \t\tdialogService.showConfirmationDialog(dialog);\n \t}\n\n \tblade.onClose = function (closeCallback) {\n \t\tbladeNavigationService.showConfirmationIfNeeded(isDirty(), canSave(), blade, $scope.saveChanges, closeCallback, \"core.dialogs.package-type-save.title\", \"core.dialogs.package-type-save.message\");\n \t};\n\n \t// actions on load \n \tinitializeBlade(blade.data);\n }]);\n","angular.module('virtoCommerce.coreModule.packageType')\n.controller('virtoCommerce.coreModule.packageType.packageTypeListController', ['$scope', 'virtoCommerce.coreModule.packageType.packageTypeApi', 'platformWebApp.bladeNavigationService',\nfunction ($scope, packageTypeApi, bladeNavigationService) {\n\tvar blade = $scope.blade;\n\n\tblade.refresh = function (parentRefresh) {\n\t\tblade.isLoading = true;\n\n\t\tpackageTypeApi.query({}, function (results) {\n\t\t\tblade.isLoading = false;\n\t\t\tblade.currentEntities = results;\n\n\t\t\tif (parentRefresh && blade.parentRefresh) {\n\t\t\t\tblade.parentRefresh(results);\n\t\t\t}\n\t\t}, function (error) {\n\t\t\tbladeNavigationService.setError('Error ' + error.status, blade);\n\t\t});\n\t};\n\n\tblade.setSelectedId = function (selectedNodeId) {\n\t\t$scope.selectedNodeId = selectedNodeId;\n\t};\n\n\tfunction showDetailBlade(bladeData) {\n\t\tvar newBlade = {\n\t\t\tid: 'packageTypeDetail',\n\t\t\tcontroller: 'virtoCommerce.coreModule.packageType.packageTypeDetailController',\n\t\t\ttemplate: 'Modules/$(VirtoCommerce.Core)/Scripts/PackageType/blades/package-type-detail.tpl.html'\n\t\t};\n\t\tangular.extend(newBlade, bladeData);\n\t\tbladeNavigationService.showBlade(newBlade, blade);\n\t};\n\n\t$scope.selectNode = function (node) {\n\t\tblade.setSelectedId(node.code);\n\t\tshowDetailBlade({ data: node });\n\t};\n\n\tblade.headIcon = 'fa fa-square';\n\tblade.toolbarCommands = [\n {\n \tname: \"platform.commands.refresh\", icon: 'fa fa-refresh',\n \texecuteMethod: blade.refresh,\n \tcanExecuteMethod: function () {\n \t\treturn true;\n \t}\n },\n {\n \tname: \"platform.commands.add\", icon: 'fas fa-plus',\n \texecuteMethod: function () {\n \t\tblade.setSelectedId(null);\n \t\tshowDetailBlade({ isNew: true });\n \t},\n \tcanExecuteMethod: function () {\n \t\treturn true;\n \t},\n \tpermission: 'core:packageType:create'\n }\n\t];\n\n\t// actions on load\n\tblade.title = 'core.blades.package-type-list.title';\n\tblade.subtitle = 'core.blades.package-type-list.subtitle';\n blade.refresh();\n}]);\n","angular.module('virtoCommerce.coreModule.packageType')\n.factory('virtoCommerce.coreModule.packageType.packageTypeApi', ['$resource', function ($resource) {\n\treturn $resource('api/packageTypes', null, {\n\t\tupdate: { method: 'PUT' }\n\t});\t\n}]);","angular.module(\"virtoCommerce.coreModule.seo\", []);","angular.module('virtoCommerce.coreModule.seo')\n.controller('virtoCommerce.coreModule.seo.seoDetailController', ['$scope', 'platformWebApp.bladeNavigationService', 'platformWebApp.metaFormsService', function ($scope, bladeNavigationService, metaFormsService) {\n var blade = $scope.blade;\n\n function initializeBlade() {\n blade.origEntity = blade.data;\n blade.currentEntity = angular.copy(blade.origEntity);\n blade.isLoading = false;\n };\n\n blade.metaFields = metaFormsService.getMetaFields(\"seoDetails\");\n\n $scope.cancelChanges = function () {\n angular.copy(blade.origEntity, blade.currentEntity);\n $scope.bladeClose();\n };\n\n $scope.saveChanges = function () {\n \tif (blade.isNew) {\n \t\tif (!blade.seoContainerObject.seoInfos)\n \t\t{\n \t\t\tblade.seoContainerObject.seoInfos = [];\n \t\t}\n blade.seoContainerObject.seoInfos.push(blade.currentEntity);\n }\n\n angular.copy(blade.currentEntity, blade.origEntity);\n if (!blade.noClose) {\n $scope.bladeClose();\n }\n }\n\n function saveChanges_noClose() {\n blade.noClose = true;\n $scope.saveChanges();\n }\n\n function isValid(data) {\n // check required and valid Url requirements\n return data.semanticUrl &&\n $scope.semanticUrlValidator(data.semanticUrl);\n //$scope.duplicateValidator(data.semanticUrl); // allow saving duplicates\n }\n\n $scope.semanticUrlValidator = function (value) {\n //var pattern = /^([a-zA-Z0-9\\(\\)_\\-]+)*$/;\n var pattern = /[$+;=%{}[\\]|@ ~#!^*&?:'<>,]/;\n return !pattern.test(value);\n };\n\n $scope.duplicateValidator = function (value) {\n return _.all(blade.seoContainerObject.seoInfos, function (x) {\n return x === blade.origEntity ||\n x.storeId !== blade.currentEntity.storeId ||\n x.semanticUrl !== value;\n });\n };\n\n function isDirty() {\n return !angular.equals(blade.currentEntity, blade.origEntity) && blade.hasUpdatePermission();\n }\n\n function canSave() {\n return (blade.isNew || isDirty()) && isValid(blade.currentEntity); // isValid formScope && formScope.$valid;\n }\n\n $scope.isValid = canSave;\n\n blade.onClose = function (closeCallback) {\n bladeNavigationService.showConfirmationIfNeeded(isDirty(), canSave(), blade, saveChanges_noClose, closeCallback, \"core.dialogs.seo-save.title\", \"core.dialogs.seo-save.message\");\n };\n\n blade.toolbarCommands = [\n {\n name: \"platform.commands.reset\", icon: 'fa fa-undo',\n executeMethod: function () {\n angular.copy(blade.origEntity, blade.currentEntity);\n },\n canExecuteMethod: isDirty,\n permission: blade.updatePermission\n }\n ];\n\n blade.headIcon = 'fa fa-globe';\n blade.title = blade.isNew ? 'core.blades.seo-detail.title-new' : blade.data.semanticUrl;\n blade.subtitle = 'core.blades.seo-detail.subtitle';\n\n initializeBlade();\n}]);\n","angular.module('virtoCommerce.coreModule.seo')\n.controller('virtoCommerce.coreModule.seo.seoDuplicatesController', ['$rootScope', '$scope', 'platformWebApp.bladeNavigationService', 'virtoCommerce.coreModule.seoApi', function ($rootScope, $scope, bladeNavigationService, seoApi) {\n var blade = $scope.blade;\n var anyValidSeoFound;\n\n function initializeBlade() {\n blade.origEntity = blade.duplicates;\n blade.currentEntities = angular.copy(blade.origEntity);\n blade.isLoading = false;\n };\n\n function validate(data) {\n // check all restrictions\n var isUrlValid = data.semanticUrl && $scope.semanticUrlValidator(data.semanticUrl);\n var retVal = isUrlValid && $scope.duplicateValidator(data.semanticUrl, data);\n if (isUrlValid && !retVal) {\n blade.conflicts[data.id] = true;\n }\n anyValidSeoFound = anyValidSeoFound || retVal;\n return retVal;\n }\n\n $scope.semanticUrlValidator = function (value) {\n var pattern = /[$+;=%{}[\\]|\\\\\\/@ ~#!^*&?:'<>,]/;\n return !pattern.test(value);\n };\n\n $scope.duplicateValidator = function (value, seoInfo) {\n return _.all(blade.currentEntities, function (x) {\n return x === seoInfo ||\n x.storeId !== seoInfo.storeId ||\n x.semanticUrl !== value;\n });\n };\n\n $scope.saveChanges = function () {\n blade.isLoading = true;\n\n // generate data to save\n var dataToSave = [];\n _.each(blade.currentEntities, function (x) {\n if (validate(x) &&\n !angular.equals(x, _.findWhere(blade.origEntity, { id: x.id }))) {\n x = angular.copy(x);\n if (!x.storeId) {\n x.id = undefined;\n x.storeId = blade.defaultContainerId;\n }\n dataToSave.push(x);\n }\n });\n\n seoApi.batchUpdate(dataToSave, function () {\n angular.copy(blade.currentEntities, blade.origEntity);\n\n seoApi.query({ objectId: blade.seoContainerObject.id, objectType: blade.objectType }, function (results) {\n if (_.any(results)) { // conflicts still found\n blade.duplicates = results;\n initializeBlade();\n } else {\n if (!blade.noClose) {\n $scope.bladeClose();\n }\n $rootScope.$broadcast(\"refresh-entity-by-id\", blade.seoContainerObject.id);\n }\n });\n }, function (error) { bladeNavigationService.setError('Error: ' + error.status, blade); });\n };\n\n function saveChanges_noClose() {\n blade.noClose = true;\n $scope.saveChanges();\n }\n\n function isDirty() {\n return !angular.equals(blade.currentEntities, blade.origEntity) && blade.hasUpdatePermission();\n }\n\n function canSave() {\n return isDirty() && anyValidSeoFound;\n }\n\n blade.onClose = function (closeCallback) {\n bladeNavigationService.showConfirmationIfNeeded(isDirty(), canSave(), blade, saveChanges_noClose, closeCallback, \"core.dialogs.seo-save.title\", \"core.dialogs.seo-save.message\");\n };\n\n blade.toolbarCommands = [\n {\n name: \"platform.commands.save\", icon: 'fas fa-save',\n executeMethod: $scope.saveChanges,\n canExecuteMethod: canSave,\n permission: blade.updatePermission\n },\n {\n name: \"platform.commands.reset\", icon: 'fa fa-undo',\n executeMethod: function () {\n angular.copy(blade.origEntity, blade.currentEntities);\n },\n canExecuteMethod: isDirty,\n permission: blade.updatePermission\n }\n ];\n\n blade.title = blade.parentBlade.title;\n blade.subtitle = 'core.blades.seo-duplicates.subtitle';\n\n initializeBlade();\n\n $scope.$watch('blade.currentEntities', function () {\n blade.conflicts = {};\n anyValidSeoFound = false;\n // must check ALL SEOs\n _.each(blade.currentEntities, validate);\n }, true);\n}]);\n","angular.module('virtoCommerce.coreModule.seo')\n.controller('virtoCommerce.coreModule.seo.seoListController', ['$scope', 'platformWebApp.uiGridHelper', 'virtoCommerce.storeModule.stores', 'platformWebApp.bladeNavigationService', 'platformWebApp.dialogService', function ($scope, uiGridHelper, stores, bladeNavigationService, dialogService) {\n var blade = $scope.blade;\n $scope.selectedNodeId = null; // need to initialize to null\n\n var storesPromise = blade.fixedStoreId ? null : stores.query().$promise;\n\n blade.refresh = function (seoContainerObject) {\n if (seoContainerObject) {\n blade.seoContainerObject = seoContainerObject;\n blade.currentEntities = blade.seoContainerObject.seoInfos;\n }\n };\n\n $scope.resolveDuplicates = function () {\n var newBlade = {\n id: 'seoDuplicates',\n duplicates: blade.duplicates,\n objectType: blade.objectType,\n seoContainerObject: blade.seoContainerObject,\n defaultContainerId: blade.defaultContainerId,\n languages: blade.languages,\n controller: 'virtoCommerce.coreModule.seo.seoDuplicatesController',\n template: 'Modules/$(VirtoCommerce.Core)/Scripts/SEO/blades/seo-duplicates.tpl.html'\n };\n\n if (blade.fixedStoreId) {\n newBlade.stores = [blade.seoContainerObject];\n bladeNavigationService.showBlade(newBlade, blade);\n } else {\n storesPromise.then(function (promiseData) {\n newBlade.stores = promiseData;\n bladeNavigationService.showBlade(newBlade, blade);\n });\n }\n };\n\n blade.selectNode = openDetailsBlade;\n\n function openDetailsBlade(node, isNew) {\n $scope.selectedNodeId = node.id;\n\n var newBlade = {\n id: 'seoDetails',\n data: node,\n isNew: isNew,\n seoContainerObject: blade.seoContainerObject,\n languages: blade.languages,\n updatePermission: blade.updatePermission,\n controller: 'virtoCommerce.coreModule.seo.seoDetailController',\n template: 'Modules/$(VirtoCommerce.Core)/Scripts/SEO/blades/seo-detail.tpl.html'\n };\n\n if (blade.fixedStoreId) {\n newBlade.fixedStoreId = blade.fixedStoreId;\n bladeNavigationService.showBlade(newBlade, blade);\n } else {\n storesPromise.then(function (promiseData) {\n newBlade.stores = promiseData;\n bladeNavigationService.showBlade(newBlade, blade);\n });\n }\n }\n\n $scope.delete = function (data) {\n deleteList([data]);\n };\n\n function deleteList(selection) {\n var dialog = {\n id: \"confirmDelete\",\n title: \"platform.dialogs.delete.title\",\n message: \"platform.dialogs.delete.message\",\n callback: function (remove) {\n if (remove) {\n bladeNavigationService.closeChildrenBlades(blade, function () {\n _.each(selection, function (x) {\n blade.seoContainerObject.seoInfos.splice(blade.seoContainerObject.seoInfos.indexOf(x), 1);\n });\n });\n }\n }\n };\n dialogService.showConfirmationDialog(dialog);\n }\n\n blade.toolbarCommands = [\n {\n name: \"platform.commands.add\", icon: 'fas fa-plus',\n executeMethod: function () {\n bladeNavigationService.closeChildrenBlades(blade, function () {\n openDetailsBlade({ isActive: true }, true);\n });\n },\n canExecuteMethod: function () { return true; },\n permission: blade.updatePermission\n },\n {\n name: \"platform.commands.delete\", icon: 'fas fa-trash-alt',\n executeMethod: function () { deleteList($scope.gridApi.selection.getSelectedRows()); },\n canExecuteMethod: function () {\n return $scope.gridApi && _.any($scope.gridApi.selection.getSelectedRows()) && _.any(blade.seoContainerObject.seoInfos);\n },\n permission: blade.updatePermission\n }\n ];\n\n // ui-grid\n $scope.setGridOptions = function (gridOptions) {\n uiGridHelper.initialize($scope, gridOptions);\n };\n\n blade.headIcon = 'fa fa-globe';\n blade.subtitle = 'core.blades.seo-list.subtitle';\n\n blade.refresh(blade.seoContainerObject);\n blade.isLoading = false;\n}]);\n","angular.module('virtoCommerce.coreModule.seo')\n.factory('virtoCommerce.coreModule.seoApi', ['$resource', function ($resource) {\n return $resource('api/seoinfos/duplicates', null, {\n batchUpdate: { url: 'api/seoinfos/batchupdate', method: 'PUT' }\n });\n}]);","angular.module('virtoCommerce.coreModule.seo')\n.controller('virtoCommerce.coreModule.seo.seoWidgetController', ['$scope', 'platformWebApp.bladeNavigationService', 'virtoCommerce.coreModule.seoApi', function ($scope, bladeNavigationService, seoApi) {\n var blade = $scope.blade;\n var promise;\n\n $scope.openSeoBlade = function () {\n if (promise)\n promise.then(openBlade);\n else\n openBlade();\n };\n\n function openBlade(duplicates) {\n var newBlade = {\n id: \"seoList\",\n title: blade.title,\n duplicates: duplicates,\n objectType: $scope.widget.objectType,\n seoContainerObject: $scope.data,\n fixedStoreId: $scope.widget.getFixedStoreId ? $scope.widget.getFixedStoreId(blade) : undefined,\n defaultContainerId: $scope.widget.getDefaultContainerId(blade),\n languages: $scope.widget.getLanguages(blade),\n updatePermission: blade.updatePermission,\n controller: 'virtoCommerce.coreModule.seo.seoListController',\n template: 'Modules/$(VirtoCommerce.Core)/Scripts/SEO/blades/seo-list.tpl.html'\n };\n bladeNavigationService.showBlade(newBlade, blade);\n }\n\n $scope.$watch('data', function (data) {\n if (data && $scope.widget.getDefaultContainerId(blade)) {\n promise = seoApi.query({ objectId: data.id, objectType: $scope.widget.objectType }).$promise;\n promise.then(function (promiseData) {\n $scope.widget.UIclass = _.any(promiseData) ? 'error' : '';\n });\n }\n });\n}]);\n","angular.module('virtoCommerce.coreModule.common', [])\n .run(['platformWebApp.metaFormsService', function (metaFormsService) {\n metaFormsService.registerMetaFields('addressDetails', [{\n name: 'description',\n title: 'core.blades.address-detail.labels.description',\n valueType: 'ShortText',\n priority: 0\n }, {\n templateUrl: 'addressTypeSelector.html',\n priority: 1\n }, {\n name: 'firstName',\n title: 'core.blades.address-detail.labels.first-name',\n valueType: 'ShortText',\n isRequired: false,\n priority: 2\n }, {\n name: 'lastName',\n title: 'core.blades.address-detail.labels.last-name',\n valueType: 'ShortText',\n isRequired: false,\n priority: 3\n }, {\n templateUrl: 'countrySelector.html',\n priority: 4\n }, {\n templateUrl: 'countryRegionSelector.html',\n priority: 5\n }, {\n name: 'city',\n title: 'core.blades.address-detail.labels.city',\n valueType: 'ShortText',\n isRequired: true,\n priority: 6\n }, {\n name: 'line1',\n title: 'core.blades.address-detail.labels.address1',\n valueType: 'ShortText',\n isRequired: true,\n priority: 7\n }, {\n name: 'line2',\n title: 'core.blades.address-detail.labels.address2',\n valueType: 'ShortText',\n priority: 8\n }, {\n name: 'postalCode',\n title: 'core.blades.address-detail.labels.zip-code',\n valueType: 'ShortText',\n isRequired: true,\n priority: 9\n }, {\n name: 'email',\n title: 'core.blades.address-detail.labels.email',\n valueType: 'Email',\n priority: 10\n }, {\n name: 'phone',\n title: 'core.blades.address-detail.labels.phone',\n valueType: 'ShortText',\n priority: 11\n }]);\n }]);\n","angular.module('virtoCommerce.coreModule.common')\n .controller('virtoCommerce.coreModule.common.coreAddressDetailController', ['$scope', '$filter', 'platformWebApp.common.countries', 'platformWebApp.dialogService', 'platformWebApp.metaFormsService', 'platformWebApp.bladeNavigationService', function ($scope, $filter, countries, dialogService, metaFormsService, bladeNavigationService) {\n var blade = $scope.blade;\n\n blade.addressTypes = ['Billing', 'Shipping', 'BillingAndShipping'];\n blade.metaFields = blade.metaFields && blade.metaFields.length ? blade.metaFields : metaFormsService.getMetaFields('addressDetails');\n if (blade.currentEntity.isNew) {\n blade.currentEntity.addressType = blade.addressTypes[1];\n }\n blade.origEntity = blade.currentEntity;\n blade.currentEntity = angular.copy(blade.origEntity);\n blade.countries = countries.query();\n blade.countries.$promise.then(\n (allCountries) => {\n $scope.$watch('blade.currentEntity.countryCode', (countryCode, old) => {\n if (countryCode) {\n var country = _.findWhere(allCountries, { id: countryCode });\n if (country) {\n blade.currentEntity.countryName = country.name;\n\n if (countryCode !== old) {\n blade.currentEntity.regionName = undefined;\n currentRegions = [];\n }\n\n if (country.regions) {\n currentRegions = country.regions;\n } else {\n countries.queryRegions(countryCode).$promise.then((regions) => {\n country.regions = regions;\n currentRegions.push(...regions);\n });\n }\n }\n }\n });\n }\n );\n\n var currentRegions = [];\n if (blade.currentEntity.regionName && !blade.currentEntity.regionId) {\n addRegion(currentRegions, blade.currentEntity.regionName);\n }\n\n blade.getRegions = function (search) {\n var results = currentRegions;\n if (search && search.length > 1) {\n var filtered = $filter('filter')(results, search);\n if (!_.some(filtered)) {\n addRegion(results, search);\n } else if (filtered.length > 1) { // remove other (added) records\n filtered = _.filter(filtered, (x) => !x.id && x.displayName.length > search.length);\n for (var x of filtered) {\n results.splice(_.indexOf(results, x), 1);\n }\n }\n }\n\n return results;\n };\n\n function addRegion(regionArray, name) {\n var canInclude = true;\n _.each(regionArray, function (region) {\n if (name.includes(region.name)) {\n region.name = name;\n region.displayName = name;\n canInclude = false;\n }\n });\n if (canInclude) {\n regionArray.unshift({ name: name, displayName: name });\n }\n }\n\n $scope.$watch('blade.currentEntity.regionName', function (regionName, old) {\n if (regionName === old) return;\n\n var newId = null;\n if (regionName) {\n var region = _.findWhere(currentRegions, { name: regionName });\n if (region) {\n newId = region.id;\n }\n }\n\n blade.currentEntity.regionId = newId;\n });\n\n blade.toolbarCommands = [{\n name: \"platform.commands.reset\", icon: 'fa fa-undo',\n executeMethod: function () {\n angular.copy(blade.origEntity, blade.currentEntity);\n },\n canExecuteMethod: isDirty\n }, {\n name: \"platform.commands.delete\", icon: 'fas fa-trash-alt',\n executeMethod: deleteEntry,\n canExecuteMethod: function () {\n return !blade.currentEntity.isNew;\n }\n }];\n\n blade.isLoading = false;\n\n blade.onClose = function (closeCallback) {\n bladeNavigationService.showConfirmationIfNeeded(isDirty(), canSave(), blade, $scope.saveChanges, closeCallback, \"core.dialogs.address-save.title\", \"core.dialogs.address-save.message\");\n };\n\n $scope.setForm = function (form) {\n $scope.formScope = form;\n };\n\n $scope.isValid = function () {\n return $scope.formScope && $scope.formScope.$valid;\n };\n\n $scope.cancelChanges = function () {\n $scope.bladeClose();\n };\n\n $scope.saveChanges = function () {\n if (blade.confirmChangesFn) {\n blade.confirmChangesFn(blade.currentEntity);\n }\n angular.copy(blade.currentEntity, blade.origEntity);\n $scope.bladeClose();\n };\n\n function isDirty() {\n return !angular.equals(blade.currentEntity, blade.origEntity);\n }\n\n function canSave() {\n return isDirty();\n }\n\n function deleteEntry() {\n var dialog = {\n id: \"confirmDelete\",\n title: \"core.dialogs.address-delete.title\",\n message: \"core.dialogs.address-delete.message\",\n callback: function (remove) {\n if (remove) {\n if (blade.deleteFn) {\n blade.deleteFn(blade.currentEntity);\n }\n $scope.bladeClose();\n }\n }\n }\n dialogService.showConfirmationDialog(dialog);\n }\n }]);\n","angular.module('virtoCommerce.coreModule.common')\n .controller('virtoCommerce.coreModule.common.coreAddressListController', ['$timeout', '$scope', 'platformWebApp.bladeNavigationService', function ($timeout, $scope, bladeNavigationService) {\n var blade = $scope.blade;\n $scope.selectedItem = null;\n\n $scope.openDetailBlade = function (address) {\n if (!address) {\n address = { isNew: true };\n }\n $scope.selectedItem = address;\n\n var newBlade = {\n id: 'coreAddressDetail',\n currentEntity: address,\n title: blade.title,\n subtitle: 'core.blades.address-detail.subtitle',\n controller: 'virtoCommerce.coreModule.common.coreAddressDetailController',\n confirmChangesFn: function (address) {\n address.name = $scope.getAddressName(address);\n if (address.isNew) {\n address.isNew = undefined;\n blade.currentEntities.push(address);\n if (blade.confirmChangesFn) {\n blade.confirmChangesFn(address);\n }\n }\n },\n deleteFn: function (address) {\n var toRemove = _.find(blade.currentEntities, function (x) { return angular.equals(x, address) });\n if (toRemove) {\n var idx = blade.currentEntities.indexOf(toRemove);\n blade.currentEntities.splice(idx, 1);\n if (blade.deleteFn) {\n blade.deleteFn(address);\n }\n }\n },\n\n template: 'Modules/$(VirtoCommerce.Core)/Scripts/common/blades/address-detail.tpl.html'\n };\n bladeNavigationService.showBlade(newBlade, $scope.blade);\n }\n\n $scope.getAddressName = function (address) {\n return [address.countryCode, address.regionName, address.city, address.line1].join(\", \");\n };\n\n blade.headIcon = blade.parentBlade.headIcon;\n\n blade.toolbarCommands = [\n {\n name: \"platform.commands.add\", icon: 'fas fa-plus',\n executeMethod: function () {\n $scope.openDetailBlade();\n },\n canExecuteMethod: function () {\n return true;\n }\n }\n ];\n\n blade.isLoading = false;\n\n // open blade for new setting\n if (!_.some(blade.currentEntities)) {\n $timeout($scope.openDetailBlade, 60, false);\n }\n}]);\n","angular.module('virtoCommerce.coreModule.common')\n.directive('vaInfoButton', ['$document', function ($document) {\n return {\n restrict: 'E',\n replace: true,\n scope: {\n toolText: '@'\n },\n template: '',\n link: function (scope, element, attrs) {\n $(element).parents('.form-input').addClass('__info');\n\n function handleDocumentClickEvent(event) {\n {\n if (!$('.tooltip, .btn').is(event.target) && !$('.tooltip, .btn').has(event.target).length) {\n $('.tooltip').remove();\n $document.unbind('click', handleDocumentClickEvent);\n }\n }\n }\n\n element.bind('click', function () {\n var posLeft = $(this).offset().left + 42,\n posTop = $(this).offset().top;\n\n $('.tooltip').remove();\n\n $('body').prepend('
' + scope.toolText + '
');\n\n $document.on(\"click\", handleDocumentClickEvent);\n });\n }\n };\n}]);","angular.module('virtoCommerce.coreModule.common').directive('vcUkHtmleditor', [function () {\n return {\n restrict: 'A',\n require: 'ngModel',\n scope: {\n ngModel: '=',\n fileUploader: '=',\n id: '@'\n },\n link: function (scope, element) {\n var htmlEditor = UIkit.htmleditor(element, { mode: 'split', maxsplitsize: 1000, markdown: true, enablescripts: false, iframe: true });\n var codeMirror = htmlEditor.editor;\n //Besides inline scripts need to also eliminate inline event handlers on preview\n htmlEditor.on('render', function () {\n htmlEditor.replaceInPreview(/(?:<[^>]+\\s)((on\\S+)=[\"']?((?:.(?![\"']?\\s+(?:\\S+)=|[>\"']))+.)[\"']?)/ig, eventReplacer);\n });\n htmlEditor.addButtons({\n headerFirst: { label: 'H1', title: 'First level header' },\n headerSecond: { label: 'H2', title: 'Second level header' }\n });\n htmlEditor.options.toolbar.unshift('headerFirst', 'headerSecond');\n htmlEditor._buildtoolbar();\n htmlEditor.off('action.image').on('action.image', function () {\n $('#fileUploader').trigger('click');\n });\n var codeMirrorElement = $('.CodeMirror');\n var currentEditorLine;\n codeMirrorElement.on('dragenter', function (event) {\n event.preventDefault();\n event.stopPropagation();\n currentEditorLine = getCurrentEditorLine(codeMirror, event);\n highlightCurrentEditorLine(codeMirror, currentEditorLine);\n });\n codeMirrorElement.on('dragover', function (event) {\n event.preventDefault();\n event.stopPropagation();\n });\n codeMirrorElement.on('drop', function (event) {\n event.preventDefault();\n event.stopPropagation();\n scope.fileUploader.addToQueue(event.originalEvent.dataTransfer.files);\n });\n codeMirrorElement.on('paste', function (event) {\n var imageClipboardItem = _.find(event.originalEvent.clipboardData.items, function(i) {\n return i.type.indexOf('image') !== -1 && i.kind === 'file'\n });\n if (imageClipboardItem) {\n var blob = imageClipboardItem.getAsFile();\n var filename = buildFileName() + '.png';\n var file = new File([blob], filename, { type: blob.type });\n scope.fileUploader.addToQueue([file]);\n }\n });\n\n addActions(htmlEditor, codeMirror.getMode().name);\n\n scope.$on('filesUploaded', function (event, arg) {\n var currentEditorLine = currentEditorLine || codeMirror.getCursor().line;\n var position = { line: currentEditorLine, ch: 0 };\n if (codeMirror.getLineTokens(currentEditorLine)) {\n position.line++;\n }\n for (const file of arg.items) {\n position.line++;\n var editorMode = codeMirror.getMode();\n if (editorMode.name === 'gfm') {\n codeMirror.replaceRange(`![${file.name}](${file.url})\\n\\n`, position);\n } else if (editorMode.name === 'htmlmixed') {\n codeMirror.replaceRange(`\"${file.name}\"\\n\\n`, position);\n }\n }\n resetEditorLinesStyle(codeMirror);\n });\n\n scope.$on('resetContent', function (event, arg) {\n if (arg.id && arg.id !== scope.id) {\n return;\n }\n\n codeMirror.setValue(arg.body || '');\n });\n\n scope.$on('changeEditType', function (event, arg) {\n if (arg.editAsHtml) {\n codeMirror.setOption('mode', 'htmlmixed');\n }\n else if (arg.editAsMarkdown) {\n codeMirror.setOption('mode', 'gfm');\n }\n addActions(htmlEditor, codeMirror.getMode().name);\n });\n\n function eventReplacer(match) {\n if (match && match.matches && match.matches.length > 1) {\n return match.matches[0].replace(match.matches[1], '');\n } else {\n return undefined;\n }\n }\n\n function getCurrentEditorLine(editor, event) {\n return editor.lineAtHeight(event.originalEvent.pageY);\n }\n\n function highlightCurrentEditorLine(editor, line) {\n resetEditorLinesStyle(editor);\n editor.addLineClass(line, null, 'CodeMirror-activeline-background');\n }\n\n function resetEditorLinesStyle(editor) {\n for (var i = 0; i < editor.lineCount(); i++) {\n editor.removeLineClass(i, null, 'CodeMirror-activeline-background');\n }\n }\n\n function addAction(htmlEditor, name, replace, mode) {\n htmlEditor.off('action.' + name).on('action.' + name, function () {\n if (htmlEditor.getCursorMode() === 'html' || htmlEditor.getCursorMode() === 'markdown') {\n htmlEditor[mode === 'replaceLine' || 'replaceSelection'](replace);\n }\n });\n }\n\n function addActions(htmlEditor, editorMode) {\n if (editorMode === 'gfm') {\n htmlEditor.enableMarkdown();\n addAction(htmlEditor, 'headerFirst', '# $1');\n addAction(htmlEditor, 'headerSecond', '## $1');\n } else if (editorMode === 'htmlmixed') {\n htmlEditor.disableMarkdown();\n addAction(htmlEditor, 'headerFirst', '

$1

');\n addAction(htmlEditor, 'headerSecond', '

$1

');\n }\n }\n\n function buildFileName() {\n var date = new Date();\n return `image_${date.getFullYear()}-${(date.getMonth() + 1)}-${date.getDay()}_${date.getHours()}-${date.getMinutes()}-${date.getSeconds()}`;\n }\n\n codeMirror.setValue(scope.ngModel || '');\n }\n }\n}]);\n","angular.module(\"virtoCommerce.coreModule.currency\", [])\n.run(['platformWebApp.widgetService', function (widgetService) {\n //Register module widget\n widgetService.registerWidget({\n isVisible: function (blade) { return blade.currentEntity.id == 'VirtoCommerce.Core'; },\n controller: 'virtoCommerce.coreModule.currency.currencyWidgetController',\n template: 'Modules/$(VirtoCommerce.Core)/Scripts/currency/widgets/currencyWidget.tpl.html'\n }, 'moduleDetail');\n}])\n\n.factory('virtoCommerce.coreModule.currency.currencyUtils', ['virtoCommerce.coreModule.currency.currencyApi', 'platformWebApp.bladeNavigationService', function (currencyApi, bladeNavigationService) {\n var currenciesRef;\n return {\n getCurrencies: function () { return currenciesRef = currencyApi.query(); },\n editCurrencies: function (blade) {\n var newBlade = {\n id: 'currencyList',\n parentRefresh: function (data) { angular.copy(data, currenciesRef); },\n controller: 'virtoCommerce.coreModule.currency.currencyListController',\n template: 'Modules/$(VirtoCommerce.Core)/Scripts/currency/blades/currency-list.tpl.html'\n };\n bladeNavigationService.showBlade(newBlade, blade);\n }\n };\n}])\n;","angular.module('virtoCommerce.coreModule.currency')\n .controller('virtoCommerce.coreModule.currency.currencyDetailController', [\n '$scope',\n 'platformWebApp.dialogService',\n 'platformWebApp.bladeNavigationService',\n 'virtoCommerce.coreModule.currency.currencyApi',\n 'platformWebApp.metaFormsService',\n function ($scope, dialogService, bladeNavigationService, currencyApi, metaFormsService) {\n var blade = $scope.blade;\n blade.updatePermission = 'core:currency:update';\n\n blade.metafields = blade.metafields ? blade.metafields : metaFormsService.getMetaFields('currencyDetail');\n\n blade.roundingTypes = [\n 'Rounding001',\n 'Rounding005Up',\n 'Rounding005Down',\n 'Rounding01Up',\n 'Rounding01Down',\n 'Rounding05',\n 'Rounding1',\n 'Rounding1Up'\n ];\n blade.midpointRoundings = [\n 'ToEven',\n 'AwayFromZero',\n 'ToZero',\n 'ToNegativeInfinity',\n 'ToPositiveInfinity'\n ];\n\n $scope.saveChanges = function () {\n blade.isLoading = true;\n\n if (blade.isNew) {\n currencyApi.save(blade.currentEntity, function () {\n angular.copy(blade.currentEntity, blade.origEntity);\n $scope.bladeClose();\n blade.parentBlade.setSelectedId(blade.currentEntity.code);\n blade.parentBlade.refresh(true);\n }, function (error) {\n bladeNavigationService.setError('Error: ' + error.status, blade);\n });\n } else {\n currencyApi.update(blade.currentEntity, function (data) {\n angular.copy(blade.currentEntity, blade.origEntity);\n $scope.bladeClose();\n blade.parentBlade.setSelectedId(blade.currentEntity.code);\n blade.parentBlade.refresh(true);\n }, function (error) {\n bladeNavigationService.setError('Error: ' + error.status, blade);\n });\n }\n };\n\n function initializeBlade(data) {\n if (blade.isNew) data = { exchangeRate: 1.00 };\n \n blade.currentEntity = angular.copy(data);\n blade.origEntity = data;\n blade.isLoading = false;\n\n blade.title = blade.isNew ? 'core.blades.currency-detail.new-title' : data.name;\n blade.subtitle = blade.isNew ? 'core.blades.currency-detail.new-subtitle' : 'core.blades.currency-detail.subtitle';\n }\n\n var formScope;\n $scope.setForm = function (form) {\n formScope = form;\n }\n\n function isDirty() {\n return !angular.equals(blade.currentEntity, blade.origEntity) && blade.hasUpdatePermission();\n }\n\n function canSave() {\n return isDirty() && formScope && formScope.$valid;\n }\n\n blade.headIcon = 'fa fa-money';\n\n if (!blade.isNew)\n blade.toolbarCommands = [\n {\n name: \"platform.commands.save\", icon: 'fas fa-save',\n executeMethod: $scope.saveChanges,\n canExecuteMethod: canSave,\n permission: blade.updatePermission\n },\n {\n name: \"platform.commands.reset\", icon: 'fa fa-undo',\n executeMethod: function () {\n angular.copy(blade.origEntity, blade.currentEntity);\n },\n canExecuteMethod: isDirty,\n permission: blade.updatePermission\n },\n {\n name: \"platform.commands.delete\", icon: 'fas fa-trash-alt',\n executeMethod: deleteEntry,\n canExecuteMethod: function () {\n return !blade.origEntity.isPrimary;\n },\n permission: 'core:currency:delete'\n }\n ];\n\n function deleteEntry() {\n var dialog = {\n id: \"confirmDelete\",\n title: \"core.dialogs.currency-delete.title\",\n message: \"core.dialogs.currency-delete.message\",\n callback: function (remove) {\n if (remove) {\n blade.isLoading = true;\n\n currencyApi.remove({ codes: blade.currentEntity.code }, function () {\n angular.copy(blade.currentEntity, blade.origEntity);\n $scope.bladeClose();\n blade.parentBlade.setSelectedId(null);\n blade.parentBlade.refresh(true);\n }, function (error) {\n bladeNavigationService.setError('Error ' + error.status, blade);\n });\n }\n }\n }\n dialogService.showConfirmationDialog(dialog);\n }\n\n blade.onClose = function (closeCallback) {\n bladeNavigationService.showConfirmationIfNeeded(isDirty(), canSave(), blade, $scope.saveChanges, closeCallback, \"core.dialogs.currency-save.title\", \"core.dialogs.currency-save.message\");\n };\n\n // actions on load \n initializeBlade(blade.data);\n }]);\n","angular.module('virtoCommerce.coreModule.currency')\n.controller('virtoCommerce.coreModule.currency.currencyListController', ['$scope', 'virtoCommerce.coreModule.currency.currencyApi', 'platformWebApp.bladeNavigationService',\nfunction ($scope, currencyApi, bladeNavigationService) {\n var blade = $scope.blade;\n\n blade.refresh = function (parentRefresh) {\n blade.isLoading = true;\n\n currencyApi.query({}, function (results) {\n blade.isLoading = false;\n blade.currentEntities = results;\n\n if (parentRefresh && blade.parentRefresh) {\n blade.parentRefresh(results);\n }\n }, function (error) {\n bladeNavigationService.setError('Error ' + error.status, blade);\n });\n };\n\n blade.setSelectedId = function (selectedNodeId) {\n $scope.selectedNodeId = selectedNodeId;\n };\n\n function showDetailBlade(bladeData) {\n var newBlade = {\n id: 'currencyDetail',\n // data: node, \n controller: 'virtoCommerce.coreModule.currency.currencyDetailController',\n template: 'Modules/$(VirtoCommerce.Core)/Scripts/currency/blades/currency-detail.tpl.html'\n };\n angular.extend(newBlade, bladeData);\n bladeNavigationService.showBlade(newBlade, blade);\n }\n\n $scope.selectNode = function (node) {\n blade.setSelectedId(node.code);\n showDetailBlade({ data: node });\n };\n\n blade.headIcon = 'fa fa-money';\n blade.toolbarCommands = [\n {\n name: \"platform.commands.refresh\", icon: 'fa fa-refresh',\n executeMethod: blade.refresh,\n canExecuteMethod: function () {\n return true;\n }\n },\n {\n name: \"platform.commands.add\", icon: 'fas fa-plus',\n executeMethod: function () {\n blade.setSelectedId(null);\n showDetailBlade({ isNew: true });\n },\n canExecuteMethod: function () {\n return true;\n },\n permission: 'core:currency:create'\n }\n ];\n\n // actions on load\n blade.title = 'core.blades.currency-list.title';\n blade.subtitle = 'core.blades.currency-list.subtitle';\n blade.refresh();\n}]);\n","angular.module('virtoCommerce.coreModule.currency').factory('virtoCommerce.coreModule.currency.currencyApi', ['$resource', function ($resource) {\n return $resource('api/currencies', null, {\n update: { method: 'PUT' }\n });\n}]);\n","angular.module('virtoCommerce.coreModule.currency')\n.controller('virtoCommerce.coreModule.currency.currencyWidgetController', ['$scope', 'platformWebApp.bladeNavigationService', 'virtoCommerce.coreModule.currency.currencyApi', function ($scope, bladeNavigationService, currencyApi) {\n var blade = $scope.blade;\n\n $scope.widget.refresh = function () {\n $scope.currentNumberInfo = '...';\n currencyApi.query({}, function (results) {\n $scope.currentNumberInfo = results.length;\n }, function (error) {\n //bladeNavigationService.setError('Error ' + error.status, $scope.blade);\n });\n }\n\n $scope.openBlade = function () {\n var newBlade = {\n id: 'currencyList',\n controller: 'virtoCommerce.coreModule.currency.currencyListController',\n template: 'Modules/$(VirtoCommerce.Core)/Scripts/currency/blades/currency-list.tpl.html'\n };\n bladeNavigationService.showBlade(newBlade, blade);\n };\n\n $scope.widget.refresh();\n}]);","angular.module('virtoCommerce.coreModule.common')\n .run(\n ['$http', '$compile', 'virtoCommerce.coreModule.common.dynamicExpressionService', function ($http, $compile, dynamicExpressionService) {\n\n //Register PROMOTION expressions\n dynamicExpressionService.registerExpression({\n id: 'BlockCustomerCondition',\n newChildLabel: 'Add user group',\n getValidationError: function () {\n return (this.children && this.children.length) ? undefined : 'Your promotion must have at least one eligibility criterion';\n }\n });\n dynamicExpressionService.registerExpression({\n id: 'ConditionIsEveryone',\n displayName: 'Everyone'\n });\n dynamicExpressionService.registerExpression({\n id: 'ConditionIsFirstTimeBuyer',\n displayName: 'First time customers'\n });\n dynamicExpressionService.registerExpression({\n id: 'ConditionIsRegisteredUser',\n displayName: 'Registered users'\n });\n dynamicExpressionService.registerExpression({\n id: 'UserGroupsContainsCondition',\n displayName: 'User group contains...'\n });\n\n var availableExcludings = [\n {\n id: 'ExcludingCategoryCondition'\n },\n {\n id: 'ExcludingProductCondition'\n }\n ];\n dynamicExpressionService.registerExpression({\n id: 'ExcludingCategoryCondition',\n displayName: 'Items from a specific category'\n });\n dynamicExpressionService.registerExpression({\n id: 'ExcludingProductCondition',\n displayName: 'Product items'\n });\n\n dynamicExpressionService.registerExpression({\n id: 'BlockCatalogCondition',\n newChildLabel: 'Add condition'\n });\n dynamicExpressionService.registerExpression({\n id: 'ConditionEntryIs',\n // templateURL: 'expression-ConditionEntryIs.html',\n // controller: 'conditionEntryIsController'\n displayName: 'Specific product'\n });\n dynamicExpressionService.registerExpression({\n id: 'ConditionCurrencyIs',\n displayName: 'Currency is...'\n });\n dynamicExpressionService.registerExpression({\n id: 'ConditionCodeContains',\n displayName: 'Product code contains...'\n });\n dynamicExpressionService.registerExpression({\n id: 'ConditionCategoryIs',\n displayName: 'Specific category',\n availableChildren: availableExcludings,\n newChildLabel: 'Excluding'\n });\n dynamicExpressionService.registerExpression({\n id: 'ConditionInStockQuantity',\n displayName: 'In stock quantity is...'\n });\n\n dynamicExpressionService.registerExpression({\n id: 'BlockCartCondition',\n newChildLabel: 'Add condition'\n });\n dynamicExpressionService.registerExpression({\n id: 'ConditionCartSubtotalLeast',\n displayName: 'Cart subtotal is...',\n availableChildren: availableExcludings,\n newChildLabel: 'Excluding'\n });\n dynamicExpressionService.registerExpression({\n id: 'ConditionAtNumItemsInCart',\n displayName: 'Number of items in the shopping cart',\n availableChildren: availableExcludings,\n newChildLabel: 'Excluding'\n });\n dynamicExpressionService.registerExpression({\n id: 'ConditionAtNumItemsInCategoryAreInCart',\n displayName: 'Number of items out of a category in the shopping cart',\n availableChildren: availableExcludings,\n newChildLabel: 'Excluding'\n });\n dynamicExpressionService.registerExpression({\n id: 'ConditionAtNumItemsOfEntryAreInCart',\n displayName: 'Number of specific product items in the shopping cart'\n });\n dynamicExpressionService.registerExpression({\n id: 'BlockReward',\n newChildLabel: 'Add reward',\n getValidationError: function () {\n return (this.children && this.children.length) ? undefined : 'Your promotion must have at least one reward';\n }\n });\n dynamicExpressionService.registerExpression({\n id: 'RewardCartGetOfAbsSubtotal',\n displayName: '$... off cart subtotal'\n });\n dynamicExpressionService.registerExpression({\n id: 'RewardCartGetOfRelSubtotal',\n displayName: '...% off cart subtotal, no more than $...'\n });\n dynamicExpressionService.registerExpression({\n id: 'RewardItemGetFreeNumItemOfProduct',\n displayName: '... free items of ... product'\n });\n dynamicExpressionService.registerExpression({\n id: 'RewardItemGiftNumItem',\n displayName: '... items of ... product as a gift'\n });\n dynamicExpressionService.registerExpression({\n id: 'RewardItemGetOfAbs',\n displayName: '$... off'\n });\n\n dynamicExpressionService.registerExpression({\n id: 'RewardItemGetOfRel',\n displayName: '...% off for product ..., no more than $...'\n });\n\n dynamicExpressionService.registerExpression({\n id: 'RewardItemGetOfAbsForNum',\n displayName: '$... off for ... specific product items'\n //availableChildren: availableExcludings,\n //newChildLabel: '+ excluding'\n });\n dynamicExpressionService.registerExpression({\n id: 'RewardItemGetOfRelForNum',\n displayName: '...% off for ... specific product items, no more than $...'\n //availableChildren: availableExcludings,\n //newChildLabel: '+ excluding'\n });\n dynamicExpressionService.registerExpression({\n id: 'RewardShippingGetOfAbsShippingMethod',\n displayName: '$... off for shipping at ...'\n });\n dynamicExpressionService.registerExpression({\n id: 'RewardShippingGetOfRelShippingMethod',\n displayName: '% off for shipping at ..., no more than $...'\n });\n dynamicExpressionService.registerExpression({\n id: 'RewardPaymentGetOfAbs',\n displayName: '$... off for using ... payment method'\n });\n dynamicExpressionService.registerExpression({\n id: 'RewardPaymentGetOfRel',\n displayName: '...% off for using ... payment method, no more than $...'\n });\n dynamicExpressionService.registerExpression({\n id: 'RewardItemForEveryNumInGetOfRel',\n displayName: '...% off for ... of every ... specific product items'\n });\n dynamicExpressionService.registerExpression({\n id: 'RewardItemForEveryNumOtherItemInGetOfRel',\n displayName: '...% off for ... items of a specific product per every ... items of another product'\n });\n\n //Register COMMON expressions\n var groupNames = ['Browse behavior', 'Shopper profile', 'Shopping cart', 'Location'];\n dynamicExpressionService.registerExpression({\n groupName: groupNames[0],\n id: 'ConditionStoreSearchedPhrase',\n displayName: 'Shopper searched for ... in the store'\n });\n dynamicExpressionService.registerExpression({\n groupName: groupNames[0],\n id: 'ConditionLanguageIs',\n displayName: 'User language is set to...'\n });\n\n dynamicExpressionService.registerExpression({\n groupName: groupNames[1],\n id: 'ConditionAgeIs',\n displayName: 'Shopper age is ...'\n });\n dynamicExpressionService.registerExpression({\n groupName: groupNames[1],\n id: 'ConditionGenderIs',\n displayName: 'Shopper gender is ...'\n });\n\n dynamicExpressionService.registerExpression({\n groupName: groupNames[3],\n id: 'ConditionGeoTimeZone',\n displayName: 'Time zone'\n });\n dynamicExpressionService.registerExpression({\n groupName: groupNames[3],\n id: 'ConditionGeoZipCode',\n displayName: 'Zip/postal code'\n });\n dynamicExpressionService.registerExpression({\n groupName: groupNames[3],\n id: 'ConditionGeoCity',\n displayName: 'City'\n });\n dynamicExpressionService.registerExpression({\n groupName: groupNames[3],\n id: 'ConditionGeoCountry',\n displayName: 'Country'\n });\n dynamicExpressionService.registerExpression({\n groupName: groupNames[3],\n id: 'ConditionGeoState',\n displayName: 'State/province'\n });\n\n //Register CONTENT PUBLISHING expressions\n dynamicExpressionService.registerExpression({\n id: 'BlockContentCondition',\n newChildLabel: 'Add condition'\n });\n\n //Register PRICELIST ASSIGNMENT expressions\n dynamicExpressionService.registerExpression({\n id: 'BlockPricingCondition',\n newChildLabel: 'Add condition'\n });\n\n dynamicExpressionService.registerExpression({\n groupName: groupNames[1],\n id: 'UserGroupsContainsCondition',\n displayName: 'User group contains ...'\n });\n\n $http.get('Modules/$(VirtoCommerce.Core)/Scripts/dynamicConditions/all-templates.html').then(function (response) {\n // compile the response, which will put stuff into the cache\n $compile(response.data);\n });\n }])\n .controller('virtoCommerce.dynamicExpressions.conditionLanguageIsController', ['$scope', 'platformWebApp.settings', function ($scope, settings) {\n $scope.availableLanguages = settings.getValues({ id: 'VirtoCommerce.Core.General.Languages' });\n }])\n .controller('virtoCommerce.dynamicExpressions.conditionGeoCountryController', ['$scope', 'platformWebApp.common.countries', function ($scope, countries) {\n $scope.countries = countries.query();\n }])\n .controller('virtoCommerce.dynamicExpressions.conditionGeoTimeZoneController', ['$scope', 'platformWebApp.common.timeZones', function ($scope, timeZones) {\n $scope.timeZones = timeZones.query();\n }])\n .controller('virtoCommerce.dynamicExpressions.shippingMethodRewardController', ['$scope', function ($scope) {\n function initialize(storeIds) {\n //Use stores ($scope.stores) from parent controller virtoCommerce.marketingModule.promotionDetailController\n let selectedStores = _.filter($scope.stores, function (x) { return (storeIds && storeIds.length > 0) ? storeIds.indexOf(x.id) >= 0 : true });\n $scope.shippingMethods = _.uniq(_.flatten(_.pluck(selectedStores, 'shippingMethods')), function (x) { return x.code; });\n if ($scope.shippingMethods.length === 0) {\n $scope.shippingMethods = [{ code: 'No methods found' }];\n }\n }\n $scope.$watch('stores', function () { initialize($scope.blade.currentEntity.storeIds); }, true);\n $scope.$watch('blade.currentEntity.storeIds', initialize);\n }])\n .controller('virtoCommerce.dynamicExpressions.paymentMethodRewardController', ['$scope', function ($scope) {\n function initialize(storeIds) {\n //Use stores ($scope.stores) from parent controller virtoCommerce.marketingModule.promotionDetailController\n let selectedStores = _.filter($scope.stores, function (x) { return (storeIds && storeIds.length > 0) ? storeIds.indexOf(x.id) >= 0 : true });\n $scope.paymentMethods = _.uniq(_.flatten(_.pluck(selectedStores, 'paymentMethods')), function (x) { return x.code; });\n if ($scope.paymentMethods.length === 0) {\n $scope.paymentMethods = [{ code: 'No methods found' }];\n }\n }\n $scope.$watch('stores', function () { initialize($scope.blade.currentEntity.storeIds); }, true);\n $scope.$watch('blade.currentEntity.storeIds', initialize);\n }])\n .filter('compareConditionToText', function () {\n return function (input) {\n var retVal;\n\n switch (input) {\n case 'IsMatching': retVal = 'exactly'; break;\n case 'IsNotMatching': retVal = 'anything but'; break;\n case 'IsGreaterThan': retVal = 'greater than'; break;\n case 'IsGreaterThanOrEqual': retVal = 'greater than or equals'; break;\n case 'IsLessThan': retVal = 'less than'; break;\n case 'IsLessThanOrEqual': retVal = 'less than or equals'; break;\n case 'Contains': retVal = 'containing'; break;\n case 'NotContains': retVal = 'not containing'; break;\n case 'Matching': retVal = 'exactly'; break;\n case 'NotMatching': retVal = 'anything but'; break;\n case 'Exactly': retVal = 'exactly'; break;\n case 'AtLeast': retVal = 'at least'; break;\n case 'Between': retVal = 'between'; break;\n default:\n retVal = input;\n }\n return retVal;\n };\n });\n","angular.module('virtoCommerce.coreModule.common')\n .factory('virtoCommerce.coreModule.common.dynamicExpressionService', function () {\n var retVal = {\n expressionTreeTemplateUrl: '',\n expressions: [],\n registerExpression: function (expression) {\n if (!expression.templateURL) {\n expression.templateURL = 'expression-' + expression.id + '.html';\n }\n\n this.expressions[expression.id] = expression;\n }\n };\n return retVal;\n })\n .directive('vaDynamicExpressionTree', function () {\n return {\n restrict: 'E',\n //scope: {\n // source: '='\n //},\n link: function ($scope, $element, $attrs) {\n $scope.addChild = function (chosenMenuElement, parentBlock) {\n if (!parentBlock.children) {\n parentBlock.children = [];\n }\n parentBlock.children.push(angular.copy(chosenMenuElement));\n };\n $scope.deleteChild = function (child, parentList) {\n parentList.splice(parentList.indexOf(child), 1);\n }\n\n $scope.$watch($attrs.source, function (newVal) {\n $scope.source = newVal;\n });\n\n $scope.templateUrl = 'Modules/$(VirtoCommerce.Core)/Scripts/dynamicConditions/expression-tree.tpl.html';\n $scope.$watch($attrs.templateUrl, function (value) {\n if (value) {\n $scope.templateUrl = value;\n }\n });\n },\n template: '
'\n };\n });\n"],"names":["moduleName","undefined","AppDependencies","push","angular","module","run","metaFormsService","registerMetaFields","name","title","templateUrl","factory","packageTypeApi","bladeNavigationService","packageTypesRef","getPackageTypes","query","editPackageTypes","blade","newBlade","id","parentRefresh","data","copy","controller","template","showBlade","$scope","dialogService","settings","formScope","isDirty","equals","currentEntity","origEntity","hasUpdatePermission","canSave","$valid","saveChanges","isLoading","isNew","save","bladeClose","parentBlade","refresh","error","setError","status","update","openMeasureUnitsDictionarySettingManagement","setting","currentEntityId","measureUnits","isApiSave","setForm","form","headIcon","toolbarCommands","icon","executeMethod","canExecuteMethod","permission","dialog","message","callback","remove","ids","showConfirmationDialog","isPrimary","onClose","closeCallback","showConfirmationIfNeeded","getValues","subtitle","showDetailBlade","bladeData","extend","results","currentEntities","setSelectedId","selectedNodeId","selectNode","node","code","$resource","method","saveChanges_noClose","noClose","semanticUrl","semanticUrlValidator","metaFields","getMetaFields","cancelChanges","seoContainerObject","seoInfos","value","test","duplicateValidator","_","all","x","storeId","isValid","updatePermission","$rootScope","seoApi","anyValidSeoFound","initializeBlade","duplicates","validate","isUrlValid","retVal","conflicts","seoInfo","dataToSave","each","findWhere","defaultContainerId","batchUpdate","objectId","objectType","any","$broadcast","$watch","uiGridHelper","stores","storesPromise","fixedStoreId","$promise","openDetailsBlade","languages","then","promiseData","deleteList","selection","closeChildrenBlades","splice","indexOf","resolveDuplicates","delete","isActive","gridApi","getSelectedRows","setGridOptions","gridOptions","initialize","url","promise","openBlade","widget","getFixedStoreId","getDefaultContainerId","getLanguages","openSeoBlade","UIclass","valueType","priority","isRequired","$filter","countries","addressTypes","length","addressType","allCountries","countryCode","old","country","countryName","regionName","currentRegions","regions","queryRegions","addRegion","regionArray","canInclude","region","includes","displayName","unshift","regionId","getRegions","search","filtered","some","filter","newId","deleteFn","confirmChangesFn","$timeout","selectedItem","openDetailBlade","address","getAddressName","toRemove","find","idx","city","line1","join","directive","$document","restrict","replace","scope","toolText","link","element","attrs","handleDocumentClickEvent","event","$","is","target","has","unbind","parents","addClass","bind","posLeft","this","offset","left","posTop","top","prepend","on","require","ngModel","fileUploader","htmlEditor","UIkit","htmleditor","mode","maxsplitsize","markdown","enablescripts","iframe","codeMirror","editor","replaceInPreview","eventReplacer","addButtons","headerFirst","label","headerSecond","options","toolbar","_buildtoolbar","off","trigger","currentEditorLine","codeMirrorElement","match","matches","resetEditorLinesStyle","i","lineCount","removeLineClass","addAction","getCursorMode","addActions","editorMode","enableMarkdown","disableMarkdown","line","preventDefault","stopPropagation","lineAtHeight","originalEvent","pageY","getCurrentEditorLine","addLineClass","addToQueue","dataTransfer","files","date","imageClipboardItem","clipboardData","items","type","kind","blob","getAsFile","filename","Date","getFullYear","getMonth","getDay","getHours","getMinutes","getSeconds","file","File","getMode","$on","arg","getCursor","position","ch","getLineTokens","replaceRange","setValue","body","editAsHtml","setOption","editAsMarkdown","widgetService","registerWidget","isVisible","currencyApi","currenciesRef","getCurrencies","editCurrencies","metafields","roundingTypes","midpointRoundings","codes","exchangeRate","currentNumberInfo","$http","$compile","dynamicExpressionService","registerExpression","newChildLabel","getValidationError","children","availableExcludings","availableChildren","groupNames","groupName","get","response","availableLanguages","timeZones","storeIds","selectedStores","shippingMethods","uniq","flatten","pluck","paymentMethods","input","expressionTreeTemplateUrl","expressions","expression","templateURL","$element","$attrs","addChild","chosenMenuElement","parentBlock","deleteChild","child","parentList","source","newVal"],"sourceRoot":""}