{ "version": 3, "sources": ["../../node_modules/tinycolor2/esm/tinycolor.js", "../../node_scripts/bundle/esbuild/inject/tinycolor-inject.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", "../../bundle_config/news.js", "../../scripts/news/news.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/_partials/subscribe/subscribe.module.js", "../../scripts/_partials/subscribe/controllers/subscribeController.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", ".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", "\uFEFFimport newsModule from '../scripts/news/news.module.js';\n\nimport appDependency from '../scripts/appDependency.js';\n\nappDependency.addItem(newsModule);\n", "\uFEFFimport '../../styles/views/news.scss';\nimport '../../styles/partials/pagenumberer.scss';\n\nimport productViewModule from '../_partials/product-view/productView.module.js';\nimport subscribeModule from '../_partials/subscribe/subscribe.module.js';\nimport carouselModule from '../_common/carousel/carousel.module.js';\n\nconst moduleName = 'news';\n\nangular.module(moduleName, [productViewModule, subscribeModule, carouselModule]).controller('NewsCtrl', function () {});\n\nexport default moduleName;\n", "\uFEFFimport carouselModule from '../../_common/carousel/carousel.module.js';\nimport ratingModule from '../../_common/rating/rating.module.js';\nimport quickviewModule from '../quickview/quickview.module.js';\nimport colorsViewerModule from '../colors-viewer/colorsViewer.module.js';\nimport productsCarouselModule from '../products-carousel/productsCarousel.module.js';\nimport photoViewListModule from '../../../scripts/_partials/photo-view-list/photoViewList.module.js';\n\nimport './styles/product-view.scss';\nimport '../price-amount-list/styles/price-amount-list.scss';\n\nimport productViewService from './services/productViewService.js';\nimport {\n productViewItemDirective,\n productViewCarouselPhotosDirective,\n productViewChangeModeDirective,\n productViewModeDirective,\n productViewImageListDirective,\n productViewScrollPhotosDirective,\n productViewImageDirective,\n} from './directives/productViewDirectives.js';\n\nimport ProductViewCarouselPhotosCtrl from './controllers/productViewCarouselPhotosController.js';\nimport ProductViewChangeModeCtrl from './controllers/productViewChangeModeController.js';\nimport ProductViewItemCtrl from './controllers/productViewItemController.js';\nimport ProductViewModeCtrl from './controllers/productViewModeController.js';\n\nimport '../../../styles/partials/modal-video.scss';\nimport ProductViewImageListCtrl from './controllers/productViewImageListController.js';\nimport ProductViewImageCtrl from './controllers/productViewImageController.js';\n\nconst moduleName = 'productView';\n\nangular\n .module(moduleName, [ratingModule, quickviewModule, colorsViewerModule, productsCarouselModule, photoViewListModule, carouselModule])\n .constant('viewPrefix', {\n desktop: '',\n mobile: 'mobile-',\n mobileModern: 'mobile-modern-',\n })\n .constant('viewList', {\n desktop: ['tile', 'list', 'table'],\n mobile: ['tile', 'list', 'single'],\n mobileModern: ['tile', 'list', 'single'],\n })\n .service('productViewService', productViewService)\n .directive('productViewItem', productViewItemDirective)\n .directive('productViewCarouselPhotos', productViewCarouselPhotosDirective)\n .directive('productViewChangeMode', productViewChangeModeDirective)\n .directive('productViewMode', productViewModeDirective)\n .directive('productViewImageList', productViewImageListDirective)\n .directive('productViewImage', productViewImageDirective)\n .directive('productViewScrollPhotos', productViewScrollPhotosDirective)\n .controller('ProductViewCarouselPhotosCtrl', ProductViewCarouselPhotosCtrl)\n .controller('ProductViewChangeModeCtrl', ProductViewChangeModeCtrl)\n .controller('ProductViewItemCtrl', ProductViewItemCtrl)\n .controller('ProductViewImageListCtrl', ProductViewImageListCtrl)\n .controller('ProductViewImageCtrl', ProductViewImageCtrl)\n .controller('ProductViewModeCtrl', ProductViewModeCtrl);\n\nexport default moduleName;\n", "\uFEFFimport './styles/quickview.scss';\n\nimport QuickviewCtrl from './controllers/quickviewController.js';\nimport { quickviewTriggerDirective } from './directives/quickviewDirectives.js';\nimport quickviewService from './services/quickviewService.js';\nimport priceAmountListModule from '../price-amount-list/priceAmountList.module.js';\n\nconst moduleName = 'quickview';\n\nangular\n .module(moduleName, [priceAmountListModule])\n .controller('QuickviewCtrl', QuickviewCtrl)\n .directive('quickviewTrigger', quickviewTriggerDirective)\n .service('quickviewService', quickviewService);\n\nexport default moduleName;\n", "function QuickviewCtrl(quickviewService, cartService, cartConfig, domService, $location, urlHelper, $q, $ocLazyLoad) {\n var ctrl = this,\n colorsAndSize = {},\n triggers = [];\n ctrl.addTrigger = function (productId) {\n triggers.push(productId);\n };\n ctrl.showModal = function (productId, colorId, typeView, modalClass, landingId, hideShipping, showLeadButton, blockId, showVideo, modalId, openFromHash, sizeId, onOpenModalCallback, spyAddress, descriptionMode, cartAddType) {\n /*\u0412\u042B\u0417\u042B\u0412\u0410\u0415\u0422 \u0410\u041D\u0413\u0423\u041B\u042F\u0420 \u041D\u0415\u0421\u041A\u041E\u041B\u042C\u041A\u041E\u0420 \u0420\u0410\u0417!!!!!!!!! Fly runtime*/\n\n let promise;\n if (quickviewService.dialogIsExist(modalId) !== true) {\n quickviewService.needOpenDialog(modalId);\n promise = import(/* webpackChunkName: \"productQuickview\" */\n /* webpackMode: \"lazy\" */\n '../../../product/productQuickview.module.js').then(module => {\n $ocLazyLoad.inject(module.default);\n }).then(() => {\n ctrl.cartAddTriggerName = 'quckview_' + Date.now();\n if (cartAddType !== cartConfig.cartAddType.WithSpinbox) {\n cartService.addCallback(cartConfig.callbackNames.add, () => ctrl.hideModal(modalId), ctrl.cartAddTriggerName);\n }\n });\n } else {\n promise = $q.resolve();\n }\n return promise.then(() => {\n if (quickviewService.checkDialogOpenById(modalId) !== true) {\n quickviewService.dialogOpen(ctrl, productId, colorId, typeView, modalClass, landingId, hideShipping, showLeadButton, blockId, showVideo, modalId, openFromHash, sizeId, onOpenModalCallback, spyAddress, descriptionMode, cartAddType);\n }\n });\n };\n ctrl.hideModal = function (modalId) {\n quickviewService.dialogClose(modalId);\n cartService.removeCallback(cartConfig.callbackNames.add, ctrl.cartAddTriggerName);\n };\n ctrl.setSiblings = function (element) {\n var items, sibling, id, modalId;\n ctrl.siblings = [];\n ctrl.modalIds = {};\n items = domService.closest(element, '.js-products-view-block').parentNode.children;\n for (var i = 0, len = items.length - 1; i <= len; i++) {\n sibling = items[i].querySelector('.js-products-view-item');\n if (sibling != null) {\n id = parseInt(sibling.getAttribute('data-product-id'));\n modalId = sibling.getAttribute('data-modal-id') || sibling.querySelector('[data-quickview-trigger]')?.dataset.modalId;\n if (angular.isNumber(id)) {\n ctrl.siblings.push(id);\n }\n if (modalId != null) {\n ctrl.modalIds[id] = modalId;\n }\n }\n }\n };\n ctrl.onChangeSizeAndColor = function (data) {\n if (ctrl.isSpyAddress && data != null) {\n var hash = $location.hash();\n var urlParams = hash.split('?');\n var originalHash = urlParams.shift();\n var urlParamsFromHash = urlHelper.getUrlParamsAsObject(urlParams.join('&'));\n if (data.ColorId != null) {\n colorsAndSize.colorId = data.ColorId;\n }\n if (data.SizeId != null) {\n colorsAndSize.sizeId = data.SizeId;\n }\n $location.hash((originalHash || ctrl.modalId) + '?' + urlHelper.paramsToString(Object.assign({}, colorsAndSize, urlParamsFromHash)));\n }\n };\n ctrl.onOpenModal = function () {\n if (ctrl.productCtrl != null) {\n ctrl.onChangeSizeAndColor(ctrl.productCtrl.colorSelected);\n ctrl.onChangeSizeAndColor(ctrl.productCtrl.sizeSelected);\n }\n };\n ctrl.addProductCtrl = function (productCtrl) {\n ctrl.productCtrl = productCtrl;\n };\n}\nQuickviewCtrl.$inject = [\"quickviewService\", \"cartService\", \"cartConfig\", \"domService\", \"$location\", \"urlHelper\", \"$q\", \"$ocLazyLoad\"];\nexport default QuickviewCtrl;", "function quickviewTriggerDirective($location, urlHelper, $window, modalService, $parse) {\n return {\n require: ['quickviewTrigger', '^productViewItem'],\n restrict: 'A',\n scope: true,\n controller: 'QuickviewCtrl',\n controllerAs: 'quickview',\n bindToController: true,\n link: function (scope, element, attrs, ctrls) {\n var hash = $location.hash();\n var quickviewCtrl = ctrls[0],\n productViewItemCtrl = ctrls[1];\n if (hash != null) {\n var splitedHash = hash.split('?');\n hash = splitedHash != null ? splitedHash[0] : hash;\n }\n var colorId, sizeId;\n //var originalHash = splitedHash[0];\n if (splitedHash != null && splitedHash.length > 1) {\n var addParams = urlHelper.getUrlParamsAsObject(splitedHash[1]);\n colorId = addParams.colorId;\n sizeId = addParams.sizeId;\n }\n quickviewCtrl.modalId = attrs.modalId != null ? attrs.modalId : 'modalQuickView';\n quickviewCtrl.isSpyAddress = attrs.spyAddress === 'true';\n const showModal = () => {\n if (attrs.modalId != null && attrs.categoryId != null) {\n quickviewCtrl.modalId = attrs.modalId + '?categoryId=' + attrs.categoryId;\n }\n if (quickviewCtrl.siblings == null) {\n quickviewCtrl.setSiblings(element[0]);\n }\n quickviewCtrl.showModal(productViewItemCtrl.productId != null && isNaN(productViewItemCtrl.productId) === false ? productViewItemCtrl.productId : $parse(attrs.productId)(scope), colorId || productViewItemCtrl.getSelectedColorId(), attrs.quickviewTypeView, element[0].getAttribute('data-modal-class'), attrs.landingId, attrs.hideShipping, attrs.showLeadButton, attrs.blockId, attrs.showVideo != null ? attrs.showVideo : null, quickviewCtrl.modalId, quickviewCtrl.openFromHash, sizeId, quickviewCtrl.onOpenModal, quickviewCtrl.isSpyAddress, attrs.descriptionMode, attrs.cartAddType);\n };\n if (hash === attrs.modalId) {\n quickviewCtrl.openFromHash = true;\n showModal();\n //scope.$digest();\n }\n element[0].addEventListener('click', function (event) {\n event.preventDefault();\n event.stopPropagation();\n showModal();\n scope.$apply();\n });\n }\n };\n}\nquickviewTriggerDirective.$inject = [\"$location\", \"urlHelper\", \"$window\", \"modalService\", \"$parse\"];\nexport { quickviewTriggerDirective };", "import quckviewModalTemplate from '../templates/quckviewModal.html';\n\n/* @ngInject */\nfunction quickviewService(modalService, $location, $timeout, urlHelper) {\n var service = this,\n needOpenDialogId,\n dialogIdOpen;\n service.dialogRender = function (parentScope) {\n modalService.renderModal(parentScope.modalId || 'modalQuickView', null, `
    `, null, {\n isOpen: false,\n modalClass: 'modal-quickview' + ' ' + (parentScope.modalClass || ''),\n backgroundEnable: true,\n modalOverlayClass: 'modal-quickview-wrap',\n spyAddress: parentScope.spyAddress,\n anchor: parentScope.modalId || 'modalQuickView',\n callbackOpen: parentScope.spyAddress ? 'quickview.onOpenModalCallback()' : '',\n callbackClose: 'quickview.onModalClose()',\n destroyOnClose: true\n }, {\n quickview: parentScope\n });\n modalService.getModal(parentScope.modalId || 'modalQuickView').then(function (modal) {\n modal.modalScope.open();\n });\n };\n service.getUrl = function (productId, colorId, typeView, landingId, hideShipping, showLeadButton, blockId, showVideo, sizeId, descriptionMode, cartAddType) {\n return 'product/productquickview' + '?productId=' + productId + (colorId != null ? '&color=' + colorId : '') + (sizeId != null ? '&size=' + sizeId : '') + (typeView != null ? '&from=' + typeView : '') + (landingId != null ? '&landingId=' + landingId : '') + (hideShipping != null ? '&hideShipping=' + hideShipping : '') + (showLeadButton != null ? '&showLeadButton=' + showLeadButton : '') + (blockId != null ? '&blockId=' + blockId : '') + (showVideo != null ? '&showVideo=' + showVideo : '') + (descriptionMode != null ? '&descriptionMode=' + descriptionMode : '') + (cartAddType != null ? '&cartAddType=' + cartAddType : '') + '&rnd=' + Math.random();\n };\n service.dialogOpen = function (itemData, productId, colorId, typeView, modalClass, landingId, hideShipping, showLeadButton, blockId, showVideo, modalId, openFromHash, sizeId, onOpenModalCallback, spyAddress, descriptionMode, cartAddType) {\n dialogIdOpen = modalId;\n const data = {};\n data.url = service.getUrl(productId, colorId, typeView, landingId, hideShipping, showLeadButton, blockId, showVideo, sizeId, descriptionMode, cartAddType);\n data.itemData = itemData;\n data.productId = productId;\n data.next = service.next;\n data.prev = service.prev;\n data.modalClass = modalClass;\n data.typeView = typeView;\n data.landingId = landingId;\n data.hideShipping = hideShipping;\n data.showLeadButton = showLeadButton;\n data.blockId = blockId;\n data.showVideo = showVideo;\n data.modalId = modalId;\n data.onOpenModalCallback = onOpenModalCallback;\n data.spyAddress = spyAddress;\n data.descriptionMode = descriptionMode;\n data.onModalClose = () => {\n data.url = null;\n modalService.destroy('modalProductRotate');\n $location.search({\n color: undefined,\n size: undefined\n });\n //remove hash\n history.pushState(null, document.title, location.pathname + location.search);\n dialogIdOpen = null;\n };\n data.cartAddType = cartAddType;\n var hash = $location.hash();\n var splitedHash = hash.split('?');\n var originalHash = splitedHash[0];\n if (!modalService.hasModal(modalId)) {\n service.dialogRender(data);\n } else {\n modalService.open(modalId);\n }\n if (modalId != null) {\n $timeout(() => $location.hash(modalId), 100);\n }\n service.removeNeedOpenDialog();\n };\n service.dialogClose = function (modalQuickViewId) {\n modalService.close(modalQuickViewId || 'modalQuickView');\n dialogIdOpen = null;\n };\n service.goTo = function (quickview, index) {\n if (quickview.itemData.siblings[index] != null) {\n quickview.productId = quickview.itemData.siblings[index];\n if (quickview.itemData.modalIds[quickview.productId] != null) {\n $location.hash(quickview.itemData.modalIds[quickview.productId]);\n }\n $location.search({\n color: undefined,\n size: undefined\n });\n quickview.url = service.getUrl(quickview.productId, null, quickview.typeView, quickview.landingId, quickview.hideShipping, quickview.showLeadButton, quickview.blockId, quickview.showVideo, null, quickview.descriptionMode, quickview.cartAddType);\n }\n };\n service.prev = function (quickview) {\n modalService.destroy('modalProductRotate');\n service.goTo(quickview, quickview.itemData.siblings.indexOf(quickview.productId) - 1);\n };\n service.next = function (quickview) {\n modalService.destroy('modalProductRotate');\n service.goTo(quickview, quickview.itemData.siblings.indexOf(quickview.productId) + 1);\n };\n service.dialogIsExist = function (modalQuickViewId) {\n return modalService.hasModal(modalQuickViewId) || needOpenDialogId != null;\n };\n service.checkDialogOpenById = function (modalQuickViewId) {\n return dialogIdOpen === modalQuickViewId;\n };\n service.needOpenDialog = function (modalQuickViewId) {\n needOpenDialogId = modalQuickViewId;\n };\n service.removeNeedOpenDialog = function () {\n needOpenDialogId = null;\n };\n}\nquickviewService.$inject = [\"modalService\", \"$location\", \"$timeout\", \"urlHelper\"];\nexport default quickviewService;", "\uFEFFimport './styles/price-amount-list.scss';\n\nimport PriceAmountListCtrl from './controllers/priceAmountListController.js';\nimport { priceAmountListDirective } from './directives/priceAmountListDirectives.js';\n\nconst moduleName = 'priceAmountList';\n\nangular.module(moduleName, []).controller('PriceAmountListCtrl', PriceAmountListCtrl).directive('priceAmountList', priceAmountListDirective);\n\nexport default moduleName;\n", "function PriceAmountListCtrl($http, $q) {\n let ctrl = this;\n ctrl.$postLink = function () {\n ctrl.getItems(ctrl.productId, ctrl.startOfferId);\n ctrl.initFn({\n priceAmountList: ctrl\n });\n };\n ctrl.getItems = function (productId, offerId) {\n let defer = $q.defer();\n if (productId == null || offerId == null) {\n defer.resolve();\n return defer.promise;\n }\n $http.get('productExt/getPriceAmountList', {\n params: {\n productId: productId,\n offerId: offerId\n }\n }).then(function (response) {\n ctrl.items = response.data != null ? response.data.obj : null;\n defer.resolve(ctrl.items);\n });\n return defer.promise;\n };\n ctrl.update = function () {\n return ctrl.getItems(ctrl.productId, ctrl.offerId).then(function (data) {\n return data;\n });\n };\n}\nPriceAmountListCtrl.$inject = [\"$http\", \"$q\"];\nexport default PriceAmountListCtrl;", "import priceAmountListTemplate from '../templates/priceAmountList.html';\n/* @ngInject */\nfunction priceAmountListDirective() {\n return {\n restrict: 'A',\n scope: {\n productId: '=',\n offerId: '=',\n startOfferId: '=',\n initFn: '&'\n },\n controller: 'PriceAmountListCtrl',\n controllerAs: 'priceAmountList',\n bindToController: true,\n replace: true,\n templateUrl: priceAmountListTemplate\n };\n}\nexport { priceAmountListDirective };", "\uFEFFimport ProductsCarouselCtrl from './controllers/productsCarouselController.js';\nimport { productsCarouselDirective } from './directives/productsCarouselDirectives.js';\nimport productsCarouselService from './services/productsCarouselService.js';\n\nconst moduleName = 'productsCarousel';\n\nangular\n .module(moduleName, [])\n .directive('productsCarousel', productsCarouselDirective)\n .controller('ProductsCarouselCtrl', ProductsCarouselCtrl)\n .service('productsCarouselService', productsCarouselService);\n\nexport default moduleName;\n", "function ProductsCarouselCtrl($scope, $compile, $element, productsCarouselService) {\n var ctrl = this;\n ctrl.$onInit = function () {\n ctrl.update();\n };\n ctrl.generate = function (ids, title, type, visibleItems, carouselResponsive) {\n productsCarouselService.getData(ids, title, type, visibleItems, carouselResponsive).then(function (result) {\n $element.empty();\n $element.append(result);\n $compile($element.contents())($scope);\n });\n };\n ctrl.update = function () {\n ctrl.generate(ctrl.ids, ctrl.title, ctrl.type, ctrl.visibleItems, ctrl.carouselResponsive);\n };\n}\nProductsCarouselCtrl.$inject = [\"$scope\", \"$compile\", \"$element\", \"productsCarouselService\"];\nexport default ProductsCarouselCtrl;", "\uFEFFfunction productsCarouselDirective() {\n return {\n restrict: 'A',\n scope: {\n ids: '@',\n title: '@',\n type: '@',\n visibleItems: '@',\n carouselResponsive: ' 0 ? $parse(attrs.offerId)(scope) : null;\n\n //productViewItemCtrl.getOffersProduct(productViewItemCtrl.productId);\n\n productViewService.addCallback('setView', function (viewMode) {\n productViewItemCtrl.viewName = viewMode.viewName;\n setTimeout(function () {\n var colorsViewerCarousel = productViewItemCtrl.getControl('colorsViewerCarousel');\n if (colorsViewerCarousel != null) {\n colorsViewerCarousel.update();\n }\n scope.$digest();\n }, 50);\n });\n element[0].addEventListener('mouseenter', function () {\n if (timerHover != null) {\n clearTimeout(timerHover);\n }\n timerHover = setTimeout(async function () {\n await productViewItemCtrl.enter();\n productViewItemCtrl.isLoad = true;\n scope.$digest();\n }, 100);\n });\n element[0].addEventListener('mouseleave', function () {\n clearTimeout(timerHover);\n productViewItemCtrl.leave();\n scope.$digest();\n });\n element[0].addEventListener('touchstart', async function () {\n //await productViewItemCtrl.enter();\n productViewItemCtrl.isLoad = true;\n scope.$digest();\n }, {\n passive: true\n });\n\n //windowService.addCallback('touchstart', function (eventObj) {\n // var isClickedMe = domService.closest(eventObj.event.target, element[0]) != null;\n\n // if (isClickedMe === false) {\n // productViewItemCtrl.leave();\n\n // scope.$digest();\n // }\n //});\n }\n };\n}\nproductViewItemDirective.$inject = [\"productViewService\", \"domService\", \"windowService\", \"$parse\"];\nfunction productViewCarouselPhotosDirective() {\n return {\n require: ['^productViewCarouselPhotos', '^productViewItem'],\n restrict: 'A',\n scope: {\n photoHeight: '@',\n photoWidth: '@',\n changePhoto: '&'\n },\n replace: true,\n templateUrl: photosTemplate,\n controller: 'ProductViewCarouselPhotosCtrl',\n controllerAs: 'photosCarousel',\n bindToController: true,\n link: function (scope, element, attrs, ctrl) {\n var carouselPhotosCtrl = ctrl[0],\n productViewItemCtrl = ctrl[1];\n carouselPhotosCtrl.parentScope = productViewItemCtrl;\n productViewItemCtrl.addControl('photosCarousel', carouselPhotosCtrl);\n }\n };\n}\n\n/* @ngInject */\nfunction productViewChangeModeDirective(productViewService, viewList) {\n return {\n restrict: 'A',\n scope: true,\n controller: 'ProductViewChangeModeCtrl',\n controllerAs: 'changeMode',\n bindToController: true,\n link: function (scope, element, attrs, ctrl) {\n ctrl.name = attrs.name;\n ctrl.currentViewList = viewList[attrs.viewListName || 'desktop'];\n ctrl.isMobile = attrs.isMobile === 'true';\n ctrl.isReadyViewMode = false;\n ctrl.defaultViewMode = attrs.defaultViewMode;\n if (ctrl.isMobile === true) {\n ctrl.current = productViewService.getViewFromCookie('mobile_viewmode', ctrl.currentViewList, ctrl.defaultViewMode);\n } else {\n ctrl.current = attrs.viewMode;\n }\n ctrl.isReadyViewMode = true;\n }\n };\n}\nproductViewChangeModeDirective.$inject = [\"productViewService\", \"viewList\"];\nfunction productViewModeDirective() {\n return {\n restrict: 'A',\n scope: true,\n require: {\n productViewMode: 'productViewMode'\n },\n controller: 'ProductViewModeCtrl',\n controllerAs: 'productViewMode',\n bindToController: true\n };\n}\nfunction productViewImageListDirective($q) {\n return {\n restrict: 'A',\n scope: true,\n require: {\n productViewMode: '?^productViewMode',\n productViewImageList: 'productViewImageList',\n productViewItem: '^^productViewItem'\n },\n controller: 'ProductViewImageListCtrl',\n controllerAs: 'productViewImageList',\n bindToController: true,\n link: function (scope, element, attrs, ctrls) {\n var productViewImageList = ctrls.productViewImageList,\n timerHover;\n element[0].addEventListener('mouseenter', function () {\n if (timerHover != null) {\n clearTimeout(timerHover);\n }\n timerHover = setTimeout(function () {\n $q.all(productViewImageList.insertHtml(), productViewImageList.getPhotos());\n }, 100);\n });\n element[0].addEventListener('mouseleave', function () {\n clearTimeout(timerHover);\n });\n element[0].addEventListener('touchstart', function () {\n $q.all(productViewImageList.insertHtml(), productViewImageList.getPhotos());\n }, {\n passive: true\n });\n }\n };\n}\nproductViewImageListDirective.$inject = [\"$q\"];\nfunction productViewImageDirective(productViewService) {\n return {\n restrict: 'A',\n scope: true,\n require: {\n productViewMode: '?^^productViewMode',\n productViewImageList: '?^productViewImageList',\n productViewImage: 'productViewImage'\n },\n // require: ['?^^productViewMode',\n // '^^productViewImageList',\n // 'productViewImage'],\n controller: 'ProductViewImageCtrl',\n controllerAs: 'productViewImage',\n bindToController: true\n };\n}\nproductViewImageDirective.$inject = [\"productViewService\"];\nfunction productViewScrollPhotosDirective() {\n return {\n restrict: 'A',\n scope: true,\n require: {\n productViewItem: '^productViewItem'\n },\n controller: ['$element', function ($element) {\n const ctrl = this;\n ctrl.$onInit = function () {\n ctrl.productViewItem.addControl('productViewScrollPhotos', ctrl);\n };\n ctrl.scrollToStart = function () {\n $element[0].scrollTo(0, 0);\n };\n }],\n controllerAs: 'productViewScrollPhotos',\n bindToController: true\n };\n}\nexport { productViewItemDirective, productViewCarouselPhotosDirective, productViewChangeModeDirective, productViewModeDirective, productViewScrollPhotosDirective, productViewImageListDirective, productViewImageDirective };", "\uFEFFfunction ProductViewCarouselPhotosCtrl() {\n var ctrl = this;\n\n ctrl.carouselInit = function (carousel) {\n ctrl.carousel = carousel;\n };\n}\n\nexport default ProductViewCarouselPhotosCtrl;\n", "function ProductViewChangeModeCtrl(productViewService, viewList) {\n var ctrl = this;\n ctrl.setView = function (name, view, isMobile) {\n ctrl.current = view;\n productViewService.setView(name, view, ctrl.currentViewList, isMobile);\n };\n ctrl.toggle = function (name) {\n var index = ctrl.currentViewList.indexOf(ctrl.current);\n var nextViewIndex = index !== -1 ? index + 1 : 0;\n ctrl.setView(name, ctrl.currentViewList[nextViewIndex < ctrl.currentViewList.length ? nextViewIndex : 0], ctrl.currentViewList, ctrl.isMobile);\n };\n}\nProductViewChangeModeCtrl.$inject = [\"productViewService\", \"viewList\"];\nexport default ProductViewChangeModeCtrl;", "import { productViewItemControls } from '../productViewItem.controls.js';\n\n/*@ngInject*/\nfunction ProductViewItemCtrl($document, $q, $timeout, productViewService, $translate, $scope, $parse, urlHelper, $attrs) {\n var ctrl = this,\n controls = {},\n needCarouselUpdate = false,\n requestGetPhotosInPending = false,\n isPhotosStorageMutation = false,\n photosStorage;\n var isMobile = $document[0].documentElement.classList.contains('mobile-version');\n const styles = new Map();\n ctrl.$onInit = function () {\n ctrl.photosVisible = false;\n ctrl.photos = [];\n ctrl.picture = {};\n ctrl.promisesGetPhotos = [];\n ctrl.colorSelected = null;\n ctrl.productId = $parse($attrs.productId)($scope);\n ctrl.offer = $parse($attrs.offer)($scope);\n };\n ctrl.getOffersProduct = function (productId) {\n return productViewService.getOfferId(productId).then(function (result) {\n if (result != null) {\n return result.Offers;\n }\n });\n };\n ctrl.getPhotos = function (productId) {\n var defer = $q.defer(),\n promise;\n if (requestGetPhotosInPending === false && (photosStorage == null || needCarouselUpdate === true)) {\n requestGetPhotosInPending = true;\n promise = productViewService.getPhotos(ctrl.productId || productId).then(function (photos) {\n isPhotosStorageMutation = true;\n for (var i = 0, len = ctrl.promisesGetPhotos.length; i < len; i++) {\n ctrl.promisesGetPhotos[i].resolve(photos);\n }\n ctrl.promisesGetPhotos.length = 0;\n requestGetPhotosInPending = false;\n return photosStorage = photos;\n });\n } else if (requestGetPhotosInPending === true) {\n promise = defer.promise;\n ctrl.promisesGetPhotos.push(defer);\n } else {\n promise = defer.promise;\n defer.resolve(photosStorage);\n }\n ctrl.gotPhotos = true;\n return promise;\n };\n ctrl.numberals = function (num) {\n if (num <= 0) return ctrl.textNumberals = num + ' ' + $translate.instant('Js.ProductView.Photos0');\n num = num % 100;\n var nums = num % 10;\n if (num > 10 && num < 20) return ctrl.textNumberals = num + ' ' + $translate.instant('Js.ProductView.Photos5');\n if (nums > 1 && nums < 5) return ctrl.textNumberals = num + ' ' + $translate.instant('Js.ProductView.Photos2');\n return nums === 1 ? ctrl.textNumberals = num + ' ' + $translate.instant('Js.ProductView.Photos1') : ctrl.textNumberals = num + ' ' + $translate.instant('Js.ProductView.Photos5');\n };\n ctrl.fill = function (photos) {\n if (ctrl.getControl('colorsViewer') != null) {\n ctrl.photos = ctrl.filterPhotos(photosStorage == null && isPhotosStorageMutation === false ? ctrl.getPhotos() : photos, ctrl.getControl('colorsViewer').colorSelected.ColorId, ctrl.onlyPhotoWithColor);\n } else {\n ctrl.photos = photos;\n }\n if (ctrl.photos.length === 0) {\n ctrl.photos.length = 0;\n ctrl.photos.push.apply(ctrl.photos, ctrl.getMainPhoto(photos));\n }\n if (ctrl.maxPhotoView != null) {\n ctrl.photos = ctrl.photos.slice(0, ctrl.maxPhotoView);\n }\n ctrl.numberals(ctrl.photos.length);\n return photos;\n };\n ctrl.process = function (productId) {\n return ctrl.getPhotos(productId).then(function (photos) {\n ctrl.fill(photos);\n $timeout(function () {\n ctrl.carouselInit = true;\n if (needCarouselUpdate === true && ctrl.getControl('photosCarousel') != null && ctrl.getControl('photosCarousel').carousel != null) {\n ctrl.getControl('photosCarousel').carousel.update();\n needCarouselUpdate = false;\n }\n }, 0);\n return photos;\n });\n };\n ctrl.clearPhotos = function () {\n photosStorage = null;\n needCarouselUpdate = true;\n };\n ctrl.enter = function () {\n if (ctrl.photosVisible === true) {\n return;\n }\n ctrl.photosVisible = true;\n return ctrl.process(ctrl.productId);\n };\n ctrl.leave = function () {\n ctrl.photosVisible = false;\n ctrl.carouselInit = false;\n };\n ctrl.changePhoto = function (photo) {\n ctrl.picture = photo;\n };\n ctrl.initColors = function (colorsViewer) {\n ctrl.addControl('colorsViewer', colorsViewer);\n if (colorsViewer.changeStartSelectedColor != null) {\n setTimeout(function () {\n colorsViewer.selectColorById(colorsViewer.changeStartSelectedColor);\n }, 500);\n }\n };\n ctrl.getSelectedColorId = function () {\n var colorsViewer = ctrl.getControl('colorsViewer'),\n colorId;\n if (colorsViewer != null && colorsViewer.colorSelected != null && colorsViewer.getDirtyState() === true) {\n colorId = colorsViewer.colorSelected.ColorId;\n }\n return colorId;\n };\n ctrl.scrollToStartImages = function () {\n let photosScrollContent = ctrl.getControl('productViewScrollPhotos');\n if (photosScrollContent != null) {\n return $timeout(() => photosScrollContent.scrollToStart(), 100);\n } else {\n return $q.resolve();\n }\n };\n ctrl.initColorsCarousel = function (carousel) {\n ctrl.addControl('colorsViewerCarousel', carousel);\n };\n ctrl.changeColor = function (color) {\n ctrl.setStateLoading(true);\n ctrl.getOffersProduct(ctrl.productId).then(function (result) {\n ctrl.productOffers = result;\n if (ctrl.productOffers != null && ctrl.productOffers.length > 0) {\n ctrl.selectedProductOffer = ctrl.productOffers.filter(function (offer) {\n return offer.Color.ColorId === color.ColorId;\n });\n if (ctrl.selectedProductOffer != null && ctrl.selectedProductOffer.length > 0) {\n var o = null;\n for (var i = 0; i < ctrl.selectedProductOffer.length; i++) {\n if (ctrl.selectedProductOffer[i].Amount > 0) {\n o = ctrl.selectedProductOffer[i];\n break;\n }\n }\n ctrl.offer = o == null ? ctrl.selectedProductOffer[0] : o;\n }\n }\n var defaultPhoto;\n if (photosStorage == null && isPhotosStorageMutation === false) {\n ctrl.getPhotos().then(function (result) {\n ctrl.photos = ctrl.filterPhotos(result, color.ColorId, ctrl.getControl('colorsViewer') != null ? ctrl.onlyPhotoWithColor : false);\n defaultPhoto = ctrl.getMainPhoto(ctrl.photos);\n //if (ctrl.photos.length === 0) {\n // ctrl.photos = defaultPhoto;\n //}\n //if (ctrl.maxPhotoView != null) {\n // ctrl.photos = ctrl.photos.slice(0, ctrl.maxPhotoView);\n //}\n ctrl.setColor(defaultPhoto);\n });\n } else {\n defaultPhoto = ctrl.getMainPhoto(photosStorage != null && photosStorage.length !== 0 ? photosStorage : ctrl.photos);\n ctrl.photos = ctrl.filterPhotos(photosStorage, color.ColorId, ctrl.getControl('colorsViewer') != null ? ctrl.onlyPhotoWithColor : false);\n ctrl.setColor(defaultPhoto);\n }\n ctrl.getControl(productViewItemControls.productListCtrl)?.filterPhotos({\n colorId: color.ColorId,\n onlyColorPhoto: ctrl.getControl('colorsViewer') != null ? ctrl.onlyPhotoWithColor : false\n });\n if (ctrl.onChangeColor != null) {\n $parse(ctrl.onChangeColor)($scope);\n }\n if (ctrl.photos.length === 0) {\n ctrl.photos.length = 0;\n ctrl.photos.push.apply(ctrl.photos, defaultPhoto);\n //ctrl.photos = ctrl.photos.concat(defaultPhoto);\n }\n if (ctrl.maxPhotoView != null) {\n ctrl.photos = ctrl.photos.slice(0, ctrl.maxPhotoView);\n }\n return ctrl.scrollToStartImages();\n }).catch(function (error) {\n console.error(error);\n }).finally(() => ctrl.setStateLoading(false));\n };\n ctrl.setColor = function (defaultPhoto) {\n ctrl.picture = ctrl.photos.length === 0 && defaultPhoto != null ? defaultPhoto[0] : ctrl.photos[0];\n ctrl.numberals(ctrl.photos.length);\n var photosCarousel = ctrl.getControl('photosCarousel');\n if (photosCarousel != null && photosCarousel.carousel != null) {\n $timeout(function () {\n photosCarousel.carousel.options.indexActive = 0;\n photosCarousel.carousel.update();\n });\n }\n if (ctrl.photoViewer != null) {\n ctrl.photoViewer.reinit();\n }\n };\n ctrl.addControl = function (name, scope) {\n controls[name] = scope;\n };\n ctrl.getControl = function (name) {\n return controls[name];\n };\n ctrl.filterPhotos = function (photos, colorId, onlyColorPhoto) {\n return productViewService.filterPhotos(photos, colorId, onlyColorPhoto);\n };\n ctrl.getUrl = function (url) {\n var result = url,\n colorId = ctrl.getSelectedColorId();\n if (colorId != null) {\n result = urlHelper.updateQueryStringParameter(result, 'color', colorId);\n }\n return result;\n };\n ctrl.addPhotoViewer = function (photoViewer) {\n ctrl.photoViewer = photoViewer;\n };\n ctrl.getPictureByViewMode = function (photosItem, lazyLoadMode, sourceOnlyParameters, photoSize) {\n if (lazyLoadMode === 'Carousel' && ctrl.isCarouselImgVisible !== true || lazyLoadMode === 'Default' && ctrl.isImgVisible !== true) {\n return null;\n }\n const picture = sourceOnlyParameters !== true && ctrl.picture != null && Object.keys(ctrl.picture).length > 0 ? ctrl.picture : photosItem != null ? Array.isArray(photosItem) ? photosItem[0] : photosItem : null;\n let size;\n if (picture == null) {\n return null;\n }\n const photoSizeProp = photoSize != null ? 'Path' + photoSize : null;\n if (ctrl.productViewMode != null) {\n if (['single'].includes(ctrl.productViewMode.viewName)) {\n size = 'PathBig';\n } else {\n size = photoSizeProp ?? (ctrl.productViewMode.isMobile || lazyLoadMode === 'middle' ? 'PathMiddle' : 'PathSmall');\n }\n } else {\n size = photoSizeProp ?? (isMobile || lazyLoadMode === 'middle' ? 'PathMiddle' : 'PathSmall');\n }\n return ctrl.getPictureBySize(size, picture);\n };\n ctrl.getStylePropByViewMode = function (prop, defaultValue, {\n viewName,\n value\n }) {\n const currentViewName = ctrl.productViewMode?.viewName || 'tile';\n let stylesItem = styles.get(prop) || {};\n stylesItem[prop] = viewName == currentViewName ? value : defaultValue;\n styles.set(prop, stylesItem);\n return stylesItem;\n };\n ctrl.lazyLoadImgInCarousel = function () {\n ctrl.isCarouselImgVisible = true;\n };\n ctrl.lazyLoadImg = function () {\n ctrl.isImgVisible = true;\n };\n ctrl.getPictureBySize = function (size, photos) {\n return photos[size];\n };\n ctrl.getMainPhoto = function (photos) {\n return photos.filter(function (photo) {\n return photo.Main === true;\n });\n };\n ctrl.setStateLoading = function (isLoading) {\n ctrl.isLoading = isLoading;\n };\n ctrl.getStateLoading = function () {\n return ctrl.isLoading;\n };\n}\nProductViewItemCtrl.$inject = [\"$document\", \"$q\", \"$timeout\", \"productViewService\", \"$translate\", \"$scope\", \"$parse\", \"urlHelper\", \"$attrs\"];\nexport default ProductViewItemCtrl;", "\uFEFFexport const productViewItemControls = {\n productListCtrl: 'productListCtrl',\n colorsViewer: 'colorsViewer',\n photosCarousel: 'photosCarousel',\n productViewScrollPhotos: 'productViewScrollPhotos',\n colorsViewerCarousel: 'colorsViewerCarousel',\n};\n", "function ProductViewModeCtrl($attrs, $element, productViewService, viewList, viewPrefix, $parse, $scope) {\n const ctrl = this;\n ctrl.$onInit = function () {\n ctrl.isMobile = $attrs.isMobile === 'true';\n ctrl.currentViewList = viewList[$attrs.viewListName || 'desktop'];\n ctrl.currentViewPrefix = viewPrefix[$attrs.viewListName || 'desktop'];\n ctrl.defaultViewMode = $attrs.defaultViewMode;\n ctrl.photoHeightByViewMode = $attrs.photoHeightByViewMode != null ? $parse($attrs.photoHeightByViewMode)($scope) : null;\n ctrl.photoHeightByViewModeDefault = $attrs.photoHeightByViewModeDefault != null ? $parse($attrs.photoHeightByViewModeDefault)($scope) : null;\n if (ctrl.isMobile === true) {\n ctrl.viewName = productViewService.getViewFromCookie('mobile_viewmode', ctrl.currentViewList, ctrl.defaultViewMode);\n $element[0].classList.add('products-view-' + ctrl.currentViewPrefix + ctrl.viewName);\n } else {\n ctrl.viewName = $attrs.current;\n }\n setPhotoSizeByViewMode();\n productViewService.addCallback('setView', onChangeMode);\n function onChangeMode(view) {\n ctrl.viewName = view.viewName;\n view.viewList.forEach(function (item) {\n $element[0].classList.remove('products-view-' + ctrl.currentViewPrefix + item);\n });\n requestAnimationFrame(() => {\n $element[0].classList.add('products-view-' + ctrl.currentViewPrefix + view.viewName);\n setPhotoSizeByViewMode();\n });\n }\n ctrl.getCurrentBlockPhotoHeight = () => {\n return ctrl.photoHeightByViewMode != null && ctrl.photoHeightByViewMode.viewName === ctrl.viewName ? ctrl.photoHeightByViewMode.value : ctrl.photoHeightByViewModeDefault;\n };\n function setPhotoSizeByViewMode() {\n if (ctrl.photoHeightByViewMode != null && ctrl.photoHeightByViewMode.viewName === ctrl.viewName) {\n $element[0].style.setProperty('--product-view-photo-size', ctrl.photoHeightByViewMode.value);\n return;\n }\n if (ctrl.photoHeightByViewModeDefault != null) {\n $element[0].style.setProperty('--product-view-photo-size', ctrl.photoHeightByViewModeDefault);\n return;\n }\n }\n };\n}\nProductViewModeCtrl.$inject = [\"$attrs\", \"$element\", \"productViewService\", \"viewList\", \"viewPrefix\", \"$parse\", \"$scope\"];\nexport default ProductViewModeCtrl;", "import { productViewItemControls } from '../productViewItem.controls.js';\nexport const productViewImageListMapperRequest = ({\n productId,\n viewMode,\n blockProductPhotoHeight,\n productImageType,\n photoWidth,\n photoHeight,\n isProductPhotoLazy,\n limitPhotoCount,\n colorInitialId,\n renderedPhotoId\n}) => {\n return {\n productId,\n productViewMode: viewMode,\n blockProductPhotoHeight,\n productImageType,\n photoWidth,\n photoHeight,\n isProductPhotoLazy,\n limitPhotoCount: limitPhotoCount - 1,\n colorId: colorInitialId,\n RenderedPhotoId: renderedPhotoId\n };\n};\n\n/* @ngInject */\nfunction ProductViewImageListCtrl($element, $attrs, $parse, $scope, $http, $q, productViewService, $compile) {\n const ctrl = this;\n ctrl.$onInit = function () {\n ctrl.productId = $attrs.productId != null ? $parse($attrs.productId)($scope) : null;\n ctrl.viewMode = $attrs.viewMode != null ? $parse($attrs.viewMode)($scope) : null;\n ctrl.blockProductPhotoHeight = $attrs.blockProductPhotoHeight != null ? $parse($attrs.blockProductPhotoHeight)($scope) : null;\n ctrl.productImageType = $attrs.productImageType != null ? $parse($attrs.productImageType)($scope) : null;\n ctrl.photoWidth = $attrs.photoWidth != null ? $parse($attrs.photoWidth)($scope) : null;\n ctrl.photoHeight = $attrs.photoHeight != null ? $parse($attrs.photoHeight)($scope) : null;\n ctrl.isProductPhotoLazy = $attrs.isProductPhotoLazy != null ? $parse($attrs.isProductPhotoLazy)($scope) : null;\n ctrl.limitPhotoCount = $attrs.limitPhotoCount != null ? $parse($attrs.limitPhotoCount)($scope) : 5;\n ctrl.colorInitialId = $parse($attrs.colorInitialId)($scope);\n ctrl.renderedPhotoId = $parse($attrs.renderedPhotoId)($scope);\n ctrl.isLoadedHtml = false;\n ctrl.photosStorage = null;\n ctrl.currentPhotos = [];\n ctrl.imageCtrls = [];\n ctrl.initial = true;\n ctrl.productViewItem.addControl(productViewItemControls.productListCtrl, ctrl);\n ctrl.currentColorId = ctrl.colorInitialId;\n productViewService.addCallback('setView', function (viewObj) {\n ctrl.viewMode = viewObj.viewName;\n ctrl.filterPhotos({\n isVisible: ctrl.isVisible,\n colorId: ctrl.currentColorId\n });\n });\n };\n ctrl.addImageCtrl = function (ctrlChild) {\n if (ctrl.imageCtrls.includes(ctrlChild)) return;\n return ctrl.imageCtrls.push(ctrlChild);\n };\n ctrl.removeImageCtrl = function (id) {\n ctrl.imageCtrls.splice(id, 1);\n };\n ctrl.updatePhotos = function () {\n if (ctrl.currentPhotos.length === 0) return;\n ctrl.imageCtrls.forEach((imageCtrl, i) => {\n if (ctrl.checkAvailablePhoto(i)) {\n imageCtrl.changeSrc(ctrl.currentPhotos[i], ctrl.viewMode);\n } else {\n imageCtrl.hiddenImage();\n }\n });\n };\n ctrl.checkAvailablePhoto = function (index) {\n return index >= 0 && index < Math.min(ctrl.limitPhotoCount, ctrl.currentPhotos.length);\n };\n ctrl.getPhoto = function (photoIndex) {\n return ctrl.currentPhotos[photoIndex];\n };\n ctrl.getPhotos = function () {\n var defer = $q.defer();\n if (ctrl.photosStorage != null && ctrl.photosStorage.length) return defer.resolve(ctrl.photosStorage);\n return productViewService.getPhotos(ctrl.productId).then(function (photos) {\n ctrl.photosStorage = photos;\n return photos;\n });\n };\n ctrl.filterPhotos = function ({\n isVisible,\n colorId,\n onlyColorPhoto\n }) {\n ctrl.isVisible = typeof isVisible === 'undefined' ? ctrl.isVisible : isVisible;\n ctrl.currentColorId = colorId;\n if (ctrl.isVisible === false) return;\n if (ctrl.photosStorage) {\n ctrl.currentPhotos = productViewService.filterPhotos(ctrl.photosStorage, colorId, onlyColorPhoto).slice(0, ctrl.limitPhotoCount);\n ctrl.updatePhotos();\n } else {\n ctrl.getPhotos().then(photos => {\n ctrl.currentPhotos = productViewService.filterPhotos(photos, colorId, onlyColorPhoto).slice(0, ctrl.limitPhotoCount);\n ctrl.updatePhotos();\n });\n }\n };\n productViewService.addCallback('setView', () => {\n requestAnimationFrame(() => {\n $element[0].scrollLeft = 0;\n });\n });\n ctrl.getPhotoHtml = function (data) {\n if (data.productId == null) return;\n return $http.post('/mobile/product/ProductViewPhoto', data).then(function (response) {\n return response.data;\n });\n };\n ctrl.insertHtml = function (replaceInner = false) {\n var defer = $q.defer();\n if (ctrl.isLoadedHtml) return defer.promise;\n const data = {\n productId: ctrl.productId,\n productImageType: ctrl.productImageType,\n photoWidth: ctrl.photoWidth,\n photoHeight: ctrl.photoHeight,\n isProductPhotoLazy: ctrl.isProductPhotoLazy,\n limitPhotoCount: ctrl.limitPhotoCount,\n colorInitialId: ctrl.colorInitialId,\n renderedPhotoId: ctrl.renderedPhotoId\n };\n if (ctrl.productViewMode != null) {\n data.viewMode = ctrl.productViewMode.viewName;\n data.blockProductPhotoHeight = ctrl.productViewMode.getCurrentBlockPhotoHeight();\n } else {\n data.viewMode = ctrl.viewMode;\n data.blockProductPhotoHeight = ctrl.blockProductPhotoHeight;\n }\n data.blockProductPhotoHeight = parseInt(data.blockProductPhotoHeight);\n return ctrl.getPhotoHtml(productViewImageListMapperRequest(data)).then(html => {\n if (html == null) return;\n ctrl.isLoadedHtml = true;\n $element.find('.js-skeleton-photos').remove();\n $element.append(html);\n $compile($element.children('.mobile-product-view-item-image-inner').slice(1))($scope.$new());\n });\n };\n}\nProductViewImageListCtrl.$inject = [\"$element\", \"$attrs\", \"$parse\", \"$scope\", \"$http\", \"$q\", \"productViewService\", \"$compile\"];\nexport default ProductViewImageListCtrl;", "export const PRODUCT_VIEW_IMAGE_CONTAINER_CLASS = 'js-product-view-image-container';\n\n/* @ngInject */\nfunction ProductViewImageCtrl($element, $attrs, $parse, $scope, $document) {\n const ctrl = this;\n const isMobile = $document[0].documentElement.classList.contains('mobile-version');\n ctrl.$onInit = function () {\n ctrl.photoSize = $attrs.photoSize != null ? $parse($attrs.photoSize)($scope) : null;\n ctrl.startPhotoJson = $attrs.startPhotoJson != null ? $parse($attrs.startPhotoJson)($scope) : null;\n ctrl.containerImage = $element[0].closest(`.${PRODUCT_VIEW_IMAGE_CONTAINER_CLASS}`);\n ctrl.productViewImageList?.addImageCtrl(ctrl);\n };\n ctrl.getPictureBySize = (size, photos) => {\n return photos[size];\n };\n ctrl.viewModeToPhotoSizeMapper = (viewMode, photoSizeProp, isMobile) => {\n switch (viewMode) {\n case 'single':\n return 'PathBig';\n default:\n return photoSizeProp ?? (isMobile ? 'PathMiddle' : 'PathSmall');\n }\n };\n ctrl.getPhotoSrc = (photo, viewMode) => {\n const picture = photo ?? (Array.isArray(ctrl.startPhotoJson) ? ctrl.startPhotoJson[0] : ctrl.startPhotoJson);\n let size;\n if (picture == null) {\n return null;\n }\n const photoSizeProp = ctrl.photoSize != null ? 'Path' + ctrl.photoSize : null;\n size = ctrl.productViewMode != null ? ctrl.viewModeToPhotoSizeMapper(viewMode ?? ctrl.productViewMode.viewName, photoSizeProp, ctrl.productViewMode.isMobile) : ctrl.viewModeToPhotoSizeMapper(null, photoSizeProp, isMobile);\n return ctrl.getPictureBySize(size, picture);\n };\n ctrl.hiddenImage = () => {\n ctrl.containerImage.classList.add('product-view-image-container--hidden');\n };\n ctrl.changeSrc = (photo, viewObj) => {\n ctrl.containerImage.classList.remove('product-view-image-container--hidden');\n ctrl.containerImage.classList.add('product-view-image-container--block');\n const newSrc = ctrl.getPhotoSrc(photo, viewObj?.viewMode);\n if (newSrc === $element[0].src) return;\n $element[0].src = newSrc;\n };\n}\nProductViewImageCtrl.$inject = [\"$element\", \"$attrs\", \"$parse\", \"$scope\", \"$document\"];\nexport default ProductViewImageCtrl;", "\uFEFFimport './styles/subscribe.scss';\nimport SubscribeCtrl from './controllers/subscribeController.js';\n\nconst moduleName = 'subscribe';\n\nangular.module(moduleName, []).controller('SubscribeCtrl', SubscribeCtrl);\n\nexport default moduleName;\n", "import { PubSub } from '../../../_common/PubSub/PubSub.js';\n\n/* @ngInject */\nfunction SubscribeCtrl($http, toaster, $translate) {\n var ctrl = this;\n ctrl.subscribeSend = function () {\n $http.post('newssubscribe', {\n email: ctrl.subscribeEmail,\n agree: ctrl.agree,\n rnd: Math.random()\n }).then(function (response) {\n var status = response.data.status;\n if (status === 'success') {\n toaster.pop('success', '', $translate.instant('Js.Subscribe.SuccessMsg'));\n ctrl.agree = false;\n PubSub.publish('subscribe.email', ctrl.subscribeEmail);\n ctrl.subscribeEmail = '';\n ctrl.form.$setPristine();\n } else if (response.data.agree != null && response.data.agree === 'none') {\n toaster.pop('error', '', $translate.instant('Js.Subscribe.ErrorAgreement'));\n } else {\n toaster.pop('error', '', $translate.instant('Js.Subscribe.EmailAreadySubscribed'));\n }\n });\n };\n}\nSubscribeCtrl.$inject = [\"$http\", \"toaster\", \"$translate\"];\nexport default SubscribeCtrl;", "\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", "window", "isTouchDevice", "Carousel", "self", "clone", "img", "carouselService", "moduleName", "document", "screenfull", "$", "moduleName", "moduleName", "iframeResponsiveService", "iframeResponsiveService", "defer", "playerId", "moduleName", "moduleName", "load", "moduleName", "customOptionsService", "isValid", "selectedOption", "init_customOptions", "isValid", "moduleName", "moduleName", "moduleName", "buyOneClickService", "buyOneClickService", "isValid", "buyOneClickService", "modalId", "moduleName", "preOrderService", "preOrderService", "isValid", "preOrderService", "modalId", "moduleName", "productService", "customOptionsService", "$scope", "moduleName", "deps", "quickviewService", "moduleName", "moduleName", "productsCarouselService", "moduleName", "moduleName", "productViewService", "productViewService", "productViewService", "result", "productViewService", "productViewService", "isMobile", "moduleName", "moduleName", "moduleName", "moduleName"] }