{"version":3,"file":"smallGallery.js","names":["app","component","bindings","jumpTo","images","onSelect","controller","$document","$timeout","$element","$scope","ctrl","this","_init","_sliderElement","_viewportElement","ux","slideOffset","maxMove","_selectedSlideIndex","_maxStartSlideIndex","_$slideChildren","getWidth","computedViewportStyle","getComputedStyle","innerWidth","parseInt","paddingLeft","maxCount","length","i","$","position","left","goToSlideIndex","index","potentialSlideIndex","Math","max","min","scrollTo","style","transform","util","tios","slide","positive","pickImage","item","$event","$onInit","gallery","children","find","$onChanges","changes","controllerAs","templateUrl","cdnUrl"],"sources":["angular/component/smallGallery.js"],"mappings":"CAAA,WACI,aAiIAA,IAAIC,UAAU,eAAgB,CAE1BC,SAAU,CACNC,OAAQ,KACRC,OAAQ,IACRC,SAAU,KAGdC,WAAY,CAAC,YAAa,WAAY,WAvIb,SAAUC,EAAWC,EAAUC,EAAUC,GAClE,IAAIC,EAAOC,KAGPC,GAAQ,EAGRC,EAAiB,KACjBC,EAAmB,KAEvBJ,EAAKK,GAAK,CACNC,YAAa,EACbC,QAAS,GAGb,IAAIC,EAAsB,EACtBC,EAAsB,EAEtBC,EAAkB,KAEtB,SAASC,IACL,IAAIC,EAAwBC,iBAAiBT,EAAiB,IAK9D,GAHAJ,EAAKK,GAAGE,QAAWJ,EAAeW,aAAeV,EAAiBU,aAAgBC,SAASH,EAAsBI,aAGtF,GAAvBP,GAA4BT,EAAKK,GAAGE,SAAW,EAM/C,IAJA,IAAIU,EAAWP,EAAgBQ,OAItBC,EAAI,EAAGA,EAAIF,EAAUE,IAAK,CAG/B,GAFWC,EAAEV,EAAgBS,IAEpBE,WAAWC,KAAOtB,EAAKK,GAAGE,QAAS,CACxCE,EAAsBU,EACtB,KACJ,CACJ,CAGR,CAEA,SAASI,EAAeC,GACpBb,IAEA,IAAIc,EAAsBC,KAAKC,IAAI,EAAGD,KAAKE,IAAIJ,EAAOxB,EAAKP,OAAOyB,OAAS,IAO3EV,EAAsBkB,KAAKE,IAAIH,EAAqBhB,GAIpD,IAAIoB,EAAWT,EAAEV,EAAgBe,IAKjCzB,EAAKK,GAAGC,YAAeoB,KAAKC,IAAI,EAAGD,KAAKE,IAAMC,EAASX,OAASW,EAASR,WAAWC,KAAO,EAAGtB,EAAKK,GAAGE,UAEtGJ,EAAe,GAAG2B,MAAMC,UAAY,eAAiB/B,EAAKK,GAAGC,YAAc,KAC/E,CAEAN,EAAKgC,KAAOC,KAAKD,KAEjBhC,EAAKkC,MAAQ,SAAUC,GACnBxB,KAIKwB,GAAYnC,EAAKK,GAAGC,cAAgBN,EAAKK,GAAGE,UAAc4B,GAAoC,IAAxBnC,EAAKK,GAAGC,cAC/EiB,EAAef,GAAuB2B,EAAW,GAAK,GAG9D,EAEAnC,EAAKoC,UAAY,SAAUC,EAAMb,GAC7BxB,EAAKN,SAAS,CAAE4C,OAAQ,CAAED,KAAMA,EAAMb,MAAOA,IACjD,EAGAxB,EAAKuC,QAoBL,WAII1C,GAAS,WAEL,IAAI2C,EAAU1C,EAAS2C,SAAS,YAEhCrC,EAAmBoC,EAAQE,KAAK,aAChCvC,EAAiBC,EAAiBsC,KAAK,MAEvChC,EAAkBP,EAAesC,SAAS,sBAE1C9B,GACJ,IAEAT,GAAQ,CAEZ,EApCAF,EAAK2C,WAAa,SAAUC,GACpB1C,IAGI0C,EAAQnD,SACRgB,EAAsB,EACtBE,KAIkB,MAAlBiC,EAAQpD,SAAmBQ,EAAKR,QAAU,GAAKQ,EAAKR,OAASQ,EAAKP,OAAOyB,SACzEK,EAAevB,EAAKR,QAGhC,CAuBJ,GAWIqD,aAAc,OAEdC,YAAgC,oBAAX,KAAyBb,KAAKD,KAAKe,OAAO,4CAA8C,+BAEpH,CA/ID","sourcesContent":["(function () {\r\n 'use strict'\r\n\r\n var smallGalleryController = function ($document, $timeout, $element, $scope) {\r\n var ctrl = this;\r\n\r\n //Internal variables\r\n var _init = false;\r\n var _f = 'function';\r\n\r\n var _sliderElement = null;\r\n var _viewportElement = null;\r\n\r\n ctrl.ux = {\r\n slideOffset: 0,\r\n maxMove: 0,\r\n };\r\n\r\n var _selectedSlideIndex = 0;\r\n var _maxStartSlideIndex = 0;\r\n\r\n var _$slideChildren = null;\r\n\r\n function getWidth() {\r\n var computedViewportStyle = getComputedStyle(_viewportElement[0]); // Access the style to get the current margin\r\n\r\n ctrl.ux.maxMove = (_sliderElement.innerWidth() - _viewportElement.innerWidth()) + parseInt(computedViewportStyle.paddingLeft);\r\n\r\n // If no max start slide index defined, calculate it now.\r\n if (_maxStartSlideIndex == 0 && ctrl.ux.maxMove >= 0) {\r\n\r\n var maxCount = _$slideChildren.length;\r\n\r\n // Get the x coordinate of every image element until we hit the first that goes beyond the maxmove,\r\n // and store this as the maximum slide index for navigation\r\n for (var i = 0; i < maxCount; i++) {\r\n var elem = $(_$slideChildren[i]);\r\n // If this element is after the max move position, flag it as the limit\r\n if (elem.position().left > ctrl.ux.maxMove) {\r\n _maxStartSlideIndex = i;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n }\r\n \r\n function goToSlideIndex(index) {\r\n getWidth();\r\n // Limit to the length of the array\r\n var potentialSlideIndex = Math.max(0, Math.min(index, ctrl.images.length - 1));\r\n\r\n // Limit to the first possible displayed slide in the list (makes it so that\r\n // the slides showing beyond the first don't require multiple clicks to get back\r\n // to the start to begin moving again.\r\n\r\n // Make the selected slide index no \r\n _selectedSlideIndex = Math.min(potentialSlideIndex, _maxStartSlideIndex);\r\n\r\n // Get the scroll position of the slide we want to go to (even if it would be farther than the start of\r\n // the viewport once the end is near)\r\n var scrollTo = $(_$slideChildren[potentialSlideIndex]);\r\n\r\n // This makes the translation move in the opposite direction to the increment\r\n // but it is restricted to the maximum and minimum\r\n // The min part stops it going beyond the maxMove, and the max part stops it going less than zero.\r\n ctrl.ux.slideOffset = (Math.max(0, Math.min(!!scrollTo.length ? scrollTo.position().left : 0, ctrl.ux.maxMove)));\r\n\r\n _sliderElement[0].style.transform = 'translateX(' + -ctrl.ux.slideOffset + 'px)';\r\n };\r\n\r\n ctrl.util = tios.util;\r\n\r\n ctrl.slide = function (positive) {\r\n getWidth();\r\n\r\n // Can perform the move if positive and not at the right hand limit,\r\n // or if not positive and not at the left hand limit\r\n if ((positive && ctrl.ux.slideOffset !== ctrl.ux.maxMove) || (!positive && ctrl.ux.slideOffset !== 0)) {\r\n goToSlideIndex(_selectedSlideIndex + (positive ? 1 : -1));// Get the increment dependent on the direction\r\n }\r\n\r\n };\r\n\r\n ctrl.pickImage = function (item, index) {\r\n ctrl.onSelect({ $event: { item: item, index: index } });\r\n };\r\n\r\n //Init function\r\n ctrl.$onInit = init;\r\n\r\n ctrl.$onChanges = function (changes) {\r\n if (_init) {\r\n\r\n // If images change, reset max start slide index for computation\r\n if (changes.images) {\r\n _maxStartSlideIndex = 0;\r\n getWidth();\r\n }\r\n\r\n // If the current image is changed after init (and it's within range), jump to it.\r\n if (changes.jumpTo != null && (ctrl.jumpTo >= 0 || ctrl.jumpTo < ctrl.images.length)) {\r\n goToSlideIndex(ctrl.jumpTo);\r\n }\r\n }\r\n }\r\n\r\n //-\r\n\r\n function init() {\r\n //set up defaults\r\n\r\n // The timeout allows us to capture the elements after they've rendered\r\n $timeout(function () {\r\n\r\n var gallery = $element.children('.gallery')\r\n\r\n _viewportElement = gallery.find('.viewport');\r\n _sliderElement = _viewportElement.find('ul');\r\n\r\n _$slideChildren = _sliderElement.children('.small-gallery-img');\r\n\r\n getWidth();\r\n });\r\n\r\n _init = true;\r\n\r\n }\r\n };\r\n\r\n app.component('smallgallery', {\r\n\r\n bindings: {\r\n jumpTo: '