{ "version": 3, "sources": ["../../node_modules/tinycolor2/esm/tinycolor.js", "../../node_scripts/bundle/esbuild/inject/tinycolor-inject.js", "../../node_modules/angular-ui-bootstrap/src/tooltip/tooltip.css", "../../node_modules/angular-ui-bootstrap/src/position/position.js", "../../node_modules/angular-ui-bootstrap/src/position/index-nocss.js", "../../node_modules/angular-ui-bootstrap/src/stackedMap/stackedMap.js", "../../node_modules/angular-ui-bootstrap/src/stackedMap/index.js", "../../node_modules/angular-ui-bootstrap/template/tooltip/tooltip-popup.html.js", "../../node_modules/angular-ui-bootstrap/template/tooltip/tooltip-html-popup.html.js", "../../node_modules/angular-ui-bootstrap/template/tooltip/tooltip-template-popup.html.js", "../../node_modules/angular-ui-bootstrap/src/tooltip/tooltip.js", "../../node_modules/angular-ui-bootstrap/src/tooltip/index-nocss.js", "../../node_modules/angular-ui-bootstrap/template/popover/popover.html.js", "../../node_modules/angular-ui-bootstrap/template/popover/popover-html.html.js", "../../node_modules/angular-ui-bootstrap/template/popover/popover-template.html.js", "../../node_modules/angular-ui-bootstrap/src/popover/popover.js", "../../node_modules/angular-ui-bootstrap/src/popover/index-nocss.js", "../../node_modules/angular-ui-bootstrap/src/popover/index.js", "../../scripts/_common/carousel/styles/carousel.scss", "../../scripts/_common/carousel/carouselNative.js", "../../scripts/_common/carousel/services/carouselService.js", "../../scripts/_common/carousel/directives/carouselDirectives.js", "../../scripts/_common/carousel/controllers/carouselController.js", "../../scripts/_common/carousel/carousel.module.js", "../../scripts/_common/rating/styles/rating.scss", "../../scripts/_common/rating/directives/ratingDirectives.js", "../../scripts/_common/rating/controllers/ratingController.js", "../../scripts/_common/rating/rating.module.js", "../../scripts/_common/rotate/screenfull.cjs", "../../scripts/_common/rotate/threesixty.js", "../../scripts/_common/rotate/styles/rotate.scss", "../../scripts/_common/rotate/controllers/rotateController.js", "../../scripts/_common/rotate/directives/rotateDirectives.js", "../../scripts/_common/rotate/rotate.module.js", "../../scripts/_common/lozad-adv/lozadAdv.constants.ts", "../../scripts/_common/lozad-adv/lozadAdv.ctrl.ts", "../../scripts/_common/lozad-adv/lozadAdv.directive.ts", "../../node_modules/mimic-function/index.js", "../../node_modules/debounce-fn/index.js", "../../scripts/_common/lozad-adv/lozadAdv.service.ts", "../../scripts/_common/lozad-adv/lozadAdv.module.js", "../../scripts/_common/iframe-responsive/styles/iframe-responsive.scss", "../../scripts/_common/iframe-responsive/controllers/iframeResponsiveController.js", "../../scripts/_common/iframe-responsive/templates/iframeResponsiveTemplates.js", "../../scripts/_common/iframe-responsive/directives/iframeResponsiveDirective.js", "../../scripts/_common/iframe-responsive/services/iframeResponsiveService.js", "../../scripts/_common/iframe-responsive/iframeResponsive.module.js", "../../scripts/_partials/videos/controllers/videosController.js", "../../scripts/_partials/videos/directives/videosDirective.js", "../../scripts/_partials/videos/videos.module.js", "../../scripts/_common/zoomer/styles/zoomer.scss", "../../scripts/_common/zoomer/controllers/zoomerController.js", "../../scripts/_common/zoomer/directives/zoomerDirectives.js", "../../scripts/_common/zoomer/zoomer.module.js", "../../scripts/_partials/custom-options/styles/customOptions.scss", "../../scripts/_partials/custom-options/controllers/customOptionsController.js", "../../scripts/_partials/custom-options/directives/customOptionsDirectives.js", "../../scripts/_partials/custom-options/services/customOptionsService.js", "../../scripts/_partials/custom-options/customOptions.module.js", "../../scripts/_partials/colors-viewer/styles/colors-viewer.scss", "../../scripts/_partials/colors-viewer/controllers/colorsViewerController.js", "../../scripts/_partials/colors-viewer/directives/colorsViewerDirectives.js", "../../scripts/_partials/colors-viewer/colorsViewer.module.js", "../../scripts/_partials/sizes-viewer/styles/sizes-viewer.scss", "../../scripts/_partials/sizes-viewer/controllers/sizesViewerController.js", "../../scripts/_partials/sizes-viewer/directives/sizesViewerDirectives.js", "../../scripts/_partials/sizes-viewer/sizesViewer.module.js", "../../scripts/_partials/buy-one-click/styles/buyOneClick.scss", "../../scripts/_partials/buy-one-click/controllers/buyOneClickTriggerController.js", "../../scripts/_partials/buy-one-click/controllers/buyOneClickFormController.js", "../../scripts/_partials/buy-one-click/directives/buyOneClickDirectives.js", "../../scripts/_common/PubSub/PubSub.js", "../../scripts/_partials/buy-one-click/services/buyOneClickService.js", "../../scripts/_partials/buy-one-click/buyOneClick.module.js", "../../scripts/_partials/pre-order/styles/styles.scss", "../../scripts/_partials/pre-order/controllers/preOrderTriggerController.js", "../../scripts/_partials/pre-order/controllers/preOrderFormController.js", "../../scripts/_partials/pre-order/directives/preOrderDirectives.js", "../../scripts/_partials/pre-order/services/preOrderService.js", "../../scripts/_partials/pre-order/preOrder.module.js", "../../styles/partials/gallery.scss", "../../styles/partials/product-color.scss", "../../styles/views/product.scss", "../../scripts/product/controllers/productController.js", "../../scripts/product/services/productService.js", "../../scripts/product/productQuickview.module.js", "../../node_modules/ng-file-upload/dist/ng-file-upload-all.js", "../../node_modules/ng-file-upload/index.js", "../../bundle_config/product.js", "../../scripts/product/product.module.js", "../../scripts/_partials/product-view/productView.module.js", "../../scripts/_partials/quickview/quickview.module.js", "../../scripts/_partials/quickview/controllers/quickviewController.js", "../../scripts/_partials/quickview/directives/quickviewDirectives.js", "../../scripts/_partials/quickview/services/quickviewService.js", "../../scripts/_partials/price-amount-list/priceAmountList.module.js", "../../scripts/_partials/price-amount-list/controllers/priceAmountListController.js", "../../scripts/_partials/price-amount-list/directives/priceAmountListDirectives.js", "../../scripts/_partials/products-carousel/productsCarousel.module.js", "../../scripts/_partials/products-carousel/controllers/productsCarouselController.js", "../../scripts/_partials/products-carousel/directives/productsCarouselDirectives.js", "../../scripts/_partials/products-carousel/services/productsCarouselService.js", "../../scripts/_partials/photo-view-list/photoViewList.module.js", "../../scripts/_partials/photo-view-list/photo-view-list.ctrl.js", "../../scripts/_partials/photo-view-list/photo-view-list.directive.js", "../../scripts/_partials/product-view/services/productViewService.js", "../../scripts/_partials/product-view/directives/productViewDirectives.js", "../../scripts/_partials/product-view/controllers/productViewCarouselPhotosController.js", "../../scripts/_partials/product-view/controllers/productViewChangeModeController.js", "../../scripts/_partials/product-view/controllers/productViewItemController.js", "../../scripts/_partials/product-view/productViewItem.controls.js", "../../scripts/_partials/product-view/controllers/productViewModeController.js", "../../scripts/_partials/product-view/controllers/productViewImageListController.js", "../../scripts/_partials/product-view/controllers/productViewImageController.js", "../../scripts/product/directives/showStocksDirective.js", "../../scripts/_common/tabs/tabs.module.js", "../../scripts/_common/tabs/services/tabsService.js", "../../scripts/_common/tabs/directives/tabsDirectives.js", "../../scripts/_common/tabs/controllers/tabsController.js", "../../scripts/_common/tabs/controllers/tabHeaderController.js", "../../scripts/_common/tabs/controllers/tabContentController.js", "../../scripts/_partials/compare/compare.module.ts", "../../scripts/_partials/compare/controllers/compareController.ts", "../../scripts/_partials/compare/controllers/compareCountController.ts", "../../scripts/_partials/compare/directives/compareDirectives.ts", "../../scripts/_partials/compare/services/compareService.ts", "../../scripts/_partials/reviews/reviews.module.js", "../../scripts/_partials/reviews/controllers/reviewsController.js", "../../scripts/_partials/reviews/controllers/reviewsFormController.js", "../../scripts/_partials/reviews/controllers/reviewItemRatingController.js", "../../scripts/_partials/reviews/directives/reviewsDirectives.js", "../../scripts/_partials/shipping/shipping.module.js", "../../scripts/_partials/shipping/extendTemplate/extendTemplate.js", "../../scripts/_common/yandexMaps/yandexMaps.module.js", "../../scripts/_common/yandexMaps/yandexMapsService.js", "../../scripts/_common/modal/modal.module.js", "../../scripts/_common/modal/modal.js", "../../scripts/_common/modal/controllers/modalController.js", "../../scripts/_common/modal/directives/modalDirectives.js", "../../scripts/_common/modal/services/modalService.js", "../../scripts/_partials/shipping/services/shipping.service.js", "../../scripts/_partials/shipping/controllers/shippingListController.js", "../../scripts/_partials/shipping/controllers/shippingVariantsController.js", "../../scripts/_partials/shipping/controllers/shippingTemplateController.js", "../../scripts/_partials/shipping/controllers/shippingItemError.js", "../../scripts/_partials/shipping/directives/shippingDirectives.js", "../../scripts/_partials/shipping/controllers/shippingPointsListController.ts", "../../scripts/_common/urlHelper/urlHelperService.module.js", "../../scripts/_common/urlHelper/urlHelperService.js", "../../scripts/_common/urlHelper/urlHelper.js", "../../scripts/_common/urlHelper/urlHelper.config.js", "../../node_scripts/shopVariables.js", "../../scripts/product/components/productAvailabilityMap/productAvailabilityMap.module.js", "../../scripts/product/components/productAvailabilityMap/productAvailabilityMap.ctrl.js", "../../scripts/product/components/productAvailabilityMap/productAvailabilityMap.directive.js", "../../scripts/_common/yandexMaps/ya-map-2.1.directive.js", "../../scripts/warehouses/warehouses.module.js", "../../scripts/warehouses/services/warehousesService.js", "../../scripts/warehouses/controllers/cartStockInWarehousesController.js", "../../scripts/warehouses/directives/warehousesDirectives.js", "../../scripts/warehouses/controllers/warehousesMap.ctrl.js", "../../scripts/warehouses/directives/warehousesListMap.directive.js", "../../scripts/warehouses/directives/warehousesListDirective.js", "../../scripts/appDependency.js"], "sourcesContent": ["// This file is autogenerated. It's used to publish ESM to npm.\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\n// https://github.com/bgrins/TinyColor\n// Brian Grinstead, MIT License\n\nvar trimLeft = /^\\s+/;\nvar trimRight = /\\s+$/;\nfunction tinycolor(color, opts) {\n color = color ? color : \"\";\n opts = opts || {};\n\n // If input is already a tinycolor, return itself\n if (color instanceof tinycolor) {\n return color;\n }\n // If we are called as a function, call using new instead\n if (!(this instanceof tinycolor)) {\n return new tinycolor(color, opts);\n }\n var rgb = inputToRGB(color);\n this._originalInput = color, this._r = rgb.r, this._g = rgb.g, this._b = rgb.b, this._a = rgb.a, this._roundA = Math.round(100 * this._a) / 100, this._format = opts.format || rgb.format;\n this._gradientType = opts.gradientType;\n\n // Don't let the range of [0,255] come back in [0,1].\n // Potentially lose a little bit of precision here, but will fix issues where\n // .5 gets interpreted as half of the total, instead of half of 1\n // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n if (this._r < 1) this._r = Math.round(this._r);\n if (this._g < 1) this._g = Math.round(this._g);\n if (this._b < 1) this._b = Math.round(this._b);\n this._ok = rgb.ok;\n}\ntinycolor.prototype = {\n isDark: function isDark() {\n return this.getBrightness() < 128;\n },\n isLight: function isLight() {\n return !this.isDark();\n },\n isValid: function isValid() {\n return this._ok;\n },\n getOriginalInput: function getOriginalInput() {\n return this._originalInput;\n },\n getFormat: function getFormat() {\n return this._format;\n },\n getAlpha: function getAlpha() {\n return this._a;\n },\n getBrightness: function getBrightness() {\n //http://www.w3.org/TR/AERT#color-contrast\n var rgb = this.toRgb();\n return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n },\n getLuminance: function getLuminance() {\n //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n var rgb = this.toRgb();\n var RsRGB, GsRGB, BsRGB, R, G, B;\n RsRGB = rgb.r / 255;\n GsRGB = rgb.g / 255;\n BsRGB = rgb.b / 255;\n if (RsRGB <= 0.03928) R = RsRGB / 12.92;else R = Math.pow((RsRGB + 0.055) / 1.055, 2.4);\n if (GsRGB <= 0.03928) G = GsRGB / 12.92;else G = Math.pow((GsRGB + 0.055) / 1.055, 2.4);\n if (BsRGB <= 0.03928) B = BsRGB / 12.92;else B = Math.pow((BsRGB + 0.055) / 1.055, 2.4);\n return 0.2126 * R + 0.7152 * G + 0.0722 * B;\n },\n setAlpha: function setAlpha(value) {\n this._a = boundAlpha(value);\n this._roundA = Math.round(100 * this._a) / 100;\n return this;\n },\n toHsv: function toHsv() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n return {\n h: hsv.h * 360,\n s: hsv.s,\n v: hsv.v,\n a: this._a\n };\n },\n toHsvString: function toHsvString() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n var h = Math.round(hsv.h * 360),\n s = Math.round(hsv.s * 100),\n v = Math.round(hsv.v * 100);\n return this._a == 1 ? \"hsv(\" + h + \", \" + s + \"%, \" + v + \"%)\" : \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \" + this._roundA + \")\";\n },\n toHsl: function toHsl() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n return {\n h: hsl.h * 360,\n s: hsl.s,\n l: hsl.l,\n a: this._a\n };\n },\n toHslString: function toHslString() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n var h = Math.round(hsl.h * 360),\n s = Math.round(hsl.s * 100),\n l = Math.round(hsl.l * 100);\n return this._a == 1 ? \"hsl(\" + h + \", \" + s + \"%, \" + l + \"%)\" : \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \" + this._roundA + \")\";\n },\n toHex: function toHex(allow3Char) {\n return rgbToHex(this._r, this._g, this._b, allow3Char);\n },\n toHexString: function toHexString(allow3Char) {\n return \"#\" + this.toHex(allow3Char);\n },\n toHex8: function toHex8(allow4Char) {\n return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);\n },\n toHex8String: function toHex8String(allow4Char) {\n return \"#\" + this.toHex8(allow4Char);\n },\n toRgb: function toRgb() {\n return {\n r: Math.round(this._r),\n g: Math.round(this._g),\n b: Math.round(this._b),\n a: this._a\n };\n },\n toRgbString: function toRgbString() {\n return this._a == 1 ? \"rgb(\" + Math.round(this._r) + \", \" + Math.round(this._g) + \", \" + Math.round(this._b) + \")\" : \"rgba(\" + Math.round(this._r) + \", \" + Math.round(this._g) + \", \" + Math.round(this._b) + \", \" + this._roundA + \")\";\n },\n toPercentageRgb: function toPercentageRgb() {\n return {\n r: Math.round(bound01(this._r, 255) * 100) + \"%\",\n g: Math.round(bound01(this._g, 255) * 100) + \"%\",\n b: Math.round(bound01(this._b, 255) * 100) + \"%\",\n a: this._a\n };\n },\n toPercentageRgbString: function toPercentageRgbString() {\n return this._a == 1 ? \"rgb(\" + Math.round(bound01(this._r, 255) * 100) + \"%, \" + Math.round(bound01(this._g, 255) * 100) + \"%, \" + Math.round(bound01(this._b, 255) * 100) + \"%)\" : \"rgba(\" + Math.round(bound01(this._r, 255) * 100) + \"%, \" + Math.round(bound01(this._g, 255) * 100) + \"%, \" + Math.round(bound01(this._b, 255) * 100) + \"%, \" + this._roundA + \")\";\n },\n toName: function toName() {\n if (this._a === 0) {\n return \"transparent\";\n }\n if (this._a < 1) {\n return false;\n }\n return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;\n },\n toFilter: function toFilter(secondColor) {\n var hex8String = \"#\" + rgbaToArgbHex(this._r, this._g, this._b, this._a);\n var secondHex8String = hex8String;\n var gradientType = this._gradientType ? \"GradientType = 1, \" : \"\";\n if (secondColor) {\n var s = tinycolor(secondColor);\n secondHex8String = \"#\" + rgbaToArgbHex(s._r, s._g, s._b, s._a);\n }\n return \"progid:DXImageTransform.Microsoft.gradient(\" + gradientType + \"startColorstr=\" + hex8String + \",endColorstr=\" + secondHex8String + \")\";\n },\n toString: function toString(format) {\n var formatSet = !!format;\n format = format || this._format;\n var formattedString = false;\n var hasAlpha = this._a < 1 && this._a >= 0;\n var needsAlphaFormat = !formatSet && hasAlpha && (format === \"hex\" || format === \"hex6\" || format === \"hex3\" || format === \"hex4\" || format === \"hex8\" || format === \"name\");\n if (needsAlphaFormat) {\n // Special case for \"transparent\", all other non-alpha formats\n // will return rgba when there is transparency.\n if (format === \"name\" && this._a === 0) {\n return this.toName();\n }\n return this.toRgbString();\n }\n if (format === \"rgb\") {\n formattedString = this.toRgbString();\n }\n if (format === \"prgb\") {\n formattedString = this.toPercentageRgbString();\n }\n if (format === \"hex\" || format === \"hex6\") {\n formattedString = this.toHexString();\n }\n if (format === \"hex3\") {\n formattedString = this.toHexString(true);\n }\n if (format === \"hex4\") {\n formattedString = this.toHex8String(true);\n }\n if (format === \"hex8\") {\n formattedString = this.toHex8String();\n }\n if (format === \"name\") {\n formattedString = this.toName();\n }\n if (format === \"hsl\") {\n formattedString = this.toHslString();\n }\n if (format === \"hsv\") {\n formattedString = this.toHsvString();\n }\n return formattedString || this.toHexString();\n },\n clone: function clone() {\n return tinycolor(this.toString());\n },\n _applyModification: function _applyModification(fn, args) {\n var color = fn.apply(null, [this].concat([].slice.call(args)));\n this._r = color._r;\n this._g = color._g;\n this._b = color._b;\n this.setAlpha(color._a);\n return this;\n },\n lighten: function lighten() {\n return this._applyModification(_lighten, arguments);\n },\n brighten: function brighten() {\n return this._applyModification(_brighten, arguments);\n },\n darken: function darken() {\n return this._applyModification(_darken, arguments);\n },\n desaturate: function desaturate() {\n return this._applyModification(_desaturate, arguments);\n },\n saturate: function saturate() {\n return this._applyModification(_saturate, arguments);\n },\n greyscale: function greyscale() {\n return this._applyModification(_greyscale, arguments);\n },\n spin: function spin() {\n return this._applyModification(_spin, arguments);\n },\n _applyCombination: function _applyCombination(fn, args) {\n return fn.apply(null, [this].concat([].slice.call(args)));\n },\n analogous: function analogous() {\n return this._applyCombination(_analogous, arguments);\n },\n complement: function complement() {\n return this._applyCombination(_complement, arguments);\n },\n monochromatic: function monochromatic() {\n return this._applyCombination(_monochromatic, arguments);\n },\n splitcomplement: function splitcomplement() {\n return this._applyCombination(_splitcomplement, arguments);\n },\n // Disabled until https://github.com/bgrins/TinyColor/issues/254\n // polyad: function (number) {\n // return this._applyCombination(polyad, [number]);\n // },\n triad: function triad() {\n return this._applyCombination(polyad, [3]);\n },\n tetrad: function tetrad() {\n return this._applyCombination(polyad, [4]);\n }\n};\n\n// If input is an object, force 1 into \"1.0\" to handle ratios properly\n// String input requires \"1.0\" as input, so 1 will be treated as 1\ntinycolor.fromRatio = function (color, opts) {\n if (_typeof(color) == \"object\") {\n var newColor = {};\n for (var i in color) {\n if (color.hasOwnProperty(i)) {\n if (i === \"a\") {\n newColor[i] = color[i];\n } else {\n newColor[i] = convertToPercentage(color[i]);\n }\n }\n }\n color = newColor;\n }\n return tinycolor(color, opts);\n};\n\n// Given a string or object, convert that input to RGB\n// Possible string inputs:\n//\n// \"red\"\n// \"#f00\" or \"f00\"\n// \"#ff0000\" or \"ff0000\"\n// \"#ff000000\" or \"ff000000\"\n// \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n// \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n// \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n// \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n// \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n// \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n// \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n//\nfunction inputToRGB(color) {\n var rgb = {\n r: 0,\n g: 0,\n b: 0\n };\n var a = 1;\n var s = null;\n var v = null;\n var l = null;\n var ok = false;\n var format = false;\n if (typeof color == \"string\") {\n color = stringInputToObject(color);\n }\n if (_typeof(color) == \"object\") {\n if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n rgb = rgbToRgb(color.r, color.g, color.b);\n ok = true;\n format = String(color.r).substr(-1) === \"%\" ? \"prgb\" : \"rgb\";\n } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n s = convertToPercentage(color.s);\n v = convertToPercentage(color.v);\n rgb = hsvToRgb(color.h, s, v);\n ok = true;\n format = \"hsv\";\n } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n s = convertToPercentage(color.s);\n l = convertToPercentage(color.l);\n rgb = hslToRgb(color.h, s, l);\n ok = true;\n format = \"hsl\";\n }\n if (color.hasOwnProperty(\"a\")) {\n a = color.a;\n }\n }\n a = boundAlpha(a);\n return {\n ok: ok,\n format: color.format || format,\n r: Math.min(255, Math.max(rgb.r, 0)),\n g: Math.min(255, Math.max(rgb.g, 0)),\n b: Math.min(255, Math.max(rgb.b, 0)),\n a: a\n };\n}\n\n// Conversion Functions\n// --------------------\n\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n// \n\n// `rgbToRgb`\n// Handle bounds / percentage checking to conform to CSS color spec\n// \n// *Assumes:* r, g, b in [0, 255] or [0, 1]\n// *Returns:* { r, g, b } in [0, 255]\nfunction rgbToRgb(r, g, b) {\n return {\n r: bound01(r, 255) * 255,\n g: bound01(g, 255) * 255,\n b: bound01(b, 255) * 255\n };\n}\n\n// `rgbToHsl`\n// Converts an RGB color value to HSL.\n// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n// *Returns:* { h, s, l } in [0,1]\nfunction rgbToHsl(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = Math.max(r, g, b),\n min = Math.min(r, g, b);\n var h,\n s,\n l = (max + min) / 2;\n if (max == min) {\n h = s = 0; // achromatic\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n return {\n h: h,\n s: s,\n l: l\n };\n}\n\n// `hslToRgb`\n// Converts an HSL color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hslToRgb(h, s, l) {\n var r, g, b;\n h = bound01(h, 360);\n s = bound01(s, 100);\n l = bound01(l, 100);\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n if (s === 0) {\n r = g = b = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n return {\n r: r * 255,\n g: g * 255,\n b: b * 255\n };\n}\n\n// `rgbToHsv`\n// Converts an RGB color value to HSV\n// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n// *Returns:* { h, s, v } in [0,1]\nfunction rgbToHsv(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = Math.max(r, g, b),\n min = Math.min(r, g, b);\n var h,\n s,\n v = max;\n var d = max - min;\n s = max === 0 ? 0 : d / max;\n if (max == min) {\n h = 0; // achromatic\n } else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n return {\n h: h,\n s: s,\n v: v\n };\n}\n\n// `hsvToRgb`\n// Converts an HSV color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hsvToRgb(h, s, v) {\n h = bound01(h, 360) * 6;\n s = bound01(s, 100);\n v = bound01(v, 100);\n var i = Math.floor(h),\n f = h - i,\n p = v * (1 - s),\n q = v * (1 - f * s),\n t = v * (1 - (1 - f) * s),\n mod = i % 6,\n r = [v, q, p, p, t, v][mod],\n g = [t, v, v, q, p, p][mod],\n b = [p, p, t, v, v, q][mod];\n return {\n r: r * 255,\n g: g * 255,\n b: b * 255\n };\n}\n\n// `rgbToHex`\n// Converts an RGB color to hex\n// Assumes r, g, and b are contained in the set [0, 255]\n// Returns a 3 or 6 character hex\nfunction rgbToHex(r, g, b, allow3Char) {\n var hex = [pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16))];\n\n // Return a 3 character hex if possible\n if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n }\n return hex.join(\"\");\n}\n\n// `rgbaToHex`\n// Converts an RGBA color plus alpha transparency to hex\n// Assumes r, g, b are contained in the set [0, 255] and\n// a in [0, 1]. Returns a 4 or 8 character rgba hex\nfunction rgbaToHex(r, g, b, a, allow4Char) {\n var hex = [pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16)), pad2(convertDecimalToHex(a))];\n\n // Return a 4 character hex if possible\n if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n }\n return hex.join(\"\");\n}\n\n// `rgbaToArgbHex`\n// Converts an RGBA color to an ARGB Hex8 string\n// Rarely used, but required for \"toFilter()\"\nfunction rgbaToArgbHex(r, g, b, a) {\n var hex = [pad2(convertDecimalToHex(a)), pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16))];\n return hex.join(\"\");\n}\n\n// `equals`\n// Can be called with any tinycolor input\ntinycolor.equals = function (color1, color2) {\n if (!color1 || !color2) return false;\n return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\n};\ntinycolor.random = function () {\n return tinycolor.fromRatio({\n r: Math.random(),\n g: Math.random(),\n b: Math.random()\n });\n};\n\n// Modification Functions\n// ----------------------\n// Thanks to less.js for some of the basics here\n// \n\nfunction _desaturate(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.s -= amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n}\nfunction _saturate(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.s += amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n}\nfunction _greyscale(color) {\n return tinycolor(color).desaturate(100);\n}\nfunction _lighten(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.l += amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n}\nfunction _brighten(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var rgb = tinycolor(color).toRgb();\n rgb.r = Math.max(0, Math.min(255, rgb.r - Math.round(255 * -(amount / 100))));\n rgb.g = Math.max(0, Math.min(255, rgb.g - Math.round(255 * -(amount / 100))));\n rgb.b = Math.max(0, Math.min(255, rgb.b - Math.round(255 * -(amount / 100))));\n return tinycolor(rgb);\n}\nfunction _darken(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.l -= amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n}\n\n// Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n// Values outside of this range will be wrapped into this range.\nfunction _spin(color, amount) {\n var hsl = tinycolor(color).toHsl();\n var hue = (hsl.h + amount) % 360;\n hsl.h = hue < 0 ? 360 + hue : hue;\n return tinycolor(hsl);\n}\n\n// Combination Functions\n// ---------------------\n// Thanks to jQuery xColor for some of the ideas behind these\n// \n\nfunction _complement(color) {\n var hsl = tinycolor(color).toHsl();\n hsl.h = (hsl.h + 180) % 360;\n return tinycolor(hsl);\n}\nfunction polyad(color, number) {\n if (isNaN(number) || number <= 0) {\n throw new Error(\"Argument to polyad must be a positive number\");\n }\n var hsl = tinycolor(color).toHsl();\n var result = [tinycolor(color)];\n var step = 360 / number;\n for (var i = 1; i < number; i++) {\n result.push(tinycolor({\n h: (hsl.h + i * step) % 360,\n s: hsl.s,\n l: hsl.l\n }));\n }\n return result;\n}\nfunction _splitcomplement(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [tinycolor(color), tinycolor({\n h: (h + 72) % 360,\n s: hsl.s,\n l: hsl.l\n }), tinycolor({\n h: (h + 216) % 360,\n s: hsl.s,\n l: hsl.l\n })];\n}\nfunction _analogous(color, results, slices) {\n results = results || 6;\n slices = slices || 30;\n var hsl = tinycolor(color).toHsl();\n var part = 360 / slices;\n var ret = [tinycolor(color)];\n for (hsl.h = (hsl.h - (part * results >> 1) + 720) % 360; --results;) {\n hsl.h = (hsl.h + part) % 360;\n ret.push(tinycolor(hsl));\n }\n return ret;\n}\nfunction _monochromatic(color, results) {\n results = results || 6;\n var hsv = tinycolor(color).toHsv();\n var h = hsv.h,\n s = hsv.s,\n v = hsv.v;\n var ret = [];\n var modification = 1 / results;\n while (results--) {\n ret.push(tinycolor({\n h: h,\n s: s,\n v: v\n }));\n v = (v + modification) % 1;\n }\n return ret;\n}\n\n// Utility Functions\n// ---------------------\n\ntinycolor.mix = function (color1, color2, amount) {\n amount = amount === 0 ? 0 : amount || 50;\n var rgb1 = tinycolor(color1).toRgb();\n var rgb2 = tinycolor(color2).toRgb();\n var p = amount / 100;\n var rgba = {\n r: (rgb2.r - rgb1.r) * p + rgb1.r,\n g: (rgb2.g - rgb1.g) * p + rgb1.g,\n b: (rgb2.b - rgb1.b) * p + rgb1.b,\n a: (rgb2.a - rgb1.a) * p + rgb1.a\n };\n return tinycolor(rgba);\n};\n\n// Readability Functions\n// ---------------------\n// false\n// tinycolor.isReadable(\"#000\", \"#111\",{level:\"AA\",size:\"large\"}) => false\ntinycolor.isReadable = function (color1, color2, wcag2) {\n var readability = tinycolor.readability(color1, color2);\n var wcag2Parms, out;\n out = false;\n wcag2Parms = validateWCAG2Parms(wcag2);\n switch (wcag2Parms.level + wcag2Parms.size) {\n case \"AAsmall\":\n case \"AAAlarge\":\n out = readability >= 4.5;\n break;\n case \"AAlarge\":\n out = readability >= 3;\n break;\n case \"AAAsmall\":\n out = readability >= 7;\n break;\n }\n return out;\n};\n\n// `mostReadable`\n// Given a base color and a list of possible foreground or background\n// colors for that base, returns the most readable color.\n// Optionally returns Black or White if the most readable color is unreadable.\n// *Example*\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:false}).toHexString(); // \"#112255\"\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:true}).toHexString(); // \"#ffffff\"\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"large\"}).toHexString(); // \"#faf3f3\"\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"small\"}).toHexString(); // \"#ffffff\"\ntinycolor.mostReadable = function (baseColor, colorList, args) {\n var bestColor = null;\n var bestScore = 0;\n var readability;\n var includeFallbackColors, level, size;\n args = args || {};\n includeFallbackColors = args.includeFallbackColors;\n level = args.level;\n size = args.size;\n for (var i = 0; i < colorList.length; i++) {\n readability = tinycolor.readability(baseColor, colorList[i]);\n if (readability > bestScore) {\n bestScore = readability;\n bestColor = tinycolor(colorList[i]);\n }\n }\n if (tinycolor.isReadable(baseColor, bestColor, {\n level: level,\n size: size\n }) || !includeFallbackColors) {\n return bestColor;\n } else {\n args.includeFallbackColors = false;\n return tinycolor.mostReadable(baseColor, [\"#fff\", \"#000\"], args);\n }\n};\n\n// Big List of Colors\n// ------------------\n// \nvar names = tinycolor.names = {\n aliceblue: \"f0f8ff\",\n antiquewhite: \"faebd7\",\n aqua: \"0ff\",\n aquamarine: \"7fffd4\",\n azure: \"f0ffff\",\n beige: \"f5f5dc\",\n bisque: \"ffe4c4\",\n black: \"000\",\n blanchedalmond: \"ffebcd\",\n blue: \"00f\",\n blueviolet: \"8a2be2\",\n brown: \"a52a2a\",\n burlywood: \"deb887\",\n burntsienna: \"ea7e5d\",\n cadetblue: \"5f9ea0\",\n chartreuse: \"7fff00\",\n chocolate: \"d2691e\",\n coral: \"ff7f50\",\n cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\",\n crimson: \"dc143c\",\n cyan: \"0ff\",\n darkblue: \"00008b\",\n darkcyan: \"008b8b\",\n darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\",\n darkgreen: \"006400\",\n darkgrey: \"a9a9a9\",\n darkkhaki: \"bdb76b\",\n darkmagenta: \"8b008b\",\n darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\",\n darkorchid: \"9932cc\",\n darkred: \"8b0000\",\n darksalmon: \"e9967a\",\n darkseagreen: \"8fbc8f\",\n darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\",\n darkslategrey: \"2f4f4f\",\n darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\",\n deeppink: \"ff1493\",\n deepskyblue: \"00bfff\",\n dimgray: \"696969\",\n dimgrey: \"696969\",\n dodgerblue: \"1e90ff\",\n firebrick: \"b22222\",\n floralwhite: \"fffaf0\",\n forestgreen: \"228b22\",\n fuchsia: \"f0f\",\n gainsboro: \"dcdcdc\",\n ghostwhite: \"f8f8ff\",\n gold: \"ffd700\",\n goldenrod: \"daa520\",\n gray: \"808080\",\n green: \"008000\",\n greenyellow: \"adff2f\",\n grey: \"808080\",\n honeydew: \"f0fff0\",\n hotpink: \"ff69b4\",\n indianred: \"cd5c5c\",\n indigo: \"4b0082\",\n ivory: \"fffff0\",\n khaki: \"f0e68c\",\n lavender: \"e6e6fa\",\n lavenderblush: \"fff0f5\",\n lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\",\n lightblue: \"add8e6\",\n lightcoral: \"f08080\",\n lightcyan: \"e0ffff\",\n lightgoldenrodyellow: \"fafad2\",\n lightgray: \"d3d3d3\",\n lightgreen: \"90ee90\",\n lightgrey: \"d3d3d3\",\n lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\",\n lightseagreen: \"20b2aa\",\n lightskyblue: \"87cefa\",\n lightslategray: \"789\",\n lightslategrey: \"789\",\n lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\",\n lime: \"0f0\",\n limegreen: \"32cd32\",\n linen: \"faf0e6\",\n magenta: \"f0f\",\n maroon: \"800000\",\n mediumaquamarine: \"66cdaa\",\n mediumblue: \"0000cd\",\n mediumorchid: \"ba55d3\",\n mediumpurple: \"9370db\",\n mediumseagreen: \"3cb371\",\n mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\",\n mediumturquoise: \"48d1cc\",\n mediumvioletred: \"c71585\",\n midnightblue: \"191970\",\n mintcream: \"f5fffa\",\n mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\",\n navajowhite: \"ffdead\",\n navy: \"000080\",\n oldlace: \"fdf5e6\",\n olive: \"808000\",\n olivedrab: \"6b8e23\",\n orange: \"ffa500\",\n orangered: \"ff4500\",\n orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\",\n palegreen: \"98fb98\",\n paleturquoise: \"afeeee\",\n palevioletred: \"db7093\",\n papayawhip: \"ffefd5\",\n peachpuff: \"ffdab9\",\n peru: \"cd853f\",\n pink: \"ffc0cb\",\n plum: \"dda0dd\",\n powderblue: \"b0e0e6\",\n purple: \"800080\",\n rebeccapurple: \"663399\",\n red: \"f00\",\n rosybrown: \"bc8f8f\",\n royalblue: \"4169e1\",\n saddlebrown: \"8b4513\",\n salmon: \"fa8072\",\n sandybrown: \"f4a460\",\n seagreen: \"2e8b57\",\n seashell: \"fff5ee\",\n sienna: \"a0522d\",\n silver: \"c0c0c0\",\n skyblue: \"87ceeb\",\n slateblue: \"6a5acd\",\n slategray: \"708090\",\n slategrey: \"708090\",\n snow: \"fffafa\",\n springgreen: \"00ff7f\",\n steelblue: \"4682b4\",\n tan: \"d2b48c\",\n teal: \"008080\",\n thistle: \"d8bfd8\",\n tomato: \"ff6347\",\n turquoise: \"40e0d0\",\n violet: \"ee82ee\",\n wheat: \"f5deb3\",\n white: \"fff\",\n whitesmoke: \"f5f5f5\",\n yellow: \"ff0\",\n yellowgreen: \"9acd32\"\n};\n\n// Make it easy to access colors via `hexNames[hex]`\nvar hexNames = tinycolor.hexNames = flip(names);\n\n// Utilities\n// ---------\n\n// `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`\nfunction flip(o) {\n var flipped = {};\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n flipped[o[i]] = i;\n }\n }\n return flipped;\n}\n\n// Return a valid alpha value [0,1] with all invalid values being set to 1\nfunction boundAlpha(a) {\n a = parseFloat(a);\n if (isNaN(a) || a < 0 || a > 1) {\n a = 1;\n }\n return a;\n}\n\n// Take input from [0, n] and return it as [0, 1]\nfunction bound01(n, max) {\n if (isOnePointZero(n)) n = \"100%\";\n var processPercent = isPercentage(n);\n n = Math.min(max, Math.max(0, parseFloat(n)));\n\n // Automatically convert percentage into number\n if (processPercent) {\n n = parseInt(n * max, 10) / 100;\n }\n\n // Handle floating point rounding errors\n if (Math.abs(n - max) < 0.000001) {\n return 1;\n }\n\n // Convert into [0, 1] range if it isn't already\n return n % max / parseFloat(max);\n}\n\n// Force a number between 0 and 1\nfunction clamp01(val) {\n return Math.min(1, Math.max(0, val));\n}\n\n// Parse a base-16 hex value into a base-10 integer\nfunction parseIntFromHex(val) {\n return parseInt(val, 16);\n}\n\n// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n// \nfunction isOnePointZero(n) {\n return typeof n == \"string\" && n.indexOf(\".\") != -1 && parseFloat(n) === 1;\n}\n\n// Check to see if string passed in is a percentage\nfunction isPercentage(n) {\n return typeof n === \"string\" && n.indexOf(\"%\") != -1;\n}\n\n// Force a hex value to have 2 characters\nfunction pad2(c) {\n return c.length == 1 ? \"0\" + c : \"\" + c;\n}\n\n// Replace a decimal with it's percentage value\nfunction convertToPercentage(n) {\n if (n <= 1) {\n n = n * 100 + \"%\";\n }\n return n;\n}\n\n// Converts a decimal to a hex value\nfunction convertDecimalToHex(d) {\n return Math.round(parseFloat(d) * 255).toString(16);\n}\n// Converts a hex value to a decimal\nfunction convertHexToDecimal(h) {\n return parseIntFromHex(h) / 255;\n}\nvar matchers = function () {\n // \n var CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\n\n // \n var CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n\n // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.\n var CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\n\n // Actual matching.\n // Parentheses and commas are optional, but not required.\n // Whitespace can take the place of commas or opening paren\n var PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n var PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n return {\n CSS_UNIT: new RegExp(CSS_UNIT),\n rgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\n rgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\n hsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\n hsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\n hsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\n hsva: new RegExp(\"hsva\" + PERMISSIVE_MATCH4),\n hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n };\n}();\n\n// `isValidCSSUnit`\n// Take in a single string / number and check to see if it looks like a CSS unit\n// (see `matchers` above for definition).\nfunction isValidCSSUnit(color) {\n return !!matchers.CSS_UNIT.exec(color);\n}\n\n// `stringInputToObject`\n// Permissive string parsing. Take in a number of formats, and output an object\n// based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\nfunction stringInputToObject(color) {\n color = color.replace(trimLeft, \"\").replace(trimRight, \"\").toLowerCase();\n var named = false;\n if (names[color]) {\n color = names[color];\n named = true;\n } else if (color == \"transparent\") {\n return {\n r: 0,\n g: 0,\n b: 0,\n a: 0,\n format: \"name\"\n };\n }\n\n // Try to match string input using regular expressions.\n // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n // Just return an object and let the conversion functions handle that.\n // This way the result will be the same whether the tinycolor is initialized with string or object.\n var match;\n if (match = matchers.rgb.exec(color)) {\n return {\n r: match[1],\n g: match[2],\n b: match[3]\n };\n }\n if (match = matchers.rgba.exec(color)) {\n return {\n r: match[1],\n g: match[2],\n b: match[3],\n a: match[4]\n };\n }\n if (match = matchers.hsl.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n l: match[3]\n };\n }\n if (match = matchers.hsla.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n l: match[3],\n a: match[4]\n };\n }\n if (match = matchers.hsv.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n v: match[3]\n };\n }\n if (match = matchers.hsva.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n v: match[3],\n a: match[4]\n };\n }\n if (match = matchers.hex8.exec(color)) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n a: convertHexToDecimal(match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if (match = matchers.hex6.exec(color)) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n if (match = matchers.hex4.exec(color)) {\n return {\n r: parseIntFromHex(match[1] + \"\" + match[1]),\n g: parseIntFromHex(match[2] + \"\" + match[2]),\n b: parseIntFromHex(match[3] + \"\" + match[3]),\n a: convertHexToDecimal(match[4] + \"\" + match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if (match = matchers.hex3.exec(color)) {\n return {\n r: parseIntFromHex(match[1] + \"\" + match[1]),\n g: parseIntFromHex(match[2] + \"\" + match[2]),\n b: parseIntFromHex(match[3] + \"\" + match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n return false;\n}\nfunction validateWCAG2Parms(parms) {\n // return valid WCAG2 parms for isReadable.\n // If input parms are invalid, return {\"level\":\"AA\", \"size\":\"small\"}\n var level, size;\n parms = parms || {\n level: \"AA\",\n size: \"small\"\n };\n level = (parms.level || \"AA\").toUpperCase();\n size = (parms.size || \"small\").toLowerCase();\n if (level !== \"AA\" && level !== \"AAA\") {\n level = \"AA\";\n }\n if (size !== \"small\" && size !== \"large\") {\n size = \"small\";\n }\n return {\n level: level,\n size: size\n };\n}\n\nexport { tinycolor as default };\n", "\uFEFFimport tinycolor from 'tinycolor2';\n\nwindow.tinycolor = window.tinycolor != null ? window.tinycolor : tinycolor;\nexport { tinycolor };\nexport default window.tinycolor;\n", "[uib-tooltip-popup].tooltip.top-left > .tooltip-arrow,\r\n[uib-tooltip-popup].tooltip.top-right > .tooltip-arrow,\r\n[uib-tooltip-popup].tooltip.bottom-left > .tooltip-arrow,\r\n[uib-tooltip-popup].tooltip.bottom-right > .tooltip-arrow,\r\n[uib-tooltip-popup].tooltip.left-top > .tooltip-arrow,\r\n[uib-tooltip-popup].tooltip.left-bottom > .tooltip-arrow,\r\n[uib-tooltip-popup].tooltip.right-top > .tooltip-arrow,\r\n[uib-tooltip-popup].tooltip.right-bottom > .tooltip-arrow,\r\n[uib-tooltip-html-popup].tooltip.top-left > .tooltip-arrow,\r\n[uib-tooltip-html-popup].tooltip.top-right > .tooltip-arrow,\r\n[uib-tooltip-html-popup].tooltip.bottom-left > .tooltip-arrow,\r\n[uib-tooltip-html-popup].tooltip.bottom-right > .tooltip-arrow,\r\n[uib-tooltip-html-popup].tooltip.left-top > .tooltip-arrow,\r\n[uib-tooltip-html-popup].tooltip.left-bottom > .tooltip-arrow,\r\n[uib-tooltip-html-popup].tooltip.right-top > .tooltip-arrow,\r\n[uib-tooltip-html-popup].tooltip.right-bottom > .tooltip-arrow,\r\n[uib-tooltip-template-popup].tooltip.top-left > .tooltip-arrow,\r\n[uib-tooltip-template-popup].tooltip.top-right > .tooltip-arrow,\r\n[uib-tooltip-template-popup].tooltip.bottom-left > .tooltip-arrow,\r\n[uib-tooltip-template-popup].tooltip.bottom-right > .tooltip-arrow,\r\n[uib-tooltip-template-popup].tooltip.left-top > .tooltip-arrow,\r\n[uib-tooltip-template-popup].tooltip.left-bottom > .tooltip-arrow,\r\n[uib-tooltip-template-popup].tooltip.right-top > .tooltip-arrow,\r\n[uib-tooltip-template-popup].tooltip.right-bottom > .tooltip-arrow,\r\n[uib-popover-popup].popover.top-left > .arrow,\r\n[uib-popover-popup].popover.top-right > .arrow,\r\n[uib-popover-popup].popover.bottom-left > .arrow,\r\n[uib-popover-popup].popover.bottom-right > .arrow,\r\n[uib-popover-popup].popover.left-top > .arrow,\r\n[uib-popover-popup].popover.left-bottom > .arrow,\r\n[uib-popover-popup].popover.right-top > .arrow,\r\n[uib-popover-popup].popover.right-bottom > .arrow,\r\n[uib-popover-html-popup].popover.top-left > .arrow,\r\n[uib-popover-html-popup].popover.top-right > .arrow,\r\n[uib-popover-html-popup].popover.bottom-left > .arrow,\r\n[uib-popover-html-popup].popover.bottom-right > .arrow,\r\n[uib-popover-html-popup].popover.left-top > .arrow,\r\n[uib-popover-html-popup].popover.left-bottom > .arrow,\r\n[uib-popover-html-popup].popover.right-top > .arrow,\r\n[uib-popover-html-popup].popover.right-bottom > .arrow,\r\n[uib-popover-template-popup].popover.top-left > .arrow,\r\n[uib-popover-template-popup].popover.top-right > .arrow,\r\n[uib-popover-template-popup].popover.bottom-left > .arrow,\r\n[uib-popover-template-popup].popover.bottom-right > .arrow,\r\n[uib-popover-template-popup].popover.left-top > .arrow,\r\n[uib-popover-template-popup].popover.left-bottom > .arrow,\r\n[uib-popover-template-popup].popover.right-top > .arrow,\r\n[uib-popover-template-popup].popover.right-bottom > .arrow {\r\n top: auto;\r\n bottom: auto;\r\n left: auto;\r\n right: auto;\r\n margin: 0;\r\n}\r\n\r\n[uib-popover-popup].popover,\r\n[uib-popover-html-popup].popover,\r\n[uib-popover-template-popup].popover {\r\n display: block !important;\r\n}\r\n", "angular.module('ui.bootstrap.position', [])\n\n/**\n * A set of utility methods for working with the DOM.\n * It is meant to be used where we need to absolute-position elements in\n * relation to another element (this is the case for tooltips, popovers,\n * typeahead suggestions etc.).\n */\n .factory('$uibPosition', ['$document', '$window', function($document, $window) {\n /**\n * Used by scrollbarWidth() function to cache scrollbar's width.\n * Do not access this variable directly, use scrollbarWidth() instead.\n */\n var SCROLLBAR_WIDTH;\n /**\n * scrollbar on body and html element in IE and Edge overlay\n * content and should be considered 0 width.\n */\n var BODY_SCROLLBAR_WIDTH;\n var OVERFLOW_REGEX = {\n normal: /(auto|scroll)/,\n hidden: /(auto|scroll|hidden)/\n };\n var PLACEMENT_REGEX = {\n auto: /\\s?auto?\\s?/i,\n primary: /^(top|bottom|left|right)$/,\n secondary: /^(top|bottom|left|right|center)$/,\n vertical: /^(top|bottom)$/\n };\n var BODY_REGEX = /(HTML|BODY)/;\n\n return {\n\n /**\n * Provides a raw DOM element from a jQuery/jQLite element.\n *\n * @param {element} elem - The element to convert.\n *\n * @returns {element} A HTML element.\n */\n getRawNode: function(elem) {\n return elem.nodeName ? elem : elem[0] || elem;\n },\n\n /**\n * Provides a parsed number for a style property. Strips\n * units and casts invalid numbers to 0.\n *\n * @param {string} value - The style value to parse.\n *\n * @returns {number} A valid number.\n */\n parseStyle: function(value) {\n value = parseFloat(value);\n return isFinite(value) ? value : 0;\n },\n\n /**\n * Provides the closest positioned ancestor.\n *\n * @param {element} element - The element to get the offest parent for.\n *\n * @returns {element} The closest positioned ancestor.\n */\n offsetParent: function(elem) {\n elem = this.getRawNode(elem);\n\n var offsetParent = elem.offsetParent || $document[0].documentElement;\n\n function isStaticPositioned(el) {\n return ($window.getComputedStyle(el).position || 'static') === 'static';\n }\n\n while (offsetParent && offsetParent !== $document[0].documentElement && isStaticPositioned(offsetParent)) {\n offsetParent = offsetParent.offsetParent;\n }\n\n return offsetParent || $document[0].documentElement;\n },\n\n /**\n * Provides the scrollbar width, concept from TWBS measureScrollbar()\n * function in https://github.com/twbs/bootstrap/blob/master/js/modal.js\n * In IE and Edge, scollbar on body and html element overlay and should\n * return a width of 0.\n *\n * @returns {number} The width of the browser scollbar.\n */\n scrollbarWidth: function(isBody) {\n if (isBody) {\n if (angular.isUndefined(BODY_SCROLLBAR_WIDTH)) {\n var bodyElem = $document.find('body');\n bodyElem.addClass('uib-position-body-scrollbar-measure');\n BODY_SCROLLBAR_WIDTH = $window.innerWidth - bodyElem[0].clientWidth;\n BODY_SCROLLBAR_WIDTH = isFinite(BODY_SCROLLBAR_WIDTH) ? BODY_SCROLLBAR_WIDTH : 0;\n bodyElem.removeClass('uib-position-body-scrollbar-measure');\n }\n return BODY_SCROLLBAR_WIDTH;\n }\n\n if (angular.isUndefined(SCROLLBAR_WIDTH)) {\n var scrollElem = angular.element('
');\n $document.find('body').append(scrollElem);\n SCROLLBAR_WIDTH = scrollElem[0].offsetWidth - scrollElem[0].clientWidth;\n SCROLLBAR_WIDTH = isFinite(SCROLLBAR_WIDTH) ? SCROLLBAR_WIDTH : 0;\n scrollElem.remove();\n }\n\n return SCROLLBAR_WIDTH;\n },\n\n /**\n * Provides the padding required on an element to replace the scrollbar.\n *\n * @returns {object} An object with the following properties:\n *
    \n *
  • **scrollbarWidth**: the width of the scrollbar
  • \n *
  • **widthOverflow**: whether the the width is overflowing
  • \n *
  • **right**: the amount of right padding on the element needed to replace the scrollbar
  • \n *
  • **rightOriginal**: the amount of right padding currently on the element
  • \n *
  • **heightOverflow**: whether the the height is overflowing
  • \n *
  • **bottom**: the amount of bottom padding on the element needed to replace the scrollbar
  • \n *
  • **bottomOriginal**: the amount of bottom padding currently on the element
  • \n *
\n */\n scrollbarPadding: function(elem) {\n elem = this.getRawNode(elem);\n\n var elemStyle = $window.getComputedStyle(elem);\n var paddingRight = this.parseStyle(elemStyle.paddingRight);\n var paddingBottom = this.parseStyle(elemStyle.paddingBottom);\n var scrollParent = this.scrollParent(elem, false, true);\n var scrollbarWidth = this.scrollbarWidth(BODY_REGEX.test(scrollParent.tagName));\n\n return {\n scrollbarWidth: scrollbarWidth,\n widthOverflow: scrollParent.scrollWidth > scrollParent.clientWidth,\n right: paddingRight + scrollbarWidth,\n originalRight: paddingRight,\n heightOverflow: scrollParent.scrollHeight > scrollParent.clientHeight,\n bottom: paddingBottom + scrollbarWidth,\n originalBottom: paddingBottom\n };\n },\n\n /**\n * Checks to see if the element is scrollable.\n *\n * @param {element} elem - The element to check.\n * @param {boolean=} [includeHidden=false] - Should scroll style of 'hidden' be considered,\n * default is false.\n *\n * @returns {boolean} Whether the element is scrollable.\n */\n isScrollable: function(elem, includeHidden) {\n elem = this.getRawNode(elem);\n\n var overflowRegex = includeHidden ? OVERFLOW_REGEX.hidden : OVERFLOW_REGEX.normal;\n var elemStyle = $window.getComputedStyle(elem);\n return overflowRegex.test(elemStyle.overflow + elemStyle.overflowY + elemStyle.overflowX);\n },\n\n /**\n * Provides the closest scrollable ancestor.\n * A port of the jQuery UI scrollParent method:\n * https://github.com/jquery/jquery-ui/blob/master/ui/scroll-parent.js\n *\n * @param {element} elem - The element to find the scroll parent of.\n * @param {boolean=} [includeHidden=false] - Should scroll style of 'hidden' be considered,\n * default is false.\n * @param {boolean=} [includeSelf=false] - Should the element being passed be\n * included in the scrollable llokup.\n *\n * @returns {element} A HTML element.\n */\n scrollParent: function(elem, includeHidden, includeSelf) {\n elem = this.getRawNode(elem);\n\n var overflowRegex = includeHidden ? OVERFLOW_REGEX.hidden : OVERFLOW_REGEX.normal;\n var documentEl = $document[0].documentElement;\n var elemStyle = $window.getComputedStyle(elem);\n if (includeSelf && overflowRegex.test(elemStyle.overflow + elemStyle.overflowY + elemStyle.overflowX)) {\n return elem;\n }\n var excludeStatic = elemStyle.position === 'absolute';\n var scrollParent = elem.parentElement || documentEl;\n\n if (scrollParent === documentEl || elemStyle.position === 'fixed') {\n return documentEl;\n }\n\n while (scrollParent.parentElement && scrollParent !== documentEl) {\n var spStyle = $window.getComputedStyle(scrollParent);\n if (excludeStatic && spStyle.position !== 'static') {\n excludeStatic = false;\n }\n\n if (!excludeStatic && overflowRegex.test(spStyle.overflow + spStyle.overflowY + spStyle.overflowX)) {\n break;\n }\n scrollParent = scrollParent.parentElement;\n }\n\n return scrollParent;\n },\n\n /**\n * Provides read-only equivalent of jQuery's position function:\n * http://api.jquery.com/position/ - distance to closest positioned\n * ancestor. Does not account for margins by default like jQuery position.\n *\n * @param {element} elem - The element to caclulate the position on.\n * @param {boolean=} [includeMargins=false] - Should margins be accounted\n * for, default is false.\n *\n * @returns {object} An object with the following properties:\n *
    \n *
  • **width**: the width of the element
  • \n *
  • **height**: the height of the element
  • \n *
  • **top**: distance to top edge of offset parent
  • \n *
  • **left**: distance to left edge of offset parent
  • \n *
\n */\n position: function(elem, includeMagins) {\n elem = this.getRawNode(elem);\n\n var elemOffset = this.offset(elem);\n if (includeMagins) {\n var elemStyle = $window.getComputedStyle(elem);\n elemOffset.top -= this.parseStyle(elemStyle.marginTop);\n elemOffset.left -= this.parseStyle(elemStyle.marginLeft);\n }\n var parent = this.offsetParent(elem);\n var parentOffset = {top: 0, left: 0};\n\n if (parent !== $document[0].documentElement) {\n parentOffset = this.offset(parent);\n parentOffset.top += parent.clientTop - parent.scrollTop;\n parentOffset.left += parent.clientLeft - parent.scrollLeft;\n }\n\n return {\n width: Math.round(angular.isNumber(elemOffset.width) ? elemOffset.width : elem.offsetWidth),\n height: Math.round(angular.isNumber(elemOffset.height) ? elemOffset.height : elem.offsetHeight),\n top: Math.round(elemOffset.top - parentOffset.top),\n left: Math.round(elemOffset.left - parentOffset.left)\n };\n },\n\n /**\n * Provides read-only equivalent of jQuery's offset function:\n * http://api.jquery.com/offset/ - distance to viewport. Does\n * not account for borders, margins, or padding on the body\n * element.\n *\n * @param {element} elem - The element to calculate the offset on.\n *\n * @returns {object} An object with the following properties:\n *
    \n *
  • **width**: the width of the element
  • \n *
  • **height**: the height of the element
  • \n *
  • **top**: distance to top edge of viewport
  • \n *
  • **right**: distance to bottom edge of viewport
  • \n *
\n */\n offset: function(elem) {\n elem = this.getRawNode(elem);\n\n var elemBCR = elem.getBoundingClientRect();\n return {\n width: Math.round(angular.isNumber(elemBCR.width) ? elemBCR.width : elem.offsetWidth),\n height: Math.round(angular.isNumber(elemBCR.height) ? elemBCR.height : elem.offsetHeight),\n top: Math.round(elemBCR.top + ($window.pageYOffset || $document[0].documentElement.scrollTop)),\n left: Math.round(elemBCR.left + ($window.pageXOffset || $document[0].documentElement.scrollLeft))\n };\n },\n\n /**\n * Provides offset distance to the closest scrollable ancestor\n * or viewport. Accounts for border and scrollbar width.\n *\n * Right and bottom dimensions represent the distance to the\n * respective edge of the viewport element. If the element\n * edge extends beyond the viewport, a negative value will be\n * reported.\n *\n * @param {element} elem - The element to get the viewport offset for.\n * @param {boolean=} [useDocument=false] - Should the viewport be the document element instead\n * of the first scrollable element, default is false.\n * @param {boolean=} [includePadding=true] - Should the padding on the offset parent element\n * be accounted for, default is true.\n *\n * @returns {object} An object with the following properties:\n *
    \n *
  • **top**: distance to the top content edge of viewport element
  • \n *
  • **bottom**: distance to the bottom content edge of viewport element
  • \n *
  • **left**: distance to the left content edge of viewport element
  • \n *
  • **right**: distance to the right content edge of viewport element
  • \n *
\n */\n viewportOffset: function(elem, useDocument, includePadding) {\n elem = this.getRawNode(elem);\n includePadding = includePadding !== false ? true : false;\n\n var elemBCR = elem.getBoundingClientRect();\n var offsetBCR = {top: 0, left: 0, bottom: 0, right: 0};\n\n var offsetParent = useDocument ? $document[0].documentElement : this.scrollParent(elem);\n var offsetParentBCR = offsetParent.getBoundingClientRect();\n\n offsetBCR.top = offsetParentBCR.top + offsetParent.clientTop;\n offsetBCR.left = offsetParentBCR.left + offsetParent.clientLeft;\n if (offsetParent === $document[0].documentElement) {\n offsetBCR.top += $window.pageYOffset;\n offsetBCR.left += $window.pageXOffset;\n }\n offsetBCR.bottom = offsetBCR.top + offsetParent.clientHeight;\n offsetBCR.right = offsetBCR.left + offsetParent.clientWidth;\n\n if (includePadding) {\n var offsetParentStyle = $window.getComputedStyle(offsetParent);\n offsetBCR.top += this.parseStyle(offsetParentStyle.paddingTop);\n offsetBCR.bottom -= this.parseStyle(offsetParentStyle.paddingBottom);\n offsetBCR.left += this.parseStyle(offsetParentStyle.paddingLeft);\n offsetBCR.right -= this.parseStyle(offsetParentStyle.paddingRight);\n }\n\n return {\n top: Math.round(elemBCR.top - offsetBCR.top),\n bottom: Math.round(offsetBCR.bottom - elemBCR.bottom),\n left: Math.round(elemBCR.left - offsetBCR.left),\n right: Math.round(offsetBCR.right - elemBCR.right)\n };\n },\n\n /**\n * Provides an array of placement values parsed from a placement string.\n * Along with the 'auto' indicator, supported placement strings are:\n *
    \n *
  • top: element on top, horizontally centered on host element.
  • \n *
  • top-left: element on top, left edge aligned with host element left edge.
  • \n *
  • top-right: element on top, lerightft edge aligned with host element right edge.
  • \n *
  • bottom: element on bottom, horizontally centered on host element.
  • \n *
  • bottom-left: element on bottom, left edge aligned with host element left edge.
  • \n *
  • bottom-right: element on bottom, right edge aligned with host element right edge.
  • \n *
  • left: element on left, vertically centered on host element.
  • \n *
  • left-top: element on left, top edge aligned with host element top edge.
  • \n *
  • left-bottom: element on left, bottom edge aligned with host element bottom edge.
  • \n *
  • right: element on right, vertically centered on host element.
  • \n *
  • right-top: element on right, top edge aligned with host element top edge.
  • \n *
  • right-bottom: element on right, bottom edge aligned with host element bottom edge.
  • \n *
\n * A placement string with an 'auto' indicator is expected to be\n * space separated from the placement, i.e: 'auto bottom-left' If\n * the primary and secondary placement values do not match 'top,\n * bottom, left, right' then 'top' will be the primary placement and\n * 'center' will be the secondary placement. If 'auto' is passed, true\n * will be returned as the 3rd value of the array.\n *\n * @param {string} placement - The placement string to parse.\n *\n * @returns {array} An array with the following values\n *
    \n *
  • **[0]**: The primary placement.
  • \n *
  • **[1]**: The secondary placement.
  • \n *
  • **[2]**: If auto is passed: true, else undefined.
  • \n *
\n */\n parsePlacement: function(placement) {\n var autoPlace = PLACEMENT_REGEX.auto.test(placement);\n if (autoPlace) {\n placement = placement.replace(PLACEMENT_REGEX.auto, '');\n }\n\n placement = placement.split('-');\n\n placement[0] = placement[0] || 'top';\n if (!PLACEMENT_REGEX.primary.test(placement[0])) {\n placement[0] = 'top';\n }\n\n placement[1] = placement[1] || 'center';\n if (!PLACEMENT_REGEX.secondary.test(placement[1])) {\n placement[1] = 'center';\n }\n\n if (autoPlace) {\n placement[2] = true;\n } else {\n placement[2] = false;\n }\n\n return placement;\n },\n\n /**\n * Provides coordinates for an element to be positioned relative to\n * another element. Passing 'auto' as part of the placement parameter\n * will enable smart placement - where the element fits. i.e:\n * 'auto left-top' will check to see if there is enough space to the left\n * of the hostElem to fit the targetElem, if not place right (same for secondary\n * top placement). Available space is calculated using the viewportOffset\n * function.\n *\n * @param {element} hostElem - The element to position against.\n * @param {element} targetElem - The element to position.\n * @param {string=} [placement=top] - The placement for the targetElem,\n * default is 'top'. 'center' is assumed as secondary placement for\n * 'top', 'left', 'right', and 'bottom' placements. Available placements are:\n *
    \n *
  • top
  • \n *
  • top-right
  • \n *
  • top-left
  • \n *
  • bottom
  • \n *
  • bottom-left
  • \n *
  • bottom-right
  • \n *
  • left
  • \n *
  • left-top
  • \n *
  • left-bottom
  • \n *
  • right
  • \n *
  • right-top
  • \n *
  • right-bottom
  • \n *
\n * @param {boolean=} [appendToBody=false] - Should the top and left values returned\n * be calculated from the body element, default is false.\n *\n * @returns {object} An object with the following properties:\n *
    \n *
  • **top**: Value for targetElem top.
  • \n *
  • **left**: Value for targetElem left.
  • \n *
  • **placement**: The resolved placement.
  • \n *
\n */\n positionElements: function(hostElem, targetElem, placement, appendToBody) {\n hostElem = this.getRawNode(hostElem);\n targetElem = this.getRawNode(targetElem);\n\n // need to read from prop to support tests.\n var targetWidth = angular.isDefined(targetElem.offsetWidth) ? targetElem.offsetWidth : targetElem.prop('offsetWidth');\n var targetHeight = angular.isDefined(targetElem.offsetHeight) ? targetElem.offsetHeight : targetElem.prop('offsetHeight');\n\n placement = this.parsePlacement(placement);\n\n var hostElemPos = appendToBody ? this.offset(hostElem) : this.position(hostElem);\n var targetElemPos = {top: 0, left: 0, placement: ''};\n\n if (placement[2]) {\n var viewportOffset = this.viewportOffset(hostElem, appendToBody);\n\n var targetElemStyle = $window.getComputedStyle(targetElem);\n var adjustedSize = {\n width: targetWidth + Math.round(Math.abs(this.parseStyle(targetElemStyle.marginLeft) + this.parseStyle(targetElemStyle.marginRight))),\n height: targetHeight + Math.round(Math.abs(this.parseStyle(targetElemStyle.marginTop) + this.parseStyle(targetElemStyle.marginBottom)))\n };\n\n placement[0] = placement[0] === 'top' && adjustedSize.height > viewportOffset.top && adjustedSize.height <= viewportOffset.bottom ? 'bottom' :\n placement[0] === 'bottom' && adjustedSize.height > viewportOffset.bottom && adjustedSize.height <= viewportOffset.top ? 'top' :\n placement[0] === 'left' && adjustedSize.width > viewportOffset.left && adjustedSize.width <= viewportOffset.right ? 'right' :\n placement[0] === 'right' && adjustedSize.width > viewportOffset.right && adjustedSize.width <= viewportOffset.left ? 'left' :\n placement[0];\n\n placement[1] = placement[1] === 'top' && adjustedSize.height - hostElemPos.height > viewportOffset.bottom && adjustedSize.height - hostElemPos.height <= viewportOffset.top ? 'bottom' :\n placement[1] === 'bottom' && adjustedSize.height - hostElemPos.height > viewportOffset.top && adjustedSize.height - hostElemPos.height <= viewportOffset.bottom ? 'top' :\n placement[1] === 'left' && adjustedSize.width - hostElemPos.width > viewportOffset.right && adjustedSize.width - hostElemPos.width <= viewportOffset.left ? 'right' :\n placement[1] === 'right' && adjustedSize.width - hostElemPos.width > viewportOffset.left && adjustedSize.width - hostElemPos.width <= viewportOffset.right ? 'left' :\n placement[1];\n\n if (placement[1] === 'center') {\n if (PLACEMENT_REGEX.vertical.test(placement[0])) {\n var xOverflow = hostElemPos.width / 2 - targetWidth / 2;\n if (viewportOffset.left + xOverflow < 0 && adjustedSize.width - hostElemPos.width <= viewportOffset.right) {\n placement[1] = 'left';\n } else if (viewportOffset.right + xOverflow < 0 && adjustedSize.width - hostElemPos.width <= viewportOffset.left) {\n placement[1] = 'right';\n }\n } else {\n var yOverflow = hostElemPos.height / 2 - adjustedSize.height / 2;\n if (viewportOffset.top + yOverflow < 0 && adjustedSize.height - hostElemPos.height <= viewportOffset.bottom) {\n placement[1] = 'top';\n } else if (viewportOffset.bottom + yOverflow < 0 && adjustedSize.height - hostElemPos.height <= viewportOffset.top) {\n placement[1] = 'bottom';\n }\n }\n }\n }\n\n switch (placement[0]) {\n case 'top':\n targetElemPos.top = hostElemPos.top - targetHeight;\n break;\n case 'bottom':\n targetElemPos.top = hostElemPos.top + hostElemPos.height;\n break;\n case 'left':\n targetElemPos.left = hostElemPos.left - targetWidth;\n break;\n case 'right':\n targetElemPos.left = hostElemPos.left + hostElemPos.width;\n break;\n }\n\n switch (placement[1]) {\n case 'top':\n targetElemPos.top = hostElemPos.top;\n break;\n case 'bottom':\n targetElemPos.top = hostElemPos.top + hostElemPos.height - targetHeight;\n break;\n case 'left':\n targetElemPos.left = hostElemPos.left;\n break;\n case 'right':\n targetElemPos.left = hostElemPos.left + hostElemPos.width - targetWidth;\n break;\n case 'center':\n if (PLACEMENT_REGEX.vertical.test(placement[0])) {\n targetElemPos.left = hostElemPos.left + hostElemPos.width / 2 - targetWidth / 2;\n } else {\n targetElemPos.top = hostElemPos.top + hostElemPos.height / 2 - targetHeight / 2;\n }\n break;\n }\n\n targetElemPos.top = Math.round(targetElemPos.top);\n targetElemPos.left = Math.round(targetElemPos.left);\n targetElemPos.placement = placement[1] === 'center' ? placement[0] : placement[0] + '-' + placement[1];\n\n return targetElemPos;\n },\n\n /**\n * Provides a way to adjust the top positioning after first\n * render to correctly align element to top after content\n * rendering causes resized element height\n *\n * @param {array} placementClasses - The array of strings of classes\n * element should have.\n * @param {object} containerPosition - The object with container\n * position information\n * @param {number} initialHeight - The initial height for the elem.\n * @param {number} currentHeight - The current height for the elem.\n */\n adjustTop: function(placementClasses, containerPosition, initialHeight, currentHeight) {\n if (placementClasses.indexOf('top') !== -1 && initialHeight !== currentHeight) {\n return {\n top: containerPosition.top - currentHeight + 'px'\n };\n }\n },\n\n /**\n * Provides a way for positioning tooltip & dropdown\n * arrows when using placement options beyond the standard\n * left, right, top, or bottom.\n *\n * @param {element} elem - The tooltip/dropdown element.\n * @param {string} placement - The placement for the elem.\n */\n positionArrow: function(elem, placement) {\n elem = this.getRawNode(elem);\n\n var innerElem = elem.querySelector('.tooltip-inner, .popover-inner');\n if (!innerElem) {\n return;\n }\n\n var isTooltip = angular.element(innerElem).hasClass('tooltip-inner');\n\n var arrowElem = isTooltip ? elem.querySelector('.tooltip-arrow') : elem.querySelector('.arrow');\n if (!arrowElem) {\n return;\n }\n\n var arrowCss = {\n top: '',\n bottom: '',\n left: '',\n right: ''\n };\n\n placement = this.parsePlacement(placement);\n if (placement[1] === 'center') {\n // no adjustment necessary - just reset styles\n angular.element(arrowElem).css(arrowCss);\n return;\n }\n\n var borderProp = 'border-' + placement[0] + '-width';\n var borderWidth = $window.getComputedStyle(arrowElem)[borderProp];\n\n var borderRadiusProp = 'border-';\n if (PLACEMENT_REGEX.vertical.test(placement[0])) {\n borderRadiusProp += placement[0] + '-' + placement[1];\n } else {\n borderRadiusProp += placement[1] + '-' + placement[0];\n }\n borderRadiusProp += '-radius';\n var borderRadius = $window.getComputedStyle(isTooltip ? innerElem : elem)[borderRadiusProp];\n\n switch (placement[0]) {\n case 'top':\n arrowCss.bottom = isTooltip ? '0' : '-' + borderWidth;\n break;\n case 'bottom':\n arrowCss.top = isTooltip ? '0' : '-' + borderWidth;\n break;\n case 'left':\n arrowCss.right = isTooltip ? '0' : '-' + borderWidth;\n break;\n case 'right':\n arrowCss.left = isTooltip ? '0' : '-' + borderWidth;\n break;\n }\n\n arrowCss[placement[1]] = borderRadius;\n\n angular.element(arrowElem).css(arrowCss);\n }\n };\n }]);\n", "require('./position');\n\nvar MODULE_NAME = 'ui.bootstrap.module.position';\n\nangular.module(MODULE_NAME, ['ui.bootstrap.position']);\n\nmodule.exports = MODULE_NAME;\n", "angular.module('ui.bootstrap.stackedMap', [])\n/**\n * A helper, internal data structure that acts as a map but also allows getting / removing\n * elements in the LIFO order\n */\n .factory('$$stackedMap', function() {\n return {\n createNew: function() {\n var stack = [];\n\n return {\n add: function(key, value) {\n stack.push({\n key: key,\n value: value\n });\n },\n get: function(key) {\n for (var i = 0; i < stack.length; i++) {\n if (key === stack[i].key) {\n return stack[i];\n }\n }\n },\n keys: function() {\n var keys = [];\n for (var i = 0; i < stack.length; i++) {\n keys.push(stack[i].key);\n }\n return keys;\n },\n top: function() {\n return stack[stack.length - 1];\n },\n remove: function(key) {\n var idx = -1;\n for (var i = 0; i < stack.length; i++) {\n if (key === stack[i].key) {\n idx = i;\n break;\n }\n }\n return stack.splice(idx, 1)[0];\n },\n removeTop: function() {\n return stack.pop();\n },\n length: function() {\n return stack.length;\n }\n };\n }\n };\n });", "require('./stackedMap');\n\nvar MODULE_NAME = 'ui.bootstrap.module.stackedMap';\n\nangular.module(MODULE_NAME, ['ui.bootstrap.stackedMap']);\n\nmodule.exports = MODULE_NAME;\n", "angular.module(\"uib/template/tooltip/tooltip-popup.html\", []).run([\"$templateCache\", function ($templateCache) {\n $templateCache.put(\"uib/template/tooltip/tooltip-popup.html\",\n \"
\\n\" +\n \"
\\n\" +\n \"\");\n}]);\n", "angular.module(\"uib/template/tooltip/tooltip-html-popup.html\", []).run([\"$templateCache\", function ($templateCache) {\n $templateCache.put(\"uib/template/tooltip/tooltip-html-popup.html\",\n \"
\\n\" +\n \"
\\n\" +\n \"\");\n}]);\n", "angular.module(\"uib/template/tooltip/tooltip-template-popup.html\", []).run([\"$templateCache\", function ($templateCache) {\n $templateCache.put(\"uib/template/tooltip/tooltip-template-popup.html\",\n \"
\\n\" +\n \"
\\n\" +\n \"\");\n}]);\n", "/**\n * The following features are still outstanding: animation as a\n * function, placement as a function, inside, support for more triggers than\n * just mouse enter/leave, html tooltips, and selector delegation.\n */\nangular.module('ui.bootstrap.tooltip', ['ui.bootstrap.position', 'ui.bootstrap.stackedMap'])\n\n/**\n * The $tooltip service creates tooltip- and popover-like directives as well as\n * houses global options for them.\n */\n.provider('$uibTooltip', function() {\n // The default options tooltip and popover.\n var defaultOptions = {\n placement: 'top',\n placementClassPrefix: '',\n animation: true,\n popupDelay: 0,\n popupCloseDelay: 0,\n useContentExp: false\n };\n\n // Default hide triggers for each show trigger\n var triggerMap = {\n 'mouseenter': 'mouseleave',\n 'click': 'click',\n 'outsideClick': 'outsideClick',\n 'focus': 'blur',\n 'none': ''\n };\n\n // The options specified to the provider globally.\n var globalOptions = {};\n\n /**\n * `options({})` allows global configuration of all tooltips in the\n * application.\n *\n * var app = angular.module( 'App', ['ui.bootstrap.tooltip'], function( $tooltipProvider ) {\n * // place tooltips left instead of top by default\n * $tooltipProvider.options( { placement: 'left' } );\n * });\n */\n\tthis.options = function(value) {\n\t\tangular.extend(globalOptions, value);\n\t};\n\n /**\n * This allows you to extend the set of trigger mappings available. E.g.:\n *\n * $tooltipProvider.setTriggers( { 'openTrigger': 'closeTrigger' } );\n */\n this.setTriggers = function setTriggers(triggers) {\n angular.extend(triggerMap, triggers);\n };\n\n /**\n * This is a helper function for translating camel-case to snake_case.\n */\n function snake_case(name) {\n var regexp = /[A-Z]/g;\n var separator = '-';\n return name.replace(regexp, function(letter, pos) {\n return (pos ? separator : '') + letter.toLowerCase();\n });\n }\n\n /**\n * Returns the actual instance of the $tooltip service.\n * TODO support multiple triggers\n */\n this.$get = ['$window', '$compile', '$timeout', '$document', '$uibPosition', '$interpolate', '$rootScope', '$parse', '$$stackedMap', function($window, $compile, $timeout, $document, $position, $interpolate, $rootScope, $parse, $$stackedMap) {\n var openedTooltips = $$stackedMap.createNew();\n $document.on('keyup', keypressListener);\n\n $rootScope.$on('$destroy', function() {\n $document.off('keyup', keypressListener);\n });\n\n function keypressListener(e) {\n if (e.which === 27) {\n var last = openedTooltips.top();\n if (last) {\n last.value.close();\n last = null;\n }\n }\n }\n\n return function $tooltip(ttType, prefix, defaultTriggerShow, options) {\n options = angular.extend({}, defaultOptions, globalOptions, options);\n\n /**\n * Returns an object of show and hide triggers.\n *\n * If a trigger is supplied,\n * it is used to show the tooltip; otherwise, it will use the `trigger`\n * option passed to the `$tooltipProvider.options` method; else it will\n * default to the trigger supplied to this directive factory.\n *\n * The hide trigger is based on the show trigger. If the `trigger` option\n * was passed to the `$tooltipProvider.options` method, it will use the\n * mapped trigger from `triggerMap` or the passed trigger if the map is\n * undefined; otherwise, it uses the `triggerMap` value of the show\n * trigger; else it will just use the show trigger.\n */\n function getTriggers(trigger) {\n var show = (trigger || options.trigger || defaultTriggerShow).split(' ');\n var hide = show.map(function(trigger) {\n return triggerMap[trigger] || trigger;\n });\n return {\n show: show,\n hide: hide\n };\n }\n\n var directiveName = snake_case(ttType);\n\n var startSym = $interpolate.startSymbol();\n var endSym = $interpolate.endSymbol();\n var template =\n '
' +\n '
';\n\n return {\n compile: function(tElem, tAttrs) {\n var tooltipLinker = $compile(template);\n\n return function link(scope, element, attrs, tooltipCtrl) {\n var tooltip;\n var tooltipLinkedScope;\n var transitionTimeout;\n var showTimeout;\n var hideTimeout;\n var positionTimeout;\n var adjustmentTimeout;\n var appendToBody = angular.isDefined(options.appendToBody) ? options.appendToBody : false;\n var triggers = getTriggers(undefined);\n var hasEnableExp = angular.isDefined(attrs[prefix + 'Enable']);\n var ttScope = scope.$new(true);\n var repositionScheduled = false;\n var isOpenParse = angular.isDefined(attrs[prefix + 'IsOpen']) ? $parse(attrs[prefix + 'IsOpen']) : false;\n var contentParse = options.useContentExp ? $parse(attrs[ttType]) : false;\n var observers = [];\n var lastPlacement;\n\n var positionTooltip = function() {\n // check if tooltip exists and is not empty\n if (!tooltip || !tooltip.html()) { return; }\n\n if (!positionTimeout) {\n positionTimeout = $timeout(function() {\n var ttPosition = $position.positionElements(element, tooltip, ttScope.placement, appendToBody);\n var initialHeight = angular.isDefined(tooltip.offsetHeight) ? tooltip.offsetHeight : tooltip.prop('offsetHeight');\n var elementPos = appendToBody ? $position.offset(element) : $position.position(element);\n tooltip.css({ top: ttPosition.top + 'px', left: ttPosition.left + 'px' });\n var placementClasses = ttPosition.placement.split('-');\n\n if (!tooltip.hasClass(placementClasses[0])) {\n tooltip.removeClass(lastPlacement.split('-')[0]);\n tooltip.addClass(placementClasses[0]);\n }\n\n if (!tooltip.hasClass(options.placementClassPrefix + ttPosition.placement)) {\n tooltip.removeClass(options.placementClassPrefix + lastPlacement);\n tooltip.addClass(options.placementClassPrefix + ttPosition.placement);\n }\n\n adjustmentTimeout = $timeout(function() {\n var currentHeight = angular.isDefined(tooltip.offsetHeight) ? tooltip.offsetHeight : tooltip.prop('offsetHeight');\n var adjustment = $position.adjustTop(placementClasses, elementPos, initialHeight, currentHeight);\n if (adjustment) {\n tooltip.css(adjustment);\n }\n adjustmentTimeout = null;\n }, 0, false);\n\n // first time through tt element will have the\n // uib-position-measure class or if the placement\n // has changed we need to position the arrow.\n if (tooltip.hasClass('uib-position-measure')) {\n $position.positionArrow(tooltip, ttPosition.placement);\n tooltip.removeClass('uib-position-measure');\n } else if (lastPlacement !== ttPosition.placement) {\n $position.positionArrow(tooltip, ttPosition.placement);\n }\n lastPlacement = ttPosition.placement;\n\n positionTimeout = null;\n }, 0, false);\n }\n };\n\n // Set up the correct scope to allow transclusion later\n ttScope.origScope = scope;\n\n // By default, the tooltip is not open.\n // TODO add ability to start tooltip opened\n ttScope.isOpen = false;\n\n function toggleTooltipBind() {\n if (!ttScope.isOpen) {\n showTooltipBind();\n } else {\n hideTooltipBind();\n }\n }\n\n // Show the tooltip with delay if specified, otherwise show it immediately\n function showTooltipBind() {\n if (hasEnableExp && !scope.$eval(attrs[prefix + 'Enable'])) {\n return;\n }\n\n cancelHide();\n prepareTooltip();\n\n if (ttScope.popupDelay) {\n // Do nothing if the tooltip was already scheduled to pop-up.\n // This happens if show is triggered multiple times before any hide is triggered.\n if (!showTimeout) {\n showTimeout = $timeout(show, ttScope.popupDelay, false);\n }\n } else {\n show();\n }\n }\n\n function hideTooltipBind() {\n cancelShow();\n\n if (ttScope.popupCloseDelay) {\n if (!hideTimeout) {\n hideTimeout = $timeout(hide, ttScope.popupCloseDelay, false);\n }\n } else {\n hide();\n }\n }\n\n // Show the tooltip popup element.\n function show() {\n cancelShow();\n cancelHide();\n\n // Don't show empty tooltips.\n if (!ttScope.content) {\n return angular.noop;\n }\n\n createTooltip();\n\n // And show the tooltip.\n ttScope.$evalAsync(function() {\n ttScope.isOpen = true;\n assignIsOpen(true);\n positionTooltip();\n });\n }\n\n function cancelShow() {\n if (showTimeout) {\n $timeout.cancel(showTimeout);\n showTimeout = null;\n }\n\n if (positionTimeout) {\n $timeout.cancel(positionTimeout);\n positionTimeout = null;\n }\n }\n\n // Hide the tooltip popup element.\n function hide() {\n if (!ttScope) {\n return;\n }\n\n // First things first: we don't show it anymore.\n ttScope.$evalAsync(function() {\n if (ttScope) {\n ttScope.isOpen = false;\n assignIsOpen(false);\n // And now we remove it from the DOM. However, if we have animation, we\n // need to wait for it to expire beforehand.\n // FIXME: this is a placeholder for a port of the transitions library.\n // The fade transition in TWBS is 150ms.\n if (ttScope.animation) {\n if (!transitionTimeout) {\n transitionTimeout = $timeout(removeTooltip, 150, false);\n }\n } else {\n removeTooltip();\n }\n }\n });\n }\n\n function cancelHide() {\n if (hideTimeout) {\n $timeout.cancel(hideTimeout);\n hideTimeout = null;\n }\n\n if (transitionTimeout) {\n $timeout.cancel(transitionTimeout);\n transitionTimeout = null;\n }\n }\n\n function createTooltip() {\n // There can only be one tooltip element per directive shown at once.\n if (tooltip) {\n return;\n }\n\n tooltipLinkedScope = ttScope.$new();\n tooltip = tooltipLinker(tooltipLinkedScope, function(tooltip) {\n if (appendToBody) {\n $document.find('body').append(tooltip);\n } else {\n element.after(tooltip);\n }\n });\n\n openedTooltips.add(ttScope, {\n close: hide\n });\n\n prepObservers();\n }\n\n function removeTooltip() {\n cancelShow();\n cancelHide();\n unregisterObservers();\n\n if (tooltip) {\n tooltip.remove();\n \n tooltip = null;\n if (adjustmentTimeout) {\n $timeout.cancel(adjustmentTimeout);\n }\n }\n\n openedTooltips.remove(ttScope);\n \n if (tooltipLinkedScope) {\n tooltipLinkedScope.$destroy();\n tooltipLinkedScope = null;\n }\n }\n\n /**\n * Set the initial scope values. Once\n * the tooltip is created, the observers\n * will be added to keep things in sync.\n */\n function prepareTooltip() {\n ttScope.title = attrs[prefix + 'Title'];\n if (contentParse) {\n ttScope.content = contentParse(scope);\n } else {\n ttScope.content = attrs[ttType];\n }\n\n ttScope.popupClass = attrs[prefix + 'Class'];\n ttScope.placement = angular.isDefined(attrs[prefix + 'Placement']) ? attrs[prefix + 'Placement'] : options.placement;\n var placement = $position.parsePlacement(ttScope.placement);\n lastPlacement = placement[1] ? placement[0] + '-' + placement[1] : placement[0];\n\n var delay = parseInt(attrs[prefix + 'PopupDelay'], 10);\n var closeDelay = parseInt(attrs[prefix + 'PopupCloseDelay'], 10);\n ttScope.popupDelay = !isNaN(delay) ? delay : options.popupDelay;\n ttScope.popupCloseDelay = !isNaN(closeDelay) ? closeDelay : options.popupCloseDelay;\n }\n\n function assignIsOpen(isOpen) {\n if (isOpenParse && angular.isFunction(isOpenParse.assign)) {\n isOpenParse.assign(scope, isOpen);\n }\n }\n\n ttScope.contentExp = function() {\n return ttScope.content;\n };\n\n /**\n * Observe the relevant attributes.\n */\n attrs.$observe('disabled', function(val) {\n if (val) {\n cancelShow();\n }\n\n if (val && ttScope.isOpen) {\n hide();\n }\n });\n\n if (isOpenParse) {\n scope.$watch(isOpenParse, function(val) {\n if (ttScope && !val === ttScope.isOpen) {\n toggleTooltipBind();\n }\n });\n }\n\n function prepObservers() {\n observers.length = 0;\n\n if (contentParse) {\n observers.push(\n scope.$watch(contentParse, function(val) {\n ttScope.content = val;\n if (!val && ttScope.isOpen) {\n hide();\n }\n })\n );\n\n observers.push(\n tooltipLinkedScope.$watch(function() {\n if (!repositionScheduled) {\n repositionScheduled = true;\n tooltipLinkedScope.$$postDigest(function() {\n repositionScheduled = false;\n if (ttScope && ttScope.isOpen) {\n positionTooltip();\n }\n });\n }\n })\n );\n } else {\n observers.push(\n attrs.$observe(ttType, function(val) {\n ttScope.content = val;\n if (!val && ttScope.isOpen) {\n hide();\n } else {\n positionTooltip();\n }\n })\n );\n }\n\n observers.push(\n attrs.$observe(prefix + 'Title', function(val) {\n ttScope.title = val;\n if (ttScope.isOpen) {\n positionTooltip();\n }\n })\n );\n\n observers.push(\n attrs.$observe(prefix + 'Placement', function(val) {\n ttScope.placement = val ? val : options.placement;\n if (ttScope.isOpen) {\n positionTooltip();\n }\n })\n );\n }\n\n function unregisterObservers() {\n if (observers.length) {\n angular.forEach(observers, function(observer) {\n observer();\n });\n observers.length = 0;\n }\n }\n\n // hide tooltips/popovers for outsideClick trigger\n function bodyHideTooltipBind(e) {\n if (!ttScope || !ttScope.isOpen || !tooltip) {\n return;\n }\n // make sure the tooltip/popover link or tool tooltip/popover itself were not clicked\n if (!element[0].contains(e.target) && !tooltip[0].contains(e.target)) {\n hideTooltipBind();\n }\n }\n\n // KeyboardEvent handler to hide the tooltip on Escape key press\n function hideOnEscapeKey(e) {\n if (e.which === 27) {\n hideTooltipBind();\n }\n }\n\n var unregisterTriggers = function() {\n triggers.show.forEach(function(trigger) {\n if (trigger === 'outsideClick') {\n element.off('click', toggleTooltipBind);\n } else {\n element.off(trigger, showTooltipBind);\n element.off(trigger, toggleTooltipBind);\n }\n element.off('keypress', hideOnEscapeKey);\n });\n triggers.hide.forEach(function(trigger) {\n if (trigger === 'outsideClick') {\n $document.off('click', bodyHideTooltipBind);\n } else {\n element.off(trigger, hideTooltipBind);\n }\n });\n };\n\n function prepTriggers() {\n var showTriggers = [], hideTriggers = [];\n var val = scope.$eval(attrs[prefix + 'Trigger']);\n unregisterTriggers();\n\n if (angular.isObject(val)) {\n Object.keys(val).forEach(function(key) {\n showTriggers.push(key);\n hideTriggers.push(val[key]);\n });\n triggers = {\n show: showTriggers,\n hide: hideTriggers\n };\n } else {\n triggers = getTriggers(val);\n }\n\n if (triggers.show !== 'none') {\n triggers.show.forEach(function(trigger, idx) {\n if (trigger === 'outsideClick') {\n element.on('click', toggleTooltipBind);\n $document.on('click', bodyHideTooltipBind);\n } else if (trigger === triggers.hide[idx]) {\n element.on(trigger, toggleTooltipBind);\n } else if (trigger) {\n element.on(trigger, showTooltipBind);\n element.on(triggers.hide[idx], hideTooltipBind);\n }\n element.on('keypress', hideOnEscapeKey);\n });\n }\n }\n\n prepTriggers();\n\n var animation = scope.$eval(attrs[prefix + 'Animation']);\n ttScope.animation = angular.isDefined(animation) ? !!animation : options.animation;\n\n var appendToBodyVal;\n var appendKey = prefix + 'AppendToBody';\n if (appendKey in attrs && attrs[appendKey] === undefined) {\n appendToBodyVal = true;\n } else {\n appendToBodyVal = scope.$eval(attrs[appendKey]);\n }\n\n appendToBody = angular.isDefined(appendToBodyVal) ? appendToBodyVal : appendToBody;\n\n // Make sure tooltip is destroyed and removed.\n scope.$on('$destroy', function onDestroyTooltip() {\n unregisterTriggers();\n removeTooltip();\n ttScope = null;\n });\n };\n }\n };\n };\n }];\n})\n\n// This is mostly ngInclude code but with a custom scope\n.directive('uibTooltipTemplateTransclude', [\n '$animate', '$sce', '$compile', '$templateRequest',\nfunction ($animate, $sce, $compile, $templateRequest) {\n return {\n link: function(scope, elem, attrs) {\n var origScope = scope.$eval(attrs.tooltipTemplateTranscludeScope);\n\n var changeCounter = 0,\n currentScope,\n previousElement,\n currentElement;\n\n var cleanupLastIncludeContent = function() {\n if (previousElement) {\n previousElement.remove();\n previousElement = null;\n }\n\n if (currentScope) {\n currentScope.$destroy();\n currentScope = null;\n }\n\n if (currentElement) {\n $animate.leave(currentElement).then(function() {\n previousElement = null;\n });\n previousElement = currentElement;\n currentElement = null;\n }\n };\n\n scope.$watch($sce.parseAsResourceUrl(attrs.uibTooltipTemplateTransclude), function(src) {\n var thisChangeId = ++changeCounter;\n\n if (src) {\n //set the 2nd param to true to ignore the template request error so that the inner\n //contents and scope can be cleaned up.\n $templateRequest(src, true).then(function(response) {\n if (thisChangeId !== changeCounter) { return; }\n var newScope = origScope.$new();\n var template = response;\n\n var clone = $compile(template)(newScope, function(clone) {\n cleanupLastIncludeContent();\n $animate.enter(clone, elem);\n });\n\n currentScope = newScope;\n currentElement = clone;\n\n currentScope.$emit('$includeContentLoaded', src);\n }, function() {\n if (thisChangeId === changeCounter) {\n cleanupLastIncludeContent();\n scope.$emit('$includeContentError', src);\n }\n });\n scope.$emit('$includeContentRequested', src);\n } else {\n cleanupLastIncludeContent();\n }\n });\n\n scope.$on('$destroy', cleanupLastIncludeContent);\n }\n };\n}])\n\n/**\n * Note that it's intentional that these classes are *not* applied through $animate.\n * They must not be animated as they're expected to be present on the tooltip on\n * initialization.\n */\n.directive('uibTooltipClasses', ['$uibPosition', function($uibPosition) {\n return {\n restrict: 'A',\n link: function(scope, element, attrs) {\n // need to set the primary position so the\n // arrow has space during position measure.\n // tooltip.positionTooltip()\n if (scope.placement) {\n // // There are no top-left etc... classes\n // // in TWBS, so we need the primary position.\n var position = $uibPosition.parsePlacement(scope.placement);\n element.addClass(position[0]);\n }\n\n if (scope.popupClass) {\n element.addClass(scope.popupClass);\n }\n\n if (scope.animation) {\n element.addClass(attrs.tooltipAnimationClass);\n }\n }\n };\n}])\n\n.directive('uibTooltipPopup', function() {\n return {\n restrict: 'A',\n scope: { content: '@' },\n templateUrl: 'uib/template/tooltip/tooltip-popup.html'\n };\n})\n\n.directive('uibTooltip', [ '$uibTooltip', function($uibTooltip) {\n return $uibTooltip('uibTooltip', 'tooltip', 'mouseenter');\n}])\n\n.directive('uibTooltipTemplatePopup', function() {\n return {\n restrict: 'A',\n scope: { contentExp: '&', originScope: '&' },\n templateUrl: 'uib/template/tooltip/tooltip-template-popup.html'\n };\n})\n\n.directive('uibTooltipTemplate', ['$uibTooltip', function($uibTooltip) {\n return $uibTooltip('uibTooltipTemplate', 'tooltip', 'mouseenter', {\n useContentExp: true\n });\n}])\n\n.directive('uibTooltipHtmlPopup', function() {\n return {\n restrict: 'A',\n scope: { contentExp: '&' },\n templateUrl: 'uib/template/tooltip/tooltip-html-popup.html'\n };\n})\n\n.directive('uibTooltipHtml', ['$uibTooltip', function($uibTooltip) {\n return $uibTooltip('uibTooltipHtml', 'tooltip', 'mouseenter', {\n useContentExp: true\n });\n}]);\n", "require('../position/index-nocss.js');\nrequire('../stackedMap');\nrequire('../../template/tooltip/tooltip-popup.html.js');\nrequire('../../template/tooltip/tooltip-html-popup.html.js');\nrequire('../../template/tooltip/tooltip-template-popup.html.js');\nrequire('./tooltip');\n\nvar MODULE_NAME = 'ui.bootstrap.module.tooltip';\n\nangular.module(MODULE_NAME, ['ui.bootstrap.tooltip', 'uib/template/tooltip/tooltip-popup.html', 'uib/template/tooltip/tooltip-html-popup.html', 'uib/template/tooltip/tooltip-template-popup.html']);\n\nmodule.exports = MODULE_NAME;\n", "angular.module(\"uib/template/popover/popover.html\", []).run([\"$templateCache\", function ($templateCache) {\n $templateCache.put(\"uib/template/popover/popover.html\",\n \"
\\n\" +\n \"\\n\" +\n \"
\\n\" +\n \"

\\n\" +\n \"
\\n\" +\n \"
\\n\" +\n \"\");\n}]);\n", "angular.module(\"uib/template/popover/popover-html.html\", []).run([\"$templateCache\", function ($templateCache) {\n $templateCache.put(\"uib/template/popover/popover-html.html\",\n \"
\\n\" +\n \"\\n\" +\n \"
\\n\" +\n \"

\\n\" +\n \"
\\n\" +\n \"
\\n\" +\n \"\");\n}]);\n", "angular.module(\"uib/template/popover/popover-template.html\", []).run([\"$templateCache\", function ($templateCache) {\n $templateCache.put(\"uib/template/popover/popover-template.html\",\n \"
\\n\" +\n \"\\n\" +\n \"
\\n\" +\n \"

\\n\" +\n \"
\\n\" +\n \"
\\n\" +\n \"\");\n}]);\n", "/**\n * The following features are still outstanding: popup delay, animation as a\n * function, placement as a function, inside, support for more triggers than\n * just mouse enter/leave, and selector delegatation.\n */\nangular.module('ui.bootstrap.popover', ['ui.bootstrap.tooltip'])\n\n.directive('uibPopoverTemplatePopup', function() {\n return {\n restrict: 'A',\n scope: { uibTitle: '@', contentExp: '&', originScope: '&' },\n templateUrl: 'uib/template/popover/popover-template.html'\n };\n})\n\n.directive('uibPopoverTemplate', ['$uibTooltip', function($uibTooltip) {\n return $uibTooltip('uibPopoverTemplate', 'popover', 'click', {\n useContentExp: true\n });\n}])\n\n.directive('uibPopoverHtmlPopup', function() {\n return {\n restrict: 'A',\n scope: { contentExp: '&', uibTitle: '@' },\n templateUrl: 'uib/template/popover/popover-html.html'\n };\n})\n\n.directive('uibPopoverHtml', ['$uibTooltip', function($uibTooltip) {\n return $uibTooltip('uibPopoverHtml', 'popover', 'click', {\n useContentExp: true\n });\n}])\n\n.directive('uibPopoverPopup', function() {\n return {\n restrict: 'A',\n scope: { uibTitle: '@', content: '@' },\n templateUrl: 'uib/template/popover/popover.html'\n };\n})\n\n.directive('uibPopover', ['$uibTooltip', function($uibTooltip) {\n return $uibTooltip('uibPopover', 'popover', 'click');\n}]);\n", "require('../tooltip/index-nocss.js');\nrequire('../../template/popover/popover.html.js');\nrequire('../../template/popover/popover-html.html.js');\nrequire('../../template/popover/popover-template.html.js');\nrequire('./popover');\n\nvar MODULE_NAME = 'ui.bootstrap.module.popover';\n\nangular.module(MODULE_NAME, ['ui.bootstrap.popover', 'uib/template/popover/popover.html', 'uib/template/popover/popover-html.html', 'uib/template/popover/popover-template.html']);\n\nmodule.exports = MODULE_NAME;\n", "require('../tooltip/tooltip.css');\nmodule.exports = require('./index-nocss.js');\n", ".carousel {\r\n position: relative;\r\n box-sizing: border-box;\r\n transform: translate3d(0, 0, 0);\r\n}\r\n\r\n.carousel-main-list {\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n user-select: none;\r\n}\r\n\r\n.carousel-inner {\r\n overflow: hidden;\r\n position: relative;\r\n}\r\n\r\n.carousel-list {\r\n white-space: nowrap;\r\n font-size: 0;\r\n line-height: 0;\r\n transition-property: transform;\r\n transform: translate3d(0, 0, 0);\r\n overflow: hidden;\r\n}\r\n\r\n.carousel-item {\r\n -webkit-backface-visibility: visible;\r\n backface-visibility: visible;\r\n transform: translateZ(0) scale(1, 1);\r\n}\r\n\r\n.carousel-dots {\r\n padding: 0;\r\n margin: 0;\r\n list-style: none;\r\n display: block;\r\n text-align: center;\r\n margin-top: 10px;\r\n line-height: 1;\r\n}\r\n\r\n.carousel-dots-item {\r\n display: inline-block;\r\n vertical-align: middle;\r\n cursor: pointer;\r\n padding: 0.3125rem;\r\n font-size: 0;\r\n line-height: 0;\r\n opacity: 0.5;\r\n}\r\n\r\n.carousel-dots-item-inner {\r\n border-radius: 50%;\r\n height: 0.5rem;\r\n width: 0.5rem;\r\n display: inline-block;\r\n box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.5);\r\n}\r\n\r\n.carousel-dots-selected {\r\n opacity: 1;\r\n}\r\n\r\n.carousel-nav-prev,\r\n.carousel-nav-next {\r\n position: absolute;\r\n text-align: center;\r\n padding: 0;\r\n margin: 0;\r\n border: 0;\r\n background: transparent none;\r\n font-size: 1rem;\r\n cursor: pointer;\r\n}\r\n.carousel-nav-prev:focus,\r\n.carousel-nav-next:focus {\r\n outline: none;\r\n}\r\n.carousel-nav-prev::after,\r\n.carousel-nav-next::after {\r\n margin: 0;\r\n}\r\n.carousel-nav-prev:disabled,\r\n.carousel-nav-next:disabled {\r\n display: none;\r\n}\r\n\r\n.carousel-vertical.carousel-wrap-nav-outside {\r\n margin-top: 2rem;\r\n margin-bottom: 2rem;\r\n}\r\n.carousel-vertical > .carousel-nav-inside .carousel-nav-prev {\r\n top: 0;\r\n transform: translateX(-50%);\r\n left: 50%;\r\n}\r\n.carousel-vertical > .carousel-nav-inside .carousel-nav-next {\r\n bottom: 0;\r\n transform: translateX(-50%);\r\n left: 50%;\r\n}\r\n.carousel-vertical > .carousel-nav-outside .carousel-nav-prev {\r\n bottom: 100%;\r\n transform: translateX(-50%);\r\n left: 50%;\r\n}\r\n.carousel-vertical > .carousel-nav-outside .carousel-nav-next {\r\n top: 100%;\r\n transform: translateX(-50%);\r\n left: 50%;\r\n}\r\n\r\n.carousel-horizontal.carousel-wrap-nav-outside {\r\n margin-top: 2rem;\r\n}\r\n.carousel-horizontal .carousel-nav-prev {\r\n top: 50%;\r\n transform: translateY(-50%);\r\n left: 0;\r\n}\r\n.carousel-horizontal .carousel-nav-next {\r\n top: 50%;\r\n transform: translateY(-50%);\r\n right: 0;\r\n}\r\n.carousel-horizontal .carousel-nav-inside .carousel-nav-prev {\r\n left: 0;\r\n}\r\n.carousel-horizontal .carousel-nav-inside .carousel-nav-next {\r\n right: 0;\r\n}\r\n.carousel-horizontal .carousel-nav-outside {\r\n position: absolute;\r\n bottom: 100%;\r\n right: 0.625rem;\r\n white-space: nowrap;\r\n}\r\n.carousel-horizontal .carousel-nav-outside .carousel-nav-prev,\r\n.carousel-horizontal .carousel-nav-outside .carousel-nav-next {\r\n position: relative;\r\n width: 35px;\r\n left: auto;\r\n right: auto;\r\n top: auto;\r\n transform: translateY(0);\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n.carousel-horizontal .carousel-nav-outside .carousel-nav-prev:disabled,\r\n.carousel-horizontal .carousel-nav-outside .carousel-nav-next:disabled {\r\n opacity: 0.3;\r\n}\r\n.carousel-horizontal .res-arrow-prev.carousel-nav-prev,\r\n.carousel-horizontal .res-arrow-next.carousel-nav-next {\r\n top: -0.1875rem;\r\n}\r\n.carousel-horizontal .res-arrow-prev.carousel-nav-prev {\r\n right: 2.1875rem;\r\n left: auto;\r\n}\r\n.carousel-horizontal .res-arrow-next.carousel-nav-next {\r\n right: 0.625rem;\r\n}\r\n\r\n.carousel-mobile {\r\n padding: 0;\r\n}\r\n\r\n.carousel-update {\r\n visibility: hidden;\r\n /* .carousel-list {\n white-space: normal;\n } */\r\n}\r\n\r\n.carousel--not-hidden-on-update.carousel-update {\r\n visibility: visible;\r\n}\r\n\r\n.carousel-nav-not-show > .carousel-nav {\r\n display: none;\r\n}\r\n\r\n.carousel-scroll-nav .carousel-inner {\r\n overflow: auto;\r\n}\r\n\r\n.carousel-placeholder {\r\n max-height: 1px;\r\n max-width: 1px;\r\n}", "\uFEFF(function (window) {\n 'use strict';\n\n var isTouchDevice = 'ontouchstart' in document.documentElement,\n autoStop = false,\n clonesForCreate = {},\n transformName = 'transform',\n transitionDurationName = 'transitionDuration',\n webkitTransitionDuration = 'webkitTransitionDuration',\n Carousel,\n storage = {},\n idIncrement = 0,\n deferList = {},\n isOverScrollX = false,\n isScrolling = false;\n\n Carousel = function (element, options) {\n var id = element.getAttribute('id') || 'carousel_' + (idIncrement += 1);\n\n this.list = element;\n this.items = Array.prototype.slice.call(element.children).filter((x) => x.classList.contains('js-carousel-clone') === false);\n this.options = options;\n this.responsive = options.responsive;\n this.responsiveOption = this.options.responsive != null ? this.checkResponsive() : null;\n this.propName = this.getPropName(this.getIsVerticalOption());\n this.cache = this.items.slice();\n this.id = id;\n this.dots = [];\n\n storage[id] = {\n state: { callAsNav: false },\n obj: this,\n };\n\n this.resolveAsNavForReady(this.id);\n\n return this;\n };\n\n Carousel.prototype.addToCache = function (item) {\n this.cache.push(item);\n };\n\n Carousel.prototype.getFromCache = function (item) {\n var index;\n\n if (typeof item === 'number') {\n index = item;\n } else {\n index = this.cache.indexOf(item);\n }\n\n return this.cache[index];\n };\n\n Carousel.prototype.removeFromCache = function (item) {\n var index;\n\n if (typeof item === 'number') {\n index = item;\n } else {\n index = this.cache.indexOf(item);\n }\n\n if (index !== -1) {\n this.cache.splice(index, 1);\n }\n\n return this.cache[index];\n };\n\n Carousel.prototype.clearCache = function () {\n this.cache.length = 0;\n };\n\n Carousel.prototype.getSize = function (totalCount, maxWidth, maxHeight, isVertical, diff) {\n var size = {};\n\n if (isVertical === false) {\n size['width'] = totalCount * maxWidth - (diff || 0);\n size['height'] = maxHeight;\n } else {\n size['width'] = maxWidth;\n size['height'] = totalCount * maxHeight - (diff || 0);\n }\n\n return size;\n };\n\n Carousel.prototype.getPropName = function (isVertical) {\n return isVertical === false ? 'width' : 'height';\n };\n\n Carousel.prototype.getItemsMaxSizes = function (items) {\n var tempWidth = 0,\n tempHeight = 0,\n maxWidth = 0,\n maxHeigth = 0;\n\n for (var i = items.length - 1; i >= 0; i--) {\n if (items[i].carouselItemData == null) {\n continue;\n }\n\n tempWidth = items[i].carouselItemData.originalWidth;\n\n if (tempWidth > maxWidth) {\n maxWidth = tempWidth;\n }\n\n tempHeight = items[i].carouselItemData.originalHeight;\n\n if (tempHeight > maxHeigth) {\n maxHeigth = tempHeight;\n }\n }\n\n return {\n width: maxWidth,\n height: maxHeigth,\n };\n };\n\n Carousel.prototype.setItemSize = function (item, value) {\n var self = this,\n valueStr = value + 'px';\n\n item.style[self.propName] = valueStr;\n //item.style['min' + self.propName.charAt(0).toUpperCase() + self.propName.slice(1)] = valueStr;\n item.style['max' + self.propName.charAt(0).toUpperCase() + self.propName.slice(1)] = valueStr;\n item.style['flexBasis'] = valueStr;\n item.style['msFlexPreferredSize'] = valueStr;\n item.style['webkitFlexBasis'] = valueStr;\n };\n\n Carousel.prototype.processItems = function (items, saveStyleAttribute) {\n var self = this;\n\n for (var i = 0, len = items.length - 1; i <= len; i++) {\n self.processItem(items[i], i, saveStyleAttribute);\n }\n };\n\n Carousel.prototype.processItem = function (item, index, saveStyleAttribute) {\n var self = this;\n var itemStylesComputed = getComputedStyle(item),\n itemBorderLeft,\n itemBorderRight,\n itemBorderTop,\n itemBorderBottom;\n\n itemBorderLeft = parseInt(itemStylesComputed['border-left-width'], 10);\n itemBorderRight = parseInt(itemStylesComputed['border-right-width'], 10);\n itemBorderTop = parseInt(itemStylesComputed['border-top-width'], 10);\n itemBorderBottom = parseInt(itemStylesComputed['border-bottom-width'], 10);\n\n itemBorderLeft = isNaN(itemBorderLeft) ? 0 : itemBorderLeft;\n itemBorderRight = isNaN(itemBorderRight) ? 0 : itemBorderRight;\n itemBorderTop = isNaN(itemBorderTop) ? 0 : itemBorderTop;\n itemBorderBottom = isNaN(itemBorderBottom) ? 0 : itemBorderBottom;\n\n /*,\n itemStylesComputed = getComputedStyle(item),\n itemStylesComputed = item.getBoundingClientRect(),\n itemPaddingLeft,\n itemPaddingRight,\n itemPaddingTop,\n itemPaddingBottom;*/\n\n /*itemPaddingLeft = parseInt(itemStylesComputed['padding-left'], 10);\n itemPaddingRight = parseInt(itemStylesComputed['padding-right'], 10);\n itemPaddingTop = parseInt(itemStylesComputed['padding-top'], 10);\n itemPaddingBottom = parseInt(itemStylesComputed['padding-bottom'], 10);\n\n itemPaddingLeft = isNaN(itemPaddingLeft) ? 0 : itemPaddingLeft;\n itemPaddingRight = isNaN(itemPaddingRight) ? 0 : itemPaddingRight;\n itemPaddingTop = isNaN(itemPaddingTop) ? 0 : itemPaddingTop;\n itemPaddingBottom = isNaN(itemPaddingBottom) ? 0 : itemPaddingBottom;*/\n\n item.carouselItemData = item.carouselItemData || {};\n item.carouselItemData.originalWidth = item.getBoundingClientRect().width;\n item.carouselItemData.originalHeight = item.getBoundingClientRect().height;\n item.carouselItemData.index = index != null ? index : self.items.length;\n item.carouselItemData.parameters =\n item.getAttribute('data-parameters') != null ? new Function('return ' + item.getAttribute('data-parameters'))() : null;\n item.carouselItemData.stylesRaw =\n saveStyleAttribute === true ? item.getAttribute('style') : item.carouselItemData != null ? item.carouselItemData.stylesRaw : null;\n\n item.classList.add('js-carousel-item');\n item.classList.add('carousel-item');\n\n return item;\n };\n\n Carousel.prototype.setSizes = function (wrapSize, innerSize, listSize, itemsSizes) {\n var self = this;\n\n //if (wrapSize != null) {\n // self.wrap.style[self.propName] = wrapSize[self.propName] + 'px';\n //}\n\n if (innerSize != null) {\n self.inner.style[self.propName] = innerSize[self.propName] + 'px';\n }\n\n if (listSize != null) {\n self.list.style[self.propName] = listSize[self.propName] + 'px';\n }\n\n if (itemsSizes != null) {\n for (var i = self.items.length - 1; i >= 0; i--) {\n self.setItemSize(self.items[i], itemsSizes[self.propName]);\n }\n }\n };\n\n Carousel.prototype.calc = function (items, options, responsiveOptions) {\n var self = this;\n\n var result = responsiveOptions != null ? self.calcResponsive(items, options, responsiveOptions) : self.calcAuto(items, options);\n\n self.countVisible = result.countVisible;\n self.wrapSize = result.wrapSize;\n self.listSize = result.listSize;\n self.innerSize = result.innerSize;\n self.itemsSize = result.itemsSize;\n self.slidesSize = result.slidesSize;\n\n return result;\n };\n\n Carousel.prototype.getCarouselSize = function () {\n var self = this,\n carouselStylesComputed,\n carouselPaddingLeft,\n carouselPaddingRight,\n carouselPaddingTop,\n carouselPaddingBottom;\n\n carouselStylesComputed = getComputedStyle(self.wrap);\n\n carouselPaddingLeft = parseInt(carouselStylesComputed['padding-left'], 10);\n carouselPaddingRight = parseInt(carouselStylesComputed['padding-right'], 10);\n carouselPaddingTop = parseInt(carouselStylesComputed['padding-top'], 10);\n carouselPaddingBottom = parseInt(carouselStylesComputed['padding-bottom'], 10);\n\n carouselPaddingLeft = isNaN(carouselPaddingLeft) ? 0 : carouselPaddingLeft;\n carouselPaddingRight = isNaN(carouselPaddingRight) ? 0 : carouselPaddingRight;\n carouselPaddingTop = isNaN(carouselPaddingTop) ? 0 : carouselPaddingTop;\n carouselPaddingBottom = isNaN(carouselPaddingBottom) ? 0 : carouselPaddingBottom;\n\n return {\n width: Math.floor(self.wrap.clientWidth - carouselPaddingLeft - carouselPaddingRight),\n height: Math.floor(self.wrap.clientHeight - carouselPaddingTop - carouselPaddingBottom),\n };\n };\n\n Carousel.prototype.calcAuto = function (items, options) {\n var self = this,\n result = {},\n slidesMaxSize,\n countVisibleDirty,\n carouselSizes,\n countVisible,\n dimension,\n propName,\n slidesSize;\n\n propName = self.propName;\n\n carouselSizes = self.getCarouselSize();\n\n slidesMaxSize = self.getItemsMaxSizes(items);\n countVisibleDirty = carouselSizes[propName] / (slidesMaxSize[propName] || 1);\n\n countVisible = Math.floor(countVisibleDirty); //Math.round\n\n //dimension \u0447\u0438\u0441\u043B\u043E \u0441 \u043F\u043B\u0430\u0432\u0430\u044E\u0449\u0435\u0439 \u0442\u043E\u0447\u043A\u043E\u0439\n if (options.visibleMin != null && options.visibleMin > items.length) {\n countVisible = items.length;\n dimension = countVisibleDirty - countVisible;\n } else if (countVisible > items.length) {\n countVisible = items.length;\n dimension = 0;\n } else if (countVisible < 1) {\n countVisible = 1;\n dimension = countVisibleDirty - countVisible;\n } else {\n dimension = countVisibleDirty - countVisible;\n }\n\n if ((options.visibleMax != null && options.visibleMax < countVisible) || (options.visibleMin != null && options.visibleMin > countVisible)) {\n if (options.visibleMax != null && options.visibleMax < countVisible) {\n countVisible = options.visibleMax;\n } else if (options.visibleMin != null && options.visibleMin > countVisible) {\n countVisible = options.visibleMin;\n slidesMaxSize[propName] = carouselSizes.width / countVisible;\n }\n\n if (options.stretch) {\n slidesMaxSize[propName] = carouselSizes[propName] / countVisible;\n } else {\n //carouselSizes[propName] = carouselSizes[propName] - (slidesMaxSize[propName] * countVisible);\n var sizeSlides = slidesMaxSize[propName] * countVisible;\n carouselSizes[propName] =\n sizeSlides >= carouselSizes[propName]\n ? carouselSizes[propName]\n : carouselSizes[propName] - (carouselSizes[propName] - sizeSlides);\n }\n } else {\n if (isNaN(dimension) == false && dimension !== 0) {\n if (options.stretch) {\n slidesMaxSize[propName] += (slidesMaxSize[propName] * dimension) / countVisible;\n } else {\n if (dimension > 0) {\n carouselSizes[propName] = carouselSizes[propName] - slidesMaxSize[propName] * dimension;\n } else {\n slidesMaxSize[propName] += (slidesMaxSize[propName] * dimension) / countVisible;\n\n if (slidesMaxSize[propName] <= 0) {\n slidesMaxSize[propName] = carouselSizes[propName];\n }\n }\n }\n }\n }\n\n if (countVisible <= 1) {\n countVisible = 1;\n result = slidesMaxSize[propName];\n } else {\n result = slidesMaxSize[propName];\n }\n\n var diff = countVisible < items.length ? self.getScrollDiff(result, countVisible) : 0;\n\n if (options.isVertical === false) {\n slidesSize = {\n width: result - diff,\n height: slidesMaxSize.height,\n };\n } else {\n slidesSize = {\n width: slidesMaxSize.width,\n height: result - diff,\n };\n }\n\n return {\n countVisible: countVisible,\n wrapSize: carouselSizes,\n listSize: self.getSize(self.items.length, slidesMaxSize.width, slidesMaxSize.height, options.isVertical, diff * self.items.length),\n innerSize: self.getSize(countVisible, slidesMaxSize.width, slidesMaxSize.height, options.isVertical),\n itemsSize: slidesSize,\n slidesSize: slidesSize,\n };\n };\n\n Carousel.prototype.calcResponsive = function (items, options, responsiveOptions) {\n var self = this,\n propName = self.propName,\n carouselSizes,\n slidesSize,\n slidesMaxSize,\n countVisible;\n\n if (responsiveOptions.slidesToShow != undefined) {\n countVisible = responsiveOptions.slidesToShow;\n } else {\n throw new Error('Count sliders to show is not set');\n }\n\n carouselSizes = self.getCarouselSize();\n slidesMaxSize = self.getItemsMaxSizes(items);\n\n if (options.visibleMin != null && options.visibleMin > items.length) {\n countVisible = items.length;\n } else if (countVisible > items.length) {\n countVisible = items.length;\n }\n\n if (options.stretch) {\n slidesMaxSize[propName] = carouselSizes[propName] / countVisible;\n } else {\n //carouselSizes[propName] = carouselSizes[propName] - (slidesMaxSize[propName] * countVisible);\n var sizeSlides = slidesMaxSize[propName] * countVisible;\n carouselSizes[propName] =\n sizeSlides >= carouselSizes[propName] ? carouselSizes[propName] : carouselSizes[propName] - (carouselSizes[propName] - sizeSlides);\n }\n\n slidesMaxSize = {\n width: carouselSizes.width / countVisible,\n height: carouselSizes.height / countVisible,\n };\n\n var isVertical = self.getIsVerticalOption();\n var diff = self.getScrollDiff(slidesMaxSize[self.getPropName(isVertical)], countVisible);\n\n if (isVertical === false) {\n slidesSize = {\n width: slidesMaxSize.width - diff,\n //height: slidesMaxSize.height\n };\n } else {\n slidesSize = {\n //width: slidesMaxSize.width,\n height: slidesMaxSize.height - diff,\n };\n }\n\n return {\n countVisible: countVisible,\n wrapSize: carouselSizes,\n listSize: self.getSize(self.items.length, slidesMaxSize.width, slidesMaxSize.height, isVertical, diff * self.items.length),\n innerSize: self.getSize(countVisible, slidesMaxSize.width, slidesMaxSize.height, isVertical),\n itemsSize: slidesSize,\n slidesSize: slidesSize,\n };\n };\n\n Carousel.prototype.checkDots = function () {\n var self = this;\n var need;\n if (self.options.dots === true) {\n need = self.items.length !== 1 && self.countVisible !== self.items.length;\n\n if (need === false) {\n if (self.dotsContainer != null && self.dotsContainer.parentNode != null) {\n self.dotsContainer.parentNode.removeChild(self.dotsContainer);\n }\n\n self.dotsContainer = null;\n self.dots.length = 0;\n } else {\n self.renderDots();\n self.selectDots(self.options.indexActive);\n }\n }\n };\n\n Carousel.prototype.renderDots = function () {\n var self = this,\n newCount,\n dot,\n isRenderContaner = false,\n dim,\n dimAbs,\n itemTemp;\n\n if (self.dotsContainer == null) {\n self.dotsContainer = self.wrap.querySelector('.carousel-dots');\n\n if (self.dotsContainer != null) {\n Array.prototype.forEach.call(self.dotsContainer.children, function (el) {\n self.dots.push(el);\n });\n } else {\n self.dotsContainer = createComponent('ul');\n self.dotsContainer.className = 'carousel-dots ' + (self.options.dotsClass || '');\n isRenderContaner = true;\n }\n }\n\n newCount = self.items.length / self.options.scrollCount;\n\n dim = self.dots.length - newCount;\n dimAbs = Math.abs(dim);\n\n if (dim < 0) {\n for (var d = 0, len = dimAbs; d < len; d++) {\n dot = createComponent('li');\n dot.classList.add('carousel-dots-item');\n dot.innerHTML = '';\n self.dotsContainer.appendChild(dot);\n self.dots.push(dot);\n }\n\n self.dots.forEach(function (el, index) {\n el.setAttribute('data-index', index);\n });\n\n if (isRenderContaner === true) {\n self.wrap.appendChild(self.dotsContainer);\n }\n } else {\n for (var r = dimAbs - 1; r >= 0; r--) {\n itemTemp = self.dots.pop();\n itemTemp.parentNode.removeChild(itemTemp);\n }\n }\n };\n\n Carousel.prototype.renderNav = function () {\n var self = this,\n nav = self.wrap.querySelector('.carousel-nav'),\n navPrev,\n navNext,\n needRenderNav,\n needRenderPrev,\n needRenderNext;\n\n //#region nav find or create\n if (nav == null || nav.parentNode !== self.wrap) {\n nav = createComponent('div');\n needRenderNav = true;\n }\n\n nav.className = 'carousel-nav ' + ('carousel-nav-' + self.options.navPosition);\n\n self.nav = nav;\n //#endregion\n\n //#region prev find or create\n navPrev = nav.querySelector('.carousel-nav-prev');\n\n if (navPrev == null) {\n navPrev = createComponent('button', {\n type: 'button',\n role: 'button',\n 'aria-label': '\u041F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0438\u0439 \u0441\u043B\u0430\u0439\u0434',\n });\n needRenderPrev = true;\n }\n\n self.navPrev = navPrev;\n\n //var isVertical = self.getIsVerticalOption();\n\n //navPrev.className = 'carousel-nav-prev ' + (isVertical ? self.options.prevIconVertical : self.options.prevIcon);\n\n //if (self.options.prevClass) {\n // self.options.prevClass.split(' ').forEach(function (item) {\n // navPrev.classList.add(item);\n // });\n //}\n\n self.navPrev = navPrev;\n //#endregion\n\n //#region next find or create\n navNext = nav.querySelector('.carousel-nav-next');\n\n if (navNext == null) {\n navNext = createComponent('button', {\n type: 'button',\n role: 'button',\n 'aria-label': '\u0421\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439 \u0441\u043B\u0430\u0439\u0434',\n });\n needRenderNext = true;\n }\n self.navNext = navNext;\n\n self.addDirectionClassFromNav();\n\n //navNext.className = 'carousel-nav-next ' + (isVertical ? self.options.nextIconVertical : self.options.nextIcon);\n //if (self.options.nextClass) {\n // self.options.nextClass.split(' ').forEach(function (item) {\n // navNext.classList.add(item);\n // });\n //}\n\n //#endregion\n\n if (needRenderPrev === true) {\n nav.appendChild(navPrev);\n }\n\n if (needRenderNext === true) {\n nav.appendChild(navNext);\n }\n\n if (needRenderNav === true) {\n self.wrap.appendChild(nav);\n }\n };\n\n Carousel.prototype.removeDirectionClassFromNav = function () {\n var isVertical = this.getIsVerticalOption();\n var self = this;\n\n self.navNext.className = isVertical ? self.options.nextIconVertical : self.options.nextIcon;\n\n if (self.options.nextClass) {\n self.options.nextClass.split(' ').forEach(function (item) {\n self.navNext.classList.remove(item);\n });\n }\n\n self.navPrev.className = isVertical ? self.options.prevIconVertical : self.options.prevIcon;\n\n if (self.options.prevClass) {\n self.options.prevClass.split(' ').forEach(function (item) {\n self.navPrev.classList.remove(item);\n });\n }\n };\n\n Carousel.prototype.addDirectionClassFromNav = function () {\n var isVertical = this.getIsVerticalOption();\n var self = this;\n\n self.navNext.className = 'carousel-nav-next ' + (isVertical ? self.options.nextIconVertical : self.options.nextIcon);\n\n if (self.options.nextClass) {\n self.options.nextClass.split(' ').forEach(function (item) {\n self.navNext.classList.add(item);\n });\n }\n\n self.navPrev.className = 'carousel-nav-prev ' + (isVertical ? self.options.prevIconVertical : self.options.prevIcon);\n\n if (self.options.prevClass) {\n self.options.prevClass.split(' ').forEach(function (item) {\n self.navPrev.classList.add(item);\n });\n }\n };\n\n Carousel.prototype.generate = function (element) {\n var self = this,\n wrap,\n inner,\n needRenderInner,\n needRenderWrap;\n\n element.classList.add('carousel-list');\n\n if (self.options.itemActiveClass != null && self.options.itemActiveClass.length > 0) {\n self.options.itemActiveClass.split(' ').forEach(function (classNameValue) {\n self.items[self.options.indexActive].classList.add(classNameValue);\n });\n }\n\n if (self.options.itemSelectClass != null && self.options.itemSelectClass.length > 0) {\n self.options.itemSelectClass.split(' ').forEach(function (classNameValue) {\n self.items[self.options.indexActive].classList.add(classNameValue);\n });\n }\n\n //#region inner find or create\n if (self.list.parentNode != null && self.list.parentNode.classList.contains('carousel-inner') === true) {\n inner = self.list.parentNode;\n } else {\n inner = createComponent('div');\n needRenderInner = true;\n }\n\n inner.classList.add('carousel-inner');\n\n self.inner = inner;\n //#endregion\n\n //#region wrap find or create\n if (self.inner.parentNode != null && self.inner.parentNode.classList.contains('carousel') === true) {\n wrap = self.inner.parentNode;\n } else {\n wrap = createComponent('div');\n needRenderWrap = true;\n }\n\n var isVertical = self.getIsVerticalOption();\n\n wrap.classList.add('carousel');\n wrap.classList.add('carousel-' + (isVertical ? 'vertical' : 'horizontal'));\n wrap.classList.add('carousel-wrap-nav-' + self.options.navPosition);\n\n if (self.options.carouselClass != null && self.options.carouselClass.length > 0) {\n self.options.carouselClass\n .split(' ')\n .filter((item) => item.length > 0)\n .forEach(function (item) {\n wrap.classList.add(item);\n });\n }\n\n if (self.options.scrollNav === true) {\n wrap.classList.add('carousel-scroll-nav');\n }\n\n self.wrap = wrap;\n //#endregion\n\n //TODO \u043F\u043E\u0434\u0443\u043C\u0430\u0442\u044C, \u043C\u043E\u0436\u043D\u043E \u043B\u0438 \u043E\u043F\u0442\u0438\u043C\u0438\u0437\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0440\u0435\u043D\u0434\u0435\u0440\u0438\u043D\u0433\n if (needRenderInner) {\n wrap.appendChild(inner);\n }\n\n if (needRenderWrap) {\n //element.parentNode.appendChild(wrap);\n element.insertAdjacentElement('beforebegin', wrap);\n }\n\n if (needRenderInner) {\n inner.appendChild(element);\n }\n };\n\n Carousel.prototype.selectDots = function (index) {\n var self = this;\n\n if (self.dots == null || self.dotActive === self.dots[index]) {\n return;\n }\n\n if (self.dotActive != null) {\n self.dotActive.classList.remove('carousel-dots-selected');\n\n if (self.options.dotsItemSelectedClass != null && self.options.dotsItemSelectedClass.length > 0) {\n self.options.dotsItemSelectedClass.split(' ').forEach(function (classNameValue) {\n self.dotActive.classList.remove(classNameValue);\n });\n }\n\n if (self.options.dotsItemInnerSelectedClass != null && self.options.dotsItemInnerSelectedClass.length > 0) {\n self.options.dotsItemInnerSelectedClass.split(' ').forEach(function (classNameValue) {\n self.dotActive.children[0].classList.remove(classNameValue);\n });\n }\n }\n\n var dotSelectedIndex = self.dots.find((x) => parseFloat(x.dataset.index) + self.options.scrollCount - 1 >= index);\n\n if (dotSelectedIndex != null) {\n self.dotActive = dotSelectedIndex;\n dotSelectedIndex.classList.add('carousel-dots-selected');\n\n if (self.options.dotsItemSelectedClass != null && self.options.dotsItemSelectedClass.length > 0) {\n self.options.dotsItemSelectedClass.split(' ').forEach(function (classNameValue) {\n dotSelectedIndex.classList.add(classNameValue);\n });\n }\n\n if (self.options.dotsItemInnerSelectedClass != null && self.options.dotsItemInnerSelectedClass.length > 0) {\n self.options.dotsItemInnerSelectedClass.split(' ').forEach(function (classNameValue) {\n dotSelectedIndex.children[0].classList.add(classNameValue);\n });\n }\n }\n };\n\n Carousel.prototype.doClone = function () {\n var self = this,\n oldClones,\n itemsDuplicate,\n itemsClonePrev,\n itemsCloneNext,\n fragmentPrev,\n fragmentNext,\n clonePrev,\n cloneNext,\n marginLeftValue;\n\n var clonesNext = [];\n var clonesPrev = [];\n\n //#region find and delete old clones\n\n oldClones = self.list.querySelectorAll('.js-carousel-clone');\n for (var c = oldClones.length - 1; c >= 0; c--) {\n oldClones[c].parentNode.removeChild(oldClones[c]);\n }\n\n for (var i = self.items.length - 1; i >= 0; i--) {\n delete self.items[i].carouselItemData.clone;\n }\n\n self.list.style.marginLeft = '0px';\n\n //#endregion\n\n if (self.countVisible >= self.items.length) {\n return null;\n }\n\n itemsDuplicate = self.items.slice();\n\n itemsClonePrev = Array.prototype.slice.call(itemsDuplicate.reverse(), 0, self.countVisible).reverse();\n itemsCloneNext = Array.prototype.slice.call(itemsDuplicate.reverse(), 0, self.countVisible);\n\n fragmentPrev = document.createDocumentFragment();\n fragmentNext = document.createDocumentFragment();\n\n for (var p = 0, len = itemsClonePrev.length; p < len; p++) {\n clonePrev = (itemsClonePrev[p].carouselItemData.originalClone || itemsClonePrev[p]).cloneNode(true);\n clonePrev.classList.add('js-carousel-clone');\n\n self.setItemSize(clonePrev, self.slidesSize[self.propName]);\n\n fragmentPrev.appendChild(clonePrev);\n clonesPrev.push(clonePrev);\n\n itemsClonePrev[p].carouselItemData.clone = clonePrev;\n }\n\n for (var n = 0, l = itemsCloneNext.length; n < l; n++) {\n cloneNext = (itemsCloneNext[n].carouselItemData.originalClone || itemsCloneNext[n]).cloneNode(true);\n cloneNext.classList.add('js-carousel-clone');\n\n self.setItemSize(cloneNext, self.slidesSize[self.propName]);\n\n fragmentNext.appendChild(cloneNext);\n clonesNext.push(cloneNext);\n\n itemsCloneNext[n].carouselItemData.clone = cloneNext;\n }\n\n //insert for prev\n self.list.insertBefore(fragmentPrev, self.items[0]);\n\n //insert for next\n self.list.appendChild(fragmentNext);\n\n marginLeftValue = -itemsClonePrev.length * self.slidesSize[self.propName];\n\n self.list.style.marginLeft = marginLeftValue + 'px';\n\n self.hasClones = true;\n\n self.countClone = itemsClonePrev.length + itemsCloneNext.length;\n\n self.clonesInOneDirection = (itemsClonePrev.length + itemsCloneNext.length) / 2;\n\n var result = {\n clonesNext: clonesNext,\n clonesPrev: clonesPrev,\n clonesNextCount: itemsCloneNext.length,\n clonesPrevCount: itemsClonePrev.length,\n marginLeftValue: marginLeftValue,\n };\n\n if (self.options.onDoClone != null) {\n self.options.onDoClone(result);\n }\n\n return result;\n };\n\n Carousel.prototype.getMoveData = function (index) {\n var self = this,\n result;\n\n if (self.items.length > self.countVisible) {\n result = Math.abs(index) * self.slidesSize[self.propName] * (index < 0 ? 1 : -1);\n } else {\n result = 0;\n }\n\n return result;\n };\n\n Carousel.prototype.move = function (transformValue, useAnimate) {\n useAnimate = useAnimate != null ? useAnimate : true;\n\n var self = this,\n transformObj = {},\n transformStyle;\n\n var isVertical = self.getIsVerticalOption();\n\n transformObj[isVertical ? 'top' : 'left'] = transformValue;\n\n if (self.options.scrollNav === false) {\n //elStyle.webkitTransitionDuration = duration;\n //elStyle.transitionDuration = duration;\n\n self.list.style[transitionDurationName] = useAnimate === false ? '0ms' : self.options.speed / 1000 + 's';\n self.list.style[webkitTransitionDuration] = useAnimate === false ? '0ms' : self.options.speed / 1000 + 's';\n transformStyle = ['translate3d(', transformObj.left || 0, 'px,', ' ', transformObj.top || 0, 'px, 0px)'].join('');\n self.list.style[transformName] = transformStyle;\n } else {\n var scrollValue = Math.floor(isVertical ? self.inner.scrollTop : self.inner.scrollLeft);\n var scrollValueEnd = Math.floor(Math.abs((isVertical ? transformObj.top : transformObj.left) || 0));\n\n smoothScroll(self.inner, scrollValue, scrollValueEnd, isVertical);\n }\n\n self.transformValue = transformValue;\n };\n\n Carousel.prototype.moveAuto = function () {\n var self = this;\n\n if (autoStop === true) {\n return;\n }\n\n clearTimeout(self.timerAuto);\n\n self.timerAuto = setTimeout(function () {\n if (autoStop === true) {\n return;\n }\n\n self.next();\n\n self.moveAuto();\n }, self.options.autoPause);\n };\n\n Carousel.prototype.stopAuto = function () {\n autoStop = true;\n\n if (self.timerAuto != null) {\n clearTimeout(self.timerAuto);\n }\n };\n\n Carousel.prototype.startAuto = function () {\n var self = this;\n\n autoStop = false;\n\n self.moveAuto();\n };\n\n Carousel.prototype.checkNav = function () {\n var self = this,\n itemsCount = self.items.length;\n\n self.isPrevDisabled = (self.options.auto === false && 0 === self.options.indexActive) || self.countVisible >= itemsCount;\n self.isNextDisabled =\n (self.options.auto === false && self.options.indexActive + self.countVisible === self.items.length) || self.countVisible >= itemsCount;\n self.isNavNotShow = itemsCount <= self.countVisible;\n\n self.isPrevDisabled ? self.navPrev.setAttribute('disabled', 'disabled') : self.navPrev.removeAttribute('disabled');\n self.isNextDisabled ? self.navNext.setAttribute('disabled', 'disabled') : self.navNext.removeAttribute('disabled');\n\n self.wrap.classList[self.isNavNotShow === true ? 'add' : 'remove']('carousel-nav-not-show');\n };\n\n Carousel.prototype.prev = function () {\n var self = this,\n newIndex;\n var carouselAsNavFor = self.getCarouselAsNav();\n\n if (self.isPrevDisabled === true || self.animationLoop === true) {\n return;\n }\n\n newIndex = self.options.indexActive - self.options.scrollCount;\n\n //go to last item\n if (self.options.auto === true && newIndex < 0) {\n self.animationLoop = true;\n\n var returnFn = function () {\n self.list.removeEventListener('transitionend', returnFn);\n\n setTimeout(function () {\n self.animationLoop = false;\n self.goto(self.items.length - 1, false);\n\n if (carouselAsNavFor != null) {\n carouselAsNavFor.goto(self.items.length - 1, false);\n }\n }, 0);\n };\n\n self.list.addEventListener('transitionend', returnFn);\n }\n\n self.goto(newIndex, true, 'backwards');\n\n if (carouselAsNavFor != null) {\n carouselAsNavFor.goto(newIndex, true, 'backwards');\n }\n };\n\n Carousel.prototype.next = function () {\n var self = this,\n newIndex;\n var carouselAsNavFor = self.getCarouselAsNav();\n\n if (self.isNextDisabled === true || self.animationLoop === true) {\n return;\n }\n\n newIndex = self.options.indexActive + self.options.scrollCount;\n //go to first item\n\n if (self.options.auto === true && newIndex > self.items.length) {\n self.goto(0, false);\n newIndex = self.options.scrollCount;\n setTimeout(function () {\n self.goto(newIndex, true, 'forward');\n }, 0);\n return;\n }\n\n if (self.options.auto === true && newIndex === self.items.length) {\n // newIndex > self.items.length - self.countVisible\n\n self.animationLoop = true;\n\n var returnFn = function () {\n self.list.removeEventListener('transitionend', returnFn);\n setTimeout(function () {\n self.animationLoop = false;\n self.goto(0, false);\n\n if (carouselAsNavFor != null) {\n carouselAsNavFor.goto(0, false);\n }\n }, 0);\n };\n\n self.list.addEventListener('transitionend', returnFn);\n }\n\n self.goto(newIndex, true, 'forward');\n\n if (carouselAsNavFor != null) {\n carouselAsNavFor.goto(newIndex, true, 'forward');\n }\n };\n\n Carousel.prototype.loadImg = function (objForLoad, preload) {\n var self = this;\n var list, img;\n\n if (objForLoad != null) {\n list = Array.prototype.slice.call(objForLoad instanceof NodeList ? objForLoad : [objForLoad]);\n let dataSetKey;\n for (let i = 0, len = list.length; i < len; i++) {\n img = list[i];\n dataSetKey = img.dataset.src != null ? 'src' : img.dataset.srcset ? 'srcset' : null;\n if (img.dataset.carouselImg != null) {\n if (self.options.onLazyLoad != null) {\n img.addEventListener('load', function () {\n this.classList.remove('carousel-placeholder');\n });\n self.options.onLazyLoad(img, img);\n }\n } else if (dataSetKey != null && img.classList.contains('loaded') === false && img.dataset[dataSetKey].indexOf('{{') === -1) {\n // {{ - \u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u0430\u043D\u0433\u0443\u043B\u044F\u0440\u0430\n\n img.addEventListener('load', function () {\n this.classList.remove('carousel-placeholder');\n });\n\n img[dataSetKey] = img.dataset[dataSetKey];\n img.classList.add('loaded');\n\n if (preload === true) {\n let fakeImg = new Image();\n fakeImg[dataSetKey] = img.dataset[dataSetKey];\n }\n }\n }\n }\n };\n\n Carousel.prototype.loadImgInsideItems = function (start, end) {\n var self = this;\n var list = [];\n\n if (self.options.auto === true) {\n start = start < 0 ? 0 : start;\n list = list.concat(self.cloneResult.clonesPrev.slice());\n list = list.concat(self.items, self.cloneResult != null ? self.cloneResult.clonesNext : []);\n } else {\n list = list.concat(self.items);\n }\n\n for (var i = start; i < end; i++) {\n self.loadImg(list[i].querySelectorAll('img'));\n }\n };\n\n Carousel.prototype.goto = function (index, isAnimate, direction) {\n var self = this;\n var carouselAsNavFor = self.getCarouselAsNav();\n\n if (self.options.itemActiveClass != null && self.options.itemActiveClass.length > 0) {\n self.options.itemActiveClass.split(' ').forEach(function (classNameValue) {\n self.items[self.options.indexActive].classList.remove(classNameValue);\n self.items[index].classList.add(classNameValue);\n });\n }\n\n if (self.countVisible === 1) {\n if (self.options.itemSelectClass != null && self.options.itemSelectClass.length > 0) {\n self.options.itemSelectClass.split(' ').forEach(function (classNameValue) {\n self.items[self.options.indexActive].classList.remove(classNameValue);\n self.items[index].classList.add(classNameValue);\n });\n }\n\n if (carouselAsNavFor != null) {\n self.callFnCarouselAsNavFor(self.setItemSelect, [index]);\n }\n }\n\n self.options.indexActive = index;\n var maxIndex;\n if (self.items.length < self.countVisible) {\n maxIndex = 0;\n } else {\n maxIndex = self.items.length - self.countVisible + (self.options.auto === true ? self.countVisible : 0);\n }\n\n var minIndex = 0 - (self.options.auto === true ? self.countVisible : 0);\n\n if (self.options.auto === false) {\n if (index < minIndex) {\n index = minIndex;\n self.options.indexActive = minIndex;\n } else if (index > maxIndex) {\n index = maxIndex;\n self.options.indexActive = maxIndex;\n }\n }\n\n isAnimate = isAnimate != null ? isAnimate : true;\n\n var transform = self.getMoveData(self.options.indexActive);\n\n self.move(transform, isAnimate);\n\n if (self.options.nav === true) {\n self.checkNav();\n }\n\n if (self.options.dots) {\n var dotsIndex = self.options.indexActive;\n if (self.options.auto === true && self.options.indexActive === self.items.length) {\n dotsIndex = 0;\n } else if (self.options.auto === true && self.options.indexActive < 0) {\n dotsIndex = self.items.length - -self.options.indexActive;\n }\n self.selectDots(dotsIndex);\n }\n };\n\n Carousel.prototype.removeItem = function (child, keepInCache) {\n var self = this,\n index,\n clone;\n\n index = self.items.indexOf(child);\n\n if (index < 0) {\n return;\n }\n\n keepInCache = keepInCache != null ? keepInCache : true;\n\n if (child != null && child.parentNode != null) {\n if (self.options.auto === true && child.carouselItemData.clone != null) {\n clone = child.carouselItemData.clone;\n clone.parentNode.removeChild(clone);\n }\n\n child.parentNode.removeChild(child);\n self.items.splice(index, 1);\n }\n\n if (keepInCache === false) {\n self.removeFromCache(child);\n }\n\n //else {\n // self.addToCache(child);\n //}\n\n self.checkDots();\n\n return child;\n };\n\n Carousel.prototype.addItem = function (item, positonIndex) {\n var self = this,\n index = self.cache.indexOf(item),\n indexSibling = index - 1;\n\n if (index == -1 || self.items.length === 0 || self.items[indexSibling] == null || self.items[indexSibling].carouselItemData == null) {\n indexSibling = null;\n }\n\n if (indexSibling == null && positonIndex == null) {\n self.items.push(item);\n self.list.insertAdjacentElement('beforeend', item);\n } else {\n self.items.splice(positonIndex != null ? positonIndex : indexSibling + 1, 0, item);\n self.items[positonIndex != null ? positonIndex - 1 : indexSibling].insertAdjacentElement('afterend', item);\n }\n\n if (item.carouselItemData == null) {\n self.processItem(item);\n }\n\n return item;\n };\n\n Carousel.prototype.updateItems = function (newItems, keepInCache) {\n var self = this;\n var insertContent = document.createDocumentFragment();\n\n self.items.length = 0;\n keepInCache = keepInCache != null ? keepInCache : true;\n\n if (keepInCache === false) {\n self.clearCache();\n }\n\n for (var i = 0, len = newItems.length; i < len; i++) {\n insertContent.appendChild(newItems[i]);\n\n if (i < self.countVisible) {\n self.loadImg(newItems[i].querySelectorAll('img'), true);\n }\n }\n\n self.list.innerHTML = '';\n self.list.appendChild(insertContent);\n\n self.processItems(newItems, true);\n\n return newItems;\n };\n\n Carousel.prototype.getItems = function () {\n return this.items;\n };\n\n Carousel.prototype.filterItems = function (filterFunction) {\n var self = this,\n arrayAll = self.cache,\n itemsForVisible;\n\n var carouselAsNavFor = self.getCarouselAsNav();\n\n if (self.options.filterFn) {\n filterFunction = self.options.filterFn;\n }\n\n itemsForVisible = arrayAll.filter(filterFunction);\n\n for (var i = 0, len = arrayAll.length - 1; i <= len; i++) {\n if (self.observer != null) {\n if (arrayAll[i] != null) {\n var img = arrayAll[i].querySelector('img');\n if (img != null) {\n img.classList.remove('loaded');\n self.observer.unobserve(img);\n }\n }\n }\n }\n\n self.items = self.updateItems(itemsForVisible, true);\n\n for (var j = 0; itemsForVisible.length > j; j++) {\n if (self.observer != null) {\n if (itemsForVisible[j] != null) {\n const img = itemsForVisible[j].querySelector('img');\n if (img != null) {\n self.observer.observe(img);\n }\n }\n }\n }\n\n self.options.indexActive = 0;\n\n self.update();\n\n if (carouselAsNavFor != null) {\n self.callFnCarouselAsNavFor(self.filterItems, [filterFunction]);\n }\n\n return self.items;\n };\n\n Carousel.prototype.clearFilterItems = function () {\n var self = this;\n\n self.filterItems(function () {\n return true;\n });\n };\n\n Carousel.prototype.getActiveItem = function () {\n return this.items[this.options.indexActive];\n };\n\n Carousel.prototype.getSelectedItem = function () {\n return this.itemSelected;\n };\n\n Carousel.prototype.setItemSelect = function (item) {\n var self = this;\n var itemIndex;\n var carouselAsNavFor = self.getCarouselAsNav();\n\n if (item == null) {\n return;\n }\n\n self.itemSelected = null;\n\n if (typeof item === 'number') {\n itemIndex = item;\n item = self.items[item];\n\n if (item == null) {\n return;\n }\n } else {\n itemIndex = self.items.indexOf(item);\n }\n\n for (var j = self.items.length - 1; j >= 0; j--) {\n if (self.options.itemSelectClass != null) {\n self.options.itemSelectClass.split(' ').forEach(function (classNameValue) {\n self.items[j].classList.remove(classNameValue);\n });\n }\n\n if (self.items[j].carouselItemData != null) {\n self.items[j].carouselItemData.isSelect = false;\n }\n }\n\n if (self.options.itemSelectClass != null) {\n self.options.itemSelectClass.split(' ').forEach(function (cssClass) {\n item.classList.add(cssClass);\n\n if (self.options.auto === true && item.carouselItemData != null && item.carouselItemData.clone != null) {\n item.carouselItemData.clone.classList.add(cssClass);\n }\n });\n }\n\n if (item.carouselItemData != null) {\n item.carouselItemData.isSelect = true;\n self.itemSelected = item;\n }\n\n if (carouselAsNavFor != null) {\n self.callFnCarouselAsNavFor(self.setItemSelect, [itemIndex]);\n }\n };\n\n Carousel.prototype.dotClick = function (event) {\n var self = this,\n currentDot,\n index;\n\n if (event.target.tagName.toLowerCase() === 'i') {\n currentDot = event.target.parentNode;\n } else if (event.target.tagName.toLowerCase() === 'li') {\n currentDot = event.target;\n } else {\n return;\n }\n\n index = parseInt(currentDot.getAttribute('data-index'));\n\n self.goto(index === 0 ? 0 : index + self.options.scrollCount - 1);\n };\n\n Carousel.prototype.itemClick = function (item) {\n var self = this;\n var itemIndex;\n var itemObj;\n var carouselAsNavFor = self.getCarouselAsNav();\n\n if (typeof item === 'number') {\n itemIndex = item;\n itemObj = self.items[itemIndex];\n } else {\n itemIndex = self.items.indexOf(item);\n itemObj = item;\n }\n\n self.setItemSelect(itemObj);\n\n if (self.options.itemSelect != null) {\n self.options.itemSelect(self, itemObj, itemIndex);\n }\n\n if (carouselAsNavFor != null) {\n if (carouselAsNavFor.isVisibleItem(itemIndex) === false) {\n carouselAsNavFor.goto(itemIndex, true);\n }\n\n self.callFnCarouselAsNavFor(self.itemClick, [itemIndex]);\n }\n };\n\n Carousel.prototype.touch = function () {\n var self = this;\n var startCoords, movedCoords;\n function touchStart(event) {\n event.stopPropagation();\n startCoords = self.getCoordinates(event);\n movedCoords = startCoords;\n\n if (self.options.auto === true) {\n self.stopAuto();\n }\n\n self.list.addEventListener('touchmove', touchMove, { passive: true });\n\n self.list.addEventListener('touchend', touchEnd, { passive: true });\n }\n\n function touchStartScroll() {\n var scrollEvent = debounce(function () {\n self.inner.removeEventListener('scroll', scrollEvent);\n self.inner.removeEventListener('touchend', scrollEvent);\n var isVertical = self.getIsVerticalOption();\n var newIndex = Math.ceil(self.inner.scrollLeft / self.itemsSize[self.getPropName(isVertical)]);\n self.goto(newIndex, true);\n }, 700);\n\n self.inner.addEventListener('scroll', scrollEvent, { passive: true });\n self.inner.addEventListener('touchend', scrollEvent, { passive: true });\n }\n\n function touchMove(event) {\n var validSwipe;\n var coords = self.getCoordinates(event);\n var dim = coords.main - movedCoords.main;\n var dimAllTime = movedCoords.main - startCoords.main;\n\n isOverScrollX = self.listSize.width + Math.abs(dimAllTime) - self.slidesSize.width > self.listSize.width;\n\n if (self.options.auto === true) {\n self.goToFirstInMobile();\n }\n\n if (!isScrolling) {\n validSwipe = self.validSwipe(startCoords, coords, dim >= 0 ? 1 : -1);\n if (validSwipe === true) {\n isScrolling = true;\n } else {\n isScrolling = false;\n }\n }\n if (isScrolling) {\n event.stopPropagation();\n self.move((self.transformValue || 0) + dim, false);\n movedCoords = coords;\n } else {\n if (self.options.scrollNav === false) {\n self.list.removeEventListener('touchmove', touchMove);\n }\n\n self.list.removeEventListener('touchend', touchEnd);\n\n if (self.options.auto === true) {\n self.startAuto();\n }\n }\n }\n\n function touchEnd(event) {\n self.list.removeEventListener('touchmove', touchMove);\n self.list.removeEventListener('touchend', touchEnd);\n var dim = movedCoords.main - startCoords.main;\n\n if (isScrolling) {\n gotoByTouhMove(dim);\n }\n\n if (self.options.auto === true) {\n self.startAuto();\n }\n\n isScrolling = false;\n }\n\n function gotoByTouhMove(dim) {\n var dimAllTime = movedCoords.main - startCoords.main;\n var maxIndex = self.items.length - self.countVisible + (self.options.auto === true ? self.countVisible - 1 : 0);\n var minIndex = 0 - (self.options.auto === true ? self.countVisible - 1 : 0);\n var isVertical = self.getIsVerticalOption();\n var touchMoveItemsCount = Math.abs(Math.round(dimAllTime / self.slidesSize[self.getPropName(isVertical)])) || 1;\n var index = dimAllTime < 0 ? self.options.indexActive + touchMoveItemsCount : self.options.indexActive - touchMoveItemsCount;\n var carouselAsNavFor = self.getCarouselAsNav();\n var direction = dim >= 0 ? 'forward' : 'backward';\n\n if (self.options.auto === false && index > maxIndex) {\n index = maxIndex;\n } else if (self.options.auto === false && index < minIndex) {\n index = minIndex;\n }\n\n if (self.options.auto === true && isOverScrollX && direction === 'backward') {\n index = self.items.length - self.countVisible + self.clonesInOneDirection;\n } else if (self.options.auto === true && isOverScrollX && direction === 'forward') {\n index = 0 - self.countVisible;\n }\n\n if (carouselAsNavFor != null && carouselAsNavFor.isVisibleItem(index) === false) {\n carouselAsNavFor.goto(index, true);\n }\n\n self.goto(index, true);\n\n isOverScrollX = false;\n }\n\n self.list.addEventListener('touchstart', self.options.scrollNav === false ? touchStart : touchStartScroll, {\n passive: true,\n });\n };\n\n Carousel.prototype.getCoordinates = function (event) {\n var self = this;\n var originalEvent = event.originalEvent || event;\n var touches = originalEvent.touches && originalEvent.touches.length ? originalEvent.touches : [originalEvent];\n var e = (originalEvent.changedTouches && originalEvent.changedTouches[0]) || touches[0];\n var result;\n var isVertical = self.getIsVerticalOption();\n if (isVertical) {\n result = {\n main: e.clientY,\n alt: e.clientX,\n };\n } else {\n result = {\n main: e.clientX,\n alt: e.clientY,\n };\n }\n\n return result;\n };\n\n Carousel.prototype.validSwipe = function (startCoords, coords) {\n var deltaAlt = Math.abs(coords.alt - startCoords.alt);\n var deltaMain = Math.abs(coords.main - startCoords.main);\n var self = this;\n var touchAngle = (Math.atan2(Math.abs(deltaAlt), Math.abs(deltaMain)) * 180) / Math.PI;\n var isVertical = self.getIsVerticalOption();\n if (isVertical === false && touchAngle > 45) {\n return false;\n }\n if (isVertical === false && touchAngle <= 45) {\n return true;\n }\n if (isVertical === true && 90 - touchAngle > 45) {\n return true;\n } else {\n return false;\n }\n };\n\n Carousel.prototype.bindIt = function () {\n var self = this,\n options = self.options;\n\n if (isTouchDevice === true) {\n self.touch();\n\n window.addEventListener('orientationchange', self.update.bind(self));\n } else {\n window.addEventListener('resize', function () {\n self.update();\n });\n }\n\n if (options.auto === true && isTouchDevice === false) {\n //self.wrap.removeEventListener('mouseenter', self.stopAuto);\n self.wrap.addEventListener('mouseenter', function () {\n self.stopAuto();\n });\n\n //self.wrap.removeEventListener('mouseleave', self.startAuto);\n self.wrap.addEventListener('mouseleave', function () {\n self.startAuto();\n });\n }\n\n self.wrap.addEventListener('click', function (event) {\n var itemClicked;\n\n if (options.nav === true) {\n if (event.target === self.navNext) {\n self.next();\n return;\n } else if (event.target === self.navPrev) {\n self.prev();\n return;\n }\n }\n\n if (options.dots === true && closest(event.target, self.dotsContainer) !== null) {\n self.dotClick(event);\n return;\n }\n\n itemClicked = closest(event.target, '.js-carousel-item');\n\n if (itemClicked !== null) {\n self.itemClick(itemClicked);\n }\n });\n\n if (self.options.responsive != null) {\n Object.keys(self.options.responsive).forEach(function (mqRule) {\n var mq = getMediaQuery(mqRule);\n\n mq.addListener(function (event) {\n if (event.matches === true) {\n self.update();\n }\n });\n });\n }\n if (self.options.auto) {\n document.addEventListener('visibilitychange', function () {\n if (document.visibilityState === 'visible') {\n self.startAuto();\n } else {\n self.stopAuto();\n }\n });\n }\n };\n\n Carousel.prototype.init = function () {\n var self = this,\n sizes;\n\n //self.cache.length = 0;\n\n self.processItems(self.items, true);\n\n self.generate(self.list);\n\n self.sizes = self.calc(self.items, self.options, self.options.responsive != null ? self.responsiveOption : null); //self.wrap, self.inner, self.list,\n\n self.setSizes(self.sizes.wrapSize, self.sizes.innerSize, self.sizes.listSize, self.sizes.itemsSize);\n\n self.checkDots();\n\n if (self.options.nav === true) {\n self.renderNav();\n }\n\n if (self.options.auto === true && self.countVisible < self.items.length) {\n self.cloneResult = self.doClone();\n\n self.sizes.listSize[self.propName] += Math.abs(self.cloneResult.marginLeftValue) * 2; //2 - \u0441 \u043E\u0431\u0435\u0438\u0445 \u0441\u0442\u043E\u0440\u043E\u043D \u0448\u0438\u0440\u0438\u043D\u0430 \u043A\u043B\u043E\u043D\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0445 \u0441\u043B\u0430\u0439\u0434\u043E\u0432\n\n self.setSizes(self.sizes.wrapSize, self.sizes.innerSize, self.sizes.listSize, self.sizes.itemsSize);\n\n self.goto(self.options.indexActive, false);\n }\n\n if (self.options.nav === true) {\n self.checkNav();\n }\n\n if (self.options.auto === true) {\n self.startAuto();\n }\n\n if (self.dots != null) {\n self.selectDots(self.options.indexActive);\n }\n\n if (self.options.initFn != null) {\n self.options.initFn(self);\n }\n\n self.bindIt();\n\n self.setIntersectionObserver();\n\n self.initilized = true;\n\n self.wrap.classList.add('carousel-initilized');\n self.addDirectionCarouselClass();\n\n return self;\n };\n\n Carousel.prototype.resetSizes = function (callback) {\n var self = this;\n var isVertical = self.getIsVerticalOption();\n\n self.wrap.style[self.propName] = isVertical ? '100%' : 'auto';\n self.inner.style[self.propName] = isVertical ? '100%' : 'auto';\n self.list.style[self.propName] = isVertical ? '100%' : 'auto';\n\n self.list.style.marginLeft = '0';\n\n self.removeDirectionCarouselClass();\n if (self.navPref != null && self.navNext != null) {\n self.removeDirectionClassFromNav();\n }\n\n var oldClones = self.list.querySelectorAll('.js-carousel-clone');\n for (var c = oldClones.length - 1; c >= 0; c--) {\n clearStyleSlide(oldClones[c], self);\n }\n\n for (var i = self.items.length - 1; i >= 0; i--) {\n clearStyleSlide(self.items[i], self);\n self.items[i].setAttribute('style', self.items[i].carouselItemData.stylesRaw || '');\n }\n\n setTimeout(function () {\n callback();\n }, 500);\n };\n\n function clearStyleSlide(slide, carousel) {\n slide.style[carousel.propName] = 'auto';\n slide.style['flex-basis'] = 'auto';\n slide.style['msFlexPreferredSize'] = 'auto';\n slide.style['webkitFlexBasis'] = 'auto';\n\n if (self.propName === 'width') {\n slide.style.maxWidth = 'none';\n } else {\n slide.style.maxHeight = 'none';\n }\n }\n\n Carousel.prototype.update = function () {\n var self = this,\n sizes;\n\n self.wrap.classList.remove('carousel-nav-not-show');\n self.wrap.classList.add('carousel-update');\n\n self.resetSizes(function () {\n if (self.list.children != null && self.list.children.length > 0) {\n var childrenWithoutClone = Array.prototype.filter.call(self.list.children, function (child) {\n return child.classList.contains('js-carousel-clone') === false;\n });\n } else {\n return;\n }\n self.responsiveOption = self.options.responsive != null ? self.checkResponsive() : null;\n var isVertical = self.getIsVerticalOption();\n self.addDirectionCarouselClass();\n if (self.navPref != null && self.navNext != null) {\n self.addDirectionClassFromNav();\n }\n self.propName = self.getPropName(isVertical);\n\n self.items = Array.prototype.slice.call(childrenWithoutClone);\n self.processItems(self.items);\n sizes = self.calc(self.items, self.options, self.responsiveOption);\n\n self.setSizes(sizes.wrapSize, sizes.innerSize, sizes.listSize, sizes.itemsSize);\n\n if (self.options.auto === true) {\n self.cloneResult = self.doClone();\n\n if (self.cloneResult != null) {\n sizes.listSize[self.propName] += Math.abs(self.cloneResult.marginLeftValue) * 2; //2 - \u0441 \u043E\u0431\u0435\u0438\u0445 \u0441\u0442\u043E\u0440\u043E\u043D \u0448\u0438\u0440\u0438\u043D\u0430 \u043A\u043B\u043E\u043D\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0445 \u0441\u043B\u0430\u0439\u0434\u043E\u0432\n }\n\n self.setSizes(sizes.wrapSize, sizes.innerSize, sizes.listSize, sizes.itemsSize);\n\n //self.options.indexActive = 0;\n } else {\n if (self.options.nav === true) {\n self.checkNav();\n }\n }\n\n self.goto(self.options.indexActive, false);\n\n if (self.options.dots === true) {\n self.checkDots();\n self.selectDots(self.options.indexActive);\n }\n\n self.wrap.classList.remove('carousel-update');\n\n if (self.options.onUpdate != null) {\n self.options.onUpdate();\n }\n });\n };\n\n Carousel.prototype.checkResponsive = function () {\n var self = this;\n var mq;\n var mqOptions;\n var mqRules = Object.keys(this.options.responsive);\n\n for (var i = mqRules.length - 1; i >= 0; i--) {\n mq = getMediaQuery(mqRules[i]);\n mqOptions = self.options.responsive[mqRules[i]];\n\n if (mq.matches === true) {\n break;\n }\n }\n\n return mqOptions;\n };\n\n Carousel.prototype.getCarouselAsNav = function () {\n return storage[this.options.asNavFor] && storage[this.options.asNavFor].obj;\n };\n\n Carousel.prototype.callFnCarouselAsNavFor = function (fn, params) {\n var self = this;\n if (\n self.options.asNavFor != null &&\n self.options.asNavFor.length > 0 &&\n storage[self.options.asNavFor] &&\n storage[self.options.asNavFor].state.callAsNav !== true\n ) {\n storage[self.options.asNavFor].state.callAsNav = true;\n fn.apply(storage[self.options.asNavFor].obj, params);\n storage[self.options.asNavFor].state.callAsNav = false;\n }\n };\n\n Carousel.prototype.whenAsNavForReady = function (idAsNavFor, callback) {\n if (storage[idAsNavFor] != null) {\n callback(storage[idAsNavFor]);\n } else {\n deferList[idAsNavFor] = callback;\n }\n };\n\n Carousel.prototype.resolveAsNavForReady = function (idAsNavFor) {\n if (deferList[idAsNavFor] != null) {\n deferList[idAsNavFor](storage[idAsNavFor]);\n }\n };\n\n Carousel.prototype.isVisibleItem = function (item) {\n var self = this;\n var itemObj = typeof item === 'number' ? self.items[item] : item;\n var itemIndex = itemObj.carouselItemData.index;\n var isVertical = self.getIsVerticalOption();\n var minIndex =\n (self.options.scrollNav === true ? self.inner.scrollLeft : Math.abs(self.transformValue)) / self.slidesSize[self.getPropName(isVertical)];\n var maxIndex = minIndex + self.countVisible;\n return minIndex < itemIndex && maxIndex > itemIndex;\n };\n\n Carousel.prototype.getScrollDiff = function (itemSize, countVisible) {\n return this.options.scrollNav === true ? Math.ceil(itemSize / 2 / countVisible) : 0;\n };\n\n Carousel.prototype.goToFirstInMobile = function () {\n var self = this;\n if (self.options.indexActive >= self.items.length + self.clonesInOneDirection - self.countVisible) {\n self.goto(0, false);\n } else if (self.options.indexActive <= 0 - self.clonesInOneDirection) {\n self.goto(self.items.length - self.countVisible, false);\n }\n };\n\n Carousel.prototype.setIntersectionObserver = function (objOptions, funcCallback, classElement) {\n var self = this;\n var targetArr = self.inner.querySelectorAll(classElement || 'img');\n\n if (targetArr != null && targetArr.length > 0) {\n var isVertical = self.getIsVerticalOption();\n var options = objOptions || {\n root: self.inner,\n rootMargin: (isVertical ? self.innerSize.height : self.innerSize.width) + 'px',\n threshold: 0,\n };\n var callback =\n funcCallback ||\n function (entries, observer) {\n entries.forEach(function (entry) {\n if (entry.isIntersecting) {\n var img = entry.target;\n\n self.loadImg(img);\n\n self.observer.unobserve(img);\n }\n });\n };\n\n if (window.IntersectionObserver) {\n self.observer = new IntersectionObserver(callback, options);\n\n for (let i = 0; i < targetArr.length; i++) {\n self.observer.observe(targetArr[i]);\n }\n } else {\n for (let i = 0; i < targetArr.length; i++) {\n var img = targetArr[i];\n\n self.loadImg(img);\n }\n }\n }\n };\n\n Carousel.prototype.getIsVerticalOption = function () {\n var self = this;\n return self.responsiveOption != null && self.responsiveOption.isVertical != null ? self.responsiveOption.isVertical : self.options.isVertical;\n };\n\n Carousel.prototype.removeDirectionCarouselClass = function () {\n this.wrap.classList.remove('carousel-vertical');\n this.wrap.classList.remove('carousel-horizontal');\n };\n\n Carousel.prototype.addDirectionCarouselClass = function () {\n var isVertical = this.getIsVerticalOption();\n this.wrap.classList.add(isVertical ? 'carousel-vertical' : 'carousel-horizontal');\n };\n\n window.Carousel = Carousel;\n\n function createComponent(tagName, attrs = {}) {\n if (clonesForCreate[tagName] == null) {\n clonesForCreate[tagName] = document.createElement(tagName);\n for (const [attr, value] of Object.entries(attrs)) {\n clonesForCreate[tagName].setAttribute(attr, value);\n }\n }\n\n return clonesForCreate[tagName].cloneNode();\n }\n\n function closest(element, selector) {\n var parent = element,\n matchesSelector;\n\n if (parent == null) {\n return null;\n }\n\n matchesSelector = parent.matches || parent.webkitMatchesSelector || parent.mozMatchesSelector || parent.msMatchesSelector;\n\n while (parent != document.body && parent != document && parent != null) {\n if (typeof selector === 'string') {\n if (matchesSelector.bind(parent)(selector) === true) {\n return parent;\n }\n } else {\n if (parent == selector) {\n return parent;\n }\n }\n\n parent = parent.parentNode;\n }\n\n return null;\n }\n\n function getMediaQuery(value) {\n return window.matchMedia('(min-width:' + value + 'px)');\n }\n\n function smoothScroll(element, scrollValue, scrollEnd, isVertical) {\n var timeLapsed = 0,\n start,\n speed = 700,\n percentage,\n position;\n var distance = scrollEnd - scrollValue;\n\n function go(timestamp) {\n var finish = true;\n\n if (!start) {\n start = timestamp;\n }\n\n timeLapsed += timestamp - start;\n percentage = speed === 0 ? 0 : timeLapsed / speed;\n percentage = percentage > 1 ? 1 : percentage;\n position = Math.floor(scrollValue + distance * animateValue(percentage));\n\n if (position != scrollEnd) {\n finish = false;\n start = timestamp;\n }\n\n element.scrollTo(!isVertical && position, isVertical && position);\n\n if (finish === false) {\n window.requestAnimationFrame(go, element);\n }\n }\n\n window.requestAnimationFrame(go, element);\n }\n\n function debounce(func, ms) {\n var timer;\n\n return function () {\n if (timer != null) {\n clearTimeout(timer);\n }\n\n var vm = this;\n var args = arguments;\n\n timer = setTimeout(function () {\n func.apply(vm, args);\n }, ms);\n };\n }\n\n //easeInOutCubic\n function animateValue(time) {\n return time < 0.5 ? 4 * time * time * time : (time - 1) * (2 * time - 2) * (2 * time - 2) + 1;\n }\n})(window);\n", "\uFEFFvar carouselService = function ($q) {\n var service = this;\n\n var imageLoad = function (imageSrc) {\n var deferItem = $q.defer(),\n imageFake = new Image();\n\n if (imageSrc == null) return deferItem.promise;\n\n imageFake.addEventListener('load', function () {\n deferItem.resolve(true);\n });\n\n imageFake.addEventListener('error', function () {\n deferItem.resolve();\n });\n\n imageFake.src = imageSrc;\n\n return deferItem.promise;\n };\n\n var checkNeedLoad = function (image) {\n return !image.complete || typeof image.naturalWidth === 'undefined' || image.naturalWidth === 0;\n };\n\n service.waitLoadImages = function (images, carouselOptions) {\n var deferMain = $q.defer(),\n promises = [];\n\n var countLoadImageInit = carouselOptions.visibleMax;\n var countLoadImage;\n\n if (countLoadImageInit != null) {\n countLoadImage = images.length - 1 <= countLoadImageInit ? images.length - 1 : countLoadImageInit;\n } else {\n countLoadImage = images.length - 1;\n }\n\n for (var i = 0; i <= countLoadImage; i++) {\n if (checkNeedLoad(images[i]) === true) {\n promises.push(imageLoad(images[i].src || images[i].dataset.src));\n }\n\n if ((images[i].src == null || images[i].src.length === 0) && images[i].dataset.src != null && images[i].dataset.src.length > 0) {\n images[i].src = images[i].dataset.src;\n }\n }\n\n if (carouselOptions.auto === true && countLoadImageInit != null) {\n for (var k = images.length - 1; k >= images.length - countLoadImageInit; k--) {\n if (checkNeedLoad(images[k]) === true) {\n promises.push(imageLoad(images[k].src || images[k].dataset.src));\n }\n\n if ((images[k].src == null || images[k].src.length === 0) && images[k].dataset.src != null && images[k].dataset.src.length > 0) {\n images[k].src = images[k].dataset.src;\n }\n }\n }\n\n if (promises.length === 0) {\n promises.push(deferMain.promise);\n deferMain.resolve();\n }\n\n return $q.all(promises);\n };\n};\n\ncarouselService.$inject = ['$q'];\n\nexport default carouselService;\n", "function carouselDirective($compile, $document, $window, carouselDefault) {\n return {\n restrict: 'A',\n scope: {\n isVertical: '&',\n scrollCount: '&',\n nav: '&',\n dots: '&',\n speed: '&',\n auto: '&',\n autoPause: '&',\n indexActive: '=?',\n prevIcon: '@',\n nextIcon: '@',\n filterFn: '&',\n prevIconVertical: '@',\n nextIconVertical: '@',\n prevClass: '@',\n nextClass: '@',\n dotsClass: '@',\n dotsItemClass: '@',\n dotsItemSelectedClass: '@',\n dotsItemInnerSelectedClass: '@',\n visibleMax: '&',\n visibleMin: '&',\n itemSelectClass: '@',\n itemActiveClass: '@',\n carouselClass: '@',\n stretch: '&',\n navPosition: '@',\n initOnLoad: ' 0) {\n if (children.length === 1 && children[0].classList.contains('carousel-inner')) {\n children = children[0].children;\n }\n if (children != null) {\n for (var i = 0, len = children.length; i < len; i++) {\n children[i].carouselItemData = children[i].carouselItemData || {};\n children[i].carouselItemData.originalClone = children[i].cloneNode(true);\n }\n }\n }\n }\n memoryItemsAsClone();\n if ($document[0].readyState !== 'complete') {\n $window.addEventListener('load', function () {\n _initWrap();\n });\n } else {\n _initWrap();\n }\n }\n };\n}\ncarouselDirective.$inject = [\"$compile\", \"$document\", \"$window\", \"carouselDefault\"];\nfunction carouselImgDirective($parse) {\n return {\n require: '^?carousel',\n link: function (scope, element, attrs, carouselCtrl) {\n if (carouselCtrl != null) {\n var callbackParsed = $parse(attrs.carouselImg);\n var callback = function (img, carouselItem) {\n return callbackParsed(scope, {\n img: img,\n carouselItem: carouselItem\n });\n };\n var carouselImgId = carouselCtrl.addCarouselImg({\n callback: callback\n });\n attrs.$set('dataCarouselImgId', carouselImgId);\n }\n }\n };\n}\ncarouselImgDirective.$inject = [\"$parse\"];\nexport { carouselDirective, carouselImgDirective };", "\uFEFFvar CarouselCtrl = function ($element, $scope, $q, carouselService, $timeout) {\n var ctrl = this;\n var carouselImgList = {};\n var deferList = [];\n\n ctrl.init = function () {\n var element = $element[0];\n return carouselService.waitLoadImages(element.querySelectorAll('img'), ctrl.carouselOptions).then(function () {\n setTimeout(function () {\n var carouselEl = element;\n\n if (ctrl.initilazeTo != null) {\n carouselEl = carouselEl.querySelector(ctrl.initilazeTo);\n }\n /* eslint-disable no-undef */\n ctrl.carouselNative = new Carousel(carouselEl, ctrl.carouselOptions).init();\n\n if (deferList.length > 0) {\n deferList.forEach(function (item) {\n item.resolve(ctrl);\n });\n }\n\n $scope.$digest();\n }, 0);\n });\n };\n\n ctrl.addCarouselImg = function (carouselImg) {\n var id = ctrl.generateCarouselImgId();\n carouselImgList[id] = carouselImg;\n return id;\n };\n\n ctrl.callFnFromCarouselImg = function (img, carouselItem) {\n var id = img.dataset.carouselImgId;\n if (carouselImgList[id] != null) {\n carouselImgList[id].callback();\n }\n };\n\n ctrl.generateCarouselImgId = function () {\n return 'carouselImgId_' + Math.random();\n };\n\n ctrl.whenCarouselInit = function () {\n var defer = $q.defer();\n if (ctrl.carouselNative == null) {\n deferList.push(defer);\n } else {\n defer.resolve(ctrl);\n }\n\n return defer.promise;\n };\n};\n\nCarouselCtrl.$inject = ['$element', '$scope', '$q', 'carouselService', '$timeout'];\n\nexport default CarouselCtrl;\n", "\uFEFFimport './styles/carousel.scss';\n\nimport './carouselNative.js';\n\nimport carouselService from './services/carouselService.js';\nimport { carouselDirective, carouselImgDirective } from './directives/carouselDirectives.js';\nimport CarouselCtrl from './controllers/carouselController.js';\n\nconst moduleName = 'carousel';\n\nangular\n .module(moduleName, [])\n .directive('carousel', carouselDirective)\n .directive('carouselImg', carouselImgDirective)\n .service('carouselService', carouselService)\n .controller('CarouselCtrl', CarouselCtrl)\n .constant('carouselDefault', {\n isVertical: false,\n scrollCount: 1,\n nav: true,\n dots: false,\n speed: 600,\n auto: false,\n autoPause: 5000,\n indexActive: 0,\n prevIcon: 'icon-left-open-after',\n nextIcon: 'icon-right-open-after',\n prevIconVertical: 'icon-up-open-after',\n nextIconVertical: 'icon-down-open-after',\n prevClass: 'cs-l-1-interactive',\n nextClass: 'cs-l-1-interactive',\n dotsClass: undefined,\n dotsItemClass: 'cs-bg-i-1',\n dotsItemSelectedClass: null,\n dotsItemInnerSelectedClass: null,\n visibleMax: null,\n visibleMin: null,\n itemSelectClass: null,\n carouselClass: null,\n stretch: true,\n navPosition: 'inside', //inside or outside\n responsive: null,\n });\n\nexport default moduleName;\n", ".rating {\r\n display: inline-block;\r\n padding: 0;\r\n margin: 0;\r\n list-style: none;\r\n font-size: 1.125rem;\r\n line-height: 1;\r\n direction: rtl;\r\n}\r\n\r\n.rating-item {\r\n display: inline-block;\r\n vertical-align: middle;\r\n padding: 0;\r\n margin: 0;\r\n cursor: pointer;\r\n color: #d1d1d1;\r\n line-height: 1;\r\n}\r\n\r\n.rating-readonly .rating-item {\r\n cursor: default;\r\n}\r\n\r\n.rating-item-selected {\r\n color: #fec419;\r\n}\r\n\r\n/* .rating-item-hover {\n color: #db2929;\n} */\r\n.rating:not(.rating-readonly) > li:hover::before,\r\n.rating:not(.rating-readonly) > li:hover ~ li::before {\r\n color: #db2929;\r\n}", "\uFEFFfunction ratingDirective() {\n return {\n require: ['rating', '?ngModel'],\n restrict: 'A',\n scope: true,\n controller: 'RatingCtrl',\n controllerAs: 'rating',\n bindToController: true,\n link: function (scope, element, attrs, ctrls) {\n const rating = ctrls[0];\n const ngModel = ctrls[1];\n const childs = element[0].children;\n\n rating.max = parseInt(attrs.max) || 5;\n rating.readonly = attrs.readonly != null ? attrs.readonly === 'true' : false;\n\n if (rating.readonly) {\n element[0].classList.add(`rating-readonly`);\n }\n\n rating.current = parseInt(attrs.current);\n rating.url = attrs.url;\n rating.objId = attrs.objId;\n rating.rateBinding = attrs.rateBinding;\n\n for (var i = 0; i <= childs.length - 1; i++) {\n childs[i].setAttribute(`data-index`, childs.length - i);\n rating.items[i] = {\n isSelected: rating.current - 1 < i,\n };\n }\n\n if (ngModel != null) {\n if (isNaN(ngModel.$modelValue) && isNaN(rating.current) === false && rating.current > 0) {\n ngModel.$setViewValue(rating.current);\n }\n ngModel.$render = () => {\n if (isNaN(ngModel.$modelValue) === false) {\n rating.current = ngModel.$modelValue;\n }\n };\n }\n\n if (rating.readonly === false) {\n element[0].addEventListener('click', function (event) {\n const item = event.target.closest('.rating-item');\n if (item != null) {\n if (ngModel != null) {\n ngModel.$setViewValue(parseInt(item.getAttribute('data-index')));\n }\n const promise = rating.select(parseInt(item.getAttribute('data-index')));\n if (promise) {\n promise.then(() => {\n element[0].classList.add(`rating-readonly`);\n });\n } else {\n scope.$apply();\n }\n }\n });\n }\n },\n };\n}\n\nexport { ratingDirective };\n", "function RatingCtrl($http, $q) {\n var ctrl = this;\n ctrl.items = [];\n ctrl.select = function (val) {\n if (ctrl.readonly === false) {\n ctrl.current = val;\n for (var i = 0; i < val; i++) {\n ctrl.items[i].isSelected = true;\n }\n if (ctrl.url) {\n return $http.post(ctrl.url, {\n objId: ctrl.objId,\n rating: ctrl.current\n }).then(function (response) {\n return ctrl.current = response.data;\n });\n } else {\n return $q.resolve(ctrl.current);\n }\n }\n };\n}\nRatingCtrl.$inject = [\"$http\", \"$q\"];\nexport default RatingCtrl;", "\uFEFFimport './styles/rating.scss';\n\nimport { ratingDirective } from './directives/ratingDirectives.js';\nimport RatingCtrl from './controllers/ratingController.js';\n\nconst moduleName = 'rating';\n\nangular.module(moduleName, []).controller('RatingCtrl', RatingCtrl).directive('rating', ratingDirective);\n\nexport default moduleName;\n", "/*!\n * screenfull\n * v3.3.2 - 2017-10-27\n * (c) Sindre Sorhus; MIT License\n */\n(function () {\n 'use strict';\n\n var document = typeof window !== 'undefined' && typeof window.document !== 'undefined' ? window.document : {};\n var isCommonjs = typeof module !== 'undefined' && module.exports;\n var keyboardAllowed = typeof Element !== 'undefined' && 'ALLOW_KEYBOARD_INPUT' in Element;\n\n var fn = (function () {\n var val;\n\n var fnMap = [\n ['requestFullscreen', 'exitFullscreen', 'fullscreenElement', 'fullscreenEnabled', 'fullscreenchange', 'fullscreenerror'],\n // New WebKit\n [\n 'webkitRequestFullscreen',\n 'webkitExitFullscreen',\n 'webkitFullscreenElement',\n 'webkitFullscreenEnabled',\n 'webkitfullscreenchange',\n 'webkitfullscreenerror',\n ],\n // Old WebKit (Safari 5.1)\n [\n 'webkitRequestFullScreen',\n 'webkitCancelFullScreen',\n 'webkitCurrentFullScreenElement',\n 'webkitCancelFullScreen',\n 'webkitfullscreenchange',\n 'webkitfullscreenerror',\n ],\n [\n 'mozRequestFullScreen',\n 'mozCancelFullScreen',\n 'mozFullScreenElement',\n 'mozFullScreenEnabled',\n 'mozfullscreenchange',\n 'mozfullscreenerror',\n ],\n ['msRequestFullscreen', 'msExitFullscreen', 'msFullscreenElement', 'msFullscreenEnabled', 'MSFullscreenChange', 'MSFullscreenError'],\n ];\n\n var i = 0;\n var l = fnMap.length;\n var ret = {};\n\n for (; i < l; i++) {\n val = fnMap[i];\n if (val && val[1] in document) {\n for (i = 0; i < val.length; i++) {\n ret[fnMap[0][i]] = val[i];\n }\n return ret;\n }\n }\n\n return false;\n })();\n\n var eventNameMap = {\n change: fn.fullscreenchange,\n error: fn.fullscreenerror,\n };\n\n var screenfull = {\n request: function (elem) {\n var request = fn.requestFullscreen;\n\n elem = elem || document.documentElement;\n\n // Work around Safari 5.1 bug: reports support for\n // keyboard in fullscreen even though it doesn't.\n // Browser sniffing, since the alternative with\n // setTimeout is even worse.\n if (/ Version\\/5\\.1(?:\\.\\d+)? Safari\\//.test(navigator.userAgent)) {\n elem[request]();\n } else {\n elem[request](keyboardAllowed && Element.ALLOW_KEYBOARD_INPUT);\n }\n },\n exit: function () {\n document[fn.exitFullscreen]();\n },\n toggle: function (elem) {\n if (this.isFullscreen) {\n this.exit();\n } else {\n this.request(elem);\n }\n },\n onchange: function (callback) {\n this.on('change', callback);\n },\n onerror: function (callback) {\n this.on('error', callback);\n },\n on: function (event, callback) {\n var eventName = eventNameMap[event];\n if (eventName) {\n document.addEventListener(eventName, callback, false);\n }\n },\n off: function (event, callback) {\n var eventName = eventNameMap[event];\n if (eventName) {\n document.removeEventListener(eventName, callback, false);\n }\n },\n raw: fn,\n };\n\n if (!fn) {\n if (isCommonjs) {\n module.exports = false;\n } else {\n window.screenfull = false;\n }\n\n return;\n }\n\n Object.defineProperties(screenfull, {\n isFullscreen: {\n get: function () {\n return Boolean(document[fn.fullscreenElement]);\n },\n },\n element: {\n enumerable: true,\n get: function () {\n return document[fn.fullscreenElement];\n },\n },\n enabled: {\n enumerable: true,\n get: function () {\n // Coerce to boolean in case of old WebKit\n return Boolean(document[fn.fullscreenEnabled]);\n },\n },\n });\n\n if (isCommonjs) {\n module.exports = screenfull;\n } else {\n window.screenfull = screenfull;\n }\n})();\n", "/*! threesixty-slider version 2.5.2 */\n/* http://github.com/etetlow/threesixty-slider.git */\n\n/*!\n * 360 degree Image Slider v2.5.2\n * http://gaurav.jassal.me\n * http://etetlow.co.uk\n * Copyright 2015, gaurav@jassal.me\n * Dual licensed under the MIT or GPL Version 3 licenses.\n *\n */\n(function ($) {\n 'use strict';\n /**\n * @class ThreeSixty\n * **The ThreeSixty slider class**.\n *\n * This as jQuery plugin to create 360 degree product image slider.\n * The plugin is full customizable with number of options provided. The plugin\n * have the power to display images in any angle 360 degrees. This feature can be\n * used successfully in many use cases e.g. on an e-commerce site to help customers\n * look products in detail, from any angle they desire.\n *\n * **Features**\n *\n * - Smooth Animation\n * - Plenty of option parameters for customization\n * - Api interaction\n * - Simple mouse interaction\n * - Custom behavior tweaking\n * - Support for touch devices\n * - Easy to integrate\n * - No flash\n *\n * Example code:\n * var product1 = $('.product1').ThreeSixty({\n * totalFrames: 72,\n * endFrame: 72,\n * currentFrame: 1,\n * imgList: '.threesixty_images',\n * progress: '.spinner',\n * imagePath:'/assets/product1/',\n * filePrefix: 'ipod-',\n * ext: '.jpg',\n * height: 265,\n * width: 400,\n * navigation: true\n * });\n * **Note:** There are loads other options that you can override to customize\n * this plugin.\n\n * @extends jQuery\n * @singleton\n * @param {String} [el] jQuery selector string for the parent container\n * @param {Object} [options] An optional config object\n *\n * @return this\n */\n $.ThreeSixty = function (el, options) {\n // To avoid scope issues, use 'base' instead of 'this'\n // to reference this class from internal events and functions.\n var base = this,\n AppConfig,\n frames = [],\n VERSION = '2.5.2';\n // Access to jQuery and DOM versions of element\n /**\n * @property {$el}\n * jQuery Dom node attached to the slider inherits all jQuery public functions.\n */\n base.$el = $(el);\n base.el = el;\n // Add a reverse reference to the DOM object\n base.$el.data('ThreeSixty', base);\n /**\n * @method init\n * The function extends the user options with default settings for the\n * slider and initilize the slider.\n * **Style Override example**\n *\n * var product1 = $('.product1').ThreeSixty({\n * totalFrames: 72,\n * endFrame: 72,\n * currentFrame: 1,\n * imgList: '.threesixty_images',\n * progress: '.spinner',\n * imagePath:'/assets/product1/',\n * filePrefix: 'ipod-',\n * ext: '.jpg',\n * height: 265,\n * width: 400,\n * navigation: true,\n * styles: {\n * border: 2px solide #b4b4b4,\n * background: url(http://example.com/images/loader.gif) no-repeat\n * }\n * });\n */\n base.init = function () {\n AppConfig = $.extend({}, $.ThreeSixty.defaultOptions, options);\n if (AppConfig.disableSpin) {\n AppConfig.currentFrame = 1;\n AppConfig.endFrame = 1;\n }\n base.initProgress();\n base.loadImages();\n };\n\n /*\n * @method maxHeight\n * Function calculates the maximum possible height of the parent element\n *\n */\n\n base.maxHeight = function (container) {\n var offset = base.el.offset(),\n top = offset.top,\n yOffset = window.pageYOffset,\n total = $(window).height(),\n distance = top - yOffset,\n maxHeight = total - distance;\n\n if (yOffset === 0 || top === 'undefined') {\n maxHeight = 'undefined';\n }\n return maxHeight;\n };\n\n /* @method resize\n * Function to make sure the slider fits.\n */\n base.resize = function () {\n var aw = AppConfig.width,\n ah = AppConfig.height,\n lr = ah / aw,\n pr = aw / ah,\n pw = base.el.parent().width(),\n ph = base.el.parent().height(),\n maxHeight = base.maxHeight(),\n altWidth = $(window).width(),\n altHeight = $(window).height(),\n sum = pw * lr;\n\n if (pw > altWidth) {\n pw = altWidth;\n }\n if (ph > altHeight) {\n ph = altHeight;\n }\n if (maxHeight === 0 || maxHeight === 'undefined') {\n maxHeight = altHeight;\n }\n if (pw * lr > maxHeight) {\n base.$el.css({\n height: maxHeight + 'px',\n width: maxHeight * pr + 'px',\n });\n } else {\n base.$el.css({\n width: pw + 'px',\n height: sum + 'px',\n });\n }\n };\n\n /*\n * @method responsive\n * Function calculates and set responsive height and width\n *\n */\n\n base.responsive = function () {\n if (AppConfig.responsive) {\n var aw = AppConfig.width,\n ah = AppConfig.height,\n lr = ah / aw,\n pr = aw / ah,\n pw = base.el.parent().width(),\n ph = base.el.parent().height(),\n maxHeight = base.maxHeight(),\n altWidth = $(window).width(),\n altHeight = $(window).height();\n\n if (pw > altWidth) {\n pw = altWidth;\n }\n if (ph > altHeight) {\n ph = altHeight;\n }\n if (maxHeight === 0 || maxHeight === 'undefined') {\n maxHeight = altHeight;\n }\n if (pw * lr > maxHeight) {\n base.$el.css({\n height: maxHeight + 'px',\n width: maxHeight * pr + 'px',\n });\n } else {\n base.$el.css({\n width: '100%',\n height: pw * lr + 'px',\n });\n }\n }\n };\n\n /**\n * @method fSBackgroundColor\n * Sets background color when fullscreen\n */\n base.fSBackgroundColor = function () {\n var bgColor = AppConfig.fSBackgroundColor;\n return bgColor;\n };\n\n /**\n * @method fullscreen\n * Creates a fullscreen capability if set to true in settings\n */\n base.fullscreen = function () {\n var aw = AppConfig.width,\n ah = AppConfig.height,\n lr = ah / aw,\n pr = aw / ah,\n wsh = screen.height,\n wsw = screen.width,\n bgColor = base.fSBackgroundColor;\n\n if (AppConfig.fullscreen) {\n var target = base.$el[0];\n if (screenfull.enabled) {\n screenfull.toggle(target);\n screenfull.onchange(function () {\n if (screenfull.isFullscreen) {\n $('.btnFull span').removeClass('icon-fullscreen').addClass('icon-resize');\n if (wsw * lr > wsh) {\n base.$el.css({\n height: wsh + 'px',\n width: wsh * pr + 'px',\n backgroundColor: bgColor,\n });\n } else {\n base.$el.css({\n width: wsw + 'px',\n height: wsw * lr + 'px',\n backgroundColor: bgColor,\n });\n }\n } else {\n $('.btnFull span').removeClass('icon-resize').addClass('icon-fullscreen');\n base.$el.css({\n width: aw + 'px',\n height: ah + 'px',\n backgroundColor: '',\n });\n base.resize();\n }\n });\n }\n }\n };\n\n /**\n * @method initProgress\n * The function sets initial styles and start the progress indicator\n * to show loading of images.\n *\n * @private\n */\n base.initProgress = function () {\n base.$el.css({\n width: AppConfig.width + 'px',\n height: AppConfig.height + 'px',\n 'background-image': 'none !important',\n });\n if (AppConfig.styles) {\n base.$el.css(AppConfig.styles);\n }\n\n base.resize();\n\n base.$el.find(AppConfig.progress).css({\n marginTop: AppConfig.height / 2 - 15 + 'px',\n });\n base.$el.find(AppConfig.progress).fadeIn('slow');\n base.$el.find(AppConfig.imgList).hide();\n };\n\n /**\n * @method loadImages\n * @private\n * The function asynchronously loads images and inject into the slider.\n */\n base.loadImages = function () {\n var li, imageName, image, host, baseIndex;\n li = document.createElement('li');\n baseIndex = AppConfig.zeroBased ? 0 : 1;\n imageName = !AppConfig.imgArray\n ? AppConfig.domain +\n AppConfig.imagePath +\n AppConfig.filePrefix +\n base.zeroPad(AppConfig.loadedImages + baseIndex) +\n AppConfig.ext +\n ('?' + new Date().getTime())\n : AppConfig.imgArray[AppConfig.loadedImages];\n image = $('').attr('src', imageName).attr('alt', '360 Slider Images').addClass('previous-image normal').appendTo(li);\n\n frames.push(image);\n\n base.$el.find(AppConfig.imgList).append(li);\n\n base.imageLoadNext();\n };\n\n /**\n * @method imageLoadNext\n * @private\n * The function load next image or call imagesLoaded()\n */\n base.imageLoadNext = function () {\n AppConfig.loadedImages += 1;\n if (AppConfig.loadedImages >= AppConfig.totalFrames) {\n base.imagesLoaded();\n } else {\n base.loadImages();\n }\n };\n\n /**\n * @method imagesLoaded\n * @private\n * The function gets triggers once the image is loaded. We also update\n * the progress percentage in this function.\n */\n base.imagesLoaded = function () {\n var loaded = 0;\n $.each(frames, function (i, image) {\n $(image).on('load', function () {\n loaded += 1;\n $(AppConfig.progress + ' span').text(Math.floor((loaded / AppConfig.totalFrames) * 100) + '%');\n if (loaded >= AppConfig.totalFrames) {\n if (AppConfig.disableSpin) {\n frames[0].removeClass('previous-image').addClass('current-image');\n }\n $(AppConfig.progress).fadeOut('slow', function () {\n $(this).hide();\n base.showImages();\n base.showNavigation();\n });\n }\n });\n });\n };\n\n /**\n * @method showImages\n * @private\n * This function is called when all the images are loaded.\n * **The function does following operations**\n * - Removes background image placeholder\n * - Displays the 360 images\n * - Initilizes mouse intraction events\n */\n base.showImages = function () {\n base.$el.find('.txtC').fadeIn();\n base.$el.find(AppConfig.imgList).fadeIn();\n base.ready = true;\n AppConfig.ready = true;\n\n if (AppConfig.drag) {\n base.initEvents();\n }\n base.refresh();\n base.initPlugins();\n AppConfig.onReady();\n\n setTimeout(function () {\n base.resize();\n }, 50);\n };\n\n /** @method initPlugins\n * The function to initilize external plugins\n */\n base.initPlugins = function () {\n $.each(AppConfig.plugins, function (i, plugin) {\n if (typeof $[plugin] === 'function') {\n $[plugin].call(base, base.$el, AppConfig);\n } else {\n throw new Error(plugin + ' not available.');\n }\n });\n };\n\n /**\n * @method showNavigation\n * Creates a navigation panel if navigation is set to true in the\n * settings.\n */\n base.showNavigation = function () {\n if (AppConfig.navigation && !AppConfig.navigation_init) {\n var nav_bar, next_btn, next, previous_btn, previous, play_stop_btn, play_stop, full_btn, full, position;\n\n if (AppConfig.position) {\n position = AppConfig.position;\n nav_bar = $('
').attr('class', 'nav_bar ' + position);\n } else {\n nav_bar = $('
').attr('class', 'btnPrev butn');\n previous = $('').attr('class', 'icon-back');\n play_stop_btn = $('
').attr('class', 'btnPlay butn');\n play_stop = $('').attr('class', 'icon-play');\n next_btn = $('
').attr('class', 'btnNext butn');\n next = $('').attr('class', 'icon-forward');\n\n previous_btn.append(previous);\n play_stop_btn.append(play_stop);\n next_btn.append(next);\n nav_bar.append(previous_btn);\n nav_bar.append(play_stop_btn);\n nav_bar.append(next_btn);\n\n if (AppConfig.fullscreen) {\n full_btn = $('
').attr('class', 'btnFull butn');\n full = $('').attr('class', 'icon-fullscreen');\n full_btn.append(full);\n nav_bar.append(full_btn);\n }\n\n base.$el.prepend(nav_bar);\n\n next_btn.bind('mousedown touchstart', base.next);\n previous_btn.bind('mousedown touchstart', base.previous);\n play_stop_btn.bind('mousedown touchstart', base.play_stop);\n\n if (AppConfig.fullscreen) {\n full_btn.bind('mousedown touchstart', base.fullscreen);\n }\n AppConfig.navigation_init = true;\n }\n };\n\n /**\n * @method play_stop\n * @private\n * Function toggles the autoplay rotation of 360 slider\n * @param {Object} [event] jQuery events object.\n *\n */\n\n base.play_stop = function (event) {\n event.preventDefault();\n\n if (!AppConfig.autoplay) {\n AppConfig.autoplay = true;\n AppConfig.play = setInterval(base.moveToNextFrame, AppConfig.playSpeed);\n $('.btnPlay span').removeClass('icon-play').addClass('icon-pause');\n } else {\n AppConfig.autoplay = false;\n $('.btnPlay span').removeClass('icon-pause').addClass('icon-play');\n clearInterval(AppConfig.play);\n AppConfig.play = null;\n }\n };\n\n /**\n * @method next\n * Using this function you can rotate 360 to next 5 frames.\n * @param {Object} [event] jQuery events object.\n *\n */\n\n base.next = function (event) {\n if (event) {\n event.preventDefault();\n }\n if (AppConfig.autoplayDirection === 1) {\n AppConfig.endFrame -= 5;\n } else {\n AppConfig.endFrame += 5;\n }\n base.refresh();\n };\n\n /**\n * @method previous\n * Using this function you can rotate 360 to previous 5 frames.\n * @param {Object} [event] jQuery events object.\n *\n */\n base.previous = function (event) {\n if (event) {\n event.preventDefault();\n }\n if (AppConfig.autoplayDirection === 1) {\n AppConfig.endFrame += 5;\n } else {\n AppConfig.endFrame -= 5;\n }\n base.refresh();\n };\n\n /**\n * @method play\n * You are start the auto rotaion for the slider with this function.\n *\n */\n base.play = function (speed, direction) {\n var _speed = speed || AppConfig.playSpeed;\n var _direction = direction || AppConfig.autoplayDirection;\n AppConfig.autoplayDirection = _direction;\n\n if (!AppConfig.autoplay) {\n AppConfig.autoplay = true;\n AppConfig.play = setInterval(base.moveToNextFrame, _speed);\n }\n };\n\n /**\n * @method stop\n * You can stop the auto rotation of the 360 slider with this function.\n *\n */\n\n base.stop = function () {\n if (AppConfig.autoplay) {\n AppConfig.autoplay = false;\n clearInterval(AppConfig.play);\n AppConfig.play = null;\n }\n };\n\n /**\n * @method endFrame\n * @private\n * Function animates to previous frame\n *\n */\n base.moveToNextFrame = function () {\n if (AppConfig.autoplayDirection === 1) {\n AppConfig.endFrame -= 1;\n } else {\n AppConfig.endFrame += 1;\n }\n base.refresh();\n };\n\n /**\n * @method gotoAndPlay\n * @public\n * Function animates to previous frame\n *\n */\n base.gotoAndPlay = function (n) {\n if (AppConfig.disableWrap) {\n AppConfig.endFrame = n;\n base.refresh();\n } else {\n // Since we could be looped around grab the multiplier\n var multiplier = Math.ceil(AppConfig.endFrame / AppConfig.totalFrames);\n if (multiplier === 0) {\n multiplier = 1;\n }\n\n // Figure out the quickest path to the requested frame\n var realEndFrame = multiplier > 1 ? AppConfig.endFrame - (multiplier - 1) * AppConfig.totalFrames : AppConfig.endFrame;\n\n var currentFromEnd = AppConfig.totalFrames - realEndFrame;\n\n // Jump past end if it's faster\n var newEndFrame = 0;\n if (n - realEndFrame > 0) {\n // Faster to move the difference ahead?\n if (n - realEndFrame < realEndFrame + (AppConfig.totalFrames - n)) {\n newEndFrame = AppConfig.endFrame + (n - realEndFrame);\n } else {\n newEndFrame = AppConfig.endFrame - (realEndFrame + (AppConfig.totalFrames - n));\n }\n } else {\n // Faster to move the distance back?\n if (realEndFrame - n < currentFromEnd + n) {\n newEndFrame = AppConfig.endFrame - (realEndFrame - n);\n } else {\n newEndFrame = AppConfig.endFrame + (currentFromEnd + n);\n }\n }\n\n // Now set the end frame\n if (realEndFrame !== n) {\n AppConfig.endFrame = newEndFrame;\n base.refresh();\n }\n }\n };\n\n /**\n * @method initEvents\n * @private\n * Function initilizes all the mouse and touch events for 360 slider movement.\n *\n */\n base.initEvents = function () {\n base.$el.bind('mousedown mousemove click', function (event) {\n event.preventDefault();\n if (event.type === 'mousedown' && event.which === 1) {\n AppConfig.pointerStartPosX = base.getPointerEvent(event).pageX;\n AppConfig.dragging = true;\n AppConfig.onDragStart(AppConfig.currentFrame);\n }\n });\n\n base.$el.bind('touchstart touchmove touchend', function (event) {\n if (event.type === 'touchstart') {\n AppConfig.pointerStartPosX = base.getPointerEvent(event).pageX;\n AppConfig.dragging = true;\n AppConfig.onDragStart(AppConfig.currentFrame);\n } else if (event.type === 'touchmove') {\n base.trackPointer(event);\n } else if (event.type === 'touchend') {\n AppConfig.dragging = false;\n AppConfig.onDragStop(AppConfig.endFrame);\n }\n });\n\n $(document).bind('mouseup', function (event) {\n AppConfig.dragging = false;\n AppConfig.onDragStop(AppConfig.endFrame);\n $(this).css('cursor', 'none');\n });\n\n $(window).bind('resize', function (event) {\n base.responsive();\n });\n\n $(document).bind('mousemove', function (event) {\n if (AppConfig.dragging) {\n event.preventDefault();\n if (base.browser.isIE && AppConfig.showCursor) {\n base.$el.css('cursor', 'url(assets/images/hand_closed.png), auto');\n }\n } else {\n if (!base.browser.isIE && AppConfig.showCursor) {\n base.$el.css('cursor', 'url(assets/images/hand_open.png), auto');\n }\n }\n base.trackPointer(event);\n });\n\n $(window).resize(function () {\n base.responsive();\n });\n };\n\n /**\n * @method getPointerEvent\n * @private\n * Function returns touch pointer events\n *\n * @params {Object} [event]\n */\n base.getPointerEvent = function (event) {\n return event.originalEvent.targetTouches ? event.originalEvent.targetTouches[0] : event;\n };\n\n /**\n * @method trackPointer\n * @private\n * Function calculates the distance between the start pointer and end pointer/\n *\n * @params {Object} [event]\n */\n base.trackPointer = function (event) {\n if (AppConfig.ready && AppConfig.dragging) {\n AppConfig.pointerEndPosX = base.getPointerEvent(event).pageX;\n if (AppConfig.monitorStartTime < new Date().getTime() - AppConfig.monitorInt) {\n AppConfig.pointerDistance = AppConfig.pointerEndPosX - AppConfig.pointerStartPosX;\n if (AppConfig.pointerDistance > 0) {\n AppConfig.endFrame =\n AppConfig.currentFrame +\n Math.ceil((AppConfig.totalFrames - 1) * AppConfig.speedMultiplier * (AppConfig.pointerDistance / base.$el.width()));\n } else {\n AppConfig.endFrame =\n AppConfig.currentFrame +\n Math.floor((AppConfig.totalFrames - 1) * AppConfig.speedMultiplier * (AppConfig.pointerDistance / base.$el.width()));\n }\n\n if (AppConfig.disableWrap) {\n AppConfig.endFrame = Math.min(AppConfig.totalFrames - (AppConfig.zeroBased ? 1 : 0), AppConfig.endFrame);\n AppConfig.endFrame = Math.max(AppConfig.zeroBased ? 0 : 1, AppConfig.endFrame);\n }\n base.refresh();\n AppConfig.monitorStartTime = new Date().getTime();\n AppConfig.pointerStartPosX = base.getPointerEvent(event).pageX;\n }\n }\n };\n\n /**\n * @method refresh\n * @public\n * Function refeshes the timer and set interval for render cycle.\n *\n */\n\n base.refresh = function () {\n if (AppConfig.ticker === 0) {\n AppConfig.ticker = setInterval(base.render, Math.round(1000 / AppConfig.framerate));\n }\n };\n\n /**\n * @method refresh\n * @private\n * Function render the animation frames on the screen with easing effect.\n */\n\n base.render = function () {\n var frameEasing;\n if (AppConfig.currentFrame !== AppConfig.endFrame) {\n frameEasing =\n AppConfig.endFrame < AppConfig.currentFrame\n ? Math.floor((AppConfig.endFrame - AppConfig.currentFrame) * 0.1)\n : Math.ceil((AppConfig.endFrame - AppConfig.currentFrame) * 0.1);\n base.hidePreviousFrame();\n AppConfig.currentFrame += frameEasing;\n base.showCurrentFrame();\n base.$el.trigger('frameIndexChanged', [base.getNormalizedCurrentFrame(), AppConfig.totalFrames]);\n } else {\n window.clearInterval(AppConfig.ticker);\n AppConfig.ticker = 0;\n }\n };\n\n /**\n * @method hidePreviousFrame\n * @private\n * Function hide the previous frame in the animation loop.\n */\n\n base.hidePreviousFrame = function () {\n frames[base.getNormalizedCurrentFrame()].removeClass('current-image').addClass('previous-image');\n };\n\n /**\n * @method showCurrentFrame\n * @private\n * Function shows the current frame in the animation loop.\n */\n base.showCurrentFrame = function () {\n frames[base.getNormalizedCurrentFrame()].removeClass('previous-image').addClass('current-image');\n };\n\n /**\n * @method getNormalizedCurrentFrame\n * @private\n * Function normalize and calculate the current frame once the user release the mouse and release touch event.\n */\n\n base.getNormalizedCurrentFrame = function () {\n var c, e;\n\n if (!AppConfig.disableWrap) {\n c = Math.ceil(AppConfig.currentFrame % AppConfig.totalFrames);\n if (c < 0) {\n c += AppConfig.totalFrames - (AppConfig.zeroBased ? 1 : 0);\n }\n } else {\n c = Math.min(AppConfig.currentFrame, AppConfig.totalFrames - (AppConfig.zeroBased ? 1 : 0));\n e = Math.min(AppConfig.endFrame, AppConfig.totalFrames - (AppConfig.zeroBased ? 1 : 0));\n c = Math.max(c, AppConfig.zeroBased ? 0 : 1);\n e = Math.max(e, AppConfig.zeroBased ? 0 : 1);\n AppConfig.currentFrame = c;\n AppConfig.endFrame = e;\n }\n\n return c;\n };\n\n /*\n * @method getCurrentFrame\n * Function returns the current active frame.\n *\n * @return Number\n */\n\n base.getCurrentFrame = function () {\n return AppConfig.currentFrame;\n };\n\n /**\n * Function to return with zero padding.\n */\n base.zeroPad = function (num) {\n function pad(number, length) {\n var str = number.toString();\n if (AppConfig.zeroPadding) {\n while (str.length < length) {\n str = '0' + str;\n }\n }\n return str;\n }\n\n var approximateLog = Math.log(AppConfig.totalFrames) / Math.LN10;\n var roundTo = 1e3;\n var roundedLog = Math.round(approximateLog * roundTo) / roundTo;\n var numChars = Math.floor(roundedLog) + 1;\n return pad(num, numChars);\n };\n\n base.browser = {};\n\n /**\n * Function to detect if the brower is IE\n * @return {boolean}\n *\n * http://msdn.microsoft.com/en-gb/library/ms537509(v=vs.85).aspx\n */\n base.browser.isIE = function () {\n var rv = -1;\n if (navigator.appName === 'Microsoft Internet Explorer') {\n var ua = navigator.userAgent;\n var re = new RegExp('MSIE ([0-9]{1,}[\\\\.0-9]{0,})');\n if (re.exec(ua) !== null) {\n rv = parseFloat(RegExp.$1);\n }\n }\n\n return rv !== -1;\n };\n\n /**\n * @method getConfig\n * The function returns the extended version of config object the plugin is going to\n * user.\n *\n * @public\n *\n * @return Object\n */\n base.getConfig = function () {\n return AppConfig;\n };\n\n $.ThreeSixty.defaultOptions = {\n /**\n * @cfg {Boolean} dragging [dragging=false]\n * @private\n * Private propery contains a flags if users is in dragging mode.\n */\n dragging: false,\n /**\n * @cfg {Boolean} ready [ready=false]\n * @private\n * Private propery is set to true is all assets are loading and application is\n * ready to render 360 slider.\n */\n ready: false,\n /**\n * @cfg {Number} pointerStartPosX\n * @private\n * private property mouse pointer start x position when user starts dragging slider.\n */\n pointerStartPosX: 0,\n /**\n * @cfg {Number} pointerEndPosX\n * @private\n * private property mouse pointer start x position when user end dragging slider.\n */\n pointerEndPosX: 0,\n /**\n * @cfg {Number} pointerDistance\n * @private\n * private property contains the distance between the pointerStartPosX and pointerEndPosX\n */\n pointerDistance: 0,\n /**\n * @cfg {Number} monitorStartTime\n * @private\n * private property contains time user took in dragging mouse from pointerStartPosX and pointerEndPosX\n */\n monitorStartTime: 0,\n monitorInt: 10,\n /**\n * @cfg {Number} ticker\n * @private\n * Timer event that renders the 360\n */\n ticker: 0,\n /**\n * @cfg {Number} speedMultiplier\n * This property controls the sensitivity for the 360 slider\n */\n speedMultiplier: 7,\n /**\n * @cfg {Number} totalFrames\n * Set total number for frames used in the 360 rotation\n */\n totalFrames: 180,\n /**\n * @cfg {Number} currentFrame\n * Current frame of the slider.\n */\n currentFrame: 0,\n /**\n * @cfg {Array} endFrame\n * Private perperty contains information about the end frame when user slides the slider.\n */\n endFrame: 0,\n /**\n * @cfg {Number} loadedImages\n * Private property contains count of loaded images.\n */\n loadedImages: 0,\n /**\n * @cfg {Array} framerate\n * Set framerate for the slider animation\n */\n framerate: 60,\n /**\n * @cfg {String} domains\n * Set comma seprated list of all parallel domain from where 360 assets needs to be loaded.\n */\n domains: null,\n /**\n * @cfg {String} domain\n * Domain from where assets needs to be loaded. Use this propery is you want to load all assets from\n * single domain.\n */\n domain: '',\n /**\n * @cfg {Boolean} parallel\n * Set to true if you want to load assets from parallel domain. Default false\n */\n parallel: false,\n /**\n * @cfg {Number} queueAmount\n * Set number of calls to be made on parallel domains.\n */\n queueAmount: 8,\n /**\n * @cfg {Number} idle\n * Mouse Inactivite idle time in seconds. If set more than 0 will auto spine the slider\n */\n idle: 0,\n /**\n * @cfg {String} filePrefix\n * Prefix for the image file name before the numeric value.\n */\n filePrefix: '',\n /**\n * @cfg {String} ext [ext=.png]\n * Slider image extension.\n */\n ext: 'png',\n /**\n * @cfg {Object} height [300]\n * Height of the slider\n */\n height: 300,\n /**\n * @cfg {Number} width [300]\n * Width of the slider\n */\n width: 300,\n /**\n * @cfg {Object} styles\n * CSS Styles for the 360 slider\n */\n styles: {},\n /**\n * @cfg {Boolean} navigation[false]\n * State if navigation controls are visible or not.\n */\n navigation: false,\n /**\n * @cfg {string} position[top-right]\n * Positioning of navigation.\n * Options are top-left, top-center, top-right, bottom-right, bottom-center, bottom-left.\n */\n position: 'top-right',\n /**\n * @cfg {Boolean} fullscreen [false]\n * FullScreen now an option instead of plugin\n */\n fullscreen: false,\n /**\n * @cfg {string} fSBackgroundColor [white]\n * Set color of background in FullScreen (css style)\n */\n fSBackgroundColor: '#fff',\n /**\n * @cfg {Boolean} autoplay[false]\n * Autoplay the 360 animation\n */\n autoplay: false,\n /**\n * @cfg {number} autoplayDirection [1]\n * Direction for autoplay the 360 animation. 1 for right spin, and -1 for left spin.\n */\n autoplayDirection: 1,\n /**\n * Property to disable auto spin\n * @type {Boolean}\n */\n disableSpin: false,\n /**\n * Property to disable infinite wrap\n * @type {Boolean}\n */\n disableWrap: false,\n /**\n * Responsive width\n * @type {Boolean}\n */\n responsive: false,\n /**\n * Zero Padding for filenames\n * @type {Boolean}\n */\n zeroPadding: false,\n /**\n * Zero based for image filenames starting at 0\n * @type {Boolean}\n */\n zeroBased: false,\n /**\n * @type {Array}\n * List of plugins\n */\n plugins: [],\n /**\n * @type {Boolean}\n * Show hand cursor on drag\n */\n showCursor: false,\n /**\n * @cfg {Boolean} drag\n * Set it to false if you want to disable mousedrag or touch events\n */\n drag: true,\n /**\n * @cfg {Function} onReady\n * Callback triggers once all images are loaded and ready to render on the screen\n */\n onReady: function () {},\n /**\n * @cfg {Function} onDragStart\n * Callback triggers when a user initiates dragging\n */\n onDragStart: function () {},\n /**\n * @cfg {Function} onDragStop\n * Callback triggers when a user releases after dragging\n */\n onDragStop: function () {},\n /**\n * @cfg {String} imgList\n * Set ul element where image will be loaded\n */\n imgList: '.threesixty_images',\n /**\n * @cfg {Array} imgArray\n * Use set of images in array to load images\n */\n imgArray: null,\n /**\n * @cfg {Number} playSpeed\n * Value to control the speed of play button rotation\n */\n playSpeed: 100,\n };\n base.init();\n };\n\n $.fn.ThreeSixty = function (options) {\n return Object.create(new $.ThreeSixty(this, options));\n };\n})(jQuery);\n/**\n *\n * Object.create method for perform as a fallback if method not available.\n * The syntax just takes away the illusion that JavaScript uses Classical Inheritance.\n */\nif (typeof Object.create !== 'function') {\n Object.create = function (o) {\n 'use strict';\n\n function F() {}\n F.prototype = o;\n return new F();\n };\n}\n", ".threesixty {\r\n margin: 0 auto;\r\n overflow: hidden;\r\n max-height: 100%;\r\n text-rendering: auto;\r\n -webkit-font-smoothing: antialiased;\r\n -moz-osx-font-smoothing: grayscale;\r\n width: auto;\r\n}\r\n\r\n.threesixty .threesixty_images {\r\n display: none;\r\n list-style: none;\r\n margin: 0;\r\n padding: 0;\r\n}\r\n\r\n.threesixty .threesixty_images img {\r\n top: 0;\r\n width: 100%;\r\n height: auto;\r\n}\r\n\r\n.threesixty .threesixty_images img.previous-image {\r\n display: none;\r\n /* stylelint-disable */\r\n /*\r\n Do not put here any other styles.\n It causes massive recalc / repaints and image flickering,\n especially on Firefox.\r\n */\r\n /* stylelint-enable */\r\n}\r\n\r\n.threesixty .threesixty_images img.current-image {\r\n display: block;\r\n /* stylelint-disable */\r\n /*\r\n Do not put here any other styles.\n It causes massive recalc / repaints and image flickering,\n especially on Firefox.\r\n */\r\n /* stylelint-enable */\r\n}\r\n\r\n.threesixty .spinner {\r\n width: 60px;\r\n display: block;\r\n margin: 0 auto;\r\n height: 30px;\r\n background: #333;\r\n background: rgba(0, 0, 0, 0.7);\r\n border-radius: 5px;\r\n}\r\n\r\n.threesixty .spinner span {\r\n font-family: Arial, \"MS Trebuchet\", sans-serif;\r\n font-size: 12px;\r\n font-weight: bolder;\r\n color: #fff;\r\n text-align: center;\r\n line-height: 30px;\r\n display: block;\r\n}\r\n\r\n.threesixty .nav_bar {\r\n position: absolute;\r\n color: #fff;\r\n z-index: 1;\r\n height: 32px;\r\n background: rgba(0, 0, 0, 0.6);\r\n border: 1px solid rgba(0, 0, 0, 0.7);\r\n border-radius: 5px;\r\n box-shadow: inset 0 0 5px rgba(255, 255, 255, 0.5);\r\n}\r\n\r\n.threesixty .nav_bar.bottom-right {\r\n bottom: 10px;\r\n right: 20px;\r\n}\r\n\r\n.threesixty .nav_bar.bottom-left {\r\n bottom: 10px;\r\n left: 20px;\r\n}\r\n\r\n.threesixty .nav_bar.top-left {\r\n top: 10px;\r\n left: 20px;\r\n}\r\n\r\n.threesixty .nav_bar.top-right {\r\n top: 10px;\r\n right: 20px;\r\n}\r\n\r\n.threesixty .nav_bar.top-center {\r\n top: 10px;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n}\r\n\r\n.threesixty .nav_bar.bottom-center {\r\n bottom: 10px;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n}\r\n\r\n.threesixty .nav_bar .butn {\r\n z-index: 2;\r\n float: left;\r\n width: 30px;\r\n height: 30px;\r\n padding: 7.5px;\r\n border-right: 1px solid rgba(0, 0, 0, 0.6);\r\n border-left: 1px solid rgba(255, 255, 255, 0.2);\r\n border-radius: 0;\r\n cursor: pointer;\r\n}\r\n\r\n.threesixty .nav_bar .butn:first-child {\r\n border-left: none;\r\n}\r\n\r\n.threesixty .nav_bar .butn:last-child {\r\n border-right: none;\r\n}\r\n\r\n.threesixty .nav_bar .butn span {\r\n z-index: 13;\r\n display: block;\r\n width: 15px;\r\n height: 15px;\r\n margin: auto;\r\n}\r\n\r\n.threesixty .nav_bar .butn span.icon-play {\r\n background: url(\"../images/sprite.png\") no-repeat 0 0;\r\n}\r\n\r\n.threesixty .nav_bar .butn span.icon-pause {\r\n background: url(\"../images/sprite.png\") no-repeat -15px 0;\r\n}\r\n\r\n.threesixty .nav_bar .butn span.icon-forward {\r\n background: url(\"../images/sprite.png\") no-repeat -30px 0;\r\n}\r\n\r\n.threesixty .nav_bar .butn span.icon-back {\r\n background: url(\"../images/sprite.png\") no-repeat -45px 0;\r\n}\r\n\r\n.threesixty .nav_bar .butn span.icon-fullscreen {\r\n background: url(\"../images/sprite.png\") no-repeat -60px 0;\r\n}\r\n\r\n.threesixty .nav_bar .butn span.icon-resize {\r\n background: url(\"../images/sprite.png\") no-repeat -75px 0;\r\n}\r\n\r\n.threesixty .nav_bar .butn span.icon-download {\r\n background: url(\"../images/sprite.png\") no-repeat -90px 0;\r\n}\r\n\r\n/* stylelint-disable */\r\n_:-webkit-full-screen,\r\n.threesixty {\r\n background-color: transparent;\r\n}\r\n\r\n/* stylelint-enable */\r\n.threesixty_images {\r\n cursor: e-resize;\r\n}", "\uFEFFfunction RotateCtrl() {\n var ctrl = this;\n\n ctrl.$onInit = function () {\n ctrl.rotateOptions = {\n totalFrames: parseInt(ctrl.totalFrames), // Total no. of image you have for 360 slider\n endFrame: parseInt(ctrl.endFrame), // end frame for the auto spin animation\n currentFrame: parseInt(ctrl.currentFrame) || 1, // This the start frame for auto spin\n imgList: ctrl.imgList, // selector for image list\n progress: ctrl.progress, // selector to show the loading progress\n imagePath: ctrl.imagePath, // path of the image assets\n ext: ctrl.ext || '.png', // extention for the assets\n height: parseInt(ctrl.height) || 300,\n width: parseInt(ctrl.width) || 300,\n navigation: ctrl.navigation() || false,\n responsive: ctrl.responsive() || false,\n autoplayDirection: parseInt(ctrl.autoplayDirection) || 1,\n framerate: parseInt(ctrl.framerate) || 60,\n disableSpin: false,\n };\n };\n}\n\nexport default RotateCtrl;\n", "function rotateDirective($window) {\n return {\n restrict: 'A',\n scope: {\n imagePath: '@',\n totalFrames: '@',\n endFrame: '@',\n height: '@',\n width: '@',\n imgList: '@',\n progress: '@',\n navigation: '&',\n responsive: '&',\n autoplayDirection: '@',\n // -1 or 1\n autoplay: '&',\n ext: '@',\n framerate: '@'\n },\n controller: 'RotateCtrl',\n controllerAs: 'rotate',\n bindToController: true,\n replace: true,\n template: '
0%
    ',\n link: function (scope, element, attrs, ctrl) {\n var img = new Image();\n img.addEventListener('load', function () {\n var wInnerWidthCut = $window.innerWidth * 0.75;\n var wInnerHeightCut = $window.innerHeight * 0.75;\n var resultWidth = Math.min(wInnerWidthCut, img.naturalWidth);\n var diffWidth = img.naturalWidth > wInnerWidthCut ? img.naturalWidth - wInnerWidthCut : 0;\n var resultHeight;\n if (wInnerWidthCut < img.naturalWidth) {\n resultHeight = (img.naturalWidth - diffWidth) * img.naturalHeight / img.naturalWidth;\n } else {\n resultHeight = img.naturalHeight;\n }\n ctrl.rotateOptions.width = resultWidth;\n ctrl.rotateOptions.height = resultHeight;\n element.ThreeSixty(ctrl.rotateOptions);\n });\n img.src = ctrl.rotateOptions.imagePath + '1' + ctrl.rotateOptions.ext;\n }\n };\n}\nrotateDirective.$inject = [\"$window\"];\nexport { rotateDirective };", "\uFEFFimport './screenfull.cjs';\nimport './threesixty.js';\nimport './styles/rotate.scss';\n\nimport RotateCtrl from './controllers/rotateController.js';\nimport { rotateDirective } from './directives/rotateDirectives.js';\n\nconst moduleName = 'rotate';\n\nangular.module(moduleName, []).controller('RotateCtrl', RotateCtrl).directive('rotate', rotateDirective);\n\nexport default moduleName;\n", "\uFEFFimport {LozadAdvObserverMode, LozadAdvOptions} from \"./types\";\n\n\nexport const LOZAD_OBSERVER_MODE: Record = {\n default: 'default',\n observerAlways: 'observerAlways',\n};\n\n\n\nconst lozadAdvConstants: LozadAdvOptions = {\n rootMargin: '0px',\n threshold: 0,\n afterWindowLoaded: true,\n load: function load(element) {\n const el = element\n\n if (el.dataset.src) {\n el.src = el.dataset.src;\n }\n if (el.dataset.srcset) {\n el.srcset = el.dataset.srcset;\n }\n if (el.dataset.backgroundImage) {\n el.style.backgroundImage = 'url(' + el.dataset.backgroundImage + ')';\n }\n },\n};\n\nexport default lozadAdvConstants;\n", "import { ILozadAdvService } from \"./lozadAdv.service\";\nimport { IAttributes, IController, IDocumentService, IParseService, IScope, IWindowService } from \"angular\";\nimport { LozadAdvOptions, LozadAdvParams } from \"./types\";\nimport { LOZAD_OBSERVER_MODE } from \"./lozadAdv.constants\";\nexport type ILozadAdvCtrlFn = (this: ILozadAdvCtrl, $window: IWindowService, $scope: IScope, $element: JQLite, $parse: IParseService, $attrs: IAttributes, $document: IDocumentService, lozadAdvDefault: LozadAdvOptions, lozadAdvService: ILozadAdvService) => void;\nexport interface ILozadAdvCtrl extends IController {\n scroll: (entry: IntersectionObserverEntry, observer: IntersectionObserver) => void;\n lozad: (element: Element) => void;\n loadFn: () => void;\n}\n\n/*@ngInject*/\nconst LozadAdvCtrl: ILozadAdvCtrlFn = function ($window, $scope, $element, $parse, $attrs, $document, lozadAdvDefault, lozadAdvService) {\n const ctrl = this;\n let elementNative;\n const ctrlParams: LozadAdvParams = {} as LozadAdvParams;\n ctrl.$postLink = function () {\n elementNative = $element[0];\n ctrlParams.options = angular.extend({}, lozadAdvDefault, $parse($attrs.lozadAdvOptions)($scope));\n ctrlParams.lozadAdv = $parse($attrs.lozadAdv);\n ctrlParams.lozadObserverMode = $attrs.lozadObserverMode != null ? $parse($attrs.lozadObserverMode)($scope) : LOZAD_OBSERVER_MODE.default;\n ctrlParams.lozadAdvDebounce = $attrs.lozadAdvDebounce != null ? $parse($attrs.lozadAdvDebounce)($scope) : 500;\n ctrlParams.lozadAdvKey = $parse($attrs.lozadAdvKey)($scope);\n lozadAdvService.guardOptions(ctrlParams);\n if (ctrlParams.options.afterWindowLoaded &&\n // @ts-ignore: TODO: fix conflict type IDocumentService for angularjs\n $document[0].readyState !== 'complete') {\n $window.addEventListener('load', ctrl.loadFn);\n } else {\n ctrl.lozad(elementNative);\n }\n };\n ctrl.scroll = function (entry, observer) {\n if (lozadAdvService.isElementInViewport(entry.target, entry)) {\n if (ctrlParams.lozadObserverMode !== LOZAD_OBSERVER_MODE.observerAlways) {\n observer.unobserve(entry.target);\n }\n ctrlParams.options.load(entry.target);\n }\n ctrlParams.lozadAdv($scope, {\n entry,\n isVisible: lozadAdvService.isElementInViewport(entry.target, entry)\n });\n // timeout \u043D\u0443\u0436\u0435\u043D, \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u043F\u0440\u0430\u0432\u0438\u0442\u044C \"$digest already in progress\" \u0432 \u0442\u0435\u0441\u0442\u0430\u0445.\n setTimeout(() => {\n $scope.$digest();\n }, 0);\n };\n ctrl.lozad = function lozad(element) {\n const wrapper = lozadAdvService.initObserver({\n lozadObserverMode: ctrlParams.lozadObserverMode,\n lozadAdvKey: ctrlParams.lozadAdvKey,\n options: ctrlParams.options\n });\n const callback = ctrlParams.lozadObserverMode !== \"observerAlways\" ? lozadAdvService.onIntersection((entry, observer) => {\n ctrl.scroll.bind(ctrl, entry, observer)();\n }, ctrlParams.lozadAdvDebounce) : ctrl.scroll;\n wrapper.observeWrapper(element, callback);\n };\n ctrl.loadFn = function loadFn() {\n $window.removeEventListener('load', ctrl.loadFn);\n ctrl.lozad(elementNative);\n };\n};\nLozadAdvCtrl.$inject = [\"$window\", \"$scope\", \"$element\", \"$parse\", \"$attrs\", \"$document\", \"lozadAdvDefault\", \"lozadAdvService\"];\nexport default LozadAdvCtrl;", "\uFEFFimport {IAttributes, IDirective, IDirectiveFactory, IScope} from \"angular\";\nimport {ILozadAdvCtrl} from \"./lozadAdv.ctrl\";\n\ninterface LozadAdvDirective extends IDirectiveFactory {\n\n}\n\nconst lozadAdv: LozadAdvDirective = function () {\n return {\n controller: 'LozadAdvCtrl',\n bindToController: true,\n controllerAs: 'lozadAdv',\n scope: true,\n };\n}\n\nexport default lozadAdv\n", "const copyProperty = (to, from, property, ignoreNonConfigurable) => {\n\t// `Function#length` should reflect the parameters of `to` not `from` since we keep its body.\n\t// `Function#prototype` is non-writable and non-configurable so can never be modified.\n\tif (property === 'length' || property === 'prototype') {\n\t\treturn;\n\t}\n\n\t// `Function#arguments` and `Function#caller` should not be copied. They were reported to be present in `Reflect.ownKeys` for some devices in React Native (#41), so we explicitly ignore them here.\n\tif (property === 'arguments' || property === 'caller') {\n\t\treturn;\n\t}\n\n\tconst toDescriptor = Object.getOwnPropertyDescriptor(to, property);\n\tconst fromDescriptor = Object.getOwnPropertyDescriptor(from, property);\n\n\tif (!canCopyProperty(toDescriptor, fromDescriptor) && ignoreNonConfigurable) {\n\t\treturn;\n\t}\n\n\tObject.defineProperty(to, property, fromDescriptor);\n};\n\n// `Object.defineProperty()` throws if the property exists, is not configurable and either:\n// - one its descriptors is changed\n// - it is non-writable and its value is changed\nconst canCopyProperty = function (toDescriptor, fromDescriptor) {\n\treturn toDescriptor === undefined || toDescriptor.configurable || (\n\t\ttoDescriptor.writable === fromDescriptor.writable\n\t\t&& toDescriptor.enumerable === fromDescriptor.enumerable\n\t\t&& toDescriptor.configurable === fromDescriptor.configurable\n\t\t&& (toDescriptor.writable || toDescriptor.value === fromDescriptor.value)\n\t);\n};\n\nconst changePrototype = (to, from) => {\n\tconst fromPrototype = Object.getPrototypeOf(from);\n\tif (fromPrototype === Object.getPrototypeOf(to)) {\n\t\treturn;\n\t}\n\n\tObject.setPrototypeOf(to, fromPrototype);\n};\n\nconst wrappedToString = (withName, fromBody) => `/* Wrapped ${withName}*/\\n${fromBody}`;\n\nconst toStringDescriptor = Object.getOwnPropertyDescriptor(Function.prototype, 'toString');\nconst toStringName = Object.getOwnPropertyDescriptor(Function.prototype.toString, 'name');\n\n// We call `from.toString()` early (not lazily) to ensure `from` can be garbage collected.\n// We use `bind()` instead of a closure for the same reason.\n// Calling `from.toString()` early also allows caching it in case `to.toString()` is called several times.\nconst changeToString = (to, from, name) => {\n\tconst withName = name === '' ? '' : `with ${name.trim()}() `;\n\tconst newToString = wrappedToString.bind(null, withName, from.toString());\n\t// Ensure `to.toString.toString` is non-enumerable and has the same `same`\n\tObject.defineProperty(newToString, 'name', toStringName);\n\tconst {writable, enumerable, configurable} = toStringDescriptor; // We destructue to avoid a potential `get` descriptor.\n\tObject.defineProperty(to, 'toString', {value: newToString, writable, enumerable, configurable});\n};\n\nexport default function mimicFunction(to, from, {ignoreNonConfigurable = false} = {}) {\n\tconst {name} = to;\n\n\tfor (const property of Reflect.ownKeys(from)) {\n\t\tcopyProperty(to, from, property, ignoreNonConfigurable);\n\t}\n\n\tchangePrototype(to, from);\n\tchangeToString(to, from, name);\n\n\treturn to;\n}\n", "import mimicFunction from 'mimic-function';\n\nconst debounceFunction = (inputFunction, options = {}) => {\n\tif (typeof inputFunction !== 'function') {\n\t\tthrow new TypeError(`Expected the first argument to be a function, got \\`${typeof inputFunction}\\``);\n\t}\n\n\tconst {\n\t\twait = 0,\n\t\tmaxWait = Number.POSITIVE_INFINITY,\n\t\tbefore = false,\n\t\tafter = true,\n\t} = options;\n\n\tif (wait < 0 || maxWait < 0) {\n\t\tthrow new RangeError('`wait` and `maxWait` must not be negative.');\n\t}\n\n\tif (!before && !after) {\n\t\tthrow new Error('Both `before` and `after` are false, function wouldn\\'t be called.');\n\t}\n\n\tlet timeout;\n\tlet maxTimeout;\n\tlet result;\n\n\tconst debouncedFunction = function (...arguments_) {\n\t\tconst context = this; // eslint-disable-line unicorn/no-this-assignment\n\n\t\tconst later = () => {\n\t\t\ttimeout = undefined;\n\n\t\t\tif (maxTimeout) {\n\t\t\t\tclearTimeout(maxTimeout);\n\t\t\t\tmaxTimeout = undefined;\n\t\t\t}\n\n\t\t\tif (after) {\n\t\t\t\tresult = inputFunction.apply(context, arguments_);\n\t\t\t}\n\t\t};\n\n\t\tconst maxLater = () => {\n\t\t\tmaxTimeout = undefined;\n\n\t\t\tif (timeout) {\n\t\t\t\tclearTimeout(timeout);\n\t\t\t\ttimeout = undefined;\n\t\t\t}\n\n\t\t\tif (after) {\n\t\t\t\tresult = inputFunction.apply(context, arguments_);\n\t\t\t}\n\t\t};\n\n\t\tconst shouldCallNow = before && !timeout;\n\t\tclearTimeout(timeout);\n\t\ttimeout = setTimeout(later, wait);\n\n\t\tif (maxWait > 0 && maxWait !== Number.POSITIVE_INFINITY && !maxTimeout) {\n\t\t\tmaxTimeout = setTimeout(maxLater, maxWait);\n\t\t}\n\n\t\tif (shouldCallNow) {\n\t\t\tresult = inputFunction.apply(context, arguments_);\n\t\t}\n\n\t\treturn result;\n\t};\n\n\tmimicFunction(debouncedFunction, inputFunction);\n\n\tdebouncedFunction.cancel = () => {\n\t\tif (timeout) {\n\t\t\tclearTimeout(timeout);\n\t\t\ttimeout = undefined;\n\t\t}\n\n\t\tif (maxTimeout) {\n\t\t\tclearTimeout(maxTimeout);\n\t\t\tmaxTimeout = undefined;\n\t\t}\n\t};\n\n\treturn debouncedFunction;\n};\n\nexport default debounceFunction;\n", "import debounceFn from 'debounce-fn';\nimport { LozadAdvParams, LozadAdvObserverParams, LozadAdvObserverWrap, LozadAdvObservers } from \"./types\";\nimport { LOZAD_OBSERVER_MODE } from \"./lozadAdv.constants\";\nexport interface ILozadAdvService {\n guardOptions: (params: LozadAdvParams) => void;\n onIntersection: (callback: (entry: IntersectionObserverEntry, observer: IntersectionObserver) => void, debounceTime: LozadAdvParams[\"lozadAdvDebounce\"]) => (entry: IntersectionObserverEntry, observer: IntersectionObserver) => void;\n isElementInViewport: (element: Element, entry: IntersectionObserverEntry) => boolean;\n getHash: (options: Record) => string;\n initObserver: (params: LozadAdvObserverParams) => LozadAdvObserverWrap;\n reObserve: (key: string, element: HTMLElement) => boolean;\n lozadIntersectionCallback: (key: string) => (entry: IntersectionObserverEntry[], observer: IntersectionObserver) => void;\n}\nexport type ILozadAdvServiceFn = (this: ILozadAdvService) => void;\n\n//TODO: \u0435\u0441\u043B\u0438 \u0443\u043A\u0430\u0437\u0430\u043D \u0442\u043E\u043B\u044C\u043A\u043E this, \u0442\u043E \u0432 \u0442\u0435\u0441\u0442\u0430\u0445 \u043E\u043D \u043F\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044F \u0432 params. \u0443\u043A\u0430\u0437\u0430\u043B ngInject \u0443 \u0441\u0430\u043C\u043E\u0439 \u0444\u0443\u043D\u043A\u0446\u0438\u0438\nconst LozadAdvService: ILozadAdvServiceFn = /*@ngInject*/function () {\n const service = this;\n let observers: LozadAdvObservers = new Map();\n service.guardOptions = function (params: LozadAdvParams) {\n if (!['number', 'boolean'].includes(typeof params.lozadAdvDebounce)) {\n throw new Error(`[LozadAdv]: lozadAdvDebounce is number or boolean`);\n }\n if (!Object.keys(LOZAD_OBSERVER_MODE).includes(params.lozadObserverMode)) {\n throw new Error(`[LozadAdv]: mode \"${params.lozadObserverMode}\" not found`);\n }\n };\n service.onIntersection = function onIntersection(callback, debounceTime = 500) {\n return function (entry, observer) {\n if (entry.isIntersecting || service.isElementInViewport(entry.target, entry)) {\n if (debounceTime === false) {\n callback(entry, observer);\n return;\n } else if (debounceTime === true) {\n debounceTime = 500;\n }\n debounceFn(() => callback(entry, observer), {\n wait: debounceTime\n })();\n }\n };\n };\n\n //https://stackoverflow.com/questions/7616461/generate-a-hash-from-string-in-javascript\n service.getHash = function (options) {\n const optionsAsString = JSON.stringify(options);\n let hash = 0;\n for (let i = 0; i < optionsAsString.length; i++) {\n hash = (hash << 5) - hash + optionsAsString.charCodeAt(i);\n hash |= 0;\n }\n const hashString = Math.abs(hash).toString(36);\n const needFill = hashString.length < 10;\n const diffLength = 10 - hashString.length;\n return needFill ? new Array(diffLength).fill('0').join('') + hashString : hashString.slice(0, 10);\n };\n service.isElementInViewport = function isElementInViewport(el, entry) {\n var rect = entry.boundingClientRect;\n var windowHeight = window.innerHeight || document.documentElement.clientHeight;\n // http://stackoverflow.com/questions/325933/determine-whether-two-date-ranges-overlap\n var vertInView = rect.top <= windowHeight && rect.top + rect.height >= 0;\n return vertInView;\n };\n service.lozadIntersectionCallback = key => function (entries, observer) {\n const observerWrap = observers.get(key);\n if (observerWrap == null) {\n console.warn(`Observer with key \"${key} not found\"`);\n return;\n }\n entries.forEach(entry => {\n const handler = observerWrap.params.handlers.find(({\n element\n }) => element === entry.target);\n if (handler) {\n handler.callback(entry, observer);\n }\n });\n };\n service.initObserver = params => {\n const {\n lozadAdvKey,\n options\n } = params;\n const _key = lozadAdvKey ?? service.getHash(options);\n let observerWrap = observers.get(_key);\n if (!observerWrap) {\n const observer = new IntersectionObserver(service.lozadIntersectionCallback(_key), options);\n observerWrap = {\n observerId: _key,\n observer,\n params: {\n ...params,\n handlers: []\n },\n observeWrapper: function (element, callback) {\n this.params.handlers.push({\n callback,\n element\n });\n this.observer.observe(element);\n }\n };\n observers.set(_key, observerWrap);\n }\n return observerWrap;\n };\n service.reObserve = (key, element) => {\n let observerWrap = observers.get(key);\n if (observerWrap) {\n observerWrap.observer.unobserve(element);\n observerWrap.observer.observe(element);\n return true;\n }\n return false;\n };\n};\nexport default LozadAdvService;", "\uFEFFimport LozadAdvCtrl from './lozadAdv.ctrl.ts';\nimport lozadAdvConstants from './lozadAdv.constants.ts';\nimport LozadAdv from './lozadAdv.directive.ts';\nimport LozadAdvService from './lozadAdv.service.ts';\n\nconst moduleName = `lozadAdv`;\n\nangular\n .module(moduleName, [])\n .constant(`lozadAdvDefault`, lozadAdvConstants)\n .controller(`LozadAdvCtrl`, LozadAdvCtrl)\n .service('lozadAdvService', LozadAdvService)\n .directive(`lozadAdv`, LozadAdv);\n\nexport default moduleName;\n", "@charset \"UTF-8\";\r\n/* https://www.smashingmagazine.com/2014/02/making-embedded-content-work-in-responsive-design/ */\r\niframe-responsive {\r\n display: block;\r\n width: 100%;\r\n height: 100%;\r\n}\r\n\r\n.mobile-version .video-embed {\r\n padding-bottom: 0;\r\n}\r\n\r\n.mobile-version .iframe-responsive--vk-clip iframe,\r\n.mobile-version .iframe-responsive--vk-clip .iframe-responsive__custom-play-wrap {\r\n max-width: 300px;\r\n max-height: 603px;\r\n}\r\n.mobile-version .iframe-responsive--vk-clip .video-embed {\r\n padding-bottom: 0;\r\n}\r\n\r\n.iframe-responsive--vk-clip .iframe-responsive__custom-play-wrap {\r\n max-width: 300px;\r\n}\r\n.iframe-responsive--vk-clip .embed-container {\r\n aspect-ratio: 9/16;\r\n max-width: 300px;\r\n}\r\n.iframe-responsive--vk-clip .iframe-responsive__container .iframe-responsive__custom-play {\r\n top: calc(50% - 30px);\r\n}\r\n.iframe-responsive--vk-clip iframe {\r\n max-width: 300px !important;\r\n}\r\n\r\n.iframe-responsive__container-wrap {\r\n width: 100%;\r\n height: 100%;\r\n}\r\n\r\n.iframe-responsive__container {\r\n position: relative;\r\n aspect-ratio: 16/9;\r\n width: 100%;\r\n height: 100%;\r\n}\r\n.iframe-responsive__container iframe {\r\n width: 100%;\r\n height: 100%;\r\n border: 0;\r\n}\r\n\r\n.embed-container {\r\n position: relative;\r\n aspect-ratio: 16/9;\r\n width: 100%;\r\n height: 100%;\r\n overflow: hidden;\r\n max-width: 100%;\r\n}\r\n\r\n.embed-container iframe,\r\n.embed-container object,\r\n.embed-container embed,\r\n.embed-container video {\r\n width: 100%;\r\n height: 100%;\r\n}\r\n\r\n/* .iframe-responsive__container iframe {\n display: block;\n width: 100%;\n position: relative;\n} */\r\n.iframe-responsive__container .iframe-responsive__custom-play {\r\n position: absolute;\r\n top: 50%;\r\n left: 50%;\r\n transform: translate3d(-50%, -50%, 0);\r\n z-index: 1;\r\n border-radius: 50%;\r\n /* border: 11px solid #fff; */\r\n background-color: #fff;\r\n width: 75px;\r\n height: 75px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n}\r\n\r\n.iframe-responsive__custom-play-wrap {\r\n pointer-events: none; /* \u0427\u0442\u043E\u0431\u044B \u043A\u043B\u0438\u043A \u043F\u0440\u043E\u0438\u0441\u0445\u043E\u0434\u0438\u043B \u043F\u043E \u0432\u0438\u0434\u0435\u043E */\r\n cursor: pointer;\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n bottom: 0;\r\n left: 0;\r\n text-align: center;\r\n z-index: 1;\r\n background-clip: border-box;\r\n background-color: rgba(0, 0, 0, 0);\r\n background-origin: padding-box;\r\n background-position-x: 50%;\r\n background-position-y: 50%;\r\n background-size: 100%;\r\n background-repeat: no-repeat;\r\n}\r\n\r\n.iframe-responsive__custom-play-icon {\r\n width: 52px;\r\n height: 52px;\r\n}\r\n\r\n.modal-video-icon {\r\n margin-right: 24px;\r\n}\r\n\r\n@media (max-width: 30em) {\r\n .iframe-responsive__container .iframe-responsive__custom-play {\r\n border: 2px solid #fff;\r\n }\r\n .iframe-responsive__custom-play-icon {\r\n width: 72px;\r\n height: 72px;\r\n }\r\n}\r\n.opacity {\r\n opacity: 0;\r\n}\r\n\r\n.iframe-responsive__container-upload video {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n -o-object-fit: cover;\r\n object-fit: cover;\r\n}\r\n\r\n.embed-container.iframe-responsive__container-upload {\r\n /* padding: 0; */\r\n}\r\n\r\n.iframe-responsive__container--image {\r\n display: block !important;\r\n width: 100%;\r\n height: 100%;\r\n -o-object-fit: cover;\r\n object-fit: cover;\r\n background-repeat: no-repeat;\r\n background-size: cover;\r\n}\r\n\r\n/* .iframe-responsive__container + iframe-responsive__container--image {\n display: none !important;\n}\n\n@media(min-width: 48em) {\n .iframe-responsive__container + iframe-responsive__container--image {\n display: block !important;\n }\n} */", "function iframeResponsiveCtrl($sce, iframeResponsiveService, $scope, $timeout) {\n var ctrl = this,\n stateChangeFlag = true;\n ctrl.showContent = function () {\n ctrl.isShowContent = true;\n if (ctrl.deviceMobile && ctrl.asBackground) {\n if (ctrl.useVimeo) {\n var vimeoVideoId = iframeResponsiveService.getVideoIdFromVimeo(ctrl.src);\n iframeResponsiveService.getVimeoCover(vimeoVideoId).then(function (response) {\n if (response.data != null) {\n ctrl.coverVideoPath = response.data.thumbnail_url;\n }\n });\n } else if (ctrl.useYouTube) {\n var YTVideoId = iframeResponsiveService.getVideoIdFromYouTube(ctrl.src);\n ctrl.coverVideoPath = iframeResponsiveService.getYTCover(YTVideoId);\n }\n } else {\n if (ctrl.isPlayerCode) {\n ctrl.playerCode = ctrl.src;\n } else {\n ctrl.src = iframeResponsiveService.getSrc(ctrl.src);\n }\n ctrl.pasteVideo(ctrl.src, ctrl.autoplay, ctrl.loop);\n $scope.$digest();\n }\n };\n ctrl.pasteVideoForModal = function (src) {\n // ctrl.stopOthersVideo();\n ctrl.showVideo();\n ctrl.hideCover();\n if (ctrl.useYouTube) {\n src = iframeResponsiveService.getYouTubeCode(src, true);\n }\n if (ctrl.useVimeo) {\n src = iframeResponsiveService.getVimeoCode(src, true);\n }\n if (ctrl.useRutube) {\n src = iframeResponsiveService.getRutubeCode(src, true);\n }\n ctrl.iframeSrc = $sce.trustAsResourceUrl(src);\n };\n ctrl.onPlayerReady = function (event) {\n if (ctrl.autoplay) {\n ctrl.player.mute();\n ctrl.player.playVideo();\n }\n if (stateChangeFlag) {\n stateChangeFlag = false;\n }\n };\n ctrl.onPlayerStateChange = function (event) {\n ctrl.videoLoaded = true;\n if (event.data === -1) {\n ctrl.muteOn = true; // autoplay\n\n $timeout(function () {\n ctrl.hideCover();\n }, 100);\n } else if (event.data === 1) {\n if (!ctrl.disabledStop) {\n iframeResponsiveService.run(ctrl, 'youtube');\n }\n }\n };\n ctrl.showVideo = function () {\n ctrl.visibleVideo = true;\n };\n ctrl.hideVideo = function () {\n ctrl.visibleVideo = false;\n };\n ctrl.showCover = function () {\n ctrl.visibleCover = true;\n };\n ctrl.hideCover = function () {\n ctrl.visibleCover = false;\n };\n ctrl.stopOthersVideo = function () {\n if (!ctrl.disabledStop) {\n iframeResponsiveService.run(ctrl, 'vimeo');\n iframeResponsiveService.run(ctrl, 'youtube');\n }\n };\n ctrl.pasteYTIframeSrc = function (src, playerId, autoplay, loop) {\n var YTVideoId = iframeResponsiveService.getVideoIdFromYouTube(src);\n ctrl.coverVideoPath = iframeResponsiveService.getYTCover(YTVideoId);\n $timeout(function () {\n if (!iframeResponsiveService.checkInitYouTubeIframeAPI()) {\n iframeResponsiveService.addOnYouTubeIframeAPIReady().then(function () {\n ctrl.player = iframeResponsiveService.getYTPlayerAPI(playerId, YTVideoId, {\n onReady: ctrl.onPlayerReady,\n onStateChange: ctrl.onPlayerStateChange\n }, autoplay, loop);\n }).catch(function (error) {\n console.error(error);\n });\n } else {\n ctrl.player = iframeResponsiveService.getYTPlayerAPI(ctrl.playerId, YTVideoId, {\n onReady: ctrl.onPlayerReady,\n onStateChange: ctrl.onPlayerStateChange\n }, autoplay, loop);\n }\n });\n var YTCode = iframeResponsiveService.getYouTubeCode(src, autoplay, YTVideoId, loop);\n ctrl.iframeSrc = $sce.trustAsResourceUrl(YTCode);\n };\n ctrl.pasteVimeoIframeSrc = function (src, playerId, autoplay, loop) {\n var vimeoVideoId = iframeResponsiveService.getVideoIdFromVimeo(src);\n iframeResponsiveService.getVimeoCover(vimeoVideoId).then(function (response) {\n if (response.data != null) {\n ctrl.coverVideoPath = response.data.thumbnail_url;\n }\n });\n $timeout(function () {\n if (!iframeResponsiveService.checkInitVimeoIframeAPI()) {\n iframeResponsiveService.addVimeoIframeAPI().then(function () {\n ctrl.player = iframeResponsiveService.getVimeoPlayerAPI(playerId, vimeoVideoId, autoplay, loop);\n ctrl.player.on('play', function () {\n // ctrl.stopOthersVideo();\n iframeResponsiveService.run(ctrl, 'vimeo');\n ctrl.hideCover();\n $scope.$digest();\n });\n }).catch(function (error) {\n console.error(error);\n });\n } else {\n ctrl.player = iframeResponsiveService.getVimeoPlayerAPI(playerId, vimeoVideoId, autoplay, loop);\n }\n });\n };\n ctrl.pasteRutubeIframeSrc = function (link, playerId, autoplay, loop) {\n let videoId = iframeResponsiveService.getVideoIdFromRutube(link);\n $timeout(function () {\n let player = document.getElementById(playerId);\n if (player != null && (ctrl.player == null || ctrl.player.getId() !== playerId)) {\n ctrl.player = iframeResponsiveService.getRutubePlayer(playerId, {\n events: {\n onReady: ctrl.onPlayerReadyRutube,\n onStateChange: ctrl.onPlayerStateChangeRutube,\n onComplete: ctrl.onCompleteRutube\n }\n });\n }\n\n // if (ctrl.player != null) {\n // ctrl.stopOthersVideo();\n // }\n });\n let code = iframeResponsiveService.getRutubeCode(link, autoplay, videoId, loop);\n ctrl.iframeSrc = $sce.trustAsResourceUrl(code);\n };\n ctrl.pasteVkIframeSrc = function (link, playerId, autoplay, loop) {\n const [oid, id] = iframeResponsiveService.getVideoIdsFromVk(link);\n if (oid && id) {\n iframeResponsiveService.addVkAPI().then(() => {\n const src = `https://vk.com/video_ext.php?oid=${oid}&id=${id}&hd=2&autoplay=${autoplay ? '1' : '0'}&repeat=${loop ? '1' : '0'}&js_api=1`;\n ctrl.iframeSrc = $sce.trustAsResourceUrl(src);\n let iframe = document.getElementById(playerId);\n iframe.src = src;\n if (iframe) {\n ctrl.player = iframeResponsiveService.getVkPlayer(iframe);\n ctrl.player?.on('started', ctrl.onPlayerStateChangeVk);\n }\n }).catch(e => {\n throw new Error(e);\n });\n }\n };\n ctrl.pasteDzenIframeSrc = function (link, playerId, autoplay, loop) {\n ctrl.iframeSrc = $sce.trustAsResourceUrl(link + `?autoplay=${autoplay ? '1' : '0'}&loop=${loop ? '1' : '0'}`);\n };\n ctrl.onPlayerReadyRutube = function () {\n if (ctrl.autoplay) {\n try {\n ctrl.player.mute();\n ctrl.player.play();\n $timeout(function () {\n ctrl.hideCover();\n }, 100);\n } catch {\n /* tslint:disable:no-empty */\n }\n }\n };\n ctrl.onPlayerStateChangeVk = function (event) {\n if (event.state === 'playing') {\n ctrl.hideCover();\n $scope.$digest();\n }\n };\n ctrl.onPlayerStateChangeRutube = function (event) {\n if (event.playerState.PLAYING || event.playerState.PREROLL) {\n $timeout(function () {\n ctrl.hideCover();\n }, 100);\n }\n };\n ctrl.onCompleteRutube = function () {\n if (ctrl.loop) {\n try {\n ctrl.player.seekTo({\n time: 0\n });\n ctrl.player.play();\n } catch {\n /* tslint:disable:no-empty */\n }\n }\n };\n ctrl.pasteVideo = function (src, autoplay, loop) {\n ctrl.playerId = iframeResponsiveService.getPlayerId();\n if (ctrl.useYouTube) {\n ctrl.pasteYTIframeSrc(src, ctrl.playerId, autoplay, loop);\n }\n if (ctrl.useVimeo) {\n ctrl.pasteVimeoIframeSrc(src, ctrl.playerId, autoplay, loop);\n }\n if (ctrl.useRutube) {\n ctrl.pasteRutubeIframeSrc(src, ctrl.playerId, autoplay, loop);\n }\n if (ctrl.useVk) {\n ctrl.pasteVkIframeSrc(src, ctrl.playerId, autoplay, loop);\n }\n if (ctrl.useDzen) {\n ctrl.hideCover();\n ctrl.pasteDzenIframeSrc(src, ctrl.playerId, autoplay, loop);\n }\n };\n}\niframeResponsiveCtrl.$inject = [\"$sce\", \"iframeResponsiveService\", \"$scope\", \"$timeout\"];\nexport default iframeResponsiveCtrl;", "\uFEFFimport iframeResponsivePlayerCodeTemplate from './iframeResponsivePlayerCode.html';\nimport iframeResponsiveUploadTemplate from './iframeResponsiveUpload.html';\nimport iframeResponsiveUploadModalTemplate from './iframeResponsiveUploadModal.html';\nimport iframeResponsiveVideoTemplate from './iframeResponsiveVideo.html';\nimport iframeResponsiveVideoBackgroundTemplate from './iframeResponsiveVideoBackground.html';\n\nexport {\n iframeResponsivePlayerCodeTemplate,\n iframeResponsiveUploadTemplate,\n iframeResponsiveUploadModalTemplate,\n iframeResponsiveVideoTemplate,\n iframeResponsiveVideoBackgroundTemplate,\n};\n", "import * as tpls from '../templates/iframeResponsiveTemplates.js';\n\n/*@ngInject*/\nexport default function iframeResponsiveDirective(iframeResponsiveService, $templateRequest, $compile, urlHelper) {\n return {\n controller: 'IframeResponsiveCtrl',\n controllerAs: '$ctrl',\n bindToController: true,\n priority: 100,\n scope: {\n src: '@',\n videoWidth: '@',\n videoHeight: '@',\n autoplay: '
    '\n };\n}\niframeResponsiveDirective.$inject = [\"iframeResponsiveService\", \"$templateRequest\", \"$compile\", \"urlHelper\"];", "\uFEFFexport default function iframeResponsiveService($q, $window, $http) {\n var service = this,\n initializedYTList = [],\n initializedVimeoList = [],\n playerId = 0,\n regExpIsVkClip = /clip-\\d+_\\d+/,\n regExpVkId = /(?:video|clip)(-?\\d+)_(\\d+)/,\n regExpIdVideo = /(youtu.*be.*)\\/(watch\\?v=|embed\\/|v|shorts|)(.*?((?=[&#?])|$))/,\n regExpIdRutubeVideo = /(?:video|shorts|embed)\\/([a-zA-Z0-9]+)/,\n regExpIframe = new RegExp('(?:])'),\n regExpGetUrlFromSrc = new RegExp('(?:src=\").*?(?=[?\"])'),\n urlRegex = /(http[s]?:)?(\\/\\/)?(www\\.)?[a-zA-Z0-9]+\\.[^\\s]{2,}/,\n loadedYouTubeIframeAPI = false,\n loadedVimeoIframeAPI = false,\n activeItem;\n\n service.checkInitYouTubeIframeAPI = function () {\n return loadedYouTubeIframeAPI;\n };\n\n service.checkInitVimeoIframeAPI = function () {\n return loadedVimeoIframeAPI;\n };\n\n service.checkInitVkAPI = function () {\n return loadedVimeoIframeAPI;\n };\n\n service.addYouTubeIframeAPI = function () {\n var tag = document.createElement('script');\n tag.src = 'https://www.youtube.com/iframe_api';\n var firstScriptTag = document.getElementsByTagName('script')[0];\n firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n };\n\n service.addVimeoIframeAPI = function () {\n var defer = $q.defer();\n initializedVimeoList.push(defer);\n var tag = document.createElement('script');\n tag.src = 'https://www.youtube.com/iframe_api';\n tag.onload = function () {\n initializedVimeoList.forEach(function (defer) {\n defer.resolve();\n });\n loadedVimeoIframeAPI = true;\n };\n var firstScriptTag = document.getElementsByTagName('script')[0];\n firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n return defer.promise;\n };\n\n service.addOnYouTubeIframeAPIReady = function () {\n window.onYouTubeIframeAPIReady = function () {\n initializedYTList.forEach(function (defer) {\n defer.resolve();\n });\n loadedYouTubeIframeAPI = true;\n };\n var defer = $q.defer();\n initializedYTList.push(defer);\n if (!service.checkInitYouTubeIframeAPI()) {\n service.addYouTubeIframeAPI();\n }\n return defer.promise;\n };\n\n service.getPlayerId = function () {\n return 'player' + (playerId += 1);\n };\n\n service.getVideoIdFromYouTube = function (url) {\n return url.match(regExpIdVideo)[3];\n };\n\n service.getVideoIdFromVimeo = function (url) {\n var regexp =\n /(?:www\\.|player\\.)?vimeo.com\\/(?:channels\\/(?:\\w+\\/)?|groups\\/(?:[^\\/]*)\\/videos\\/|album\\/(?:\\d+)\\/video\\/|video\\/|)(\\d+)(?:[a-zA-Z0-9_\\-]+)?/i;\n return url.match(regexp)[1];\n };\n\n service.getYTPlayerAPI = function (elId, videoId, callbacks, autoplay, loop) {\n /* eslint-disable no-undef */\n return new YT.Player(elId, {\n videoId: videoId,\n playerVars: {\n enablejsapi: 1,\n html5: 1,\n fmt: 1,\n showinfo: 0,\n },\n events: callbacks,\n });\n };\n\n service.getVimeoPlayerAPI = function (elId, videoId, autoplay, loop) {\n /* eslint-disable no-undef */\n return new Vimeo.Player(elId, {\n id: videoId,\n autoplay: autoplay != null ? autoplay : false,\n muted: autoplay != null ? autoplay : false,\n loop: loop === true,\n });\n };\n\n service.run = function (obj, type) {\n if (activeItem != null && activeItem.obj !== obj && activeItem.obj.player != null) {\n if (activeItem.type === 'youtube') {\n activeItem.obj.player.pauseVideo();\n } else if (activeItem.type === 'vimeo') {\n activeItem.obj.player.pause();\n }\n if (activeItem.type === 'rutube') {\n activeItem.obj.player.pause();\n }\n }\n\n activeItem = {\n obj: obj,\n type: type,\n };\n };\n\n service.checkUrlFromIframe = function (url) {\n return url.match(regExpIframe);\n };\n\n service.getSrc = function (url) {\n if (service.checkUrlFromIframe(url)) {\n return url.match(regExpGetUrlFromSrc)[0].match(urlRegex)[0];\n }\n return url;\n };\n\n service.isPlayerCode = function (url) {\n return url.match(urlRegex) == null;\n };\n\n service.getYouTubeCode = function (link, autoplay, videoId, loop) {\n link = link.indexOf('https://') === -1 ? 'https://' + link : link;\n link = link.indexOf('www') === -1 ? 'https://www.' + link.split('https://')[1] : link;\n return (\n link.replace('youtu.be', 'youtube.com/embed/').replace('watch?v=', 'embed/').replace('shorts', 'embed').split('&')[0] +\n '?rel=0&enablejsapi=1&showinfo=0' +\n (autoplay || loop ? '&autoplay=1&mute=1&' : '') +\n (loop ? 'loop=1&controls=0&wmode=transparent&playlist=' + videoId + '' : '')\n );\n };\n\n service.getVimeoCode = function (link, autoplay, loop) {\n return (\n 'https://player.vimeo.com/video' +\n link.split('vimeo.com')[link.split('vimeo.com').length - 1] +\n '?title=0&byline=0&portrait=0' +\n (autoplay ? '&autoplay=1&muted=1' : '') +\n (loop ? '&loop=1' : '')\n );\n };\n\n service.getYTCover = function (YTVideoId) {\n return 'https://i.ytimg.com/vi/' + YTVideoId + '/maxresdefault.jpg';\n };\n\n service.getVimeoCover = function (vimeoId) {\n return $http\n .get('https://vimeo.com/api/oembed.json?url=https%3A//vimeo.com/' + vimeoId, {\n format: 'json',\n width: '1280',\n })\n .then(function (response) {\n return response;\n })\n .catch(function (error) {\n console.error(error);\n });\n };\n\n /// #region Rutube\n // https://github.com/rutube/RutubePlayerJSAPI\n // https://github.com/evikza/rutube-player/blob/main/rt.js\n\n service.getVideoIdFromRutube = function (url) {\n const match = url.match(regExpIdRutubeVideo);\n return match && match[1];\n };\n\n service.getRutubeCode = function (link, autoplay, loop) {\n const videoId = service.getVideoIdFromRutube(link);\n return `https://rutube.ru/play/embed/${videoId}?autoplay=${autoplay ? '1' : '0'}`;\n };\n\n const Rutube = function () {\n this.Player = function (id, config) {\n this.selector = id;\n this.config = config;\n };\n\n this.getId = function () {\n return this.selector;\n };\n\n this.triggerEventObserver = function (env, args = null) {\n if (!this.config.events || !this.config.events[env]) return;\n\n return this.config.events[env](args);\n };\n\n this.setPlayerState = function (status) {\n const playerState = {\n playerState: { PLAYING: 0, PAUSED: 0, STOPPED: 0, PREROLL: 0 },\n };\n\n for (let state in playerState.playerState) {\n if (state.toLowerCase() === status.toLowerCase()) {\n playerState.playerState[state] = 1;\n\n break;\n }\n }\n\n return playerState;\n };\n\n for (let [iterator, type] of Object.entries({\n play: 'play',\n pause: 'pause',\n stop: 'stop',\n seekTo: 'setCurrentTime',\n changeVideo: 'changeVideo',\n mute: 'mute',\n unMute: 'unMute',\n setVolume: 'setVolume',\n })) {\n this[iterator] = function (data = {}) {\n document.getElementById(this.selector).contentWindow.postMessage(\n JSON.stringify({\n type: 'player:' + type,\n data: data,\n }),\n '*',\n );\n };\n }\n\n this.playerEvent = function (receivedMessage) {\n switch (receivedMessage.type) {\n case 'player:ready':\n this.triggerEventObserver('onReady');\n break;\n\n case 'player:changeState':\n this.triggerEventObserver('onStateChange', this.setPlayerState(receivedMessage.data.state));\n break;\n\n case 'player:rollState': // \u0440\u0435\u043A\u043B\u0430\u043C\u0430\n this.triggerEventObserver('onStateChange', this.setPlayerState('preroll'));\n break;\n\n case 'player:playComplete':\n this.triggerEventObserver('onComplete');\n break;\n }\n };\n\n window.addEventListener(\n 'message',\n function (event) {\n const receivedMessage = JSON.parse(event.data);\n this.playerEvent(receivedMessage);\n }.bind(this),\n 0,\n );\n };\n\n service.getRutubePlayer = function (playerId, events) {\n let rt = new Rutube();\n rt.Player(playerId, events);\n return rt;\n };\n\n // #endregion\n\n service.getVideoIdsFromVk = function (url) {\n const ids = url.match(regExpVkId);\n if (ids.length) {\n return ids.slice(1);\n }\n };\n service.checkIsVkClip = function (url) {\n return regExpIsVkClip.test(url);\n };\n\n service.addVkAPI = function () {\n return new Promise((resolve) => {\n if (!service.checkInitVkAPI()) {\n const tag = document.createElement('script');\n tag.src = 'https://vk.com/js/api/videoplayer.js';\n const firstScriptTag = document.getElementsByTagName('script')[0];\n firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n tag.onload = () => {\n resolve();\n };\n } else {\n resolve();\n }\n });\n };\n\n service.getVkPlayer = function (iframe) {\n return VK?.VideoPlayer(iframe);\n };\n}\n\niframeResponsiveService.$inject = ['$q', '$window', '$http'];\n", "\uFEFFimport lozadAdvModule from '../lozad-adv/lozadAdv.module.js';\n\nimport './styles/iframe-responsive.scss';\n\nimport iframeResponsiveCtrl from './controllers/iframeResponsiveController.js';\nimport iframeResponsiveDirective from './directives/iframeResponsiveDirective.js';\nimport iframeResponsiveService from './services/iframeResponsiveService.js';\n\nconst moduleName = 'iframeResponsive';\n\nangular\n .module(moduleName, [lozadAdvModule])\n .directive('iframeResponsive', iframeResponsiveDirective)\n .service('iframeResponsiveService', iframeResponsiveService)\n .controller('IframeResponsiveCtrl', iframeResponsiveCtrl);\n\nexport default moduleName;\n", "function VideosCtrl($http, $sce, $timeout) {\n var ctrl = this;\n ctrl.$onInit = function () {\n ctrl.getVideos();\n };\n ctrl.getVideos = function () {\n return $http.get('productExt/getvideos', {\n params: {\n productId: ctrl.productId\n }\n }).then(function (response) {\n ctrl.videos = response.data;\n for (var i = 0; i < ctrl.videos.length; i++) {\n ctrl.videos[i].PlayerCode = $sce.trustAsHtml(ctrl.videos[i].PlayerCode);\n }\n if (ctrl.onReceive != null) {\n $timeout(function () {\n ctrl.onReceive({});\n });\n }\n return response.data;\n });\n };\n}\nVideosCtrl.$inject = [\"$http\", \"$sce\", \"$timeout\"];\nexport default VideosCtrl;", "import videosTemplateTemplate from '../templates/videosTemplate.html';\nfunction videosDirective() {\n return {\n restrict: 'A',\n controller: 'VideosCtrl',\n controllerAs: 'videos',\n scope: {\n productId: '@',\n onReceive: '&',\n },\n bindToController: true,\n replace: true,\n templateUrl: videosTemplateTemplate,\n };\n}\n\nexport { videosDirective };\n", "\uFEFFimport iframeResponsive from '../../_common/iframe-responsive/iframeResponsive.module.js';\n\nimport VideosCtrl from './controllers/videosController.js';\nimport { videosDirective } from './directives/videosDirective.js';\n\nconst moduleName = 'videos';\n\nconst deps = [iframeResponsive];\n\nangular.module(moduleName, deps).controller('VideosCtrl', VideosCtrl).directive('videos', videosDirective);\n\nexport default moduleName;\n", ".zoomer {\r\n position: relative;\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.zoomer-window {\r\n position: absolute;\r\n background-repeat: no-repeat;\r\n background-color: #fff;\r\n z-index: 5;\r\n}\r\n\r\n.zoomer-lens {\r\n position: absolute;\r\n background: rgba(0, 0, 0, 0.5);\r\n z-index: 15;\r\n}\r\n\r\n.zoomer-processing::after {\r\n content: \"\";\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n bottom: 0;\r\n left: 0;\r\n background: rgba(255, 255, 255, 0.5);\r\n}\r\n\r\n.zoomer-inner + .zoomer-window {\r\n cursor: crosshair;\r\n}\r\n\r\n.zoomer-right + .zoomer-window {\r\n margin-left: 0.3125rem;\r\n}\r\n\r\n.zoomer-window-title {\r\n position: absolute;\r\n color: #fff;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n background: rgba(0, 0, 0, 0.5);\r\n text-align: center;\r\n white-space: normal;\r\n padding: 0.3125rem;\r\n}", "function ZoomerCtrl($element, $q, $window) {\n const ctrl = this,\n previewImageSize = {};\n ctrl.$onInit = function () {\n ctrl.isShowZoom = false;\n ctrl.isProcessing = false;\n ctrl.zoomPos = {\n left: 0,\n top: 0\n };\n ctrl.zoomSizes = {\n top: 0,\n left: 0,\n width: 0,\n height: 0,\n originalWidth: 0,\n originalHeight: 0\n };\n ctrl.zoomerSizes = {\n top: 0,\n left: 0,\n width: 0,\n height: 0\n };\n ctrl.lensSizes = {\n top: 0,\n left: 0,\n width: 0,\n height: 0\n };\n };\n ctrl.getSizePreview = function () {\n return {\n left: $element[0].offsetLeft,\n top: $element[0].offsetTop,\n width: $element[0].offsetWidth,\n height: $element[0].offsetHeight\n };\n };\n ctrl.getSizeOriginal = function (url) {\n return ctrl.getImage(url).then(function (image) {\n return {\n width: image.naturalWidth,\n height: image.naturalHeight\n };\n });\n };\n ctrl.getImage = function (url) {\n ctrl.isProcessing = true;\n const defered = $q.defer(),\n img = new Image();\n img.src = url;\n if (img.complete === true || typeof img.naturalWidth !== 'undefined' && img.naturalWidth > 0) {\n defered.resolve(img);\n } else {\n img.onload = function (e) {\n defered.resolve(img);\n };\n }\n return defered.promise.then(function (response) {\n ctrl.isProcessing = false;\n return response;\n });\n };\n ctrl.active = function (event) {\n event.preventDefault();\n event.stopPropagation();\n ctrl.getSizeOriginal(ctrl.originalPath).then(imageOriginalSize => ctrl.getSizeOriginal(ctrl.previewPath).then(imagePreviewSize => {\n return {\n imageOriginalSize,\n imagePreviewSize\n };\n })).then(function ({\n imageOriginalSize,\n imagePreviewSize\n }) {\n const previewSize = ctrl.getSizePreview();\n ctrl.zoomerSizes.left = previewSize.left;\n ctrl.zoomerSizes.top = previewSize.top;\n ctrl.zoomerSizes.width = previewSize.width;\n ctrl.zoomerSizes.height = previewSize.height;\n if (ctrl.type === 'inner') {\n ctrl.zoomSizes.top = previewSize.top;\n ctrl.zoomSizes.left = previewSize.left;\n ctrl.zoomSizes.height = previewSize.height;\n ctrl.zoomSizes.width = previewSize.width;\n } else {\n switch (ctrl.type) {\n case 'right':\n ctrl.zoomSizes.top = previewSize.top;\n ctrl.zoomSizes.left = previewSize.left + previewSize.width;\n break;\n case 'left':\n ctrl.zoomSizes.top = previewSize.top;\n ctrl.zoomSizes.left = previewSize.left - previewSize.width;\n break;\n default:\n ctrl.zoomSizes.top = previewSize.top;\n ctrl.zoomSizes.left = previewSize.left + previewSize.width;\n }\n const _zoomWidth = imagePreviewSize.width < ctrl.zoomWidth ? imagePreviewSize.width : ctrl.zoomWidth;\n const _zoomHeight = imagePreviewSize.height < ctrl.zoomHeight ? imagePreviewSize.width : ctrl.zoomHeight;\n ctrl.zoomSizes.width = _zoomWidth < imageOriginalSize.width ? _zoomWidth : imageOriginalSize.width;\n ctrl.zoomSizes.height = _zoomHeight < imageOriginalSize.height ? _zoomHeight : imageOriginalSize.height;\n }\n ctrl.zoomSizes.originalHeight = imageOriginalSize.height;\n ctrl.zoomSizes.originalWidth = imageOriginalSize.width;\n ctrl.isShowZoom = true;\n });\n };\n ctrl.update = function (event) {\n event.preventDefault();\n event.stopPropagation();\n let rect, pointX, pointY;\n rect = $element[0].getBoundingClientRect();\n pointX = event.pageX - (rect.left + $window.pageXOffset);\n pointY = event.pageY - (rect.top + $window.pageYOffset);\n if (ctrl.isShowZoom === true) {\n const scaleOriginal = ctrl.zoomSizes.originalWidth / ctrl.zoomerSizes.width,\n scalePreview = ctrl.zoomerSizes.width / ctrl.zoomSizes.originalWidth;\n ctrl.lensSizes.width = ctrl.zoomSizes.width * scalePreview;\n ctrl.lensSizes.height = ctrl.zoomSizes.height * scalePreview;\n const lensLeft = pointX - ctrl.lensSizes.width / 2,\n lensTop = pointY - ctrl.lensSizes.height / 2;\n const lensLimit = {\n left: 0,\n top: 0,\n right: ctrl.zoomerSizes.width - ctrl.lensSizes.width,\n bottom: ctrl.zoomerSizes.height - ctrl.lensSizes.height\n };\n if (lensTop < lensLimit.top) {\n ctrl.lensSizes.top = 0;\n } else if (lensTop > lensLimit.bottom) {\n ctrl.lensSizes.top = lensLimit.bottom;\n } else {\n ctrl.lensSizes.top = lensTop;\n }\n if (lensLeft < lensLimit.left) {\n ctrl.lensSizes.left = 0;\n } else if (lensLeft > lensLimit.right) {\n ctrl.lensSizes.left = lensLimit.right;\n } else {\n ctrl.lensSizes.left = lensLeft;\n }\n const zoomImageLeft = (ctrl.lensSizes.left + ctrl.lensSizes.width) * scaleOriginal,\n zoomImageTop = (ctrl.lensSizes.top + ctrl.lensSizes.height) * scaleOriginal;\n if (zoomImageLeft >= ctrl.zoomSizes.width) {\n ctrl.zoomPos.left = -(zoomImageLeft - ctrl.zoomSizes.width);\n }\n if (zoomImageTop >= ctrl.zoomSizes.height) {\n ctrl.zoomPos.top = -(zoomImageTop - ctrl.zoomSizes.height);\n }\n }\n };\n ctrl.deactive = function () {\n ctrl.isShowZoom = false;\n };\n ctrl.lensMove = ctrl.update;\n ctrl.getZoomerClass = function () {\n var obj = {};\n obj['zoomer-' + ctrl.type] = true;\n obj['zoomer-processing'] = ctrl.isProcessing;\n return obj;\n };\n}\nZoomerCtrl.$inject = [\"$element\", \"$q\", \"$window\"];\nexport default ZoomerCtrl;", "import zoomerWindowTemplate from '../templates/zoomerWindow.html';\nvar isTouchDevice = 'ontouchstart' in document.documentElement;\n\n/* @ngInject */\nfunction zoomerDirective($rootScope, $window, $compile, zoomerConfig) {\n return {\n restrict: 'A',\n scope: {\n previewPath: '=',\n originalPath: '=',\n type: '@',\n zoomWidth: '=?',\n zoomHeight: '=?',\n zoomerTitle: '=?'\n },\n replace: true,\n transclude: true,\n template: '',\n controller: 'ZoomerCtrl',\n controllerAs: 'zoomer',\n bindToController: true,\n link: function (scope, element, attrs, ctrl) {\n var init = function () {\n if (angular.isUndefined(ctrl.zoomWidth)) {\n ctrl.zoomWidth = zoomerConfig.zoomWidth;\n }\n if (angular.isUndefined(ctrl.zoomHeight)) {\n ctrl.zoomHeight = zoomerConfig.zoomHeight;\n }\n if (angular.isUndefined(ctrl.type)) {\n ctrl.type = zoomerConfig.type;\n }\n var scopeWindow = scope.$new(),\n zoomerWindow = angular.element('
    ');\n scopeWindow.parentScope = ctrl;\n element.after(zoomerWindow);\n $compile(zoomerWindow)(scopeWindow);\n ['touchstart', 'mouseenter'].forEach(function (eventName) {\n element[0].addEventListener(eventName, function (event) {\n ctrl.active(event);\n scope.$apply();\n });\n });\n ['touchmove', 'mousemove'].forEach(function (eventName) {\n element[0].addEventListener(eventName, function (event) {\n ctrl.update(event);\n scope.$apply();\n });\n });\n ['touchend', 'mouseleave'].forEach(function (eventName) {\n element[0].addEventListener(eventName, function (event) {\n ctrl.deactive(event);\n scope.$apply();\n });\n });\n if (ctrl.type !== 'inner') {\n var scopeLens = $rootScope.$new(),\n zoomerLens = angular.element('
    ');\n scopeLens.parentScope = ctrl;\n element.append(zoomerLens);\n $compile(zoomerLens)(scopeLens);\n }\n };\n if (document.readyState != `complete`) {\n $window.addEventListener('load', function load() {\n $window.removeEventListener('load', load);\n init();\n });\n } else {\n init();\n }\n }\n };\n}\nzoomerDirective.$inject = [\"$rootScope\", \"$window\", \"$compile\", \"zoomerConfig\"];\nfunction zoomerLensDirective() {\n return {\n //require: '^zoomer',\n restrict: 'A',\n replace: true,\n scope: true,\n template: \"
    \",\n link: function (scope, element, attrs, ctrl) {\n //var zoomerCtrl = ctrl;\n //element[0].addEventListener('touchmove', function (event) {\n // zoomerCtrl.update(event);\n // scope.$apply();\n //});\n }\n };\n}\nfunction zoomerWindowDirective() {\n return {\n restrict: 'A',\n replace: true,\n scope: true,\n templateUrl: zoomerWindowTemplate,\n link: function (scope, element, attrm, ctrls) {\n //var zoomerCtrl = ctrls[0];\n\n //element[0].addEventListener('mouseenter', zoomerCtrl.active);\n //element[0].addEventListener('mouseleave', zoomerCtrl.deactive);\n //element[0].addEventListener('mousemove', zoomerCtrl.update);\n\n if (scope.$parent.parentScope.type === 'inner') {\n ['touchstart', 'mouseenter'].forEach(function (eventName) {\n element[0].addEventListener(eventName, function (event) {\n scope.$parent.parentScope.active(event);\n scope.$apply();\n });\n });\n }\n ['touchmove', 'mousemove'].forEach(function (eventName) {\n element[0].addEventListener(eventName, function (event) {\n scope.$parent.parentScope.update(event);\n scope.$apply();\n });\n });\n ['touchend', 'mouseleave'].forEach(function (eventName) {\n element[0].addEventListener(eventName, function (event) {\n scope.$parent.parentScope.deactive(event);\n scope.$apply();\n });\n });\n }\n };\n}\nexport { zoomerDirective, zoomerLensDirective, zoomerWindowDirective };", "\uFEFFimport './styles/zoomer.scss';\n\nimport ZoomerCtrl from './controllers/zoomerController.js';\nimport { zoomerDirective, zoomerLensDirective, zoomerWindowDirective } from './directives/zoomerDirectives.js';\n\nconst moduleName = 'zoomer';\n\nangular\n .module(moduleName, [])\n .controller('ZoomerCtrl', ZoomerCtrl)\n .directive('zoomer', zoomerDirective)\n .directive('zoomerLens', zoomerLensDirective)\n .directive('zoomerWindow', zoomerWindowDirective)\n .constant('zoomerConfig', {\n zoomWidth: 350,\n zoomHeight: 350,\n type: 'right', // right/inner\n });\n\nexport default moduleName;\n", ".custom-options-list {\r\n display: table;\r\n width: 100%;\r\n table-layout: fixed;\r\n}\r\n.custom-options-row {\r\n display: table-row;\r\n}\r\n.custom-options-name, .custom-options-value {\r\n display: table-cell;\r\n vertical-align: middle;\r\n}\r\n.custom-options-name {\r\n padding: 0.3125rem 0.3125rem 0.3125rem 0;\r\n}\r\n.custom-options-value {\r\n padding: 0.3125rem 0 0.3125rem 0.3125rem;\r\n}\r\n.custom-options--additional-goods .custom-options-list {\r\n display: grid !important;\r\n grid-row-gap: 20px;\r\n row-gap: 20px;\r\n}\r\n.custom-options--additional-goods .custom-options-name,\r\n.custom-options--additional-goods .custom-options-list,\r\n.custom-options--additional-goods .custom-options-value,\r\n.custom-options--additional-goods .custom-options-row {\r\n display: block;\r\n}\r\n.custom-options--additional-goods .custom-options-name {\r\n padding: 0;\r\n display: grid;\r\n grid-row-gap: 10px;\r\n row-gap: 10px;\r\n}\r\n.custom-options--additional-goods .custom-options-name > label {\r\n font-weight: 600;\r\n font-size: 28px;\r\n line-height: 1.1 !important;\r\n}\r\n.custom-options--additional-goods .custom-options-value {\r\n padding: 0;\r\n}\r\n.custom-options--additional-goods .custom-options-inner {\r\n display: grid;\r\n grid-row-gap: 10px;\r\n row-gap: 10px;\r\n}\r\n.custom-options--additional-goods .custom-options-control {\r\n display: flex;\r\n align-items: center;\r\n -moz-column-gap: 16px;\r\n column-gap: 16px;\r\n padding: 16px 16px 16px 20px;\r\n border-radius: 15px;\r\n border-width: 1px;\r\n border-style: solid;\r\n border-color: transparent;\r\n background: #fff;\r\n}\r\n.custom-options--additional-goods .custom-options-control .adv-checkbox-emul,\r\n.custom-options--additional-goods .custom-options-control .adv-radio-emul {\r\n margin-right: 0;\r\n}\r\n.custom-options--additional-goods .custom-options-control .custom-input-native:focus ~ .custom-input-checkbox {\r\n box-shadow: none !important;\r\n}\r\n.custom-options--additional-goods .custom-options-control .custom-input-checkbox:hover,\r\n.custom-options--additional-goods .custom-options-control .custom-input-radio:hover {\r\n box-shadow: none !important;\r\n}\r\n.custom-options--additional-goods .custom-options-control--pointer {\r\n cursor: pointer;\r\n}\r\n.custom-options--additional-goods .custom-options-control-info {\r\n display: grid;\r\n grid-row-gap: 12px;\r\n row-gap: 12px;\r\n flex-grow: 1;\r\n}\r\n.custom-options--additional-goods .custom-options-img-wrap {\r\n max-width: 70px;\r\n}\r\n.custom-options--additional-goods .custom-options-img-wrap > img {\r\n display: block;\r\n}\r\n.custom-options--additional-goods .custom-options-text-header {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n -moz-column-gap: 5px;\r\n column-gap: 5px;\r\n}\r\n.custom-options--additional-goods .custom-options-text {\r\n display: grid;\r\n grid-row-gap: 6px;\r\n row-gap: 6px;\r\n padding-top: 0 !important;\r\n}\r\n.custom-options--additional-goods .custom-options-price {\r\n font-size: 14px;\r\n font-weight: bolder;\r\n line-height: 1.1;\r\n}\r\n.custom-options--additional-goods .custom-options-title {\r\n font-size: 14px;\r\n font-weight: 600;\r\n line-height: 1.1;\r\n}\r\n.custom-options--additional-goods .custom-options-item-description {\r\n font-size: 14px;\r\n line-height: 1.2;\r\n}\r\n.custom-options--additional-goods .custom-options-item-counter {\r\n width: 110px;\r\n cursor: auto;\r\n}\r\n.custom-options--additional-goods .custom-options-item-counter .spinbox-input {\r\n pointer-events: none !important;\r\n}\r\n.custom-options--additional-goods .custom-options-item-counter .spinbox-button-disabled {\r\n opacity: 0.5;\r\n}", "function CustomOptionsCtrl(customOptionsService, toaster, $timeout, $q) {\n var ctrl = this,\n canceler = null,\n timeoutId;\n ctrl.$onInit = function () {\n customOptionsService.getData(ctrl.productId).then(function (customOptions) {\n ctrl.items = customOptions;\n $timeout(() => {\n customOptionsService.get(ctrl.productId, ctrl.items).then(function (data) {\n ctrl.xml = data.xml;\n ctrl.jsonHash = data.jsonHash;\n if (ctrl.initFn != null) {\n ctrl.initFn({\n customOptions: ctrl\n });\n }\n ctrl.changeFn();\n });\n }, 0);\n });\n };\n ctrl.eventDebounce = function (value, item, option, customOptionComboView = false) {\n if (timeoutId != null) {\n clearTimeout(timeoutId);\n }\n timeoutId = setTimeout(ctrl.change.bind(ctrl, value, item, option, customOptionComboView), 0);\n };\n ctrl.change = function (value, item, option, customOptionComboView = false) {\n if (value == null) {\n if (item.DefaultQuantity != null) {\n item.DefaultQuantity = item.MinQuantity || 0;\n } else {\n option.DefaultQuantity = option.MinQuantity || 0;\n }\n }\n if (option) {\n if (item.InputType === 6) {\n if (option.MaxQuantity > 1 && option.DefaultQuantity === 0) {\n option.Selected = false;\n }\n }\n if (item.InputType === 2) {\n if (item.MaxQuantity > 1) {\n item.Selected = !(option.DefaultQuantity === 0 && item.IsRequired === false);\n }\n }\n if (!ctrl.isValidQuantity(option.DefaultQuantity || 1, item, option)) {\n option.Selected = false;\n return;\n }\n }\n if (canceler) {\n canceler.resolve();\n }\n canceler = $q.defer();\n customOptionsService.get(ctrl.productId, ctrl.items, canceler.promise).then(function (data) {\n if (!data) return;\n ctrl.xml = data.xml;\n ctrl.jsonHash = data.jsonHash;\n ctrl.changeFn({\n item: item\n });\n });\n };\n ctrl.findSelectedOptionByOptionId = function (selectedOption, options) {\n return options.find(it => selectedOption.OptionId === it.OptionId);\n };\n ctrl.isValidQuantity = function (nextValueOption, item, option) {\n const isValid = customOptionsService.isValidAddOption(nextValueOption, item, option);\n if (isValid === false) {\n ctrl.notifyWarning(`\u0412\u044B \u043C\u043E\u0436\u0435\u0442\u0435 \u0432\u044B\u0431\u0440\u0430\u0442\u044C \u0438\u0437 \u044D\u0442\u043E\u0439 \u0433\u0440\u0443\u043F\u043F\u044B \u043D\u0435 \u0431\u043E\u043B\u044C\u0448\u0435 ${item.MaxQuantity} \u0442\u043E\u0432\u0430\u0440\u043E\u0432`);\n }\n return isValid;\n };\n ctrl.notifyWarning = function (text) {\n toaster.pop('warning', '', text);\n };\n ctrl.initSelect = function (item) {\n if (item.SelectedOptions != null) {\n if (item.InputType === 6 && item.SelectedOptions?.every(it => it.DefaultQuantity === 0)) {\n item.SelectedOptions.length = 0;\n } else {\n const selectedOptions = [];\n item.Options.forEach(function (option) {\n const selectedOption = item.SelectedOptions.find(selectedOption => selectedOption.OptionId === option.OptionId);\n if (!selectedOption) return;\n option.Selected = true;\n option.DefaultQuantity = selectedOption.DefaultQuantity;\n selectedOptions.push(option);\n });\n if (selectedOptions.length > 0) {\n item.SelectedOptions = selectedOptions;\n }\n }\n } else {\n item.SelectedOptions = item.IsRequired ? [item.Options[0]] : null;\n }\n };\n\n // \u0435\u0441\u043B\u0438 \u043D\u0435\u0442 label \u0434\u043B\u044F checkbox`a\n // \u0438\u0437 \u0437\u0430 label \u0432\u044B\u0437\u044B\u0432\u0430\u0435\u0442\u0441\u044F change 2 \u0440\u0430\u0437\u0430 (\u043E\u0442 spinbox \u0438 label)\n ctrl.selectOption = function (item, option) {\n if (item.InputType === 2 && (item.MaxQuantity === 1 || item.MaxQuantity == null)) {\n item.Selected = !item.Selected;\n ctrl.change(item.Selected, item, option);\n }\n };\n}\nCustomOptionsCtrl.$inject = [\"customOptionsService\", \"toaster\", \"$timeout\", \"$q\"];\nexport default CustomOptionsCtrl;", "import customOptionsTemplate from '../templates/customOptions.html';\n\n/* @ngInject */\nfunction customOptionsDirective(urlHelper) {\n return {\n scope: {\n productId: '<',\n initFn: '&',\n changeFn: '&',\n beforeChangeFn: '&',\n customOptionPicture: ' {\n if (reason?.xhrStatus !== 'abort') {\n console.error(reason);\n }\n });\n };\n service.getSelectedOptions = function (items) {\n let selectedOptions = [];\n for (let i = 0; i < items.length; i++) {\n const customOption = items[i];\n switch (customOption.InputType) {\n // DropDownList, RadioButton\n case 0:\n case 1:\n if (customOption.SelectedOptions != null) {\n if (Array.isArray(customOption.SelectedOptions)) {\n if (customOption.SelectedOptions.length > 0 && customOption.SelectedOptions[0] != null) {\n // \u0440\u0430\u0434\u0438\u043E \u043A\u043D\u043E\u043F\u043A\u0430 \u043D\u0435 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u0430\u044F \u0438\u043C\u0435\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 0\n customOption.SelectedOptions[0].DefaultQuantity = customOption.SelectedOptions[0].DefaultQuantity || 1;\n selectedOptions.push(customOption.SelectedOptions[0]);\n }\n } else {\n customOption.SelectedOptions.DefaultQuantity = customOption.SelectedOptions.DefaultQuantity || 1;\n selectedOptions.push(customOption.SelectedOptions);\n }\n }\n break;\n // TextBoxSingleLine, TextBoxMultiLine\n case 4:\n case 3:\n if (customOption.SelectedOptions != null && customOption.SelectedOptions?.OptionText.length) {\n selectedOptions.push(customOption.SelectedOptions);\n }\n break;\n //CheckBox\n case 2:\n if (customOption.Selected || customOption.IsRequired) {\n customOption.Options[0].DefaultQuantity = customOption.Options[0].DefaultQuantity || 1;\n selectedOptions.push(customOption.Options[0]);\n }\n break;\n //ChoiceOfProduct\n case 5:\n if (customOption.SelectedOptions != null && customOption.SelectedOptions.length > 0 && customOption.SelectedOptions[0] != null) {\n selectedOptions.push(customOption.SelectedOptions[0]);\n } else {\n for (let j = 0; j < customOption.Options.length; j++) {\n var option = customOption.Options[j];\n if (option.MaxQuantity > 0 && option.DefaultQuantity > 0) {\n selectedOptions.push(option);\n }\n }\n }\n break;\n // MultiCheckBox\n case 6:\n for (let j = 0; j < customOption.Options.length; j++) {\n var chekboxOption = customOption.Options[j];\n if (!chekboxOption.Selected) {\n continue;\n }\n if (chekboxOption.MaxQuantity === 1) {\n chekboxOption.DefaultQuantity = 1;\n }\n selectedOptions.push(chekboxOption);\n }\n break;\n default:\n throw Error('Not found InputType for custom options: ' + customOption.InputType);\n }\n }\n return selectedOptions;\n };\n service.isValidAddOption = function (nextValueOption, item, option) {\n if (item.MaxQuantity == null) return true;\n const {\n InputType,\n Options,\n MaxQuantity\n } = item;\n let isValid = true;\n if (InputType === 1) {\n isValid = MaxQuantity >= nextValueOption;\n } else if (InputType === 5) {\n const count = Options.reduce((prev, cur) => prev + (cur.OptionId === option.OptionId ? nextValueOption : cur.DefaultQuantity), 0);\n isValid = MaxQuantity >= count;\n } else if (InputType === 6) {\n const countAllSelected = Options.reduce((prev, cur) => prev + (cur.Selected && cur.OptionId !== option.OptionId ? cur.DefaultQuantity || 1 : 0), 0);\n const count = countAllSelected + nextValueOption;\n isValid = MaxQuantity >= count;\n }\n return isValid;\n };\n service.isValidOptions = function (options) {\n const invalidOptions = new Set();\n let isValidOptions = true;\n options.forEach(it => {\n let isValid = true;\n const {\n MinQuantity,\n MaxQuantity,\n InputType,\n SelectedOptions,\n Options,\n IsRequired\n } = it;\n const getTotalCount = filterFn => Options.reduce((prev, cur) => prev + (filterFn(cur) ? cur.DefaultQuantity || 1 : 0), 0);\n if (MinQuantity != null && MaxQuantity != null) {\n if (InputType === 0 || InputType === 1) {\n if (SelectedOptions?.length > 0 && SelectedOptions[0] != null) {\n isValid = MinQuantity <= SelectedOptions[0].DefaultQuantity && MaxQuantity >= SelectedOptions[0].DefaultQuantity;\n }\n } else if (InputType === 5) {\n const count = getTotalCount(() => true);\n isValid = MinQuantity <= count && MaxQuantity >= count;\n } else if (InputType === 6) {\n const count = getTotalCount(cur => cur.Selected);\n isValid = IsRequired ? count > 0 && MinQuantity <= count && MaxQuantity >= count : MinQuantity <= count && MaxQuantity >= count;\n }\n } else if (InputType === 6) {\n const count = getTotalCount(cur => cur.Selected);\n if (IsRequired && count === 0) {\n isValid = false;\n }\n }\n if (!isValid) {\n isValidOptions = false;\n invalidOptions.add(it);\n }\n });\n return {\n invalidOptions,\n isValidOptions\n };\n };\n service.isEqualCustomOptions = function (target, other) {\n /** @type{(t: IEvaluatedCustomOptions, o: IEvaluatedCustomOptions) => boolean }*/\n const compareOptionsId = (_target, _other) => {\n return _target.CustomOptionId === _other.CustomOptionId && _other.OptionId === _target.OptionId;\n };\n /** @type{(t: IEvaluatedCustomOptions, o: IEvaluatedCustomOptions) => boolean }*/\n const compareOptionValue = (_target, _other) => {\n if (_other.OptionAmount == null && _target.OptionAmount == null) {\n return _other.OptionTitle === _target.OptionTitle;\n }\n return _other.OptionAmount === _target.OptionAmount;\n };\n return target.every(t => {\n return other.find(o => compareOptionsId(t, o) && compareOptionValue(t, o));\n });\n };\n service.customOptionItemToEvaluatedCustomOptionsMapper = options => {\n return options.map(x => {\n return {\n CustomOptionId: x.CustomOptionsId,\n OptionId: x.OptionId,\n OptionAmount: x.DefaultQuantity,\n OptionTitle: x.OptionText,\n OptionPriceBc: x.PriceString,\n CustomOptionTitle: x.Title\n };\n });\n };\n}\ncustomOptionsService.$inject = [\"$http\", \"urlHelper\"];\nexport default customOptionsService;", "\uFEFFimport './styles/customOptions.scss';\n\nimport CustomOptionsCtrl from './controllers/customOptionsController.js';\nimport { customOptionsDirective } from './directives/customOptionsDirectives.js';\nimport customOptionsService from './services/customOptionsService.js';\n\nconst moduleName = 'customOptions';\n\nangular\n .module(moduleName, [])\n .controller('CustomOptionsCtrl', CustomOptionsCtrl)\n .directive('customOptions', customOptionsDirective)\n .service('customOptionsService', customOptionsService);\n\nexport default moduleName;\n", ".color-viewer-item {\r\n line-height: 0;\r\n font-size: 0;\r\n display: inline-block;\r\n padding: 0.0625rem;\r\n /* margin: rem-calc(1px); */\r\n box-sizing: border-box;\r\n border: 1px transparent solid;\r\n vertical-align: middle;\r\n}\r\n\r\n.color-viewer-item,\r\n.color-viewer-inner {\r\n border-radius: 0.1875rem;\r\n position: relative;\r\n cursor: pointer;\r\n}\r\n\r\n.color-viewer-alt .color-viewer-inner {\r\n width: auto !important;\r\n height: auto !important;\r\n padding: 10px;\r\n font-size: 12px;\r\n line-height: 1;\r\n background: transparent !important;\r\n border: 0;\r\n}\r\n\r\n.color-viewer-inner {\r\n display: inline-flex;\r\n background-repeat: no-repeat;\r\n margin: 2px;\r\n background-size: 100% 100%;\r\n border-width: 1px;\r\n border-style: solid;\r\n}\r\n\r\n.color-viewer-header {\r\n font-size: 0.75rem;\r\n margin-bottom: 0.3125rem;\r\n}\r\n\r\n.carousel-colors-wrap {\r\n text-align: center;\r\n}\r\n.carousel-colors-wrap .carousel-inner {\r\n padding: 0;\r\n /* padding: 0 1px; */\r\n}\r\n\r\n.color-viewer-list,\r\n.color-viewer {\r\n display: flex;\r\n flex-wrap: wrap;\r\n /* justify-content: center; */\r\n}\r\n\r\n.carousel-colors {\r\n padding: 0 1.25rem;\r\n}\r\n.carousel-colors.carousel-nav-not-show {\r\n padding: 0;\r\n}\r\n.carousel-colors .color-viewer-list {\r\n flex-wrap: nowrap;\r\n}\r\n\r\n.carousel-colors:not(.carousel-nav-not-show) .carousel-inner,\r\n.products-view-tile .carousel-colors .carousel-inner {\r\n margin-left: auto;\r\n margin-right: auto;\r\n}\r\n\r\n.products-view .carousel-colors {\r\n display: block;\r\n max-width: 100%;\r\n}\r\n\r\n.products-view-tile .carousel-colors.carousel-initilized {\r\n display: block;\r\n}\r\n\r\n.color-viewer-item-block {\r\n border: 1px transparent solid;\r\n display: inline-flex;\r\n cursor: pointer;\r\n border-radius: 0.1875rem;\r\n padding: 2px;\r\n align-items: center;\r\n justify-content: center;\r\n box-sizing: border-box;\r\n width: 100%;\r\n vertical-align: middle;\r\n}\r\n\r\n.color-viewer-item-wrap {\r\n padding: 2px;\r\n vertical-align: middle;\r\n box-sizing: border-box;\r\n flex-shrink: 0;\r\n}\r\n\r\n.color-viewer-item-name {\r\n font-size: 13px;\r\n box-sizing: border-box;\r\n line-height: 1;\r\n}\r\n\r\n.color-viewer-inner + .color-viewer-item-name {\r\n padding-left: 5px;\r\n}\r\n\r\n.color-viewer__color-selected-name {\r\n flex-basis: 100%;\r\n}\r\n\r\n.color-viewer-item-disabled {\r\n position: relative;\r\n pointer-events: none;\r\n color: #94969b;\r\n}\r\n\r\n.color-viewer--icon .color-viewer-item-disabled .color-viewer-inner::after,\r\n.color-viewer--iconandtext .color-viewer-item-disabled .color-viewer-inner::after {\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n bottom: 0;\r\n left: 0;\r\n content: \"\";\r\n display: block;\r\n cursor: default;\r\n pointer-events: none;\r\n background-color: rgba(255, 255, 255, 0.7);\r\n background-size: 100% 100%;\r\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 460.775 460.775' style='enable-background:new 0 0 460.775 460.775' xml:space='preserve'%3E%3Cpath fill='red' d='M285.08 230.397 456.218 59.27c6.076-6.077 6.076-15.911 0-21.986L423.511 4.565a15.55 15.55 0 0 0-21.985 0l-171.138 171.14L59.25 4.565a15.551 15.551 0 0 0-21.985 0L4.558 37.284c-6.077 6.075-6.077 15.909 0 21.986l171.138 171.128L4.575 401.505c-6.074 6.077-6.074 15.911 0 21.986l32.709 32.719a15.555 15.555 0 0 0 21.986 0l171.117-171.12 171.118 171.12a15.551 15.551 0 0 0 21.985 0l32.709-32.719c6.074-6.075 6.074-15.909 0-21.986L285.08 230.397z'/%3E%3C/svg%3E\");\r\n}\r\n\r\n.colors-viewer--in-filter.color-viewer--iconandtext, .colors-viewer--in-filter.color-viewer--text {\r\n justify-content: start;\r\n}\r\n.colors-viewer--in-filter.color-viewer--iconandtext .color-viewer-item-wrap, .colors-viewer--in-filter.color-viewer--text .color-viewer-item-wrap {\r\n flex-grow: 1;\r\n flex-basis: 100%;\r\n}\r\n.colors-viewer--in-filter.color-viewer--iconandtext .color-viewer-item-block, .colors-viewer--in-filter.color-viewer--text .color-viewer-item-block {\r\n justify-content: start;\r\n}\r\n.colors-viewer--in-filter.color-viewer--iconandtext .color-viewer-item-selected, .colors-viewer--in-filter.color-viewer--text .color-viewer-item-selected {\r\n border-color: transparent !important;\r\n}\r\n.colors-viewer--in-filter.color-viewer--iconandtext .color-viewer-item-wrap,\r\n.colors-viewer--in-filter.color-viewer--iconandtext .color-viewer-item-block, .colors-viewer--in-filter.color-viewer--text .color-viewer-item-wrap,\r\n.colors-viewer--in-filter.color-viewer--text .color-viewer-item-block {\r\n padding: 0;\r\n}\r\n.colors-viewer--in-filter.color-viewer--iconandtext.color-viewer--text .color-viewer-item-wrap, .colors-viewer--in-filter.color-viewer--text.color-viewer--text .color-viewer-item-wrap {\r\n padding-top: 3px;\r\n padding-bottom: 3px;\r\n}\r\n.colors-viewer--in-filter.color-viewer--icon {\r\n margin-left: -8px;\r\n}\r\n\r\n.select-custom .color-viewer-item-block,\r\n.select-custom .color-viewer-item-wrap {\r\n border: 0;\r\n padding: 0;\r\n}\r\n.select-custom .color-viewer-item-name {\r\n font-size: inherit;\r\n}\r\n.select-custom .color-viewer-inner {\r\n max-width: 50px;\r\n max-height: 50px;\r\n}\r\n\r\n[ng-transclude-slot=colorsViewerItemBefore]:empty {\r\n display: none;\r\n}", "function ColorsViewerCtrl($element, $scope, $transclude) {\n var ctrl = this,\n stopLoop = false,\n isFindedByStart = false,\n findedStartColorById,\n findedStartColorByIdAndMain;\n ctrl.$onInit = function () {\n ctrl.dirty = false;\n ctrl.multiselect = ctrl.multiselect === true;\n if (ctrl.multiselect === true) {\n ctrl.colorSelected = [];\n if (ctrl.colors != null && ctrl.colors.length > 0) {\n for (var i = 0, len = ctrl.colors.length; i < len; i++) {\n if (ctrl.colors[i].Selected === true) {\n ctrl.colorSelected.push(ctrl.colors[i]);\n }\n }\n }\n ctrl.colorSelectedNamesList = ctrl.colorSelected.join(',');\n } else {\n if (ctrl.startSelectedColors != null && ctrl.startSelectedColors.length > 0) {\n for (var s = 0, lenS = ctrl.startSelectedColors.length; s < lenS; s++) {\n for (var c = 0, lenC = ctrl.colors.length; c < lenC; c++) {\n if (ctrl.colors[c].ColorId === ctrl.startSelectedColors[s]) {\n if (ctrl.colors[c].Main === 1) {\n findedStartColorByIdAndMain = ctrl.colors[c];\n stopLoop = true;\n } else if (findedStartColorById == null) {\n findedStartColorById = ctrl.colors[c];\n }\n isFindedByStart = true;\n }\n }\n if (stopLoop === true) {\n stopLoop = false;\n break;\n }\n }\n }\n if (isFindedByStart === false) {\n for (var m = 0, l = ctrl.colors.length; m < l; m++) {\n if (ctrl.colors[m].Main == true) {\n ctrl.colorSelected = ctrl.colors[m];\n break;\n }\n }\n if (ctrl.colorSelected == null) {\n ctrl.colorSelected = ctrl.colors[0];\n }\n } else {\n ctrl.colorSelected = findedStartColorByIdAndMain || findedStartColorById;\n }\n }\n if (ctrl.initColors != null) {\n ctrl.initColors({\n colorsViewer: ctrl\n });\n }\n };\n ctrl.$postLink = function () {\n if (ctrl.carousel != null) {\n var colorSelectedFirst = ctrl.multiselect ? ctrl.colorSelected[0] : ctrl.colorSelected;\n var colorSelectedFirstIndex = ctrl.colors.indexOf(colorSelectedFirst);\n ctrl.carousel.load = true;\n ctrl.carousel.whenCarouselInit().then(function (carousel) {\n carousel.carouselNative.setItemSelect(colorSelectedFirstIndex);\n carousel.carouselNative.goto(colorSelectedFirstIndex, false);\n });\n }\n };\n ctrl.getImagePath = function (photoName) {\n return photoName.indexOf('://') != -1 ? photoName : 'pictures/color/' + ctrl.imageType.toLowerCase() + '/' + photoName;\n };\n ctrl.selectColor = function (event, color) {\n var indexInSelectedArray;\n if (ctrl.multiselect === true) {\n indexInSelectedArray = ctrl.colorSelected.indexOf(color);\n if (indexInSelectedArray > -1) {\n ctrl.colorSelected.splice(indexInSelectedArray, 1);\n //\u0441\u0432\u043E\u0439\u0441\u0442\u0432\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0432 \u0444\u0438\u043B\u044C\u0442\u0440\u0430\u0445\n color.Selected = false;\n } else {\n ctrl.colorSelected.push(color);\n //\u0441\u0432\u043E\u0439\u0441\u0442\u0432\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0432 \u0444\u0438\u043B\u044C\u0442\u0440\u0430\u0445\n color.Selected = true;\n }\n ctrl.colorSelectedNamesList = ctrl.colorSelected.join(',');\n } else {\n ctrl.colorSelected = color;\n }\n ctrl.dirty = true;\n ctrl.changeColor({\n event: event,\n color: color\n });\n };\n ctrl.selectColorById = function (colorId) {\n var color = ctrl.colors.filter(function (x) {\n return x.ColorId == colorId;\n });\n if (color != null && color.length > 0) {\n ctrl.selectColor(null, color[0]);\n }\n };\n ctrl.getDirtyState = function () {\n return ctrl.dirty;\n };\n}\nColorsViewerCtrl.$inject = [\"$element\", \"$scope\", \"$transclude\"];\nexport default ColorsViewerCtrl;", "import colorsTemplate from '../templates/colors.html';\nimport colorsSelectTemplate from '../templates/colorsSelect.html';\nfunction colorsViewerDirective() {\n return {\n require: {\n carousel: '?^carousel'\n },\n restrict: 'A',\n replace: true,\n templateUrl: (element, attrs) => attrs?.controlType === 'select' ? colorsSelectTemplate : colorsTemplate,\n controller: 'ColorsViewerCtrl',\n controllerAs: 'colorsViewer',\n bindToController: true,\n transclude: {\n colorsViewerItemBefore: '?colorsViewerItemBefore'\n },\n scope: {\n colors: '=',\n colorSelected: '=?',\n startSelectedColors: ' {\n return {\n controllerAs: 'colorsViewerItemBefore',\n controller: [\"$scope\", function ($scope) {\n const ctrl = this;\n ctrl.$onInit = function () {\n $scope.$itemScope = findPropertyInScope($scope, `color`);\n };\n }]\n };\n};\nexport { colorsViewerDirective, colorsViewerItemBeforeComponent };\nconst findPropertyInScope = (scope, propertyName) => {\n let result;\n let item = scope;\n while (item != null) {\n if (item[propertyName] != null) {\n result = item;\n break;\n } else {\n item = item.$parent;\n }\n }\n return result;\n};", "\uFEFFimport './styles/colors-viewer.scss';\n\nimport ColorsViewerCtrl from './controllers/colorsViewerController.js';\nimport { colorsViewerDirective, colorsViewerItemBeforeComponent } from './directives/colorsViewerDirectives.js';\n\nconst moduleName = 'colorsViewer';\n\nangular\n .module(moduleName, [])\n .controller('ColorsViewerCtrl', ColorsViewerCtrl)\n .directive('colorsViewer', colorsViewerDirective)\n .directive('colorsViewerItemBefore', colorsViewerItemBeforeComponent);\n\nexport default moduleName;\n", ".sizes-viewer-block {\r\n display: inline-block;\r\n text-align: center;\r\n}\r\n\r\n.sizes-viewer-item,\r\n.sizes-viewer-inner {\r\n border-radius: 0.1875rem;\r\n position: relative;\r\n cursor: pointer;\r\n}\r\n\r\n.sizes-viewer-item {\r\n border: 1px transparent solid;\r\n display: inline-block;\r\n}\r\n\r\n.sizes-viewer-inner {\r\n margin: 0.25rem;\r\n line-height: 1;\r\n padding: 0.3125rem;\r\n font-size: 0.875rem;\r\n}\r\n\r\n.sizes-viewer-selector {\r\n font-size: 0;\r\n line-height: 0;\r\n}\r\n\r\n.sizes-viewer-radio {\r\n border: 0;\r\n padding: 0;\r\n margin: 0;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n opacity: 0;\r\n cursor: pointer;\r\n position: absolute;\r\n}\r\n\r\n.sizes-viewer-block-slider {\r\n padding: 0 20px;\r\n}\r\n\r\n.sizes-viewer-header {\r\n font-size: 0.75rem;\r\n margin-bottom: 0.3125rem;\r\n}\r\n\r\n.sizes-viewer-item-disabled {\r\n opacity: 0.5;\r\n cursor: default;\r\n}", "\uFEFFfunction SizesViewerCtrl() {\n var ctrl = this;\n\n ctrl.$onInit = function () {\n if (ctrl.startSelectedSizes != null && ctrl.startSelectedSizes.length > 0) {\n for (var s = 0, lenS = ctrl.startSelectedSizes.length; s < lenS; s++) {\n for (var c = 0, lenC = ctrl.sizes.length; c < lenC; c++) {\n if (ctrl.sizes[c].SizeId === ctrl.startSelectedSizes[s]) {\n ctrl.sizeSelected = ctrl.sizes[c];\n break;\n }\n }\n }\n }\n\n ctrl.initSizes({ sizesViewer: ctrl });\n };\n}\n\nexport default SizesViewerCtrl;\n", "import sizesTemplate from '../templates/sizes.html';\nimport sizesSelectTemplate from '../templates/sizesSelect.html';\nfunction sizesViewerDirective() {\n return {\n restrict: 'A',\n replace: true,\n templateUrl: (element, attrs) => (attrs?.controlType === 'select' ? sizesSelectTemplate : sizesTemplate),\n controller: 'SizesViewerCtrl',\n controllerAs: 'sizesViewer',\n bindToController: true,\n scope: {\n sizes: ' 0) {\n toaster.pop('error', null, result.error);\n if (captchaExist) {\n CaptchaSourceBuyInOneClick.ReloadImage();\n }\n } else {\n ctrl.result = result;\n ctrl.success = true;\n ctrl.successFn({\n result: result\n });\n if (ctrl.autoReset != null) {\n $timeout(ctrl.reset, ctrl.autoReset);\n }\n }\n ctrl.process = false;\n });\n }\n };\n ctrl.initCaptcha = function (ngModel) {\n return $http.post('/commonExt/getCaptchaHtml', {\n ngModel: ngModel,\n captchaId: 'CaptchaSourceBuyInOneClick'\n }).then(function (response) {\n return $sce.trustAsHtml(response.data);\n });\n };\n}\nBuyOneClickFormCtrl.$inject = [\"$sce\", \"$timeout\", \"$window\", \"buyOneClickService\", \"toaster\", \"$scope\", \"$http\"];\nexport default BuyOneClickFormCtrl;", "import formTemplate from '../templates/form.html';\n/* @ngInject */\nfunction buyOneClickTriggerDirective(buyOneClickService) {\n return {\n restrict: 'A',\n scope: true,\n controller: 'BuyOneClickTriggerCtrl',\n controllerAs: 'buyOneClickTrigger',\n bindToController: true,\n link: function (scope, element, attrs, ctrl) {\n element.on('click', function (event) {\n event.preventDefault();\n var modalId = element[0].getAttribute('data-buy-one-click-modal');\n ctrl.modalId = modalId != null ? modalId : 'modalBuyOneClick';\n scope.$apply(function () {\n buyOneClickService.showDialog(ctrl.modalId);\n });\n });\n }\n };\n}\nbuyOneClickTriggerDirective.$inject = [\"buyOneClickService\"];\nfunction buyOneClickFormDirective() {\n return {\n restrict: 'A',\n scope: {\n buttonText: '@',\n page: '@',\n orderType: '@',\n offerId: '=?',\n productId: '=?',\n amount: '=?',\n attributesXml: '=?',\n formInit: '&',\n successFn: '&',\n fieldsOptions: '=?',\n autoReset: '=?',\n buyOneClickValid: '&',\n compactMode: '@',\n agreementDefaultChecked: ' void} function for remove it callback\n */\n subscribe(eventName, callback) {\n if (!this.events[eventName]) {\n this.events[eventName] = [];\n }\n\n const id = this.events[eventName].push(callback) - 1;\n\n return () => {\n this.events[eventName].splice(id, 1);\n };\n }\n /**\n * Notify subscribes callbacks\n * @param {string} eventName\n * @param {any} data - data to params callback.\n * @returns {boolean} True, if publish success. False, if fail\n */\n publish(eventName, ...data) {\n const event = this.events[eventName];\n if (!event) {\n return false;\n }\n\n event.forEach((callback) => callback(...data));\n\n //TODO: remove when we give up JQ\n $(document).trigger(eventName, [...data]);\n\n return true;\n }\n /**\n * Get all subscribes on event\n * @param {string} eventName\n * @returns {Array} array subscribes\n */\n getSubscribes(eventName) {\n return this.events[eventName];\n }\n /**\n * Clear all events.\n */\n clear() {\n this.events = {};\n }\n}\n\nconst PubSub = new PubSubClass();\nglobalThis.PubSub = PubSub;\nexport { PubSub };\n", "import { PubSub } from '../../../_common/PubSub/PubSub.js';\n/* @ngInject */\nfunction buyOneClickService($http, $sce, modalService) {\n var service = this,\n modalId = 'modalBuyOneClick',\n isRenderDialog = false;\n service.showDialog = function (modalId) {\n modalService.open(modalId);\n PubSub.publish('buy_one_click_pre');\n };\n service.getFieldsOptions = function () {\n return $http.get('checkout/checkoutbuyinoneclickfields').then(function (response) {\n return response.data;\n });\n };\n service.getCustomerInfo = function () {\n return $http.get('checkout/checkoutbuyinoneclickcustomer').then(function (response) {\n return response.data;\n });\n };\n service.modalFooterShow = function (modalId, show) {\n modalService.setVisibleFooter(modalId, show);\n };\n service.checkout = function (page, orderType, offerId, productId, amount, attributesXml, name, email, phone, comment, captchaCode, captchaSource, isAgreeForPromotionalNewsletter) {\n let params = {\n page: page,\n orderType: orderType,\n offerId: offerId,\n productId: productId,\n amount: amount,\n attributesXml: attributesXml,\n name: name,\n email: email,\n phone: phone,\n comment: comment,\n captchaCode: captchaCode,\n captchaSource: captchaSource,\n isAgreeForPromotionalNewsletter: isAgreeForPromotionalNewsletter\n };\n return $http.post('checkout/checkoutbuyinoneclick', params).then(function (response) {\n if (response.data.error === null || response.data.length === 0) {\n PubSub.publish('buy_one_click_confirm');\n }\n return response.data;\n });\n };\n}\nbuyOneClickService.$inject = [\"$http\", \"$sce\", \"modalService\"];\nexport default buyOneClickService;", "\uFEFFimport './styles/buyOneClick.scss';\n\nimport BuyOneClickTriggerCtrl from './controllers/buyOneClickTriggerController.js';\nimport BuyOneClickFormCtrl from './controllers/buyOneClickFormController.js';\nimport { buyOneClickFormDirective, buyOneClickTriggerDirective } from './directives/buyOneClickDirectives.js';\nimport buyOneClickService from './services/buyOneClickService.js';\n\nconst moduleName = 'buyOneClick';\n\nangular\n .module(moduleName, [])\n .service('buyOneClickService', buyOneClickService)\n .directive('buyOneClickForm', buyOneClickFormDirective)\n .directive('buyOneClickTrigger', buyOneClickTriggerDirective)\n .controller('BuyOneClickTriggerCtrl', BuyOneClickTriggerCtrl)\n .controller('BuyOneClickFormCtrl', BuyOneClickFormCtrl);\n\nexport default moduleName;\n", "/* stylelint-disable */\r\n/* stylelint-enable */\r\n.adv-modal .adv-modal-inner.pre-order-dialog,\r\n.pre-order-dialog {\r\n min-width: 35vw;\r\n max-width: 35vw;\r\n}\r\n\r\n@media (min-device-width : 768px) and (max-device-width : 1024px) {\r\n .pre-order-dialog {\r\n min-width: 70vw;\r\n }\r\n}\r\n.pre-order-dialog-buttons {\r\n text-align: right;\r\n margin-top: 0.625rem;\r\n}", "function PreOrderTriggerCtrl($window, toaster, preOrderService) {\n var ctrl = this;\n ctrl.formInit = function (form) {\n ctrl.form = form;\n };\n ctrl.modalCallbackClose = function (modalScope) {\n if (ctrl.form.result != null && ctrl.form.showRedirectButton === true) {\n window.location = ctrl.form.result.url;\n }\n if (ctrl.form.success === true) {\n ctrl.form.reset();\n }\n };\n ctrl.successFn = function (result) {\n if (result != null) {\n window.location = result;\n } else {\n preOrderService.modalFooterShow(ctrl.modalId, false);\n }\n };\n}\nPreOrderTriggerCtrl.$inject = [\"$window\", \"toaster\", \"preOrderService\"];\nexport default PreOrderTriggerCtrl;", "function PreOrderFormCtrl($sce, $timeout, $window, preOrderService, toaster, $scope, $http) {\n var ctrl = this;\n ctrl.$onInit = function () {\n ctrl.getFormData();\n if (ctrl.formInit != null) {\n ctrl.formInit({\n form: ctrl\n });\n }\n };\n ctrl.getFormData = function () {\n return preOrderService.getFormData().then(function (responseData) {\n ctrl.data = responseData.data;\n ctrl.field = responseData.field;\n if (ctrl.field.EnableCaptchaInPreOrder) {\n ctrl.initCaptcha('preOrderForm.captchaCode').then(function (data) {\n ctrl.captchaHtml = data;\n });\n }\n return ctrl.data;\n });\n };\n ctrl.reset = function () {\n ctrl.data.FirstName = '';\n ctrl.data.LastName = '';\n ctrl.data.Email = '';\n ctrl.data.Phone = '';\n ctrl.data.Comment = '';\n ctrl.form.$setPristine();\n };\n ctrl.send = function () {\n var isValid = ctrl.preOrderValid();\n if (isValid === true || isValid == null) {\n ctrl.process = true;\n var captchaExist = typeof CaptchaSourcePreOrder != 'undefined' && CaptchaSourcePreOrder != null;\n var captchaInstanceId = captchaExist ? CaptchaSourcePreOrder.InstanceId : null;\n ctrl.data.OfferId = ctrl.offerId;\n ctrl.data.ProductId = ctrl.productId;\n ctrl.data.Amount = ctrl.amount;\n ctrl.data.OptionsHash = ctrl.jsonHash;\n ctrl.data.IsLanding = ctrl.isLanding;\n ctrl.data.CaptchaCode = ctrl.captchaCode;\n ctrl.data.CaptchaSource = captchaInstanceId;\n preOrderService.send(ctrl.data).then(function (data) {\n if (data.result === true) {\n ctrl.result = data.obj;\n ctrl.successFn({\n result: ctrl.result\n });\n if (ctrl.autoReset != null) {\n $timeout(ctrl.reset, ctrl.autoReset);\n }\n } else if (data.errors && data.errors.length) {\n data.errors.forEach(function (error) {\n toaster.pop('error', error);\n });\n ctrl.captchaCode = null;\n } else {\n toaster.pop('error', '\u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u0440\u0438 \u043E\u0442\u043F\u0440\u0430\u0432\u043A\u0435');\n ctrl.captchaCode = null;\n }\n if (captchaExist) {\n CaptchaSourcePreOrder.ReloadImage();\n }\n ctrl.process = false;\n });\n }\n };\n ctrl.initCaptcha = function (ngModel) {\n return $http.post('/commonExt/getCaptchaHtml', {\n ngModel: ngModel,\n captchaId: 'CaptchaSourcePreOrder'\n }).then(function (response) {\n return $sce.trustAsHtml(response.data);\n });\n };\n}\nPreOrderFormCtrl.$inject = [\"$sce\", \"$timeout\", \"$window\", \"preOrderService\", \"toaster\", \"$scope\", \"$http\"];\nexport default PreOrderFormCtrl;", "import formTemplate from '../templates/preOrderForm.html';\n/* @ngInject */\nfunction preOrderTriggerDirective(preOrderService) {\n return {\n restrict: 'A',\n scope: true,\n controller: 'PreOrderTriggerCtrl',\n controllerAs: 'preOrderTrigger',\n bindToController: true,\n link: function (scope, element, attrs, ctrl) {\n element.on('click', function (event) {\n event.preventDefault();\n var modalId = element[0].getAttribute('data-pre-order-modal');\n ctrl.modalId = modalId != null ? modalId : 'modalPreOrder';\n scope.$apply(function () {\n preOrderService.showDialog(ctrl.modalId);\n });\n });\n }\n };\n}\npreOrderTriggerDirective.$inject = [\"preOrderService\"];\nfunction preOrderFormDirective() {\n return {\n restrict: 'A',\n scope: {\n offerId: '=?',\n productId: '=?',\n formInit: '&',\n successFn: '&',\n preOrderValid: '&',\n amount: '=?',\n jsonHash: '=?',\n isLanding: '='\n },\n controller: 'PreOrderFormCtrl',\n controllerAs: 'preOrderForm',\n bindToController: true,\n templateUrl: formTemplate\n };\n}\nexport { preOrderTriggerDirective, preOrderFormDirective };", "function preOrderService($http, $sce, modalService, toaster) {\n var service = this,\n modalId = 'modalPreOrder',\n isRenderDialog = false;\n service.showDialog = function (modalId) {\n modalService.open(modalId);\n };\n service.getFormData = function () {\n return $http.get('checkout/getpreorderformdata').then(function (response) {\n return response.data;\n });\n };\n service.modalFooterShow = function (modalId, show) {\n modalService.setVisibleFooter(modalId, show);\n };\n service.send = function (data) {\n return $http.post('checkout/checkoutpreorder', data).then(function (response) {\n return response.data;\n });\n };\n}\npreOrderService.$inject = [\"$http\", \"$sce\", \"modalService\", \"toaster\"];\nexport default preOrderService;", "\uFEFFimport './styles/styles.scss';\nimport PreOrderTriggerCtrl from './controllers/preOrderTriggerController.js';\nimport PreOrderFormCtrl from './controllers/preOrderFormController.js';\nimport { preOrderFormDirective, preOrderTriggerDirective } from './directives/preOrderDirectives.js';\nimport preOrderService from './services/preOrderService.js';\n\nconst moduleName = 'preOrder';\n\nangular\n .module(moduleName, [])\n .service('preOrderService', preOrderService)\n .directive('preOrderForm', preOrderFormDirective)\n .directive('preOrderTrigger', preOrderTriggerDirective)\n .controller('PreOrderTriggerCtrl', PreOrderTriggerCtrl)\n .controller('PreOrderFormCtrl', PreOrderFormCtrl);\n\nexport default moduleName;\n", ".gallery-block {\r\n padding-right: 3.75rem;\r\n}\r\n\r\n.gallery-picture-link {\r\n max-width: 100%;\r\n}\r\n\r\n.gallery-picture {\r\n text-align: center;\r\n white-space: nowrap;\r\n position: relative;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n}\r\n\r\n.gallery-picture-obj {\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.details-additional-graphics {\r\n margin: 2.5rem 2.5rem 1rem;\r\n}\r\n\r\n.gallery-zoom {\r\n position: relative;\r\n padding-left: 1.25rem;\r\n font-size: 0.6875rem;\r\n}\r\n\r\n.gallery-photos-item {\r\n white-space: nowrap;\r\n border: 1px transparent solid;\r\n border-radius: 0.3125rem;\r\n padding: 0.625rem;\r\n display: flex;\r\n position: relative;\r\n justify-content: center;\r\n align-items: center;\r\n margin: auto;\r\n}\r\n\r\n.details-carousel .gallery-photos-item-obj.img-not-resize {\r\n max-width: 100%;\r\n}\r\n\r\n.gallery-photos-slider {\r\n padding: 0 1.25rem;\r\n}\r\n\r\n.gallery-picture-labels {\r\n position: absolute;\r\n right: 0;\r\n top: 0;\r\n z-index: 0;\r\n}\r\n\r\n.gallery-photos-slider-list-horizontal {\r\n font-size: 0;\r\n line-height: 0;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n}\r\n\r\n.gallery-photos-slider-list-vertical {\r\n height: 100%;\r\n}\r\n\r\n.prod-photo-view-change {\r\n display: inline-block;\r\n height: 27px;\r\n width: 25px;\r\n background-image: url(\"data:image/gif;base64,R0lGODlhMgAbAPf/AMvLyx1ptsbGxu7u7jCa8UGi69XV1Wtqa3Jycb29vkar/CmT7NnZ2Tig7/b29iZ3vMLCwmqw6Pr6+BlOjImJiRZ75Zubm9LT1RxRjpWVlR163/7+/LKysj2j89zc3P/+/93e4IGBgSsrKx6B5XZ2dUSu/uzs7Dak+h1+4+jo6CKX8SSQ60dHR7m5uerq6hwaGk2s9DKe9jKU5BuH6xl66F5eXVZWVeTk5OLi4uDg4D2N3Q0NDSs+UJGRkSN9z6SkpCKG5kyl5jmk+iuZ8enp6h10y1hYWEKq/bS0tPb29FBQUKysrDg4OKenpxZ56KKiohMTEiIjJCqA2z4+PWZmZjuq/zKa7x2A4jQzM7e3t6+vrzWf9c3NzSSJ5hl65g0UHCk8TCSK6hQVGDGN5FpaWlxZV3p6eVRQTiI4SEE8PDEtLCg5Snx8fVZWWBx64gMDAwkIAwoGASw9TwUOFxEOD/Dw8Pv7+/Pz8/r6+vn5+UtPWKWnq/j4+Hd6gfT09f/9/vT09GFkbLOzs/78/fX19fHx8VZZYsfIytPT0/Ly8pmcoWxvd7CytoOGjLSztExMTOfn55+goFVSURt73yY3SP37/Pz8+rGxsdDQ0DWf8zuk+P39/z05OT2Kx2Wn30aZ4jWI2jo7O2BgYJaXmJiYl/z6+zOf87S0s46Rlj9AQPf391hVUyKG6FJPTerp6iiU8h1SjyB/3E6o6kOq+0Wq+zyW4TWF2DWI1FtbXF1bWBhDe/r6/HR0cyczPTs3NjOX6eHh4pa84V5cWHx7exxx0CclJPn599/f4BURECExQRl99CiE0evr7Pn7+nh4d6mpq/3//iAfH2Cf3iKK6CKI7CeQ6CmH4yB/4iWM7hkYGFWt8RsZFC1+wezk3ExLRzSg9TeU3jGDxDaIyjij+y+L1Tml/BuB5rSzszGK3vT09jKP2NTh6TeL3hx95VCp6gAGDfz+/SGQ7ieR7Bt87Bx96VtbWTil+vn3+Dql+xk8aS+G3fz8/P39/f7+/v///////yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS41LWMwMjEgNzkuMTU1NzcyLCAyMDE0LzAxLzEzLTE5OjQ0OjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxNCAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Qjc0N0JEQjlEQzUzMTFFNDkzNzc4RDg3RUQyRDc3QzMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Qjc0N0JEQkFEQzUzMTFFNDkzNzc4RDg3RUQyRDc3QzMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpCNzQ3QkRCN0RDNTMxMUU0OTM3NzhEODdFRDJENzdDMyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpCNzQ3QkRCOERDNTMxMUU0OTM3NzhEODdFRDJENzdDMyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+urayrqqmop6alpKOioaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KBgH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmFgX15dXFtaWVhXVlVUU1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2NTQzMjEwLy4tLCsqKSgnJiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcGBQQDAgEAACH5BAEAAP8ALAAAAAAyABsAAAj/AP8JHEiwoEGC/hIqXMiQYb8EBzA19Hfw4MSLDQEtQUDKBCIjFCZWNIjx4h0tFA4lahIKzqMExwz0aziyYEmFAwAgGeCCFxQxbHII+AGBmcI/gwZ9+FCpJsF9dv5UuqewXx0DDPZxYbEjFYcbS5xlGcCvIdJ+/ezsczowj50Ppf7YEeDB3w8R2RBgQhSCys6ZGM/a8cfvH6M+jQ79I7KnMSM/AhO+HeSCyZQlN7QYEXUJ0s2F/fjxU+vvQqA9jfQQuaBnjyJDgSAnJOTvDxG8xSAMsGMHMKFEM/MUyuOvH6A7CdHO3OdvrUDWF1gL9GNI0T9VCvGkEPHiRQYAqSR5/zBBBUuTfk+wHBjgQUkqAYAyEOHXLw+/PGtBHFq06J90gYr08Q80++AxEyRTRBNNKFGIkAAwRuzABjOjiJEKIlyEkk0kRJAgQiH0+cNHQv/s0YchffjxX4kCwtNMc2kdAMUL2yAjQhpqIPMCJ75kg4waaRRDRzRpYLGDEYSF5g9xA/lx2oqoCOiPKswxFwIUvfDAAxhorCGHHGtQIseWlKyxJRrJiFGDZKLdYQcRRPzj5B7/HaKHYnnUp9AwdHRSwiy0KCCoAkcUSksJgx5ayxfCEOaPA3jskwcjevQRSGysLaKHIXsIROWjzJmxgzhV4GOPEKdqAoM2MHRQjj2wlv9TBTiMJuRCDgYQ0c8/IEQ3UHQgEMQeDlD5I2o4J2yxRSZbNOBOAQ0UIEsBMXzD7AnqfFGGPzck4IFohbH1z5LAtDCAP87swE0MBBBgBQFBWFFAASrA+267MZCjrT9Z1OEPbXbws4k/u4w4Ex54FBfaYP0wcAm6cDwwxAIU//JJPBGsE4E8tcggzwLyvLLMHKv480QdzCE3WDrFjeaPgbQtOZg/dfTgDwkRv1JNNSvIAM4MnnQTTBhjjDFNGGFg48MckvgDQQ84ODClDc8cE1xzzDUXqT+ADPBDAje/8UA8XXQBBBA6oPCJNOaMoIM1Z7NCzdJN22EBAhl8W0MbuLT/wMBMfOwjeD8J30AKCT/QhsAbAcxwxRXXoKAPO7FUcA06oKDw+BXmFME0YfsQ8QMujxiBSw2ikJFBgf2MaAAFNtRDih0SJLR4APRMorsGk0hhiw63SMH7JG640Y7nZxDGDx94lGWEEQecgsjLgC3pzwZ2GGOJBLXfrgwNXtBAgxPkj+9EBeKLPw8xc7SiMD94BGxEEwYktA/gL19vRxL+WOIP/wd4Qz4mQMAJYAADsEigAg9YQF28wxvJWUjWEpKwmZRFNFXpB3MiAYc4xKGDcAihCEfYQQ/G4Q0hqAro/DGYsrzsghHMH2AKkQBBnEIQOMyhDnXoCEecowWuqApzMSyYnQiKBi0zmxkgCnGHJjrxiVB8YiESwRDRDCZrM7liQ1w4pTp48YtgDKMYAeGPgAAAOw==\");\r\n background-repeat: no-repeat;\r\n}\r\n.prod-photo-view-change.rotate {\r\n background-position: left top;\r\n}\r\n.prod-photo-view-change.video {\r\n background-position: right top;\r\n}\r\n\r\n.prod-photo-view-change + .prod-photo-view-change {\r\n margin-left: 20px;\r\n}", ".product-color {\r\n display: inline-block;\r\n vertical-align: middle;\r\n text-indent: 100%;\r\n border-radius: 0.1875rem;\r\n margin: 0 0.3125rem;\r\n overflow: hidden;\r\n}", "@charset \"UTF-8\";\r\n.details-block {\r\n margin-bottom: 1.875rem;\r\n border-radius: 0.3125rem;\r\n}\r\n\r\n.details-payment {\r\n border-style: solid;\r\n border-width: 0.0625rem 0;\r\n padding: 7px 0;\r\n}\r\n.details-payment .price {\r\n margin-bottom: 0.3125rem;\r\n display: block;\r\n}\r\n.details-payment .price-current,\r\n.details-payment .price-new {\r\n font-size: 1.625rem;\r\n}\r\n.details-payment .price-old {\r\n font-size: 0.875rem;\r\n}\r\n.details-payment .price-discount {\r\n font-size: 0.6875rem;\r\n}\r\n\r\n.instead__text-price {\r\n font-size: 16px;\r\n font-weight: 600;\r\n}\r\n\r\n.details-payment-price {\r\n white-space: nowrap;\r\n}\r\n\r\n.details-amount .availability {\r\n vertical-align: inherit;\r\n}\r\n\r\n.details-payment-item {\r\n padding-left: 0.625rem;\r\n}\r\n\r\n.details-payment-inline {\r\n display: inline-block;\r\n margin-bottom: 0.3125rem;\r\n vertical-align: top;\r\n}\r\n\r\n.availability {\r\n display: inline-block;\r\n vertical-align: middle;\r\n border-radius: 0.1875rem;\r\n color: #fff;\r\n padding: 0.3125rem;\r\n line-height: 1;\r\n}\r\n\r\ndiv[show-stocks] {\r\n cursor: pointer;\r\n}\r\n\r\n.available {\r\n background-color: #b1cd03;\r\n}\r\n\r\n.not-available {\r\n background-color: #fb6363;\r\n}\r\n\r\n.details-brand {\r\n text-align: center;\r\n margin-bottom: 2.5rem;\r\n}\r\n\r\n.details-aside {\r\n /* padding-left: rem-calc(40px); */\r\n}\r\n\r\n.details-aside .social-btns {\r\n padding: 0.9375rem;\r\n}\r\n\r\n.details-social {\r\n margin-bottom: 2.5rem;\r\n}\r\n\r\n.details-payment-block {\r\n display: flex;\r\n flex-wrap: wrap;\r\n}\r\n.details-payment-block .btn {\r\n white-space: nowrap;\r\n}\r\n\r\n.details-payment-cell {\r\n margin-top: 7px;\r\n margin-bottom: 7px;\r\n}\r\n\r\n.details-carousel-item,\r\n.details-carousel-item-vertical {\r\n border: 0.0625rem transparent solid;\r\n cursor: pointer;\r\n vertical-align: middle;\r\n box-sizing: border-box;\r\n text-align: center;\r\n}\r\n\r\n.details-carousel-item {\r\n display: inline-block;\r\n}\r\n\r\n.details-carousel-item-vertical {\r\n display: block;\r\n}\r\n\r\n.details-carousel-selected {\r\n border-radius: 0.3125rem;\r\n opacity: 0.5;\r\n border-color: #efd706;\r\n cursor: default;\r\n}\r\n\r\n.first-payment-note {\r\n font-size: 0.6875rem;\r\n}\r\n\r\n.modal .details-modal-preview {\r\n /* max-width: 100% !important;\n position: absolute;\n top: rem-calc(45px);\n right: rem-calc(45px);\n bottom: rem-calc(45px);\n left: rem-calc(45px); */\r\n width: 100%;\r\n height: calc(100% - 45px - 45px);\r\n display: inline-flex;\r\n flex-direction: column;\r\n}\r\n.modal .details-modal-preview .modal-content {\r\n overflow-y: visible;\r\n position: relative;\r\n max-height: 100%;\r\n flex-grow: 1;\r\n /* height: 1px; */\r\n /* \u0447\u0442\u043E\u0431\u044B \u0434\u043E\u0447\u0435\u0440\u043D\u0438\u0439 \u0431\u043B\u043E\u043A \u0440\u0430\u0441\u0442\u044F\u0433\u0438\u0432\u0430\u043B\u0441\u044F \u043D\u0430 \u0432\u0441\u044E \u0432\u044B\u0441\u043E\u0442\u0443 */\r\n}\r\n\r\n.modal-preview-image-load {\r\n opacity: 0;\r\n}\r\n\r\n.modal-preview-image-complete {\r\n opacity: 1;\r\n transition: opacity linear 0.5s;\r\n}\r\n\r\n.details-buy-one-click {\r\n line-height: 1;\r\n}\r\n\r\n.details-carousel,\r\n.details-tabs {\r\n margin-top: 0.9375rem;\r\n}\r\n\r\n.details-carousel-hidden {\r\n opacity: 0;\r\n}\r\n\r\n.details-preview-block {\r\n font-size: 0;\r\n line-height: 0;\r\n}\r\n\r\n.details-preview-block .zoomer-window-title {\r\n line-height: 1;\r\n font-size: 12px;\r\n}\r\n\r\n.details-preview-block .zoomer-inner ~ .zoomer-window .zoomer-window-title {\r\n top: auto;\r\n bottom: 0;\r\n}\r\n\r\n.details-modal-preview-block {\r\n /* display: table;\n width: 100%;\n height: 100%; */\r\n display: flex;\r\n flex-direction: row;\r\n height: 100%;\r\n}\r\n\r\n.details-modal-preview-cell {\r\n /* display: table-cell; */\r\n vertical-align: top;\r\n}\r\n\r\n.details-modal-preview-cell-photo {\r\n width: 100%;\r\n vertical-align: middle;\r\n align-self: center;\r\n}\r\n\r\n.details-modal-carousel {\r\n padding: 1.625rem 0;\r\n height: auto !important;\r\n}\r\n\r\n.details-briefdescription p {\r\n margin: 0;\r\n padding: 0;\r\n}\r\n\r\n.details-spinbox-block {\r\n width: 5rem;\r\n}\r\n\r\n.details-rotate {\r\n display: flex;\r\n justify-content: center;\r\n box-sizing: border-box;\r\n flex-flow: column wrap;\r\n}\r\n\r\n.top-shipping-row {\r\n margin-bottom: 5px;\r\n}\r\n\r\n.details-param-name,\r\n.details-param-value,\r\n.details-param-value-weight {\r\n display: inline;\r\n font-size: 0.75rem;\r\n}\r\n\r\n.details-avalable-text,\r\n.details-avalable-unit {\r\n display: inline-block;\r\n}\r\n\r\n.gifts-list {\r\n display: none;\r\n}\r\n\r\n.gift-properties {\r\n display: table;\r\n padding: 0;\r\n margin: 0.3125rem 0 0;\r\n}\r\n\r\n.gift-properties__item {\r\n display: table-row;\r\n}\r\n\r\n.gift-properties__itemName,\r\n.gift-properties__itemValue {\r\n display: table-cell;\r\n vertical-align: middle;\r\n padding-right: 0.625rem;\r\n font-size: 0.75rem;\r\n}\r\n\r\n.product-gift-image {\r\n height: 69.9px;\r\n width: 75.9px;\r\n /* background: url('../../images/misc/giftIcon.png') no-repeat top left/100% 100%; */\r\n background: url(\"../../images/misc/giftIcon.png\") no-repeat top left/100% 100%;\r\n position: absolute;\r\n z-index: 10;\r\n bottom: 0;\r\n right: -10px;\r\n}\r\n.product-gift-image .gifts-list-container {\r\n background: white;\r\n position: relative;\r\n border-radius: 0.3125rem;\r\n z-index: 1;\r\n}\r\n.product-gift-image .gifts-list {\r\n display: none;\r\n box-shadow: 0 0 9px 0 rgba(0, 0, 0, 0.25);\r\n width: 300px;\r\n position: absolute;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n right: -320px;\r\n white-space: normal;\r\n}\r\n.product-gift-image .gifts-list .gift-txt {\r\n text-align: left;\r\n}\r\n.product-gift-image .gifts-list .gift-txt-descr {\r\n font-size: 0.6875rem;\r\n color: #e20a0a;\r\n}\r\n.product-gift-image .gifts-list::before, .product-gift-image .gifts-list::after {\r\n content: \"\";\r\n display: inline-block;\r\n left: -20px;\r\n width: 20px;\r\n top: 0;\r\n bottom: 0;\r\n margin: auto 0;\r\n position: absolute;\r\n}\r\n.product-gift-image .gifts-list::before {\r\n background: white;\r\n height: 20px;\r\n width: 20px;\r\n left: -10px;\r\n transform: rotate(45deg);\r\n box-shadow: 0 0 9px 0 rgba(0, 0, 0, 0.25);\r\n}\r\n.product-gift-image .gifts-list::after {\r\n background-color: transparent;\r\n height: 100%;\r\n}\r\n.product-gift-image.active .gifts-list {\r\n display: block;\r\n}\r\n\r\n.details-modal-preview-arrow {\r\n width: 100px;\r\n align-self: center;\r\n font-size: 40px;\r\n text-align: center;\r\n}\r\n\r\n.details-photos__left {\r\n margin: 0 10px;\r\n display: flex;\r\n}\r\n\r\n.details-photos__right {\r\n margin: 0 10px;\r\n}\r\n\r\n.details-photos__trigger-360,\r\n.details-photos__trigger-video {\r\n height: 27px;\r\n width: 25px;\r\n padding: 0;\r\n}\r\n\r\n.details-photos__trigger + .details-photos__trigger {\r\n margin-left: 20px;\r\n}\r\n\r\n.products-view-video-wrap {\r\n margin-bottom: 40px;\r\n}\r\n.products-view-video-wrap:last-child {\r\n margin-bottom: 0;\r\n}\r\n.products-view-video-wrap .video-name,\r\n.products-view-video-wrap .video-description {\r\n font-size: 14px;\r\n line-height: 1.5;\r\n}\r\n.products-view-video-wrap .video-name {\r\n margin-bottom: 10px;\r\n font-size: 22px;\r\n}\r\n.products-view-video-wrap .video-description {\r\n margin-top: 10px;\r\n white-space: normal;\r\n}\r\n\r\n.product-videos-in-modal {\r\n display: flex;\r\n}\r\n.product-videos-in-modal .products-view-video-wrap {\r\n margin-bottom: 0;\r\n}\r\n\r\n.carousel-product-video-in-modal:not(.carousel-nav-not-show) {\r\n /* padding: 0 45px; */\r\n}\r\n\r\n.carousel-product-video-in-modal-btn {\r\n font-size: 36px;\r\n}\r\n\r\n.carousel-product-video-in-modal-content {\r\n width: 650px;\r\n}\r\n\r\n.cart-popup-product-sku {\r\n font-size: 13px;\r\n}\r\n\r\n.related-product-carousel-wrap {\r\n margin-right: -0.625rem;\r\n margin-left: -0.625rem;\r\n}\r\n\r\n.details-row {\r\n margin-top: 0.9375rem;\r\n}\r\n.details-row__amount-table {\r\n margin-top: 20px;\r\n margin-bottom: 20px;\r\n}\r\n\r\n.product-card--quickview .details-size-color-picker--cols-1 .color-select-custom,\r\n.product-card--quickview .details-size-color-picker--cols-1 .sizes-select-custom {\r\n width: 50%;\r\n}\r\n\r\n.details-size-color-picker--cols-1 .color-select-custom,\r\n.details-size-color-picker--cols-1 .sizes-select-custom {\r\n width: 60%;\r\n}\r\n\r\n.details-size-color-picker--cols-2 {\r\n display: flex;\r\n flex-wrap: nowrap;\r\n -moz-column-gap: 10px;\r\n column-gap: 10px;\r\n}\r\n.details-size-color-picker--cols-2 .details-colors,\r\n.details-size-color-picker--cols-2 .details-sizes {\r\n flex-grow: 1;\r\n min-width: calc(50% - 5px);\r\n}\r\n.details-size-color-picker--cols-2 .sizes-viewer-list {\r\n height: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n}\r\n.details-size-color-picker--cols-2 .sizes-viewer-list [data-sizes-viewer] {\r\n flex-grow: 1;\r\n}\r\n.details-size-color-picker--cols-2 .sizes-viewer-list .select-custom,\r\n.details-size-color-picker--cols-2 .sizes-viewer-list .choices,\r\n.details-size-color-picker--cols-2 .sizes-viewer-list .form-select {\r\n height: 100%;\r\n}\r\n.details-size-color-picker--cols-2 .sizes-viewer-list .form-select {\r\n display: flex;\r\n align-items: center;\r\n}\r\n\r\n.marketplace-button-header {\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 18px;\r\n color: #000;\r\n margin-bottom: 10px;\r\n}\r\n\r\n.marketplace-buttons {\r\n height: 50px;\r\n gap: 20px;\r\n}\r\n\r\n.product-preview-modal-wrap .details-modal-preview {\r\n max-width: 100vw !important;\r\n height: 100% !important;\r\n border-radius: 0 !important;\r\n}\r\n.product-preview-modal-wrap .details-modal-preview .modal-header {\r\n display: none;\r\n}\r\n.product-preview-modal-wrap .details-modal-preview .adv-modal-close {\r\n top: 15px !important;\r\n overflow: visible;\r\n color: black !important;\r\n}\r\n.product-preview-modal-wrap .details-modal-preview .adv-modal-close::after {\r\n content: \"\\e829\" !important;\r\n right: 50px !important;\r\n top: -13px;\r\n background: none !important;\r\n}\r\n.product-preview-modal-wrap .details-modal-preview-cell {\r\n align-self: center !important;\r\n}\r\n.product-preview-modal-wrap .details-modal-carousel {\r\n padding-top: 2rem;\r\n margin-top: 2rem;\r\n}\r\n\r\n.product-review-card {\r\n padding: 12px;\r\n height: 100%;\r\n background: #fff;\r\n border-style: solid;\r\n border-width: 1px;\r\n border-radius: 8px;\r\n display: block;\r\n}\r\n\r\n.product-review-card__name {\r\n font-style: normal;\r\n font-weight: 500;\r\n font-size: 14px;\r\n color: #4b4f58;\r\n}\r\n\r\n.product-review-card__add-date {\r\n font-style: normal;\r\n font-weight: 400;\r\n font-size: 14px;\r\n color: #868695;\r\n white-space: nowrap;\r\n}\r\n\r\n.product-review-card__text {\r\n padding: 20px 0 0;\r\n display: block;\r\n font-style: normal;\r\n font-weight: 400;\r\n font-size: 14px;\r\n color: #666;\r\n}\r\n\r\n.product-reviews-sliders-title {\r\n margin-bottom: 24px;\r\n}\r\n\r\n.product-reviews-sliders {\r\n margin-top: 60px;\r\n padding: 0 13px;\r\n}\r\n\r\n.product-review-card-wrap .carousel-inner--min-height-default,\r\n.product-review-card-wrap .carousel-inner--min-height-twocolumns {\r\n min-height: 200px;\r\n}\r\n\r\n.product-review-card-wrap .glide__arrow {\r\n display: none;\r\n justify-content: center;\r\n align-items: center;\r\n text-align: center;\r\n border-radius: 100%;\r\n box-shadow: none;\r\n background-color: transparent;\r\n color: currentcolor;\r\n}\r\n\r\n.product-review-card-wrap .glide__arrow--prev.carousel-nav-prev {\r\n left: -32px;\r\n}\r\n\r\n.product-review-card-wrap .glide__arrow--prev.carousel-nav-prev::after {\r\n transform: rotate(180deg);\r\n}\r\n\r\n.product-review-card-wrap .carousel-nav-next {\r\n right: -32px;\r\n}\r\n\r\n.product-review-card-wrap .glide__arrow--prev.carousel-nav-prev::after,\r\n.product-review-card-wrap .glide__arrow--next.carousel-nav-next::after {\r\n content: \"\";\r\n font-size: 14px;\r\n width: 18px;\r\n height: 18px;\r\n display: block;\r\n -webkit-mask: url(\"../../images/chevron-right.svg\");\r\n mask: url(\"../../images/chevron-right.svg\");\r\n background-color: currentcolor;\r\n -webkit-mask-repeat: no-repeat;\r\n mask-repeat: no-repeat;\r\n -webkit-mask-position: center;\r\n mask-position: center;\r\n}\r\n\r\n.product-review-card-wrap .carousel-item-img {\r\n border-radius: 40px;\r\n}\r\n\r\n.product-review-card-wrap .carousel-ext__slide {\r\n height: auto !important;\r\n padding-right: 5px;\r\n}\r\n\r\n.product-review-card-rating {\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.product-review-card-rating__item {\r\n display: inline-block;\r\n vertical-align: middle;\r\n}\r\n\r\n.product-review-card-rating__count--likes {\r\n color: #298800;\r\n}\r\n\r\n.product-review-card-rating__count--dislikes {\r\n color: #f81f1f;\r\n}\r\n\r\n.product-review-card-buttons {\r\n vertical-align: middle;\r\n}\r\n\r\n.product-review-card__photo-list {\r\n display: flex;\r\n flex-wrap: wrap;\r\n align-items: center;\r\n width: 100%;\r\n}\r\n\r\n.product-review-card__photo-item {\r\n width: 50%;\r\n padding: 6px;\r\n margin: 0;\r\n text-align: center;\r\n}\r\n\r\n@media (min-width: 992px) {\r\n .product-review-card:hover {\r\n box-shadow: 0 0 9px 0 rgba(0, 0, 0, 0.25);\r\n -webkit-text-decoration: none;\r\n text-decoration: none;\r\n }\r\n .product-reviews-sliders {\r\n padding: 0;\r\n }\r\n .product-review-card-wrap {\r\n margin-top: -0.625rem;\r\n margin-left: -0.625rem;\r\n margin-right: -0.625rem;\r\n }\r\n .product-review-card-wrap .carousel-ext__slide {\r\n padding: 0.625rem;\r\n }\r\n .product-review-card-wrap .glide__arrow {\r\n display: flex;\r\n }\r\n .product-review-card {\r\n padding: 16px;\r\n }\r\n}", "import { PubSub } from '../../_common/PubSub/PubSub.js';\n\n/*@ngInject*/\nvar ProductCtrl = function ($q, $scope, $sce, $timeout, productService, modalService, toaster, $translate, $window, urlHelper, customOptionsService) {\n var ctrl = this;\n var callbackListColorsAndSizes = [];\n const deferPostLoad = $q.defer();\n let lastValueChangesSizeColor = undefined;\n ctrl.$onInit = function () {\n ctrl.productView = 'photo';\n ctrl.Price = {};\n ctrl.picture = {};\n ctrl.dirty = false;\n ctrl.offerSelected = {};\n ctrl.carouselHidden = true;\n productService.addToStorage(ctrl);\n ctrl.isOpenPreviewModal = false;\n };\n ctrl.$onDestroy = function () {\n modalService.destroy('modalProductVideo');\n };\n ctrl.productTabsModeInMobile = function (isAccordion, isMobile) {\n if (isAccordion && isMobile) {\n document.querySelectorAll('.accordion-css__state')[0].checked = true;\n }\n };\n ctrl.getPrice = function () {\n return productService.getPrice(ctrl.offerSelected.OfferId, ctrl.customOptions != null ? ctrl.customOptions.xml : null, ctrl.lpBlockId, ctrl.offerSelected.AmountBuy).then(function (price) {\n ctrl.Price = price;\n ctrl.Price.PriceString = $sce.trustAsHtml(ctrl.Price.PriceString);\n ctrl.Price.Bonuses = $sce.trustAsHtml(ctrl.Price.Bonuses);\n ctrl.offerSelected.AllowBuyOutOfStockProducts = price.AllowBuyOutOfStockProducts;\n ctrl.offerSelected.IsAvailableForPurchase = price.IsAvailableForPurchase;\n ctrl.offerSelected.IsAvailableForPurchaseOnBuyOneClick = price.IsAvailableForPurchaseOnBuyOneClick;\n return ctrl.Price;\n });\n };\n ctrl.getFirstPaymentPrice = function (price, discount, discountAmount) {\n if (price == null || discount == null || discountAmount == null) {\n return null;\n }\n return productService.getFirstPaymentPrice(price, discount, discountAmount).then(function (firstPaymentPrice) {\n ctrl.FirstPaymentPrice = $sce.trustAsHtml(firstPaymentPrice);\n ctrl.visibilityFirstPaymentButton = firstPaymentPrice != null && firstPaymentPrice.length > 0;\n });\n };\n ctrl.refreshPrice = function () {\n var defer = $q.defer();\n if (ctrl.offerSelected.AmountBuy == null) return;\n ctrl.getPrice().then(function (price) {\n return ctrl.getFirstPaymentPrice(price.PriceOldNumber != null && price.PriceOldNumber != 0 ? price.PriceOldNumber : price.PriceNumber, ctrl.discount, ctrl.discountAmount);\n }).then(function () {\n if (ctrl.priceAmountList != null) {\n ctrl.priceAmountList.update().then(function (data) {\n defer.resolve(data);\n return data;\n });\n } else {\n defer.resolve();\n }\n }).then(function () {\n if (ctrl.shippingVariants != null) {\n ctrl.shippingVariants.update().then(function (data) {\n defer.resolve(data);\n return data;\n });\n } else {\n defer.resolve();\n }\n productService.processCallback('refreshPrice');\n });\n return defer.promise;\n };\n ctrl.prepareOffers = function (data) {\n for (var i = 0, len = data.Offers.length; i < len; i++) {\n if (data.Offers[i].Available != null && angular.isString(data.Offers[i].Available) === true) {\n data.Offers[i].Available = $sce.trustAsHtml(data.Offers[i].Available);\n }\n }\n return data;\n };\n ctrl.loadData = function (productId, colorId, sizeId, hiddenPrice, filterPhotosEnable, preventChangeLocation) {\n ctrl.productId = productId;\n ctrl.hiddenPrice = hiddenPrice;\n ctrl.filterPhotosEnable = filterPhotosEnable != null ? filterPhotosEnable : true;\n ctrl.preventChangeLocation = preventChangeLocation === true;\n return productService.getOffers(productId, colorId, sizeId).then(function (data) {\n if (data == null) {\n if (colorId == null) {\n ctrl.carouselHidden = false;\n }\n return null;\n }\n ctrl.data = ctrl.prepareOffers(data);\n ctrl.offerSelected = productService.findOfferSelected(data.Offers, data.StartOfferIdSelected);\n ctrl.dirty = true;\n ctrl.getColorsViewer().then(function () {\n if (ctrl.colorsViewer != null && ctrl.offerSelected.Color != null) {\n ctrl.setColorSelected(ctrl.colorsViewer, ctrl.offerSelected.Color != null ? ctrl.offerSelected.Color.ColorId : null);\n }\n return ctrl.data;\n }).then(ctrl.getSizesViewer).then(function () {\n if (ctrl.sizesViewer != null && ctrl.offerSelected.Size != null) {\n ctrl.setSizeSelected(ctrl.sizesViewer, ctrl.offerSelected.Size.SizeId);\n }\n return ctrl.data;\n }).then(ctrl.getCarousel).then(function () {\n if (ctrl.filterPhotosEnable === true && ctrl.carousel != null) {\n ctrl.filterPhotos(ctrl.offerSelected.Color != null ? ctrl.offerSelected.Color.ColorId : null, ctrl.carousel);\n }\n ctrl.carouselHidden = false;\n }).finally(() => {\n ctrl.isPostLoad = true;\n deferPostLoad.resolve();\n });\n return ctrl.data;\n });\n };\n ctrl.refreshSelectedOffer = function () {\n if (ctrl.offerSelected == null) {\n return false;\n }\n productService.getOffers(ctrl.offerSelected.ProductId, ctrl.offerSelected.Color?.ColorId, ctrl.offerSelected.Size?.SizeId).then(function (data) {\n if (data == null || data.Offers == null) {\n return null;\n }\n ctrl.data = ctrl.prepareOffers(data);\n ctrl.offerSelected = productService.findOfferSelected(ctrl.data.Offers, ctrl.offerSelected.OfferId);\n return ctrl.data;\n });\n };\n ctrl.validate = function () {\n if (ctrl.customOptions == null) {\n return true;\n }\n const {\n invalidOptions,\n isValidOptions\n } = customOptionsService.isValidOptions(ctrl.customOptions.items);\n const form = ctrl.customOptions.customOptionsForm;\n if (form.$invalid || !isValidOptions) {\n form.$setSubmitted();\n form.$setDirty();\n if (invalidOptions.size > 0) {\n invalidOptions.forEach(option => {\n let errorText = '';\n const {\n MinQuantity,\n MaxQuantity,\n InputType,\n Title\n } = option;\n if (MinQuantity != null && MaxQuantity != null && MaxQuantity === MinQuantity) {\n errorText = `: \u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 ${MaxQuantity} \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u0430`;\n } else {\n const minText = MinQuantity != null ? `\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0434\u043E\u043B\u0436\u043D\u043E \u0431\u044B\u0442\u044C \u043E\u0442 ${MinQuantity}` : '';\n const maxText = MaxQuantity != null && MaxQuantity !== MinQuantity ? ` \u0434\u043E ${MaxQuantity}` : '';\n errorText = `${minText}${minText && maxText ? ' \u0434\u043E ' : ''}${maxText}`;\n }\n const errorMsg = InputType === 6 ? `\u041D\u0435 \u0432\u044B\u0431\u0440\u0430\u043D\u043E \u043F\u043E\u043B\u0435 ${Title} ${errorText}` : `\u041D\u0435\u0432\u0435\u0440\u043D\u043E \u0437\u0430\u043F\u043E\u043B\u043D\u0435\u043D\u043E \u043F\u043E\u043B\u0435 ${Title} ${errorText}`;\n toaster.pop('error', errorMsg);\n });\n } else {\n toaster.pop('error', $translate.instant('Js.Product.InvalidCustomOptions'));\n }\n return false;\n }\n return true;\n };\n\n //#region compare and wishlist\n\n ctrl.compareInit = function (compare) {\n ctrl.compare = compare;\n };\n ctrl.wishlistControlInit = function (wishlistControl) {\n ctrl.wishlistControl = wishlistControl;\n };\n\n //#endregion\n\n //#region customOptions\n\n ctrl.customOptionsInitFn = function (customOptions) {\n ctrl.customOptions = customOptions;\n };\n ctrl.customOptionsChange = function (data) {\n if (!ctrl.hiddenPrice) {\n ctrl.refreshPrice().then(() => {\n ctrl.disabledBuyButton = false;\n });\n }\n PubSub.publish('product.customOptions.change', {\n productId: ctrl.productId,\n offerId: ctrl.offerSelected.OfferId,\n items: ctrl.customOptions.items\n });\n };\n ctrl.beforeCustomOptionsChange = function () {\n if (!ctrl.hiddenPrice) {\n ctrl.disabledBuyButton = true;\n }\n };\n\n //#endregion\n\n //#region colors\n\n ctrl.initColors = function (colorsViewer) {\n ctrl.colorsViewer = colorsViewer;\n if (ctrl.colorsViewerDefer != null) {\n ctrl.colorsViewerDefer.resolve();\n delete ctrl.colorsViewerDefer;\n }\n };\n ctrl.getColorsViewer = function () {\n var defer = $q.defer();\n if (ctrl.colorsExist === true && ctrl.colorsViewer == null) {\n ctrl.colorsViewerDefer = defer;\n } else {\n defer.resolve(ctrl.colorsViewer);\n }\n return defer.promise;\n };\n ctrl.changeColor = function (color) {\n ctrl.colorSelected = color;\n if (ctrl.sizesViewer != null) {\n ctrl.sizeSelected = ctrl.getSizeAvalable(ctrl.data.Offers, ctrl.colorSelected.ColorId, ctrl.sizesViewer.sizes, ctrl.data.AllowPreOrder);\n if (ctrl.preventChangeLocation !== true) {\n urlHelper.setLocationQueryParams('size', ctrl.sizeSelected != null && ctrl.sizeSelected.SizeId != null ? ctrl.sizeSelected.SizeId : null, true);\n }\n }\n ctrl.offerSelected = productService.getOffer(ctrl.data.Offers, ctrl.colorSelected.ColorId, ctrl.sizeSelected != null && ctrl.sizeSelected.isDisabled === false ? ctrl.sizeSelected.SizeId : null, ctrl.data.AllowPreOrder);\n if (!ctrl.hiddenPrice) {\n ctrl.refreshPrice();\n }\n if (ctrl.compare != null) {\n ctrl.compare.checkStatus(ctrl.offerSelected.OfferId);\n }\n if (ctrl.wishlistControl != null) {\n ctrl.wishlistControl.checkStatus(ctrl.offerSelected.OfferId);\n }\n ctrl.setPreviewByColorId(ctrl.colorSelected.ColorId, ctrl.filterPhotosEnable, ctrl.carousel);\n if (ctrl.preventChangeLocation !== true) {\n urlHelper.setLocationQueryParams('color', ctrl.colorSelected.ColorId, true);\n }\n ctrl.processChangeSizeAndColorCallback(ctrl.colorSelected, 'color', {\n offer: ctrl.offerSelected\n });\n if (ctrl.sizesViewer != null) {\n ctrl.processChangeSizeAndColorCallback(ctrl.sizeSelected, 'size', {\n offer: ctrl.offerSelected\n });\n }\n };\n ctrl.setColorSelected = function (colorsViewer, colorId) {\n for (var i = colorsViewer.colors.length - 1; i >= 0; i--) {\n if (colorsViewer.colors[i].ColorId === colorId) {\n ctrl.colorSelected = colorsViewer.colors[i];\n break;\n }\n }\n ctrl.processChangeSizeAndColorCallback(ctrl.colorSelected, 'color', {\n offer: ctrl.offerSelected\n });\n };\n\n //#endregion\n\n //#region sizes\n\n ctrl.initSizes = function (sizesViewer) {\n ctrl.sizesViewer = sizesViewer;\n if (ctrl.sizesViewerDefer != null) {\n ctrl.sizesViewer.sizes = JSON.parse(JSON.stringify(ctrl.sizesViewer.sizes));\n ctrl.sizesViewerDefer.resolve();\n delete ctrl.sizesViewerDefer;\n }\n };\n ctrl.getSizesViewer = function () {\n var defer = $q.defer();\n if (ctrl.sizesExist === true && ctrl.sizesViewer == null) {\n ctrl.sizesViewerDefer = defer;\n } else {\n defer.resolve(ctrl.sizesViewer);\n }\n return defer.promise;\n };\n ctrl.changeSize = function (size) {\n ctrl.sizeSelected = size;\n ctrl.offerSelected = productService.getOffer(ctrl.data.Offers, ctrl.colorSelected != null ? ctrl.colorSelected.ColorId : 0, ctrl.sizeSelected.isDisabled ? null : ctrl.sizeSelected.SizeId, ctrl.data.AllowPreOrder);\n if (!ctrl.hiddenPrice) {\n ctrl.refreshPrice();\n }\n if (ctrl.compare != null) {\n ctrl.compare.checkStatus(ctrl.offerSelected.OfferId);\n }\n if (ctrl.wishlistControl != null) {\n ctrl.wishlistControl.checkStatus(ctrl.offerSelected.OfferId);\n }\n if (ctrl.preventChangeLocation !== true) {\n urlHelper.setLocationQueryParams('size', ctrl.sizeSelected.SizeId, true);\n }\n ctrl.processChangeSizeAndColorCallback(ctrl.sizeSelected, 'size', {\n offer: ctrl.offerSelected\n });\n };\n ctrl.setSizeSelected = function (sizesViewer, sizeId) {\n for (var i = sizesViewer.sizes.length - 1; i >= 0; i--) {\n if (sizesViewer.sizes[i].SizeId === sizeId) {\n ctrl.sizeSelected = sizesViewer.sizes[i];\n break;\n }\n }\n ctrl.sizeSelected = ctrl.getSizeAvalable(ctrl.data.Offers, ctrl.colorSelected != null ? ctrl.colorSelected.ColorId : 0, ctrl.sizesViewer.sizes, ctrl.data.AllowPreOrder, true);\n ctrl.processChangeSizeAndColorCallback(ctrl.sizeSelected, 'size', {\n offer: ctrl.offerSelected\n });\n };\n ctrl.getSizeAvalable = function (offers, colorId, sizes, allowPreorder, notChangeSelectdSize) {\n var offerItem, sizeSelected, loopCheckStart;\n sizes.forEach(function (item) {\n item.isDisabled = true;\n });\n for (var i = offers.length - 1; i >= 0; i--) {\n offerItem = offers[i];\n if (colorId == null || offerItem.Color == null) {\n loopCheckStart = true;\n } else {\n loopCheckStart = offerItem.Color != null && offerItem.Color.ColorId === colorId;\n }\n if (loopCheckStart === true) {\n for (var s = sizes.length - 1; s >= 0; s--) {\n if (offerItem.Size.SizeId == sizes[s].SizeId && (allowPreorder === true || offerItem.Amount > 0)) {\n sizes[s].isDisabled = false;\n break;\n }\n }\n }\n }\n if (!notChangeSelectdSize && (ctrl.sizeSelected == null || ctrl.sizeSelected.isDisabled === true)) {\n for (var j = 0, l = sizes.length; j < l; j++) {\n if (sizes[j].isDisabled == null || sizes[j].isDisabled == false) {\n sizeSelected = sizes[j];\n break;\n }\n }\n } else {\n sizeSelected = ctrl.sizeSelected;\n }\n return sizeSelected;\n };\n\n //#endregion\n\n //#region carousels\n\n ctrl.addCarousel = function (carousel) {\n ctrl.carousel = carousel;\n if (ctrl.carouselDefer != null) {\n if (ctrl.carousel.options.asNavFor != null) {\n ctrl.carousel.whenAsNavForReady(ctrl.carousel.options.asNavFor, function () {\n ctrl.carouselDefer.resolve();\n delete ctrl.carouselDefer;\n });\n } else {\n ctrl.carouselDefer.resolve();\n delete ctrl.carouselDefer;\n }\n }\n };\n ctrl.getCarousel = function () {\n var defer = $q.defer();\n if (ctrl.carouselExist === true && ctrl.carousel == null) {\n ctrl.carouselDefer = defer;\n } else {\n defer.resolve();\n }\n return defer.promise;\n };\n ctrl.carouselItemSelect = function (carousel, item, index) {\n ctrl.setPreview(item.parameters);\n ctrl.updateModalPreview(item.parameters.originalPath);\n if (carousel != null && ctrl.carousel != null && carousel != ctrl.carousel) {\n ctrl.carousel.setItemSelect(index);\n } else if (ctrl.carouselPreview != null && carousel != ctrl.carouselPreview) {\n ctrl.carouselPreview.setItemSelect(index);\n }\n };\n\n //#endregion\n\n //#region modal preview\n\n ctrl.carouselPreviewNext = function () {\n var items = ctrl.carouselPreview.getItems(),\n itemSelected,\n itemSelectedNew,\n newIndex;\n itemSelected = ctrl.carouselPreview.getSelectedItem() || (items != null ? items[0] : null);\n if (ctrl.carouselPreview.getSelectedItem() === items[items.length - 1]) {\n ctrl.carouselPreview.goto(0, false);\n newIndex = 0;\n } else {\n ctrl.carouselPreview.next();\n newIndex = itemSelected.carouselItemData.index + 1;\n }\n if (itemSelected != null) {\n itemSelectedNew = items[newIndex];\n if (itemSelectedNew) {\n ctrl.carouselPreview.setItemSelect(itemSelectedNew);\n ctrl.setPreview(itemSelectedNew.carouselItemData.parameters);\n ctrl.updateModalPreview(itemSelectedNew.carouselItemData.parameters.originalPath);\n }\n }\n };\n ctrl.carouselPreviewPrev = function () {\n var items = ctrl.carouselPreview.getItems(),\n itemSelected,\n itemSelectedNew,\n newIndex;\n itemSelected = ctrl.carouselPreview.getSelectedItem() || (items != null ? items[0] : null);\n if (ctrl.carouselPreview.getSelectedItem() === items[0]) {\n ctrl.carouselPreview.goto(items.length - 1, false);\n newIndex = items.length - 1;\n } else {\n ctrl.carouselPreview.prev();\n newIndex = itemSelected.carouselItemData.index - 1;\n }\n if (itemSelected != null) {\n itemSelectedNew = items[newIndex];\n if (itemSelectedNew) {\n ctrl.carouselPreview.setItemSelect(itemSelectedNew);\n ctrl.setPreview(itemSelectedNew.carouselItemData.parameters);\n ctrl.updateModalPreview(itemSelectedNew.carouselItemData.parameters.originalPath);\n }\n }\n };\n ctrl.addModalPictureCarousel = function (carouselPreview) {\n ctrl.carouselPreview = carouselPreview;\n ctrl.carouselPreviewUpdate();\n };\n ctrl.carouselPreviewUpdate = function () {\n if (ctrl.carouselPreview != null) {\n ctrl.getDialog().then(function (modal) {\n if (modal.modalScope.isOpen === true) {\n ctrl.filterPreviewCarouselItems();\n ctrl.carouselPreview.update();\n }\n });\n }\n };\n ctrl.updateModalPreview = function (imgSrc) {\n productService.getPhoto(imgSrc).then(function (img) {\n $timeout(function () {\n ctrl.maxHeightModalPreview = ctrl.getMaxHeightModalPreview();\n ctrl.modalPreviewHeight = img.naturalHeight > ctrl.maxHeightModalPreview ? ctrl.maxHeightModalPreview : img.naturalHeight;\n }, 0);\n });\n };\n ctrl.modalPreviewCallbackOpen = function () {\n ctrl.setPreviewByColorId(ctrl.offerSelected.Color != null ? ctrl.offerSelected.Color.ColorId : null, ctrl.filterPhotosEnable, ctrl.carouselPreview);\n $timeout(function () {\n ctrl.carouselPreviewUpdate();\n ctrl.isOpenPreviewModal = true;\n }, 100);\n };\n ctrl.modalPreviewCallbackClose = function () {\n if (!('ontouchstart' in window)) {\n $window.removeEventListener(`keydown`, ctrl.onKeydownBackForward);\n }\n ctrl.isOpenPreviewModal = false;\n };\n ctrl.modalPreviewOpen = function (event, picture) {\n event.preventDefault();\n event.stopPropagation();\n if (ctrl.isPostLoad !== true) {\n return;\n }\n ctrl.modalPreviewState = 'load';\n ctrl.dialogOpen().then(function (modal) {\n let modalElement = modal.modalElement[0];\n modalElement.classList.add('product-preview-modal-wrap');\n let htmlMain = document.querySelector('html');\n htmlMain.classList.add('overflow-hidden');\n modal.modalScope.callbackClose = function () {\n htmlMain.classList.remove('overflow-hidden');\n };\n productService.getPhoto(picture == null ? ctrl.picture.originalPath : picture.originalPath).then(function (img) {\n $timeout(function () {\n ctrl.maxHeightModalPreview = ctrl.getMaxHeightModalPreview();\n ctrl.modalPreviewHeight = img.naturalHeight > ctrl.maxHeightModalPreview ? ctrl.maxHeightModalPreview : img.naturalHeight;\n //ctrl.carouselPreviewUpdate();\n ctrl.modalPreviewState = 'complete';\n if (ctrl.carouselPreview != null) {\n ctrl.filterPreviewCarouselItems();\n }\n }, 0);\n });\n });\n };\n ctrl.getMaxHeightModalPreview = function () {\n var result = 0,\n height,\n modalElement,\n modaPreview = document.getElementById('modalPreview_' + ctrl.productId);\n if (modaPreview != null) {\n modalElement = modaPreview.querySelector('.modal-content');\n }\n if (modalElement != null) {\n height = parseFloat(getComputedStyle(modalElement).height);\n result = isNaN(height) === false ? height : 0;\n }\n return result;\n };\n ctrl.dialogOpen = function () {\n return deferPostLoad.promise.then(() => ctrl.getDialog()).then(function (modal) {\n if (!('ontouchstart' in window)) {\n $window.addEventListener(`keydown`, ctrl.onKeydownBackForward);\n }\n modal.modalScope.open();\n return modal;\n });\n };\n ctrl.getDialog = function () {\n return modalService.getModal('modalPreview_' + ctrl.productId);\n };\n ctrl.resizeModalPreview = function () {\n $scope.$apply(function () {\n ctrl.updateModalPreview(ctrl.picture.originalPath);\n ctrl.carouselPreviewUpdate();\n });\n };\n\n //#endregion\n\n //#region productViewChange\n\n ctrl.showVideo = function (visible) {\n ctrl.visibleVideo = visible;\n if (visible === false) {\n ctrl.videosInModalReceived = false;\n ctrl.carouselVideosInModalInit = false;\n }\n };\n ctrl.onReceiveVideosInModal = function () {\n ctrl.videosInModalReceived = true;\n };\n ctrl.onInitCarouselVideosInModal = function () {\n ctrl.carouselVideosInModalInit = true;\n };\n ctrl.showRotate = function (visible) {\n ctrl.visibleRotate = visible;\n };\n\n //#endregion\n\n //#region shippingVariants\n ctrl.addShippingVariants = function (shippingVariants) {\n ctrl.shippingVariants = shippingVariants;\n };\n //#endregion\n\n //#region priceAmountList\n ctrl.addPriceAmountList = function (priceAmountList) {\n ctrl.priceAmountList = priceAmountList;\n };\n //#endregion\n\n //#region spinbox amount\n ctrl.updateAmount = function () {\n ctrl.refreshPrice();\n };\n //#endregion\n\n ctrl.filterPhotosFunction = function (item, index) {\n return item != null && (item.carouselItemData.parameters.colorId == null || ctrl.offerSelected.Color == null || item.carouselItemData.parameters.colorId == ctrl.offerSelected.Color.ColorId);\n };\n ctrl.setPreviewByColorId = function (colorId, filterEnabled, carousel) {\n var findArray;\n if (ctrl.carousel) {\n if (filterEnabled === true) {\n ctrl.filterPhotos(colorId, carousel, ctrl.picture.PhotoId);\n } else {\n findArray = ctrl.carousel.items.filter(ctrl.filterPhotosFunction);\n if (findArray != null && findArray.length > 0) {\n ctrl.setPreview(findArray[0].carouselItemData.parameters);\n }\n }\n }\n };\n ctrl.filterPhotos = function (colorId, carousel, selectedPhotoId) {\n var selectedItem, items, oldItem;\n if (carousel) {\n oldItem = carousel.getActiveItem();\n items = carousel.filterItems(ctrl.filterPhotosFunction, colorId);\n\n /*if (selectedPhotoId != null) {\n items = carousel.getItems();\n for (var i = 0, len = items.length; i < len; i++) {\n if (items[i].carouselItemData.parameters.colorId === colorId) {\n carousel.setItemSelect(items[i]);\n findedSelected = true;\n break;\n }\n }\n }*/\n\n if (items == null || items.length === 0) {\n carousel.addItem(oldItem);\n }\n selectedItem = carousel.getActiveItem();\n if (selectedItem != null) {\n carousel.setItemSelect(selectedItem);\n ctrl.setPreview(selectedItem.carouselItemData.parameters);\n }\n }\n };\n ctrl.setView = function (viewName) {\n ctrl.productView = viewName;\n ctrl.stopVideo();\n };\n ctrl.setPreview = function (picture) {\n ctrl.picture = picture;\n };\n ctrl.getUrl = function (url) {\n var result = url,\n params = [];\n if (ctrl.colorsViewer != null && ctrl.colorsViewer.colorSelected != null) {\n params.push('color=' + ctrl.colorsViewer.colorSelected.ColorId);\n }\n if (ctrl.sizesViewer != null && ctrl.sizesViewer.sizeSelected != null) {\n params.push('size=' + ctrl.sizesViewer.sizeSelected.SizeId);\n }\n if (params.length > 0) {\n result = result + '?' + params.join('&');\n }\n return result;\n };\n ctrl.getCommentsCount = function () {\n productService.getReviewsCount(ctrl.productId).then(function (result) {\n if (result != null) {\n ctrl.reviewsCount = result.reviewsCount;\n }\n });\n };\n ctrl.addChangeSizeAndColorCallback = function (callback) {\n if (callback == null) {\n throw new Error('Parameter \"callback is required\"');\n }\n callbackListColorsAndSizes.push(callback);\n if (lastValueChangesSizeColor !== undefined) {\n callback(lastValueChangesSizeColor);\n }\n };\n ctrl.processChangeSizeAndColorCallback = function (value, type, additionalData) {\n lastValueChangesSizeColor = value;\n if (callbackListColorsAndSizes.length > 0) {\n callbackListColorsAndSizes.forEach(fn => fn(value, type, additionalData));\n }\n };\n ctrl.onKeydownBackForward = e => {\n if (e.code === `ArrowRight`) {\n ctrl.carouselPreviewNext();\n }\n if (e.code === `ArrowLeft`) {\n ctrl.carouselPreviewPrev();\n }\n };\n ctrl.handleChangeInplaceArtNo = function (value, $scope) {\n ctrl.offerSelected.ArtNo = value;\n };\n ctrl.filterPreviewCarouselItems = function () {\n if (ctrl.carouselPreview != null) {\n if (ctrl.filterPhotosEnable === true && ctrl.picture != null) {\n ctrl.filterPhotos(ctrl.offerSelected.Color != null ? ctrl.offerSelected.Color.ColorId : null, ctrl.carouselPreview, ctrl.picture.PhotoId);\n }\n var items = ctrl.carouselPreview.getItems();\n for (var i = 0; i < items.length; i++) {\n if (items[i].carouselItemData.parameters.PhotoId == ctrl.picture.PhotoId) {\n ctrl.carouselPreview.setItemSelect(items[i]);\n ctrl.setPreview(items[i].carouselItemData.parameters);\n ctrl.updateModalPreview(items[i].carouselItemData.parameters.originalPath);\n break;\n }\n }\n }\n };\n\n //\u043C\u043E\u0434\u0430\u043B\u044C\u043D\u043E\u0435 \u043E\u043A\u043D\u043E \u0441 \u043C\u0430\u0433\u0430\u0437\u0438\u043D\u0430\u043C\u0438\n const modalId = 'mapShops';\n ctrl.openShopsMap = function (offerId, isMobile, yaMapsKey) {\n modalService.renderModal(modalId, $translate.instant('Js.Product.ShopsMap.Header'), ``, null, {\n destroyOnClose: true,\n modalClass: 'warehouses-list-modal'\n });\n modalService.getModal(modalId).then(function (modal) {\n modal.modalScope.open();\n });\n };\n};\nProductCtrl.$inject = [\"$q\", \"$scope\", \"$sce\", \"$timeout\", \"productService\", \"modalService\", \"toaster\", \"$translate\", \"$window\", \"urlHelper\", \"customOptionsService\"];\nexport default ProductCtrl;", "function productService($http, $q) {\n var service = this,\n _product,\n callbacks = {};\n service.getOffers = function (productId, colorId, sizeId) {\n return $http.get('productExt/getoffers', {\n params: {\n productId: productId,\n colorId: colorId,\n sizeId: sizeId\n }\n }).then(function (response) {\n return response.data;\n });\n };\n service.findOfferSelected = function (offers, offerIdSelected) {\n var offer;\n for (var i = offers.length - 1; i >= 0; i--) {\n if (offers[i].OfferId === offerIdSelected) {\n offer = offers[i];\n break;\n }\n }\n return offer;\n };\n service.findOffersByColorId = function (offers, colorId) {\n return offers.filter(function (item) {\n return colorId != null && item.Color != null && item.Color.ColorId === colorId;\n });\n };\n service.findOffersBySizeId = function (offers, sizeId) {\n return offers.filter(function (item) {\n return sizeId != null && item.Size != null && item.Size.SizeId === sizeId;\n });\n };\n service.getOffer = function (offers, colorId, sizeId) {\n var arrayOffers = offers.slice(),\n arrayOffersByColor = [],\n arrayOffersBySize = [],\n stopLoop = false,\n offer;\n arrayOffersByColor = service.findOffersByColorId(arrayOffers, colorId);\n arrayOffersBySize = service.findOffersBySizeId(arrayOffers, sizeId);\n if (arrayOffersByColor.length > 0 && arrayOffersBySize.length > 0) {\n for (var i = 0, lenC = arrayOffersByColor.length; i < lenC; i++) {\n for (var j = 0, lenS = arrayOffersBySize.length; j < lenS; j++) {\n if (arrayOffersByColor[i].OfferId === arrayOffersBySize[j].OfferId) {\n offer = arrayOffersByColor[i];\n stopLoop = true;\n break;\n }\n }\n if (stopLoop === true) {\n break;\n }\n }\n }\n if (offer == null && arrayOffersByColor.length > 0) {\n offer = arrayOffersByColor[0];\n }\n if (offer == null && arrayOffersBySize.length > 0) {\n offer = arrayOffersBySize[0];\n }\n return offer;\n };\n service.getPrice = function (offerId, attributesXml, lpBlockId, amount) {\n return $http.post('productExt/getofferprice', {\n offerId: offerId,\n attributesXml: attributesXml,\n lpBlockId: lpBlockId,\n amount: amount\n }).then(function (response) {\n return response.data;\n });\n };\n service.getFirstPaymentPrice = function (price, discount, discountAmount) {\n return $http.get('productExt/getfirstpaymentprice', {\n params: {\n price: price,\n discount: discount,\n discountAmount: discountAmount\n }\n }).then(function (response) {\n return response.data;\n });\n };\n service.getShippings = function (offerId) {\n return $http.get('productExt/getshippings', {\n params: {\n offerId: offerId\n }\n }).then(function (response) {\n return response.data;\n });\n };\n service.addCallback = function (name, func) {\n callbacks[name] = callbacks[name] || [];\n callbacks[name].push(func);\n };\n service.processCallback = function (name, data) {\n var arrFunc = callbacks[name];\n if (arrFunc != null && arrFunc.length > 0) {\n for (var i = 0, len = arrFunc.length; i < len; i++) {\n arrFunc[i](data);\n }\n }\n };\n service.getPhoto = function (url) {\n var defered = $q.defer(),\n img = new Image();\n img.src = url;\n if (img.complete == true || typeof img.naturalWidth !== 'undefined' && img.naturalWidth > 0) {\n defered.resolve(img);\n } else {\n img.onload = function () {\n defered.resolve(img);\n };\n }\n return defered.promise.then(function (response) {\n return response;\n });\n };\n service.addToStorage = function (product) {\n _product = product;\n };\n service.getProduct = function () {\n return _product;\n };\n service.getReviewsCount = function (productId) {\n return $http.get('productExt/getReviewsCount', {\n params: {\n productId: productId\n }\n }).then(function (response) {\n return response.data;\n });\n };\n service.getOfferStocks = function (offerId) {\n return $http.get('productExt/getofferstocks', {\n params: {\n offerId: offerId\n }\n }).then(function (response) {\n return response.data;\n });\n };\n}\nproductService.$inject = [\"$http\", \"$q\"];\nexport default productService;", "\uFEFFimport carouselModule from '../_common/carousel/carousel.module.js';\nimport ratingModule from '../_common/rating/rating.module.js';\nimport rotateModule from '../_common/rotate/rotate.module.js';\nimport videosModule from '../_partials/videos/videos.module.js';\nimport zoomerModule from '../_common/zoomer/zoomer.module.js';\n\nimport customOptionsModule from '../_partials/custom-options/customOptions.module.js';\nimport colorsViewerModule from '../_partials/colors-viewer/colorsViewer.module.js';\nimport sizesViewerModule from '../_partials/sizes-viewer/sizesViewer.module.js';\nimport buyOneClickModule from '../_partials/buy-one-click/buyOneClick.module.js';\nimport preOrderModule from '../_partials/pre-order/preOrder.module.js';\n\nimport '../../styles/partials/gallery.scss';\nimport '../../styles/partials/product-color.scss';\n\nimport '../../styles/views/product.scss';\n\nimport ProductCtrl from './controllers/productController.js';\nimport productService from './services/productService.js';\n\nconst moduleName = 'productQuickView';\n\nconst deps = [\n ratingModule,\n carouselModule,\n zoomerModule,\n rotateModule,\n customOptionsModule,\n colorsViewerModule,\n sizesViewerModule,\n buyOneClickModule,\n videosModule,\n preOrderModule,\n];\n\nangular.module(moduleName, deps).controller('ProductCtrl', ProductCtrl).service('productService', productService);\n\nexport default moduleName;\n", "/**!\n * AngularJS file upload directives and services. Supports: file upload/drop/paste, resume, cancel/abort,\n * progress, resize, thumbnail, preview, validation and CORS\n * FileAPI Flash shim for old browsers not supporting FormData\n * @author Danial \n * @version 12.2.13\n */\n\n(function () {\n /** @namespace FileAPI.noContentTimeout */\n\n function patchXHR(fnName, newFn) {\n window.XMLHttpRequest.prototype[fnName] = newFn(window.XMLHttpRequest.prototype[fnName]);\n }\n\n function redefineProp(xhr, prop, fn) {\n try {\n Object.defineProperty(xhr, prop, {get: fn});\n } catch (e) {/*ignore*/\n }\n }\n\n if (!window.FileAPI) {\n window.FileAPI = {};\n }\n\n if (!window.XMLHttpRequest) {\n throw 'AJAX is not supported. XMLHttpRequest is not defined.';\n }\n\n FileAPI.shouldLoad = !window.FormData || FileAPI.forceLoad;\n if (FileAPI.shouldLoad) {\n var initializeUploadListener = function (xhr) {\n if (!xhr.__listeners) {\n if (!xhr.upload) xhr.upload = {};\n xhr.__listeners = [];\n var origAddEventListener = xhr.upload.addEventListener;\n xhr.upload.addEventListener = function (t, fn) {\n xhr.__listeners[t] = fn;\n if (origAddEventListener) origAddEventListener.apply(this, arguments);\n };\n }\n };\n\n patchXHR('open', function (orig) {\n return function (m, url, b) {\n initializeUploadListener(this);\n this.__url = url;\n try {\n orig.apply(this, [m, url, b]);\n } catch (e) {\n if (e.message.indexOf('Access is denied') > -1) {\n this.__origError = e;\n orig.apply(this, [m, '_fix_for_ie_crossdomain__', b]);\n }\n }\n };\n });\n\n patchXHR('getResponseHeader', function (orig) {\n return function (h) {\n return this.__fileApiXHR && this.__fileApiXHR.getResponseHeader ? this.__fileApiXHR.getResponseHeader(h) : (orig == null ? null : orig.apply(this, [h]));\n };\n });\n\n patchXHR('getAllResponseHeaders', function (orig) {\n return function () {\n return this.__fileApiXHR && this.__fileApiXHR.getAllResponseHeaders ? this.__fileApiXHR.getAllResponseHeaders() : (orig == null ? null : orig.apply(this));\n };\n });\n\n patchXHR('abort', function (orig) {\n return function () {\n return this.__fileApiXHR && this.__fileApiXHR.abort ? this.__fileApiXHR.abort() : (orig == null ? null : orig.apply(this));\n };\n });\n\n patchXHR('setRequestHeader', function (orig) {\n return function (header, value) {\n if (header === '__setXHR_') {\n initializeUploadListener(this);\n var val = value(this);\n // fix for angular < 1.2.0\n if (val instanceof Function) {\n val(this);\n }\n } else {\n this.__requestHeaders = this.__requestHeaders || {};\n this.__requestHeaders[header] = value;\n orig.apply(this, arguments);\n }\n };\n });\n\n patchXHR('send', function (orig) {\n return function () {\n var xhr = this;\n if (arguments[0] && arguments[0].__isFileAPIShim) {\n var formData = arguments[0];\n var config = {\n url: xhr.__url,\n jsonp: false, //removes the callback form param\n cache: true, //removes the ?fileapiXXX in the url\n complete: function (err, fileApiXHR) {\n if (err && angular.isString(err) && err.indexOf('#2174') !== -1) {\n // this error seems to be fine the file is being uploaded properly.\n err = null;\n }\n xhr.__completed = true;\n if (!err && xhr.__listeners.load)\n xhr.__listeners.load({\n type: 'load',\n loaded: xhr.__loaded,\n total: xhr.__total,\n target: xhr,\n lengthComputable: true\n });\n if (!err && xhr.__listeners.loadend)\n xhr.__listeners.loadend({\n type: 'loadend',\n loaded: xhr.__loaded,\n total: xhr.__total,\n target: xhr,\n lengthComputable: true\n });\n if (err === 'abort' && xhr.__listeners.abort)\n xhr.__listeners.abort({\n type: 'abort',\n loaded: xhr.__loaded,\n total: xhr.__total,\n target: xhr,\n lengthComputable: true\n });\n if (fileApiXHR.status !== undefined) redefineProp(xhr, 'status', function () {\n return (fileApiXHR.status === 0 && err && err !== 'abort') ? 500 : fileApiXHR.status;\n });\n if (fileApiXHR.statusText !== undefined) redefineProp(xhr, 'statusText', function () {\n return fileApiXHR.statusText;\n });\n redefineProp(xhr, 'readyState', function () {\n return 4;\n });\n if (fileApiXHR.response !== undefined) redefineProp(xhr, 'response', function () {\n return fileApiXHR.response;\n });\n var resp = fileApiXHR.responseText || (err && fileApiXHR.status === 0 && err !== 'abort' ? err : undefined);\n redefineProp(xhr, 'responseText', function () {\n return resp;\n });\n redefineProp(xhr, 'response', function () {\n return resp;\n });\n if (err) redefineProp(xhr, 'err', function () {\n return err;\n });\n xhr.__fileApiXHR = fileApiXHR;\n if (xhr.onreadystatechange) xhr.onreadystatechange();\n if (xhr.onload) xhr.onload();\n },\n progress: function (e) {\n e.target = xhr;\n if (xhr.__listeners.progress) xhr.__listeners.progress(e);\n xhr.__total = e.total;\n xhr.__loaded = e.loaded;\n if (e.total === e.loaded) {\n // fix flash issue that doesn't call complete if there is no response text from the server\n var _this = this;\n setTimeout(function () {\n if (!xhr.__completed) {\n xhr.getAllResponseHeaders = function () {\n };\n _this.complete(null, {status: 204, statusText: 'No Content'});\n }\n }, FileAPI.noContentTimeout || 10000);\n }\n },\n headers: xhr.__requestHeaders\n };\n config.data = {};\n config.files = {};\n for (var i = 0; i < formData.data.length; i++) {\n var item = formData.data[i];\n if (item.val != null && item.val.name != null && item.val.size != null && item.val.type != null) {\n config.files[item.key] = item.val;\n } else {\n config.data[item.key] = item.val;\n }\n }\n\n setTimeout(function () {\n if (!FileAPI.hasFlash) {\n throw 'Adode Flash Player need to be installed. To check ahead use \"FileAPI.hasFlash\"';\n }\n xhr.__fileApiXHR = FileAPI.upload(config);\n }, 1);\n } else {\n if (this.__origError) {\n throw this.__origError;\n }\n orig.apply(xhr, arguments);\n }\n };\n });\n window.XMLHttpRequest.__isFileAPIShim = true;\n window.FormData = FormData = function () {\n return {\n append: function (key, val, name) {\n if (val.__isFileAPIBlobShim) {\n val = val.data[0];\n }\n this.data.push({\n key: key,\n val: val,\n name: name\n });\n },\n data: [],\n __isFileAPIShim: true\n };\n };\n\n window.Blob = Blob = function (b) {\n return {\n data: b,\n __isFileAPIBlobShim: true\n };\n };\n }\n\n})();\n\n(function () {\n /** @namespace FileAPI.forceLoad */\n /** @namespace window.FileAPI.jsUrl */\n /** @namespace window.FileAPI.jsPath */\n\n function isInputTypeFile(elem) {\n return elem[0].tagName.toLowerCase() === 'input' && elem.attr('type') && elem.attr('type').toLowerCase() === 'file';\n }\n\n function hasFlash() {\n try {\n var fo = new ActiveXObject('ShockwaveFlash.ShockwaveFlash');\n if (fo) return true;\n } catch (e) {\n if (navigator.mimeTypes['application/x-shockwave-flash'] !== undefined) return true;\n }\n return false;\n }\n\n function getOffset(obj) {\n var left = 0, top = 0;\n\n if (window.jQuery) {\n return jQuery(obj).offset();\n }\n\n if (obj.offsetParent) {\n do {\n left += (obj.offsetLeft - obj.scrollLeft);\n top += (obj.offsetTop - obj.scrollTop);\n obj = obj.offsetParent;\n } while (obj);\n }\n return {\n left: left,\n top: top\n };\n }\n\n if (FileAPI.shouldLoad) {\n FileAPI.hasFlash = hasFlash();\n\n //load FileAPI\n if (FileAPI.forceLoad) {\n FileAPI.html5 = false;\n }\n\n if (!FileAPI.upload) {\n var jsUrl, basePath, script = document.createElement('script'), allScripts = document.getElementsByTagName('script'), i, index, src;\n if (window.FileAPI.jsUrl) {\n jsUrl = window.FileAPI.jsUrl;\n } else if (window.FileAPI.jsPath) {\n basePath = window.FileAPI.jsPath;\n } else {\n for (i = 0; i < allScripts.length; i++) {\n src = allScripts[i].src;\n index = src.search(/\\/ng\\-file\\-upload[\\-a-zA-z0-9\\.]*\\.js/);\n if (index > -1) {\n basePath = src.substring(0, index + 1);\n break;\n }\n }\n }\n\n if (FileAPI.staticPath == null) FileAPI.staticPath = basePath;\n script.setAttribute('src', jsUrl || basePath + 'FileAPI.min.js');\n document.getElementsByTagName('head')[0].appendChild(script);\n }\n\n FileAPI.ngfFixIE = function (elem, fileElem, changeFn) {\n if (!hasFlash()) {\n throw 'Adode Flash Player need to be installed. To check ahead use \"FileAPI.hasFlash\"';\n }\n var fixInputStyle = function () {\n var label = fileElem.parent();\n if (elem.attr('disabled')) {\n if (label) label.removeClass('js-fileapi-wrapper');\n } else {\n if (!fileElem.attr('__ngf_flash_')) {\n fileElem.unbind('change');\n fileElem.unbind('click');\n fileElem.bind('change', function (evt) {\n fileApiChangeFn.apply(this, [evt]);\n changeFn.apply(this, [evt]);\n });\n fileElem.attr('__ngf_flash_', 'true');\n }\n label.addClass('js-fileapi-wrapper');\n if (!isInputTypeFile(elem)) {\n label.css('position', 'absolute')\n .css('top', getOffset(elem[0]).top + 'px').css('left', getOffset(elem[0]).left + 'px')\n .css('width', elem[0].offsetWidth + 'px').css('height', elem[0].offsetHeight + 'px')\n .css('filter', 'alpha(opacity=0)').css('display', elem.css('display'))\n .css('overflow', 'hidden').css('z-index', '900000')\n .css('visibility', 'visible');\n fileElem.css('width', elem[0].offsetWidth + 'px').css('height', elem[0].offsetHeight + 'px')\n .css('position', 'absolute').css('top', '0px').css('left', '0px');\n }\n }\n };\n\n elem.bind('mouseenter', fixInputStyle);\n\n var fileApiChangeFn = function (evt) {\n var files = FileAPI.getFiles(evt);\n //just a double check for #233\n for (var i = 0; i < files.length; i++) {\n if (files[i].size === undefined) files[i].size = 0;\n if (files[i].name === undefined) files[i].name = 'file';\n if (files[i].type === undefined) files[i].type = 'undefined';\n }\n if (!evt.target) {\n evt.target = {};\n }\n evt.target.files = files;\n // if evt.target.files is not writable use helper field\n if (evt.target.files !== files) {\n evt.__files_ = files;\n }\n (evt.__files_ || evt.target.files).item = function (i) {\n return (evt.__files_ || evt.target.files)[i] || null;\n };\n };\n };\n\n FileAPI.disableFileInput = function (elem, disable) {\n if (disable) {\n elem.removeClass('js-fileapi-wrapper');\n } else {\n elem.addClass('js-fileapi-wrapper');\n }\n };\n }\n})();\n\nif (!window.FileReader) {\n window.FileReader = function () {\n var _this = this, loadStarted = false;\n this.listeners = {};\n this.addEventListener = function (type, fn) {\n _this.listeners[type] = _this.listeners[type] || [];\n _this.listeners[type].push(fn);\n };\n this.removeEventListener = function (type, fn) {\n if (_this.listeners[type]) _this.listeners[type].splice(_this.listeners[type].indexOf(fn), 1);\n };\n this.dispatchEvent = function (evt) {\n var list = _this.listeners[evt.type];\n if (list) {\n for (var i = 0; i < list.length; i++) {\n list[i].call(_this, evt);\n }\n }\n };\n this.onabort = this.onerror = this.onload = this.onloadstart = this.onloadend = this.onprogress = null;\n\n var constructEvent = function (type, evt) {\n var e = {type: type, target: _this, loaded: evt.loaded, total: evt.total, error: evt.error};\n if (evt.result != null) e.target.result = evt.result;\n return e;\n };\n var listener = function (evt) {\n if (!loadStarted) {\n loadStarted = true;\n if (_this.onloadstart) _this.onloadstart(constructEvent('loadstart', evt));\n }\n var e;\n if (evt.type === 'load') {\n if (_this.onloadend) _this.onloadend(constructEvent('loadend', evt));\n e = constructEvent('load', evt);\n if (_this.onload) _this.onload(e);\n _this.dispatchEvent(e);\n } else if (evt.type === 'progress') {\n e = constructEvent('progress', evt);\n if (_this.onprogress) _this.onprogress(e);\n _this.dispatchEvent(e);\n } else {\n e = constructEvent('error', evt);\n if (_this.onerror) _this.onerror(e);\n _this.dispatchEvent(e);\n }\n };\n this.readAsDataURL = function (file) {\n FileAPI.readAsDataURL(file, listener);\n };\n this.readAsText = function (file) {\n FileAPI.readAsText(file, listener);\n };\n };\n}\n\n/**!\n * AngularJS file upload directives and services. Supoorts: file upload/drop/paste, resume, cancel/abort,\n * progress, resize, thumbnail, preview, validation and CORS\n * @author Danial \n * @version 12.2.13\n */\n\nif (window.XMLHttpRequest && !(window.FileAPI && FileAPI.shouldLoad)) {\n window.XMLHttpRequest.prototype.setRequestHeader = (function (orig) {\n return function (header, value) {\n if (header === '__setXHR_') {\n var val = value(this);\n // fix for angular < 1.2.0\n if (val instanceof Function) {\n val(this);\n }\n } else {\n orig.apply(this, arguments);\n }\n };\n })(window.XMLHttpRequest.prototype.setRequestHeader);\n}\n\nvar ngFileUpload = angular.module('ngFileUpload', []);\n\nngFileUpload.version = '12.2.13';\n\nngFileUpload.service('UploadBase', ['$http', '$q', '$timeout', function ($http, $q, $timeout) {\n var upload = this;\n upload.promisesCount = 0;\n\n this.isResumeSupported = function () {\n return window.Blob && window.Blob.prototype.slice;\n };\n\n var resumeSupported = this.isResumeSupported();\n\n function sendHttp(config) {\n config.method = config.method || 'POST';\n config.headers = config.headers || {};\n\n var deferred = config._deferred = config._deferred || $q.defer();\n var promise = deferred.promise;\n\n function notifyProgress(e) {\n if (deferred.notify) {\n deferred.notify(e);\n }\n if (promise.progressFunc) {\n $timeout(function () {\n promise.progressFunc(e);\n });\n }\n }\n\n function getNotifyEvent(n) {\n if (config._start != null && resumeSupported) {\n return {\n loaded: n.loaded + config._start,\n total: (config._file && config._file.size) || n.total,\n type: n.type, config: config,\n lengthComputable: true, target: n.target\n };\n } else {\n return n;\n }\n }\n\n if (!config.disableProgress) {\n config.headers.__setXHR_ = function () {\n return function (xhr) {\n if (!xhr || !xhr.upload || !xhr.upload.addEventListener) return;\n config.__XHR = xhr;\n if (config.xhrFn) config.xhrFn(xhr);\n xhr.upload.addEventListener('progress', function (e) {\n e.config = config;\n notifyProgress(getNotifyEvent(e));\n }, false);\n //fix for firefox not firing upload progress end, also IE8-9\n xhr.upload.addEventListener('load', function (e) {\n if (e.lengthComputable) {\n e.config = config;\n notifyProgress(getNotifyEvent(e));\n }\n }, false);\n };\n };\n }\n\n function uploadWithAngular() {\n $http(config).then(function (r) {\n if (resumeSupported && config._chunkSize && !config._finished && config._file) {\n var fileSize = config._file && config._file.size || 0;\n notifyProgress({\n loaded: Math.min(config._end, fileSize),\n total: fileSize,\n config: config,\n type: 'progress'\n }\n );\n upload.upload(config, true);\n } else {\n if (config._finished) delete config._finished;\n deferred.resolve(r);\n }\n }, function (e) {\n deferred.reject(e);\n }, function (n) {\n deferred.notify(n);\n }\n );\n }\n\n if (!resumeSupported) {\n uploadWithAngular();\n } else if (config._chunkSize && config._end && !config._finished) {\n config._start = config._end;\n config._end += config._chunkSize;\n uploadWithAngular();\n } else if (config.resumeSizeUrl) {\n $http.get(config.resumeSizeUrl).then(function (resp) {\n if (config.resumeSizeResponseReader) {\n config._start = config.resumeSizeResponseReader(resp.data);\n } else {\n config._start = parseInt((resp.data.size == null ? resp.data : resp.data.size).toString());\n }\n if (config._chunkSize) {\n config._end = config._start + config._chunkSize;\n }\n uploadWithAngular();\n }, function (e) {\n throw e;\n });\n } else if (config.resumeSize) {\n config.resumeSize().then(function (size) {\n config._start = size;\n if (config._chunkSize) {\n config._end = config._start + config._chunkSize;\n }\n uploadWithAngular();\n }, function (e) {\n throw e;\n });\n } else {\n if (config._chunkSize) {\n config._start = 0;\n config._end = config._start + config._chunkSize;\n }\n uploadWithAngular();\n }\n\n\n promise.success = function (fn) {\n promise.then(function (response) {\n fn(response.data, response.status, response.headers, config);\n });\n return promise;\n };\n\n promise.error = function (fn) {\n promise.then(null, function (response) {\n fn(response.data, response.status, response.headers, config);\n });\n return promise;\n };\n\n promise.progress = function (fn) {\n promise.progressFunc = fn;\n promise.then(null, null, function (n) {\n fn(n);\n });\n return promise;\n };\n promise.abort = promise.pause = function () {\n if (config.__XHR) {\n $timeout(function () {\n config.__XHR.abort();\n });\n }\n return promise;\n };\n promise.xhr = function (fn) {\n config.xhrFn = (function (origXhrFn) {\n return function () {\n if (origXhrFn) origXhrFn.apply(promise, arguments);\n fn.apply(promise, arguments);\n };\n })(config.xhrFn);\n return promise;\n };\n\n upload.promisesCount++;\n if (promise['finally'] && promise['finally'] instanceof Function) {\n promise['finally'](function () {\n upload.promisesCount--;\n });\n }\n return promise;\n }\n\n this.isUploadInProgress = function () {\n return upload.promisesCount > 0;\n };\n\n this.rename = function (file, name) {\n file.ngfName = name;\n return file;\n };\n\n this.jsonBlob = function (val) {\n if (val != null && !angular.isString(val)) {\n val = JSON.stringify(val);\n }\n var blob = new window.Blob([val], {type: 'application/json'});\n blob._ngfBlob = true;\n return blob;\n };\n\n this.json = function (val) {\n return angular.toJson(val);\n };\n\n function copy(obj) {\n var clone = {};\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n clone[key] = obj[key];\n }\n }\n return clone;\n }\n\n this.isFile = function (file) {\n return file != null && (file instanceof window.Blob || (file.flashId && file.name && file.size));\n };\n\n this.upload = function (config, internal) {\n function toResumeFile(file, formData) {\n if (file._ngfBlob) return file;\n config._file = config._file || file;\n if (config._start != null && resumeSupported) {\n if (config._end && config._end >= file.size) {\n config._finished = true;\n config._end = file.size;\n }\n var slice = file.slice(config._start, config._end || file.size);\n slice.name = file.name;\n slice.ngfName = file.ngfName;\n if (config._chunkSize) {\n formData.append('_chunkSize', config._chunkSize);\n formData.append('_currentChunkSize', config._end - config._start);\n formData.append('_chunkNumber', Math.floor(config._start / config._chunkSize));\n formData.append('_totalSize', config._file.size);\n }\n return slice;\n }\n return file;\n }\n\n function addFieldToFormData(formData, val, key) {\n if (val !== undefined) {\n if (angular.isDate(val)) {\n val = val.toISOString();\n }\n if (angular.isString(val)) {\n formData.append(key, val);\n } else if (upload.isFile(val)) {\n var file = toResumeFile(val, formData);\n var split = key.split(',');\n if (split[1]) {\n file.ngfName = split[1].replace(/^\\s+|\\s+$/g, '');\n key = split[0];\n }\n config._fileKey = config._fileKey || key;\n formData.append(key, file, file.ngfName || file.name);\n } else {\n if (angular.isObject(val)) {\n if (val.$$ngfCircularDetection) throw 'ngFileUpload: Circular reference in config.data. Make sure specified data for Upload.upload() has no circular reference: ' + key;\n\n val.$$ngfCircularDetection = true;\n try {\n for (var k in val) {\n if (val.hasOwnProperty(k) && k !== '$$ngfCircularDetection') {\n var objectKey = config.objectKey == null ? '[i]' : config.objectKey;\n if (val.length && parseInt(k) > -1) {\n objectKey = config.arrayKey == null ? objectKey : config.arrayKey;\n }\n addFieldToFormData(formData, val[k], key + objectKey.replace(/[ik]/g, k));\n }\n }\n } finally {\n delete val.$$ngfCircularDetection;\n }\n } else {\n formData.append(key, val);\n }\n }\n }\n }\n\n function digestConfig() {\n config._chunkSize = upload.translateScalars(config.resumeChunkSize);\n config._chunkSize = config._chunkSize ? parseInt(config._chunkSize.toString()) : null;\n\n config.headers = config.headers || {};\n config.headers['Content-Type'] = undefined;\n config.transformRequest = config.transformRequest ?\n (angular.isArray(config.transformRequest) ?\n config.transformRequest : [config.transformRequest]) : [];\n config.transformRequest.push(function (data) {\n var formData = new window.FormData(), key;\n data = data || config.fields || {};\n if (config.file) {\n data.file = config.file;\n }\n for (key in data) {\n if (data.hasOwnProperty(key)) {\n var val = data[key];\n if (config.formDataAppender) {\n config.formDataAppender(formData, key, val);\n } else {\n addFieldToFormData(formData, val, key);\n }\n }\n }\n\n return formData;\n });\n }\n\n if (!internal) config = copy(config);\n if (!config._isDigested) {\n config._isDigested = true;\n digestConfig();\n }\n\n return sendHttp(config);\n };\n\n this.http = function (config) {\n config = copy(config);\n config.transformRequest = config.transformRequest || function (data) {\n if ((window.ArrayBuffer && data instanceof window.ArrayBuffer) || data instanceof window.Blob) {\n return data;\n }\n return $http.defaults.transformRequest[0].apply(this, arguments);\n };\n config._chunkSize = upload.translateScalars(config.resumeChunkSize);\n config._chunkSize = config._chunkSize ? parseInt(config._chunkSize.toString()) : null;\n\n return sendHttp(config);\n };\n\n this.translateScalars = function (str) {\n if (angular.isString(str)) {\n if (str.search(/kb/i) === str.length - 2) {\n return parseFloat(str.substring(0, str.length - 2) * 1024);\n } else if (str.search(/mb/i) === str.length - 2) {\n return parseFloat(str.substring(0, str.length - 2) * 1048576);\n } else if (str.search(/gb/i) === str.length - 2) {\n return parseFloat(str.substring(0, str.length - 2) * 1073741824);\n } else if (str.search(/b/i) === str.length - 1) {\n return parseFloat(str.substring(0, str.length - 1));\n } else if (str.search(/s/i) === str.length - 1) {\n return parseFloat(str.substring(0, str.length - 1));\n } else if (str.search(/m/i) === str.length - 1) {\n return parseFloat(str.substring(0, str.length - 1) * 60);\n } else if (str.search(/h/i) === str.length - 1) {\n return parseFloat(str.substring(0, str.length - 1) * 3600);\n }\n }\n return str;\n };\n\n this.urlToBlob = function(url) {\n var defer = $q.defer();\n $http({url: url, method: 'get', responseType: 'arraybuffer'}).then(function (resp) {\n var arrayBufferView = new Uint8Array(resp.data);\n var type = resp.headers('content-type') || 'image/WebP';\n var blob = new window.Blob([arrayBufferView], {type: type});\n var matches = url.match(/.*\\/(.+?)(\\?.*)?$/);\n if (matches.length > 1) {\n blob.name = matches[1];\n }\n defer.resolve(blob);\n }, function (e) {\n defer.reject(e);\n });\n return defer.promise;\n };\n\n this.setDefaults = function (defaults) {\n this.defaults = defaults || {};\n };\n\n this.defaults = {};\n this.version = ngFileUpload.version;\n}\n\n]);\n\nngFileUpload.service('Upload', ['$parse', '$timeout', '$compile', '$q', 'UploadExif', function ($parse, $timeout, $compile, $q, UploadExif) {\n var upload = UploadExif;\n upload.getAttrWithDefaults = function (attr, name) {\n if (attr[name] != null) return attr[name];\n var def = upload.defaults[name];\n return (def == null ? def : (angular.isString(def) ? def : JSON.stringify(def)));\n };\n\n upload.attrGetter = function (name, attr, scope, params) {\n var attrVal = this.getAttrWithDefaults(attr, name);\n if (scope) {\n try {\n if (params) {\n return $parse(attrVal)(scope, params);\n } else {\n return $parse(attrVal)(scope);\n }\n } catch (e) {\n // hangle string value without single qoute\n if (name.search(/min|max|pattern/i)) {\n return attrVal;\n } else {\n throw e;\n }\n }\n } else {\n return attrVal;\n }\n };\n\n upload.shouldUpdateOn = function (type, attr, scope) {\n var modelOptions = upload.attrGetter('ngfModelOptions', attr, scope);\n if (modelOptions && modelOptions.updateOn) {\n return modelOptions.updateOn.split(' ').indexOf(type) > -1;\n }\n return true;\n };\n\n upload.emptyPromise = function () {\n var d = $q.defer();\n var args = arguments;\n $timeout(function () {\n d.resolve.apply(d, args);\n });\n return d.promise;\n };\n\n upload.rejectPromise = function () {\n var d = $q.defer();\n var args = arguments;\n $timeout(function () {\n d.reject.apply(d, args);\n });\n return d.promise;\n };\n\n upload.happyPromise = function (promise, data) {\n var d = $q.defer();\n promise.then(function (result) {\n d.resolve(result);\n }, function (error) {\n $timeout(function () {\n throw error;\n });\n d.resolve(data);\n });\n return d.promise;\n };\n\n function applyExifRotations(files, attr, scope) {\n var promises = [upload.emptyPromise()];\n angular.forEach(files, function (f, i) {\n if (f.type.indexOf('image/jpeg') === 0 && upload.attrGetter('ngfFixOrientation', attr, scope, {$file: f})) {\n promises.push(upload.happyPromise(upload.applyExifRotation(f), f).then(function (fixedFile) {\n files.splice(i, 1, fixedFile);\n }));\n }\n });\n return $q.all(promises);\n }\n\n function resizeFile(files, attr, scope, ngModel) {\n var resizeVal = upload.attrGetter('ngfResize', attr, scope);\n if (!resizeVal || !upload.isResizeSupported() || !files.length) return upload.emptyPromise();\n if (resizeVal instanceof Function) {\n var defer = $q.defer();\n return resizeVal(files).then(function (p) {\n resizeWithParams(p, files, attr, scope, ngModel).then(function (r) {\n defer.resolve(r);\n }, function (e) {\n defer.reject(e);\n });\n }, function (e) {\n defer.reject(e);\n });\n } else {\n return resizeWithParams(resizeVal, files, attr, scope, ngModel);\n }\n }\n\n function resizeWithParams(params, files, attr, scope, ngModel) {\n var promises = [upload.emptyPromise()];\n\n function handleFile(f, i) {\n if (f.type.indexOf('image') === 0) {\n if (params.pattern && !upload.validatePattern(f, params.pattern)) return;\n params.resizeIf = function (width, height) {\n return upload.attrGetter('ngfResizeIf', attr, scope,\n {$width: width, $height: height, $file: f});\n };\n var promise = upload.resize(f, params);\n promises.push(promise);\n promise.then(function (resizedFile) {\n files.splice(i, 1, resizedFile);\n }, function (e) {\n f.$error = 'resize';\n (f.$errorMessages = (f.$errorMessages || {})).resize = true;\n f.$errorParam = (e ? (e.message ? e.message : e) + ': ' : '') + (f && f.name);\n ngModel.$ngfValidations.push({name: 'resize', valid: false});\n upload.applyModelValidation(ngModel, files);\n });\n }\n }\n\n for (var i = 0; i < files.length; i++) {\n handleFile(files[i], i);\n }\n return $q.all(promises);\n }\n\n upload.updateModel = function (ngModel, attr, scope, fileChange, files, evt, noDelay) {\n function update(files, invalidFiles, newFiles, dupFiles, isSingleModel) {\n attr.$$ngfPrevValidFiles = files;\n attr.$$ngfPrevInvalidFiles = invalidFiles;\n var file = files && files.length ? files[0] : null;\n var invalidFile = invalidFiles && invalidFiles.length ? invalidFiles[0] : null;\n\n if (ngModel) {\n upload.applyModelValidation(ngModel, files);\n ngModel.$setViewValue(isSingleModel ? file : files);\n }\n\n if (fileChange) {\n $parse(fileChange)(scope, {\n $files: files,\n $file: file,\n $newFiles: newFiles,\n $duplicateFiles: dupFiles,\n $invalidFiles: invalidFiles,\n $invalidFile: invalidFile,\n $event: evt\n });\n }\n\n var invalidModel = upload.attrGetter('ngfModelInvalid', attr);\n if (invalidModel) {\n $timeout(function () {\n $parse(invalidModel).assign(scope, isSingleModel ? invalidFile : invalidFiles);\n });\n }\n $timeout(function () {\n // scope apply changes\n });\n }\n\n var allNewFiles, dupFiles = [], prevValidFiles, prevInvalidFiles,\n invalids = [], valids = [];\n\n function removeDuplicates() {\n function equals(f1, f2) {\n return f1.name === f2.name && (f1.$ngfOrigSize || f1.size) === (f2.$ngfOrigSize || f2.size) &&\n f1.type === f2.type;\n }\n\n function isInPrevFiles(f) {\n var j;\n for (j = 0; j < prevValidFiles.length; j++) {\n if (equals(f, prevValidFiles[j])) {\n return true;\n }\n }\n for (j = 0; j < prevInvalidFiles.length; j++) {\n if (equals(f, prevInvalidFiles[j])) {\n return true;\n }\n }\n return false;\n }\n\n if (files) {\n allNewFiles = [];\n dupFiles = [];\n for (var i = 0; i < files.length; i++) {\n if (isInPrevFiles(files[i])) {\n dupFiles.push(files[i]);\n } else {\n allNewFiles.push(files[i]);\n }\n }\n }\n }\n\n function toArray(v) {\n return angular.isArray(v) ? v : [v];\n }\n\n function resizeAndUpdate() {\n function updateModel() {\n $timeout(function () {\n update(keep ? prevValidFiles.concat(valids) : valids,\n keep ? prevInvalidFiles.concat(invalids) : invalids,\n files, dupFiles, isSingleModel);\n }, options && options.debounce ? options.debounce.change || options.debounce : 0);\n }\n\n var resizingFiles = validateAfterResize ? allNewFiles : valids;\n resizeFile(resizingFiles, attr, scope, ngModel).then(function () {\n if (validateAfterResize) {\n upload.validate(allNewFiles, keep ? prevValidFiles.length : 0, ngModel, attr, scope)\n .then(function (validationResult) {\n valids = validationResult.validsFiles;\n invalids = validationResult.invalidsFiles;\n updateModel();\n });\n } else {\n updateModel();\n }\n }, function () {\n for (var i = 0; i < resizingFiles.length; i++) {\n var f = resizingFiles[i];\n if (f.$error === 'resize') {\n var index = valids.indexOf(f);\n if (index > -1) {\n valids.splice(index, 1);\n invalids.push(f);\n }\n updateModel();\n }\n }\n });\n }\n\n prevValidFiles = attr.$$ngfPrevValidFiles || [];\n prevInvalidFiles = attr.$$ngfPrevInvalidFiles || [];\n if (ngModel && ngModel.$modelValue) {\n prevValidFiles = toArray(ngModel.$modelValue);\n }\n\n var keep = upload.attrGetter('ngfKeep', attr, scope);\n allNewFiles = (files || []).slice(0);\n if (keep === 'distinct' || upload.attrGetter('ngfKeepDistinct', attr, scope) === true) {\n removeDuplicates(attr, scope);\n }\n\n var isSingleModel = !keep && !upload.attrGetter('ngfMultiple', attr, scope) && !upload.attrGetter('multiple', attr);\n\n if (keep && !allNewFiles.length) return;\n\n upload.attrGetter('ngfBeforeModelChange', attr, scope, {\n $files: files,\n $file: files && files.length ? files[0] : null,\n $newFiles: allNewFiles,\n $duplicateFiles: dupFiles,\n $event: evt\n });\n\n var validateAfterResize = upload.attrGetter('ngfValidateAfterResize', attr, scope);\n\n var options = upload.attrGetter('ngfModelOptions', attr, scope);\n upload.validate(allNewFiles, keep ? prevValidFiles.length : 0, ngModel, attr, scope)\n .then(function (validationResult) {\n if (noDelay) {\n update(allNewFiles, [], files, dupFiles, isSingleModel);\n } else {\n if ((!options || !options.allowInvalid) && !validateAfterResize) {\n valids = validationResult.validFiles;\n invalids = validationResult.invalidFiles;\n } else {\n valids = allNewFiles;\n }\n if (upload.attrGetter('ngfFixOrientation', attr, scope) && upload.isExifSupported()) {\n applyExifRotations(valids, attr, scope).then(function () {\n resizeAndUpdate();\n });\n } else {\n resizeAndUpdate();\n }\n }\n });\n };\n\n return upload;\n}]);\n\nngFileUpload.directive('ngfSelect', ['$parse', '$timeout', '$compile', 'Upload', function ($parse, $timeout, $compile, Upload) {\n var generatedElems = [];\n\n function isDelayedClickSupported(ua) {\n // fix for android native browser < 4.4 and safari windows\n var m = ua.match(/Android[^\\d]*(\\d+)\\.(\\d+)/);\n if (m && m.length > 2) {\n var v = Upload.defaults.androidFixMinorVersion || 4;\n return parseInt(m[1]) < 4 || (parseInt(m[1]) === v && parseInt(m[2]) < v);\n }\n\n // safari on windows\n return ua.indexOf('Chrome') === -1 && /.*Windows.*Safari.*/.test(ua);\n }\n\n function linkFileSelect(scope, elem, attr, ngModel, $parse, $timeout, $compile, upload) {\n /** @namespace attr.ngfSelect */\n /** @namespace attr.ngfChange */\n /** @namespace attr.ngModel */\n /** @namespace attr.ngfModelOptions */\n /** @namespace attr.ngfMultiple */\n /** @namespace attr.ngfCapture */\n /** @namespace attr.ngfValidate */\n /** @namespace attr.ngfKeep */\n var attrGetter = function (name, scope) {\n return upload.attrGetter(name, attr, scope);\n };\n\n function isInputTypeFile() {\n return elem[0].tagName.toLowerCase() === 'input' && attr.type && attr.type.toLowerCase() === 'file';\n }\n\n function fileChangeAttr() {\n return attrGetter('ngfChange') || attrGetter('ngfSelect');\n }\n\n function changeFn(evt) {\n if (upload.shouldUpdateOn('change', attr, scope)) {\n var fileList = evt.__files_ || (evt.target && evt.target.files), files = [];\n /* Handle duplicate call in IE11 */\n if (!fileList) return;\n for (var i = 0; i < fileList.length; i++) {\n files.push(fileList[i]);\n }\n upload.updateModel(ngModel, attr, scope, fileChangeAttr(),\n files.length ? files : null, evt);\n }\n }\n\n upload.registerModelChangeValidator(ngModel, attr, scope);\n\n var unwatches = [];\n if (attrGetter('ngfMultiple')) {\n unwatches.push(scope.$watch(attrGetter('ngfMultiple'), function () {\n fileElem.attr('multiple', attrGetter('ngfMultiple', scope));\n }));\n }\n if (attrGetter('ngfCapture')) {\n unwatches.push(scope.$watch(attrGetter('ngfCapture'), function () {\n fileElem.attr('capture', attrGetter('ngfCapture', scope));\n }));\n }\n if (attrGetter('ngfAccept')) {\n unwatches.push(scope.$watch(attrGetter('ngfAccept'), function () {\n fileElem.attr('accept', attrGetter('ngfAccept', scope));\n }));\n }\n unwatches.push(attr.$observe('accept', function () {\n fileElem.attr('accept', attrGetter('accept'));\n }));\n function bindAttrToFileInput(fileElem, label) {\n function updateId(val) {\n fileElem.attr('id', 'ngf-' + val);\n label.attr('id', 'ngf-label-' + val);\n }\n\n for (var i = 0; i < elem[0].attributes.length; i++) {\n var attribute = elem[0].attributes[i];\n if (attribute.name !== 'type' && attribute.name !== 'class' && attribute.name !== 'style') {\n if (attribute.name === 'id') {\n updateId(attribute.value);\n unwatches.push(attr.$observe('id', updateId));\n } else {\n fileElem.attr(attribute.name, (!attribute.value && (attribute.name === 'required' ||\n attribute.name === 'multiple')) ? attribute.name : attribute.value);\n }\n }\n }\n }\n\n function createFileInput() {\n if (isInputTypeFile()) {\n return elem;\n }\n\n var fileElem = angular.element('');\n\n var label = angular.element('');\n label.css('visibility', 'hidden').css('position', 'absolute').css('overflow', 'hidden')\n .css('width', '0px').css('height', '0px').css('border', 'none')\n .css('margin', '0px').css('padding', '0px').attr('tabindex', '-1');\n bindAttrToFileInput(fileElem, label);\n\n generatedElems.push({el: elem, ref: label});\n\n document.body.appendChild(label.append(fileElem)[0]);\n\n return fileElem;\n }\n\n function clickHandler(evt) {\n if (elem.attr('disabled')) return false;\n if (attrGetter('ngfSelectDisabled', scope)) return;\n\n var r = detectSwipe(evt);\n // prevent the click if it is a swipe\n if (r != null) return r;\n\n resetModel(evt);\n\n // fix for md when the element is removed from the DOM and added back #460\n try {\n if (!isInputTypeFile() && !document.body.contains(fileElem[0])) {\n generatedElems.push({el: elem, ref: fileElem.parent()});\n document.body.appendChild(fileElem.parent()[0]);\n fileElem.bind('change', changeFn);\n }\n } catch (e) {/*ignore*/\n }\n\n if (isDelayedClickSupported(navigator.userAgent)) {\n setTimeout(function () {\n fileElem[0].click();\n }, 0);\n } else {\n fileElem[0].click();\n }\n\n return false;\n }\n\n\n var initialTouchStartY = 0;\n var initialTouchStartX = 0;\n\n function detectSwipe(evt) {\n var touches = evt.changedTouches || (evt.originalEvent && evt.originalEvent.changedTouches);\n if (touches) {\n if (evt.type === 'touchstart') {\n initialTouchStartX = touches[0].clientX;\n initialTouchStartY = touches[0].clientY;\n return true; // don't block event default\n } else {\n // prevent scroll from triggering event\n if (evt.type === 'touchend') {\n var currentX = touches[0].clientX;\n var currentY = touches[0].clientY;\n if ((Math.abs(currentX - initialTouchStartX) > 20) ||\n (Math.abs(currentY - initialTouchStartY) > 20)) {\n evt.stopPropagation();\n evt.preventDefault();\n return false;\n }\n }\n return true;\n }\n }\n }\n\n var fileElem = elem;\n\n function resetModel(evt) {\n if (upload.shouldUpdateOn('click', attr, scope) && fileElem.val()) {\n fileElem.val(null);\n upload.updateModel(ngModel, attr, scope, fileChangeAttr(), null, evt, true);\n }\n }\n\n if (!isInputTypeFile()) {\n fileElem = createFileInput();\n }\n fileElem.bind('change', changeFn);\n\n if (!isInputTypeFile()) {\n elem.bind('click touchstart touchend', clickHandler);\n } else {\n elem.bind('click', resetModel);\n }\n\n function ie10SameFileSelectFix(evt) {\n if (fileElem && !fileElem.attr('__ngf_ie10_Fix_')) {\n if (!fileElem[0].parentNode) {\n fileElem = null;\n return;\n }\n evt.preventDefault();\n evt.stopPropagation();\n fileElem.unbind('click');\n var clone = fileElem.clone();\n fileElem.replaceWith(clone);\n fileElem = clone;\n fileElem.attr('__ngf_ie10_Fix_', 'true');\n fileElem.bind('change', changeFn);\n fileElem.bind('click', ie10SameFileSelectFix);\n fileElem[0].click();\n return false;\n } else {\n fileElem.removeAttr('__ngf_ie10_Fix_');\n }\n }\n\n if (navigator.appVersion.indexOf('MSIE 10') !== -1) {\n fileElem.bind('click', ie10SameFileSelectFix);\n }\n\n if (ngModel) ngModel.$formatters.push(function (val) {\n if (val == null || val.length === 0) {\n if (fileElem.val()) {\n fileElem.val(null);\n }\n }\n return val;\n });\n\n scope.$on('$destroy', function () {\n if (!isInputTypeFile()) fileElem.parent().remove();\n angular.forEach(unwatches, function (unwatch) {\n unwatch();\n });\n });\n\n $timeout(function () {\n for (var i = 0; i < generatedElems.length; i++) {\n var g = generatedElems[i];\n if (!document.body.contains(g.el[0])) {\n generatedElems.splice(i, 1);\n g.ref.remove();\n }\n }\n });\n\n if (window.FileAPI && window.FileAPI.ngfFixIE) {\n window.FileAPI.ngfFixIE(elem, fileElem, changeFn);\n }\n }\n\n return {\n restrict: 'AEC',\n require: '?ngModel',\n link: function (scope, elem, attr, ngModel) {\n linkFileSelect(scope, elem, attr, ngModel, $parse, $timeout, $compile, Upload);\n }\n };\n}]);\n\n(function () {\n\n ngFileUpload.service('UploadDataUrl', ['UploadBase', '$timeout', '$q', function (UploadBase, $timeout, $q) {\n var upload = UploadBase;\n upload.base64DataUrl = function (file) {\n if (angular.isArray(file)) {\n var d = $q.defer(), count = 0;\n angular.forEach(file, function (f) {\n upload.dataUrl(f, true)['finally'](function () {\n count++;\n if (count === file.length) {\n var urls = [];\n angular.forEach(file, function (ff) {\n urls.push(ff.$ngfDataUrl);\n });\n d.resolve(urls, file);\n }\n });\n });\n return d.promise;\n } else {\n return upload.dataUrl(file, true);\n }\n };\n upload.dataUrl = function (file, disallowObjectUrl) {\n if (!file) return upload.emptyPromise(file, file);\n if ((disallowObjectUrl && file.$ngfDataUrl != null) || (!disallowObjectUrl && file.$ngfBlobUrl != null)) {\n return upload.emptyPromise(disallowObjectUrl ? file.$ngfDataUrl : file.$ngfBlobUrl, file);\n }\n var p = disallowObjectUrl ? file.$$ngfDataUrlPromise : file.$$ngfBlobUrlPromise;\n if (p) return p;\n\n var deferred = $q.defer();\n $timeout(function () {\n if (window.FileReader && file &&\n (!window.FileAPI || navigator.userAgent.indexOf('MSIE 8') === -1 || file.size < 20000) &&\n (!window.FileAPI || navigator.userAgent.indexOf('MSIE 9') === -1 || file.size < 4000000)) {\n //prefer URL.createObjectURL for handling refrences to files of all sizes\n //since it doesn\u00B4t build a large string in memory\n var URL = window.URL || window.webkitURL;\n if (URL && URL.createObjectURL && !disallowObjectUrl) {\n var url;\n try {\n url = URL.createObjectURL(file);\n } catch (e) {\n $timeout(function () {\n file.$ngfBlobUrl = '';\n deferred.reject();\n });\n return;\n }\n $timeout(function () {\n file.$ngfBlobUrl = url;\n if (url) {\n deferred.resolve(url, file);\n upload.blobUrls = upload.blobUrls || [];\n upload.blobUrlsTotalSize = upload.blobUrlsTotalSize || 0;\n upload.blobUrls.push({url: url, size: file.size});\n upload.blobUrlsTotalSize += file.size || 0;\n var maxMemory = upload.defaults.blobUrlsMaxMemory || 268435456;\n var maxLength = upload.defaults.blobUrlsMaxQueueSize || 200;\n while ((upload.blobUrlsTotalSize > maxMemory || upload.blobUrls.length > maxLength) && upload.blobUrls.length > 1) {\n var obj = upload.blobUrls.splice(0, 1)[0];\n URL.revokeObjectURL(obj.url);\n upload.blobUrlsTotalSize -= obj.size;\n }\n }\n });\n } else {\n var fileReader = new FileReader();\n fileReader.onload = function (e) {\n $timeout(function () {\n file.$ngfDataUrl = e.target.result;\n deferred.resolve(e.target.result, file);\n $timeout(function () {\n delete file.$ngfDataUrl;\n }, 1000);\n });\n };\n fileReader.onerror = function () {\n $timeout(function () {\n file.$ngfDataUrl = '';\n deferred.reject();\n });\n };\n fileReader.readAsDataURL(file);\n }\n } else {\n $timeout(function () {\n file[disallowObjectUrl ? '$ngfDataUrl' : '$ngfBlobUrl'] = '';\n deferred.reject();\n });\n }\n });\n\n if (disallowObjectUrl) {\n p = file.$$ngfDataUrlPromise = deferred.promise;\n } else {\n p = file.$$ngfBlobUrlPromise = deferred.promise;\n }\n p['finally'](function () {\n delete file[disallowObjectUrl ? '$$ngfDataUrlPromise' : '$$ngfBlobUrlPromise'];\n });\n return p;\n };\n return upload;\n }]);\n\n function getTagType(el) {\n if (el.tagName.toLowerCase() === 'img') return 'image';\n if (el.tagName.toLowerCase() === 'audio') return 'audio';\n if (el.tagName.toLowerCase() === 'video') return 'video';\n return /./;\n }\n\n function linkFileDirective(Upload, $timeout, scope, elem, attr, directiveName, resizeParams, isBackground) {\n function constructDataUrl(file) {\n var disallowObjectUrl = Upload.attrGetter('ngfNoObjectUrl', attr, scope);\n Upload.dataUrl(file, disallowObjectUrl)['finally'](function () {\n $timeout(function () {\n var src = (disallowObjectUrl ? file.$ngfDataUrl : file.$ngfBlobUrl) || file.$ngfDataUrl;\n if (isBackground) {\n elem.css('background-image', 'url(\\'' + (src || '') + '\\')');\n } else {\n elem.attr('src', src);\n }\n if (src) {\n elem.removeClass('ng-hide');\n } else {\n elem.addClass('ng-hide');\n }\n });\n });\n }\n\n $timeout(function () {\n var unwatch = scope.$watch(attr[directiveName], function (file) {\n var size = resizeParams;\n if (directiveName === 'ngfThumbnail') {\n if (!size) {\n size = {\n width: elem[0].naturalWidth || elem[0].clientWidth,\n height: elem[0].naturalHeight || elem[0].clientHeight\n };\n }\n if (size.width === 0 && window.getComputedStyle) {\n var style = getComputedStyle(elem[0]);\n if (style.width && style.width.indexOf('px') > -1 && style.height && style.height.indexOf('px') > -1) {\n size = {\n width: parseInt(style.width.slice(0, -2)),\n height: parseInt(style.height.slice(0, -2))\n };\n }\n }\n }\n\n if (angular.isString(file)) {\n elem.removeClass('ng-hide');\n if (isBackground) {\n return elem.css('background-image', 'url(\\'' + file + '\\')');\n } else {\n return elem.attr('src', file);\n }\n }\n if (file && file.type && file.type.search(getTagType(elem[0])) === 0 &&\n (!isBackground || file.type.indexOf('image') === 0)) {\n if (size && Upload.isResizeSupported()) {\n size.resizeIf = function (width, height) {\n return Upload.attrGetter('ngfResizeIf', attr, scope,\n {$width: width, $height: height, $file: file});\n };\n Upload.resize(file, size).then(\n function (f) {\n constructDataUrl(f);\n }, function (e) {\n throw e;\n }\n );\n } else {\n constructDataUrl(file);\n }\n } else {\n elem.addClass('ng-hide');\n }\n });\n\n scope.$on('$destroy', function () {\n unwatch();\n });\n });\n }\n\n\n /** @namespace attr.ngfSrc */\n /** @namespace attr.ngfNoObjectUrl */\n ngFileUpload.directive('ngfSrc', ['Upload', '$timeout', function (Upload, $timeout) {\n return {\n restrict: 'AE',\n link: function (scope, elem, attr) {\n linkFileDirective(Upload, $timeout, scope, elem, attr, 'ngfSrc',\n Upload.attrGetter('ngfResize', attr, scope), false);\n }\n };\n }]);\n\n /** @namespace attr.ngfBackground */\n /** @namespace attr.ngfNoObjectUrl */\n ngFileUpload.directive('ngfBackground', ['Upload', '$timeout', function (Upload, $timeout) {\n return {\n restrict: 'AE',\n link: function (scope, elem, attr) {\n linkFileDirective(Upload, $timeout, scope, elem, attr, 'ngfBackground',\n Upload.attrGetter('ngfResize', attr, scope), true);\n }\n };\n }]);\n\n /** @namespace attr.ngfThumbnail */\n /** @namespace attr.ngfAsBackground */\n /** @namespace attr.ngfSize */\n /** @namespace attr.ngfNoObjectUrl */\n ngFileUpload.directive('ngfThumbnail', ['Upload', '$timeout', function (Upload, $timeout) {\n return {\n restrict: 'AE',\n link: function (scope, elem, attr) {\n var size = Upload.attrGetter('ngfSize', attr, scope);\n linkFileDirective(Upload, $timeout, scope, elem, attr, 'ngfThumbnail', size,\n Upload.attrGetter('ngfAsBackground', attr, scope));\n }\n };\n }]);\n\n ngFileUpload.config(['$compileProvider', function ($compileProvider) {\n if ($compileProvider.imgSrcSanitizationWhitelist) $compileProvider.imgSrcSanitizationWhitelist(/^\\s*(https?|ftp|mailto|tel|webcal|local|file|data|blob):/);\n if ($compileProvider.aHrefSanitizationWhitelist) $compileProvider.aHrefSanitizationWhitelist(/^\\s*(https?|ftp|mailto|tel|webcal|local|file|data|blob):/);\n }]);\n\n ngFileUpload.filter('ngfDataUrl', ['UploadDataUrl', '$sce', function (UploadDataUrl, $sce) {\n return function (file, disallowObjectUrl, trustedUrl) {\n if (angular.isString(file)) {\n return $sce.trustAsResourceUrl(file);\n }\n var src = file && ((disallowObjectUrl ? file.$ngfDataUrl : file.$ngfBlobUrl) || file.$ngfDataUrl);\n if (file && !src) {\n if (!file.$ngfDataUrlFilterInProgress && angular.isObject(file)) {\n file.$ngfDataUrlFilterInProgress = true;\n UploadDataUrl.dataUrl(file, disallowObjectUrl);\n }\n return '';\n }\n if (file) delete file.$ngfDataUrlFilterInProgress;\n return (file && src ? (trustedUrl ? $sce.trustAsResourceUrl(src) : src) : file) || '';\n };\n }]);\n\n})();\n\nngFileUpload.service('UploadValidate', ['UploadDataUrl', '$q', '$timeout', function (UploadDataUrl, $q, $timeout) {\n var upload = UploadDataUrl;\n\n function globStringToRegex(str) {\n var regexp = '', excludes = [];\n if (str.length > 2 && str[0] === '/' && str[str.length - 1] === '/') {\n regexp = str.substring(1, str.length - 1);\n } else {\n var split = str.split(',');\n if (split.length > 1) {\n for (var i = 0; i < split.length; i++) {\n var r = globStringToRegex(split[i]);\n if (r.regexp) {\n regexp += '(' + r.regexp + ')';\n if (i < split.length - 1) {\n regexp += '|';\n }\n } else {\n excludes = excludes.concat(r.excludes);\n }\n }\n } else {\n if (str.indexOf('!') === 0) {\n excludes.push('^((?!' + globStringToRegex(str.substring(1)).regexp + ').)*$');\n } else {\n if (str.indexOf('.') === 0) {\n str = '*' + str;\n }\n regexp = '^' + str.replace(new RegExp('[.\\\\\\\\+*?\\\\[\\\\^\\\\]$(){}=!<>|:\\\\-]', 'g'), '\\\\$&') + '$';\n regexp = regexp.replace(/\\\\\\*/g, '.*').replace(/\\\\\\?/g, '.');\n }\n }\n }\n return {regexp: regexp, excludes: excludes};\n }\n\n upload.validatePattern = function (file, val) {\n if (!val) {\n return true;\n }\n var pattern = globStringToRegex(val), valid = true;\n if (pattern.regexp && pattern.regexp.length) {\n var regexp = new RegExp(pattern.regexp, 'i');\n valid = (file.type != null && regexp.test(file.type)) ||\n (file.name != null && regexp.test(file.name));\n }\n var len = pattern.excludes.length;\n while (len--) {\n var exclude = new RegExp(pattern.excludes[len], 'i');\n valid = valid && (file.type == null || exclude.test(file.type)) &&\n (file.name == null || exclude.test(file.name));\n }\n return valid;\n };\n\n upload.ratioToFloat = function (val) {\n var r = val.toString(), xIndex = r.search(/[x:]/i);\n if (xIndex > -1) {\n r = parseFloat(r.substring(0, xIndex)) / parseFloat(r.substring(xIndex + 1));\n } else {\n r = parseFloat(r);\n }\n return r;\n };\n\n upload.registerModelChangeValidator = function (ngModel, attr, scope) {\n if (ngModel) {\n ngModel.$formatters.push(function (files) {\n if (ngModel.$dirty) {\n var filesArray = files;\n if (files && !angular.isArray(files)) {\n filesArray = [files];\n }\n upload.validate(filesArray, 0, ngModel, attr, scope).then(function () {\n upload.applyModelValidation(ngModel, filesArray);\n });\n }\n return files;\n });\n }\n };\n\n function markModelAsDirty(ngModel, files) {\n if (files != null && !ngModel.$dirty) {\n if (ngModel.$setDirty) {\n ngModel.$setDirty();\n } else {\n ngModel.$dirty = true;\n }\n }\n }\n\n upload.applyModelValidation = function (ngModel, files) {\n markModelAsDirty(ngModel, files);\n angular.forEach(ngModel.$ngfValidations, function (validation) {\n ngModel.$setValidity(validation.name, validation.valid);\n });\n };\n\n upload.getValidationAttr = function (attr, scope, name, validationName, file) {\n var dName = 'ngf' + name[0].toUpperCase() + name.substr(1);\n var val = upload.attrGetter(dName, attr, scope, {$file: file});\n if (val == null) {\n val = upload.attrGetter('ngfValidate', attr, scope, {$file: file});\n if (val) {\n var split = (validationName || name).split('.');\n val = val[split[0]];\n if (split.length > 1) {\n val = val && val[split[1]];\n }\n }\n }\n return val;\n };\n\n upload.validate = function (files, prevLength, ngModel, attr, scope) {\n ngModel = ngModel || {};\n ngModel.$ngfValidations = ngModel.$ngfValidations || [];\n\n angular.forEach(ngModel.$ngfValidations, function (v) {\n v.valid = true;\n });\n\n var attrGetter = function (name, params) {\n return upload.attrGetter(name, attr, scope, params);\n };\n\n var ignoredErrors = (upload.attrGetter('ngfIgnoreInvalid', attr, scope) || '').split(' ');\n var runAllValidation = upload.attrGetter('ngfRunAllValidations', attr, scope);\n\n if (files == null || files.length === 0) {\n return upload.emptyPromise({'validFiles': files, 'invalidFiles': []});\n }\n\n files = files.length === undefined ? [files] : files.slice(0);\n var invalidFiles = [];\n\n function validateSync(name, validationName, fn) {\n if (files) {\n var i = files.length, valid = null;\n while (i--) {\n var file = files[i];\n if (file) {\n var val = upload.getValidationAttr(attr, scope, name, validationName, file);\n if (val != null) {\n if (!fn(file, val, i)) {\n if (ignoredErrors.indexOf(name) === -1) {\n file.$error = name;\n (file.$errorMessages = (file.$errorMessages || {}))[name] = true;\n file.$errorParam = val;\n if (invalidFiles.indexOf(file) === -1) {\n invalidFiles.push(file);\n }\n if (!runAllValidation) {\n files.splice(i, 1);\n }\n valid = false;\n } else {\n files.splice(i, 1);\n }\n }\n }\n }\n }\n if (valid !== null) {\n ngModel.$ngfValidations.push({name: name, valid: valid});\n }\n }\n }\n\n validateSync('pattern', null, upload.validatePattern);\n validateSync('minSize', 'size.min', function (file, val) {\n return file.size + 0.1 >= upload.translateScalars(val);\n });\n validateSync('maxSize', 'size.max', function (file, val) {\n return file.size - 0.1 <= upload.translateScalars(val);\n });\n var totalSize = 0;\n validateSync('maxTotalSize', null, function (file, val) {\n totalSize += file.size;\n if (totalSize > upload.translateScalars(val)) {\n files.splice(0, files.length);\n return false;\n }\n return true;\n });\n\n validateSync('validateFn', null, function (file, r) {\n return r === true || r === null || r === '';\n });\n\n if (!files.length) {\n return upload.emptyPromise({'validFiles': [], 'invalidFiles': invalidFiles});\n }\n\n function validateAsync(name, validationName, type, asyncFn, fn) {\n function resolveResult(defer, file, val) {\n function resolveInternal(fn) {\n if (fn()) {\n if (ignoredErrors.indexOf(name) === -1) {\n file.$error = name;\n (file.$errorMessages = (file.$errorMessages || {}))[name] = true;\n file.$errorParam = val;\n if (invalidFiles.indexOf(file) === -1) {\n invalidFiles.push(file);\n }\n if (!runAllValidation) {\n var i = files.indexOf(file);\n if (i > -1) files.splice(i, 1);\n }\n defer.resolve(false);\n } else {\n var j = files.indexOf(file);\n if (j > -1) files.splice(j, 1);\n defer.resolve(true);\n }\n } else {\n defer.resolve(true);\n }\n }\n\n if (val != null) {\n asyncFn(file, val).then(function (d) {\n resolveInternal(function () {\n return !fn(d, val);\n });\n }, function () {\n resolveInternal(function () {\n return attrGetter('ngfValidateForce', {$file: file});\n });\n });\n } else {\n defer.resolve(true);\n }\n }\n\n var promises = [upload.emptyPromise(true)];\n if (files) {\n files = files.length === undefined ? [files] : files;\n angular.forEach(files, function (file) {\n var defer = $q.defer();\n promises.push(defer.promise);\n if (type && (file.type == null || file.type.search(type) !== 0)) {\n defer.resolve(true);\n return;\n }\n if (name === 'dimensions' && upload.attrGetter('ngfDimensions', attr) != null) {\n upload.imageDimensions(file).then(function (d) {\n resolveResult(defer, file,\n attrGetter('ngfDimensions', {$file: file, $width: d.width, $height: d.height}));\n }, function () {\n defer.resolve(false);\n });\n } else if (name === 'duration' && upload.attrGetter('ngfDuration', attr) != null) {\n upload.mediaDuration(file).then(function (d) {\n resolveResult(defer, file,\n attrGetter('ngfDuration', {$file: file, $duration: d}));\n }, function () {\n defer.resolve(false);\n });\n } else {\n resolveResult(defer, file,\n upload.getValidationAttr(attr, scope, name, validationName, file));\n }\n });\n }\n var deffer = $q.defer();\n $q.all(promises).then(function (values) {\n var isValid = true;\n for (var i = 0; i < values.length; i++) {\n if (!values[i]) {\n isValid = false;\n break;\n }\n }\n ngModel.$ngfValidations.push({name: name, valid: isValid});\n deffer.resolve(isValid);\n });\n return deffer.promise;\n }\n\n var deffer = $q.defer();\n var promises = [];\n\n promises.push(validateAsync('maxHeight', 'height.max', /image/,\n this.imageDimensions, function (d, val) {\n return d.height <= val;\n }));\n promises.push(validateAsync('minHeight', 'height.min', /image/,\n this.imageDimensions, function (d, val) {\n return d.height >= val;\n }));\n promises.push(validateAsync('maxWidth', 'width.max', /image/,\n this.imageDimensions, function (d, val) {\n return d.width <= val;\n }));\n promises.push(validateAsync('minWidth', 'width.min', /image/,\n this.imageDimensions, function (d, val) {\n return d.width >= val;\n }));\n promises.push(validateAsync('dimensions', null, /image/,\n function (file, val) {\n return upload.emptyPromise(val);\n }, function (r) {\n return r;\n }));\n promises.push(validateAsync('ratio', null, /image/,\n this.imageDimensions, function (d, val) {\n var split = val.toString().split(','), valid = false;\n for (var i = 0; i < split.length; i++) {\n if (Math.abs((d.width / d.height) - upload.ratioToFloat(split[i])) < 0.01) {\n valid = true;\n }\n }\n return valid;\n }));\n promises.push(validateAsync('maxRatio', 'ratio.max', /image/,\n this.imageDimensions, function (d, val) {\n return (d.width / d.height) - upload.ratioToFloat(val) < 0.0001;\n }));\n promises.push(validateAsync('minRatio', 'ratio.min', /image/,\n this.imageDimensions, function (d, val) {\n return (d.width / d.height) - upload.ratioToFloat(val) > -0.0001;\n }));\n promises.push(validateAsync('maxDuration', 'duration.max', /audio|video/,\n this.mediaDuration, function (d, val) {\n return d <= upload.translateScalars(val);\n }));\n promises.push(validateAsync('minDuration', 'duration.min', /audio|video/,\n this.mediaDuration, function (d, val) {\n return d >= upload.translateScalars(val);\n }));\n promises.push(validateAsync('duration', null, /audio|video/,\n function (file, val) {\n return upload.emptyPromise(val);\n }, function (r) {\n return r;\n }));\n\n promises.push(validateAsync('validateAsyncFn', null, null,\n function (file, val) {\n return val;\n }, function (r) {\n return r === true || r === null || r === '';\n }));\n\n $q.all(promises).then(function () {\n\n if (runAllValidation) {\n for (var i = 0; i < files.length; i++) {\n var file = files[i];\n if (file.$error) {\n files.splice(i--, 1);\n }\n }\n }\n\n runAllValidation = false;\n validateSync('maxFiles', null, function (file, val, i) {\n return prevLength + i < val;\n });\n\n deffer.resolve({'validFiles': files, 'invalidFiles': invalidFiles});\n });\n return deffer.promise;\n };\n\n upload.imageDimensions = function (file) {\n if (file.$ngfWidth && file.$ngfHeight) {\n var d = $q.defer();\n $timeout(function () {\n d.resolve({width: file.$ngfWidth, height: file.$ngfHeight});\n });\n return d.promise;\n }\n if (file.$ngfDimensionPromise) return file.$ngfDimensionPromise;\n\n var deferred = $q.defer();\n $timeout(function () {\n if (file.type.indexOf('image') !== 0) {\n deferred.reject('not image');\n return;\n }\n upload.dataUrl(file).then(function (dataUrl) {\n var img = angular.element('').attr('src', dataUrl)\n .css('visibility', 'hidden').css('position', 'fixed')\n .css('max-width', 'none !important').css('max-height', 'none !important');\n\n function success() {\n var width = img[0].naturalWidth || img[0].clientWidth;\n var height = img[0].naturalHeight || img[0].clientHeight;\n img.remove();\n file.$ngfWidth = width;\n file.$ngfHeight = height;\n deferred.resolve({width: width, height: height});\n }\n\n function error() {\n img.remove();\n deferred.reject('load error');\n }\n\n img.on('load', success);\n img.on('error', error);\n\n var secondsCounter = 0;\n function checkLoadErrorInCaseOfNoCallback() {\n $timeout(function () {\n if (img[0].parentNode) {\n if (img[0].clientWidth) {\n success();\n } else if (secondsCounter++ > 10) {\n error();\n } else {\n checkLoadErrorInCaseOfNoCallback();\n }\n }\n }, 1000);\n }\n\n checkLoadErrorInCaseOfNoCallback();\n\n angular.element(document.getElementsByTagName('body')[0]).append(img);\n }, function () {\n deferred.reject('load error');\n });\n });\n\n file.$ngfDimensionPromise = deferred.promise;\n file.$ngfDimensionPromise['finally'](function () {\n delete file.$ngfDimensionPromise;\n });\n return file.$ngfDimensionPromise;\n };\n\n upload.mediaDuration = function (file) {\n if (file.$ngfDuration) {\n var d = $q.defer();\n $timeout(function () {\n d.resolve(file.$ngfDuration);\n });\n return d.promise;\n }\n if (file.$ngfDurationPromise) return file.$ngfDurationPromise;\n\n var deferred = $q.defer();\n $timeout(function () {\n if (file.type.indexOf('audio') !== 0 && file.type.indexOf('video') !== 0) {\n deferred.reject('not media');\n return;\n }\n upload.dataUrl(file).then(function (dataUrl) {\n var el = angular.element(file.type.indexOf('audio') === 0 ? '
    '\n };\n}\nfunction shippingVariantsDirective() {\n return {\n restrict: 'A',\n scope: {\n type: '@',\n offerId: '=',\n amount: '=',\n svCustomOptions: '=',\n startOfferId: '@',\n startAmount: '@',\n startSvCustomOptions: '@',\n zip: '@',\n initFn: '&'\n },\n controller: 'ShippingVariantsCtrl',\n controllerAs: 'shippingVariants',\n bindToController: true,\n replace: true,\n templateUrl: shippingVariantsTemplate\n };\n}\nfunction shippingPointsListDirective() {\n return {\n scope: {\n selectedShippingPoint: '<',\n onChange: '&'\n },\n controller: 'ShippingPointsListCtrl',\n controllerAs: 'shippingPointsList',\n bindToController: true,\n templateUrl: shippingPointsListTemplate\n };\n}\nconst shippingItemError = {\n require: {\n shippingTemplate: `?^shippingTemplate`,\n shippingList: `^shippingList`\n },\n bindings: {\n errorText: '<'\n },\n templateUrl: shippingItemErrorTemplate,\n controller: 'ShippingItemErrorCtrl'\n};\nexport { shippingListDirective, shippingTemplateDirective, shippingVariantsDirective, shippingItemError, shippingPointsListDirective };", "import { IScope, IComponentController } from 'angular';\nimport { IAbstractShippingOption, IBaseShippingOption, IGeoModeDeliveries } from '../types';\ninterface IShippingPointsListCtrl extends IComponentController {\n getShippingPoints(): Promise<{\n options: IAbstractShippingOption[];\n }>;\n selectShippingPoint(shippingPoint: IAbstractShippingOption, point?: IBaseShippingOption): void;\n}\nclass ShippingPointsListCtrl implements IShippingPointsListCtrl {\n items: IAbstractShippingOption[] = [];\n onChange: (({\n shippingPoint,\n point\n }: {\n shippingPoint: IAbstractShippingOption;\n point?: IBaseShippingOption;\n }) => void) | undefined;\n selectedShippingPoint: IAbstractShippingOption | undefined;\n isLoadedShippingPoints: boolean = false;\n /* @ngInject */\n constructor(private readonly checkoutService: any, private readonly $scope: IScope) {\n this.checkoutService = checkoutService;\n this.$scope = $scope;\n }\n async $onInit() {\n try {\n const {\n options\n } = await this.getShippingPoints().finally(() => {\n this.isLoadedShippingPoints = true;\n });\n if (options != null) {\n this.items = options;\n this.$scope.$apply();\n }\n } catch (e) {\n this.isLoadedShippingPoints = true;\n console.error(e.message);\n }\n }\n selectShippingPoint(shippingPoint: IAbstractShippingOption, point?: IBaseShippingOption) {\n this.selectedShippingPoint = shippingPoint;\n if (point) {\n this.selectedShippingPoint.SelectedPoint = point;\n }\n if (this.onChange) {\n this.onChange({\n shippingPoint,\n point: point\n });\n }\n }\n async getShippingPoints(): Promise {\n return await this.checkoutService.getGeoModeDeliveries('self-delivery');\n }\n}\nShippingPointsListCtrl.$inject = [\"checkoutService\", \"$scope\"];\nexport default ShippingPointsListCtrl;", "\uFEFFimport './urlHelperService.js';\n\nexport default 'urlHelper';\n", "import { urlHelper } from './urlHelper.js';\nimport { config } from './urlHelper.config.js';\n\n/*@ngInject*/\nconst urlHelperService = function ($document, $location, $window, urlHelperConfig) {\n const urlHelperInstance = new urlHelper($document[0].head.querySelector('base').getAttribute('href'), urlHelperConfig);\n const service = this;\n service.getUrlParam = function (paramName, toLower) {\n return urlHelperInstance.getUrlParam(paramName, toLower);\n };\n service.getUrlParamByName = function (name) {\n return urlHelperInstance.getUrlParamByName(name);\n };\n service.getUrlParamDictionaryByNameFunc = function (fn, paramsAsObject) {\n return urlHelperInstance.getUrlParamDictionaryByNameFunc(fn, paramsAsObject);\n };\n service.getUrlParamsAsObject = function (string) {\n return urlHelperInstance.getUrlParamsAsObject(string);\n };\n service.getUrlParamsUniversalAsObject = function () {\n const result = {};\n const items = [new URLSearchParams(decodeURIComponent($window.location.search).slice(1))];\n items.splice($location.$$html5 ? 0 : 1, 0, new URLSearchParams(decodeURIComponent($window.location.hash).slice(2)));\n for (let i = 0, len = items.length; i < len; i++) {\n items[i].forEach(function (value, key) {\n result[key] = value;\n });\n }\n return result;\n };\n service.getBaseHref = function () {\n return urlHelperInstance.getBaseHref();\n };\n service.hasDomain = function (url) {\n return urlHelperInstance.hasDomain(url);\n };\n service.getAbsUrl = function (url, excludeAdmin) {\n return urlHelperInstance.getAbsUrl(url, excludeAdmin);\n };\n service.getUrl = function (url, excludeAdmin) {\n return urlHelperInstance.getUrl(url, excludeAdmin);\n };\n service.paramsToString = function (object) {\n return urlHelperInstance.paramsToString(object);\n };\n service.updateQueryStringParameter = function (uri, key, value) {\n return urlHelperInstance.updateQueryStringParameter(uri, key, value);\n };\n service.setLocationQueryParams = function (key, value, replace) {\n return urlHelperInstance.setLocationQueryParams(key, value, replace);\n };\n service.getHashFromString = function (string, withHash) {\n return urlHelperInstance.getHashFromString(string, withHash);\n };\n service.getPhysicalPath = function (area, isMobile) {\n return urlHelperInstance.getPhysicalPath(area, isMobile);\n };\n service.normalizeBundleFilesUrl = function (projectArea, url) {\n return urlHelperInstance.normalizeBundleFilesUrl(projectArea, url);\n };\n};\nurlHelperService.$inject = [\"$document\", \"$location\", \"$window\", \"urlHelperConfig\"];\nangular.module(`urlHelper`, []).constant(`urlHelperConfig`, config).service(`urlHelper`, urlHelperService);", "import { config } from './urlHelper.config.js';\nimport { projectsAreas } from '../../../node_scripts/shopVariables.js';\n\nconst regexDomain = new RegExp('^[a-z0-9]{2,}://[a-z0-9.]+', 'i');\n\n/**\n * Class is singleton\n */\n\nexport class urlHelper {\n constructor(tagBaseHref, urlHelperConfig) {\n if (urlHelper.instance) {\n return urlHelper.instance;\n }\n\n urlHelper.instance = this;\n\n this.urlHelperConfig = urlHelperConfig || config;\n this.tagBaseHref = tagBaseHref || document.head.querySelector('base').getAttribute('href');\n }\n\n /**\n * get url param value by name.\n * @param {string} paramName param name\n * @param {boolean} toLower - convert to lower case\n * @returns {string|null}\n */\n getUrlParam(paramName, toLower) {\n paramName = toLower !== false ? paramName.toLowerCase() : paramName;\n const query = toLower !== false ? window.location.search.substring(1).toLowerCase() : window.location.search.substring(1);\n const lets = query.split('&');\n\n for (let i = 0; i < lets.length; i++) {\n const pair = lets[i].split('=');\n if (pair[0] == paramName) {\n return pair[1];\n }\n }\n return null;\n }\n\n /**\n * get url param value by name\n * @param {string} name\n * @returns {string|null}\n */\n getUrlParamByName(name) {\n const url = window.location.href.toLowerCase();\n name = name.toLowerCase().replace(/[\\[\\]]/g, '\\\\$&');\n const regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),\n results = regex.exec(url);\n if (!results) return null;\n if (!results[2]) return '';\n\n return decodeURIComponent(results[2].replace(/\\+/g, ' '));\n }\n\n /**\n *\n * @param {Function} fn - filter param name\n * @param {object} paramsAsObject - object to validate\n * @returns {object}\n */\n getUrlParamDictionaryByNameFunc(fn, paramsAsObject) {\n if (!paramsAsObject) return;\n\n const result = [];\n const paramsName = Object.keys(paramsAsObject);\n\n for (let i = 0; i < paramsName.length; i++) {\n if (fn(paramsName[i]) === true) {\n result.push({\n name: paramsName[i],\n value: paramsAsObject[paramsName[i]],\n });\n }\n }\n\n return result;\n }\n\n /**\n * convert string url params in object\n * @param {string} string\n * @returns {object}\n */\n getUrlParamsAsObject(string) {\n const searchParams = new URLSearchParams(string);\n const obj = {};\n\n searchParams.forEach(function (value, key) {\n obj[key] = value;\n });\n\n return obj;\n }\n\n getBaseHref() {\n return this.tagBaseHref;\n }\n\n /**\n * check that url is domain\n * @param {string} url\n * @returns {boolean}\n */\n hasDomain(url) {\n return regexDomain.test(url);\n }\n\n /** get absolute url\n * @param {string} url\n * @param {boolean} excludeAdmin\n * @returns {string} absolute url\n */\n getAbsUrl(url, excludeAdmin) {\n const base = this.getBaseHref();\n let basePrepare;\n\n if ((excludeAdmin != null && excludeAdmin === true) || this.urlHelperConfig.isAdmin === false) {\n basePrepare = base.replace(this.urlHelperConfig.adminPath, '');\n } else {\n basePrepare = base;\n }\n\n if (this.hasDomain(url) === false) {\n //\u0443\u0431\u0435\u0440\u0430\u0435\u043C \u0432\u043F\u0435\u0440\u0435\u0434\u0438 \u0441\u043B\u0435\u0448\n if (url.charAt(0) === '/') {\n url = url.substring(1);\n }\n\n url = basePrepare + url;\n }\n\n return url;\n }\n\n getUrl(url, excludeAdmin) {\n const base = this.getBaseHref();\n let basePrepare = base.replace(/.*\\/\\/[^\\/]*/, '');\n\n if ((excludeAdmin != null && excludeAdmin === true) || this.urlHelperConfig.isAdmin === false) {\n basePrepare = basePrepare.replace(this.urlHelperConfig.adminPath, '');\n }\n\n if (this.hasDomain(url) === false) {\n if (url.charAt(0) === '/') {\n url = url.substring(1);\n }\n url = basePrepare + url;\n }\n return url;\n }\n\n /**\n * convert object params in string param.\n * Concat by \"&\"\n * @param {object} object\n * @returns {string}\n */\n paramsToString(object) {\n //let result = \"\";\n const result = [];\n for (let key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n //result += key + \"=\" + object[key] + \"&\";\n result.push(key + '=' + object[key]);\n }\n }\n\n return result.join('&');\n }\n\n /**\n * Update parameters in URL.\n * @example\n * If value null - remove parameter.\n * If key not found in URL params - add new param in URL\n * If value not null and key found - update old value on new value\n * @param {string} uri\n * @param {string} key\n * @param {string | null} value\n * @returns {string} new search params\n */\n updateQueryStringParameter(uri, key, value) {\n const _uri = new URL(uri);\n const searchParams = new URLSearchParams(_uri.search);\n\n if (value == null) {\n searchParams.delete(key);\n } else if (searchParams.has(key)) {\n searchParams.set(key, value);\n } else {\n searchParams.append(key, value);\n }\n\n _uri.search = searchParams.toString();\n\n return _uri.toString();\n }\n\n /**\n *\n * @param {string} key\n * @param {string} value\n * @param {boolean} replace\n */\n setLocationQueryParams(key, value, replace) {\n const url = this.updateQueryStringParameter(window.location.href, key, value);\n history[replace ? 'replaceState' : 'pushState']({ url: url }, '', url);\n }\n\n /**\n *\n * @param {string} string\n * @param {boolean} withHash\n * @returns {string}\n */\n getHashFromString(string, withHash) {\n const hash = string.split('#')[1];\n return withHash ? '#' + hash : hash;\n }\n\n getPhysicalPath(area, isMobile = false) {\n const key = area + (isMobile ? 'Mobile' : '');\n\n if (projectsAreas.hasOwnProperty(key) === false) {\n throw new Error(`urlHelper: unknown area is \"${area}\"`);\n }\n return projectsAreas[key];\n }\n\n normalizeBundleFilesUrl(projectArea, url) {\n return url.replace(/^..\\/(assets|chunks|entries)\\//u, `${projectArea}dist/$1/`);\n }\n}\n", "export const config = {\n isAdmin: false,\n adminPath: /adminv2\\/|adminv3\\//g,\n};\n", "\uFEFFexport const projectsNames = {\n store: 'store',\n admin: 'admin',\n funnels: 'funnels',\n partners: 'partners',\n templates: 'templates',\n modules: 'modules',\n};\n\nexport const projectsAreas = {\n store: '',\n templates: '',\n modules: '',\n storeMobile: 'Areas/Mobile/',\n admin: '../Areas/Admin/',\n adminV3: '../Areas/Admin/Templates/AdminV3/',\n adminMobile: '../Areas/Admin/Templates/Mobile/',\n funnels: 'Areas/Landing/',\n partners: '../Areas/Partners/',\n};\n", "\uFEFFimport ProductAvailabilityMapCtrl from './productAvailabilityMap.ctrl.js';\nimport ProductAvailabilityMapDirective from './productAvailabilityMap.directive.js';\nimport '../../../_common/yandexMaps/ya-map-2.1.directive.js';\nimport '../../../_common/yandexMaps/styles.scss';\nimport './styles.scss';\n//\u0442\u044F\u043D\u0443\u0442\u044C \u0442\u043E\u043B\u044C\u043A\u043E warehouses-list\nimport shopsModule from '../../../warehouses/warehouses.module.js';\n\nconst moduleName = 'productAvailabilityMap';\n\nangular\n .module(moduleName, ['yaMap', shopsModule])\n .directive('productAvailabilityMap', ProductAvailabilityMapDirective)\n .controller('productAvailabilityMapCtrl', ProductAvailabilityMapCtrl);\n\nexport default moduleName;\n", "export default function ProductAvailabilityMapCtrl(productService, warehousesService) {\n const ctrl = this;\n ctrl.$onInit = () => {\n ctrl.isLoadingData = true;\n productService.getOfferStocks(ctrl.offerId).then(data => {\n if (data.result === true) {\n ctrl.stockListData = warehousesService.getWarehousesMapData(data.obj.Stocks);\n //\u0435\u0441\u043B\u0438 \u0442\u043E\u043B\u044C\u043A\u043E \u043E\u0434\u0438\u043D \u044D\u043B\u0435\u043C\u0435\u043D\u0442 \u043D\u0430 \u043A\u0430\u0440\u0442\u0435 \u0438 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 ShowAll\n //\u0442\u043E \u0437\u0443\u043C \u043D\u0430 \u043A\u0440\u0442\u0435 \u0431\u0443\u0434\u0435\u0442 \u043C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u044B\u0439\n ctrl.isShowAll = ctrl.stockListData.length > 1;\n } else {\n data.errors.forEach(function (error) {\n console.error(error);\n });\n }\n }).finally(() => {\n ctrl.isLoadingData = false;\n });\n ctrl.activeBalloon = null;\n ctrl.activePin = null;\n ctrl.mapControls = 'zoomControl';\n ctrl.mapOptions = {\n suppressMapOpenBlock: true\n };\n ctrl.ZOOM_SELECTED_BALLOON = 17;\n ctrl.zoom = ctrl.mobileMode ? 13 : 10;\n ctrl.isLoadedMap = false;\n };\n\n // \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u0432\u044B\u043D\u0435\u0441\u0442\u0438 \u0432 property \u043E\u0431\u044A\u0435\u043A\u0442\u0430\n ctrl.getContentBalloon = function (data) {\n return `
    \n
    \n ${data.address ? `
    ${data.address}
    ` : ``}\n ${data.addressComment ? `
    ${data.addressComment}
    ` : ``}\n ${data.name ? `${data.name}` : ``}\n ${data.workTime.length ? ctrl.getWorkTime(data.workTime) : ``}\n
    \u0414\u043E\u0441\u0442\u0443\u043F\u043D\u043E: ${data.stock}
    \n
    \n
    `;\n };\n ctrl.getWorkTime = function (workTimes) {\n return workTimes.map(it => `
    ${it}
    `).join('');\n };\n ctrl.showBalloonPlace = function (e, currentBalloon) {\n if (e.get && ctrl._map) {\n if (ctrl.mobileMode) {\n ctrl._map.balloon.open(currentBalloon.geometry.coordinates, ctrl.getContentBalloon(currentBalloon.store), {\n panelMaxMapArea: Infinity,\n autoPan: false,\n panelMaxHeightRatio: 0.3\n });\n }\n if (ctrl.activePin) {\n ctrl.activePin.options.unset('preset');\n }\n ctrl.setActiveBalloon(currentBalloon);\n ctrl.setActivePin(e.get('target'));\n ctrl.changeActiveColorPin(ctrl.activePin);\n ctrl._map.setCenter(ctrl.activePin.geometry._coordinates, ctrl.ZOOM_SELECTED_BALLOON);\n }\n };\n ctrl.runBalloon = (balloon, index) => {\n ctrl._map?.setCenter(balloon.geometry.coordinates, ctrl.ZOOM_SELECTED_BALLOON);\n const pin = ctrl.collection?.get(index);\n if (ctrl.activePin != null && ctrl.activePin !== pin) {\n ctrl.activePin.options.unset('preset');\n }\n if (pin != null) {\n ctrl.setActiveBalloon(balloon);\n ctrl.setActivePin(pin);\n ctrl.changeActiveColorPin(ctrl.activePin);\n }\n };\n ctrl.setActivePin = pin => {\n ctrl.activePin = pin;\n };\n ctrl.changeActiveColorPin = pin => {\n pin.options.set('preset', 'islands#redIcon');\n };\n ctrl.setActiveBalloon = balloon => {\n ctrl.activeBalloon = balloon;\n };\n ctrl.resetActiveBalloon = () => {\n ctrl.activeBalloon = null;\n };\n ctrl.handleAfterInitMap = function ($target) {\n ctrl._map = $target;\n ctrl.isLoadedMap = true;\n if (!ctrl.isShowAll) {\n ctrl._map.setCenter(ctrl.stockListData[0].geometry.coordinates, ctrl.ZOOM_SELECTED_BALLOON);\n }\n };\n ctrl.setCollection = function (target) {\n ctrl.collection = target;\n };\n}\nProductAvailabilityMapCtrl.$inject = [\"productService\", \"warehousesService\"];", "\uFEFFimport productAvailabilityMapTemplate from './productAvailabilityMap.html';\n\nexport default function ProductAvailabilityMapDirective() {\n return {\n scope: {\n apiKeyMap: '@',\n mobileMode: ' 'https://api-maps.yandex.ru/2.1?apikey=' + API_KEY + '&lang=' + yaMapSettings.lang + '&coordorder=' + yaMapSettings.order;\n var _loading = false;\n var loadScript = function (url, callback) {\n if (_loading) {\n return;\n }\n _loading = true;\n var script = document.createElement('script');\n script.type = 'text/javascript';\n if (script.readyState) {\n // IE\n script.onreadystatechange = function () {\n if (script.readyState == 'loaded' || script.readyState == 'complete') {\n script.onreadystatechange = null;\n callback();\n }\n };\n } else {\n // \u0414\u0440\u0443\u0433\u0438\u0435 \u0431\u0440\u043E\u0443\u0437\u0435\u0440\u044B\n script.onload = function () {\n callback();\n };\n }\n script.src = url;\n document.getElementsByTagName('head')[0].appendChild(script);\n };\n return function (callback, option) {\n callbacks.push(callback);\n if (loaded) {\n runCallbacks();\n } else if (!_loading) {\n loadScript(loadUrl(), function () {\n ymaps.ready(function () {\n loaded = true;\n runCallbacks();\n });\n });\n }\n };\n}]).service('yaLayer', [function () {\n this.create = function (tileZoomFn, options) {\n return new ymaps.Layer(tileZoomFn, options);\n };\n}]).service('yaMapType', [function () {\n this.create = function (name, layers) {\n return new ymaps.MapType(name, layers);\n };\n}]).service('layerStorage', ['mapApiLoad', function (mapApiLoad) {\n this.get = function (callback) {\n if (this._storage) {\n callback(this._storage);\n } else {\n var self = this;\n mapApiLoad(function () {\n self._storage = ymaps.layer.storage;\n callback(self._storage);\n });\n }\n };\n}]).service('mapTypeStorage', [\"mapApiLoad\", function (mapApiLoad) {\n this.get = function (callback) {\n if (this._storage) {\n callback(this._storage);\n } else {\n var self = this;\n mapApiLoad(function () {\n self._storage = ymaps.mapType.storage;\n callback(self._storage);\n });\n }\n };\n}]).service('yaSubscriber', function () {\n var eventPattern = /^yaEvent(\\w*)?([A-Z]{1}[a-z]+)$/;\n this.subscribe = function (target, parentGet, attrName, scope) {\n var res = eventPattern.exec(attrName);\n var eventName = res[2].toLowerCase();\n var propertyName = res[1] ? res[1][1].toLowerCase() + res[1].substring(1) : undefined;\n scope[attrName] = function (locals) {\n return parentGet(scope.$parent || scope, locals);\n };\n var events = propertyName ? target[propertyName].events : target.events;\n events.add(eventName, function (event) {\n setTimeout(function () {\n scope.$apply(function () {\n scope[attrName]({\n $event: event\n });\n });\n });\n });\n };\n}).service('templateLayoutFactory', ['mapApiLoad', function (mapApiLoad) {\n this._cache = {};\n this.get = function (key) {\n return this._cache[key] || key;\n };\n this.create = function (key, template, overadice) {\n if (this._cache[key]) {\n return;\n }\n var self = this;\n mapApiLoad(function () {\n self._cache[key] = ymaps.templateLayoutFactory.createClass(template, overadice);\n });\n };\n}]).directive('yaTemplateLayout', ['templateLayoutFactory', function (templateLayoutFactory) {\n return {\n restrict: 'E',\n priority: 1001,\n scope: {\n overrides: '=yaOverrides'\n },\n compile: function (tElement) {\n var html = tElement.html();\n tElement.children().remove();\n return function (scope, elm, attrs) {\n if (!attrs.yaKey) {\n throw new Error('not require attribute \"key\"');\n }\n var key = attrs.yaKey;\n templateLayoutFactory.create(key, html, scope.overrides);\n };\n }\n };\n}]).controller('YaMapCtrl', ['$scope', 'mapApiLoad', '$attrs', '$parse', function ($scope, mapApiLoad, $attrs, $parse) {\n var self = this;\n API_KEY = $parse($attrs.yaMapKey)($scope.$parent);\n if (!API_KEY) {\n console.error('ApiKey required for yandex map');\n }\n mapApiLoad(function () {\n self.addGeoObjects = function (obj) {\n $scope.map.geoObjects.add(obj);\n };\n self.removeGeoObjects = function (obj) {\n $scope.map.geoObjects.remove(obj);\n };\n self.addControl = function (name, options) {\n $scope.map.controls.add(name, options);\n };\n self.getMap = function () {\n return $scope.map;\n };\n self.addImageLayer = function (urlTemplate, options) {\n var imgLayer = new ymaps.Layer(urlTemplate, options);\n $scope.map.layers.add(imgLayer);\n };\n self.addHotspotLayer = function (urlTemplate, keyTemplate, options) {\n // \u0421\u043E\u0437\u0434\u0430\u0434\u0438\u043C \u0438\u0441\u0442\u043E\u0447\u043D\u0438\u043A \u0434\u0430\u043D\u043D\u044B\u0445 \u0441\u043B\u043E\u044F \u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0445 \u043E\u0431\u043B\u0430\u0441\u0442\u0435\u0439.\n var objSource = new ymaps.hotspot.ObjectSource(urlTemplate, keyTemplate);\n var hotspotLayer = new ymaps.hotspot.Layer(objSource, options);\n $scope.map.layers.add(hotspotLayer);\n };\n });\n}]).directive('yaMap', ['$compile', 'mapApiLoad', 'yaMapSettings', '$window', 'yaSubscriber', '$parse', '$q', '$timeout', function ($compile, mapApiLoad, yaMapSettings, $window, yaSubscriber, $parse, $q, $timeout) {\n return {\n restrict: 'E',\n scope: {\n yaCenter: '@',\n yaType: '@',\n yaBeforeInit: '&',\n yaAfterInit: '&'\n },\n compile: function (tElement) {\n var childNodes = tElement.children(),\n centerCoordinatesDeferred = null;\n tElement.children().remove();\n return function (scope, element, attrs) {\n var getEvalOrValue = function (value) {\n try {\n return scope.$eval(value);\n } catch (e) {\n return value;\n }\n };\n var getCenterCoordinates = function (center) {\n if (centerCoordinatesDeferred) centerCoordinatesDeferred.reject();\n centerCoordinatesDeferred = $q.defer();\n if (!center) {\n //\u0443\u0441\u0442\u0430\u043D\u0430\u0432\u043B\u0438\u0432\u0430\u0435\u043C \u0432 \u043A\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0446\u0435\u043D\u0442\u0440\u0430 \u043C\u0435\u0441\u0442\u043E\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F\n mapApiLoad(function () {\n ymaps.geolocation.get({\n // \u0412\u044B\u0441\u0442\u0430\u0432\u043B\u044F\u0435\u043C \u043E\u043F\u0446\u0438\u044E \u0434\u043B\u044F \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u043F\u043E ip\n provider: 'yandex' //,\n // \u041A\u0430\u0440\u0442\u0430 \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u043E\u0442\u0446\u0435\u043D\u0442\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044F \u043F\u043E \u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u044E \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F.\n //mapStateAutoApply: true\n }).then(function (result) {\n $timeout(function () {\n centerCoordinatesDeferred.resolve(result.geoObjects.position);\n });\n });\n });\n } else if (angular.isArray(center)) {\n $timeout(function () {\n centerCoordinatesDeferred.resolve(center);\n });\n } else if (angular.isString(center)) {\n //\u043F\u0440\u043E\u0432\u043E\u0434\u0438\u043C \u043E\u0431\u0440\u0430\u0442\u043D\u043E\u0435 \u0433\u0435\u043E\u043A\u043E\u0434\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435\n mapApiLoad(function () {\n ymaps.geocode(center, {\n results: 1\n }).then(function (res) {\n var firstGeoObject = res.geoObjects.get(0);\n scope.$apply(function () {\n centerCoordinatesDeferred.resolve(firstGeoObject.geometry.getCoordinates());\n });\n }, function (err) {\n scope.$apply(function () {\n centerCoordinatesDeferred.reject(err);\n });\n });\n });\n }\n return centerCoordinatesDeferred.promise;\n };\n var zoom = Number(attrs.yaZoom),\n behaviors = attrs.yaBehaviors ? attrs.yaBehaviors.split(' ') : ['default'];\n var controls = ['default'];\n if (attrs.yaControls) {\n controls = attrs.yaControls.split(' ');\n } else if (angular.isDefined(attrs.yaControls)) {\n controls = [];\n }\n var disableBehaviors = [],\n enableBehaviors = [],\n behavior;\n for (var i = 0, ii = behaviors.length; i < ii; i++) {\n behavior = behaviors[i];\n if (behavior[0] === '-') {\n disableBehaviors.push(behavior.substring(1));\n } else {\n enableBehaviors.push(behavior);\n }\n }\n if (zoom < 0) {\n zoom = 0;\n } else if (zoom > 23) {\n zoom = 23;\n }\n var mapPromise;\n var mapInit = function (center) {\n var deferred = $q.defer();\n mapApiLoad(function () {\n scope.yaBeforeInit();\n var options = attrs.yaOptions ? scope.$eval(attrs.yaOptions) : undefined;\n if (options && options.projection) {\n options.projection = new ymaps.projection[options.projection.type](options.projection.bounds);\n }\n scope.map = new ymaps.Map(element[0], {\n center: center,\n zoom: zoom,\n controls: controls,\n type: attrs.yaType || 'yandex#map',\n behaviors: enableBehaviors\n }, options);\n scope.map.behaviors.disable(disableBehaviors);\n //\u043F\u043E\u0434\u043F\u0438\u0441\u043A\u0430 \u043D\u0430 \u0441\u043E\u0431\u044B\u0442\u0438\u044F\n for (var key in attrs) {\n if (key.indexOf('yaEvent') === 0) {\n var parentGet = $parse(attrs[key]);\n yaSubscriber.subscribe(scope.map, parentGet, key, scope);\n }\n }\n deferred.resolve(scope.map);\n scope.yaAfterInit({\n $target: scope.map\n });\n element.append(childNodes);\n setTimeout(function () {\n scope.$apply(function () {\n $compile(element.children())(scope.$parent);\n });\n });\n });\n return deferred.promise;\n };\n scope.$watch('yaCenter', function (newValue) {\n var center = getEvalOrValue(newValue);\n getCenterCoordinates(center).then(function (coords) {\n if (!mapPromise) {\n mapPromise = mapInit(coords);\n var isInit = true;\n }\n mapPromise.then(function (map) {\n if (!isInit) {\n map.setCenter(coords);\n }\n });\n });\n /*if(_center){\n setCenter(function(){\n scope.map.setCenter(_center);\n });\n }*/\n });\n scope.$watch('yaType', function (newValue) {\n if (newValue && mapPromise) {\n mapPromise.then(function (map) {\n map.setType(newValue);\n });\n }\n });\n scope.$on('$destroy', function () {\n if (scope.map) {\n scope.map.destroy();\n }\n });\n };\n },\n controller: 'YaMapCtrl'\n };\n}]).directive('yaControl', ['yaSubscriber', 'templateLayoutFactory', '$parse', function (yaSubscriber, templateLayoutFactory, $parse) {\n return {\n restrict: 'E',\n require: '^yaMap',\n scope: {\n yaAfterInit: '&'\n },\n link: function (scope, elm, attrs, yaMap) {\n var className = attrs.yaType[0].toUpperCase() + attrs.yaType.substring(1);\n var getEvalOrValue = function (value) {\n try {\n return scope.$eval(value);\n } catch (e) {\n return value;\n }\n };\n var params = getEvalOrValue(attrs.yaParams);\n var options = attrs.yaOptions ? scope.$eval(attrs.yaOptions) : undefined;\n if (options && options.layout) {\n options.layout = templateLayoutFactory.get(options.layout);\n }\n if (options && options.itemLayout) {\n options.itemLayout = templateLayoutFactory.get(options.itemLayout);\n }\n if (params && params.items) {\n var items = [];\n var item;\n for (var i = 0, ii = params.items.length; i < ii; i++) {\n item = params.items[i];\n items.push(new ymaps.control.ListBoxItem(item));\n }\n params.items = items;\n }\n var obj = new ymaps.control[className](params);\n for (var key in options) {\n if (options.hasOwnProperty(key)) {\n obj.options.set(key, options[key]);\n }\n }\n //\u043F\u043E\u0434\u043F\u0438\u0441\u043A\u0430 \u043D\u0430 \u0441\u043E\u0431\u044B\u0442\u0438\u044F\n for (key in attrs) {\n if (key.indexOf('yaEvent') === 0) {\n var parentGet = $parse(attrs[key]);\n yaSubscriber.subscribe(obj, parentGet, key, scope);\n }\n }\n yaMap.addControl(obj, options);\n scope.yaAfterInit({\n $target: obj\n });\n }\n };\n}]).controller('CollectionCtrl', ['$scope', function ($scope) {\n this.addGeoObjects = function (geoObject) {\n $scope.collection.add(geoObject);\n };\n this.removeGeoObjects = function (geoObject) {\n $scope.collection.remove(geoObject);\n };\n}]).directive('yaCollection', ['$compile', 'yaMapSettings', '$timeout', 'yaSubscriber', '$parse', function ($compile, yaMapSettings, $timeout, yaSubscriber, $parse) {\n return {\n require: '^yaMap',\n restrict: 'E',\n scope: {\n yaAfterInit: '&'\n },\n compile: function (tElement) {\n var childNodes = tElement.contents();\n tElement.children().remove();\n return function (scope, element, attrs, yaMap) {\n var options = attrs.yaOptions ? scope.$eval(attrs.yaOptions) : {};\n\n // var showAll = angular.isDefined(attrs.showAll) && attrs.showAll!='false';\n var showAll = $parse(attrs.showAll)(scope.$parent);\n if (showAll) {\n var map = yaMap.getMap();\n var timeout;\n var addEventHandler = function () {\n if (timeout) {\n $timeout.cancel(timeout);\n }\n timeout = $timeout(function () {\n map.geoObjects.events.remove('add', addEventHandler);\n var bounds = map.geoObjects.getBounds();\n if (bounds) {\n map.setBounds(bounds, {\n checkZoomRange: true,\n zoomMargin: 9\n });\n }\n }, 300);\n };\n map.geoObjects.events.add('add', addEventHandler);\n }\n scope.collection = new ymaps.GeoObjectCollection({}, options);\n //\u043F\u043E\u0434\u043F\u0438\u0441\u043A\u0430 \u043D\u0430 \u0441\u043E\u0431\u044B\u0442\u0438\u044F\n for (var key in attrs) {\n if (key.indexOf('yaEvent') === 0) {\n var parentGet = $parse(attrs[key]);\n yaSubscriber.subscribe(scope.collection, parentGet, key, scope);\n }\n }\n yaMap.addGeoObjects(scope.collection);\n scope.yaAfterInit({\n $target: scope.collection\n });\n scope.$on('$destroy', function () {\n if (scope.collection) {\n yaMap.removeGeoObjects(scope.collection);\n }\n });\n element.append(childNodes);\n $compile(element.children())(scope.$parent);\n };\n },\n controller: 'CollectionCtrl'\n };\n}]).directive('yaCluster', ['yaMapSettings', 'yaSubscriber', '$compile', 'templateLayoutFactory', '$parse', function (yaMapSettings, yaSubscriber, $compile, templateLayoutFactory, $parse) {\n return {\n require: '^yaMap',\n restrict: 'E',\n scope: {\n yaAfterInit: '&'\n },\n compile: function (tElement) {\n var childNodes = tElement.contents();\n tElement.children().remove();\n return function (scope, element, attrs, yaMap) {\n var collectionOptions = attrs.yaOptions ? scope.$eval(attrs.yaOptions) : {};\n if (collectionOptions && collectionOptions.clusterBalloonItemContentLayout) {\n collectionOptions.clusterBalloonItemContentLayout = templateLayoutFactory.get(collectionOptions.clusterBalloonItemContentLayout);\n }\n if (collectionOptions && collectionOptions.clusterBalloonContentLayout) {\n collectionOptions.clusterBalloonContentLayout = templateLayoutFactory.get(collectionOptions.clusterBalloonContentLayout);\n }\n //\u0432\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0435 \u043A\u043B\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u0438\n scope.collection = new ymaps.Clusterer(collectionOptions);\n //\u043F\u043E\u0434\u043F\u0438\u0441\u043A\u0430 \u043D\u0430 \u0441\u043E\u0431\u044B\u0442\u0438\u044F\n for (var key in attrs) {\n if (key.indexOf('yaEvent') === 0) {\n var parentGet = $parse(attrs[key]);\n yaSubscriber.subscribe(scope.collection, parentGet, key, scope);\n }\n }\n yaMap.addGeoObjects(scope.collection);\n scope.yaAfterInit({\n $target: scope.collection\n });\n scope.$on('$destroy', function () {\n if (scope.collection) {\n yaMap.removeGeoObjects(scope.collection);\n }\n });\n element.append(childNodes);\n $compile(element.children())(scope.$parent);\n };\n },\n controller: 'CollectionCtrl'\n };\n}]).directive('yaGeoObject', ['GEOMETRY_TYPES', 'yaSubscriber', 'templateLayoutFactory', '$parse', function (GEOMETRY_TYPES, yaSubscriber, templateLayoutFactory, $parse) {\n return {\n restrict: 'E',\n require: ['^yaMap', '?^yaCollection', '?^yaCluster'],\n scope: {\n yaSource: '=',\n yaShowBalloon: '=',\n yaAfterInit: '&'\n },\n link: function (scope, elm, attrs, ctrls) {\n var ctrl = ctrls[2] || ctrls[1] || ctrls[0],\n obj;\n var options = attrs.yaOptions ? scope.$eval(attrs.yaOptions) : undefined;\n if (options && options.balloonContentLayout) {\n options.balloonContentLayout = templateLayoutFactory.get(options.balloonContentLayout);\n }\n if (options && options.iconLayout) {\n options.iconLayout = templateLayoutFactory.get(options.iconLayout);\n }\n var createGeoObject = function (from, options) {\n obj = new ymaps.GeoObject(from, options);\n //\u043F\u043E\u0434\u043F\u0438\u0441\u043A\u0430 \u043D\u0430 \u0441\u043E\u0431\u044B\u0442\u0438\u044F\n for (var key in attrs) {\n if (key.indexOf('yaEvent') === 0) {\n var parentGet = $parse(attrs[key]);\n yaSubscriber.subscribe(obj, parentGet, key, scope);\n }\n }\n ctrl.addGeoObjects(obj);\n scope.yaAfterInit({\n $target: obj\n });\n checkEditing(attrs.yaEdit);\n checkDrawing(attrs.yaDraw);\n checkShowBalloon(scope.yaShowBalloon);\n };\n scope.$watch('yaSource', function (newValue) {\n if (newValue) {\n if (obj) {\n obj.geometry.setCoordinates(newValue.geometry.coordinates);\n if (obj.geometry.getType() === GEOMETRY_TYPES.CIRCLE) {\n obj.geometry.setRadius(newValue.geometry.radius);\n }\n var properties = newValue.properties;\n for (var key in properties) {\n if (properties.hasOwnProperty(key)) {\n obj.properties.set(key, properties[key]);\n }\n }\n } else {\n createGeoObject(newValue, options);\n }\n } else if (obj) {\n ctrl.removeGeoObjects(obj);\n }\n }, angular.equals);\n var checkEditing = function (editAttr) {\n if (angular.isDefined(editAttr) && editAttr !== 'false') {\n if (obj) {\n obj.editor.startEditing();\n }\n } else if (angular.isDefined(editAttr)) {\n if (obj) {\n obj.editor.stopEditing();\n }\n }\n };\n var checkDrawing = function (drawAttr) {\n if (angular.isDefined(drawAttr) && drawAttr !== 'false') {\n if (obj) {\n obj.editor.startDrawing();\n }\n } else if (angular.isDefined(drawAttr)) {\n if (obj) {\n obj.editor.stopDrawing();\n }\n }\n };\n var checkShowBalloon = function (newValue) {\n if (newValue) {\n if (obj) {\n obj.balloon.open();\n }\n } else {\n if (obj) {\n obj.balloon.close();\n }\n }\n };\n attrs.$observe('yaEdit', checkEditing);\n attrs.$observe('yaDraw', checkDrawing);\n scope.$watch('yaShowBalloon', checkShowBalloon);\n scope.$on('$destroy', function () {\n if (obj) {\n ctrl.removeGeoObjects(obj);\n }\n });\n }\n };\n}]).directive('yaHotspotLayer', [function () {\n return {\n restrict: 'E',\n require: '^yaMap',\n link: function (scope, elm, attrs, yaMap) {\n if (!attrs.yaUrlTemplate) {\n throw new Error('not exists required attribute \"url-template\"');\n }\n if (!attrs.yaKeyTemplate) {\n throw new Error('not exists required attribute \"key-template\"');\n }\n var options = attrs.yaOptions ? scope.$eval(attrs.yaOptions) : undefined;\n yaMap.addHotspotLayer(attrs.yaUrlTemplate, attrs.yaKeyTemplate, options);\n }\n };\n}]).directive('yaImageLayer', [function () {\n return {\n restrict: 'E',\n require: '^yaMap',\n link: function (scope, elm, attrs, yaMap) {\n if (!attrs.yaUrlTemplate) {\n throw new Error('not exists required attribute \"url-template\"');\n }\n var options = attrs.yaOptions ? scope.$eval(attrs.yaOptions) : undefined;\n yaMap.addImageLayer(attrs.yaUrlTemplate, options);\n }\n };\n}]).directive('yaDragger', ['yaSubscriber', '$parse', 'mapApiLoad', function (yaSubscriber, $parse, mapApiLoad) {\n return {\n restrict: 'EA',\n scope: {\n yaAfterInit: '&'\n },\n link: function (scope, elm, attrs) {\n var options = attrs.yaOptions ? scope.$eval(attrs.yaOptions) : {};\n mapApiLoad(function () {\n options.autoStartElement = elm[0];\n var obj = new ymaps.util.Dragger(options);\n //\u043F\u043E\u0434\u043F\u0438\u0441\u043A\u0430 \u043D\u0430 \u0441\u043E\u0431\u044B\u0442\u0438\u044F\n for (var key in attrs) {\n if (key.indexOf('yaEvent') === 0) {\n var parentGet = $parse(attrs[key]);\n yaSubscriber.subscribe(obj, parentGet, key, scope);\n }\n }\n scope.yaAfterInit({\n $target: obj\n });\n });\n }\n };\n}]);", "\uFEFFimport warehousesService from './services/warehousesService.js';\nimport cartStockInWarehousesCtrl from './controllers/cartStockInWarehousesController.js';\nimport { cartStockInWarehousesDirective } from './directives/warehousesDirectives.js';\n\nimport '../_common/yandexMaps/ya-map-2.1.directive.js';\nimport '../_common/yandexMaps/styles.scss';\nimport './styles/warehousesListMap.scss';\nimport './styles/warehousesList.scss';\nimport './styles/cartStockInWareHouses.scss';\n\nimport WarehousesMapCtrl from './controllers/warehousesMap.ctrl.js';\nimport WarehousesListMapDirective from './directives/warehousesListMap.directive.js';\nimport WarehousesListDirective from './directives/warehousesListDirective.js';\n\nconst moduleName = 'warehouses';\n\nangular\n .module(moduleName, ['yaMap'])\n .service('warehousesService', warehousesService)\n .controller('cartStockInWarehousesCtrl', cartStockInWarehousesCtrl)\n .controller('warehousesMapCtrl', WarehousesMapCtrl)\n .directive('warehousesListMap', WarehousesListMapDirective)\n .directive('warehousesList', WarehousesListDirective)\n .directive('cartStockInWarehouses', cartStockInWarehousesDirective)\n .constant('WarehousesDisplayStatus', {\n list: 'shops-list',\n map: 'shops-map',\n });\n\nexport default moduleName;\n", "function warehousesService($http, $window, $cookies) {\n var service = this;\n const isUseHashListener = false;\n const hashChangeCallbacks = new Set();\n service.getCartStockInWarehouses = function (warehousesId) {\n return $http.post('warehouse/getCartStockInWarehouses', {\n warehousesId: warehousesId,\n rnd: Math.random()\n }).then(function (response) {\n return response.data;\n });\n };\n service.getWarehousesInfo = function () {\n return $http.get('warehouse/getwarehousesinfo').then(function (response) {\n return response.data;\n });\n };\n service.getWarehousesMapData = function (warehouses) {\n return warehouses.map((it, index) => {\n return {\n id: index,\n type: 'Feature',\n geometry: {\n type: 'Point',\n coordinates: [it.Longitude, it.Latitude]\n },\n properties: {},\n store: {\n address: it.Address,\n name: it.Name,\n addressComment: it.AddressComment,\n stockColor: it.StockColor,\n stock: it.Stock,\n workTime: it.TimeOfWorkList,\n type: it.Type\n }\n };\n });\n };\n service.getFilterTypes = function (warehousesList) {\n const filterType = new Set();\n warehousesList.forEach(it => {\n it.Type ? filterType.add(it.Type) : null;\n });\n return Array.from(filterType);\n };\n service.getWarehousesByType = function (type, list) {\n return list.filter(it => {\n return it.store.type === type;\n });\n };\n service.setOnChangeHashListener = function () {\n if (!isUseHashListener) {\n $window.addEventListener('hashchange', e => {\n for (let cb of hashChangeCallbacks) {\n cb(e);\n }\n });\n }\n };\n service.addHashChangeCallback = function (cb) {\n hashChangeCallbacks.add(cb);\n };\n service.removeHashChangeCallback = function (cb) {\n hashChangeCallbacks.delete(cb);\n };\n service.setWarehouseCookie = function (warehouseIds) {\n return $http.post('warehouse/setWarehouses', warehouseIds).then(function (response) {\n return response.data;\n });\n };\n service.removeWarehouseCookie = function () {\n return service.setWarehouseCookie(null);\n };\n}\nwarehousesService.$inject = [\"$http\", \"$window\", \"$cookies\"];\nexport default warehousesService;", "function cartStockInWarehousesCtrl(warehousesService, $scope, cartService) {\n var ctrl = this;\n ctrl.$onInit = function () {\n $scope.$watch('cartStock.warehouses', ctrl.getCartStock);\n cartService.addCallback('update', ctrl.getCartStock);\n cartService.addCallback('remove', ctrl.getCartStock);\n };\n ctrl.getCartStock = function () {\n warehousesService.getCartStockInWarehouses(ctrl.warehouses).then(function (data) {\n ctrl.stockInWarehouses = data.obj;\n ctrl.countOutStock = ctrl.stockInWarehouses.filter(item => item.OutStock).length;\n ctrl.remainderCountOutStockOf100 = ctrl.countOutStock % 100;\n ctrl.remainderCountOutStockOf10 = ctrl.countOutStock % 10;\n });\n };\n}\ncartStockInWarehousesCtrl.$inject = [\"warehousesService\", \"$scope\", \"cartService\"];\nexport default cartStockInWarehousesCtrl;", "\uFEFFimport cartStockInWarehousesTemplate from '../templates/cartStockInWarehouses.html';\nfunction cartStockInWarehousesDirective() {\n return {\n restrict: 'AE',\n scope: {\n warehouses: '<',\n },\n controller: 'cartStockInWarehousesCtrl',\n controllerAs: 'cartStock',\n bindToController: true,\n templateUrl: cartStockInWarehousesTemplate,\n };\n}\n\nexport { cartStockInWarehousesDirective };\n", "export default function WarehousesMapCtrl(warehousesService, $location, $window, WarehousesDisplayStatus, $scope, $translate) {\n const ZOOM_SELECTED_BALLOON = 17;\n const ctrl = this;\n const NATIVE_COMPACT_MODE_BALLOON_PANEL_OPTIONS = {\n panelMaxMapArea: Infinity,\n autoPan: false,\n panelMaxHeightRatio: 0.3\n };\n const defaultFilterType = $translate.instant('Js.WarehousesMap.All');\n let warehousesMapDataListBackup;\n ctrl.$onInit = () => {\n ctrl.isLoadedMap = false;\n ctrl.isShowMap = false;\n ctrl.isShowList = true;\n ctrl.activeBalloon = null;\n ctrl.activePin = null;\n ctrl.mapControls = 'zoomControl';\n if (ctrl.compactMode) {\n ctrl.setWarehousesDisplayStatus();\n }\n warehousesService.getWarehousesInfo().then(data => {\n if (data.result === true) {\n ctrl.warehousesList = data.obj;\n ctrl.filterTypes = warehousesService.getFilterTypes(ctrl.warehousesList);\n if (ctrl.filterTypes.length > 0) {\n ctrl.filterTypes.unshift(defaultFilterType);\n ctrl.warehouseFilterType = defaultFilterType;\n }\n ctrl.warehousesMapDataList = warehousesMapDataListBackup = warehousesService.getWarehousesMapData(data.obj);\n } else {\n data.errors.forEach(function (error) {\n console.error(error);\n });\n }\n });\n ctrl.mapOptions = {\n suppressMapOpenBlock: true\n };\n ctrl.zoom = 10;\n warehousesService.setOnChangeHashListener();\n warehousesService.addHashChangeCallback(() => {\n ctrl.setWarehousesDisplayStatus();\n $scope.$apply();\n });\n };\n ctrl.setWarehousesDisplayStatus = function () {\n const hash = $location.hash();\n if (hash === WarehousesDisplayStatus.map) {\n ctrl.showMapWarehouses();\n } else {\n ctrl.showListWarehouses();\n }\n };\n ctrl.showBalloonPlace = function (e, currentBalloon) {\n if (e.get && ctrl._map) {\n if (ctrl.activePin) {\n ctrl.activePin.options.unset('preset');\n }\n ctrl.setActivePin(e.get('target'));\n ctrl.changeActiveColorPin(ctrl.activePin);\n ctrl._map.setCenter(ctrl.activePin.geometry._coordinates, ZOOM_SELECTED_BALLOON);\n ctrl.setActiveBalloon(currentBalloon);\n }\n };\n ctrl.getContentBalloon = function (data) {\n return `
    \n
    \n ${data.address ? `
    ${data.address}
    ` : ``}\n ${data.name ? `${data.name}` : ``}\n ${data.workTime ? `
    ${data.workTime}
    ` : ``}\n
    \n
    `;\n };\n ctrl.showBalloonPlace = function (e, balloon) {\n if (e.get && ctrl._map) {\n if (ctrl.compactMode) {\n ctrl.openNativePanelBalloon(balloon);\n }\n if (ctrl.activePin) {\n ctrl.activePin.options.unset('preset');\n }\n ctrl.setActiveBalloon(balloon);\n ctrl.setActivePin(e.get('target'));\n ctrl.changeActiveColorPin(ctrl.activePin);\n ctrl._map.setCenter(ctrl.activePin.geometry._coordinates, ctrl.ZOOM_SELECTED_BALLOON);\n }\n };\n ctrl.runBalloon = (balloon, index) => {\n ctrl._map?.setCenter(balloon.geometry.coordinates, ZOOM_SELECTED_BALLOON);\n if (ctrl.compactMode) {\n ctrl.openNativePanelBalloon(balloon);\n }\n const pin = ctrl.collection?.get(index);\n if (ctrl.activePin != null && ctrl.activePin !== pin) {\n ctrl.activePin.options.unset('preset');\n }\n if (pin) {\n ctrl.setActivePin(pin);\n ctrl.changeActiveColorPin(ctrl.activePin);\n }\n ctrl.setActiveBalloon(balloon);\n ctrl.showMap();\n ctrl.hideList();\n };\n ctrl.openNativePanelBalloon = function (balloon) {\n ctrl._map?.balloon.open(balloon.geometry.coordinates, ctrl.getContentBalloon(balloon.store), NATIVE_COMPACT_MODE_BALLOON_PANEL_OPTIONS);\n };\n ctrl.setActivePin = pin => {\n ctrl.activePin = pin;\n };\n ctrl.setActiveBalloon = balloon => {\n ctrl.activeBalloon = balloon;\n };\n ctrl.resetActiveBalloon = () => {\n ctrl.activeBalloon = null;\n };\n ctrl.backToList = () => {\n ctrl.resetActiveBalloon();\n };\n ctrl.changeActiveColorPin = pin => {\n pin.options.set('preset', 'islands#redIcon');\n };\n ctrl.handleAfterInitMap = function ($target) {\n ctrl._map = $target;\n ctrl.isLoadedMap = true;\n };\n ctrl.setCollection = function (target) {\n ctrl.collection = target;\n };\n ctrl.showMap = function () {\n ctrl.isShowMap = true;\n };\n ctrl.hideMap = function () {\n ctrl.isShowMap = false;\n };\n ctrl.showList = function () {\n ctrl.isShowList = true;\n };\n ctrl.hideList = function () {\n ctrl.isShowList = false;\n };\n ctrl.resetActiveBalloon = function () {\n ctrl.activeBalloon = null;\n };\n ctrl.filterBy = function (type, list) {\n ctrl.resetActiveBalloon();\n if (type === defaultFilterType) {\n ctrl.warehousesMapDataList = warehousesMapDataListBackup;\n } else {\n ctrl.warehousesMapDataList = warehousesService.getWarehousesByType(type, warehousesMapDataListBackup);\n }\n };\n ctrl.showListWarehouses = function () {\n $location.hash(WarehousesDisplayStatus.list);\n ctrl.hideMap();\n ctrl.showList();\n };\n ctrl.showMapWarehouses = function () {\n $location.hash(WarehousesDisplayStatus.map);\n ctrl.hideList();\n ctrl.showMap();\n };\n}\nWarehousesMapCtrl.$inject = [\"warehousesService\", \"$location\", \"$window\", \"WarehousesDisplayStatus\", \"$scope\", \"$translate\"];", "\uFEFFimport warehousesListMapTemplate from '../templates/warehousesListMap.html';\n\nexport default function WarehousesListMapDirective() {\n return {\n scope: {\n mapData: '<',\n apiKeyMap: '@',\n showDetailsWarehouse: ' {\n ctrl.activeWarehouse = null;\n };\n\n ctrl.handleClickWarehouse = (warehouse, index) => {\n ctrl.onClickWarehouse({ warehouse, index });\n };\n },\n controllerAs: '$ctrl',\n templateUrl: warehousesListTemplate,\n };\n}\n", "\uFEFFclass AppDependency {\n constructor() {\n if (!window.___appDependency) {\n window.___appDependency = this;\n window.___appDependencyList = [];\n }\n\n return window.___appDependency;\n }\n\n addItem(moduleName) {\n window.___appDependencyList.push(moduleName);\n }\n\n addList(moduleNameList) {\n window.___appDependencyList.push.apply(window.___appDependencyList, moduleNameList);\n }\n\n get() {\n return window.___appDependencyList;\n }\n}\n\nexport default new AppDependency();\n"], "mappings": "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", "names": ["obj", "p", "q", "require_stackedMap", "require_tooltip", "trigger", "tooltip", "clone", "require_index_nocss", "require_index_nocss", "require_popover", "window", "isTouchDevice", "Carousel", "self", "clone", "img", "carouselService", "moduleName", "document", "screenfull", "$", "moduleName", "moduleName", "iframeResponsiveService", "iframeResponsiveService", "urlHelper", "defer", "config", "playerId", "moduleName", "moduleName", "load", "moduleName", "customOptionsService", "isValid", "selectedOption", "urlHelper", "init_customOptions", "urlHelper", "isValid", "moduleName", "moduleName", "moduleName", "buyOneClickService", "buyOneClickService", "isValid", "buyOneClickService", "modalId", "moduleName", "preOrderService", "preOrderService", "isValid", "preOrderService", "modalId", "moduleName", "productService", "urlHelper", "customOptionsService", "$scope", "moduleName", "deps", "config", "i", "clone", "files", "dupFiles", "isSingleModel", "$parse", "$timeout", "$compile", "scope", "fileElem", "URL", "fn", "promises", "deffer", "isValid", "file", "attr", "entry", "defer", "quickviewService", "urlHelper", "urlHelper", "urlHelper", "moduleName", "moduleName", "productsCarouselService", "moduleName", "moduleName", "productViewService", "productViewService", "productViewService", "urlHelper", "result", "productViewService", "productViewService", "isMobile", "moduleName", "tabsService", "urlHelper", "tabsService", "tabHeader", "header", "moduleName", "form", "htmlItem", "moduleName", "ngFileUploadModule", "urlHelper", "moduleName", "isTouchDevice", "urlHelper", "clone", "urlHelper", "urlHelper", "shippingItemError_default", "moduleName", "productService", "warehousesService", "self", "options", "warehousesService", "warehousesService", "moduleName", "moduleName", "moduleName", "deps", "popover", "moduleName"] }