blacklight-spotlight 5.0.0.pre.alpha1 → 5.0.0.pre.alpha2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1 +1 @@
1
- {"version":3,"file":"spotlight.esm.js","sources":["../../../../vendor/assets/javascripts/tiny-slider.js","../../../javascript/spotlight/user/browse_group_categories.js","../../../javascript/spotlight/user/carousel.js","../../../javascript/spotlight/user/clear_form_button.js","../../../javascript/spotlight/user/zpr_links.js","../../../javascript/spotlight/user/index.js","../../../javascript/spotlight/admin/add_another.js","../../../javascript/spotlight/admin/add_new_button.js","../../../javascript/spotlight/admin/blacklight_configuration.js","../../../javascript/spotlight/admin/copy_email_addresses.js","../../../javascript/spotlight/admin/iiif.js","../../../javascript/spotlight/admin/add_image_selector.js","../../../javascript/spotlight/core.js","../../../javascript/spotlight/admin/crop.js","../../../javascript/spotlight/admin/croppable_modal.js","../../../javascript/spotlight/admin/croppable.js","../../../javascript/spotlight/admin/edit_in_place.js","../../../../vendor/assets/javascripts/parameterize.js","../../../javascript/spotlight/admin/exhibits.js","../../../javascript/spotlight/admin/form_observer.js","../../../javascript/spotlight/admin/locks.js","../../../javascript/spotlight/admin/multi_image_selector.js","../../../javascript/spotlight/admin/pages.js","../../../javascript/spotlight/admin/progress_monitor.js","../../../javascript/spotlight/admin/readonly_checkbox.js","../../../javascript/spotlight/admin/search_typeahead.js","../../../javascript/spotlight/admin/select_related_input.js","../../../javascript/spotlight/admin/spotlight_nestable.js","../../../javascript/spotlight/admin/tabs.js","../../../javascript/spotlight/admin/translation_progress.js","../../../javascript/spotlight/admin/visibility_toggle.js","../../../javascript/spotlight/admin/users.js","../../../javascript/spotlight/admin/block_mixins/autocompleteable.js","../../../javascript/spotlight/admin/block_mixins/formable.js","../../../javascript/spotlight/admin/block_mixins/plustextable.js","../../../javascript/spotlight/admin/blocks/block.js","../../../javascript/spotlight/admin/blocks/resources_block.js","../../../javascript/spotlight/admin/blocks/browse_block.js","../../../javascript/spotlight/admin/blocks/browse_group_categories_block.js","../../../javascript/spotlight/admin/blocks/iframe_block.js","../../../javascript/spotlight/admin/blocks/link_to_search_block.js","../../../javascript/spotlight/admin/blocks/oembed_block.js","../../../javascript/spotlight/admin/blocks/pages_block.js","../../../javascript/spotlight/admin/blocks/rule_block.js","../../../javascript/spotlight/admin/blocks/search_result_block.js","../../../javascript/spotlight/admin/blocks/solr_documents_base_block.js","../../../javascript/spotlight/admin/blocks/solr_documents_block.js","../../../javascript/spotlight/admin/blocks/solr_documents_carousel_block.js","../../../javascript/spotlight/admin/blocks/solr_documents_embed_block.js","../../../javascript/spotlight/admin/blocks/solr_documents_features_block.js","../../../javascript/spotlight/admin/blocks/solr_documents_grid_block.js","../../../javascript/spotlight/admin/blocks/uploaded_items_block.js","../../../javascript/spotlight/admin/sir-trevor/block_controls.js","../../../javascript/spotlight/admin/sir-trevor/block_limits.js","../../../javascript/spotlight/admin/sir-trevor/locales.js","../../../javascript/spotlight/admin/index.js","../../../javascript/spotlight/controllers/tag_selector_controller.js","../../../javascript/spotlight/controllers/index.js","../../../javascript/spotlight/index.js"],"sourcesContent":["// Includes an unreleased RTL support pull request: https://github.com/ganlanyuan/tiny-slider/pull/658\n// Includes \"export default tns\" at the end of the file for spotlight/user/browse_group_categories.js\nvar tns = (function (){\nvar win = window;\n\nvar raf = win.requestAnimationFrame\n || win.webkitRequestAnimationFrame\n || win.mozRequestAnimationFrame\n || win.msRequestAnimationFrame\n || function(cb) { return setTimeout(cb, 16); };\n\nvar win$1 = window;\n\nvar caf = win$1.cancelAnimationFrame\n || win$1.mozCancelAnimationFrame\n || function(id){ clearTimeout(id); };\n\nfunction extend() {\n var obj, name, copy,\n target = arguments[0] || {},\n i = 1,\n length = arguments.length;\n\n for (; i < length; i++) {\n if ((obj = arguments[i]) !== null) {\n for (name in obj) {\n copy = obj[name];\n\n if (target === copy) {\n continue;\n } else if (copy !== undefined) {\n target[name] = copy;\n }\n }\n }\n }\n return target;\n}\n\nfunction checkStorageValue (value) {\n return ['true', 'false'].indexOf(value) >= 0 ? JSON.parse(value) : value;\n}\n\nfunction setLocalStorage(storage, key, value, access) {\n if (access) {\n try { storage.setItem(key, value); } catch (e) {}\n }\n return value;\n}\n\nfunction getSlideId() {\n var id = window.tnsId;\n window.tnsId = !id ? 1 : id + 1;\n \n return 'tns' + window.tnsId;\n}\n\nfunction getBody () {\n var doc = document,\n body = doc.body;\n\n if (!body) {\n body = doc.createElement('body');\n body.fake = true;\n }\n\n return body;\n}\n\nvar docElement = document.documentElement;\n\nfunction setFakeBody (body) {\n var docOverflow = '';\n if (body.fake) {\n docOverflow = docElement.style.overflow;\n //avoid crashing IE8, if background image is used\n body.style.background = '';\n //Safari 5.13/5.1.4 OSX stops loading if ::-webkit-scrollbar is used and scrollbars are visible\n body.style.overflow = docElement.style.overflow = 'hidden';\n docElement.appendChild(body);\n }\n\n return docOverflow;\n}\n\nfunction resetFakeBody (body, docOverflow) {\n if (body.fake) {\n body.remove();\n docElement.style.overflow = docOverflow;\n // Trigger layout so kinetic scrolling isn't disabled in iOS6+\n // eslint-disable-next-line\n docElement.offsetHeight;\n }\n}\n\n// get css-calc \n\nfunction calc() {\n var doc = document, \n body = getBody(),\n docOverflow = setFakeBody(body),\n div = doc.createElement('div'), \n result = false;\n\n body.appendChild(div);\n try {\n var str = '(10px * 10)',\n vals = ['calc' + str, '-moz-calc' + str, '-webkit-calc' + str],\n val;\n for (var i = 0; i < 3; i++) {\n val = vals[i];\n div.style.width = val;\n if (div.offsetWidth === 100) { \n result = val.replace(str, ''); \n break;\n }\n }\n } catch (e) {}\n \n body.fake ? resetFakeBody(body, docOverflow) : div.remove();\n\n return result;\n}\n\n// get subpixel support value\n\nfunction percentageLayout() {\n // check subpixel layout supporting\n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n wrapper = doc.createElement('div'),\n outer = doc.createElement('div'),\n str = '',\n count = 70,\n perPage = 3,\n supported = false;\n\n wrapper.className = \"tns-t-subp2\";\n outer.className = \"tns-t-ct\";\n\n for (var i = 0; i < count; i++) {\n str += '<div></div>';\n }\n\n outer.innerHTML = str;\n wrapper.appendChild(outer);\n body.appendChild(wrapper);\n\n supported = Math.abs(wrapper.getBoundingClientRect().left - outer.children[count - perPage].getBoundingClientRect().left) < 2;\n\n body.fake ? resetFakeBody(body, docOverflow) : wrapper.remove();\n\n return supported;\n}\n\nfunction mediaquerySupport () {\n if (window.matchMedia || window.msMatchMedia) {\n return true;\n }\n \n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n div = doc.createElement('div'),\n style = doc.createElement('style'),\n rule = '@media all and (min-width:1px){.tns-mq-test{position:absolute}}',\n position;\n\n style.type = 'text/css';\n div.className = 'tns-mq-test';\n\n body.appendChild(style);\n body.appendChild(div);\n\n if (style.styleSheet) {\n style.styleSheet.cssText = rule;\n } else {\n style.appendChild(doc.createTextNode(rule));\n }\n\n position = window.getComputedStyle ? window.getComputedStyle(div).position : div.currentStyle['position'];\n\n body.fake ? resetFakeBody(body, docOverflow) : div.remove();\n\n return position === \"absolute\";\n}\n\n// create and append style sheet\nfunction createStyleSheet (media, nonce) {\n // Create the <style> tag\n var style = document.createElement(\"style\");\n // style.setAttribute(\"type\", \"text/css\");\n\n // Add a media (and/or media query) here if you'd like!\n // style.setAttribute(\"media\", \"screen\")\n // style.setAttribute(\"media\", \"only screen and (max-width : 1024px)\")\n if (media) { style.setAttribute(\"media\", media); }\n\n // Add nonce attribute for Content Security Policy\n if (nonce) { style.setAttribute(\"nonce\", nonce); }\n\n // WebKit hack :(\n // style.appendChild(document.createTextNode(\"\"));\n\n // Add the <style> element to the page\n document.querySelector('head').appendChild(style);\n\n return style.sheet ? style.sheet : style.styleSheet;\n}\n\n// cross browsers addRule method\nfunction addCSSRule(sheet, selector, rules, index) {\n // return raf(function() {\n 'insertRule' in sheet ?\n sheet.insertRule(selector + '{' + rules + '}', index) :\n sheet.addRule(selector, rules, index);\n // });\n}\n\n// cross browsers addRule method\nfunction removeCSSRule(sheet, index) {\n // return raf(function() {\n 'deleteRule' in sheet ?\n sheet.deleteRule(index) :\n sheet.removeRule(index);\n // });\n}\n\nfunction getCssRulesLength(sheet) {\n var rule = ('insertRule' in sheet) ? sheet.cssRules : sheet.rules;\n return rule.length;\n}\n\nfunction toDegree (y, x) {\n return Math.atan2(y, x) * (180 / Math.PI);\n}\n\nfunction getTouchDirection(angle, range) {\n var direction = false,\n gap = Math.abs(90 - Math.abs(angle));\n \n if (gap >= 90 - range) {\n direction = 'horizontal';\n } else if (gap <= range) {\n direction = 'vertical';\n }\n\n return direction;\n}\n\n// https://toddmotto.com/ditch-the-array-foreach-call-nodelist-hack/\nfunction forEach (arr, callback, scope) {\n for (var i = 0, l = arr.length; i < l; i++) {\n callback.call(scope, arr[i], i);\n }\n}\n\nvar classListSupport = 'classList' in document.createElement('_');\n\nvar hasClass = classListSupport ?\n function (el, str) { return el.classList.contains(str); } :\n function (el, str) { return el.className.indexOf(str) >= 0; };\n\nvar addClass = classListSupport ?\n function (el, str) {\n if (!hasClass(el, str)) { el.classList.add(str); }\n } :\n function (el, str) {\n if (!hasClass(el, str)) { el.className += ' ' + str; }\n };\n\nvar removeClass = classListSupport ?\n function (el, str) {\n if (hasClass(el, str)) { el.classList.remove(str); }\n } :\n function (el, str) {\n if (hasClass(el, str)) { el.className = el.className.replace(str, ''); }\n };\n\nfunction hasAttr(el, attr) {\n return el.hasAttribute(attr);\n}\n\nfunction getAttr(el, attr) {\n return el.getAttribute(attr);\n}\n\nfunction isNodeList(el) {\n // Only NodeList has the \"item()\" function\n return typeof el.item !== \"undefined\"; \n}\n\nfunction setAttrs(els, attrs) {\n els = (isNodeList(els) || els instanceof Array) ? els : [els];\n if (Object.prototype.toString.call(attrs) !== '[object Object]') { return; }\n\n for (var i = els.length; i--;) {\n for(var key in attrs) {\n els[i].setAttribute(key, attrs[key]);\n }\n }\n}\n\nfunction removeAttrs(els, attrs) {\n els = (isNodeList(els) || els instanceof Array) ? els : [els];\n attrs = (attrs instanceof Array) ? attrs : [attrs];\n\n var attrLength = attrs.length;\n for (var i = els.length; i--;) {\n for (var j = attrLength; j--;) {\n els[i].removeAttribute(attrs[j]);\n }\n }\n}\n\nfunction arrayFromNodeList (nl) {\n var arr = [];\n for (var i = 0, l = nl.length; i < l; i++) {\n arr.push(nl[i]);\n }\n return arr;\n}\n\nfunction hideElement(el, forceHide) {\n if (el.style.display !== 'none') { el.style.display = 'none'; }\n}\n\nfunction showElement(el, forceHide) {\n if (el.style.display === 'none') { el.style.display = ''; }\n}\n\nfunction isVisible(el) {\n return window.getComputedStyle(el).display !== 'none';\n}\n\nfunction whichProperty(props){\n if (typeof props === 'string') {\n var arr = [props],\n Props = props.charAt(0).toUpperCase() + props.substr(1),\n prefixes = ['Webkit', 'Moz', 'ms', 'O'];\n \n prefixes.forEach(function(prefix) {\n if (prefix !== 'ms' || props === 'transform') {\n arr.push(prefix + Props);\n }\n });\n\n props = arr;\n }\n\n var el = document.createElement('fakeelement'),\n len = props.length;\n for(var i = 0; i < props.length; i++){\n var prop = props[i];\n if( el.style[prop] !== undefined ){ return prop; }\n }\n\n return false; // explicit for ie9-\n}\n\nfunction has3DTransforms(tf){\n if (!tf) { return false; }\n if (!window.getComputedStyle) { return false; }\n \n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n el = doc.createElement('p'),\n has3d,\n cssTF = tf.length > 9 ? '-' + tf.slice(0, -9).toLowerCase() + '-' : '';\n\n cssTF += 'transform';\n\n // Add it to the body to get the computed style\n body.insertBefore(el, null);\n\n el.style[tf] = 'translate3d(1px,1px,1px)';\n has3d = window.getComputedStyle(el).getPropertyValue(cssTF);\n\n body.fake ? resetFakeBody(body, docOverflow) : el.remove();\n\n return (has3d !== undefined && has3d.length > 0 && has3d !== \"none\");\n}\n\n// get transitionend, animationend based on transitionDuration\n// @propin: string\n// @propOut: string, first-letter uppercase\n// Usage: getEndProperty('WebkitTransitionDuration', 'Transition') => webkitTransitionEnd\nfunction getEndProperty(propIn, propOut) {\n var endProp = false;\n if (/^Webkit/.test(propIn)) {\n endProp = 'webkit' + propOut + 'End';\n } else if (/^O/.test(propIn)) {\n endProp = 'o' + propOut + 'End';\n } else if (propIn) {\n endProp = propOut.toLowerCase() + 'end';\n }\n return endProp;\n}\n\n// Test via a getter in the options object to see if the passive property is accessed\nvar supportsPassive = false;\ntry {\n var opts = Object.defineProperty({}, 'passive', {\n get: function() {\n supportsPassive = true;\n }\n });\n window.addEventListener(\"test\", null, opts);\n} catch (e) {}\nvar passiveOption = supportsPassive ? { passive: true } : false;\n\nfunction addEvents(el, obj, preventScrolling) {\n for (var prop in obj) {\n var option = ['touchstart', 'touchmove'].indexOf(prop) >= 0 && !preventScrolling ? passiveOption : false;\n el.addEventListener(prop, obj[prop], option);\n }\n}\n\nfunction removeEvents(el, obj) {\n for (var prop in obj) {\n var option = ['touchstart', 'touchmove'].indexOf(prop) >= 0 ? passiveOption : false;\n el.removeEventListener(prop, obj[prop], option);\n }\n}\n\nfunction Events() {\n return {\n topics: {},\n on: function (eventName, fn) {\n this.topics[eventName] = this.topics[eventName] || [];\n this.topics[eventName].push(fn);\n },\n off: function(eventName, fn) {\n if (this.topics[eventName]) {\n for (var i = 0; i < this.topics[eventName].length; i++) {\n if (this.topics[eventName][i] === fn) {\n this.topics[eventName].splice(i, 1);\n break;\n }\n }\n }\n },\n emit: function (eventName, data) {\n data.type = eventName;\n if (this.topics[eventName]) {\n this.topics[eventName].forEach(function(fn) {\n fn(data, eventName);\n });\n }\n }\n };\n}\n\nfunction jsTransform(element, attr, prefix, postfix, to, duration, callback) {\n var tick = Math.min(duration, 10),\n unit = (to.indexOf('%') >= 0) ? '%' : 'px',\n to = to.replace(unit, ''),\n from = Number(element.style[attr].replace(prefix, '').replace(postfix, '').replace(unit, '')),\n positionTick = (to - from) / duration * tick,\n running;\n\n setTimeout(moveElement, tick);\n function moveElement() {\n duration -= tick;\n from += positionTick;\n element.style[attr] = prefix + from + unit + postfix;\n if (duration > 0) { \n setTimeout(moveElement, tick); \n } else {\n callback();\n }\n }\n}\n\n// Object.keys\nif (!Object.keys) {\n Object.keys = function(object) {\n var keys = [];\n for (var name in object) {\n if (Object.prototype.hasOwnProperty.call(object, name)) {\n keys.push(name);\n }\n }\n return keys;\n };\n}\n\n// ChildNode.remove\nif(!(\"remove\" in Element.prototype)){\n Element.prototype.remove = function(){\n if(this.parentNode) {\n this.parentNode.removeChild(this);\n }\n };\n}\n\nvar tns = function(options) {\n options = extend({\n container: '.slider',\n mode: 'carousel',\n axis: 'horizontal',\n items: 1,\n gutter: 0,\n edgePadding: 0,\n fixedWidth: false,\n autoWidth: false,\n viewportMax: false,\n slideBy: 1,\n center: false,\n controls: true,\n controlsPosition: 'top',\n controlsText: ['prev', 'next'],\n controlsContainer: false,\n prevButton: false,\n nextButton: false,\n nav: true,\n navPosition: 'top',\n navContainer: false,\n navAsThumbnails: false,\n arrowKeys: false,\n speed: 300,\n autoplay: false,\n autoplayPosition: 'top',\n autoplayTimeout: 5000,\n autoplayDirection: 'forward',\n autoplayText: ['start', 'stop'],\n autoplayHoverPause: false,\n autoplayButton: false,\n autoplayButtonOutput: true,\n autoplayResetOnVisibility: true,\n animateIn: 'tns-fadeIn',\n animateOut: 'tns-fadeOut',\n animateNormal: 'tns-normal',\n animateDelay: false,\n loop: true,\n rewind: false,\n autoHeight: false,\n responsive: false,\n lazyload: false,\n lazyloadSelector: '.tns-lazy-img',\n touch: true,\n mouseDrag: false,\n swipeAngle: 15,\n nested: false,\n preventActionWhenRunning: false,\n preventScrollOnTouch: false,\n freezable: true,\n onInit: false,\n useLocalStorage: true,\n textDirection: 'ltr',\n nonce: false\n }, options || {});\n\n var doc = document,\n win = window,\n KEYS = {\n ENTER: 13,\n SPACE: 32,\n LEFT: 37,\n RIGHT: 39\n },\n tnsStorage = {},\n localStorageAccess = options.useLocalStorage;\n\n if (localStorageAccess) {\n // check browser version and local storage access\n var browserInfo = navigator.userAgent;\n var uid = new Date;\n\n try {\n tnsStorage = win.localStorage;\n if (tnsStorage) {\n tnsStorage.setItem(uid, uid);\n localStorageAccess = tnsStorage.getItem(uid) == uid;\n tnsStorage.removeItem(uid);\n } else {\n localStorageAccess = false;\n }\n if (!localStorageAccess) { tnsStorage = {}; }\n } catch(e) {\n localStorageAccess = false;\n }\n\n if (localStorageAccess) {\n // remove storage when browser version changes\n if (tnsStorage['tnsApp'] && tnsStorage['tnsApp'] !== browserInfo) {\n ['tC', 'tPL', 'tMQ', 'tTf', 't3D', 'tTDu', 'tTDe', 'tADu', 'tADe', 'tTE', 'tAE'].forEach(function(item) { tnsStorage.removeItem(item); });\n }\n // update browserInfo\n localStorage['tnsApp'] = browserInfo;\n }\n }\n\n var CALC = tnsStorage['tC'] ? checkStorageValue(tnsStorage['tC']) : setLocalStorage(tnsStorage, 'tC', calc(), localStorageAccess),\n PERCENTAGELAYOUT = tnsStorage['tPL'] ? checkStorageValue(tnsStorage['tPL']) : setLocalStorage(tnsStorage, 'tPL', percentageLayout(), localStorageAccess),\n CSSMQ = tnsStorage['tMQ'] ? checkStorageValue(tnsStorage['tMQ']) : setLocalStorage(tnsStorage, 'tMQ', mediaquerySupport(), localStorageAccess),\n TRANSFORM = tnsStorage['tTf'] ? checkStorageValue(tnsStorage['tTf']) : setLocalStorage(tnsStorage, 'tTf', whichProperty('transform'), localStorageAccess),\n HAS3DTRANSFORMS = tnsStorage['t3D'] ? checkStorageValue(tnsStorage['t3D']) : setLocalStorage(tnsStorage, 't3D', has3DTransforms(TRANSFORM), localStorageAccess),\n TRANSITIONDURATION = tnsStorage['tTDu'] ? checkStorageValue(tnsStorage['tTDu']) : setLocalStorage(tnsStorage, 'tTDu', whichProperty('transitionDuration'), localStorageAccess),\n TRANSITIONDELAY = tnsStorage['tTDe'] ? checkStorageValue(tnsStorage['tTDe']) : setLocalStorage(tnsStorage, 'tTDe', whichProperty('transitionDelay'), localStorageAccess),\n ANIMATIONDURATION = tnsStorage['tADu'] ? checkStorageValue(tnsStorage['tADu']) : setLocalStorage(tnsStorage, 'tADu', whichProperty('animationDuration'), localStorageAccess),\n ANIMATIONDELAY = tnsStorage['tADe'] ? checkStorageValue(tnsStorage['tADe']) : setLocalStorage(tnsStorage, 'tADe', whichProperty('animationDelay'), localStorageAccess),\n TRANSITIONEND = tnsStorage['tTE'] ? checkStorageValue(tnsStorage['tTE']) : setLocalStorage(tnsStorage, 'tTE', getEndProperty(TRANSITIONDURATION, 'Transition'), localStorageAccess),\n ANIMATIONEND = tnsStorage['tAE'] ? checkStorageValue(tnsStorage['tAE']) : setLocalStorage(tnsStorage, 'tAE', getEndProperty(ANIMATIONDURATION, 'Animation'), localStorageAccess);\n\n // get element nodes from selectors\n var supportConsoleWarn = win.console && typeof win.console.warn === \"function\",\n tnsList = ['container', 'controlsContainer', 'prevButton', 'nextButton', 'navContainer', 'autoplayButton'],\n optionsElements = {};\n\n tnsList.forEach(function(item) {\n if (typeof options[item] === 'string') {\n var str = options[item],\n el = doc.querySelector(str);\n optionsElements[item] = str;\n\n if (el && el.nodeName) {\n options[item] = el;\n } else {\n if (supportConsoleWarn) { console.warn('Can\\'t find', options[item]); }\n return;\n }\n }\n });\n\n // make sure at least 1 slide\n if (options.container.children.length < 1) {\n if (supportConsoleWarn) { console.warn('No slides found in', options.container); }\n return;\n }\n\n // update options\n var responsive = options.responsive,\n nested = options.nested,\n carousel = options.mode === 'carousel' ? true : false;\n\n if (responsive) {\n // apply responsive[0] to options and remove it\n if (0 in responsive) {\n options = extend(options, responsive[0]);\n delete responsive[0];\n }\n\n var responsiveTem = {};\n for (var key in responsive) {\n var val = responsive[key];\n // update responsive\n // from: 300: 2\n // to:\n // 300: {\n // items: 2\n // }\n val = typeof val === 'number' ? {items: val} : val;\n responsiveTem[key] = val;\n }\n responsive = responsiveTem;\n responsiveTem = null;\n }\n\n // update options\n function updateOptions (obj) {\n for (var key in obj) {\n if (!carousel) {\n if (key === 'slideBy') { obj[key] = 'page'; }\n if (key === 'edgePadding') { obj[key] = false; }\n if (key === 'autoHeight') { obj[key] = false; }\n }\n\n // update responsive options\n if (key === 'responsive') { updateOptions(obj[key]); }\n }\n }\n if (!carousel) { updateOptions(options); }\n\n\n // === define and set variables ===\n if (!carousel) {\n options.axis = 'horizontal';\n options.slideBy = 'page';\n options.edgePadding = false;\n\n var animateIn = options.animateIn,\n animateOut = options.animateOut,\n animateDelay = options.animateDelay,\n animateNormal = options.animateNormal;\n }\n\n var horizontal = options.axis === 'horizontal' ? true : false,\n outerWrapper = doc.createElement('div'),\n innerWrapper = doc.createElement('div'),\n middleWrapper,\n container = options.container,\n containerParent = container.parentNode,\n containerHTML = container.outerHTML,\n slideItems = container.children,\n slideCount = slideItems.length,\n breakpointZone,\n windowWidth = getWindowWidth(),\n isOn = false;\n if (responsive) { setBreakpointZone(); }\n if (carousel) { container.className += ' tns-vpfix'; }\n\n // fixedWidth: viewport > rightBoundary > indexMax\n var autoWidth = options.autoWidth,\n fixedWidth = getOption('fixedWidth'),\n edgePadding = getOption('edgePadding'),\n gutter = getOption('gutter'),\n viewport = getViewportWidth(),\n center = getOption('center'),\n items = !autoWidth ? Math.floor(getOption('items')) : 1,\n slideBy = getOption('slideBy'),\n viewportMax = options.viewportMax || options.fixedWidthViewportWidth,\n arrowKeys = getOption('arrowKeys'),\n speed = getOption('speed'),\n rewind = options.rewind,\n loop = rewind ? false : options.loop,\n autoHeight = getOption('autoHeight'),\n controls = getOption('controls'),\n controlsText = getOption('controlsText'),\n textDirection = getOption('textDirection'),\n nav = getOption('nav'),\n touch = getOption('touch'),\n mouseDrag = getOption('mouseDrag'),\n autoplay = getOption('autoplay'),\n autoplayTimeout = getOption('autoplayTimeout'),\n autoplayText = getOption('autoplayText'),\n autoplayHoverPause = getOption('autoplayHoverPause'),\n autoplayResetOnVisibility = getOption('autoplayResetOnVisibility'),\n sheet = createStyleSheet(null, getOption('nonce')),\n lazyload = options.lazyload,\n lazyloadSelector = options.lazyloadSelector,\n slidePositions, // collection of slide positions\n slideItemsOut = [],\n cloneCount = loop ? getCloneCountForLoop() : 0,\n slideCountNew = !carousel ? slideCount + cloneCount : slideCount + cloneCount * 2,\n hasRightDeadZone = (fixedWidth || autoWidth) && !loop ? true : false,\n rightBoundary = fixedWidth ? getRightBoundary() : null,\n updateIndexBeforeTransform = (!carousel || !loop) ? true : false,\n // transform\n transformAttr = horizontal ? 'left' : 'top',\n transformPrefix = '',\n transformPostfix = '',\n // index\n getIndexMax = (function () {\n if (fixedWidth) {\n return function() { return center && !loop ? slideCount - 1 : Math.ceil(- rightBoundary / (fixedWidth + gutter)); };\n } else if (autoWidth) {\n return function() {\n for (var i = 0; i < slideCountNew; i++) {\n if (slidePositions[i] >= - rightBoundary) { return i; }\n }\n };\n } else {\n return function() {\n if (center && carousel && !loop) {\n return slideCount - 1;\n } else {\n return loop || carousel ? Math.max(0, slideCountNew - Math.ceil(items)) : slideCountNew - 1;\n }\n };\n }\n })(),\n index = getStartIndex(getOption('startIndex')),\n indexCached = index,\n displayIndex = getCurrentSlide(),\n indexMin = 0,\n indexMax = !autoWidth ? getIndexMax() : null,\n // resize\n resizeTimer,\n preventActionWhenRunning = options.preventActionWhenRunning,\n swipeAngle = options.swipeAngle,\n moveDirectionExpected = swipeAngle ? '?' : true,\n running = false,\n onInit = options.onInit,\n events = new Events(),\n // id, class\n newContainerClasses = ' tns-slider tns-' + options.mode,\n slideId = container.id || getSlideId(),\n disable = getOption('disable'),\n disabled = false,\n freezable = options.freezable,\n freeze = freezable && !autoWidth ? getFreeze() : false,\n frozen = false,\n controlsEvents = {\n 'click': onControlsClick,\n 'keydown': onControlsKeydown\n },\n navEvents = {\n 'click': onNavClick,\n 'keydown': onNavKeydown\n },\n hoverEvents = {\n 'mouseover': mouseoverPause,\n 'mouseout': mouseoutRestart\n },\n visibilityEvent = {'visibilitychange': onVisibilityChange},\n docmentKeydownEvent = {'keydown': onDocumentKeydown},\n touchEvents = {\n 'touchstart': onPanStart,\n 'touchmove': onPanMove,\n 'touchend': onPanEnd,\n 'touchcancel': onPanEnd\n }, dragEvents = {\n 'mousedown': onPanStart,\n 'mousemove': onPanMove,\n 'mouseup': onPanEnd,\n 'mouseleave': onPanEnd\n },\n hasControls = hasOption('controls'),\n hasNav = hasOption('nav'),\n navAsThumbnails = autoWidth ? true : options.navAsThumbnails,\n hasAutoplay = hasOption('autoplay'),\n hasTouch = hasOption('touch'),\n hasMouseDrag = hasOption('mouseDrag'),\n slideActiveClass = 'tns-slide-active',\n slideClonedClass = 'tns-slide-cloned',\n imgCompleteClass = 'tns-complete',\n imgEvents = {\n 'load': onImgLoaded,\n 'error': onImgFailed\n },\n imgsComplete,\n liveregionCurrent,\n preventScroll = options.preventScrollOnTouch === 'force' ? true : false;\n\n // controls\n if (hasControls) {\n var controlsContainer = options.controlsContainer,\n controlsContainerHTML = options.controlsContainer ? options.controlsContainer.outerHTML : '',\n prevButton = options.prevButton,\n nextButton = options.nextButton,\n prevButtonHTML = options.prevButton ? options.prevButton.outerHTML : '',\n nextButtonHTML = options.nextButton ? options.nextButton.outerHTML : '',\n prevIsButton,\n nextIsButton;\n }\n\n // nav\n if (hasNav) {\n var navContainer = options.navContainer,\n navContainerHTML = options.navContainer ? options.navContainer.outerHTML : '',\n navItems,\n pages = autoWidth ? slideCount : getPages(),\n pagesCached = 0,\n navClicked = -1,\n navCurrentIndex = getCurrentNavIndex(),\n navCurrentIndexCached = navCurrentIndex,\n navActiveClass = 'tns-nav-active',\n navStr = 'Carousel Page ',\n navStrCurrent = ' (Current Slide)';\n }\n\n // autoplay\n if (hasAutoplay) {\n var autoplayDirection = options.autoplayDirection === 'forward' ? 1 : -1,\n autoplayButton = options.autoplayButton,\n autoplayButtonHTML = options.autoplayButton ? options.autoplayButton.outerHTML : '',\n autoplayHtmlStrings = ['<span class=\\'tns-visually-hidden\\'>', ' animation</span>'],\n autoplayTimer,\n animating,\n autoplayHoverPaused,\n autoplayUserPaused,\n autoplayVisibilityPaused;\n }\n\n if (hasTouch || hasMouseDrag) {\n var initPosition = {},\n lastPosition = {},\n translateInit,\n disX,\n disY,\n panStart = false,\n rafIndex,\n getDist = horizontal ?\n function(a, b) { return a.x - b.x; } :\n function(a, b) { return a.y - b.y; };\n }\n\n // disable slider when slidecount <= items\n if (!autoWidth) { resetVariblesWhenDisable(disable || freeze); }\n\n if (TRANSFORM) {\n transformAttr = TRANSFORM;\n transformPrefix = 'translate';\n\n if (HAS3DTRANSFORMS) {\n transformPrefix += horizontal ? '3d(' : '3d(0px, ';\n transformPostfix = horizontal ? ', 0px, 0px)' : ', 0px)';\n } else {\n transformPrefix += horizontal ? 'X(' : 'Y(';\n transformPostfix = ')';\n }\n\n }\n\n if (carousel) { container.className = container.className.replace('tns-vpfix', ''); }\n initStructure();\n initSheet();\n initSliderTransform();\n\n // === COMMON FUNCTIONS === //\n function resetVariblesWhenDisable (condition) {\n if (condition) {\n controls = nav = touch = mouseDrag = arrowKeys = autoplay = autoplayHoverPause = autoplayResetOnVisibility = false;\n }\n }\n\n function getCurrentSlide () {\n var tem = carousel ? index - cloneCount : index;\n while (tem < 0) { tem += slideCount; }\n return tem%slideCount + 1;\n }\n\n function getStartIndex (ind) {\n ind = ind ? Math.max(0, Math.min(loop ? slideCount - 1 : slideCount - items, ind)) : 0;\n return carousel ? ind + cloneCount : ind;\n }\n\n function getAbsIndex (i) {\n if (i == null) { i = index; }\n\n if (carousel) { i -= cloneCount; }\n while (i < 0) { i += slideCount; }\n\n return Math.floor(i%slideCount);\n }\n\n function getCurrentNavIndex () {\n var absIndex = getAbsIndex(),\n result;\n\n result = navAsThumbnails ? absIndex :\n fixedWidth || autoWidth ? Math.ceil((absIndex + 1) * pages / slideCount - 1) :\n Math.floor(absIndex / items);\n\n // set active nav to the last one when reaches the right edge\n if (!loop && carousel && index === indexMax) { result = pages - 1; }\n\n return result;\n }\n\n function getItemsMax () {\n // fixedWidth or autoWidth while viewportMax is not available\n if (autoWidth || (fixedWidth && !viewportMax)) {\n return slideCount - 1;\n // most cases\n } else {\n var str = fixedWidth ? 'fixedWidth' : 'items',\n arr = [];\n\n if (fixedWidth || options[str] < slideCount) { arr.push(options[str]); }\n\n if (responsive) {\n for (var bp in responsive) {\n var tem = responsive[bp][str];\n if (tem && (fixedWidth || tem < slideCount)) { arr.push(tem); }\n }\n }\n\n if (!arr.length) { arr.push(0); }\n\n return Math.ceil(fixedWidth ? viewportMax / Math.min.apply(null, arr) : Math.max.apply(null, arr));\n }\n }\n\n function getCloneCountForLoop () {\n var itemsMax = getItemsMax(),\n result = carousel ? Math.ceil((itemsMax * 5 - slideCount)/2) : (itemsMax * 4 - slideCount);\n result = Math.max(itemsMax, result);\n\n return hasOption('edgePadding') ? result + 1 : result;\n }\n\n function getWindowWidth () {\n return win.innerWidth || doc.documentElement.clientWidth || doc.body.clientWidth;\n }\n\n function getInsertPosition (pos) {\n return pos === 'top' ? 'afterbegin' : 'beforeend';\n }\n\n function getClientWidth (el) {\n if (el == null) { return; }\n var div = doc.createElement('div'), rect, width;\n el.appendChild(div);\n rect = div.getBoundingClientRect();\n width = rect.right - rect.left;\n div.remove();\n return width || getClientWidth(el.parentNode);\n }\n\n function getViewportWidth () {\n var gap = edgePadding ? edgePadding * 2 - gutter : 0;\n return getClientWidth(containerParent) - gap;\n }\n\n function hasOption (item) {\n if (options[item]) {\n return true;\n } else {\n if (responsive) {\n for (var bp in responsive) {\n if (responsive[bp][item]) { return true; }\n }\n }\n return false;\n }\n }\n\n // get option:\n // fixed width: viewport, fixedWidth, gutter => items\n // others: window width => all variables\n // all: items => slideBy\n function getOption (item, ww) {\n if (ww == null) { ww = windowWidth; }\n\n if (item === 'items' && fixedWidth) {\n return Math.floor((viewport + gutter) / (fixedWidth + gutter)) || 1;\n\n } else {\n var result = options[item];\n\n if (responsive) {\n for (var bp in responsive) {\n // bp: convert string to number\n if (ww >= parseInt(bp)) {\n if (item in responsive[bp]) { result = responsive[bp][item]; }\n }\n }\n }\n\n if (item === 'slideBy' && result === 'page') { result = getOption('items'); }\n if (!carousel && (item === 'slideBy' || item === 'items')) { result = Math.floor(result); }\n\n return result;\n }\n }\n\n function getSlideMarginLeft (i) {\n return CALC ?\n CALC + '(' + i * 100 + '% / ' + slideCountNew + ')' :\n i * 100 / slideCountNew + '%';\n }\n\n function getInnerWrapperStyles (edgePaddingTem, gutterTem, fixedWidthTem, speedTem, autoHeightBP) {\n var str = '';\n\n if (edgePaddingTem !== undefined) {\n var gap = edgePaddingTem;\n if (gutterTem) { gap -= gutterTem; }\n str = horizontal ?\n 'margin: 0 ' + gap + 'px 0 ' + edgePaddingTem + 'px;' :\n 'margin: ' + edgePaddingTem + 'px 0 ' + gap + 'px 0;';\n } else if (gutterTem && !fixedWidthTem) {\n var gutterTemUnit = '-' + gutterTem + 'px',\n dir = horizontal ? gutterTemUnit + ' 0 0' : '0 ' + gutterTemUnit + ' 0';\n str = 'margin: 0 ' + dir + ';';\n }\n\n if (!carousel && autoHeightBP && TRANSITIONDURATION && speedTem) { str += getTransitionDurationStyle(speedTem); }\n return str;\n }\n\n function getContainerWidth (fixedWidthTem, gutterTem, itemsTem) {\n if (fixedWidthTem) {\n return (fixedWidthTem + gutterTem) * slideCountNew + 'px';\n } else {\n return CALC ?\n CALC + '(' + slideCountNew * 100 + '% / ' + itemsTem + ')' :\n slideCountNew * 100 / itemsTem + '%';\n }\n }\n\n function getSlideWidthStyle (fixedWidthTem, gutterTem, itemsTem) {\n var width;\n\n if (fixedWidthTem) {\n width = (fixedWidthTem + gutterTem) + 'px';\n } else {\n if (!carousel) { itemsTem = Math.floor(itemsTem); }\n var dividend = carousel ? slideCountNew : itemsTem;\n width = CALC ?\n CALC + '(100% / ' + dividend + ')' :\n 100 / dividend + '%';\n }\n\n width = 'width:' + width;\n\n // inner slider: overwrite outer slider styles\n return nested !== 'inner' ? width + ';' : width + ' !important;';\n }\n\n function getSlideGutterStyle (gutterTem) {\n var str = '';\n\n // gutter maybe interger || 0\n // so can't use 'if (gutter)'\n if (gutterTem !== false) {\n var prop = horizontal ? 'padding-' : 'margin-',\n dir = horizontal ? 'right' : 'bottom';\n str = prop + dir + ': ' + gutterTem + 'px;';\n }\n\n return str;\n }\n\n function getCSSPrefix (name, num) {\n var prefix = name.substring(0, name.length - num).toLowerCase();\n if (prefix) { prefix = '-' + prefix + '-'; }\n\n return prefix;\n }\n\n function getTransitionDurationStyle (speed) {\n return getCSSPrefix(TRANSITIONDURATION, 18) + 'transition-duration:' + speed / 1000 + 's;';\n }\n\n function getAnimationDurationStyle (speed) {\n return getCSSPrefix(ANIMATIONDURATION, 17) + 'animation-duration:' + speed / 1000 + 's;';\n }\n\n function initStructure () {\n var classOuter = 'tns-outer',\n classInner = 'tns-inner',\n hasGutter = hasOption('gutter');\n\n outerWrapper.className = classOuter;\n innerWrapper.className = classInner;\n outerWrapper.id = slideId + '-ow';\n innerWrapper.id = slideId + '-iw';\n\n // set container properties\n if (container.id === '') { container.id = slideId; }\n newContainerClasses += PERCENTAGELAYOUT || autoWidth ? ' tns-subpixel' : ' tns-no-subpixel';\n newContainerClasses += CALC ? ' tns-calc' : ' tns-no-calc';\n if (autoWidth) { newContainerClasses += ' tns-autowidth'; }\n newContainerClasses += ' tns-' + options.axis;\n container.className += newContainerClasses;\n\n // add constrain layer for carousel\n if (carousel) {\n middleWrapper = doc.createElement('div');\n middleWrapper.id = slideId + '-mw';\n middleWrapper.className = 'tns-ovh';\n\n outerWrapper.appendChild(middleWrapper);\n middleWrapper.appendChild(innerWrapper);\n } else {\n outerWrapper.appendChild(innerWrapper);\n }\n\n if (autoHeight) {\n var wp = middleWrapper ? middleWrapper : innerWrapper;\n wp.className += ' tns-ah';\n }\n\n containerParent.insertBefore(outerWrapper, container);\n innerWrapper.appendChild(container);\n\n // add id, class, aria attributes\n // before clone slides\n forEach(slideItems, function(item, i) {\n addClass(item, 'tns-item');\n if (!item.id) { item.id = slideId + '-item' + i; }\n if (!carousel && animateNormal) { addClass(item, animateNormal); }\n setAttrs(item, {\n 'aria-hidden': 'true',\n 'tabindex': '-1'\n });\n });\n\n // ## clone slides\n // carousel: n + slides + n\n // gallery: slides + n\n if (cloneCount) {\n var fragmentBefore = doc.createDocumentFragment(),\n fragmentAfter = doc.createDocumentFragment();\n\n for (var j = cloneCount; j--;) {\n var num = j%slideCount,\n cloneFirst = slideItems[num].cloneNode(true);\n addClass(cloneFirst, slideClonedClass);\n removeAttrs(cloneFirst, 'id');\n fragmentAfter.insertBefore(cloneFirst, fragmentAfter.firstChild);\n\n if (carousel) {\n var cloneLast = slideItems[slideCount - 1 - num].cloneNode(true);\n addClass(cloneLast, slideClonedClass);\n removeAttrs(cloneLast, 'id');\n fragmentBefore.appendChild(cloneLast);\n }\n }\n\n container.insertBefore(fragmentBefore, container.firstChild);\n container.appendChild(fragmentAfter);\n slideItems = container.children;\n }\n\n }\n\n function initSliderTransform () {\n // ## images loaded/failed\n if (hasOption('autoHeight') || autoWidth || !horizontal) {\n var imgs = container.querySelectorAll('img');\n\n // add img load event listener\n forEach(imgs, function(img) {\n var src = img.src;\n\n if (!lazyload) {\n // not data img\n if (src && src.indexOf('data:image') < 0) {\n img.src = '';\n addEvents(img, imgEvents);\n addClass(img, 'loading');\n\n img.src = src;\n // data img\n } else {\n imgLoaded(img);\n }\n }\n });\n\n // set imgsComplete\n raf(function(){ imgsLoadedCheck(arrayFromNodeList(imgs), function() { imgsComplete = true; }); });\n\n // reset imgs for auto height: check visible imgs only\n if (hasOption('autoHeight')) { imgs = getImageArray(index, Math.min(index + items - 1, slideCountNew - 1)); }\n\n lazyload ? initSliderTransformStyleCheck() : raf(function(){ imgsLoadedCheck(arrayFromNodeList(imgs), initSliderTransformStyleCheck); });\n\n } else {\n // set container transform property\n if (carousel) { doContainerTransformSilent(); }\n\n // update slider tools and events\n initTools();\n initEvents();\n }\n }\n\n function initSliderTransformStyleCheck () {\n if (autoWidth && slideCount > 1) {\n // check styles application\n var num = loop ? index : slideCount - 1;\n\n (function stylesApplicationCheck() {\n var left = slideItems[num].getBoundingClientRect().left;\n var right = slideItems[num - 1].getBoundingClientRect().right;\n\n (Math.abs(left - right) <= 1) ?\n initSliderTransformCore() :\n setTimeout(function(){ stylesApplicationCheck(); }, 16);\n })();\n\n } else {\n initSliderTransformCore();\n }\n }\n\n\n function initSliderTransformCore () {\n // run Fn()s which are rely on image loading\n if (!horizontal || autoWidth) {\n setSlidePositions();\n\n if (autoWidth) {\n rightBoundary = getRightBoundary();\n if (freezable) { freeze = getFreeze(); }\n indexMax = getIndexMax(); // <= slidePositions, rightBoundary <=\n resetVariblesWhenDisable(disable || freeze);\n } else {\n updateContentWrapperHeight();\n }\n }\n\n // set container transform property\n if (carousel) { doContainerTransformSilent(); }\n\n // update slider tools and events\n initTools();\n initEvents();\n }\n\n function initSheet () {\n // gallery:\n // set animation classes and left value for gallery slider\n if (!carousel) {\n for (var i = index, l = index + Math.min(slideCount, items); i < l; i++) {\n var item = slideItems[i];\n item.style.left = (i - index) * 100 / items + '%';\n addClass(item, animateIn);\n removeClass(item, animateNormal);\n }\n }\n\n // #### LAYOUT\n\n // ## INLINE-BLOCK VS FLOAT\n\n // ## PercentageLayout:\n // slides: inline-block\n // remove blank space between slides by set font-size: 0\n\n // ## Non PercentageLayout:\n // slides: float\n // margin-right: -100%\n // margin-left: ~\n\n // Resource: https://docs.google.com/spreadsheets/d/147up245wwTXeQYve3BRSAD4oVcvQmuGsFteJOeA5xNQ/edit?usp=sharing\n if (horizontal) {\n if (PERCENTAGELAYOUT || autoWidth) {\n addCSSRule(sheet, '#' + slideId + ' > .tns-item', 'font-size:' + win.getComputedStyle(slideItems[0]).fontSize + ';', getCssRulesLength(sheet));\n addCSSRule(sheet, '#' + slideId, 'font-size:0;', getCssRulesLength(sheet));\n } else if (carousel) {\n forEach(slideItems, function (slide, i) {\n slide.style.marginLeft = getSlideMarginLeft(i);\n });\n }\n }\n\n\n // ## BASIC STYLES\n if (CSSMQ) {\n // middle wrapper style\n if (TRANSITIONDURATION) {\n var str = middleWrapper && options.autoHeight ? getTransitionDurationStyle(options.speed) : '';\n addCSSRule(sheet, '#' + slideId + '-mw', str, getCssRulesLength(sheet));\n }\n\n // inner wrapper styles\n str = getInnerWrapperStyles(options.edgePadding, options.gutter, options.fixedWidth, options.speed, options.autoHeight);\n addCSSRule(sheet, '#' + slideId + '-iw', str, getCssRulesLength(sheet));\n\n // container styles\n if (carousel) {\n str = horizontal && !autoWidth ? 'width:' + getContainerWidth(options.fixedWidth, options.gutter, options.items) + ';' : '';\n if (TRANSITIONDURATION) { str += getTransitionDurationStyle(speed); }\n addCSSRule(sheet, '#' + slideId, str, getCssRulesLength(sheet));\n }\n\n // slide styles\n str = horizontal && !autoWidth ? getSlideWidthStyle(options.fixedWidth, options.gutter, options.items) : '';\n if (options.gutter) { str += getSlideGutterStyle(options.gutter); }\n // set gallery items transition-duration\n if (!carousel) {\n if (TRANSITIONDURATION) { str += getTransitionDurationStyle(speed); }\n if (ANIMATIONDURATION) { str += getAnimationDurationStyle(speed); }\n }\n if (str) { addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet)); }\n\n // non CSS mediaqueries: IE8\n // ## update inner wrapper, container, slides if needed\n // set inline styles for inner wrapper & container\n // insert stylesheet (one line) for slides only (since slides are many)\n } else {\n // middle wrapper styles\n update_carousel_transition_duration();\n\n // inner wrapper styles\n innerWrapper.style.cssText = getInnerWrapperStyles(edgePadding, gutter, fixedWidth, autoHeight);\n\n // container styles\n if (carousel && horizontal && !autoWidth) {\n container.style.width = getContainerWidth(fixedWidth, gutter, items);\n }\n\n // slide styles\n var str = horizontal && !autoWidth ? getSlideWidthStyle(fixedWidth, gutter, items) : '';\n if (gutter) { str += getSlideGutterStyle(gutter); }\n\n // append to the last line\n if (str) { addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet)); }\n }\n\n // ## MEDIAQUERIES\n if (responsive && CSSMQ) {\n for (var bp in responsive) {\n // bp: convert string to number\n bp = parseInt(bp);\n\n var opts = responsive[bp],\n str = '',\n middleWrapperStr = '',\n innerWrapperStr = '',\n containerStr = '',\n slideStr = '',\n itemsBP = !autoWidth ? getOption('items', bp) : null,\n fixedWidthBP = getOption('fixedWidth', bp),\n speedBP = getOption('speed', bp),\n edgePaddingBP = getOption('edgePadding', bp),\n autoHeightBP = getOption('autoHeight', bp),\n gutterBP = getOption('gutter', bp);\n\n // middle wrapper string\n if (TRANSITIONDURATION && middleWrapper && getOption('autoHeight', bp) && 'speed' in opts) {\n middleWrapperStr = '#' + slideId + '-mw{' + getTransitionDurationStyle(speedBP) + '}';\n }\n\n // inner wrapper string\n if ('edgePadding' in opts || 'gutter' in opts) {\n innerWrapperStr = '#' + slideId + '-iw{' + getInnerWrapperStyles(edgePaddingBP, gutterBP, fixedWidthBP, speedBP, autoHeightBP) + '}';\n }\n\n // container string\n if (carousel && horizontal && !autoWidth && ('fixedWidth' in opts || 'items' in opts || (fixedWidth && 'gutter' in opts))) {\n containerStr = 'width:' + getContainerWidth(fixedWidthBP, gutterBP, itemsBP) + ';';\n }\n if (TRANSITIONDURATION && 'speed' in opts) {\n containerStr += getTransitionDurationStyle(speedBP);\n }\n if (containerStr) {\n containerStr = '#' + slideId + '{' + containerStr + '}';\n }\n\n // slide string\n if ('fixedWidth' in opts || (fixedWidth && 'gutter' in opts) || !carousel && 'items' in opts) {\n slideStr += getSlideWidthStyle(fixedWidthBP, gutterBP, itemsBP);\n }\n if ('gutter' in opts) {\n slideStr += getSlideGutterStyle(gutterBP);\n }\n // set gallery items transition-duration\n if (!carousel && 'speed' in opts) {\n if (TRANSITIONDURATION) { slideStr += getTransitionDurationStyle(speedBP); }\n if (ANIMATIONDURATION) { slideStr += getAnimationDurationStyle(speedBP); }\n }\n if (slideStr) { slideStr = '#' + slideId + ' > .tns-item{' + slideStr + '}'; }\n\n // add up\n str = middleWrapperStr + innerWrapperStr + containerStr + slideStr;\n\n if (str) {\n sheet.insertRule('@media (min-width: ' + bp / 16 + 'em) {' + str + '}', sheet.cssRules.length);\n }\n }\n }\n }\n\n function initTools () {\n // == slides ==\n updateSlideStatus();\n\n // == live region ==\n outerWrapper.insertAdjacentHTML('afterbegin', '<div class=\"tns-liveregion tns-visually-hidden\" aria-live=\"polite\" aria-atomic=\"true\">slide <span class=\"current\">' + getLiveRegionStr() + '</span> of ' + slideCount + '</div>');\n liveregionCurrent = outerWrapper.querySelector('.tns-liveregion .current');\n\n // == autoplayInit ==\n if (hasAutoplay) {\n var txt = autoplay ? 'stop' : 'start';\n if (autoplayButton) {\n setAttrs(autoplayButton, {'data-action': txt});\n } else if (options.autoplayButtonOutput) {\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.autoplayPosition), '<button type=\"button\" data-action=\"' + txt + '\">' + autoplayHtmlStrings[0] + txt + autoplayHtmlStrings[1] + autoplayText[0] + '</button>');\n autoplayButton = outerWrapper.querySelector('[data-action]');\n }\n\n // add event\n if (autoplayButton) {\n addEvents(autoplayButton, {'click': toggleAutoplay});\n }\n\n if (autoplay) {\n startAutoplay();\n if (autoplayHoverPause) { addEvents(container, hoverEvents); }\n if (autoplayResetOnVisibility) { addEvents(container, visibilityEvent); }\n }\n }\n\n // == navInit ==\n if (hasNav) {\n var initIndex = !carousel ? 0 : cloneCount;\n // customized nav\n // will not hide the navs in case they're thumbnails\n if (navContainer) {\n setAttrs(navContainer, {'aria-label': 'Carousel Pagination'});\n navItems = navContainer.children;\n forEach(navItems, function(item, i) {\n setAttrs(item, {\n 'data-nav': i,\n 'tabindex': '-1',\n 'aria-label': navStr + (i + 1),\n 'aria-controls': slideId,\n });\n });\n\n // generated nav\n } else {\n var navHtml = '',\n hiddenStr = navAsThumbnails ? '' : 'style=\"display:none\"';\n for (var i = 0; i < slideCount; i++) {\n // hide nav items by default\n navHtml += '<button type=\"button\" data-nav=\"' + i +'\" tabindex=\"-1\" aria-controls=\"' + slideId + '\" ' + hiddenStr + ' aria-label=\"' + navStr + (i + 1) +'\"></button>';\n }\n navHtml = '<div class=\"tns-nav\" aria-label=\"Carousel Pagination\">' + navHtml + '</div>';\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.navPosition), navHtml);\n\n navContainer = outerWrapper.querySelector('.tns-nav');\n navItems = navContainer.children;\n }\n\n updateNavVisibility();\n\n // add transition\n if (TRANSITIONDURATION) {\n var prefix = TRANSITIONDURATION.substring(0, TRANSITIONDURATION.length - 18).toLowerCase(),\n str = 'transition: all ' + speed / 1000 + 's';\n\n if (prefix) {\n str = '-' + prefix + '-' + str;\n }\n\n addCSSRule(sheet, '[aria-controls^=' + slideId + '-item]', str, getCssRulesLength(sheet));\n }\n\n setAttrs(navItems[navCurrentIndex], {'aria-label': navStr + (navCurrentIndex + 1) + navStrCurrent});\n removeAttrs(navItems[navCurrentIndex], 'tabindex');\n addClass(navItems[navCurrentIndex], navActiveClass);\n\n // add events\n addEvents(navContainer, navEvents);\n }\n\n\n\n // == controlsInit ==\n if (hasControls) {\n if (!controlsContainer && (!prevButton || !nextButton)) {\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.controlsPosition), '<div class=\"tns-controls\" aria-label=\"Carousel Navigation\" tabindex=\"0\"><button type=\"button\" data-controls=\"prev\" tabindex=\"-1\" aria-controls=\"' + slideId +'\">' + controlsText[0] + '</button><button type=\"button\" data-controls=\"next\" tabindex=\"-1\" aria-controls=\"' + slideId +'\">' + controlsText[1] + '</button></div>');\n\n controlsContainer = outerWrapper.querySelector('.tns-controls');\n }\n\n if (!prevButton || !nextButton) {\n prevButton = controlsContainer.children[0];\n nextButton = controlsContainer.children[1];\n }\n\n if (options.controlsContainer) {\n setAttrs(controlsContainer, {\n 'aria-label': 'Carousel Navigation',\n 'tabindex': '0'\n });\n }\n\n if (options.controlsContainer || (options.prevButton && options.nextButton)) {\n setAttrs([prevButton, nextButton], {\n 'aria-controls': slideId,\n 'tabindex': '-1',\n });\n }\n\n if (options.controlsContainer || (options.prevButton && options.nextButton)) {\n setAttrs(prevButton, {'data-controls' : 'prev'});\n setAttrs(nextButton, {'data-controls' : 'next'});\n }\n\n prevIsButton = isButton(prevButton);\n nextIsButton = isButton(nextButton);\n\n updateControlsStatus();\n\n // add events\n if (controlsContainer) {\n addEvents(controlsContainer, controlsEvents);\n } else {\n addEvents(prevButton, controlsEvents);\n addEvents(nextButton, controlsEvents);\n }\n }\n\n // hide tools if needed\n disableUI();\n }\n\n function initEvents () {\n // add events\n if (carousel && TRANSITIONEND) {\n var eve = {};\n eve[TRANSITIONEND] = onTransitionEnd;\n addEvents(container, eve);\n }\n\n if (touch) { addEvents(container, touchEvents, options.preventScrollOnTouch); }\n if (mouseDrag) { addEvents(container, dragEvents); }\n if (arrowKeys) { addEvents(doc, docmentKeydownEvent); }\n\n if (nested === 'inner') {\n events.on('outerResized', function () {\n resizeTasks();\n events.emit('innerLoaded', info());\n });\n } else if (responsive || fixedWidth || autoWidth || autoHeight || !horizontal) {\n addEvents(win, {'resize': onResize});\n }\n\n if (autoHeight) {\n if (nested === 'outer') {\n events.on('innerLoaded', doAutoHeight);\n } else if (!disable) { doAutoHeight(); }\n }\n\n doLazyLoad();\n if (disable) { disableSlider(); } else if (freeze) { freezeSlider(); }\n\n events.on('indexChanged', additionalUpdates);\n if (nested === 'inner') { events.emit('innerLoaded', info()); }\n if (typeof onInit === 'function') { onInit(info()); }\n isOn = true;\n }\n\n function destroy () {\n // sheet\n sheet.disabled = true;\n if (sheet.ownerNode) { sheet.ownerNode.remove(); }\n\n // remove win event listeners\n removeEvents(win, {'resize': onResize});\n\n // arrowKeys, controls, nav\n if (arrowKeys) { removeEvents(doc, docmentKeydownEvent); }\n if (controlsContainer) { removeEvents(controlsContainer, controlsEvents); }\n if (navContainer) { removeEvents(navContainer, navEvents); }\n\n // autoplay\n removeEvents(container, hoverEvents);\n removeEvents(container, visibilityEvent);\n if (autoplayButton) { removeEvents(autoplayButton, {'click': toggleAutoplay}); }\n if (autoplay) { clearInterval(autoplayTimer); }\n\n // container\n if (carousel && TRANSITIONEND) {\n var eve = {};\n eve[TRANSITIONEND] = onTransitionEnd;\n removeEvents(container, eve);\n }\n if (touch) { removeEvents(container, touchEvents); }\n if (mouseDrag) { removeEvents(container, dragEvents); }\n\n // cache Object values in options && reset HTML\n var htmlList = [containerHTML, controlsContainerHTML, prevButtonHTML, nextButtonHTML, navContainerHTML, autoplayButtonHTML];\n\n tnsList.forEach(function(item, i) {\n var el = item === 'container' ? outerWrapper : options[item];\n\n if (typeof el === 'object' && el) {\n var prevEl = el.previousElementSibling ? el.previousElementSibling : false,\n parentEl = el.parentNode;\n el.outerHTML = htmlList[i];\n options[item] = prevEl ? prevEl.nextElementSibling : parentEl.firstElementChild;\n }\n });\n\n\n // reset variables\n tnsList = animateIn = animateOut = animateDelay = animateNormal = horizontal = outerWrapper = innerWrapper = container = containerParent = containerHTML = slideItems = slideCount = breakpointZone = windowWidth = autoWidth = fixedWidth = edgePadding = gutter = viewport = items = slideBy = viewportMax = arrowKeys = speed = rewind = loop = autoHeight = sheet = lazyload = slidePositions = slideItemsOut = cloneCount = slideCountNew = hasRightDeadZone = rightBoundary = updateIndexBeforeTransform = transformAttr = transformPrefix = transformPostfix = getIndexMax = index = indexCached = indexMin = indexMax = resizeTimer = swipeAngle = moveDirectionExpected = running = onInit = events = newContainerClasses = slideId = disable = disabled = freezable = freeze = frozen = controlsEvents = navEvents = hoverEvents = visibilityEvent = docmentKeydownEvent = touchEvents = dragEvents = hasControls = hasNav = navAsThumbnails = hasAutoplay = hasTouch = hasMouseDrag = slideActiveClass = imgCompleteClass = imgEvents = imgsComplete = controls = controlsText = controlsContainer = controlsContainerHTML = prevButton = nextButton = prevIsButton = nextIsButton = nav = navContainer = navContainerHTML = navItems = pages = pagesCached = navClicked = navCurrentIndex = navCurrentIndexCached = navActiveClass = navStr = navStrCurrent = autoplay = autoplayTimeout = autoplayDirection = autoplayText = autoplayHoverPause = autoplayButton = autoplayButtonHTML = autoplayResetOnVisibility = autoplayHtmlStrings = autoplayTimer = animating = autoplayHoverPaused = autoplayUserPaused = autoplayVisibilityPaused = initPosition = lastPosition = translateInit = disX = disY = panStart = rafIndex = getDist = touch = mouseDrag = null;\n // check variables\n // [animateIn, animateOut, animateDelay, animateNormal, horizontal, outerWrapper, innerWrapper, container, containerParent, containerHTML, slideItems, slideCount, breakpointZone, windowWidth, autoWidth, fixedWidth, edgePadding, gutter, viewport, items, slideBy, viewportMax, arrowKeys, speed, rewind, loop, autoHeight, sheet, lazyload, slidePositions, slideItemsOut, cloneCount, slideCountNew, hasRightDeadZone, rightBoundary, updateIndexBeforeTransform, transformAttr, transformPrefix, transformPostfix, getIndexMax, index, indexCached, indexMin, indexMax, resizeTimer, swipeAngle, moveDirectionExpected, running, onInit, events, newContainerClasses, slideId, disable, disabled, freezable, freeze, frozen, controlsEvents, navEvents, hoverEvents, visibilityEvent, docmentKeydownEvent, touchEvents, dragEvents, hasControls, hasNav, navAsThumbnails, hasAutoplay, hasTouch, hasMouseDrag, slideActiveClass, imgCompleteClass, imgEvents, imgsComplete, controls, controlsText, controlsContainer, controlsContainerHTML, prevButton, nextButton, prevIsButton, nextIsButton, nav, navContainer, navContainerHTML, navItems, pages, pagesCached, navClicked, navCurrentIndex, navCurrentIndexCached, navActiveClass, navStr, navStrCurrent, autoplay, autoplayTimeout, autoplayDirection, autoplayText, autoplayHoverPause, autoplayButton, autoplayButtonHTML, autoplayResetOnVisibility, autoplayHtmlStrings, autoplayTimer, animating, autoplayHoverPaused, autoplayUserPaused, autoplayVisibilityPaused, initPosition, lastPosition, translateInit, disX, disY, panStart, rafIndex, getDist, touch, mouseDrag ].forEach(function(item) { if (item !== null) { console.log(item); } });\n\n for (var a in this) {\n if (a !== 'rebuild') { this[a] = null; }\n }\n isOn = false;\n }\n\n// === ON RESIZE ===\n // responsive || fixedWidth || autoWidth || !horizontal\n function onResize (e) {\n raf(function(){ resizeTasks(getEvent(e)); });\n }\n\n function resizeTasks (e) {\n if (!isOn) { return; }\n if (nested === 'outer') { events.emit('outerResized', info(e)); }\n windowWidth = getWindowWidth();\n var bpChanged,\n breakpointZoneTem = breakpointZone,\n needContainerTransform = false;\n\n if (responsive) {\n setBreakpointZone();\n bpChanged = breakpointZoneTem !== breakpointZone;\n // if (hasRightDeadZone) { needContainerTransform = true; } // *?\n if (bpChanged) { events.emit('newBreakpointStart', info(e)); }\n }\n\n var indChanged,\n itemsChanged,\n itemsTem = items,\n disableTem = disable,\n freezeTem = freeze,\n arrowKeysTem = arrowKeys,\n controlsTem = controls,\n navTem = nav,\n touchTem = touch,\n mouseDragTem = mouseDrag,\n autoplayTem = autoplay,\n autoplayHoverPauseTem = autoplayHoverPause,\n autoplayResetOnVisibilityTem = autoplayResetOnVisibility,\n indexTem = index;\n\n if (bpChanged) {\n var fixedWidthTem = fixedWidth,\n autoHeightTem = autoHeight,\n controlsTextTem = controlsText,\n centerTem = center,\n autoplayTextTem = autoplayText;\n\n if (!CSSMQ) {\n var gutterTem = gutter,\n edgePaddingTem = edgePadding;\n }\n }\n\n // get option:\n // fixed width: viewport, fixedWidth, gutter => items\n // others: window width => all variables\n // all: items => slideBy\n arrowKeys = getOption('arrowKeys');\n controls = getOption('controls');\n nav = getOption('nav');\n touch = getOption('touch');\n center = getOption('center');\n mouseDrag = getOption('mouseDrag');\n autoplay = getOption('autoplay');\n autoplayHoverPause = getOption('autoplayHoverPause');\n autoplayResetOnVisibility = getOption('autoplayResetOnVisibility');\n\n if (bpChanged) {\n disable = getOption('disable');\n fixedWidth = getOption('fixedWidth');\n speed = getOption('speed');\n autoHeight = getOption('autoHeight');\n controlsText = getOption('controlsText');\n autoplayText = getOption('autoplayText');\n autoplayTimeout = getOption('autoplayTimeout');\n\n if (!CSSMQ) {\n edgePadding = getOption('edgePadding');\n gutter = getOption('gutter');\n }\n }\n // update options\n resetVariblesWhenDisable(disable);\n\n viewport = getViewportWidth(); // <= edgePadding, gutter\n if ((!horizontal || autoWidth) && !disable) {\n setSlidePositions();\n if (!horizontal) {\n updateContentWrapperHeight(); // <= setSlidePositions\n needContainerTransform = true;\n }\n }\n if (fixedWidth || autoWidth) {\n rightBoundary = getRightBoundary(); // autoWidth: <= viewport, slidePositions, gutter\n // fixedWidth: <= viewport, fixedWidth, gutter\n indexMax = getIndexMax(); // autoWidth: <= rightBoundary, slidePositions\n // fixedWidth: <= rightBoundary, fixedWidth, gutter\n }\n\n if (bpChanged || fixedWidth) {\n items = getOption('items');\n slideBy = getOption('slideBy');\n itemsChanged = items !== itemsTem;\n\n if (itemsChanged) {\n if (!fixedWidth && !autoWidth) { indexMax = getIndexMax(); } // <= items\n // check index before transform in case\n // slider reach the right edge then items become bigger\n updateIndex();\n }\n }\n\n if (bpChanged) {\n if (disable !== disableTem) {\n if (disable) {\n disableSlider();\n } else {\n enableSlider(); // <= slidePositions, rightBoundary, indexMax\n }\n }\n }\n\n if (freezable && (bpChanged || fixedWidth || autoWidth)) {\n freeze = getFreeze(); // <= autoWidth: slidePositions, gutter, viewport, rightBoundary\n // <= fixedWidth: fixedWidth, gutter, rightBoundary\n // <= others: items\n\n if (freeze !== freezeTem) {\n if (freeze) {\n doContainerTransform(getContainerTransformValue(getStartIndex(0)));\n freezeSlider();\n } else {\n unfreezeSlider();\n needContainerTransform = true;\n }\n }\n }\n\n resetVariblesWhenDisable(disable || freeze); // controls, nav, touch, mouseDrag, arrowKeys, autoplay, autoplayHoverPause, autoplayResetOnVisibility\n if (!autoplay) { autoplayHoverPause = autoplayResetOnVisibility = false; }\n\n if (arrowKeys !== arrowKeysTem) {\n arrowKeys ?\n addEvents(doc, docmentKeydownEvent) :\n removeEvents(doc, docmentKeydownEvent);\n }\n if (controls !== controlsTem) {\n if (controls) {\n if (controlsContainer) {\n showElement(controlsContainer);\n } else {\n if (prevButton) { showElement(prevButton); }\n if (nextButton) { showElement(nextButton); }\n }\n } else {\n if (controlsContainer) {\n hideElement(controlsContainer);\n } else {\n if (prevButton) { hideElement(prevButton); }\n if (nextButton) { hideElement(nextButton); }\n }\n }\n }\n if (nav !== navTem) {\n if (nav) {\n showElement(navContainer);\n updateNavVisibility();\n } else {\n hideElement(navContainer);\n }\n }\n if (touch !== touchTem) {\n touch ?\n addEvents(container, touchEvents, options.preventScrollOnTouch) :\n removeEvents(container, touchEvents);\n }\n if (mouseDrag !== mouseDragTem) {\n mouseDrag ?\n addEvents(container, dragEvents) :\n removeEvents(container, dragEvents);\n }\n if (autoplay !== autoplayTem) {\n if (autoplay) {\n if (autoplayButton) { showElement(autoplayButton); }\n if (!animating && !autoplayUserPaused) { startAutoplay(); }\n } else {\n if (autoplayButton) { hideElement(autoplayButton); }\n if (animating) { stopAutoplay(); }\n }\n }\n if (autoplayHoverPause !== autoplayHoverPauseTem) {\n autoplayHoverPause ?\n addEvents(container, hoverEvents) :\n removeEvents(container, hoverEvents);\n }\n if (autoplayResetOnVisibility !== autoplayResetOnVisibilityTem) {\n autoplayResetOnVisibility ?\n addEvents(doc, visibilityEvent) :\n removeEvents(doc, visibilityEvent);\n }\n\n if (bpChanged) {\n if (fixedWidth !== fixedWidthTem || center !== centerTem) { needContainerTransform = true; }\n\n if (autoHeight !== autoHeightTem) {\n if (!autoHeight) { innerWrapper.style.height = ''; }\n }\n\n if (controls && controlsText !== controlsTextTem) {\n prevButton.innerHTML = controlsText[0];\n nextButton.innerHTML = controlsText[1];\n }\n\n if (autoplayButton && autoplayText !== autoplayTextTem) {\n var i = autoplay ? 1 : 0,\n html = autoplayButton.innerHTML,\n len = html.length - autoplayTextTem[i].length;\n if (html.substring(len) === autoplayTextTem[i]) {\n autoplayButton.innerHTML = html.substring(0, len) + autoplayText[i];\n }\n }\n } else {\n if (center && (fixedWidth || autoWidth)) { needContainerTransform = true; }\n }\n\n if (itemsChanged || fixedWidth && !autoWidth) {\n pages = getPages();\n updateNavVisibility();\n }\n\n indChanged = index !== indexTem;\n if (indChanged) {\n events.emit('indexChanged', info());\n needContainerTransform = true;\n } else if (itemsChanged) {\n if (!indChanged) { additionalUpdates(); }\n } else if (fixedWidth || autoWidth) {\n doLazyLoad();\n updateSlideStatus();\n updateLiveRegion();\n }\n\n if (itemsChanged && !carousel) { updateGallerySlidePositions(); }\n\n if (!disable && !freeze) {\n // non-mediaqueries: IE8\n if (bpChanged && !CSSMQ) {\n // middle wrapper styles\n\n // inner wrapper styles\n if (edgePadding !== edgePaddingTem || gutter !== gutterTem) {\n innerWrapper.style.cssText = getInnerWrapperStyles(edgePadding, gutter, fixedWidth, speed, autoHeight);\n }\n\n if (horizontal) {\n // container styles\n if (carousel) {\n container.style.width = getContainerWidth(fixedWidth, gutter, items);\n }\n\n // slide styles\n var str = getSlideWidthStyle(fixedWidth, gutter, items) +\n getSlideGutterStyle(gutter);\n\n // remove the last line and\n // add new styles\n removeCSSRule(sheet, getCssRulesLength(sheet) - 1);\n addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet));\n }\n }\n\n // auto height\n if (autoHeight) { doAutoHeight(); }\n\n if (needContainerTransform) {\n doContainerTransformSilent();\n indexCached = index;\n }\n }\n\n if (bpChanged) { events.emit('newBreakpointEnd', info(e)); }\n }\n\n\n\n\n\n // === INITIALIZATION FUNCTIONS === //\n function getFreeze () {\n if (!fixedWidth && !autoWidth) {\n var a = center ? items - (items - 1) / 2 : items;\n return slideCount <= a;\n }\n\n var width = fixedWidth ? (fixedWidth + gutter) * slideCount : slidePositions[slideCount],\n vp = edgePadding ? viewport + edgePadding * 2 : viewport + gutter;\n\n if (center) {\n vp -= fixedWidth ? (viewport - fixedWidth) / 2 : (viewport - (slidePositions[index + 1] - slidePositions[index] - gutter)) / 2;\n }\n\n return width <= vp;\n }\n\n function setBreakpointZone () {\n breakpointZone = 0;\n for (var bp in responsive) {\n bp = parseInt(bp); // convert string to number\n if (windowWidth >= bp) { breakpointZone = bp; }\n }\n }\n\n // (slideBy, indexMin, indexMax) => index\n var updateIndex = (function () {\n return loop ?\n carousel ?\n // loop + carousel\n function () {\n var leftEdge = indexMin,\n rightEdge = indexMax;\n\n leftEdge += slideBy;\n rightEdge -= slideBy;\n\n // adjust edges when has edge paddings\n // or fixed-width slider with extra space on the right side\n if (edgePadding) {\n leftEdge += 1;\n rightEdge -= 1;\n } else if (fixedWidth) {\n if ((viewport + gutter)%(fixedWidth + gutter)) { rightEdge -= 1; }\n }\n\n if (cloneCount) {\n if (index > rightEdge) {\n index -= slideCount;\n } else if (index < leftEdge) {\n index += slideCount;\n }\n }\n } :\n // loop + gallery\n function() {\n if (index > indexMax) {\n while (index >= indexMin + slideCount) { index -= slideCount; }\n } else if (index < indexMin) {\n while (index <= indexMax - slideCount) { index += slideCount; }\n }\n } :\n // non-loop\n function() {\n index = Math.max(indexMin, Math.min(indexMax, index));\n };\n })();\n\n function disableUI () {\n if (!autoplay && autoplayButton) { hideElement(autoplayButton); }\n if (!nav && navContainer) { hideElement(navContainer); }\n if (!controls) {\n if (controlsContainer) {\n hideElement(controlsContainer);\n } else {\n if (prevButton) { hideElement(prevButton); }\n if (nextButton) { hideElement(nextButton); }\n }\n }\n }\n\n function enableUI () {\n if (autoplay && autoplayButton) { showElement(autoplayButton); }\n if (nav && navContainer) { showElement(navContainer); }\n if (controls) {\n if (controlsContainer) {\n showElement(controlsContainer);\n } else {\n if (prevButton) { showElement(prevButton); }\n if (nextButton) { showElement(nextButton); }\n }\n }\n }\n\n function freezeSlider () {\n if (frozen) { return; }\n\n // remove edge padding from inner wrapper\n if (edgePadding) { innerWrapper.style.margin = '0px'; }\n\n // add class tns-transparent to cloned slides\n if (cloneCount) {\n var str = 'tns-transparent';\n for (var i = cloneCount; i--;) {\n if (carousel) { addClass(slideItems[i], str); }\n addClass(slideItems[slideCountNew - i - 1], str);\n }\n }\n\n // update tools\n disableUI();\n\n frozen = true;\n }\n\n function unfreezeSlider () {\n if (!frozen) { return; }\n\n // restore edge padding for inner wrapper\n // for mordern browsers\n if (edgePadding && CSSMQ) { innerWrapper.style.margin = ''; }\n\n // remove class tns-transparent to cloned slides\n if (cloneCount) {\n var str = 'tns-transparent';\n for (var i = cloneCount; i--;) {\n if (carousel) { removeClass(slideItems[i], str); }\n removeClass(slideItems[slideCountNew - i - 1], str);\n }\n }\n\n // update tools\n enableUI();\n\n frozen = false;\n }\n\n function disableSlider () {\n if (disabled) { return; }\n\n sheet.disabled = true;\n container.className = container.className.replace(newContainerClasses.substring(1), '');\n removeAttrs(container, ['style']);\n if (loop) {\n for (var j = cloneCount; j--;) {\n if (carousel) { hideElement(slideItems[j]); }\n hideElement(slideItems[slideCountNew - j - 1]);\n }\n }\n\n // vertical slider\n if (!horizontal || !carousel) { removeAttrs(innerWrapper, ['style']); }\n\n // gallery\n if (!carousel) {\n for (var i = index, l = index + slideCount; i < l; i++) {\n var item = slideItems[i];\n removeAttrs(item, ['style']);\n removeClass(item, animateIn);\n removeClass(item, animateNormal);\n }\n }\n\n // update tools\n disableUI();\n\n disabled = true;\n }\n\n function enableSlider () {\n if (!disabled) { return; }\n\n sheet.disabled = false;\n container.className += newContainerClasses;\n doContainerTransformSilent();\n\n if (loop) {\n for (var j = cloneCount; j--;) {\n if (carousel) { showElement(slideItems[j]); }\n showElement(slideItems[slideCountNew - j - 1]);\n }\n }\n\n // gallery\n if (!carousel) {\n for (var i = index, l = index + slideCount; i < l; i++) {\n var item = slideItems[i],\n classN = i < index + items ? animateIn : animateNormal;\n item.style.left = (i - index) * 100 / items + '%';\n addClass(item, classN);\n }\n }\n\n // update tools\n enableUI();\n\n disabled = false;\n }\n\n function updateLiveRegion () {\n var str = getLiveRegionStr();\n if (liveregionCurrent.innerHTML !== str) { liveregionCurrent.innerHTML = str; }\n }\n\n function getLiveRegionStr () {\n var arr = getVisibleSlideRange(),\n start = arr[0] + 1,\n end = arr[1] + 1;\n return start === end ? start + '' : start + ' to ' + end;\n }\n\n function getVisibleSlideRange (val) {\n if (val == null) { val = getContainerTransformValue(); }\n var start = index, end, rangestart, rangeend;\n\n // get range start, range end for autoWidth and fixedWidth\n if (center || edgePadding) {\n if (autoWidth || fixedWidth) {\n rangestart = - (parseFloat(val) + edgePadding);\n rangeend = rangestart + viewport + edgePadding * 2;\n }\n } else {\n if (autoWidth) {\n rangestart = slidePositions[index];\n rangeend = rangestart + viewport;\n }\n }\n\n // get start, end\n // - check auto width\n if (autoWidth) {\n slidePositions.forEach(function(point, i) {\n if (i < slideCountNew) {\n if ((center || edgePadding) && point <= rangestart + 0.5) { start = i; }\n if (rangeend - point >= 0.5) { end = i; }\n }\n });\n\n // - check percentage width, fixed width\n } else {\n\n if (fixedWidth) {\n var cell = fixedWidth + gutter;\n if (center || edgePadding) {\n start = Math.floor(rangestart/cell);\n end = Math.ceil(rangeend/cell - 1);\n } else {\n end = start + Math.ceil(viewport/cell) - 1;\n }\n\n } else {\n if (center || edgePadding) {\n var a = items - 1;\n if (center) {\n start -= a / 2;\n end = index + a / 2;\n } else {\n end = index + a;\n }\n\n if (edgePadding) {\n var b = edgePadding * items / viewport;\n start -= b;\n end += b;\n }\n\n start = Math.floor(start);\n end = Math.ceil(end);\n } else {\n end = start + items - 1;\n }\n }\n\n start = Math.max(start, 0);\n end = Math.min(end, slideCountNew - 1);\n }\n\n return [start, end];\n }\n\n function doLazyLoad () {\n if (lazyload && !disable) {\n var arg = getVisibleSlideRange();\n arg.push(lazyloadSelector);\n\n getImageArray.apply(null, arg).forEach(function (img) {\n if (!hasClass(img, imgCompleteClass)) {\n // stop propagation transitionend event to container\n var eve = {};\n eve[TRANSITIONEND] = function (e) { e.stopPropagation(); };\n addEvents(img, eve);\n\n addEvents(img, imgEvents);\n\n // update src\n img.src = getAttr(img, 'data-src');\n\n // update srcset\n var srcset = getAttr(img, 'data-srcset');\n if (srcset) { img.srcset = srcset; }\n\n addClass(img, 'loading');\n }\n });\n }\n }\n\n function onImgLoaded (e) {\n imgLoaded(getTarget(e));\n }\n\n function onImgFailed (e) {\n imgFailed(getTarget(e));\n }\n\n function imgLoaded (img) {\n addClass(img, 'loaded');\n imgCompleted(img);\n }\n\n function imgFailed (img) {\n addClass(img, 'failed');\n imgCompleted(img);\n }\n\n function imgCompleted (img) {\n addClass(img, imgCompleteClass);\n removeClass(img, 'loading');\n removeEvents(img, imgEvents);\n }\n\n function getImageArray (start, end, imgSelector) {\n var imgs = [];\n if (!imgSelector) { imgSelector = 'img'; }\n\n while (start <= end) {\n forEach(slideItems[start].querySelectorAll(imgSelector), function (img) { imgs.push(img); });\n start++;\n }\n\n return imgs;\n }\n\n // check if all visible images are loaded\n // and update container height if it's done\n function doAutoHeight () {\n var imgs = getImageArray.apply(null, getVisibleSlideRange());\n raf(function(){ imgsLoadedCheck(imgs, updateInnerWrapperHeight); });\n }\n\n function imgsLoadedCheck (imgs, cb) {\n // execute callback function if all images are complete\n if (imgsComplete) { return cb(); }\n\n // check image classes\n imgs.forEach(function (img, index) {\n if (!lazyload && img.complete) { imgCompleted(img); } // Check image.complete\n if (hasClass(img, imgCompleteClass)) { imgs.splice(index, 1); }\n });\n\n // execute callback function if selected images are all complete\n if (!imgs.length) { return cb(); }\n\n // otherwise execute this functiona again\n raf(function(){ imgsLoadedCheck(imgs, cb); });\n }\n\n function additionalUpdates () {\n doLazyLoad();\n updateSlideStatus();\n updateLiveRegion();\n updateControlsStatus();\n updateNavStatus();\n }\n\n\n function update_carousel_transition_duration () {\n if (carousel && autoHeight) {\n middleWrapper.style[TRANSITIONDURATION] = speed / 1000 + 's';\n }\n }\n\n function getMaxSlideHeight (slideStart, slideRange) {\n var heights = [];\n for (var i = slideStart, l = Math.min(slideStart + slideRange, slideCountNew); i < l; i++) {\n heights.push(slideItems[i].offsetHeight);\n }\n\n return Math.max.apply(null, heights);\n }\n\n // update inner wrapper height\n // 1. get the max-height of the visible slides\n // 2. set transitionDuration to speed\n // 3. update inner wrapper height to max-height\n // 4. set transitionDuration to 0s after transition done\n function updateInnerWrapperHeight () {\n var maxHeight = autoHeight ? getMaxSlideHeight(index, items) : getMaxSlideHeight(cloneCount, slideCount),\n wp = middleWrapper ? middleWrapper : innerWrapper;\n\n if (wp.style.height !== maxHeight) { wp.style.height = maxHeight + 'px'; }\n }\n\n // get the distance from the top edge of the first slide to each slide\n // (init) => slidePositions\n function setSlidePositions () {\n slidePositions = [0];\n var attr = horizontal ? 'left' : 'top',\n attr2 = horizontal ? 'right' : 'bottom',\n base = slideItems[0].getBoundingClientRect()[attr];\n\n forEach(slideItems, function(item, i) {\n // skip the first slide\n if (i) { slidePositions.push(item.getBoundingClientRect()[attr] - base); }\n // add the end edge\n if (i === slideCountNew - 1) { slidePositions.push(item.getBoundingClientRect()[attr2] - base); }\n });\n }\n\n // update slide\n function updateSlideStatus () {\n var range = getVisibleSlideRange(),\n start = range[0],\n end = range[1];\n\n forEach(slideItems, function(item, i) {\n // show slides\n if (i >= start && i <= end) {\n if (hasAttr(item, 'aria-hidden')) {\n removeAttrs(item, ['aria-hidden', 'tabindex']);\n addClass(item, slideActiveClass);\n }\n // hide slides\n } else {\n if (!hasAttr(item, 'aria-hidden')) {\n setAttrs(item, {\n 'aria-hidden': 'true',\n 'tabindex': '-1'\n });\n removeClass(item, slideActiveClass);\n }\n }\n });\n }\n\n // gallery: update slide position\n function updateGallerySlidePositions () {\n var l = index + Math.min(slideCount, items);\n for (var i = slideCountNew; i--;) {\n var item = slideItems[i];\n\n if (i >= index && i < l) {\n // add transitions to visible slides when adjusting their positions\n addClass(item, 'tns-moving');\n\n item.style.left = (i - index) * 100 / items + '%';\n addClass(item, animateIn);\n removeClass(item, animateNormal);\n } else if (item.style.left) {\n item.style.left = '';\n addClass(item, animateNormal);\n removeClass(item, animateIn);\n }\n\n // remove outlet animation\n removeClass(item, animateOut);\n }\n\n // removing '.tns-moving'\n setTimeout(function() {\n forEach(slideItems, function(el) {\n removeClass(el, 'tns-moving');\n });\n }, 300);\n }\n\n // set tabindex on Nav\n function updateNavStatus () {\n // get current nav\n if (nav) {\n navCurrentIndex = navClicked >= 0 ? navClicked : getCurrentNavIndex();\n navClicked = -1;\n\n if (navCurrentIndex !== navCurrentIndexCached) {\n var navPrev = navItems[navCurrentIndexCached],\n navCurrent = navItems[navCurrentIndex];\n\n setAttrs(navPrev, {\n 'tabindex': '-1',\n 'aria-label': navStr + (navCurrentIndexCached + 1)\n });\n removeClass(navPrev, navActiveClass);\n\n setAttrs(navCurrent, {'aria-label': navStr + (navCurrentIndex + 1) + navStrCurrent});\n removeAttrs(navCurrent, 'tabindex');\n addClass(navCurrent, navActiveClass);\n\n navCurrentIndexCached = navCurrentIndex;\n }\n }\n }\n\n function getLowerCaseNodeName (el) {\n return el.nodeName.toLowerCase();\n }\n\n function isButton (el) {\n return getLowerCaseNodeName(el) === 'button';\n }\n\n function isAriaDisabled (el) {\n return el.getAttribute('aria-disabled') === 'true';\n }\n\n function disEnableElement (isButton, el, val) {\n if (isButton) {\n el.disabled = val;\n } else {\n el.setAttribute('aria-disabled', val.toString());\n }\n }\n\n // set 'disabled' to true on controls when reach the edges\n function updateControlsStatus () {\n if (!controls || rewind || loop) { return; }\n\n var prevDisabled = (prevIsButton) ? prevButton.disabled : isAriaDisabled(prevButton),\n nextDisabled = (nextIsButton) ? nextButton.disabled : isAriaDisabled(nextButton),\n disablePrev = (index <= indexMin) ? true : false,\n disableNext = (!rewind && index >= indexMax) ? true : false;\n\n if (disablePrev && !prevDisabled) {\n disEnableElement(prevIsButton, prevButton, true);\n }\n if (!disablePrev && prevDisabled) {\n disEnableElement(prevIsButton, prevButton, false);\n }\n if (disableNext && !nextDisabled) {\n disEnableElement(nextIsButton, nextButton, true);\n }\n if (!disableNext && nextDisabled) {\n disEnableElement(nextIsButton, nextButton, false);\n }\n }\n\n // set duration\n function resetDuration (el, str) {\n if (TRANSITIONDURATION) { el.style[TRANSITIONDURATION] = str; }\n }\n\n function getSliderWidth () {\n return fixedWidth ? (fixedWidth + gutter) * slideCountNew : slidePositions[slideCountNew];\n }\n\n function getCenterGap (num) {\n if (num == null) { num = index; }\n\n var gap = edgePadding ? gutter : 0;\n return autoWidth ? ((viewport - gap) - (slidePositions[num + 1] - slidePositions[num] - gutter))/2 :\n fixedWidth ? (viewport - fixedWidth) / 2 :\n (items - 1) / 2;\n }\n\n function getRightBoundary () {\n var gap = edgePadding ? gutter : 0,\n result = (viewport + gap) - getSliderWidth();\n\n if (center && !loop) {\n result = fixedWidth ? - (fixedWidth + gutter) * (slideCountNew - 1) - getCenterGap() :\n getCenterGap(slideCountNew - 1) - slidePositions[slideCountNew - 1];\n }\n if (result > 0) { result = 0; }\n\n return result;\n }\n\n function getContainerTransformValue (num) {\n if (num == null) { num = index; }\n\n var val;\n if (horizontal && !autoWidth) {\n if (fixedWidth) {\n val = - (fixedWidth + gutter) * num;\n if (center) { val += getCenterGap(); }\n } else {\n var denominator = TRANSFORM ? slideCountNew : items;\n if (center) { num -= getCenterGap(); }\n val = - num * 100 / denominator;\n }\n } else {\n val = - slidePositions[num];\n if (center && autoWidth) {\n val += getCenterGap();\n }\n }\n\n if (hasRightDeadZone) { val = Math.max(val, rightBoundary); }\n\n val += (horizontal && !autoWidth && !fixedWidth) ? '%' : 'px';\n\n return val;\n }\n\n function doContainerTransformSilent (val) {\n resetDuration(container, '0s');\n doContainerTransform(val);\n }\n\n function doContainerTransform (val) {\n if (val == null) { val = getContainerTransformValue(); }\n if (textDirection === 'rtl' && val.charAt(0) === '-') {\n val = val.substr(1);\n }\n container.style[transformAttr] = transformPrefix + val + transformPostfix;\n }\n\n function animateSlide (number, classOut, classIn, isOut) {\n var l = number + items;\n if (!loop) { l = Math.min(l, slideCountNew); }\n\n for (var i = number; i < l; i++) {\n var item = slideItems[i];\n\n // set item positions\n if (!isOut) { item.style.left = (i - index) * 100 / items + '%'; }\n\n if (animateDelay && TRANSITIONDELAY) {\n item.style[TRANSITIONDELAY] = item.style[ANIMATIONDELAY] = animateDelay * (i - number) / 1000 + 's';\n }\n removeClass(item, classOut);\n addClass(item, classIn);\n\n if (isOut) { slideItemsOut.push(item); }\n }\n }\n\n // make transfer after click/drag:\n // 1. change 'transform' property for mordern browsers\n // 2. change 'left' property for legacy browsers\n var transformCore = (function () {\n return carousel ?\n function () {\n resetDuration(container, '');\n if (TRANSITIONDURATION || !speed) {\n // for morden browsers with non-zero duration or\n // zero duration for all browsers\n doContainerTransform();\n // run fallback function manually\n // when duration is 0 / container is hidden\n if (!speed || !isVisible(container)) { onTransitionEnd(); }\n\n } else {\n // for old browser with non-zero duration\n jsTransform(container, transformAttr, transformPrefix, transformPostfix, getContainerTransformValue(), speed, onTransitionEnd);\n }\n\n if (!horizontal) { updateContentWrapperHeight(); }\n } :\n function () {\n slideItemsOut = [];\n\n var eve = {};\n eve[TRANSITIONEND] = eve[ANIMATIONEND] = onTransitionEnd;\n removeEvents(slideItems[indexCached], eve);\n addEvents(slideItems[index], eve);\n\n animateSlide(indexCached, animateIn, animateOut, true);\n animateSlide(index, animateNormal, animateIn);\n\n // run fallback function manually\n // when transition or animation not supported / duration is 0\n if (!TRANSITIONEND || !ANIMATIONEND || !speed || !isVisible(container)) { onTransitionEnd(); }\n };\n })();\n\n function render (e, sliderMoved) {\n if (updateIndexBeforeTransform) { updateIndex(); }\n\n // render when slider was moved (touch or drag) even though index may not change\n if (index !== indexCached || sliderMoved) {\n // events\n events.emit('indexChanged', info());\n events.emit('transitionStart', info());\n if (autoHeight) { doAutoHeight(); }\n\n // pause autoplay when click or keydown from user\n if (animating && e && ['click', 'keydown'].indexOf(e.type) >= 0) { stopAutoplay(); }\n\n running = true;\n transformCore();\n }\n }\n\n /*\n * Transfer prefixed properties to the same format\n * CSS: -Webkit-Transform => webkittransform\n * JS: WebkitTransform => webkittransform\n * @param {string} str - property\n *\n */\n function strTrans (str) {\n return str.toLowerCase().replace(/-/g, '');\n }\n\n // AFTER TRANSFORM\n // Things need to be done after a transfer:\n // 1. check index\n // 2. add classes to visible slide\n // 3. disable controls buttons when reach the first/last slide in non-loop slider\n // 4. update nav status\n // 5. lazyload images\n // 6. update container height\n function onTransitionEnd (event) {\n // check running on gallery mode\n // make sure trantionend/animationend events run only once\n if (carousel || running) {\n events.emit('transitionEnd', info(event));\n\n if (!carousel && slideItemsOut.length > 0) {\n for (var i = 0; i < slideItemsOut.length; i++) {\n var item = slideItemsOut[i];\n // set item positions\n item.style.left = '';\n\n if (ANIMATIONDELAY && TRANSITIONDELAY) {\n item.style[ANIMATIONDELAY] = '';\n item.style[TRANSITIONDELAY] = '';\n }\n removeClass(item, animateOut);\n addClass(item, animateNormal);\n }\n }\n\n /* update slides, nav, controls after checking ...\n * => legacy browsers who don't support 'event'\n * have to check event first, otherwise event.target will cause an error\n * => or 'gallery' mode:\n * + event target is slide item\n * => or 'carousel' mode:\n * + event target is container,\n * + event.property is the same with transform attribute\n */\n if (!event ||\n !carousel && event.target.parentNode === container ||\n event.target === container && strTrans(event.propertyName) === strTrans(transformAttr)) {\n\n if (!updateIndexBeforeTransform) {\n var indexTem = index;\n updateIndex();\n if (index !== indexTem) {\n events.emit('indexChanged', info());\n\n doContainerTransformSilent();\n }\n }\n\n if (nested === 'inner') { events.emit('innerLoaded', info()); }\n running = false;\n indexCached = index;\n }\n }\n\n }\n\n // # ACTIONS\n function goTo (targetIndex, e) {\n if (freeze) { return; }\n\n // prev slideBy\n if (targetIndex === 'prev') {\n onControlsClick(e, -1);\n\n // next slideBy\n } else if (targetIndex === 'next') {\n onControlsClick(e, 1);\n\n // go to exact slide\n } else {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n\n var absIndex = getAbsIndex(),\n indexGap = 0;\n\n if (targetIndex === 'first') {\n indexGap = - absIndex;\n } else if (targetIndex === 'last') {\n indexGap = carousel ? slideCount - items - absIndex : slideCount - 1 - absIndex;\n } else {\n if (typeof targetIndex !== 'number') { targetIndex = parseInt(targetIndex); }\n\n if (!isNaN(targetIndex)) {\n // from directly called goTo function\n if (!e) { targetIndex = Math.max(0, Math.min(slideCount - 1, targetIndex)); }\n\n indexGap = targetIndex - absIndex;\n }\n }\n\n // gallery: make sure new page won't overlap with current page\n if (!carousel && indexGap && Math.abs(indexGap) < items) {\n var factor = indexGap > 0 ? 1 : -1;\n indexGap += (index + indexGap - slideCount) >= indexMin ? slideCount * factor : slideCount * 2 * factor * -1;\n }\n\n index += indexGap;\n\n // make sure index is in range\n if (carousel && loop) {\n if (index < indexMin) { index += slideCount; }\n if (index > indexMax) { index -= slideCount; }\n }\n\n // if index is changed, start rendering\n if (getAbsIndex(index) !== getAbsIndex(indexCached)) {\n render(e);\n }\n\n }\n }\n\n // on controls click\n function onControlsClick (e, dir) {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n var passEventObject;\n\n if (!dir) {\n e = getEvent(e);\n var target = getTarget(e);\n\n while (target !== controlsContainer && [prevButton, nextButton].indexOf(target) < 0) { target = target.parentNode; }\n\n var targetIn = [prevButton, nextButton].indexOf(target);\n if (targetIn >= 0) {\n passEventObject = true;\n dir = targetIn === 0 ? -1 : 1;\n }\n }\n\n if (rewind) {\n if (index === indexMin && dir === -1) {\n goTo('last', e);\n return;\n } else if (index === indexMax && dir === 1) {\n goTo('first', e);\n return;\n }\n }\n\n if (dir) {\n index += slideBy * dir;\n if (autoWidth) { index = Math.floor(index); }\n // pass e when click control buttons or keydown\n render((passEventObject || (e && e.type === 'keydown')) ? e : null);\n }\n }\n\n // on nav click\n function onNavClick (e) {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n\n e = getEvent(e);\n var target = getTarget(e), navIndex;\n\n // find the clicked nav item\n while (target !== navContainer && !hasAttr(target, 'data-nav')) { target = target.parentNode; }\n if (hasAttr(target, 'data-nav')) {\n var navIndex = navClicked = Number(getAttr(target, 'data-nav')),\n targetIndexBase = fixedWidth || autoWidth ? navIndex * slideCount / pages : navIndex * items,\n targetIndex = navAsThumbnails ? navIndex : Math.min(Math.ceil(targetIndexBase), slideCount - 1);\n goTo(targetIndex, e);\n\n if (navCurrentIndex === navIndex) {\n if (animating) { stopAutoplay(); }\n navClicked = -1; // reset navClicked\n }\n }\n }\n\n // autoplay functions\n function setAutoplayTimer () {\n autoplayTimer = setInterval(function () {\n onControlsClick(null, autoplayDirection);\n }, autoplayTimeout);\n\n animating = true;\n }\n\n function stopAutoplayTimer () {\n clearInterval(autoplayTimer);\n animating = false;\n }\n\n function updateAutoplayButton (action, txt) {\n setAttrs(autoplayButton, {'data-action': action});\n autoplayButton.innerHTML = autoplayHtmlStrings[0] + action + autoplayHtmlStrings[1] + txt;\n }\n\n function startAutoplay () {\n setAutoplayTimer();\n if (autoplayButton) { updateAutoplayButton('stop', autoplayText[1]); }\n }\n\n function stopAutoplay () {\n stopAutoplayTimer();\n if (autoplayButton) { updateAutoplayButton('start', autoplayText[0]); }\n }\n\n // programaitcally play/pause the slider\n function play () {\n if (autoplay && !animating) {\n startAutoplay();\n autoplayUserPaused = false;\n }\n }\n function pause () {\n if (animating) {\n stopAutoplay();\n autoplayUserPaused = true;\n }\n }\n\n function toggleAutoplay () {\n if (animating) {\n stopAutoplay();\n autoplayUserPaused = true;\n } else {\n startAutoplay();\n autoplayUserPaused = false;\n }\n }\n\n function onVisibilityChange () {\n if (doc.hidden) {\n if (animating) {\n stopAutoplayTimer();\n autoplayVisibilityPaused = true;\n }\n } else if (autoplayVisibilityPaused) {\n setAutoplayTimer();\n autoplayVisibilityPaused = false;\n }\n }\n\n function mouseoverPause () {\n if (animating) {\n stopAutoplayTimer();\n autoplayHoverPaused = true;\n }\n }\n\n function mouseoutRestart () {\n if (autoplayHoverPaused) {\n setAutoplayTimer();\n autoplayHoverPaused = false;\n }\n }\n\n // keydown events on document\n function onDocumentKeydown (e) {\n e = getEvent(e);\n var keyIndex = [KEYS.LEFT, KEYS.RIGHT].indexOf(e.keyCode);\n\n if (keyIndex >= 0) {\n onControlsClick(e, keyIndex === 0 ? -1 : 1);\n }\n }\n\n // on key control\n function onControlsKeydown (e) {\n e = getEvent(e);\n var keyIndex = [KEYS.LEFT, KEYS.RIGHT].indexOf(e.keyCode);\n\n if (keyIndex >= 0) {\n if (keyIndex === 0) {\n if (!prevButton.disabled) { onControlsClick(e, -1); }\n } else if (!nextButton.disabled) {\n onControlsClick(e, 1);\n }\n }\n }\n\n // set focus\n function setFocus (el) {\n el.focus();\n }\n\n // on key nav\n function onNavKeydown (e) {\n e = getEvent(e);\n var curElement = doc.activeElement;\n if (!hasAttr(curElement, 'data-nav')) { return; }\n\n // var code = e.keyCode,\n var keyIndex = [KEYS.LEFT, KEYS.RIGHT, KEYS.ENTER, KEYS.SPACE].indexOf(e.keyCode),\n navIndex = Number(getAttr(curElement, 'data-nav'));\n\n if (keyIndex >= 0) {\n if (keyIndex === 0) {\n if (navIndex > 0) { setFocus(navItems[navIndex - 1]); }\n } else if (keyIndex === 1) {\n if (navIndex < pages - 1) { setFocus(navItems[navIndex + 1]); }\n } else {\n navClicked = navIndex;\n goTo(navIndex, e);\n }\n }\n }\n\n function getEvent (e) {\n e = e || win.event;\n return isTouchEvent(e) ? e.changedTouches[0] : e;\n }\n function getTarget (e) {\n return e.target || win.event.srcElement;\n }\n\n function isTouchEvent (e) {\n return e.type.indexOf('touch') >= 0;\n }\n\n function preventDefaultBehavior (e) {\n e.preventDefault ? e.preventDefault() : e.returnValue = false;\n }\n\n function getMoveDirectionExpected () {\n return getTouchDirection(toDegree(lastPosition.y - initPosition.y, lastPosition.x - initPosition.x), swipeAngle) === options.axis;\n }\n\n function onPanStart (e) {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n\n if (autoplay && animating) { stopAutoplayTimer(); }\n\n panStart = true;\n if (rafIndex) {\n caf(rafIndex);\n rafIndex = null;\n }\n\n var $ = getEvent(e);\n events.emit(isTouchEvent(e) ? 'touchStart' : 'dragStart', info(e));\n\n if (!isTouchEvent(e) && ['img', 'a'].indexOf(getLowerCaseNodeName(getTarget(e))) >= 0) {\n preventDefaultBehavior(e);\n }\n\n lastPosition.x = initPosition.x = $.clientX;\n lastPosition.y = initPosition.y = $.clientY;\n if (carousel) {\n translateInit = parseFloat(container.style[transformAttr].replace(transformPrefix, ''));\n resetDuration(container, '0s');\n }\n }\n\n function onPanMove (e) {\n if (panStart) {\n var $ = getEvent(e);\n lastPosition.x = $.clientX;\n lastPosition.y = $.clientY;\n\n if (carousel) {\n if (!rafIndex) { rafIndex = raf(function(){ panUpdate(e); }); }\n } else {\n if (moveDirectionExpected === '?') { moveDirectionExpected = getMoveDirectionExpected(); }\n if (moveDirectionExpected) { preventScroll = true; }\n }\n\n if ((typeof e.cancelable !== 'boolean' || e.cancelable) && preventScroll) {\n e.preventDefault();\n }\n }\n }\n\n function panUpdate (e) {\n if (!moveDirectionExpected) {\n panStart = false;\n return;\n }\n caf(rafIndex);\n if (panStart) { rafIndex = raf(function(){ panUpdate(e); }); }\n\n if (moveDirectionExpected === '?') { moveDirectionExpected = getMoveDirectionExpected(); }\n if (moveDirectionExpected) {\n if (!preventScroll && isTouchEvent(e)) { preventScroll = true; }\n\n try {\n if (e.type) { events.emit(isTouchEvent(e) ? 'touchMove' : 'dragMove', info(e)); }\n } catch(err) {}\n\n var x = translateInit,\n dist = getDist(lastPosition, initPosition);\n if (!horizontal || fixedWidth || autoWidth) {\n x += dist;\n x += 'px';\n } else {\n var percentageX = TRANSFORM ? dist * items * 100 / ((viewport + gutter) * slideCountNew): dist * 100 / (viewport + gutter);\n x += percentageX;\n x += '%';\n }\n\n container.style[transformAttr] = transformPrefix + x + transformPostfix;\n }\n }\n\n function onPanEnd (e) {\n if (panStart) {\n if (rafIndex) {\n caf(rafIndex);\n rafIndex = null;\n }\n if (carousel) { resetDuration(container, ''); }\n panStart = false;\n\n var $ = getEvent(e);\n lastPosition.x = $.clientX;\n lastPosition.y = $.clientY;\n var dist = getDist(lastPosition, initPosition);\n\n if (Math.abs(dist)) {\n // drag vs click\n if (!isTouchEvent(e)) {\n // prevent \"click\"\n var target = getTarget(e);\n addEvents(target, {'click': function preventClick (e) {\n preventDefaultBehavior(e);\n removeEvents(target, {'click': preventClick});\n }});\n }\n\n if (carousel) {\n rafIndex = raf(function() {\n if (horizontal && !autoWidth) {\n var indexMoved = - dist * items / (viewport + gutter);\n indexMoved = dist > 0 ? Math.floor(indexMoved) : Math.ceil(indexMoved);\n if (textDirection === 'rtl') { \n index += indexMoved * -1;\n } else {\n index += indexMoved;\n }\n } else {\n var moved = - (translateInit + dist);\n if (moved <= 0) {\n index = indexMin;\n } else if (moved >= slidePositions[slideCountNew - 1]) {\n index = indexMax;\n } else {\n var i = 0;\n while (i < slideCountNew && moved >= slidePositions[i]) {\n index = i;\n if (moved > slidePositions[i] && dist < 0) { index += 1; }\n i++;\n }\n }\n }\n\n render(e, dist);\n events.emit(isTouchEvent(e) ? 'touchEnd' : 'dragEnd', info(e));\n });\n } else {\n if (moveDirectionExpected) {\n onControlsClick(e, dist > 0 ? -1 : 1);\n }\n }\n }\n }\n\n // reset\n if (options.preventScrollOnTouch === 'auto') { preventScroll = false; }\n if (swipeAngle) { moveDirectionExpected = '?'; }\n if (autoplay && !animating) { setAutoplayTimer(); }\n }\n\n // === RESIZE FUNCTIONS === //\n // (slidePositions, index, items) => vertical_conentWrapper.height\n function updateContentWrapperHeight () {\n var wp = middleWrapper ? middleWrapper : innerWrapper;\n wp.style.height = slidePositions[index + items] - slidePositions[index] + 'px';\n }\n\n function getPages () {\n var rough = fixedWidth ? (fixedWidth + gutter) * slideCount / viewport : slideCount / items;\n return Math.min(Math.ceil(rough), slideCount);\n }\n\n /*\n * 1. update visible nav items list\n * 2. add \"hidden\" attributes to previous visible nav items\n * 3. remove \"hidden\" attrubutes to new visible nav items\n */\n function updateNavVisibility () {\n if (!nav || navAsThumbnails) { return; }\n\n if (pages !== pagesCached) {\n var min = pagesCached,\n max = pages,\n fn = showElement;\n\n if (pagesCached > pages) {\n min = pages;\n max = pagesCached;\n fn = hideElement;\n }\n\n while (min < max) {\n fn(navItems[min]);\n min++;\n }\n\n // cache pages\n pagesCached = pages;\n }\n }\n\n function info (e) {\n return {\n container: container,\n slideItems: slideItems,\n navContainer: navContainer,\n navItems: navItems,\n controlsContainer: controlsContainer,\n hasControls: hasControls,\n prevButton: prevButton,\n nextButton: nextButton,\n items: items,\n slideBy: slideBy,\n cloneCount: cloneCount,\n slideCount: slideCount,\n slideCountNew: slideCountNew,\n index: index,\n indexCached: indexCached,\n displayIndex: getCurrentSlide(),\n navCurrentIndex: navCurrentIndex,\n navCurrentIndexCached: navCurrentIndexCached,\n pages: pages,\n pagesCached: pagesCached,\n sheet: sheet,\n isOn: isOn,\n event: e || {},\n };\n }\n\n return {\n version: '2.9.3',\n getInfo: info,\n events: events,\n goTo: goTo,\n play: play,\n pause: pause,\n isOn: isOn,\n updateSliderHeight: updateInnerWrapperHeight,\n refresh: initSliderTransform,\n destroy: destroy,\n rebuild: function() {\n return tns(extend(options, optionsElements));\n }\n };\n};\n\nreturn tns;\n})();\n\nexport default tns;","import tns from 'tiny-slider'\n\nexport default class {\n connect() {\n var $container, slider;\n\n function init() {\n var data = $container.data();\n var sidebar = $container.data().sidebar;\n var items = data.browseGroupCategoriesCount;\n var dir = $('html').attr('dir');\n var controls = $container.parent().find('.browse-group-categories-controls')[0];\n\n slider = tns({\n container: $container[0],\n controlsContainer: controls,\n loop: false,\n nav: false,\n items: 1,\n slideBy: 'page',\n textDirection: dir,\n responsive: {\n 576: {\n items: itemCount(items, sidebar)\n }\n }\n });\n }\n\n // Destroy the slider instance, as tns will change the dom elements, causing some issues with turbolinks\n function setupDestroy() {\n document.addEventListener('turbolinks:before-cache', function() {\n if (slider && slider.destroy) {\n slider.destroy();\n }\n });\n }\n\n function itemCount(items, sidebar) {\n if (items < 3) {\n return items;\n }\n return sidebar ? 3 : 4;\n }\n\n return $('[data-browse-group-categories-carousel]').each(function() {\n $container = $(this);\n init();\n setupDestroy();\n });\n }\n}\n","export default class {\n connect() {\n if ($.fn.carousel) {\n $('.carousel').carousel();\n }\n }\n}\n","export default class {\n connect() {\n var $clearBtn = $('.btn-reset');\n var $input = $clearBtn.prev('#browse_q');\n var btnCheck = function(){\n if ($input.val() !== '') {\n $clearBtn.css('display', 'block');\n } else {\n $clearBtn.css('display', 'none');\n }\n };\n\n btnCheck();\n $input.on('keyup', function() {\n btnCheck();\n });\n\n $clearBtn.on('click', function(event) {\n event.preventDefault();\n $input.val('');\n });\n }\n}\n","export default class {\n connect() {\n $('.zpr-link').on('click', function() {\n var modalDialog = $('#blacklight-modal .modal-dialog');\n var modalContent = modalDialog.find('.modal-content')\n modalDialog.removeClass('modal-lg')\n modalDialog.addClass('modal-xl')\n modalContent.html('<div id=\"osd-modal-container\"></div>');\n var controls = `<div class=\"controls d-flex justify-content-center justify-content-md-end\">\n <div class=\"custom-close-controls pr-3 pe-3 pt-3\">\n <button type=\"button\" class=\"btn btn-dark\" data-dismiss=\"modal\" data-bs-dismiss=\"modal\" aria-hidden=\"true\">${Spotlight.ZprLinks.close}</button>\n </div>\n <div class=\"zoom-controls mb-3 mr-md-3 me-md-3\">\n <button id=\"osd-zoom-in\" type=\"button\" class=\"btn btn-dark\">${Spotlight.ZprLinks.zoomIn}</button>\n <button id=\"osd-zoom-out\" type=\"button\" class=\"btn btn-dark\">${Spotlight.ZprLinks.zoomOut}</button>\n </div>\n <div id=\"empty-div-required-by-osd\"></div>\n </div>`\n\n $('#osd-modal-container').append('<div id=\"osd-div\"></div>');\n $('#osd-modal-container').append(controls);\n\n $('#blacklight-modal').modal('show');\n \n $('#blacklight-modal').one('hidden.bs.modal', function (event) {\n modalDialog.removeClass('modal-xl')\n modalDialog.addClass('modal-lg')\n });\n\n OpenSeadragon({\n id: 'osd-div',\n zoomInButton: \"osd-zoom-in\",\n zoomOutButton: \"osd-zoom-out\",\n // This is a hack where OpenSeadragon (if using mapped buttons) requires you\n // to map all of the buttons.\n homeButton: \"empty-div-required-by-osd\",\n fullPageButton: \"empty-div-required-by-osd\",\n nextButton: \"empty-div-required-by-osd\",\n previousButton: \"empty-div-required-by-osd\",\n tileSources: [$(this).data('iiif-tilesource')]\n })\n });\n }\n}\n","import BrowseGroupCateogries from 'spotlight/user/browse_group_categories'\nimport Carousel from 'spotlight/user/carousel'\nimport ClearFormButton from 'spotlight/user/clear_form_button'\nimport ZprLinks from 'spotlight/user/zpr_links'\n\nexport default class {\n connect() {\n new BrowseGroupCateogries().connect()\n new Carousel().connect()\n new ClearFormButton().connect()\n new ZprLinks().connect()\n }\n}\n","export default class {\n connect() {\n $(\"[data-action='add-another']\").on(\"click\", function(event) {\n event.preventDefault();\n\n var templateId = $(this).data('template-id');\n\n var template = document.querySelector('#' + templateId);\n var clone = document.importNode(template.content, true);\n\n var count = $(this).closest('.form-group').find('[name=\"' + $(clone).find('[name]').attr('name') + '\"]').length + 1;\n $(clone).find('[id]').each(function(index, el) {\n $(el).attr('id', $(el).attr('id') + '_' + String(count));\n });\n\n $(clone).find('[for]').each(function(index, el) {\n $(el).attr('for', $(el).attr('for') + '_' + String(count));\n });\n\n\n $(clone).insertBefore(this);\n });\n }\n}\n","export default class {\n connect() {\n $(\"[data-expanded-add-button]\").each((_i, el) => this.addExpandBehaviorToButton($(el)))\n }\n\n addExpandBehaviorToButton(button){\n var settings = {\n speed: (button.data('speed') || 450),\n animate_width: (button.data('animate_width') || 425)\n }\n var target = $(button.data('field-target'));\n var save = $(\"input[data-behavior='save']\", target);\n var cancel = $(\"input[data-behavior='cancel']\", target);\n var input = $(\"input[type='text']\", target);\n var original_width = button.outerWidth();\n var expanded = false;\n\n // Animate button open when the mouse enters or\n // the button is given focus (i.e. clicked/tabbed)\n button.on(\"mouseenter focus\", function(){\n expandButton();\n });\n\n // Don't allow blank titles\n save.on('click', function(){\n if ( inputEmpty() ) {\n return false;\n }\n });\n\n // Empty input and collapse\n // button on cancel click\n cancel.on('click', function(e){\n e.preventDefault();\n input.val('');\n collapseButton();\n });\n\n // Collapse the button on when\n // an empty input loses focus\n input.on(\"blur\", function(){\n if ( inputEmpty() ) {\n collapseButton();\n }\n });\n function expandButton(){\n // If this has not yet been expanded, recalculate original_width to \n // handle things that may have been originally hidden.\n if (!expanded) {\n original_width = button.outerWidth();\n }\n if(button.outerWidth() <= (original_width + 5)) {\n expanded = true;\n button.animate(\n {width: settings.animate_width + 'px'}, settings.speed, function(){\n target.show(0, function(){\n input.focus();\n // Set the button to auto width to make\n // sure it has room for any inputs\n button.width(\"auto\");\n // Explicitly set the width of the button\n // so the close animation works properly\n button.width(button.width());\n });\n }\n )\n }\n }\n function collapseButton(){\n target.hide();\n button.animate({width: original_width + 'px'}, settings.speed);\n }\n function inputEmpty(){\n return $.trim(input.val()) == \"\";\n }\n }\n}\n","export default class {\n connect() {\n // Add Select/Deselect all input behavior\n this.addCheckboxToggleBehavior();\n this.addEnableToggleBehavior();\n }\n \n // Add Select/Deselect all behavior for metadata field names for a given view e.g. Item details. \n addCheckboxToggleBehavior() {\n $(\"[data-behavior='metadata-select']\").each(function(){\n var selectCheckbox = $(this);\n var parentCell = selectCheckbox.parents(\"th\");\n var table = parentCell.closest(\"table\");\n var columnRows = $(\"tr td:nth-child(\" + (parentCell.index() + 1) + \")\", table);\n var checkboxes = $(\"input[type='checkbox']\", columnRows);\n updateSelectAllInput(selectCheckbox, columnRows);\n // Add the check/uncheck behavior to the select/deselect all checkbox\n selectCheckbox.on('click', function(e){\n var allChecked = allCheckboxesChecked(columnRows);\n columnRows.each(function(){\n $(\"input[type='checkbox']\", $(this)).prop('checked', !allChecked);\n });\n });\n // When a single checkbox is selected/unselected, the \"All\" checkbox should be updated accordingly.\n checkboxes.each(function(){\n $(this).on('change', function(){\n updateSelectAllInput(selectCheckbox, columnRows);\n });\n }); \n });\n\n // Check number of checkboxes against the number of checked\n // checkboxes to determine if all of them are checked or not\n function allCheckboxesChecked(elements) {\n return ($(\"input[type='checkbox']\", elements).length == $(\"input[type='checkbox']:checked\", elements).length)\n }\n\n // Check or uncheck the \"All\" checkbox for each view column, e.g. Item details, List, etc.\n function updateSelectAllInput(checkbox, elements) {\n if ( allCheckboxesChecked(elements) ) {\n checkbox.prop('checked', true);\n } else {\n checkbox.prop('checked', false);\n }\n }\n }\n \n addEnableToggleBehavior() {\n $(\"[data-behavior='enable-feature']\").each(function(){\n var checkbox = $(this);\n var target = $($(this).data('target'));\n\n checkbox.on('change', function() {\n if ($(this).is(':checked')) {\n target.find('input:checkbox').not(\"[data-behavior='enable-feature']\").prop('checked', true).attr('disabled', false);\n } else {\n target.find('input:checkbox').not(\"[data-behavior='enable-feature']\").prop('checked', false).attr('disabled', true);\n }\n });\n });\n }\n}","import Clipboard from 'clipboard';\n\nexport default class {\n connect() {\n new Clipboard('.copy-email-addresses');\n }\n}\n","export default class Iiif {\n constructor(manifestUrl, manifest) {\n this.manifestUrl = manifestUrl;\n this.manifest = manifest;\n }\n\n sequences() {\n var it = {};\n var context = this;\n it[Symbol.iterator] = function*() {\n for (let sequence of context.manifest.sequences) {\n yield sequence;\n };\n }\n return it;\n }\n\n canvases() {\n var it = {};\n var context = this;\n it[Symbol.iterator] = function*() {\n for (let sequence of context.sequences()) {\n for (let canvas of sequence.canvases) {\n yield canvas;\n }\n }\n }\n return it;\n }\n\n images() {\n var it = {};\n var context = this;\n it[Symbol.iterator] = function*() {\n for (let canvas of context.canvases()) {\n for (let image of canvas.images) {\n var iiifService = image.resource.service['@id'];\n yield {\n 'thumb': iiifService + '/full/!100,100/0/default.jpg',\n 'tilesource': iiifService + '/info.json',\n 'manifest': context.manifestUrl,\n 'canvasId': canvas['@id'],\n 'imageId': image['@id']\n };\n }\n }\n }\n return it;\n }\n\n imagesArray() {\n return Array.from(this.images())\n }\n}\n","import Iiif from 'spotlight/admin/iiif'\n\nexport function addImageSelector(input, panel, manifestUrl, initialize) {\n if (!manifestUrl) {\n showNonIiifAlert(input);\n return;\n }\n var cropper = input.data('iiifCropper');\n $.ajax(manifestUrl).done(\n function(manifest) {\n var iiifManifest = new Iiif(manifestUrl, manifest);\n\n var thumbs = iiifManifest.imagesArray();\n\n hideNonIiifAlert(input);\n\n if (initialize) {\n cropper.setIiifFields(thumbs[0]);\n panel.multiImageSelector(); // Clears out existing selector\n }\n\n if(thumbs.length > 1) {\n panel.show();\n panel.multiImageSelector(thumbs, function(selectorImage) {\n cropper.setIiifFields(selectorImage);\n }, cropper.iiifImageField.val());\n }\n }\n );\n}\n\nfunction showNonIiifAlert(input){\n input.parent().prev('[data-behavior=\"non-iiif-alert\"]').show();\n}\n\nfunction hideNonIiifAlert(input){\n input.parent().prev('[data-behavior=\"non-iiif-alert\"]').hide();\n}","import SirTrevor from \"sir-trevor\"\n\nconst Spotlight = function() {\n var buffer = [];\n return {\n onLoad: function(func) {\n buffer.push(func);\n },\n\n activate: function() {\n this.sirTrevorIcon = window.sirTrevorIcon;\n for(var i = 0; i < buffer.length; i++) {\n buffer[i].call();\n }\n },\n csrfToken: function () {\n return document.querySelector('meta[name=csrf-token]')?.content\n },\n ZprLinks: {\n close: \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\" width=\\\"24\\\"><path d=\\\"M0 0h24v24H0V0z\\\" fill=\\\"none\\\"/><path d=\\\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z\\\"/></svg>\",\n zoomIn: \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\" width=\\\"24\\\"><path d=\\\"M0 0h24v24H0V0z\\\" fill=\\\"none\\\"/><path d=\\\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14zm.5-7H9v2H7v1h2v2h1v-2h2V9h-2z\\\"/></svg>\\n\",\n zoomOut: \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\" width=\\\"24\\\"><path d=\\\"M0 0h24v24H0V0z\\\" fill=\\\"none\\\"/><path d=\\\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14zM7 9h5v1H7V9z\\\"/></svg>\\n\"\n }\n };\n}();\n\n// This allows us to configure Spotlight in app/views/layouts/base.html.erb\nwindow.Spotlight = Spotlight\nwindow.SirTrevor = SirTrevor\nexport default Spotlight\n","import { addImageSelector } from 'spotlight/admin/add_image_selector'\nimport Core from 'spotlight/core'\n\nexport default class Crop {\n constructor(cropArea, preserveAspectRatio = true) {\n this.cropArea = cropArea;\n this.cropArea.data('iiifCropper', this);\n // This element will also have the IIIF input elements contained\n // There may be multiple elements with data-cropper attributes, but\n // there should only one element with this data-cropper attribute value.\n this.cropSelector = '[data-cropper=\"' + cropArea.data('cropperKey') + '\"]';\n this.cropTool = $(this.cropSelector);\n // Exhibit and masthead cropping requires the ratio between image width and height\n // to be consistent, whereas item widget cropping allows any combination of \n // image width and height.\n this.preserveAspectRatio = preserveAspectRatio;\n // Get the IIIF input elements used to store/reference IIIF information\n this.inputPrefix = this.cropTool.data('input-prefix');\n this.iiifUrlField = this.iiifInputElement(this.inputPrefix, 'iiif_tilesource', this.cropTool);\n this.iiifRegionField = this.iiifInputElement(this.inputPrefix, 'iiif_region', this.cropTool);\n this.iiifManifestField = this.iiifInputElement(this.inputPrefix, 'iiif_manifest_url', this.cropTool);\n this.iiifCanvasField = this.iiifInputElement(this.inputPrefix, 'iiif_canvas_id', this.cropTool);\n this.iiifImageField = this.iiifInputElement(this.inputPrefix, 'iiif_image_id', this.cropTool);\n // Get the closest form element\n this.form = cropArea.closest('form');\n this.tileSource = null;\n }\n\n // Return the iiif input element based on the fieldname.\n // Multiple input fields with the same name on the page may be related \n // to a cropper. We thus need to pass in a parent element. \n iiifInputElement(inputPrefix, fieldName, inputParentElement) {\n return $('input[name=\"' + inputPrefix + '[' + fieldName + ']\"]', inputParentElement);\n }\n\n // Render the cropper environment and add hooks into the autocomplete and upload forms\n render() {\n this.setupAutoCompletes();\n this.setupAjaxFileUpload();\n this.setupExistingIiifCropper();\n }\n\n // Setup the cropper on page load if the field\n // that holds the IIIF url is populated\n setupExistingIiifCropper() {\n if(this.iiifUrlField.val() === '') {\n return;\n }\n\n this.addImageSelectorToExistingCropTool();\n this.setTileSource(this.iiifUrlField.val());\n }\n\n // Display the IIIF Cropper map with the current IIIF Layer (and cropbox, once the layer is available)\n setupIiifCropper() {\n this.loaded = false;\n\n this.renderCropperMap();\n\n if (this.imageLayer) {\n // Force a broken layer's container to be an element before removing.\n // Code in leaflet-iiif land calls delete on the image layer's container when removing,\n // which errors if there is an issue fetching the info.json and stops further necessary steps to execute.\n if(!this.imageLayer._container) {\n this.imageLayer._container = $('<div></div>');\n }\n this.cropperMap.removeLayer(this.imageLayer);\n }\n\n this.imageLayer = L.tileLayer.iiif(this.tileSource).addTo(this.cropperMap);\n\n var self = this;\n this.imageLayer.on('load', function() {\n if (!self.loaded) {\n var region = self.getCropRegion();\n self.positionIiifCropBox(region);\n self.loaded = true;\n }\n });\n\n this.cropArea.data('initiallyVisible', this.cropArea.is(':visible'));\n }\n\n // Get (or initialize) the current crop region from the form data\n getCropRegion() {\n var regionFieldValue = this.iiifRegionField.val();\n if(!regionFieldValue || regionFieldValue === '') {\n var region = this.defaultCropRegion();\n this.iiifRegionField.val(region);\n return region;\n } else {\n return regionFieldValue.split(',');\n }\n }\n\n // Calculate a default crop region in the center of the image using the correct aspect ratio\n defaultCropRegion() {\n var imageWidth = this.imageLayer.x;\n var imageHeight = this.imageLayer.y;\n\n var boxWidth = Math.floor(imageWidth / 2);\n var boxHeight = Math.floor(boxWidth / this.aspectRatio());\n\n return [\n Math.floor((imageWidth - boxWidth) / 2),\n Math.floor((imageHeight - boxHeight) / 2),\n boxWidth,\n boxHeight\n ];\n }\n\n // Calculate the required aspect ratio for the crop area\n aspectRatio() {\n var cropWidth = parseInt(this.cropArea.data('crop-width'));\n var cropHeight = parseInt(this.cropArea.data('crop-height'));\n return cropWidth / cropHeight;\n }\n\n // Position the IIIF Crop Box at the given IIIF region\n positionIiifCropBox(region) {\n var bounds = this.unprojectIIIFRegionToBounds(region);\n\n if (!this.cropBox) {\n this.renderCropBox(bounds);\n }\n\n this.cropBox.setBounds(bounds);\n this.cropperMap.invalidateSize();\n this.cropperMap.fitBounds(bounds);\n\n this.cropBox.editor.editLayer.clearLayers();\n this.cropBox.editor.refresh();\n this.cropBox.editor.initVertexMarkers();\n }\n\n // Set all of the various input fields to\n // the appropriate IIIF URL or identifier\n setIiifFields(iiifObject) {\n this.setTileSource(iiifObject.tilesource);\n this.iiifManifestField.val(iiifObject.manifest);\n this.iiifCanvasField.val(iiifObject.canvasId);\n this.iiifImageField.val(iiifObject.imageId);\n }\n\n // Set the Crop tileSource and setup the cropper\n setTileSource(source) {\n if (source == this.tileSource) {\n return;\n }\n\n if (source === null || source === undefined) {\n console.error('No tilesource provided when setting up IIIF Cropper');\n return;\n }\n\n if (this.cropBox) {\n this.iiifRegionField.val(\"\");\n }\n\n this.tileSource = source;\n this.iiifUrlField.val(source);\n this.setupIiifCropper();\n }\n\n // Render the Leaflet Map into the crop area\n renderCropperMap() {\n if (this.cropperMap) {\n return;\n }\n\n var cropperOptions = {\n editable: true,\n center: [0, 0],\n crs: L.CRS.Simple,\n zoom: 0\n }\n\n if(this.preserveAspectRatio) {\n cropperOptions['editOptions'] = {\n rectangleEditorClass: this.aspectRatioPreservingRectangleEditor(this.aspectRatio())\n };\n }\n\n this.cropperMap = L.map(this.cropArea.attr('id'), cropperOptions);\n this.invalidateMapSizeOnTabToggle();\n }\n\n // Render the crop box (a Leaflet editable rectangle) onto the canvas\n renderCropBox(initialBounds) {\n this.cropBox = L.rectangle(initialBounds);\n this.cropBox.addTo(this.cropperMap);\n this.cropBox.enableEdit();\n this.cropBox.on('dblclick', L.DomEvent.stop).on('dblclick', this.cropBox.toggleEdit);\n\n var self = this;\n this.cropperMap.on('editable:dragend editable:vertex:dragend', function(e) {\n var bounds = e.layer.getBounds();\n var region = self.projectBoundsToIIIFRegion(bounds);\n\n self.iiifRegionField.val(region.join(','));\n });\n }\n\n // Get the maximum zoom level for the IIIF Layer (always 1:1 image pixel to canvas?)\n maxZoom() {\n if(this.imageLayer) {\n return this.imageLayer.maxZoom;\n }\n }\n\n // Take a Leaflet LatLngBounds object and transform it into a IIIF [x, y, w, h] region\n projectBoundsToIIIFRegion(bounds) {\n var min = this.cropperMap.project(bounds.getNorthWest(), this.maxZoom());\n var max = this.cropperMap.project(bounds.getSouthEast(), this.maxZoom());\n return [\n Math.max(Math.floor(min.x), 0),\n Math.max(Math.floor(min.y), 0),\n Math.floor(max.x - min.x),\n Math.floor(max.y - min.y)\n ];\n }\n\n // Take a IIIF [x, y, w, h] region and transform it into a Leaflet LatLngBounds\n unprojectIIIFRegionToBounds(region) {\n var minPoint = L.point(parseInt(region[0]), parseInt(region[1]));\n var maxPoint = L.point(parseInt(region[0]) + parseInt(region[2]), parseInt(region[1]) + parseInt(region[3]));\n\n var min = this.cropperMap.unproject(minPoint, this.maxZoom());\n var max = this.cropperMap.unproject(maxPoint, this.maxZoom());\n return L.latLngBounds(min, max);\n }\n\n // TODO: Add accessors to update hidden inputs with IIIF uri/ids?\n\n // Setup autocomplete inputs to have the iiif_cropper context\n setupAutoCompletes() {\n var input = $('[data-behavior=\"autocomplete\"]', this.cropTool);\n input.data('iiifCropper', this);\n }\n\n setupAjaxFileUpload() {\n this.fileInput = $('input[type=\"file\"]', this.cropTool);\n this.fileInput.change(() => this.uploadFile());\n }\n\n addImageSelectorToExistingCropTool() {\n if(this.iiifManifestField.val() === '') {\n return;\n }\n\n var input = $('[data-behavior=\"autocomplete\"]', this.cropTool);\n \n // Not every page which uses this module has autocomplete linked directly to the cropping tool\n if(input.length) {\n var panel = $(input.data('target-panel'));\n addImageSelector(input, panel, this.iiifManifestField.val(), !this.iiifImageField.val());\n }\n }\n\n invalidateMapSizeOnTabToggle() {\n var tabs = $('[role=\"tablist\"]', this.form);\n var self = this;\n tabs.on('shown.bs.tab', function() {\n if(self.cropArea.data('initiallyVisible') === false && self.cropArea.is(':visible')) {\n self.cropperMap.invalidateSize();\n // Because the map size is 0,0 when image is loading (not visible) we need to refit the bounds of the layer\n self.imageLayer._fitBounds();\n self.cropArea.data('initiallyVisible', null);\n }\n });\n }\n\n // Get all the form data with the exception of the _method field.\n getData() {\n var data = new FormData(this.form[0]);\n data.append('_method', null);\n return data;\n }\n\n uploadFile() {\n var url = this.fileInput.data('endpoint')\n // Every post creates a new image/masthead.\n // Because they create IIIF urls which are heavily cached.\n $.ajax({\n url: url, //Server script to process data\n type: 'POST',\n success: (data, stat, xhr) => this.successHandler(data, stat, xhr),\n // error: errorHandler,\n // Form data\n data: this.getData(),\n headers: {\n 'X-CSRF-Token': Core.csrfToken() || ''\n },\n //Options to tell jQuery not to process data or worry about content-type.\n cache: false,\n contentType: false,\n processData: false\n });\n }\n\n successHandler(data, stat, xhr) {\n this.setIiifFields({ tilesource: data.tilesource });\n this.setUploadId(data.id);\n }\n\n setUploadId(id) {\n // This input is currently used for exhibit masthead or thumbnail image upload.\n // The name should be sufficient in this case, as we don't use this part of the\n // code for solr document widgets where we enable cropping. \n // If we require more specificity, we can scope this to this.cropTool. \n $('input[name=\"' + this.inputPrefix + '[upload_id]\"]').val(id);\n }\n\n aspectRatioPreservingRectangleEditor(aspect) {\n return L.Editable.RectangleEditor.extend({\n extendBounds: function (e) {\n var index = e.vertex.getIndex(),\n next = e.vertex.getNext(),\n previous = e.vertex.getPrevious(),\n oppositeIndex = (index + 2) % 4,\n opposite = e.vertex.latlngs[oppositeIndex];\n\n if ((index % 2) == 1) {\n // calculate horiz. displacement\n e.latlng.update([opposite.lat + ((1 / aspect) * (opposite.lng - e.latlng.lng)), e.latlng.lng]);\n } else {\n // calculate vert. displacement\n e.latlng.update([e.latlng.lat, (opposite.lng - (aspect * (opposite.lat - e.latlng.lat)))]);\n }\n var bounds = new L.LatLngBounds(e.latlng, opposite);\n // Update latlngs by hand to preserve order.\n previous.latlng.update([e.latlng.lat, opposite.lng]);\n next.latlng.update([opposite.lat, e.latlng.lng]);\n this.updateBounds(bounds);\n this.refreshVertexMarkers();\n }\n });\n }\n}\n","import Crop from 'spotlight/admin/crop';\n\nexport default class CroppableModal {\n\n attachModalHandlers() {\n // Attach handler for when modal first loads, to show the cropper\n this.attachModalLoadBehavior();\n // Attach handler for save by checking if clicking in the modal is on a save button\n this.attachModalSaveHandler();\n }\n\n attachModalLoadBehavior() {\n // Listen for event thrown when modal is displayed with content\n document.addEventListener('loaded.blacklight.blacklight-modal', function(e) {\n var dataCropperDiv = $('#blacklight-modal [data-behavior=\"iiif-cropper\"]');\n \n if(dataCropperDiv) {\n new Crop(dataCropperDiv, false).render();\n }\n });\n }\n\n // Field names are of the format item[item_0][iiif_image_id]\n iiifInputField(itemIndex, fieldName, parentElement) {\n var itemPrefix = 'item[' + itemIndex + ']';\n var selector = 'input[name=\"' + itemPrefix + '[' + fieldName + ']\"]';\n return $(selector, parentElement);\n }\n\n attachModalSaveHandler() {\n var context = this;\n \n document.addEventListener('show.blacklight.blacklight-modal', function(e) {\n $('#save-cropping-selection').on('click', () => {\n context.saveCroppedRegion();\n });\n });\n }\n\n saveCroppedRegion() {\n //On hitting \"save changes\", we need to copy over the value\n //to the iiif thumbnail url input field as well as the image source itself\n var context = this;\n var dataCropperDiv = $('#blacklight-modal [data-behavior=\"iiif-cropper\"]');\n\n if(dataCropperDiv) {\n var dataCropperKey = dataCropperDiv.data(\"cropper-key\");\n var itemIndex = dataCropperDiv.data(\"index-id\");\n // Get the element on the main edit page whose select image link opened up the modal\n var itemElement = $('[data-cropper=\"' + dataCropperKey + '\"]');\n // Get the hidden input field on the main edit page corresponding to this item\n var thumbnailSaveField = context.iiifInputField(itemIndex, 'thumbnail_image_url', itemElement);\n var fullimageSaveField = context.iiifInputField(itemIndex, 'full_image_url', itemElement);\n var iiifTilesource = context.iiifInputField(itemIndex, 'iiif_tilesource', itemElement).val();\n var regionValue = context.iiifInputField(itemIndex, 'iiif_region', itemElement).val();\n // Extract the region string to incorporate into the thumbnail URL\n var urlPrefix = iiifTilesource.substring(0, iiifTilesource.lastIndexOf('/info.json'));\n var thumbnailUrl = urlPrefix + '/' + regionValue + '/!400,400/0/default.jpg';\n // Set the hidden input value to the thumbnail URL\n // Also set the full image - which is used by widgets like carousel or slideshow\n thumbnailSaveField.val(thumbnailUrl);\n fullimageSaveField.val(urlPrefix + '/' + regionValue + '/!800,800/0/default.jpg');\n // Also change img url for thumbnail image\n var itemImage = $('img.img-thumbnail', itemElement); \n itemImage.attr('src', thumbnailUrl);\n }\n }\n}\n","import Crop from 'spotlight/admin/crop';\nimport CroppableModal from 'spotlight/admin/croppable_modal';\n\nexport default class Croppable {\n connect() {\n // For exhibit masthead or thumbnail pages, where\n // the div exists on page load\n $('[data-behavior=\"iiif-cropper\"]').each(function() {\n var cropElement = $(this)\n new Crop(cropElement).render()\n })\n\n // In the case of individual document thumbnails, selection\n // of the image is through a modal. Here we attach the event\n new CroppableModal().attachModalHandlers();\n }\n}\n","/*\n Simple plugin add edit-in-place behavior\n*/\nexport default class {\n connect() {\n $('[data-in-place-edit-target]').each(function() {\n $(this).on('click.inplaceedit', function() {\n var $label = $(this).find($(this).data('in-place-edit-target'));\n var $input = $(this).find($(this).data('in-place-edit-field-target'));\n\n // hide the edit-in-place affordance icon while in edit mode\n $(this).addClass('hide-edit-icon');\n $label.hide();\n $input.val($label.text());\n $input.attr('type', 'text');\n $input.select();\n $input.focus();\n\n $input.on('keypress', function(e) {\n if(e.which == 13) {\n $input.trigger('blur.inplaceedit');\n return false;\n }\n });\n\n $input.on('blur.inplaceedit', function() {\n var value = $input.val();\n\n if ($.trim(value).length == 0) {\n $input.val($label.text());\n } else {\n $label.text(value);\n }\n\n $label.show();\n $input.attr('type', 'hidden');\n // when leaving edit mode, should no longer hide edit-in-place affordance icon\n $(\"[data-in-place-edit-target]\").removeClass('hide-edit-icon');\n\n return false;\n });\n\n return false;\n });\n })\n\n $(\"[data-behavior='restore-default']\").each(function(){\n var hidden = $(\"[data-default-value]\", $(this));\n var value = $($(\"[data-in-place-edit-target]\", $(this)).data('in-place-edit-target'), $(this));\n var button = $(\"[data-restore-default]\", $(this));\n\n hidden.on('keypress', function(e) {\n if(e.which == 13) {\n hidden.trigger('blur');\n return false;\n }\n });\n\n hidden.on('blur', function(){\n if( $(this).val() == $(this).data('default-value') ) {\n button.addClass('d-none');\n } else {\n button.removeClass('d-none');\n }\n });\n button.on('click', function(e){\n e.preventDefault();\n hidden.val(hidden.data('default-value'));\n value.text(hidden.data('default-value'));\n button.hide();\n });\n });\n }\n}\n","/*\nhttps://gist.github.com/pjambet/3710461\n*/\nvar LATIN_MAP = {\n 'À': 'A', 'Á': 'A', 'Â': 'A', 'Ã': 'A', 'Ä': 'A', 'Å': 'A', 'Æ': 'AE', 'Ç':\n 'C', 'È': 'E', 'É': 'E', 'Ê': 'E', 'Ë': 'E', 'Ì': 'I', 'Í': 'I', 'Î': 'I',\n 'Ï': 'I', 'Ð': 'D', 'Ñ': 'N', 'Ò': 'O', 'Ó': 'O', 'Ô': 'O', 'Õ': 'O', 'Ö':\n 'O', 'Ő': 'O', 'Ø': 'O', 'Ù': 'U', 'Ú': 'U', 'Û': 'U', 'Ü': 'U', 'Ű': 'U',\n 'Ý': 'Y', 'Þ': 'TH', 'ß': 'ss', 'à':'a', 'á':'a', 'â': 'a', 'ã': 'a', 'ä':\n 'a', 'å': 'a', 'æ': 'ae', 'ç': 'c', 'è': 'e', 'é': 'e', 'ê': 'e', 'ë': 'e',\n 'ì': 'i', 'í': 'i', 'î': 'i', 'ï': 'i', 'ð': 'd', 'ñ': 'n', 'ò': 'o', 'ó':\n 'o', 'ô': 'o', 'õ': 'o', 'ö': 'o', 'ő': 'o', 'ø': 'o', 'ù': 'u', 'ú': 'u',\n 'û': 'u', 'ü': 'u', 'ű': 'u', 'ý': 'y', 'þ': 'th', 'ÿ': 'y'\n}\nvar LATIN_SYMBOLS_MAP = {\n '©':'(c)'\n}\nvar GREEK_MAP = {\n 'α':'a', 'β':'b', 'γ':'g', 'δ':'d', 'ε':'e', 'ζ':'z', 'η':'h', 'θ':'8',\n 'ι':'i', 'κ':'k', 'λ':'l', 'μ':'m', 'ν':'n', 'ξ':'3', 'ο':'o', 'π':'p',\n 'ρ':'r', 'σ':'s', 'τ':'t', 'υ':'y', 'φ':'f', 'χ':'x', 'ψ':'ps', 'ω':'w',\n 'ά':'a', 'έ':'e', 'ί':'i', 'ό':'o', 'ύ':'y', 'ή':'h', 'ώ':'w', 'ς':'s',\n 'ϊ':'i', 'ΰ':'y', 'ϋ':'y', 'ΐ':'i',\n 'Α':'A', 'Β':'B', 'Γ':'G', 'Δ':'D', 'Ε':'E', 'Ζ':'Z', 'Η':'H', 'Θ':'8',\n 'Ι':'I', 'Κ':'K', 'Λ':'L', 'Μ':'M', 'Ν':'N', 'Ξ':'3', 'Ο':'O', 'Π':'P',\n 'Ρ':'R', 'Σ':'S', 'Τ':'T', 'Υ':'Y', 'Φ':'F', 'Χ':'X', 'Ψ':'PS', 'Ω':'W',\n 'Ά':'A', 'Έ':'E', 'Ί':'I', 'Ό':'O', 'Ύ':'Y', 'Ή':'H', 'Ώ':'W', 'Ϊ':'I',\n 'Ϋ':'Y'\n}\nvar TURKISH_MAP = {\n 'ş':'s', 'Ş':'S', 'ı':'i', 'İ':'I', 'ç':'c', 'Ç':'C', 'ü':'u', 'Ü':'U',\n 'ö':'o', 'Ö':'O', 'ğ':'g', 'Ğ':'G'\n}\nvar RUSSIAN_MAP = {\n 'а':'a', 'б':'b', 'в':'v', 'г':'g', 'д':'d', 'е':'e', 'ё':'yo', 'ж':'zh',\n 'з':'z', 'и':'i', 'й':'j', 'к':'k', 'л':'l', 'м':'m', 'н':'n', 'о':'o',\n 'п':'p', 'р':'r', 'с':'s', 'т':'t', 'у':'u', 'ф':'f', 'х':'h', 'ц':'c',\n 'ч':'ch', 'ш':'sh', 'щ':'sh', 'ъ':'', 'ы':'y', 'ь':'', 'э':'e', 'ю':'yu',\n 'я':'ya',\n 'А':'A', 'Б':'B', 'В':'V', 'Г':'G', 'Д':'D', 'Е':'E', 'Ё':'Yo', 'Ж':'Zh',\n 'З':'Z', 'И':'I', 'Й':'J', 'К':'K', 'Л':'L', 'М':'M', 'Н':'N', 'О':'O',\n 'П':'P', 'Р':'R', 'С':'S', 'Т':'T', 'У':'U', 'Ф':'F', 'Х':'H', 'Ц':'C',\n 'Ч':'Ch', 'Ш':'Sh', 'Щ':'Sh', 'Ъ':'', 'Ы':'Y', 'Ь':'', 'Э':'E', 'Ю':'Yu',\n 'Я':'Ya'\n}\nvar UKRAINIAN_MAP = {\n 'Є':'Ye', 'І':'I', 'Ї':'Yi', 'Ґ':'G', 'є':'ye', 'і':'i', 'ї':'yi', 'ґ':'g'\n}\nvar CZECH_MAP = {\n 'č':'c', 'ď':'d', 'ě':'e', 'ň': 'n', 'ř':'r', 'š':'s', 'ť':'t', 'ů':'u',\n 'ž':'z', 'Č':'C', 'Ď':'D', 'Ě':'E', 'Ň': 'N', 'Ř':'R', 'Š':'S', 'Ť':'T',\n 'Ů':'U', 'Ž':'Z'\n}\n\nvar POLISH_MAP = {\n 'ą':'a', 'ć':'c', 'ę':'e', 'ł':'l', 'ń':'n', 'ó':'o', 'ś':'s', 'ź':'z',\n 'ż':'z', 'Ą':'A', 'Ć':'C', 'Ę':'e', 'Ł':'L', 'Ń':'N', 'Ó':'o', 'Ś':'S',\n 'Ź':'Z', 'Ż':'Z'\n}\n\nvar LATVIAN_MAP = {\n 'ā':'a', 'č':'c', 'ē':'e', 'ģ':'g', 'ī':'i', 'ķ':'k', 'ļ':'l', 'ņ':'n',\n 'š':'s', 'ū':'u', 'ž':'z', 'Ā':'A', 'Č':'C', 'Ē':'E', 'Ģ':'G', 'Ī':'i',\n 'Ķ':'k', 'Ļ':'L', 'Ņ':'N', 'Š':'S', 'Ū':'u', 'Ž':'Z'\n}\n\nvar ALL_DOWNCODE_MAPS=new Array()\nALL_DOWNCODE_MAPS[0]=LATIN_MAP\nALL_DOWNCODE_MAPS[1]=LATIN_SYMBOLS_MAP\nALL_DOWNCODE_MAPS[2]=GREEK_MAP\nALL_DOWNCODE_MAPS[3]=TURKISH_MAP\nALL_DOWNCODE_MAPS[4]=RUSSIAN_MAP\nALL_DOWNCODE_MAPS[5]=UKRAINIAN_MAP\nALL_DOWNCODE_MAPS[6]=CZECH_MAP\nALL_DOWNCODE_MAPS[7]=POLISH_MAP\nALL_DOWNCODE_MAPS[8]=LATVIAN_MAP\n\nvar Downcoder = new Object();\nDowncoder.Initialize = function()\n{\n if (Downcoder.map) // already made\n return ;\n Downcoder.map ={}\n Downcoder.chars = '' ;\n for(var i in ALL_DOWNCODE_MAPS)\n {\n var lookup = ALL_DOWNCODE_MAPS[i]\n for (var c in lookup)\n {\n Downcoder.map[c] = lookup[c] ;\n Downcoder.chars += c ;\n }\n }\n Downcoder.regex = new RegExp('[' + Downcoder.chars + ']|[^' + Downcoder.chars + ']+','g') ;\n }\n \nconst downcode = function( slug )\n{\n Downcoder.Initialize() ;\n var downcoded =\"\"\n var pieces = slug.match(Downcoder.regex);\n if(pieces)\n {\n for (var i = 0 ; i < pieces.length ; i++)\n {\n if (pieces[i].length == 1)\n {\n var mapped = Downcoder.map[pieces[i]] ;\n if (mapped != null)\n {\n downcoded+=mapped;\n continue ;\n }\n }\n downcoded+=pieces[i];\n }\n }\n else\n {\n downcoded = slug;\n }\n return downcoded;\n}\n\n\nfunction URLify(s, num_chars) {\n // changes, e.g., \"Petty theft\" to \"petty_theft\"\n // remove all these words from the string before urlifying\n s = downcode(s);\n //\n // if downcode doesn't hit, the char will be stripped here\n s = s.replace(/[^-\\w\\s]/g, ' '); // remove unneeded chars\n s = s.replace(/^\\s+|\\s+$/g, ''); // trim leading/trailing spaces\n s = s.replace(/[-\\s]+/g, '-'); // convert spaces to hyphens\n s = s.toLowerCase(); // convert to lowercase\n return s.substring(0, num_chars);// trim to first num_chars chars\n}\n\nexport { URLify };","import { URLify } from 'parameterize';\n\nexport default class {\n connect() {\n // auto-fill the exhibit slug on the new exhibit form\n $('#new_exhibit').each(function() {\n $('#exhibit_title').on('change keyup', function() {\n $('#exhibit_slug').attr('placeholder', URLify($(this).val(), $(this).val().length));\n });\n\n $('#exhibit_slug').on('focus', function() {\n if ($(this).val() === '') {\n $(this).val($(this).attr('placeholder'));\n }\n });\n });\n\n $(\"#another-email\").on(\"click\", function(e) {\n e.preventDefault();\n\n var container = $(this).closest('.form-group');\n var contacts = container.find('.contact');\n var inputContainer = contacts.first().clone();\n\n // wipe out any values from the inputs\n inputContainer.find('input').each(function() {\n $(this).val('');\n $(this).attr('id', $(this).attr('id').replace('0', contacts.length));\n $(this).attr('name', $(this).attr('name').replace('0', contacts.length));\n if ($(this).attr('aria-label')) {\n $(this).attr('aria-label', $(this).attr('aria-label').replace('1', contacts.length + 1));\n }\n });\n\n inputContainer.find('.contact-email-delete-wrapper').remove();\n inputContainer.find('.confirmation-status').remove();\n\n // bootstrap does not render input-groups with only one value in them correctly.\n inputContainer.find('.input-group input:only-child').closest('.input-group').removeClass('input-group');\n\n $(inputContainer).insertAfter(contacts.last());\n });\n\n if (document.getElementById('another-email')) {\n document.addEventListener('turbo:submit-end', this.contactToDeleteNotFoundHandler);\n }\n\n if ($.fn.tooltip) {\n $('.btn-with-tooltip').tooltip();\n }\n\n // Put focus in saved search title input when Save this search modal is shown\n $('#save-modal').on('shown.bs.modal', function () {\n $('#search_title').focus();\n });\n }\n\n contactToDeleteNotFoundHandler(e) {\n const contact = e.detail.formSubmission?.delegate?.element?.querySelector('.contact')\n if (contact && e.detail?.fetchResponse?.response?.status === 404) {\n const error = contact.querySelector('.contact-email-delete-error');\n error.style.display = 'block';\n error.querySelector('.error-msg').textContent = 'Not Found';\n }\n }\n}","\n(function($, _) {\n 'use strict';\n\n /*\n * SerializedForm is built as a singleton jQuery plugin. It needs to be able to\n * handle instantiation from multiple sources, and use the [data-form-observer]\n * as global state object.\n */\n $.SerializedForm = function () {\n var $serializedForm;\n var plugin = this;\n\n // Store form serialization in data attribute\n function serializeFormStatus () {\n $serializedForm.data('serialized-form', formSerialization($serializedForm));\n }\n\n // Do custom serialization of the sir-trevor form data. This needs to be a\n // passed in argument for comparison later on.\n function formSerialization (form) {\n var content_editable = [];\n var i = 0;\n $(\"[contenteditable='true']\", form).each(function(){\n content_editable.push('&contenteditable_' + i + '=' + $(this).text());\n });\n return form.serialize() + content_editable.join();\n }\n\n // Unbind observing form on submit (which we have to do because of turbolinks)\n function unbindObservedFormSubmit () {\n $serializedForm.on('submit', function () {\n $(this).data('being-submitted', true);\n });\n }\n\n // Get the stored serialized form status\n function serializedFormStatus () {\n return $serializedForm.data('serialized-form');\n }\n\n // Check all observed forms on page for status change\n plugin.observedFormsStatusHasChanged = function () {\n var unsaved_changes = false;\n $('[data-form-observer]').each(function (){\n if ( !$(this).data(\"being-submitted\") ) {\n if (serializedFormStatus() != formSerialization($(this))) {\n unsaved_changes = true;\n }\n }\n });\n return unsaved_changes;\n }\n\n function init () {\n $serializedForm = $('[data-form-observer]');\n serializeFormStatus();\n unbindObservedFormSubmit();\n }\n\n init();\n\n return plugin;\n };\n})(jQuery);\n\nexport default class {\n connect() {\n // Instantiate the singleton SerializedForm plugin\n var serializedForm = $.SerializedForm();\n $(window).on('beforeunload page:before-change turbolinks:before-visit turbo:before-visit', function(event) {\n // Don't handle the same event twice #turbolinks\n if (event.handled !== true) {\n if ( serializedForm.observedFormsStatusHasChanged() ) {\n event.handled = true;\n var message = \"You have unsaved changes. Are you sure you want to leave this page?\";\n // There are variations in how Webkit browsers may handle this:\n // https://developer.mozilla.org/en-US/docs/Web/Events/beforeunload\n if ( event.type == \"beforeunload\" ) {\n return message;\n } else {\n return confirm(message)\n }\n }\n }\n });\n }\n}\n","export default class {\n delete_lock(el) {\n const csrfToken = document.querySelector('meta[name=\"csrf-token\"]')?.content;\n \n fetch(el.dataset.lock, {\n method: 'DELETE',\n headers: {\n 'X-CSRF-Token': csrfToken\n }\n });\n \n el.removeAttribute('data-lock');\n }\n\n connect() {\n document.querySelectorAll('[data-lock]').forEach(element => {\n element.addEventListener('click', (e) => {\n this.delete_lock(e.target);\n });\n });\n }\n}","// Module to add multi-image selector to widget panels\n\n(function(){\n $.fn.multiImageSelector = function(image_versions, clickCallback, activeImageId) {\n var changeLink = $(\"<a href='javascript:;'>Change</a>\"),\n thumbsListContainer = $(\"<div class='thumbs-list' style='display:none'></div>\"),\n thumbList = $(\"<ul></ul>\"),\n panel;\n\n var imageIds = $.map(image_versions, function(e) { return e['imageId']; });\n\n return init(this);\n\n function init(el) {\n panel = el;\n\n destroyExistingImageSelector();\n if(image_versions && image_versions.length > 1) {\n addChangeLink();\n addThumbsList();\n }\n }\n function addChangeLink() {\n $('[data-panel-image-pagination]', panel)\n .html(\"Image <span data-current-image='true'>\" + indexOf(activeImageId) + \"</span> of \" + image_versions.length)\n .show()\n .append(\" \")\n .append(changeLink);\n addChangeLinkBehavior();\n }\n\n function destroyExistingImageSelector() {\n var pagination = $('[data-panel-image-pagination]', panel);\n pagination.html('');\n pagination.next('.' + thumbsListContainer.attr('class')).remove();\n }\n\n function indexOf(thumb){\n const index = imageIds.indexOf(thumb)\n if (index > -1) {\n return index + 1;\n } else {\n return 1;\n }\n }\n function addChangeLinkBehavior() {\n changeLink.on('click', function(){\n thumbsListContainer.slideToggle();\n updateThumbListWidth();\n addScrollBehavior();\n scrollToActiveThumb();\n loadVisibleThumbs();\n swapChangeLinkText($(this));\n });\n }\n function updateThumbListWidth() {\n var width = 0;\n $('li', thumbList).each(function(){\n width += $(this).outerWidth();\n });\n thumbList.width(width + 5);\n }\n function loadVisibleThumbs(){\n var viewportWidth = thumbsListContainer.width();\n var width = 0;\n $('li', thumbList).each(function(){\n var thisThumb = $(this),\n image = $('img', thisThumb),\n totalWidth = width += thisThumb.width(),\n position = (thumbList.position().left + totalWidth) - thisThumb.width();\n\n if(position >= 0 && position < viewportWidth) {\n image.prop('src', image.data('src'));\n }\n });\n }\n function addScrollBehavior(){\n thumbsListContainer.scrollStop(function(){\n loadVisibleThumbs();\n });\n }\n function scrollToActiveThumb(){\n var halfContainerWidth = (thumbsListContainer.width() / 2),\n activeThumbLeftPosition = ($('.active', thumbList).position() || $('li', thumbList).first().position()).left,\n halfActiveThumbWidth = ($('.active', thumbList).width() / 2);\n thumbsListContainer.scrollLeft(\n (activeThumbLeftPosition - halfContainerWidth) + halfActiveThumbWidth\n );\n }\n function addThumbsList() {\n addThumbsToList();\n updateActiveThumb();\n $('.card-header', panel).append(\n thumbsListContainer.append(\n thumbList\n )\n );\n }\n function updateActiveThumb(){\n $('li', thumbList).each(function(){\n var item = $(this);\n if($('img', item).data('image-id') == activeImageId){\n item.addClass('active');\n }\n });\n }\n function swapChangeLinkText(link){\n link.text(\n link.text() == 'Change' ? 'Close' : 'Change'\n )\n }\n\n function addThumbsToList(){\n $.each(image_versions, function(i){\n var listItem = $('<li data-index=\"' + i + '\"><a href=\"javascript:;\"><img src=\"' + image_versions[i]['thumb'] +'\" data-image-id=\"' + image_versions[i]['imageId'] +'\" /></a></li>');\n listItem.on('click', function(){\n // get the current image id\n var imageid = $('img', $(this)).data('image-id');\n var src = $('img', $(this)).attr('src');\n\n if (typeof clickCallback === 'function' ) {\n clickCallback(image_versions[i]);\n }\n\n // mark the current selection as active\n $('li.active', thumbList).removeClass('active');\n $(this).addClass('active');\n\n // update the multi-image selector image\n $(\".pic img.img-thumbnail\", panel).attr(\"src\", src);\n\n $('[data-panel-image-pagination] [data-current-image]', panel).text(\n $('li', thumbList).index($(this)) + 1\n );\n scrollToActiveThumb();\n });\n $(\"img\", listItem).on('load', function() {\n updateThumbListWidth();\n });\n thumbList.append(listItem);\n });\n }\n };\n\n})(jQuery);\n\n// source: http://stackoverflow.com/questions/14035083/jquery-bind-event-on-scroll-stops\njQuery.fn.scrollStop = function(callback) {\n $(this).scroll(function() {\n var self = this,\n $this = $(self);\n\n if ($this.data('scrollTimeout')) {\n clearTimeout($this.data('scrollTimeout'));\n }\n\n $this.data('scrollTimeout', setTimeout(callback, 250, self));\n });\n};\n","// Place all the behaviors and hooks related to the matching controller here.\n// All this logic will automatically be available in application.js.\nimport Core from 'spotlight/core'\n\nexport default class {\n connect(){\n SirTrevor.setDefaults({\n iconUrl: Spotlight.sirTrevorIcon,\n uploadUrl: $('[data-attachment-endpoint]').data('attachment-endpoint'),\n ajaxOptions: {\n headers: {\n 'X-CSRF-Token': Core.csrfToken() || ''\n },\n credentials: 'same-origin'\n }\n });\n\n SirTrevor.Blocks.Heading.prototype.toolbarEnabled = true;\n SirTrevor.Blocks.Quote.prototype.toolbarEnabled = true;\n SirTrevor.Blocks.Text.prototype.toolbarEnabled = true;\n\n var instance = $('.js-st-instance').first();\n\n if (instance.length) {\n var editor = new SirTrevor.Editor({\n el: instance[0],\n blockTypes: instance.data('blockTypes'),\n altTextSettings: instance.data('altTextSettings'),\n defaultType:[\"Text\"],\n onEditorRender: function() {\n $.SerializedForm();\n },\n blockTypeLimits: {\n \"SearchResults\": 1\n }\n });\n\n editor.blockControls = Core.BlockControls.create(editor);\n\n new Core.BlockLimits(editor).enforceLimits(editor);\n }\n }\n}\n","export default class {\n connect() {\n var monitorElements = $('[data-behavior=\"progress-panel\"]');\n var defaultRefreshRate = 3000;\n var panelContainer;\n var pollers = [];\n\n $(monitorElements).each(function() {\n panelContainer = $(this);\n panelContainer.hide();\n var monitorUrl = panelContainer.data('monitorUrl');\n var refreshRate = panelContainer.data('refreshRate') || defaultRefreshRate;\n pollers.push(\n setInterval(function() {\n checkMonitorUrl(monitorUrl);\n }, refreshRate)\n );\n });\n\n // Clear the intervals on turbolink:click event (e.g. when the user navigates away from the page)\n $(document).on('turbolinks:click', function() {\n if (pollers.length > 0) {\n $.each(pollers, function() {\n clearInterval(this);\n });\n pollers = [];\n }\n });\n\n function checkMonitorUrl(url) {\n $.ajax(url).done(success).fail(fail);\n }\n\n function success(data) {\n if (data.recently_in_progress) {\n updateMonitorPanel(data);\n monitorPanel().show();\n } else {\n monitorPanel().hide();\n }\n }\n\n function fail() { monitorPanel().hide(); }\n\n function updateMonitorPanel(data) {\n panelStartDate().text(data.started_at);\n panelCurrentDate().text(data.updated_at);\n panelCompletedDate().text(data.updated_at);\n panelCurrent().text(data.completed);\n setPanelCompleted(data.finished);\n updatePanelTotals(data);\n updatePanelErrorMessage(data);\n updateProgressBar(data);\n\n panelContainer.show();\n }\n\n function updateProgressBar(data) {\n var percentage = calculatePercentage(data);\n progressBar()\n .attr('aria-valuemax', data.total)\n .attr('aria-valuenow', percentage)\n .css('width', percentage + '%')\n .text(percentage + '%');\n\n if (data.finished) {\n progressBar().removeClass('active').removeClass('progress-bar-striped');\n }\n }\n\n function updatePanelErrorMessage(data) {\n // We currently do not store this state,\n // but with this code we can in the future.\n if ( data.errored ) {\n panelErrorMessage().show();\n } else {\n panelErrorMessage().hide();\n }\n }\n\n function updatePanelTotals(data) {\n panelTotals().each(function() {\n $(this).text(data.total);\n });\n }\n\n function calculatePercentage(data) {\n if (data.total == 0) return 0;\n return Math.floor((data.completed / data.total) * 100);\n }\n\n function monitorPanel() {\n return panelContainer.find('.index-status');\n }\n\n function panelStartDate() {\n return monitorPanel()\n .find('[data-behavior=\"monitor-start\"]')\n .find('[data-behavior=\"date\"]');\n }\n\n function panelCurrentDate() {\n return monitorPanel()\n .find('[data-behavior=\"monitor-current\"]')\n .find('[data-behavior=\"date\"]');\n }\n\n function panelCompletedDate() {\n return monitorPanel()\n .find('[data-behavior=\"monitor-completed\"]')\n .find('[data-behavior=\"date\"]');\n }\n\n function panelTotals() {\n return monitorPanel().find('[data-behavior=\"total\"]');\n }\n\n function panelCurrent() {\n return monitorPanel()\n .find('[data-behavior=\"monitor-current\"]')\n .find('[data-behavior=\"completed\"]');\n }\n\n function progressBar() {\n return monitorPanel().find('.progress-bar');\n }\n\n function panelErrorMessage() {\n return monitorPanel().find('[data-behavior=\"monitor-error\"]');\n }\n\n function setPanelCompleted(finished) {\n var panel = monitorPanel().find('[data-behavior=\"monitor-completed\"]');\n\n if (finished) {\n panel.show();\n } else {\n panel.hide();\n }\n }\n\n return this;\n }\n}\n","export default class {\n connect() {\n // Don't allow unchecking of checkboxes with the data-readonly attribute \n $(\"input[type='checkbox'][data-readonly]\").on(\"click\", function(event) {\n event.preventDefault();\n })\n }\n}\n","import { addImageSelector } from 'spotlight/admin/add_image_selector'\n\nconst docStore = new Map();\n\nfunction highlight(value, query) {\n if (query.trim() === '') return value;\n const queryValue = query.trim();\n return queryValue ? value.replace(new RegExp(queryValue, 'gi'), '<strong>$&</strong>') : value;\n}\n\nfunction templateFunc(obj, query) {\n const thumbnail = obj.thumbnail ? `<div class=\"document-thumbnail\"><img class=\"img-thumbnail\" src=\"${obj.thumbnail}\" /></div>` : '';\n const privateClass = obj.private ? ' blacklight-private' : '';\n const title = highlight(obj.title, query);\n const description = obj.description ? `<small>&nbsp;&nbsp;${highlight(obj.description, query)}</small>` : '';\n return `<div class=\"autocomplete-item${privateClass}\">${thumbnail}\n <span class=\"autocomplete-title\">${title}</span><br/>${description}\n </div>`;\n}\n\nfunction autoCompleteElementTemplate(obj, query) {\n return `<li role=\"option\" data-autocomplete-value=\"${obj.id}\">${templateFunc(obj, query)}</li>`;\n}\n\nfunction getAutoCompleteElementDataMap(autoCompleteElement) {\n if (!docStore.has(autoCompleteElement.id)) {\n docStore.set(autoCompleteElement.id, new Map());\n }\n return docStore.get(autoCompleteElement.id);\n}\n\nasync function fetchResult(url) {\n const result = await fetchAutocompleteJSON(url);\n const docs = result.docs || [];\n const query = this.querySelector('input').value || '';\n const autoCompleteElementDataMap = getAutoCompleteElementDataMap(this);\n return docs.map(doc => {\n autoCompleteElementDataMap.set(doc.id, doc);\n return autoCompleteElementTemplate(doc, query);\n }).join('');\n}\n\nexport function addAutocompletetoFeaturedImage(){\n const autocompletePath = $('form[data-autocomplete-exhibit-catalog-path]').data('autocomplete-exhibit-catalog-path');\n const featuredImageTypeaheads = $('[data-featured-image-typeahead]');\n if (featuredImageTypeaheads.length === 0) return;\n\n $.each(featuredImageTypeaheads, function(index, autoCompleteInput) {\n const autoCompleteElement = autoCompleteInput.closest('auto-complete');\n\n autoCompleteElement.setAttribute('src', autocompletePath);\n autoCompleteElement.fetchResult = fetchResult;\n autoCompleteElement.addEventListener('auto-complete-change', e => {\n const data = getAutoCompleteElementDataMap(autoCompleteElement).get(e.relatedTarget.value);\n if (!data) return;\n\n const inputElement = $(e.relatedTarget);\n const panel = document.querySelector(e.relatedTarget.dataset.targetPanel);\n e.relatedTarget.value = data.title;\n addImageSelector(inputElement, $(panel), data.iiif_manifest, true);\n $(inputElement.data('id-field')).val(data['global_id']);\n inputElement.attr('type', 'text');\n });\n });\n}\n\nexport async function fetchAutocompleteJSON(url) {\n const res = await(fetch(url.toString()));\n if (!res.ok) {\n throw new Error(await res.text());\n }\n return await res.json();\n}\n","/*\n Simple plugin to select form elements\n when other elements are clicked.\n*/\n(function($) {\n $.fn.selectRelatedInput = function() {\n var clickElements = this;\n\n $(clickElements).each(function() {\n var target = $($(this).data('input-select-target'));\n\n var event;\n\n if ($(this).is(\"select\")) {\n event = 'change';\n } else {\n event = 'click';\n }\n\n $(this).on(event, function() {\n if (target.is(\":checkbox\") || target.is(\":radio\")) {\n target.prop('checked', true);\n } else {\n target.focus();\n }\n });\n });\n\n return this;\n };\n})(jQuery);\n\nexport default class {\n connect() {\n $('[data-input-select-target]').selectRelatedInput();\n }\n}\n","import Sortable from 'sortablejs';\n\nconst Module = (function() {\n const nestableContainerSelector = '[data-behavior=\"nestable\"]';\n const sortableOptions = {\n animation: 150,\n draggable: '.dd-item',\n handle: '.dd-handle',\n fallbackOnBody: true,\n swapThreshold: 0.65,\n emptyInsertThreshold: 15,\n onStart: onStartHandler,\n onEnd: onEndHandler,\n onMove: onMoveHandler,\n }\n const draggableClass = 'dd-item';\n const nestedSortableClass = 'dd-list';\n const nestedSortableSelector = '.dd-list';\n const nestedSortableNodeName = 'ol';\n const findNode = (id, container) => container.querySelector(`[data-id=\"${id}\"]`);\n const setWeight = (node, weight) => weightField(node).value = weight;\n const setParent = (node, parentId) => parentPageField(node).value = parentId;\n const weightField = node => findProperty(node, \"weight\");\n const parentPageField = node => findProperty(node, \"parent_page\");\n const findProperty = (node, property) => node.querySelector(`input[data-property=\"${property}\"]`);\n let nestedId = 0;\n\n return {\n init: function(nestedContainers) {\n if (nestedContainers === undefined) {\n nestedContainers = document.querySelectorAll(nestableContainerSelector);\n }\n\n // nestedContainers could be a jQuery selector result, normalize to an array.\n const containersToInit = Array.from(nestedContainers);\n containersToInit.forEach((container) => {\n // Sir Trevor listens for drag and drop events and will error on Sortable events.\n // Don't let them bubble past the Sortable wrapper.\n container.addEventListener('drop', stopPropagationHandler);\n \n const nestedSortables = [\n ...(container.matches(nestedSortableSelector) ? [container] : []),\n ...Array.from(container.querySelectorAll(nestedSortableSelector))\n ];\n const group = `nested-${nestedId++}`;\n \n nestedSortables.forEach(sortable => {\n new Sortable(sortable, { ...sortableOptions, group: group });\n });\n });\n }\n };\n\n function stopPropagationHandler(evt) {\n evt.stopPropagation();\n }\n\n function onStartHandler(evt) {\n makeEmptyChildSortablesForEligibleParents(getNestableContainer(evt.item), getMaxNestingLevelSetting(evt.item));\n }\n\n function onEndHandler(evt) {\n const nestableContainer = getNestableContainer(evt.item);\n removeEmptySortables(nestableContainer);\n updateWeightsAndRelationships(nestableContainer);\n }\n\n function onMoveHandler(evt) {\n // The usage of data-max-depth is one off of the standard notion of depth (# edges to root)\n // E.g., data-max-depth=2 allows for one level of nesting.\n // evt.dragged is a draggable in a Sortable (e.g., a dd-item)\n // evt.to is the Sortable to insert into (e.g., a dd-list)\n const maxAllowedDepth = getMaxNestingLevelSetting(evt.to) - 1;\n const newDepth = getSortableDepth(evt.to) + getHeight(evt.dragged);\n\n // Be careful here. Returning true is different than returning nothing in SortableJS.\n if (newDepth > maxAllowedDepth) {\n return false;\n }\n }\n\n // Get the depth of the sortable element from the root container\n function getSortableDepth(sortableElement) {\n const originatingGroup = Sortable.get(sortableElement).options.group.name;\n let depth = 0;\n let parentSortableElement = sortableElement;\n\n while ((parentSortableElement = parentSortableElement.parentElement.closest(nestedSortableSelector))) {\n const parentSortable = Sortable.get(parentSortableElement);\n if (parentSortable?.options.group.name === originatingGroup) {\n depth++;\n }\n }\n\n return depth;\n }\n\n // Find the max child depth in the tree, starting from the draggableElement\n function findMaxDepth(draggableElement) {\n const childSortableElement = draggableElement.querySelector(nestedSortableSelector);\n if (!childSortableElement) {\n return 1;\n }\n\n const children = childSortableElement.querySelectorAll(`.${draggableClass}`);\n const childDepths = Array.from(children).map(findMaxDepth);\n return 1 + Math.max(0, ...childDepths);\n }\n\n function getHeight(draggableElement) {\n return findMaxDepth(draggableElement) - 1;\n }\n\n function getNestableContainer(element) {\n return element.closest(nestableContainerSelector);\n }\n\n function getMaxNestingLevelSetting(element) {\n return getNestableContainer(element).getAttribute('data-max-depth') || 1;\n }\n\n // Create empty child sortables for all potential parents as appropriate for the given nesting level\n function makeEmptyChildSortablesForEligibleParents(container, nestingLevel) {\n if (nestingLevel <= 1) {\n return;\n }\n\n const sortableElement = container.querySelector(nestedSortableSelector);\n const sortable = Sortable.get(sortableElement);\n if (!sortable) {\n return;\n }\n\n const group = sortable.options.group.name;\n const draggableElements = Array.from(sortableElement.children)\n .filter(child => child.classList.contains(draggableClass));\n\n draggableElements.forEach(draggableElement => {\n if (!draggableElement.querySelector(nestedSortableSelector)) {\n const emptySortableElement = document.createElement(nestedSortableNodeName);\n emptySortableElement.className = nestedSortableClass;\n draggableElement.appendChild(emptySortableElement);\n new Sortable(emptySortableElement, { ...sortableOptions, group: group });\n }\n makeEmptyChildSortablesForEligibleParents(draggableElement, nestingLevel - 1);\n });\n }\n\n // Remove any empty sortables within the container. They could be empty lists, which are invalid for accessibility.\n function removeEmptySortables(container) {\n const sortableElements = container.querySelectorAll(nestedSortableSelector);\n sortableElements.forEach(sortableElement => {\n if (sortableElement.innerHTML.trim() === '') {\n const sortable = Sortable.get(sortableElement);\n if (sortable) {\n sortable.destroy();\n sortableElement.remove();\n }\n }\n });\n }\n\n // Traverse all sortables within a container and update the weight and parent_page inputs\n function updateWeightsAndRelationships(container) {\n const sortableElement = container.matches(nestedSortableSelector) ? container : container.querySelector(nestedSortableSelector);\n const nestingLevelSetting = getMaxNestingLevelSetting(sortableElement);\n const sortable = Sortable.get(sortableElement);\n const stack = [{nodes: sortable.toArray(), parentId: ''}];\n let weight = 0;\n\n while (stack.length > 0) {\n const {nodes, parentId} = stack.pop();\n\n nodes.forEach((nodeId) => {\n const node = findNode(nodeId, container);\n setWeight(node, weight++);\n\n if (nestingLevelSetting > 1) {\n setParent(node, parentId);\n const children = node.querySelector(nestedSortableSelector);\n if (children) {\n const sortableElement = Sortable.get(children);\n stack.push({nodes: sortableElement.toArray(), parentId: nodeId});\n }\n }\n });\n }\n }\n})();\n\nexport default Module\n","export default class {\n connect() {\n if ($('[role=tabpanel]').length > 0 && window.location.hash) {\n var tabpanel = $(window.location.hash).closest('[role=tabpanel]');\n $('a[role=tab][href=\"#'+tabpanel.attr('id')+'\"]').tab('show');\n }\n }\n}\n","// translationProgress is a plugin that updates the \"3/14\" progress\n// counters in the tabs of the translation adminstration dashboard.\n// This works by counting the number of progress items and translations\n// present (indicated by data attributes) in each tab's content\nexport default class {\n connect() {\n $('[data-behavior=\"translation-progress\"]').each(function(){\n var currentTab = $(this);\n var tabName = $(this).attr('aria-controls');\n var translationFields = $('#' + tabName).find('[data-translation-progress-item=\"true\"]');\n var completedTranslations = $('#' + tabName).find('[data-translation-present=\"true\"]');\n\n currentTab.find('span').text(completedTranslations.length + '/' + translationFields.length);\n })\n }\n}","// Blacklight's BookmarkToggle is doing the real work, this only adds/removes the \"blacklight-private\" class.\nconst VisibilityToggle = (e) => {\n if (e.target.matches('[data-checkboxsubmit-target=\"checkbox\"]')) {\n const form = e.target.closest('form')\n if (form) {\n // Add/remove the \"private\" label to the document row when visibility is toggled\n const docRow = form.closest('tr')\n if (docRow) docRow.classList.toggle('blacklight-private')\n }\n }\n}\ndocument.addEventListener('click', VisibilityToggle)\nexport default VisibilityToggle\n","export default class {\n connect() {\n var container;\n function edit_user(event) {\n event.preventDefault();\n $(this).closest('tr').hide();\n const id = $(this).attr('data-target') || $(this).attr('data-bs-target');\n const edit_view = $(\"[data-edit-for='\"+id+\"']\", container).show();\n $.each(edit_view.find('input[type=\"text\"], select'), function() {\n // Cache original values incase editing is canceled\n $(this).data('orig', $(this).val());\n });\n }\n\n function cancel_edit(event) {\n event.preventDefault();\n const id = $(this).closest('tr').attr('data-edit-for');\n const edit_view = $(\"[data-edit-for='\"+id+\"']\", container).hide();\n clear_errors(edit_view);\n rollback_changes(edit_view);\n $(\"[data-show-for='\"+id+\"']\", container).show();\n }\n\n function clear_errors(element) {\n element.find('.has-error')\n .removeClass('has-error')\n .find('.form-text')\n .remove(); // Remove the error messages\n }\n\n function rollback_changes(element) {\n $.each(element.find('input[type=\"text\"], select'), function() {\n $(this).val($(this).data('orig')).trigger('change');\n });\n }\n\n function destroy_user(event) {\n const id = $(this).attr('data-target') || $(this).attr('data-bs-target');\n $(\"[data-destroy-for='\"+id+\"']\", container).val('1');\n }\n\n function new_user(event) {\n event.preventDefault();\n const edit_view = $(\"[data-edit-for='new']\", container).show();\n $.each(edit_view.find('input[type=\"text\"], select'), function() {\n // Cache original values incase editing is canceled\n $(this).data('orig', $(this).val());\n });\n }\n\n function open_errors() {\n const edit_row = container.find('.has-error').closest('[data-edit-for]');\n edit_row.show();\n // The following row has the controls, so show it too.\n edit_row.next().show();\n }\n\n $('.edit_exhibit, .admin-users').each(function() {\n\n container = $(this);\n $('[data-edit-for]', container).hide();\n open_errors();\n $(\"[data-behavior='edit-user']\", container).on('click', edit_user);\n $(\"[data-behavior='cancel-edit']\", container).on('click', cancel_edit);\n $(\"[data-behavior='destroy-user']\", container).on('click', destroy_user);\n $(\"[data-behavior='new-user']\", container).on('click', new_user);\n })\n }\n}\n","import { fetchAutocompleteJSON } from 'spotlight/admin/search_typeahead';\n\n(function ($){\n SirTrevor.BlockMixins.Autocompleteable = {\n mixinName: \"Autocompleteable\",\n preload: true,\n\n initializeAutocompleteable: function() {\n this.on(\"onRender\", this.addAutocompletetoSirTrevorForm);\n\n if (this['autocomplete_url'] === undefined) {\n this.autocomplete_url = function() { return $('form[data-autocomplete-url]').data('autocomplete-url'); };\n }\n\n if (this['autocomplete_fetch'] === undefined) {\n this.autocomplete_fetch = this.fetchAutocompleteResults;\n }\n\n if (this['transform_autocomplete_results'] === undefined) {\n this.transform_autocomplete_results = (val) => val\n }\n\n if (this['highlight'] === undefined) {\n this.highlight = function(value) {\n if (!value) return '';\n const queryValue = this.getQueryValue().trim();\n return queryValue ? value.replace(new RegExp(queryValue, 'gi'), '<strong>$&</strong>') : value;\n }\n }\n\n if (this['autocomplete_control'] === undefined) {\n this.autocomplete_control = function() {\n const autocompleteID = this.autocompleteID();\n return `\n <auto-complete src=\"${this.autocomplete_url()}\" for=\"${autocompleteID}-popup\" fetch-on-empty>\n <input type=\"text\" name=\"${autocompleteID}\" placeholder=\"${i18n.t(\"blocks:autocompleteable:placeholder\")}\" data-default-typeahead>\n <ul id=\"${autocompleteID}-popup\"></ul>\n <div id=\"${autocompleteID}-popup-feedback\" class=\"sr-only visually-hidden\"></div>\n </auto-complete>\n ` };\n }\n\n if (this['autocomplete_element_template'] === undefined) {\n this.autocomplete_element_template = function(item) {\n return `<li role=\"option\" data-autocomplete-value=\"${item.id}\">${this.autocomplete_template(item)}</li>`\n }\n }\n },\n\n queryTokenizer: function(query) {\n return query.trim().toLowerCase().split(/\\s+/).filter(Boolean);\n },\n\n filterResults: function(data, query) {\n const queryStrings = this.queryTokenizer(query);\n return data.filter(item => {\n const lowerTitle = item.title.toLowerCase();\n return queryStrings.some(queryString => lowerTitle.includes(queryString));\n });\n },\n\n fetchAutocompleteResults: async function(url) {\n const result = await fetchAutocompleteJSON(url);\n const transformed = this.transform_autocomplete_results(result);\n this.fetchedData = {};\n transformed.map(item => this.fetchedData[item.id] = item);\n return transformed.map(item => this.autocomplete_element_template(item)).join('');\n },\n\n fetchOnceAndFilterLocalResults: async function(url) {\n if (this.fetchedData === undefined) {\n await this.fetchAutocompleteResults(url);\n }\n const query = url.searchParams.get('q');\n const data = Object.values(this.fetchedData);\n const filteredData = query ? this.filterResults(data, query) : data;\n return filteredData.map(item => this.autocomplete_element_template(item)).join('');\n },\n\n autocompleteID: function() {\n return this.blockID + '-autocomplete';\n },\n\n getQueryValue: function() {\n const completer = this.inner.querySelector(\"auto-complete > input\");\n return completer.value;\n },\n\n addAutocompletetoSirTrevorForm: function() {\n const completer = this.inner.querySelector(\"auto-complete\");\n completer.fetchResult = this.autocomplete_fetch.bind(this);\n completer.addEventListener('auto-complete-change', (e) => {\n const data = this.fetchedData[e.relatedTarget.value];\n if (e.relatedTarget.value && data) {\n e.value = e.relatedTarget.value = '';\n this.createItemPanel({ ...data, display: \"true\" });\n }\n });\n },\n },\n\n\n SirTrevor.Block.prototype.availableMixins.push(\"autocompleteable\");\n})(jQuery);\n","(function ($){\n SirTrevor.BlockMixins.Formable = {\n mixinName: \"Formable\",\n preload: true,\n\n initializeFormable: function() {\n\n if (this['afterLoadData'] === undefined) {\n this['afterLoadData'] = function(data) { };\n }\n },\n\n formId: function(id) {\n return this.blockID + \"_\" + id;\n },\n\n _serializeData: function() {\n\n var data = $(\":input,textarea,select\", this.inner).not(':input:radio').serializeJSON();\n\n $(':input:radio:checked', this.inner).each(function(index, input) {\n var key = $(input).data('key') || input.getAttribute('name');\n\n if (!key.match(\"\\\\[\")) {\n data[key] = $(input).val();\n }\n });\n\n /* Simple to start. Add conditions later */\n if (this.hasTextBlock()) {\n data.text = this.getTextBlockHTML();\n data.format = 'html';\n if (data.text && data.text.length > 0 && this.options.convertToMarkdown) {\n data.text = stToMarkdown(data.text, this.type);\n data.format = 'markdown';\n }\n }\n\n return data;\n },\n\n loadData: function(data){\n if (this.hasTextBlock()) {\n if (data.text && data.text.length > 0 && this.options.convertFromMarkdown && data.format !== \"html\") {\n this.setTextBlockHTML(SirTrevor.toHTML(data.text, this.type));\n } else {\n this.setTextBlockHTML(data.text);\n }\n }\n this.loadFormDataByKey(data);\n this.afterLoadData(data);\n },\n\n loadFormDataByKey: function(data) {\n $(':input', this.inner).not('button,:input[type=hidden]').each(function(index, input) {\n var key = $(input).data('key') || input.getAttribute('name');\n\n if (key) {\n\n if (key.match(\"\\\\[\\\\]$\")) {\n key = key.replace(\"[]\", \"\");\n }\n\n // by wrapping it in an array, this'll \"just work\" for radio and checkbox fields too\n var input_data = data[key];\n\n if (!(input_data instanceof Array)) {\n input_data = [input_data];\n }\n $(this).val(input_data);\n }\n });\n },\n },\n\n\n SirTrevor.Block.prototype.availableMixins.push(\"formable\");\n})(jQuery);\n","(function ($){\n SirTrevor.BlockMixins.Plustextable = {\n mixinName: \"Textable\",\n preload: true,\n\n initializeTextable: function() {\n if (this['formId'] === undefined) {\n this.withMixin(SirTrevor.BlockMixins.Formable);\n }\n \n if (this['show_heading'] === undefined) {\n this.show_heading = true;\n }\n },\n \n align_key:\"text-align\",\n text_key:\"item-text\",\n heading_key: \"title\",\n \n text_area: function() { \n return `\n <div class=\"row\">\n <div class=\"col-md-8\">\n <div class=\"form-group mb-3\">\n ${this.heading()}\n <div class=\"field\">\n <label for=\"${this.formId(this.text_key)}\" class=\"col-form-label\">${i18n.t(\"blocks:textable:text\")}</label>\n <div id=\"${this.formId(this.text_key)}\" class=\"st-text-block form-control\" contenteditable=\"true\"></div>\n </div>\n </div>\n </div>\n <div class=\"col-md-4\">\n <div class=\"text-align\">\n <p>${i18n.t(\"blocks:textable:align:title\")}</p>\n <input data-key=\"${this.align_key}\" type=\"radio\" name=\"${this.formId(this.align_key)}\" id=\"${this.formId(this.align_key + \"-left\")}\" value=\"left\" checked=\"true\">\n <label for=\"${this.formId(this.align_key + \"-left\")}\">${i18n.t(\"blocks:textable:align:left\")}</label>\n <input data-key=\"${this.align_key}\" type=\"radio\" name=\"${this.formId(this.align_key)}\" id=\"${this.formId(this.align_key + \"-right\")}\" value=\"right\">\n <label for=\"${this.formId(this.align_key + \"-right\")}\">${i18n.t(\"blocks:textable:align:right\")}</label>\n </div>\n </div>\n </div>`\n },\n \n heading: function() {\n if(this.show_heading) {\n return `<div class=\"field\">\n <label for=\"${this.formId(this.heading_key)}\" class=\"col-form-label\">${i18n.t(\"blocks:textable:heading\")}</label>\n <input type=\"text\" class=\"form-control\" id=\"${this.formId(this.heading_key)}\" name=\"${this.heading_key}\" />\n </div>`\n } else {\n return \"\";\n }\n },\n };\n \n\n SirTrevor.Block.prototype.availableMixins.push(\"plustextable\");\n})(jQuery);\n","import Core from 'spotlight/core'\n\n(function ($){\n Core.Block = SirTrevor.Block.extend({\n scribeOptions: {\n allowBlockElements: true,\n tags: { p: true }\n },\n formable: true,\n editorHTML: function() {\n return '';\n },\n beforeBlockRender: function() {\n this.availableMixins.forEach(function(mixin) {\n if (this[mixin] && SirTrevor.BlockMixins[this.capitalize(mixin)].preload) {\n this.withMixin(SirTrevor.BlockMixins[this.capitalize(mixin)]);\n }\n }, this);\n },\n $instance: function() { return $('#' + this.instanceID); },\n capitalize: function(string) {\n return string.charAt(0).toUpperCase() + string.substring(1).toLowerCase();\n }\n })\n})(jQuery);\n","import Core from 'spotlight/core'\nimport SpotlightNestable from 'spotlight/admin/spotlight_nestable'\n\nCore.Block.Resources = (function(){\n\n return Core.Block.extend({\n type: \"resources\",\n formable: true,\n autocompleteable: true,\n show_heading: true,\n show_image_selection: true,\n title: function() { return i18n.t(\"blocks:\" + this.type + \":title\"); },\n description: function() { return i18n.t(\"blocks:\" + this.type + \":description\"); },\n alt_text_guidelines: function() {\n if (this.showAltText()) {\n return i18n.t(\"blocks:alt_text_guidelines:intro\");\n }\n return \"\";\n },\n alt_text_guidelines_link: function() {\n if (this.showAltText()) {\n var link_url = i18n.t(\"blocks:alt_text_guidelines:link_url\");\n var link_label = i18n.t(\"blocks:alt_text_guidelines:link_label\");\n return '<a target=\"_blank\" href=\"' + link_url + '\">' + link_label + '</a>';\n }\n return \"\";\n },\n icon_name: \"resources\",\n blockGroup: function() { return i18n.t(\"blocks:group:items\") },\n\n primary_field_key: \"primary-caption-field\",\n show_primary_field_key: \"show-primary-caption\",\n secondary_field_key: \"secondary-caption-field\",\n show_secondary_field_key: \"show-secondary-caption\",\n\n display_checkbox: \"display-checkbox\",\n decorative_checkbox: \"decorative-checkbox\",\n alt_text_textarea: \"alt-text-textarea\",\n\n globalIndex: 0,\n\n _itemPanelIiifFields: function(index, data) {\n return [];\n },\n\n _altTextFieldsHTML: function(index, data) {\n if (this.showAltText()) {\n return this.altTextHTML(index, data);\n }\n return \"\";\n },\n\n showAltText: function() {\n return this.editorOptions.altTextSettings[this._typeAsCamelCase()]\n },\n\n _typeAsCamelCase: function() {\n return this.type\n .split('_')\n .map(word => word.charAt(0).toUpperCase() + word.slice(1))\n .join('');\n },\n _itemSelectImageLink: function(block_item_id, doc_id, index) {\n // If image selection is not possible for this block, then do not show\n // image selection link\n if (!this.show_image_selection) return ``;\n var url = $('form[data-exhibit-path]').data('exhibit-path') + '/select_image?';\n var markup = `\n <a name=\"selectimage\" href=\"${url}block_item_id=${block_item_id}&index_id=${index}\" data-blacklight-modal=\"trigger\">Select image area</a>\n `;\n return markup;\n },\n _itemPanel: function(data) {\n var index = \"item_\" + this.globalIndex++;\n var checked;\n if (data.display == \"true\") {\n checked = \"checked='checked'\"\n } else {\n checked = \"\";\n }\n var resource_id = data.slug || data.id;\n var block_item_id = this.formId(index);\n var markup = `\n <li class=\"field dd-item dd3-item\" data-cropper=\"select_image_${block_item_id}\" data-resource-id=\"${resource_id}\" data-id=\"${index}\" id=\"${block_item_id}\" data-input-prefix=\"item[${index}]\">\n <input type=\"hidden\" name=\"item[${index}][id]\" value=\"${resource_id}\" />\n <input type=\"hidden\" name=\"item[${index}][title]\" value=\"${data.title}\" />\n ${this._itemPanelIiifFields(index, data)}\n <input data-property=\"weight\" type=\"hidden\" name=\"item[${index}][weight]\" value=\"${data.weight}\" />\n <div class=\"card d-flex dd3-content\">\n <div class=\"dd-handle dd3-handle\">${i18n.t(\"blocks:resources:panel:drag\")}</div>\n <div class=\"card-header item-grid\">\n <div class=\"d-flex\">\n <div class=\"d-inline-block\">\n <div class=\"d-flex\">\n <div class=\"checkbox\">\n <input name=\"item[${index}][display]\" type=\"hidden\" value=\"false\" />\n <input name=\"item[${index}][display]\" id=\"${this.formId(this.display_checkbox + '_' + data.id)}\" type=\"checkbox\" ${checked} class=\"item-grid-checkbox\" value=\"true\" />\n <label class=\"sr-only visually-hidden\" for=\"${this.formId(this.display_checkbox + '_' + data.id)}\">${i18n.t(\"blocks:resources:panel:display\")}</label>\n </div>\n <div class=\"pic\">\n <img class=\"img-thumbnail\" src=\"${(data.thumbnail_image_url || ((data.iiif_tilesource || \"\").replace(\"/info.json\", \"/full/!100,100/0/default.jpg\")))}\" />\n </div>\n </div>\n <div class=\"d-inline-block\">\n ${this._itemSelectImageLink(block_item_id,data.id, index)}\n </div>\n </div>\n <div class=\"main\">\n <div class=\"title card-title\">${data.title}</div>\n <div>${(data.slug || data.id)}</div>\n ${this._altTextFieldsHTML(index, data)}\n </div>\n <div class=\"remove float-right float-end\">\n <a data-item-grid-panel-remove=\"true\" href=\"#\">${i18n.t(\"blocks:resources:panel:remove\")}</a>\n </div>\n </div>\n <div data-panel-image-pagination=\"true\"></div>\n </div>\n </div>\n </li>\n `\n\n const panel = $(markup);\n var context = this;\n\n $('.remove a', panel).on('click', function(e) {\n e.preventDefault();\n $(this).closest('.field').remove();\n context.afterPanelDelete();\n\n });\n\n this.afterPanelRender(data, panel);\n\n return panel;\n },\n\n afterPanelRender: function(data, panel) {\n \n },\n\n afterPanelDelete: function() {\n\n },\n\n createItemPanel: function(data) {\n var panel = this._itemPanel(data);\n this.attachAltTextHandlers(panel);\n $(panel).appendTo($('.panels > ol', this.inner));\n $('[data-behavior=\"nestable\"]', this.inner).trigger('change');\n },\n\n item_options: function() { return \"\"; },\n\n content: function() {\n var templates = [this.items_selector()];\n if (this.plustextable) {\n templates.push(this.text_area());\n }\n return templates.join(\"<hr />\\n\");\n },\n\n items_selector: function() { return [\n '<div class=\"row\">',\n '<div class=\"col-md-8\">',\n '<div class=\"form-group mb-3\">',\n '<div class=\"panels dd nestable-item-grid\" data-behavior=\"nestable\" data-max-depth=\"1\"><ol class=\"dd-list\"></ol></div>',\n this.autocomplete_control(),\n '</div>',\n '</div>',\n '<div class=\"col-md-4\">',\n this.item_options(),\n '</div>',\n '</div>'].join(\"\\n\")\n },\n\n editorHTML: function() {\n return `<div class=\"form resources-admin clearfix\">\n <div class=\"widget-header\">\n ${this.description()}\n ${this.alt_text_guidelines()}\n ${this.alt_text_guidelines_link()}\n </div>\n ${this.content()}\n </div>`\n },\n\n _altTextData: function(data) {\n const isDecorative = data.decorative;\n const altText = isDecorative ? '' : (data.alt_text || '');\n const altTextBackup = data.alt_text_backup || '';\n const placeholderAttr = isDecorative ? '' : `placeholder=\"${i18n.t(\"blocks:resources:alt_text:placeholder\")}\"`;\n const disabledAttr = isDecorative ? 'disabled' : '';\n\n return { isDecorative, altText, altTextBackup, placeholderAttr, disabledAttr };\n },\n\n altTextHTML: function(index, data) {\n const { isDecorative, altText, altTextBackup, placeholderAttr, disabledAttr } = this._altTextData(data);\n return `<div class=\"mt-2 pt-2 d-flex\">\n <div class=\"me-2 mr-2\">\n <label class=\"col-form-label pb-0 pt-1\" for=\"${this.formId(this.alt_text_textarea + '_' + data.id)}\">${i18n.t(\"blocks:resources:alt_text:alternative_text\")}</label>\n <div class=\"form-check mb-1 justify-content-end\">\n <input class=\"form-check-input\" type=\"checkbox\"\n id=\"${this.formId(this.decorative_checkbox + '_' + data.id)}\" name=\"item[${index}][decorative]\" ${isDecorative ? 'checked' : ''}>\n <label class=\"form-check-label\" for=\"${this.formId(this.decorative_checkbox + '_' + data.id)}\">${i18n.t(\"blocks:resources:alt_text:decorative\")}</label>\n </div>\n </div>\n <div class=\"flex-grow-1 flex-fill d-flex\">\n <input type=\"hidden\" name=\"item[${index}][alt_text_backup]\" value=\"${altTextBackup}\" />\n <textarea class=\"form-control w-100\" rows=\"2\" ${placeholderAttr}\n id=\"${this.formId(this.alt_text_textarea + '_' + data.id)}\" name=\"item[${index}][alt_text]\" ${disabledAttr}>${altText}</textarea>\n </div>\n </div>`\n },\n\n attachAltTextHandlers: function(panel) {\n if (this.showAltText()) {\n const decorativeCheckbox = $('input[name$=\"[decorative]\"]', panel);\n const altTextInput = $('textarea[name$=\"[alt_text]\"]', panel);\n const altTextBackupInput = $('input[name$=\"[alt_text_backup]\"]', panel);\n\n decorativeCheckbox.on('change', function() {\n const isDecorative = this.checked;\n if (isDecorative) {\n altTextBackupInput.val(altTextInput.val());\n altTextInput.val('');\n } else {\n altTextInput.val(altTextBackupInput.val());\n }\n altTextInput\n .prop('disabled', isDecorative)\n .attr('placeholder', isDecorative ? '' : i18n.t(\"blocks:resources:alt_text:placeholder\"));\n });\n\n altTextInput.on('input', function() {\n $(this).data('lastValue', $(this).val());\n });\n }\n },\n\n onBlockRender: function() {\n SpotlightNestable.init($('[data-behavior=\"nestable\"]', this.inner));\n $('[data-input-select-target]', this.inner).selectRelatedInput();\n },\n\n afterLoadData: function(data) {\n var context = this;\n $.each(Object.keys(data.item || {}).map(function(k) { return data.item[k]}).sort(function(a,b) { return a.weight - b.weight; }), function(index, item) {\n context.createItemPanel(item);\n });\n \n }\n });\n\n})();\n","import Core from 'spotlight/core'\n\nSirTrevor.Blocks.Browse = (function(){\n\n return Core.Block.Resources.extend({\n type: \"browse\",\n\n icon_name: \"browse\",\n\n autocomplete_url: function() {\n return document.getElementById(this.instanceID).closest('form[data-autocomplete-exhibit-searches-path]').dataset.autocompleteExhibitSearchesPath;\n },\n\n autocomplete_fetch: function(url) {\n return this.fetchOnceAndFilterLocalResults(url);\n },\n\n autocomplete_template: function(obj) {\n const thumbnail = obj.thumbnail_image_url ? `<div class=\"document-thumbnail\"><img class=\"img-thumbnail\" src=\"${obj.thumbnail_image_url}\" /></div>` : ''\n const description = obj.description ? `<small>&nbsp;&nbsp;${obj.description}</small>` : '';\n return `<div class=\"autocomplete-item${!obj.published ? ' blacklight-private' : ''}\">${thumbnail}\n <span class=\"autocomplete-title\">${this.highlight(obj.full_title)}</span>${description}</div>`;\n },\n\n _itemPanel: function(data) {\n var index = \"item_\" + this.globalIndex++;\n var checked;\n if (data.display == \"true\") {\n checked = \"checked='checked'\"\n } else {\n checked = \"\";\n }\n var resource_id = data.slug || data.id;\n var markup = `\n <li class=\"field dd-item dd3-item\" data-resource-id=\"${resource_id}\" data-id=\"${index}\" id=\"${this.formId(index)}\">\n <input type=\"hidden\" name=\"item[${index}][id]\" value=\"${resource_id}\" />\n <input type=\"hidden\" name=\"item[${index}][full_title]\" value=\"${(data.full_title || data.title)}\" />\n <input data-property=\"weight\" type=\"hidden\" name=\"item[${index}][weight]\" value=\"${data.weight}\" />\n <div class=\"card d-flex dd3-content\">\n <div class=\"dd-handle dd3-handle\">${i18n.t(\"blocks:resources:panel:drag\")}</div>\n <div class=\"card-header item-grid\">\n <div class=\"d-flex\">\n <div class=\"checkbox\">\n <input name=\"item[${index}][display]\" type=\"hidden\" value=\"false\" />\n <input name=\"item[${index}][display]\" id=\"${this.formId(this.display_checkbox + '_' + data.id)}\" type=\"checkbox\" ${checked} class=\"item-grid-checkbox\" value=\"true\" />\n <label class=\"sr-only visually-hidden\" for=\"${this.formId(this.display_checkbox + '_' + data.id)}\">${i18n.t(\"blocks:resources:panel:display\")}</label>\n </div>\n <div class=\"pic\">\n <img class=\"img-thumbnail\" src=\"${(data.thumbnail_image_url || ((data.iiif_tilesource || \"\").replace(\"/info.json\", \"/full/!100,100/0/default.jpg\")))}\" />\n </div>\n <div class=\"main\">\n <div class=\"title card-title\">${(data.full_title || data.title)}</div>\n <div>${(data.slug || data.id)}</div>\n </div>\n <div class=\"remove float-right float-end\">\n <a data-item-grid-panel-remove=\"true\" href=\"#\">${i18n.t(\"blocks:resources:panel:remove\")}</a>\n </div>\n </div>\n </div>\n </div>\n </li>`\n\n var panel = $(markup);\n var context = this;\n\n $('.remove a', panel).on('click', function(e) {\n e.preventDefault();\n $(this).closest('.field').remove();\n context.afterPanelDelete();\n\n });\n\n this.afterPanelRender(data, panel);\n\n return panel;\n },\n\n item_options: function() { return `\n <label>\n <input type=\"hidden\" name=\"display-item-counts\" value=\"false\" />\n <input type=\"checkbox\" name=\"display-item-counts\" value=\"true\" checked />\n ${i18n.t(\"blocks:browse:item_counts\")}\n </label>`\n },\n });\n\n})();\n","/*\n Sir Trevor BrowseGroupCategories\n*/\nimport Core from 'spotlight/core'\n\nSirTrevor.Blocks.BrowseGroupCategories = (function(){\n\n return Core.Block.Resources.extend({\n type: \"browse_group_categories\",\n icon_name: \"browse\",\n\n autocomplete_control: function() {\n const autocompleteID = this.blockID + '-autocomplete';\n return `<auto-complete src=\"${this.autocomplete_url()}\" for=\"${autocompleteID}-popup\" fetch-on-empty>\n <input type=\"text\" name=\"${autocompleteID}\" placeholder=\"${i18n.t(\"blocks:browse_group_categories:autocomplete\")}\" data-default-typeahead>\n <ul id=\"${autocompleteID}-popup\"></ul>\n <div id=\"${autocompleteID}-popup-feedback\" class=\"sr-only visually-hidden\"></div>\n </auto-complete>`\n },\n autocomplete_template: function(obj) {\n return `<div class=\"autocomplete-item${!obj.published ? ' blacklight-private' : ''}\">\n <span class=\"autocomplete-title\">${this.highlight(obj.title)}</span><br/></div>`\n },\n\n autocomplete_url: function() {\n return document.getElementById(this.instanceID).closest('form[data-autocomplete-exhibit-browse-groups-path]').dataset.autocompleteExhibitBrowseGroupsPath;\n },\n autocomplete_fetch: function(url) {\n return this.fetchOnceAndFilterLocalResults(url);\n },\n _itemPanel: function(data) {\n var index = \"item_\" + this.globalIndex++;\n var checked;\n if (data.display == \"true\") {\n checked = \"checked='checked'\"\n } else {\n checked = \"\";\n }\n var resource_id = data.slug || data.id;\n var markup = `\n <li class=\"field dd-item dd3-item\" data-resource-id=\"${resource_id}\" data-id=\"${index}\" id=\"${this.formId(index)}\">\n <input type=\"hidden\" name=\"item[${index}][id]\" value=\"${resource_id}\" />\n <input type=\"hidden\" name=\"item[${index}][title]\" value=\"${data.title}\" />\n <input data-property=\"weight\" type=\"hidden\" name=\"item[${index}][weight]\" value=\"${data.weight}\" />\n <div class=\"card d-flex dd3-content\">\n <div class=\"dd-handle dd3-handle\">${i18n.t(\"blocks:resources:panel:drag\")}</div>\n <div class=\"d-flex card-header item-grid justify-content-between\">\n <div class=\"d-flex flex-grow-1\">\n <div class=\"checkbox\">\n <input name=\"item[${index}][display]\" type=\"hidden\" value=\"false\" />\n <input name=\"item[${index}][display]\" id=\"${this.formId(this.display_checkbox + '_' + data.id)}\" type=\"checkbox\" ${checked} class=\"item-grid-checkbox\" value=\"true\" />\n <label class=\"sr-only visually-hidden\" for=\"${this.formId(this.display_checkbox + '_' + data.id)}\">${i18n.t(\"blocks:resources:panel:display\")}</label>\n </div>\n <div class=\"main\">\n <div class=\"title card-title\">${data.title}</div>\n </div>\n </div>\n <div class=\"d-flex\">\n <a data-item-grid-panel-remove=\"true\" href=\"#\">${i18n.t(\"blocks:resources:panel:remove\")}</a>\n </div>\n </div>\n </div>\n </li>`\n\n const panel = $(markup);\n var context = this;\n\n $('a[data-item-grid-panel-remove]', panel).on('click', function(e) {\n e.preventDefault();\n $(this).closest('.field').remove();\n context.afterPanelDelete();\n\n });\n\n this.afterPanelRender(data, panel);\n\n return panel;\n },\n\n item_options: function() { return `\n <label>\n <input type=\"hidden\" name=\"display-item-counts\" value=\"false\" />\n <input type=\"checkbox\" name=\"display-item-counts\" value=\"true\" checked />\n ${i18n.t(\"blocks:browse_group_categories:item_counts\")}\n </label>`\n },\n });\n})();\n","/*\n Sir Trevor ItemText Block.\n This block takes an ID,\n fetches the record from solr,\n displays the image, title, \n and any provided text\n and displays them.\n*/\n\nSirTrevor.Blocks.Iframe = (function(){\n\n return SirTrevor.Block.extend({\n type: \"Iframe\",\n formable: true,\n \n title: function() { return i18n.t('blocks:iframe:title'); },\n description: function() { return i18n.t('blocks:iframe:description'); },\n\n icon_name: \"iframe\",\n \n editorHTML: function() {\n return `<div class=\"clearfix\">\n <div class=\"widget-header\">\n ${this.description()}\n </div>\n <textarea name=\"code\" class=\"form-control\" rows=\"5\" placeholder=\"${i18n.t(\"blocks:iframe:placeholder\")}\"></textarea>\n </div>`;\n }\n });\n})();","SirTrevor.Blocks.LinkToSearch = (function(){\n\n return SirTrevor.Blocks.Browse.extend({\n\n type: \"link_to_search\",\n\n icon_name: 'search_results',\n\n searches_key: \"slug\",\n view_key: \"view\",\n plustextable: false,\n\n });\n})();\n","/*\n Sir Trevor ItemText Block.\n This block takes an ID,\n fetches the record from solr,\n displays the image, title, \n and any provided text\n and displays them.\n*/\nimport Core from 'spotlight/core'\n\nSirTrevor.Blocks.Oembed = (function(){\n\n return Core.Block.extend({\n plustextable: true,\n\n id_key:\"url\",\n\n type: \"oembed\",\n \n title: function() { return i18n.t('blocks:oembed:title'); },\n description: function() { return i18n.t('blocks:oembed:description'); },\n\n icon_name: \"oembed\",\n show_heading: false,\n\n editorHTML: function () {\n return `<div class=\"form oembed-text-admin clearfix\">\n <div class=\"widget-header\">\n ${this.description()}\n </div>\n <div class=\"row\">\n <div class=\"form-group mb-3 col-md-8\">\n <label for=\"${this.formId(this.id_key)}\">${i18n.t(\"blocks:oembed:url\")}</label>\n <input name=\"${this.id_key}\" class=\"form-control col-md-6\" type=\"text\" id=\"${this.formId(this.id_key)}\" />\n </div>\n </div>\n ${this.text_area()}\n </div>`\n }\n });\n})();","import Core from 'spotlight/core'\n\nSirTrevor.Blocks.FeaturedPages = (function(){\n\n return Core.Block.Resources.extend({\n type: \"featured_pages\",\n\n icon_name: \"pages\",\n\n autocomplete_url: function() { return document.getElementById(this.instanceID).closest('form[data-autocomplete-exhibit-pages-path]').dataset.autocompleteExhibitPagesPath; },\n autocomplete_fetch: function(url) {\n return this.fetchOnceAndFilterLocalResults(url);\n },\n autocomplete_template: function(obj) {\n const description = obj.description ? `<small>&nbsp;&nbsp;${obj.description}</small>` : '';\n const thumbnail = obj.thumbnail_image_url ? `<div class=\"document-thumbnail\"><img class=\"img-thumbnail\" src=\"${obj.thumbnail_image_url}\" /></div>` : ''\n return `<div class=\"autocomplete-item${!obj.published ? ' blacklight-private' : ''}\">${thumbnail}\n <span class=\"autocomplete-title\">${this.highlight(obj.title)}</span><br/>${description}</div>`\n },\n });\n\n})();\n","/*\n Sir Trevor ItemText Block.\n This block takes an ID,\n fetches the record from solr,\n displays the image, title, \n and any provided text\n and displays them.\n*/\n\nSirTrevor.Blocks.Rule = (function(){\n\n return SirTrevor.Block.extend({\n type: \"rule\",\n \n title: function() { return i18n.t('blocks:rule:title'); },\n\n icon_name: \"rule\",\n \n editorHTML: function() {\n return '<hr />'\n }\n });\n})();","//= require spotlight/admin/blocks/browse_block\n\nSirTrevor.Blocks.SearchResults = (function(){\n\n return SirTrevor.Blocks.Browse.extend({\n\n type: \"search_results\",\n\n icon_name: 'search_results',\n\n searches_key: \"slug\",\n view_key: \"view\",\n plustextable: false,\n\n content: function() {\n return this.items_selector()\n },\n\n item_options: function() {\n var block = this;\n var fields = $('[data-blacklight-configuration-search-views]').data('blacklight-configuration-search-views');\n\n return $.map(fields, function(field) {\n return `<div>\n <label for='${block.formId(block.view_key + field.key)}'>\n <input id='${block.formId(block.view_key + field.key)}' name='${block.view_key}[]' type='checkbox' value='${field.key}' />\n ${field.label}\n </label>\n </div>`\n }).join(\"\\n\");\n },\n\n afterPanelRender: function(data, panel) {\n $(this.inner).find('.item-input-field').attr(\"disabled\", \"disabled\");\n },\n\n afterPanelDelete: function() {\n $(this.inner).find('.item-input-field').removeAttr(\"disabled\");\n },\n\n });\n})();\n","import Iiif from 'spotlight/admin/iiif'\nimport Core from 'spotlight/core'\n\nSirTrevor.Blocks.SolrDocumentsBase = (function(){\n\n return Core.Block.Resources.extend({\n plustextable: true,\n autocomplete_url: function() { return this.$instance().closest('form[data-autocomplete-exhibit-catalog-path]').data('autocomplete-exhibit-catalog-path') },\n autocomplete_template: function(obj) {\n const thumbnail = obj.thumbnail ? `<div class=\"document-thumbnail\"><img class=\"img-thumbnail\" src=\"${obj.thumbnail}\" /></div>` : ''\n return `<div class=\"autocomplete-item${obj.private ? ' blacklight-private' : ''}\">${thumbnail}\n <span class=\"autocomplete-title\">${this.highlight(obj.title)}</span><br/><small>&nbsp;&nbsp;${this.highlight(obj.description)}</small></div>`\n },\n transform_autocomplete_results: function(response) {\n return $.map(response['docs'], function(doc) {\n return doc;\n })\n },\n\n caption_option_values: function() {\n var fields = $('[data-blacklight-configuration-index-fields]').data('blacklight-configuration-index-fields');\n\n return $.map(fields, function(field) {\n return $('<option />').val(field.key).text(field.label)[0].outerHTML;\n }).join(\"\\n\");\n },\n\n item_options: function() { return this.caption_options(); },\n\n caption_options: function() { return `\n <div class=\"field-select primary-caption\" data-behavior=\"item-caption-admin\">\n <input name=\"${this.show_primary_field_key}\" type=\"hidden\" value=\"false\" />\n <input data-input-select-target=\"#${this.formId(this.primary_field_key)}\" name=\"${this.show_primary_field_key}\" id=\"${this.formId(this.show_primary_field_key)}\" type=\"checkbox\" value=\"true\" />\n <label for=\"${this.formId(this.show_primary_field_key)}\">${i18n.t(\"blocks:solr_documents:caption:primary\")}</label>\n <select data-input-select-target=\"#${this.formId(this.show_primary_field_key)}\" name=\"${this.primary_field_key}\" id=\"${this.formId(this.primary_field_key)}\">\n <option value=\"\">${i18n.t(\"blocks:solr_documents:caption:placeholder\")}</option>\n ${this.caption_option_values()}\n </select>\n </div>\n <div class=\"field-select secondary-caption\" data-behavior=\"item-caption-admin\">\n <input name=\"${this.show_secondary_field_key}\" type=\"hidden\" value=\"false\" />\n <input data-input-select-target=\"#${this.formId(this.secondary_field_key)}\" name=\"${this.show_secondary_field_key}\" id=\"${this.formId(this.show_secondary_field_key)}\" type=\"checkbox\" value=\"true\" />\n <label for=\"${this.formId(this.show_secondary_field_key)}\">${i18n.t(\"blocks:solr_documents:caption:secondary\")}</label>\n <select data-input-select-target=\"#${this.formId(this.show_secondary_field_key)}\" name=\"${this.secondary_field_key}\" id=\"${this.formId(this.secondary_field_key)}\">\n <option value=\"\">${i18n.t(\"blocks:solr_documents:caption:placeholder\")}</option>\n ${this.caption_option_values()}\n </select>\n </div>\n `},\n\n // Sets the first version of the IIIF information from autocomplete data.\n _itemPanelIiifFields: function(index, autocomplete_data) {\n var iiifFields = [\n '<input type=\"hidden\" name=\"item[' + index + '][thumbnail_image_url]\" value=\"' + (autocomplete_data.thumbnail_image_url || autocomplete_data.thumbnail || \"\") + '\"/>',\n '<input type=\"hidden\" name=\"item[' + index + '][full_image_url]\" value=\"' + (autocomplete_data.full_image_url || autocomplete_data.thumbnail_image_url || autocomplete_data.thumbnail || \"\") + '\"/>',\n '<input type=\"hidden\" name=\"item[' + index + '][iiif_tilesource]\" value=\"' + (autocomplete_data.iiif_tilesource) + '\"/>',\n '<input type=\"hidden\" name=\"item[' + index + '][iiif_manifest_url]\" value=\"' + (autocomplete_data.iiif_manifest_url) + '\"/>',\n '<input type=\"hidden\" name=\"item[' + index + '][iiif_canvas_id]\" value=\"' + (autocomplete_data.iiif_canvas_id) + '\"/>',\n '<input type=\"hidden\" name=\"item[' + index + '][iiif_image_id]\" value=\"' + (autocomplete_data.iiif_image_id) + '\"/>',\n ];\n\n // The region input is required for widgets that enable image cropping but not otherwise\n if(this.show_image_selection) {\n iiifFields.push('<input type=\"hidden\" name=\"item[' + index + '][iiif_region]\" value=\"' + (autocomplete_data.iiif_region || \"\") + '\"/>');\n }\n\n return iiifFields.join(\"\\n\");\n },\n // Overwrites the hidden inputs from _itemPanelIiifFields with data from the\n // manifest. Called by afterPanelRender - the manifest_data here is built\n // from canvases in the manifest, transformed by spotlight/admin/iiif.js in\n // the #images method.\n setIiifFields: function(panel, manifest_data, initialize) {\n var legacyThumbnailField = $(panel).find('[name$=\"[thumbnail_image_url]\"]')\n var legacyFullField = $(panel).find('[name$=\"[full_image_url]\"]')\n\n if (initialize && legacyThumbnailField.val().length > 0) {\n return;\n }\n\n legacyThumbnailField.val(\"\");\n legacyFullField.val(\"\");\n $(panel).find('[name$=\"[iiif_image_id]\"]').val(manifest_data.imageId);\n $(panel).find('[name$=\"[iiif_tilesource]\"]').val(manifest_data.tilesource);\n $(panel).find('[name$=\"[iiif_manifest_url]\"]').val(manifest_data.manifest);\n $(panel).find('[name$=\"[iiif_canvas_id]\"]').val(manifest_data.canvasId);\n $(panel).find('img.img-thumbnail').attr('src', manifest_data.thumbnail_image_url || manifest_data.tilesource.replace(\"/info.json\", \"/full/100,100/0/default.jpg\"));\n },\n afterPanelRender: function(data, panel) {\n var context = this;\n var manifestUrl = data.iiif_manifest || data.iiif_manifest_url;\n\n if (!manifestUrl) {\n $(panel).find('[name$=\"[thumbnail_image_url]\"]').val(data.thumbnail_image_url || data.thumbnail);\n $(panel).find('[name$=\"[full_image_url]\"]').val(data.full_image_url);\n\n return;\n }\n\n $.ajax(manifestUrl).done(\n function(manifest) {\n var iiifManifest = new Iiif(manifestUrl, manifest);\n\n var thumbs = iiifManifest.imagesArray();\n\n if (!data.iiif_image_id) {\n context.setIiifFields(panel, thumbs[0], !!data.iiif_manifest_url);\n }\n\n\n if(thumbs.length > 1) {\n panel.multiImageSelector(thumbs, function(selectorImage) {\n context.setIiifFields(panel, selectorImage, false);\n }, data.iiif_image_id);\n }\n }\n );\n }\n });\n\n})();\n","//= require spotlight/admin/blocks/solr_documents_base_block\n\nSirTrevor.Blocks.SolrDocuments = (function(){\n\n return SirTrevor.Blocks.SolrDocumentsBase.extend({\n type: \"solr_documents\",\n\n icon_name: \"items\",\n\n item_options: function() { return this.caption_options() + this.zpr_option(); },\n\n zpr_option: function() {\n return `\n <div>\n <input name=\"${this.zpr_key}\" type=\"hidden\" value=\"false\" />\n <input name=\"${this.zpr_key}\" id=\"${this.formId(this.zpr_key)}\" data-key=\"${this.zpr_key}\" type=\"checkbox\" value=\"true\" />\n <label for=\"${this.formId(this.zpr_key)}\">${i18n.t(\"blocks:solr_documents:zpr:title\")}</label>\n </div>\n `\n },\n\n zpr_key: 'zpr_link'\n });\n\n})();\n","//= require spotlight/admin/blocks/solr_documents_base_block\n\nSirTrevor.Blocks.SolrDocumentsCarousel = (function(){\n\n return SirTrevor.Blocks.SolrDocumentsBase.extend({\n plustextable: false,\n type: \"solr_documents_carousel\",\n\n icon_name: \"item_carousel\",\n\n auto_play_images_key: \"auto-play-images\",\n auto_play_images_interval_key: \"auto-play-images-interval\",\n max_height_key: \"max-height\",\n\n carouselCycleTimesInSeconds: {\n values: [ 3, 5, 8, 12, 20 ],\n selected: 5\n },\n\n carouselMaxHeights: {\n values: { 'Small': 'small', 'Medium': 'medium', 'Large': 'large' },\n selected: 'Medium'\n },\n\n item_options: function() {\n return `${this.caption_options()}\n <div class=\"field-select auto-cycle-images\" data-behavior=\"auto-cycle-images\">\n <input name=\"${this.auto_play_images_key}\" type=\"hidden\" value=\"false\" />\n <input name=\"${this.auto_play_images_key}\" id=\"${this.formId(this.auto_play_images_key)}\" data-key=\"${this.auto_play_images_key}\" type=\"checkbox\" value=\"true\" checked/>\n <label for=\"${this.formId(this.auto_play_images_key)}\">${i18n.t(\"blocks:solr_documents_carousel:interval:title\")}</label>\n <select name=\"${this.auto_play_images_interval_key}\" id=\"${this.formId(this.auto_play_images_interval_key)}\" data=key=\"${this.auto_play_images_interval_key}\">\n <option value=\"\">${i18n.t(\"blocks:solr_documents_carousel:interval:placeholder\")}</option>\n ${this.addCarouselCycleOptions(this.carouselCycleTimesInSeconds)}\n </select>\n </div>\n <div class=\"field-select max-heights\" data-behavior=\"max-heights\">\n <label for=\"${this.formId(this.max_height_key)}\">${i18n.t(\"blocks:solr_documents_carousel:height:title\")}</label><br/>\n ${this.addCarouselMaxHeightOptions(this.carouselMaxHeights)}\n </div>`\n },\n\n addCarouselCycleOptions: function(options) {\n var html = '';\n\n $.each(options.values, function(index, interval) {\n var selected = (interval === options.selected) ? 'selected' : '',\n intervalInMilliSeconds = parseInt(interval, 10) * 1000;\n\n html += '<option value=\"' + intervalInMilliSeconds + '\" ' + selected + '>' + interval + ' seconds</option>';\n });\n\n return html;\n },\n\n addCarouselMaxHeightOptions: function(options) {\n var html = '',\n _this = this;\n\n $.each(options.values, function(size, px) {\n var checked = (size === options.selected) ? 'checked' : '',\n id = _this.formId(_this.max_height_key)\n\n html += '<input data-key=\"' + _this.max_height_key + '\" type=\"radio\" name=\"' + id + '\" value=\"' + px + '\" id=\"' + id + '\" ' + checked + '>';\n html += '<label class=\"carousel-size\" for=\"' + id + '\">' + size + '</label>';\n });\n\n return html;\n },\n\n afterPreviewLoad: function(options) {\n $(this.inner).find('.carousel').carousel();\n\n // the bootstrap carousel only initializes data-bs-slide widgets on page load, so we need\n // to initialize them ourselves..\n var clickHandler = function (e) {\n var href\n var $this = $(this)\n var $target = $($this.attr('data-target') || $this.attr('data-bs-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '')) // strip for ie7\n if (!$target.hasClass('carousel')) return\n var options = $.extend({}, $target.data(), $this.data())\n var slideIndex = $this.attr('data-slide-to') || $this.attr('data-bs-slide-to')\n if (slideIndex) options.interval = false\n\n $.fn.carousel.call($target, options)\n\n if (slideIndex) {\n $target.data('bs.carousel').to(slideIndex)\n }\n\n e.preventDefault()\n }\n\n $(this.inner).find('.carousel')\n .on('click.bs.carousel.data-api', '[data-slide], [data-bs-slide]', clickHandler)\n .on('click.bs.carousel.data-api', '[data-slide-to], [data-bs-slide-to]', clickHandler)\n }\n\n });\n\n})();\n","//= require spotlight/admin/blocks/solr_documents_base_block\n\nSirTrevor.Blocks.SolrDocumentsEmbed = (function(){\n\n return SirTrevor.Blocks.SolrDocumentsBase.extend({\n type: \"solr_documents_embed\",\n icon_name: \"item_embed\",\n show_image_selection: false,\n\n item_options: function() { return \"\" },\n\n afterPreviewLoad: function(options) {\n $(this.inner).find('picture[data-openseadragon]').openseadragon();\n }\n });\n\n})();\n","//= require spotlight/admin/blocks/solr_documents_base_block\n\nSirTrevor.Blocks.SolrDocumentsFeatures = (function(){\n\n return SirTrevor.Blocks.SolrDocumentsBase.extend({\n plustextable: false,\n type: \"solr_documents_features\",\n\n icon_name: \"item_features\",\n\n afterPreviewLoad: function(options) {\n $(this.inner).find('.carousel').carousel();\n\n // the bootstrap carousel only initializes data-bs-slide widgets on page load, so we need\n // to initialize them ourselves..\n var clickHandler = function (e) {\n var href\n var $this = $(this)\n var $target = $($this.attr('data-target') || $this.attr('data-bs-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '')) // strip for ie7\n if (!$target.hasClass('carousel')) return\n var options = $.extend({}, $target.data(), $this.data())\n var slideIndex = $this.attr('data-slide-to') || $this.attr('data-bs-slide-to')\n if (slideIndex) options.interval = false\n\n $.fn.carousel.call($target, options)\n\n if (slideIndex) {\n $target.data('bs.carousel').to(slideIndex)\n }\n\n e.preventDefault()\n }\n\n $(this.inner).find('.carousel')\n .on('click.bs.carousel.data-api', '[data-slide], [data-bs-slide]', clickHandler)\n .on('click.bs.carousel.data-api', '[data-slide-to], [data-bs-slide-to]', clickHandler)\n }\n\n });\n\n})();\n","//= require spotlight/admin/blocks/solr_documents_base_block\n\nSirTrevor.Blocks.SolrDocumentsGrid = (function(){\n\n return SirTrevor.Blocks.SolrDocumentsBase.extend({\n type: \"solr_documents_grid\",\n\n icon_name: \"item_grid\",\n\n\n item_options: function() { return \"\" }\n });\n\n})();\n","import SpotlightNestable from 'spotlight/admin/spotlight_nestable'\nimport Core from 'spotlight/core'\n\nSirTrevor.Blocks.UploadedItems = (function(){\n return Core.Block.Resources.extend({\n plustextable: true,\n uploadable: true,\n autocompleteable: false,\n show_image_selection: false,\n \n id_key: 'file',\n\n type: 'uploaded_items',\n\n icon_name: 'items',\n\n blockGroup: 'undefined',\n\n // Clear out the default Uploadable upload options\n // since we will be using our own custom controls\n upload_options: { html: '' },\n\n fileInput: function() { return $(this.inner).find('input[type=\"file\"]'); },\n\n onBlockRender: function(){\n SpotlightNestable.init($(this.inner).find('[data-behavior=\"nestable\"]'));\n\n this.fileInput().on('change', (function(ev) {\n this.onDrop(ev.currentTarget);\n }).bind(this));\n },\n\n onDrop: function(transferData){\n var file = transferData.files[0],\n urlAPI = (typeof URL !== \"undefined\") ? URL : (typeof webkitURL !== \"undefined\") ? webkitURL : null;\n\n // Handle one upload at a time\n if (/image/.test(file.type)) {\n this.loading();\n\n this.uploader(\n file,\n function(data) {\n this.createItemPanel(data);\n this.fileInput().val('');\n this.ready();\n },\n function(error) {\n this.addMessage(i18n.t('blocks:image:upload_error'));\n this.ready();\n }\n );\n }\n },\n\n title: function() { return i18n.t('blocks:uploaded_items:title'); },\n description: function() { return i18n.t('blocks:uploaded_items:description'); },\n\n globalIndex: 0,\n\n _itemPanel: function(data) {\n var index = \"file_\" + this.globalIndex++;\n var checked = 'checked=\"checked\"';\n\n if (data.display == 'false') {\n checked = '';\n }\n\n var dataId = data.id || data.uid;\n var dataTitle = data.title || data.name;\n var dataUrl = data.url || data.file.url;\n\n var markup = `\n <li class=\"field dd-item dd3-item\" data-id=\"${index}\" id=\"${this.formId(index)}\">\n <input type=\"hidden\" name=\"item[${index}][id]\" value=\"${dataId}\" />\n <input type=\"hidden\" name=\"item[${index}][title]\" value=\"${dataTitle}\" />\n <input type=\"hidden\" name=\"item[${index}][url]\" data-item-grid-thumbnail=\"true\" value=\"${dataUrl}\"/>\n <input data-property=\"weight\" type=\"hidden\" name=\"item[${index}][weight]\" value=\"${data.weight}\" />\n <div class=\"card d-flex dd3-content\">\n <div class=\"dd-handle dd3-handle\">${i18n.t(\"blocks:resources:panel:drag\")}</div>\n <div class=\"card-header d-flex item-grid\">\n <div class=\"checkbox\">\n <input name=\"item[${index}][display]\" type=\"hidden\" value=\"false\" />\n <input name=\"item[${index}][display]\" id=\"${this.formId(this.display_checkbox + '_' + dataId)}\" type=\"checkbox\" ${checked} class=\"item-grid-checkbox\" value=\"true\" />\n <label class=\"sr-only visually-hidden\" for=\"${this.formId(this.display_checkbox + '_' + dataId)}\">${i18n.t(\"blocks:resources:panel:display\")}</label>\n </div>\n <div class=\"pic\">\n <img class=\"img-thumbnail\" src=\"${dataUrl}\" />\n </div>\n <div class=\"main form-horizontal\">\n <div class=\"title card-title\">${dataTitle}</div>\n <div class=\"field row mr-3 me-3\">\n <label for=\"${this.formId('caption_' + dataId)}\" class=\"col-form-label col-md-3\">${i18n.t(\"blocks:uploaded_items:caption\")}</label>\n <input type=\"text\" class=\"form-control col\" id=\"${this.formId('caption_' + dataId)}\" name=\"item[${index}][caption]\" data-field=\"caption\"/>\n </div>\n <div class=\"field row mr-3 me-3\">\n <label for=\"${this.formId('link_' + dataId)}\" class=\"col-form-label col-md-3\">${i18n.t(\"blocks:uploaded_items:link\")}</label>\n <input type=\"text\" class=\"form-control col\" id=\"${this.formId('link_' + dataId)}\" name=\"item[${index}][link]\" data-field=\"link\"/>\n </div>\n ${this._altTextFieldsHTML(index, data)}\n </div>\n <div class=\"remove float-right float-end\">\n <a data-item-grid-panel-remove=\"true\" href=\"#\">${i18n.t(\"blocks:resources:panel:remove\")}</a>\n </div>\n </div>\n </li>`\n\n const panel = $(markup);\n panel.find('[data-field=\"caption\"]').val(data.caption);\n panel.find('[data-field=\"link\"]').val(data.link);\n var context = this;\n\n $('.remove a', panel).on('click', function(e) {\n e.preventDefault();\n $(this).closest('.field').remove();\n context.afterPanelDelete();\n });\n\n this.afterPanelRender(data, panel);\n\n return panel;\n },\n\n editorHTML: function() {\n return `<div class=\"form oembed-text-admin clearfix\">\n <div class=\"widget-header\">\n ${this.description()}\n ${this.alt_text_guidelines()}\n ${this.alt_text_guidelines_link()}\n </div>\n <div class=\"row\">\n <div class=\"form-group mb-3 col-md-8\">\n <div class=\"panels dd nestable-item-grid\" data-behavior=\"nestable\" data-max-depth=\"1\">\n <ol class=\"dd-list\">\n </ol>\n </div>\n <input type=\"file\" id=\"uploaded_item_url\" name=\"file[file_0][file_data]\" />\n </div>\n <div class=\"col-md-4\">\n <input name=\"${this.zpr_key}\" type=\"hidden\" value=\"false\" />\n <input name=\"${this.zpr_key}\" id=\"${this.formId(this.zpr_key)}\" data-key=\"${this.zpr_key}\" type=\"checkbox\" value=\"true\" />\n <label for=\"${this.formId(this.zpr_key)}\">${i18n.t(\"blocks:solr_documents:zpr:title\")}</label>\n </div>\n </div>\n ${this.text_area()}\n </div>`\n },\n\n altTextHTML: function(index, data) {\n const { isDecorative, altText, altTextBackup, placeholderAttr, disabledAttr } = this._altTextData(data);\n return `\n <div class=\"field row mr-3 me-3\">\n <div class=\"col-lg-3 ps-md-2 pl-md-2\">\n <label class=\"col-form-label text-nowrap pb-0 pt-1 justify-content-md-start justify-content-lg-end d-flex\" for=\"${this.formId(this.alt_text_textarea + '_' + data.id)}\">${i18n.t(\"blocks:resources:alt_text:alternative_text\")}</label>\n <div class=\"form-check d-flex justify-content-md-start justify-content-lg-end\">\n <input class=\"form-check-input\" type=\"checkbox\"\n id=\"${this.formId(this.decorative_checkbox + '_' + data.id)}\" name=\"item[${index}][decorative]\" ${isDecorative ? 'checked' : ''}>\n <label class=\"form-check-label\" for=\"${this.formId(this.decorative_checkbox + '_' + data.id)}\">${i18n.t(\"blocks:resources:alt_text:decorative\")}</label>\n </div>\n </div>\n <input type=\"hidden\" name=\"item[${index}][alt_text_backup]\" value=\"${altTextBackup}\" />\n <textarea class=\"col-lg-9\" rows=\"2\" ${placeholderAttr}\n id=\"${this.formId(this.alt_text_textarea + '_' + data.id)}\" name=\"item[${index}][alt_text]\" ${disabledAttr}>${altText}</textarea>\n </div>`\n },\n\n zpr_key: 'zpr_link'\n });\n})();\n","import Core from 'spotlight/core'\n\n(function() {\n var BLOCK_REPLACER_CONTROL_TEMPLATE = function(block) {\n var el = document.createElement('button');\n el.className = \"st-block-controls__button\";\n el.setAttribute('data-type', block.type);\n el.type = \"button\";\n\n var img = document.createElement('svg');\n img.className = \"st-icon\";\n img.setAttribute('role', 'img');\n\n var use = document.createElement('use');\n use.setAttributeNS('https://www.w3.org/1999/xlink', 'href', SirTrevor.config.defaults.iconUrl + \"#\" + block.icon_name);\n img.appendChild(use);\n el.appendChild(img);\n el.appendChild(document.createTextNode(block.title()));\n\n return el.outerHTML;\n };\n\n function generateBlocksHTML(Blocks, availableTypes) {\n var groups = {};\n for(var i in availableTypes) {\n var type = availableTypes[i];\n if (Blocks.hasOwnProperty(type) && Blocks[type].prototype.toolbarEnabled) {\n var blockGroup;\n\n if ($.isFunction(Blocks[type].prototype.blockGroup)) {\n blockGroup = Blocks[type].prototype.blockGroup();\n } else {\n blockGroup = Blocks[type].prototype.blockGroup;\n }\n\n if (blockGroup == 'undefined' || blockGroup === undefined) {\n blockGroup = i18n.t(\"blocks:group:undefined\");\n }\n\n groups[blockGroup] = groups[blockGroup] || [];\n groups[blockGroup].push(BLOCK_REPLACER_CONTROL_TEMPLATE(Blocks[type].prototype));\n }\n }\n\n function generateBlock(groups, key) {\n var group = groups[key];\n var groupEl = $(\"<div class='st-controls-group'><div class='st-group-col-form-label'>\" + key + \"</div></div>\");\n var buttons = group.reduce(function(memo, btn) {\n return memo += btn;\n }, \"\");\n groupEl.append(buttons);\n return groupEl[0].outerHTML;\n }\n\n var standardWidgets = generateBlock(groups, i18n.t(\"blocks:group:undefined\"));\n\n var exhibitWidgets = Object.keys(groups).map(function(key) {\n if (key !== i18n.t(\"blocks:group:undefined\")) {\n return generateBlock(groups, key);\n }\n }).filter(function (element) {\n return element != null;\n });\n\n var blocks = [standardWidgets].concat(exhibitWidgets).join(\"<hr />\");\n return blocks;\n }\n\n function render(Blocks, availableTypes) {\n var el = document.createElement('div');\n el.className = \"st-block-controls__buttons\";\n el.innerHTML = generateBlocksHTML.apply(null, arguments);\n\n var elButtons = document.createElement('div');\n elButtons.className = \"spotlight-block-controls\";\n elButtons.appendChild(el);\n return elButtons;\n }\n\n Core.BlockControls = function() { };\n Core.BlockControls.create = function(editor) {\n // REFACTOR - should probably not know about blockManager\n var el = render(SirTrevor.Blocks, editor.blockManager.blockTypes);\n\n function hide() {\n var parent = el.parentNode;\n if (!parent) { return; }\n parent.removeChild(el);\n parent.classList.remove(\"st-block--controls-active\");\n return parent;\n }\n\n function destroy() {\n SirTrevor = null;\n el = null;\n }\n\n function insert(e) {\n e.stopPropagation();\n\n var parent = this.parentNode;\n if (!parent || hide() === parent) { return; }\n $('.st-block__inner', parent).after(el);\n parent.classList.add(\"st-block--controls-active\");\n }\n\n function replaceBlock() {\n SirTrevor.mediator.trigger(\n \"block:replace\", el.parentNode, this.getAttribute('data-type')\n );\n }\n\n $(editor.wrapper).delegate(\".st-block-replacer\", \"click\", insert);\n $(editor.wrapper).delegate(\".st-block-controls__button\", \"click\", insert);\n\n return {\n el: el,\n hide: hide,\n destroy: destroy\n };\n };\n})();\n","import Core from 'spotlight/core'\n\nCore.BlockLimits = function(editor) {\n this.editor = editor;\n};\n\nCore.BlockLimits.prototype.enforceLimits = function(editor) {\n this.addEditorCallbacks(editor);\n this.checkGlobalBlockTypeLimit()();\n};\n\nCore.BlockLimits.prototype.addEditorCallbacks = function(editor) {\n SirTrevor.EventBus.on('block:create:new', this.checkBlockTypeLimitOnAdd());\n SirTrevor.EventBus.on('block:remove', this.checkGlobalBlockTypeLimit());\n};\n\nCore.BlockLimits.prototype.checkBlockTypeLimitOnAdd = function() {\n var editor = this.editor;\n\n return function(block) {\n var control = $(\".st-block-controls__button[data-type='\" + block.type + \"']\", editor.blockControls.el);\n\n control.prop(\"disabled\", !editor.blockManager.canCreateBlock(block.class()));\n };\n};\n\nCore.BlockLimits.prototype.checkGlobalBlockTypeLimit = function() {\n // we don't know what type of block was created or removed.. So, try them all.\n var editor = this.editor;\n\n return function() {\n $.each(editor.blockManager.blockTypes, function(i, type) {\n var block_type = SirTrevor.Blocks[type].prototype;\n\n var control = $(editor.blockControls.el).find(\".st-block-controls__button[data-type='\" + block_type.type + \"']\");\n control.prop(\"disabled\", !editor.blockManager.canCreateBlock(type));\n });\n };\n};\n","SirTrevor.Locales.en.blocks = $.extend(SirTrevor.Locales.en.blocks, {\n autocompleteable: {\n placeholder: \"Enter a title...\"\n },\n\n browse: {\n title: \"Browse Categories\",\n description: \"This widget highlights browse categories. Each highlighted category links to the corresponding browse category results page.\",\n item_counts: \"Include item counts?\"\n },\n\n browse_group_categories: {\n autocomplete: \"Enter a browse group title...\",\n title: \"Browse Group Categories\",\n description: \"This widget displays all browse categories associated with a selected browse group as a horizontally-scrolling row. Each selected browse group is displayed as a separate row. Each displayed category in a group links to the corresponding browse category results page.\",\n item_counts: \"Include category item counts?\"\n },\n\n link_to_search: {\n title: \"Saved Searches\",\n description: \"This widget highlights saved searches. Each highlighted saved search links to the search results page generated by the saved search parameters. Any saved search listed on the Curation > Browse categories page, whether published or not, can be highlighted as a saved search.\",\n item_counts: \"Include item counts?\"\n },\n\n iframe: {\n title: \"IFrame\",\n description: \"This widget embeds iframe-based embed code into pages\",\n placeholder: \"Enter embed code here. It should begin with e.g. '<iframe'\"\n },\n\n oembed: {\n title: \"Embed + Text\",\n description: \"This widget embeds an oEmbed-supported web resource and a text block to the left or right of it. Examples of oEmbed-supported resources include those from YouTube, Twitter, Flickr, and SlideShare.\",\n url: \"URL\",\n },\n\n uploaded_items: {\n title: \"Uploaded Item Row\",\n description: \"This widget displays uploaded items in a horizontal row. Optionally, you can add a heading and/or text to be displayed adjacent to the items. The item caption and link URL fields are also optional.\",\n caption: 'Caption',\n link: 'Link URL'\n },\n\n featured_pages: {\n title: \"Pages\",\n description: \"This widget highlights pages from this exhibit. Each highlighted item links to the corresponding page.\"\n },\n\n resources: {\n panel: {\n drag: \"Drag\",\n display: \"Display?\",\n remove: \"Remove\"\n },\n alt_text: {\n decorative: \"Decorative\",\n alternative_text: \"Alternative text\",\n placeholder: \"Enter alt text for this item...\"\n }\n },\n\n rule: {\n title: \"Horizontal Rule\"\n },\n\n search_results: {\n title: \"Search Results\",\n description: \"This widget displays a set of search results on a page. Specify a search result set by selecting an existing browse category. You can also select the view types that are available to the user when viewing the result set.\"\n },\n\n solr_documents: {\n title: \"Item Row\",\n description: \"This widget displays exhibit items in a horizontal row. Optionally, you can add a heading and/or text to be displayed adjacent to the items.\",\n caption: {\n placeholder: \"Select...\",\n primary: \"Primary caption\",\n secondary: \"Secondary caption\"\n },\n zpr: {\n title: 'Offer \"View larger\" option'\n }\n },\n\n solr_documents_carousel: {\n title: \"Item Carousel\",\n description: \"This widget displays exhibit items in a carousel. You can configure the item captions, how the images are cycled, and the size of the carousel.\",\n interval: {\n title: \"Automatically cycle images\",\n placeholder: \"Select...\"\n },\n height: {\n title: \"Maximum carousel height\"\n }\n },\n\n solr_documents_embed: {\n title: \"Item Embed\",\n description: \"This widget embeds an exhibit item in a viewer on a page. Optionally, you can add a heading to be displayed above the viewer and/or text to be displayed adjacent to the viewer.\",\n },\n\n solr_documents_features: {\n title: \"Item Slideshow\",\n description: \"This widget displays exhibit items in a static slideshow. The user will move between items in the slideshow using the field you select as the primary caption.\"\n },\n\n solr_documents_grid: {\n title: \"Item Grid\",\n description: \"This widget displays exhibit items in a multi-row grid. Optionally, you can add a heading and/or text to be displayed adjacent to the items.\"\n },\n\n textable: {\n heading: \"Heading\",\n text: \"Text\",\n align: {\n title: \"Display text on:\",\n left: \"Left\",\n right: \"Right\"\n }\n },\n\n group: {\n undefined: \"Standard widgets\",\n items: \"Exhibit item widgets\"\n },\n\n alt_text_guidelines: {\n intro: 'For each item, please enter alternative text or appropriately check the decorative box. ',\n link_label: 'Guidelines for writing alt text.',\n link_url: 'https://www.w3.org/WAI/tutorials/images/' \n }\n});\n","import AddAnother from 'spotlight/admin/add_another'\nimport AddNewButton from 'spotlight/admin/add_new_button'\nimport BlacklightConfiguration from 'spotlight/admin/blacklight_configuration'\nimport CopyEmailAddress from 'spotlight/admin/copy_email_addresses'\nimport Croppable from 'spotlight/admin/croppable'\nimport EditInPlace from 'spotlight/admin/edit_in_place'\nimport Exhibits from 'spotlight/admin/exhibits'\nimport FormObserver from 'spotlight/admin/form_observer'\nimport Locks from 'spotlight/admin/locks'\nimport 'spotlight/admin/multi_image_selector'\nimport Pages from 'spotlight/admin/pages'\nimport ProgressMonitor from 'spotlight/admin/progress_monitor'\nimport ReadonlyCheckbox from 'spotlight/admin/readonly_checkbox'\nimport { addAutocompletetoFeaturedImage } from 'spotlight/admin/search_typeahead'\nimport SelectRelatedInput from 'spotlight/admin/select_related_input'\nimport SpotlightNestable from 'spotlight/admin/spotlight_nestable'\nimport Tabs from 'spotlight/admin/tabs'\nimport TranslationProgress from 'spotlight/admin/translation_progress'\nimport 'spotlight/admin/visibility_toggle'\nimport Users from 'spotlight/admin/users'\n\nimport 'spotlight/admin/block_mixins/autocompleteable'\nimport 'spotlight/admin/block_mixins/formable'\nimport 'spotlight/admin/block_mixins/plustextable'\n\nimport 'spotlight/admin/blocks/block'\nimport 'spotlight/admin/blocks/resources_block' // This is a base class of several other blocks, so must come first\nimport 'spotlight/admin/blocks/browse_block'\nimport 'spotlight/admin/blocks/browse_group_categories_block'\nimport 'spotlight/admin/blocks/iframe_block'\nimport 'spotlight/admin/blocks/link_to_search_block'\nimport 'spotlight/admin/blocks/oembed_block'\nimport 'spotlight/admin/blocks/pages_block'\nimport 'spotlight/admin/blocks/rule_block'\nimport 'spotlight/admin/blocks/search_result_block'\nimport 'spotlight/admin/blocks/solr_documents_base_block'\nimport 'spotlight/admin/blocks/solr_documents_block'\nimport 'spotlight/admin/blocks/solr_documents_carousel_block'\nimport 'spotlight/admin/blocks/solr_documents_embed_block'\nimport 'spotlight/admin/blocks/solr_documents_features_block'\nimport 'spotlight/admin/blocks/solr_documents_grid_block'\nimport 'spotlight/admin/blocks/uploaded_items_block'\n\nimport 'spotlight/admin/sir-trevor/block_controls'\nimport 'spotlight/admin/sir-trevor/block_limits'\nimport 'spotlight/admin/sir-trevor/locales'\n\n\nexport default class {\n connect() {\n new AddAnother().connect()\n new AddNewButton().connect()\n new CopyEmailAddress().connect()\n new Croppable().connect()\n new EditInPlace().connect()\n new Exhibits().connect()\n new FormObserver().connect()\n new Locks().connect()\n new BlacklightConfiguration().connect()\n new Pages().connect()\n new ProgressMonitor().connect()\n new ReadonlyCheckbox().connect()\n new SelectRelatedInput().connect()\n new Tabs().connect()\n new TranslationProgress().connect()\n new Users().connect()\n addAutocompletetoFeaturedImage()\n SpotlightNestable.init();\n }\n}","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n\n static targets = [\n 'addNewTagWrapper',\n 'dropdownContent',\n 'initialTags',\n 'newTag',\n 'searchResultTags',\n 'selectedTags',\n 'tagControlWrapper',\n 'tagSearch',\n 'tagsField',\n 'tagSearchDropdown',\n 'tagSearchInputWrapper'\n ]\n\n static values = {\n tags: Array,\n translations: Object\n }\n\n tagDropdown (event) {\n this.dropdownContentTarget.classList.toggle('d-none')\n }\n\n clickOutside (event) {\n const isShown = !this.dropdownContentTarget.classList.contains('d-none')\n const inSelected = event.target.classList.contains('pill-close')\n const inContainer = this.tagControlWrapperTarget.contains(event.target)\n if (!inContainer && !inSelected && isShown) {\n this.tagDropdown(event)\n }\n }\n\n handleKeydown (event) {\n if (event.key === 'Enter') {\n event.preventDefault()\n const hidden = this.dropdownContentTarget.classList.contains('d-none')\n if (hidden) return;\n\n const tagElementToAdd = this.dropdownContentTarget.querySelector('.active')?.firstElementChild\n if (tagElementToAdd) tagElementToAdd.click()\n }\n\n if (event.key === ',') {\n event.preventDefault()\n if (this.tagSearchTarget.value.length === 0) return\n\n if (!this.addNewTagWrapperTarget.classList.contains('d-none')) {\n this.addNewTagWrapperTarget.click()\n this.tagSearchTarget.focus()\n return\n }\n\n const exactMatch = this.dropdownContentTarget.querySelector('.active')?.firstElementChild\n if (exactMatch?.checked === false) {\n exactMatch.click()\n this.resetSearch()\n }\n this.tagSearchTarget.focus()\n }\n }\n\n addNewTag (event) {\n if (this.addNewTagWrapperTarget.classList.contains('d-none') || this.newTagTarget.dataset.tag.length === 0) {\n return\n }\n\n this.tagsValue = this.tagsValue.concat([this.newTagTarget.dataset.tag])\n this.resetSearch()\n }\n\n resetSearch() {\n this.tagSearchTarget.value = ''\n this.newTagTarget.innerHTML = ''\n this.newTagTarget.dataset.tag = ''\n this.newTagTarget.disabled = true\n this.addNewTagWrapperTarget.classList.add('d-none')\n this.searchResultTagsTargets.forEach(target => this.showElement(target.parentElement))\n }\n\n tagUpdate (event) {\n const target = event.target ? event.target : event\n if (target.checked) {\n this.tagsValue = this.tagsValue.concat([target.dataset.tag])\n } else {\n this.tagsValue = this.tagsValue.filter(tag => tag !== target.dataset.tag)\n }\n }\n\n updateSearchResultsPlaceholder(event) {\n const placeholderElement = this.dropdownContentTarget.querySelector('.no-results')\n if (!placeholderElement) return\n\n const hasVisibleTags = this.dropdownContentTarget.querySelector('label:not(.d-none):not(.no-results)')\n placeholderElement.classList.toggle('d-none', hasVisibleTags)\n }\n\n tagCreate(event) {\n event.preventDefault()\n const newTagCheckbox = document.createElement('label')\n newTagCheckbox.innerHTML = `<input type=\"checkbox\" checked data-action=\"click->${this.identifier}#tagUpdate\" data-tag-selector-target=\"searchResultTags\" data-tag=\"${this.newTagTarget.dataset.tag}\"> ${this.newTagTarget.dataset.tag}`\n const existingTags = Array.from(this.dropdownContentTarget.querySelectorAll('label:not(#add-new-tag-wrapper)'))\n const insertPosition = existingTags.findIndex(tag => tag.textContent.trim().localeCompare(this.newTagTarget.dataset.tag) > 0)\n if (insertPosition === -1) {\n this.addNewTagWrapperTarget.insertAdjacentElement('beforebegin', newTagCheckbox)\n } else {\n existingTags[insertPosition].insertAdjacentElement('beforebegin', newTagCheckbox)\n }\n\n this.tagsValue = this.tagsValue.concat([this.newTagTarget.dataset.tag])\n this.tagSearchTarget.value = ''\n this.tagSearchTarget.dispatchEvent(new Event('input'))\n }\n\n\n tagsValueChanged() {\n const isEmpty = this.tagsValue.length === 0\n\n this.selectedTagsTarget.classList.toggle('d-none', isEmpty)\n this.tagSearchInputWrapperTarget.classList.toggle('rounded', isEmpty)\n this.tagSearchInputWrapperTarget.classList.toggle('rounded-bottom', !isEmpty)\n\n if (!isEmpty) {\n this.selectedTagsTarget.innerHTML = `<ul class=\"list-unstyled border rounded-top mb-0 p-1 px-2\">${this.renderTagPills()}</ul>`\n }\n\n const newValue = this.tagsValue.join(', ')\n if (this.tagsFieldTarget.value !== newValue) {\n this.tagsFieldTarget.value = newValue\n }\n }\n\n normalizeTag (tag) {\n const normalizeRegex = /[^\\w\\s]/gi\n return tag.replace(normalizeRegex, '').toLowerCase().trim()\n }\n\n showElement (element) {\n element.classList.add('d-block')\n element.classList.remove('d-none')\n }\n\n hideElement (element) {\n element.classList.remove('d-block')\n element.classList.add('d-none')\n }\n\n search(event) {\n const searchTerm = this.normalizeTag(event.target.value)\n this.dropdownContentTarget.classList.remove('d-none')\n\n const exactMatch = this.searchResultTagsTargets.some(target => {\n const compareTerm = this.normalizeTag(target.dataset.tag)\n const isMatch = compareTerm.includes(searchTerm)\n target.parentElement.classList.remove('active')\n this[isMatch ? 'showElement' : 'hideElement'](target.parentElement)\n return compareTerm === searchTerm\n })\n\n this[searchTerm.length > 0 && !exactMatch ? 'showElement' : 'hideElement'](this.addNewTagWrapperTarget)\n this.addNewTagWrapperTarget.classList.remove('active')\n this.dropdownContentTarget.querySelector('label:not(.d-none)')?.classList.add('active')\n }\n\n updateTagToAdd (event) {\n const tagAlreadyAdded = this.tagsValue.some(tag =>\n this.normalizeTag(tag) === this.normalizeTag(event.target.value)\n )\n this.newTagTarget.dataset.tag = event.target.value.trim()\n this.newTagTarget.nextSibling.textContent = ` ${this.translationsValue.add_new_tag}: ${event.target.value}`\n this.newTagTarget.disabled = !this.newTagTarget.dataset.tag.length || tagAlreadyAdded\n }\n\n deselect (event) {\n event.preventDefault()\n\n const clickedTag = event.target.closest('button').dataset.tag\n const target = this.searchResultTagsTargets.find((tag) => tag.dataset.tag === clickedTag)\n target ? target.click() : this.tagsValue = this.tagsValue.filter(tag => tag !== clickedTag)\n }\n\n renderTagPills () {\n return this.tagsValue.map((tag) => {\n return `\n <li class=\"d-inline-flex gap-2 align-items-center my-2\">\n <span class=\"bg-light badge rounded-pill border selected-item d-inline-flex align-items-center text-dark\">\n <span class=\"selected-item-label d-inline-flex\">${tag}</span>\n <button\n type=\"button\"\n data-action=\"${this.identifier}#deselect\"\n data-tag=\"${tag}\"\n class=\"btn-close close ms-1 ml-1\"\n aria-label=\"${this.translationsValue.remove} ${tag}\"\n ><span aria-hidden=\"true\" class=\"visually-hidden\">&times;</span></button>\n </span>\n </li>\n `\n }).join('')\n }\n}\n","import TagSelectorController from 'spotlight/controllers/tag_selector_controller'\n\nexport default class {\n connect() {\n if (typeof Stimulus === \"undefined\") return\n Stimulus.register('tag-selector', TagSelectorController)\n }\n}\n","import UserIndex from 'spotlight/user'\nimport AdminIndex from 'spotlight/admin'\nimport Core from 'spotlight/core'\nimport SpotlightControllers from 'spotlight/controllers'\n\nCore.onLoad(() => {\n new SpotlightControllers().connect()\n new UserIndex().connect()\n new AdminIndex().connect()\n})\n\nexport default Core\n"],"names":["Spotlight","SirTrevor","Core","SpotlightNestable"],"mappings":"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E,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG;AAC5E,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC3E,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC3E,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC3E,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC3E,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC5E,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC3E,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC3E,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,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"}
1
+ {"version":3,"file":"spotlight.esm.js","sources":["../../../../vendor/assets/javascripts/tiny-slider.js","../../../javascript/spotlight/user/browse_group_categories.js","../../../javascript/spotlight/user/carousel.js","../../../javascript/spotlight/user/clear_form_button.js","../../../javascript/spotlight/user/zpr_links.js","../../../javascript/spotlight/user/index.js","../../../javascript/spotlight/admin/add_another.js","../../../javascript/spotlight/admin/add_new_button.js","../../../javascript/spotlight/admin/blacklight_configuration.js","../../../javascript/spotlight/admin/copy_email_addresses.js","../../../javascript/spotlight/admin/iiif.js","../../../javascript/spotlight/admin/add_image_selector.js","../../../javascript/spotlight/core.js","../../../javascript/spotlight/admin/crop.js","../../../javascript/spotlight/admin/croppable_modal.js","../../../javascript/spotlight/admin/croppable.js","../../../javascript/spotlight/admin/edit_in_place.js","../../../../vendor/assets/javascripts/parameterize.js","../../../javascript/spotlight/admin/exhibits.js","../../../javascript/spotlight/admin/form_observer.js","../../../javascript/spotlight/admin/locks.js","../../../javascript/spotlight/admin/multi_image_selector.js","../../../javascript/spotlight/admin/pages.js","../../../javascript/spotlight/admin/progress_monitor.js","../../../javascript/spotlight/admin/readonly_checkbox.js","../../../javascript/spotlight/admin/search_typeahead.js","../../../javascript/spotlight/admin/select_related_input.js","../../../javascript/spotlight/admin/spotlight_nestable.js","../../../javascript/spotlight/admin/tabs.js","../../../javascript/spotlight/admin/translation_progress.js","../../../javascript/spotlight/admin/visibility_toggle.js","../../../javascript/spotlight/admin/users.js","../../../javascript/spotlight/admin/block_mixins/autocompleteable.js","../../../javascript/spotlight/admin/block_mixins/formable.js","../../../javascript/spotlight/admin/block_mixins/plustextable.js","../../../javascript/spotlight/admin/blocks/block.js","../../../javascript/spotlight/admin/blocks/resources_block.js","../../../javascript/spotlight/admin/blocks/browse_block.js","../../../javascript/spotlight/admin/blocks/browse_group_categories_block.js","../../../javascript/spotlight/admin/blocks/iframe_block.js","../../../javascript/spotlight/admin/blocks/link_to_search_block.js","../../../javascript/spotlight/admin/blocks/oembed_block.js","../../../javascript/spotlight/admin/blocks/pages_block.js","../../../javascript/spotlight/admin/blocks/rule_block.js","../../../javascript/spotlight/admin/blocks/search_result_block.js","../../../javascript/spotlight/admin/blocks/solr_documents_base_block.js","../../../javascript/spotlight/admin/blocks/solr_documents_block.js","../../../javascript/spotlight/admin/blocks/solr_documents_carousel_block.js","../../../javascript/spotlight/admin/blocks/solr_documents_embed_block.js","../../../javascript/spotlight/admin/blocks/solr_documents_features_block.js","../../../javascript/spotlight/admin/blocks/solr_documents_grid_block.js","../../../javascript/spotlight/admin/blocks/uploaded_items_block.js","../../../javascript/spotlight/admin/sir-trevor/block_controls.js","../../../javascript/spotlight/admin/sir-trevor/block_limits.js","../../../javascript/spotlight/admin/sir-trevor/locales.js","../../../javascript/spotlight/admin/index.js","../../../javascript/spotlight/controllers/tag_selector_controller.js","../../../javascript/spotlight/controllers/index.js","../../../javascript/spotlight/index.js"],"sourcesContent":["// Includes an unreleased RTL support pull request: https://github.com/ganlanyuan/tiny-slider/pull/658\n// Includes \"export default tns\" at the end of the file for spotlight/user/browse_group_categories.js\nvar tns = (function (){\nvar win = window;\n\nvar raf = win.requestAnimationFrame\n || win.webkitRequestAnimationFrame\n || win.mozRequestAnimationFrame\n || win.msRequestAnimationFrame\n || function(cb) { return setTimeout(cb, 16); };\n\nvar win$1 = window;\n\nvar caf = win$1.cancelAnimationFrame\n || win$1.mozCancelAnimationFrame\n || function(id){ clearTimeout(id); };\n\nfunction extend() {\n var obj, name, copy,\n target = arguments[0] || {},\n i = 1,\n length = arguments.length;\n\n for (; i < length; i++) {\n if ((obj = arguments[i]) !== null) {\n for (name in obj) {\n copy = obj[name];\n\n if (target === copy) {\n continue;\n } else if (copy !== undefined) {\n target[name] = copy;\n }\n }\n }\n }\n return target;\n}\n\nfunction checkStorageValue (value) {\n return ['true', 'false'].indexOf(value) >= 0 ? JSON.parse(value) : value;\n}\n\nfunction setLocalStorage(storage, key, value, access) {\n if (access) {\n try { storage.setItem(key, value); } catch (e) {}\n }\n return value;\n}\n\nfunction getSlideId() {\n var id = window.tnsId;\n window.tnsId = !id ? 1 : id + 1;\n \n return 'tns' + window.tnsId;\n}\n\nfunction getBody () {\n var doc = document,\n body = doc.body;\n\n if (!body) {\n body = doc.createElement('body');\n body.fake = true;\n }\n\n return body;\n}\n\nvar docElement = document.documentElement;\n\nfunction setFakeBody (body) {\n var docOverflow = '';\n if (body.fake) {\n docOverflow = docElement.style.overflow;\n //avoid crashing IE8, if background image is used\n body.style.background = '';\n //Safari 5.13/5.1.4 OSX stops loading if ::-webkit-scrollbar is used and scrollbars are visible\n body.style.overflow = docElement.style.overflow = 'hidden';\n docElement.appendChild(body);\n }\n\n return docOverflow;\n}\n\nfunction resetFakeBody (body, docOverflow) {\n if (body.fake) {\n body.remove();\n docElement.style.overflow = docOverflow;\n // Trigger layout so kinetic scrolling isn't disabled in iOS6+\n // eslint-disable-next-line\n docElement.offsetHeight;\n }\n}\n\n// get css-calc \n\nfunction calc() {\n var doc = document, \n body = getBody(),\n docOverflow = setFakeBody(body),\n div = doc.createElement('div'), \n result = false;\n\n body.appendChild(div);\n try {\n var str = '(10px * 10)',\n vals = ['calc' + str, '-moz-calc' + str, '-webkit-calc' + str],\n val;\n for (var i = 0; i < 3; i++) {\n val = vals[i];\n div.style.width = val;\n if (div.offsetWidth === 100) { \n result = val.replace(str, ''); \n break;\n }\n }\n } catch (e) {}\n \n body.fake ? resetFakeBody(body, docOverflow) : div.remove();\n\n return result;\n}\n\n// get subpixel support value\n\nfunction percentageLayout() {\n // check subpixel layout supporting\n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n wrapper = doc.createElement('div'),\n outer = doc.createElement('div'),\n str = '',\n count = 70,\n perPage = 3,\n supported = false;\n\n wrapper.className = \"tns-t-subp2\";\n outer.className = \"tns-t-ct\";\n\n for (var i = 0; i < count; i++) {\n str += '<div></div>';\n }\n\n outer.innerHTML = str;\n wrapper.appendChild(outer);\n body.appendChild(wrapper);\n\n supported = Math.abs(wrapper.getBoundingClientRect().left - outer.children[count - perPage].getBoundingClientRect().left) < 2;\n\n body.fake ? resetFakeBody(body, docOverflow) : wrapper.remove();\n\n return supported;\n}\n\nfunction mediaquerySupport () {\n if (window.matchMedia || window.msMatchMedia) {\n return true;\n }\n \n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n div = doc.createElement('div'),\n style = doc.createElement('style'),\n rule = '@media all and (min-width:1px){.tns-mq-test{position:absolute}}',\n position;\n\n style.type = 'text/css';\n div.className = 'tns-mq-test';\n\n body.appendChild(style);\n body.appendChild(div);\n\n if (style.styleSheet) {\n style.styleSheet.cssText = rule;\n } else {\n style.appendChild(doc.createTextNode(rule));\n }\n\n position = window.getComputedStyle ? window.getComputedStyle(div).position : div.currentStyle['position'];\n\n body.fake ? resetFakeBody(body, docOverflow) : div.remove();\n\n return position === \"absolute\";\n}\n\n// create and append style sheet\nfunction createStyleSheet (media, nonce) {\n // Create the <style> tag\n var style = document.createElement(\"style\");\n // style.setAttribute(\"type\", \"text/css\");\n\n // Add a media (and/or media query) here if you'd like!\n // style.setAttribute(\"media\", \"screen\")\n // style.setAttribute(\"media\", \"only screen and (max-width : 1024px)\")\n if (media) { style.setAttribute(\"media\", media); }\n\n // Add nonce attribute for Content Security Policy\n if (nonce) { style.setAttribute(\"nonce\", nonce); }\n\n // WebKit hack :(\n // style.appendChild(document.createTextNode(\"\"));\n\n // Add the <style> element to the page\n document.querySelector('head').appendChild(style);\n\n return style.sheet ? style.sheet : style.styleSheet;\n}\n\n// cross browsers addRule method\nfunction addCSSRule(sheet, selector, rules, index) {\n // return raf(function() {\n 'insertRule' in sheet ?\n sheet.insertRule(selector + '{' + rules + '}', index) :\n sheet.addRule(selector, rules, index);\n // });\n}\n\n// cross browsers addRule method\nfunction removeCSSRule(sheet, index) {\n // return raf(function() {\n 'deleteRule' in sheet ?\n sheet.deleteRule(index) :\n sheet.removeRule(index);\n // });\n}\n\nfunction getCssRulesLength(sheet) {\n var rule = ('insertRule' in sheet) ? sheet.cssRules : sheet.rules;\n return rule.length;\n}\n\nfunction toDegree (y, x) {\n return Math.atan2(y, x) * (180 / Math.PI);\n}\n\nfunction getTouchDirection(angle, range) {\n var direction = false,\n gap = Math.abs(90 - Math.abs(angle));\n \n if (gap >= 90 - range) {\n direction = 'horizontal';\n } else if (gap <= range) {\n direction = 'vertical';\n }\n\n return direction;\n}\n\n// https://toddmotto.com/ditch-the-array-foreach-call-nodelist-hack/\nfunction forEach (arr, callback, scope) {\n for (var i = 0, l = arr.length; i < l; i++) {\n callback.call(scope, arr[i], i);\n }\n}\n\nvar classListSupport = 'classList' in document.createElement('_');\n\nvar hasClass = classListSupport ?\n function (el, str) { return el.classList.contains(str); } :\n function (el, str) { return el.className.indexOf(str) >= 0; };\n\nvar addClass = classListSupport ?\n function (el, str) {\n if (!hasClass(el, str)) { el.classList.add(str); }\n } :\n function (el, str) {\n if (!hasClass(el, str)) { el.className += ' ' + str; }\n };\n\nvar removeClass = classListSupport ?\n function (el, str) {\n if (hasClass(el, str)) { el.classList.remove(str); }\n } :\n function (el, str) {\n if (hasClass(el, str)) { el.className = el.className.replace(str, ''); }\n };\n\nfunction hasAttr(el, attr) {\n return el.hasAttribute(attr);\n}\n\nfunction getAttr(el, attr) {\n return el.getAttribute(attr);\n}\n\nfunction isNodeList(el) {\n // Only NodeList has the \"item()\" function\n return typeof el.item !== \"undefined\"; \n}\n\nfunction setAttrs(els, attrs) {\n els = (isNodeList(els) || els instanceof Array) ? els : [els];\n if (Object.prototype.toString.call(attrs) !== '[object Object]') { return; }\n\n for (var i = els.length; i--;) {\n for(var key in attrs) {\n els[i].setAttribute(key, attrs[key]);\n }\n }\n}\n\nfunction removeAttrs(els, attrs) {\n els = (isNodeList(els) || els instanceof Array) ? els : [els];\n attrs = (attrs instanceof Array) ? attrs : [attrs];\n\n var attrLength = attrs.length;\n for (var i = els.length; i--;) {\n for (var j = attrLength; j--;) {\n els[i].removeAttribute(attrs[j]);\n }\n }\n}\n\nfunction arrayFromNodeList (nl) {\n var arr = [];\n for (var i = 0, l = nl.length; i < l; i++) {\n arr.push(nl[i]);\n }\n return arr;\n}\n\nfunction hideElement(el, forceHide) {\n if (el.style.display !== 'none') { el.style.display = 'none'; }\n}\n\nfunction showElement(el, forceHide) {\n if (el.style.display === 'none') { el.style.display = ''; }\n}\n\nfunction isVisible(el) {\n return window.getComputedStyle(el).display !== 'none';\n}\n\nfunction whichProperty(props){\n if (typeof props === 'string') {\n var arr = [props],\n Props = props.charAt(0).toUpperCase() + props.substr(1),\n prefixes = ['Webkit', 'Moz', 'ms', 'O'];\n \n prefixes.forEach(function(prefix) {\n if (prefix !== 'ms' || props === 'transform') {\n arr.push(prefix + Props);\n }\n });\n\n props = arr;\n }\n\n var el = document.createElement('fakeelement'),\n len = props.length;\n for(var i = 0; i < props.length; i++){\n var prop = props[i];\n if( el.style[prop] !== undefined ){ return prop; }\n }\n\n return false; // explicit for ie9-\n}\n\nfunction has3DTransforms(tf){\n if (!tf) { return false; }\n if (!window.getComputedStyle) { return false; }\n \n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n el = doc.createElement('p'),\n has3d,\n cssTF = tf.length > 9 ? '-' + tf.slice(0, -9).toLowerCase() + '-' : '';\n\n cssTF += 'transform';\n\n // Add it to the body to get the computed style\n body.insertBefore(el, null);\n\n el.style[tf] = 'translate3d(1px,1px,1px)';\n has3d = window.getComputedStyle(el).getPropertyValue(cssTF);\n\n body.fake ? resetFakeBody(body, docOverflow) : el.remove();\n\n return (has3d !== undefined && has3d.length > 0 && has3d !== \"none\");\n}\n\n// get transitionend, animationend based on transitionDuration\n// @propin: string\n// @propOut: string, first-letter uppercase\n// Usage: getEndProperty('WebkitTransitionDuration', 'Transition') => webkitTransitionEnd\nfunction getEndProperty(propIn, propOut) {\n var endProp = false;\n if (/^Webkit/.test(propIn)) {\n endProp = 'webkit' + propOut + 'End';\n } else if (/^O/.test(propIn)) {\n endProp = 'o' + propOut + 'End';\n } else if (propIn) {\n endProp = propOut.toLowerCase() + 'end';\n }\n return endProp;\n}\n\n// Test via a getter in the options object to see if the passive property is accessed\nvar supportsPassive = false;\ntry {\n var opts = Object.defineProperty({}, 'passive', {\n get: function() {\n supportsPassive = true;\n }\n });\n window.addEventListener(\"test\", null, opts);\n} catch (e) {}\nvar passiveOption = supportsPassive ? { passive: true } : false;\n\nfunction addEvents(el, obj, preventScrolling) {\n for (var prop in obj) {\n var option = ['touchstart', 'touchmove'].indexOf(prop) >= 0 && !preventScrolling ? passiveOption : false;\n el.addEventListener(prop, obj[prop], option);\n }\n}\n\nfunction removeEvents(el, obj) {\n for (var prop in obj) {\n var option = ['touchstart', 'touchmove'].indexOf(prop) >= 0 ? passiveOption : false;\n el.removeEventListener(prop, obj[prop], option);\n }\n}\n\nfunction Events() {\n return {\n topics: {},\n on: function (eventName, fn) {\n this.topics[eventName] = this.topics[eventName] || [];\n this.topics[eventName].push(fn);\n },\n off: function(eventName, fn) {\n if (this.topics[eventName]) {\n for (var i = 0; i < this.topics[eventName].length; i++) {\n if (this.topics[eventName][i] === fn) {\n this.topics[eventName].splice(i, 1);\n break;\n }\n }\n }\n },\n emit: function (eventName, data) {\n data.type = eventName;\n if (this.topics[eventName]) {\n this.topics[eventName].forEach(function(fn) {\n fn(data, eventName);\n });\n }\n }\n };\n}\n\nfunction jsTransform(element, attr, prefix, postfix, to, duration, callback) {\n var tick = Math.min(duration, 10),\n unit = (to.indexOf('%') >= 0) ? '%' : 'px',\n to = to.replace(unit, ''),\n from = Number(element.style[attr].replace(prefix, '').replace(postfix, '').replace(unit, '')),\n positionTick = (to - from) / duration * tick,\n running;\n\n setTimeout(moveElement, tick);\n function moveElement() {\n duration -= tick;\n from += positionTick;\n element.style[attr] = prefix + from + unit + postfix;\n if (duration > 0) { \n setTimeout(moveElement, tick); \n } else {\n callback();\n }\n }\n}\n\n// Object.keys\nif (!Object.keys) {\n Object.keys = function(object) {\n var keys = [];\n for (var name in object) {\n if (Object.prototype.hasOwnProperty.call(object, name)) {\n keys.push(name);\n }\n }\n return keys;\n };\n}\n\n// ChildNode.remove\nif(!(\"remove\" in Element.prototype)){\n Element.prototype.remove = function(){\n if(this.parentNode) {\n this.parentNode.removeChild(this);\n }\n };\n}\n\nvar tns = function(options) {\n options = extend({\n container: '.slider',\n mode: 'carousel',\n axis: 'horizontal',\n items: 1,\n gutter: 0,\n edgePadding: 0,\n fixedWidth: false,\n autoWidth: false,\n viewportMax: false,\n slideBy: 1,\n center: false,\n controls: true,\n controlsPosition: 'top',\n controlsText: ['prev', 'next'],\n controlsContainer: false,\n prevButton: false,\n nextButton: false,\n nav: true,\n navPosition: 'top',\n navContainer: false,\n navAsThumbnails: false,\n arrowKeys: false,\n speed: 300,\n autoplay: false,\n autoplayPosition: 'top',\n autoplayTimeout: 5000,\n autoplayDirection: 'forward',\n autoplayText: ['start', 'stop'],\n autoplayHoverPause: false,\n autoplayButton: false,\n autoplayButtonOutput: true,\n autoplayResetOnVisibility: true,\n animateIn: 'tns-fadeIn',\n animateOut: 'tns-fadeOut',\n animateNormal: 'tns-normal',\n animateDelay: false,\n loop: true,\n rewind: false,\n autoHeight: false,\n responsive: false,\n lazyload: false,\n lazyloadSelector: '.tns-lazy-img',\n touch: true,\n mouseDrag: false,\n swipeAngle: 15,\n nested: false,\n preventActionWhenRunning: false,\n preventScrollOnTouch: false,\n freezable: true,\n onInit: false,\n useLocalStorage: true,\n textDirection: 'ltr',\n nonce: false\n }, options || {});\n\n var doc = document,\n win = window,\n KEYS = {\n ENTER: 13,\n SPACE: 32,\n LEFT: 37,\n RIGHT: 39\n },\n tnsStorage = {},\n localStorageAccess = options.useLocalStorage;\n\n if (localStorageAccess) {\n // check browser version and local storage access\n var browserInfo = navigator.userAgent;\n var uid = new Date;\n\n try {\n tnsStorage = win.localStorage;\n if (tnsStorage) {\n tnsStorage.setItem(uid, uid);\n localStorageAccess = tnsStorage.getItem(uid) == uid;\n tnsStorage.removeItem(uid);\n } else {\n localStorageAccess = false;\n }\n if (!localStorageAccess) { tnsStorage = {}; }\n } catch(e) {\n localStorageAccess = false;\n }\n\n if (localStorageAccess) {\n // remove storage when browser version changes\n if (tnsStorage['tnsApp'] && tnsStorage['tnsApp'] !== browserInfo) {\n ['tC', 'tPL', 'tMQ', 'tTf', 't3D', 'tTDu', 'tTDe', 'tADu', 'tADe', 'tTE', 'tAE'].forEach(function(item) { tnsStorage.removeItem(item); });\n }\n // update browserInfo\n localStorage['tnsApp'] = browserInfo;\n }\n }\n\n var CALC = tnsStorage['tC'] ? checkStorageValue(tnsStorage['tC']) : setLocalStorage(tnsStorage, 'tC', calc(), localStorageAccess),\n PERCENTAGELAYOUT = tnsStorage['tPL'] ? checkStorageValue(tnsStorage['tPL']) : setLocalStorage(tnsStorage, 'tPL', percentageLayout(), localStorageAccess),\n CSSMQ = tnsStorage['tMQ'] ? checkStorageValue(tnsStorage['tMQ']) : setLocalStorage(tnsStorage, 'tMQ', mediaquerySupport(), localStorageAccess),\n TRANSFORM = tnsStorage['tTf'] ? checkStorageValue(tnsStorage['tTf']) : setLocalStorage(tnsStorage, 'tTf', whichProperty('transform'), localStorageAccess),\n HAS3DTRANSFORMS = tnsStorage['t3D'] ? checkStorageValue(tnsStorage['t3D']) : setLocalStorage(tnsStorage, 't3D', has3DTransforms(TRANSFORM), localStorageAccess),\n TRANSITIONDURATION = tnsStorage['tTDu'] ? checkStorageValue(tnsStorage['tTDu']) : setLocalStorage(tnsStorage, 'tTDu', whichProperty('transitionDuration'), localStorageAccess),\n TRANSITIONDELAY = tnsStorage['tTDe'] ? checkStorageValue(tnsStorage['tTDe']) : setLocalStorage(tnsStorage, 'tTDe', whichProperty('transitionDelay'), localStorageAccess),\n ANIMATIONDURATION = tnsStorage['tADu'] ? checkStorageValue(tnsStorage['tADu']) : setLocalStorage(tnsStorage, 'tADu', whichProperty('animationDuration'), localStorageAccess),\n ANIMATIONDELAY = tnsStorage['tADe'] ? checkStorageValue(tnsStorage['tADe']) : setLocalStorage(tnsStorage, 'tADe', whichProperty('animationDelay'), localStorageAccess),\n TRANSITIONEND = tnsStorage['tTE'] ? checkStorageValue(tnsStorage['tTE']) : setLocalStorage(tnsStorage, 'tTE', getEndProperty(TRANSITIONDURATION, 'Transition'), localStorageAccess),\n ANIMATIONEND = tnsStorage['tAE'] ? checkStorageValue(tnsStorage['tAE']) : setLocalStorage(tnsStorage, 'tAE', getEndProperty(ANIMATIONDURATION, 'Animation'), localStorageAccess);\n\n // get element nodes from selectors\n var supportConsoleWarn = win.console && typeof win.console.warn === \"function\",\n tnsList = ['container', 'controlsContainer', 'prevButton', 'nextButton', 'navContainer', 'autoplayButton'],\n optionsElements = {};\n\n tnsList.forEach(function(item) {\n if (typeof options[item] === 'string') {\n var str = options[item],\n el = doc.querySelector(str);\n optionsElements[item] = str;\n\n if (el && el.nodeName) {\n options[item] = el;\n } else {\n if (supportConsoleWarn) { console.warn('Can\\'t find', options[item]); }\n return;\n }\n }\n });\n\n // make sure at least 1 slide\n if (options.container.children.length < 1) {\n if (supportConsoleWarn) { console.warn('No slides found in', options.container); }\n return;\n }\n\n // update options\n var responsive = options.responsive,\n nested = options.nested,\n carousel = options.mode === 'carousel' ? true : false;\n\n if (responsive) {\n // apply responsive[0] to options and remove it\n if (0 in responsive) {\n options = extend(options, responsive[0]);\n delete responsive[0];\n }\n\n var responsiveTem = {};\n for (var key in responsive) {\n var val = responsive[key];\n // update responsive\n // from: 300: 2\n // to:\n // 300: {\n // items: 2\n // }\n val = typeof val === 'number' ? {items: val} : val;\n responsiveTem[key] = val;\n }\n responsive = responsiveTem;\n responsiveTem = null;\n }\n\n // update options\n function updateOptions (obj) {\n for (var key in obj) {\n if (!carousel) {\n if (key === 'slideBy') { obj[key] = 'page'; }\n if (key === 'edgePadding') { obj[key] = false; }\n if (key === 'autoHeight') { obj[key] = false; }\n }\n\n // update responsive options\n if (key === 'responsive') { updateOptions(obj[key]); }\n }\n }\n if (!carousel) { updateOptions(options); }\n\n\n // === define and set variables ===\n if (!carousel) {\n options.axis = 'horizontal';\n options.slideBy = 'page';\n options.edgePadding = false;\n\n var animateIn = options.animateIn,\n animateOut = options.animateOut,\n animateDelay = options.animateDelay,\n animateNormal = options.animateNormal;\n }\n\n var horizontal = options.axis === 'horizontal' ? true : false,\n outerWrapper = doc.createElement('div'),\n innerWrapper = doc.createElement('div'),\n middleWrapper,\n container = options.container,\n containerParent = container.parentNode,\n containerHTML = container.outerHTML,\n slideItems = container.children,\n slideCount = slideItems.length,\n breakpointZone,\n windowWidth = getWindowWidth(),\n isOn = false;\n if (responsive) { setBreakpointZone(); }\n if (carousel) { container.className += ' tns-vpfix'; }\n\n // fixedWidth: viewport > rightBoundary > indexMax\n var autoWidth = options.autoWidth,\n fixedWidth = getOption('fixedWidth'),\n edgePadding = getOption('edgePadding'),\n gutter = getOption('gutter'),\n viewport = getViewportWidth(),\n center = getOption('center'),\n items = !autoWidth ? Math.floor(getOption('items')) : 1,\n slideBy = getOption('slideBy'),\n viewportMax = options.viewportMax || options.fixedWidthViewportWidth,\n arrowKeys = getOption('arrowKeys'),\n speed = getOption('speed'),\n rewind = options.rewind,\n loop = rewind ? false : options.loop,\n autoHeight = getOption('autoHeight'),\n controls = getOption('controls'),\n controlsText = getOption('controlsText'),\n textDirection = getOption('textDirection'),\n nav = getOption('nav'),\n touch = getOption('touch'),\n mouseDrag = getOption('mouseDrag'),\n autoplay = getOption('autoplay'),\n autoplayTimeout = getOption('autoplayTimeout'),\n autoplayText = getOption('autoplayText'),\n autoplayHoverPause = getOption('autoplayHoverPause'),\n autoplayResetOnVisibility = getOption('autoplayResetOnVisibility'),\n sheet = createStyleSheet(null, getOption('nonce')),\n lazyload = options.lazyload,\n lazyloadSelector = options.lazyloadSelector,\n slidePositions, // collection of slide positions\n slideItemsOut = [],\n cloneCount = loop ? getCloneCountForLoop() : 0,\n slideCountNew = !carousel ? slideCount + cloneCount : slideCount + cloneCount * 2,\n hasRightDeadZone = (fixedWidth || autoWidth) && !loop ? true : false,\n rightBoundary = fixedWidth ? getRightBoundary() : null,\n updateIndexBeforeTransform = (!carousel || !loop) ? true : false,\n // transform\n transformAttr = horizontal ? 'left' : 'top',\n transformPrefix = '',\n transformPostfix = '',\n // index\n getIndexMax = (function () {\n if (fixedWidth) {\n return function() { return center && !loop ? slideCount - 1 : Math.ceil(- rightBoundary / (fixedWidth + gutter)); };\n } else if (autoWidth) {\n return function() {\n for (var i = 0; i < slideCountNew; i++) {\n if (slidePositions[i] >= - rightBoundary) { return i; }\n }\n };\n } else {\n return function() {\n if (center && carousel && !loop) {\n return slideCount - 1;\n } else {\n return loop || carousel ? Math.max(0, slideCountNew - Math.ceil(items)) : slideCountNew - 1;\n }\n };\n }\n })(),\n index = getStartIndex(getOption('startIndex')),\n indexCached = index,\n displayIndex = getCurrentSlide(),\n indexMin = 0,\n indexMax = !autoWidth ? getIndexMax() : null,\n // resize\n resizeTimer,\n preventActionWhenRunning = options.preventActionWhenRunning,\n swipeAngle = options.swipeAngle,\n moveDirectionExpected = swipeAngle ? '?' : true,\n running = false,\n onInit = options.onInit,\n events = new Events(),\n // id, class\n newContainerClasses = ' tns-slider tns-' + options.mode,\n slideId = container.id || getSlideId(),\n disable = getOption('disable'),\n disabled = false,\n freezable = options.freezable,\n freeze = freezable && !autoWidth ? getFreeze() : false,\n frozen = false,\n controlsEvents = {\n 'click': onControlsClick,\n 'keydown': onControlsKeydown\n },\n navEvents = {\n 'click': onNavClick,\n 'keydown': onNavKeydown\n },\n hoverEvents = {\n 'mouseover': mouseoverPause,\n 'mouseout': mouseoutRestart\n },\n visibilityEvent = {'visibilitychange': onVisibilityChange},\n docmentKeydownEvent = {'keydown': onDocumentKeydown},\n touchEvents = {\n 'touchstart': onPanStart,\n 'touchmove': onPanMove,\n 'touchend': onPanEnd,\n 'touchcancel': onPanEnd\n }, dragEvents = {\n 'mousedown': onPanStart,\n 'mousemove': onPanMove,\n 'mouseup': onPanEnd,\n 'mouseleave': onPanEnd\n },\n hasControls = hasOption('controls'),\n hasNav = hasOption('nav'),\n navAsThumbnails = autoWidth ? true : options.navAsThumbnails,\n hasAutoplay = hasOption('autoplay'),\n hasTouch = hasOption('touch'),\n hasMouseDrag = hasOption('mouseDrag'),\n slideActiveClass = 'tns-slide-active',\n slideClonedClass = 'tns-slide-cloned',\n imgCompleteClass = 'tns-complete',\n imgEvents = {\n 'load': onImgLoaded,\n 'error': onImgFailed\n },\n imgsComplete,\n liveregionCurrent,\n preventScroll = options.preventScrollOnTouch === 'force' ? true : false;\n\n // controls\n if (hasControls) {\n var controlsContainer = options.controlsContainer,\n controlsContainerHTML = options.controlsContainer ? options.controlsContainer.outerHTML : '',\n prevButton = options.prevButton,\n nextButton = options.nextButton,\n prevButtonHTML = options.prevButton ? options.prevButton.outerHTML : '',\n nextButtonHTML = options.nextButton ? options.nextButton.outerHTML : '',\n prevIsButton,\n nextIsButton;\n }\n\n // nav\n if (hasNav) {\n var navContainer = options.navContainer,\n navContainerHTML = options.navContainer ? options.navContainer.outerHTML : '',\n navItems,\n pages = autoWidth ? slideCount : getPages(),\n pagesCached = 0,\n navClicked = -1,\n navCurrentIndex = getCurrentNavIndex(),\n navCurrentIndexCached = navCurrentIndex,\n navActiveClass = 'tns-nav-active',\n navStr = 'Carousel Page ',\n navStrCurrent = ' (Current Slide)';\n }\n\n // autoplay\n if (hasAutoplay) {\n var autoplayDirection = options.autoplayDirection === 'forward' ? 1 : -1,\n autoplayButton = options.autoplayButton,\n autoplayButtonHTML = options.autoplayButton ? options.autoplayButton.outerHTML : '',\n autoplayHtmlStrings = ['<span class=\\'tns-visually-hidden\\'>', ' animation</span>'],\n autoplayTimer,\n animating,\n autoplayHoverPaused,\n autoplayUserPaused,\n autoplayVisibilityPaused;\n }\n\n if (hasTouch || hasMouseDrag) {\n var initPosition = {},\n lastPosition = {},\n translateInit,\n disX,\n disY,\n panStart = false,\n rafIndex,\n getDist = horizontal ?\n function(a, b) { return a.x - b.x; } :\n function(a, b) { return a.y - b.y; };\n }\n\n // disable slider when slidecount <= items\n if (!autoWidth) { resetVariblesWhenDisable(disable || freeze); }\n\n if (TRANSFORM) {\n transformAttr = TRANSFORM;\n transformPrefix = 'translate';\n\n if (HAS3DTRANSFORMS) {\n transformPrefix += horizontal ? '3d(' : '3d(0px, ';\n transformPostfix = horizontal ? ', 0px, 0px)' : ', 0px)';\n } else {\n transformPrefix += horizontal ? 'X(' : 'Y(';\n transformPostfix = ')';\n }\n\n }\n\n if (carousel) { container.className = container.className.replace('tns-vpfix', ''); }\n initStructure();\n initSheet();\n initSliderTransform();\n\n // === COMMON FUNCTIONS === //\n function resetVariblesWhenDisable (condition) {\n if (condition) {\n controls = nav = touch = mouseDrag = arrowKeys = autoplay = autoplayHoverPause = autoplayResetOnVisibility = false;\n }\n }\n\n function getCurrentSlide () {\n var tem = carousel ? index - cloneCount : index;\n while (tem < 0) { tem += slideCount; }\n return tem%slideCount + 1;\n }\n\n function getStartIndex (ind) {\n ind = ind ? Math.max(0, Math.min(loop ? slideCount - 1 : slideCount - items, ind)) : 0;\n return carousel ? ind + cloneCount : ind;\n }\n\n function getAbsIndex (i) {\n if (i == null) { i = index; }\n\n if (carousel) { i -= cloneCount; }\n while (i < 0) { i += slideCount; }\n\n return Math.floor(i%slideCount);\n }\n\n function getCurrentNavIndex () {\n var absIndex = getAbsIndex(),\n result;\n\n result = navAsThumbnails ? absIndex :\n fixedWidth || autoWidth ? Math.ceil((absIndex + 1) * pages / slideCount - 1) :\n Math.floor(absIndex / items);\n\n // set active nav to the last one when reaches the right edge\n if (!loop && carousel && index === indexMax) { result = pages - 1; }\n\n return result;\n }\n\n function getItemsMax () {\n // fixedWidth or autoWidth while viewportMax is not available\n if (autoWidth || (fixedWidth && !viewportMax)) {\n return slideCount - 1;\n // most cases\n } else {\n var str = fixedWidth ? 'fixedWidth' : 'items',\n arr = [];\n\n if (fixedWidth || options[str] < slideCount) { arr.push(options[str]); }\n\n if (responsive) {\n for (var bp in responsive) {\n var tem = responsive[bp][str];\n if (tem && (fixedWidth || tem < slideCount)) { arr.push(tem); }\n }\n }\n\n if (!arr.length) { arr.push(0); }\n\n return Math.ceil(fixedWidth ? viewportMax / Math.min.apply(null, arr) : Math.max.apply(null, arr));\n }\n }\n\n function getCloneCountForLoop () {\n var itemsMax = getItemsMax(),\n result = carousel ? Math.ceil((itemsMax * 5 - slideCount)/2) : (itemsMax * 4 - slideCount);\n result = Math.max(itemsMax, result);\n\n return hasOption('edgePadding') ? result + 1 : result;\n }\n\n function getWindowWidth () {\n return win.innerWidth || doc.documentElement.clientWidth || doc.body.clientWidth;\n }\n\n function getInsertPosition (pos) {\n return pos === 'top' ? 'afterbegin' : 'beforeend';\n }\n\n function getClientWidth (el) {\n if (el == null) { return; }\n var div = doc.createElement('div'), rect, width;\n el.appendChild(div);\n rect = div.getBoundingClientRect();\n width = rect.right - rect.left;\n div.remove();\n return width || getClientWidth(el.parentNode);\n }\n\n function getViewportWidth () {\n var gap = edgePadding ? edgePadding * 2 - gutter : 0;\n return getClientWidth(containerParent) - gap;\n }\n\n function hasOption (item) {\n if (options[item]) {\n return true;\n } else {\n if (responsive) {\n for (var bp in responsive) {\n if (responsive[bp][item]) { return true; }\n }\n }\n return false;\n }\n }\n\n // get option:\n // fixed width: viewport, fixedWidth, gutter => items\n // others: window width => all variables\n // all: items => slideBy\n function getOption (item, ww) {\n if (ww == null) { ww = windowWidth; }\n\n if (item === 'items' && fixedWidth) {\n return Math.floor((viewport + gutter) / (fixedWidth + gutter)) || 1;\n\n } else {\n var result = options[item];\n\n if (responsive) {\n for (var bp in responsive) {\n // bp: convert string to number\n if (ww >= parseInt(bp)) {\n if (item in responsive[bp]) { result = responsive[bp][item]; }\n }\n }\n }\n\n if (item === 'slideBy' && result === 'page') { result = getOption('items'); }\n if (!carousel && (item === 'slideBy' || item === 'items')) { result = Math.floor(result); }\n\n return result;\n }\n }\n\n function getSlideMarginLeft (i) {\n return CALC ?\n CALC + '(' + i * 100 + '% / ' + slideCountNew + ')' :\n i * 100 / slideCountNew + '%';\n }\n\n function getInnerWrapperStyles (edgePaddingTem, gutterTem, fixedWidthTem, speedTem, autoHeightBP) {\n var str = '';\n\n if (edgePaddingTem !== undefined) {\n var gap = edgePaddingTem;\n if (gutterTem) { gap -= gutterTem; }\n str = horizontal ?\n 'margin: 0 ' + gap + 'px 0 ' + edgePaddingTem + 'px;' :\n 'margin: ' + edgePaddingTem + 'px 0 ' + gap + 'px 0;';\n } else if (gutterTem && !fixedWidthTem) {\n var gutterTemUnit = '-' + gutterTem + 'px',\n dir = horizontal ? gutterTemUnit + ' 0 0' : '0 ' + gutterTemUnit + ' 0';\n str = 'margin: 0 ' + dir + ';';\n }\n\n if (!carousel && autoHeightBP && TRANSITIONDURATION && speedTem) { str += getTransitionDurationStyle(speedTem); }\n return str;\n }\n\n function getContainerWidth (fixedWidthTem, gutterTem, itemsTem) {\n if (fixedWidthTem) {\n return (fixedWidthTem + gutterTem) * slideCountNew + 'px';\n } else {\n return CALC ?\n CALC + '(' + slideCountNew * 100 + '% / ' + itemsTem + ')' :\n slideCountNew * 100 / itemsTem + '%';\n }\n }\n\n function getSlideWidthStyle (fixedWidthTem, gutterTem, itemsTem) {\n var width;\n\n if (fixedWidthTem) {\n width = (fixedWidthTem + gutterTem) + 'px';\n } else {\n if (!carousel) { itemsTem = Math.floor(itemsTem); }\n var dividend = carousel ? slideCountNew : itemsTem;\n width = CALC ?\n CALC + '(100% / ' + dividend + ')' :\n 100 / dividend + '%';\n }\n\n width = 'width:' + width;\n\n // inner slider: overwrite outer slider styles\n return nested !== 'inner' ? width + ';' : width + ' !important;';\n }\n\n function getSlideGutterStyle (gutterTem) {\n var str = '';\n\n // gutter maybe interger || 0\n // so can't use 'if (gutter)'\n if (gutterTem !== false) {\n var prop = horizontal ? 'padding-' : 'margin-',\n dir = horizontal ? 'right' : 'bottom';\n str = prop + dir + ': ' + gutterTem + 'px;';\n }\n\n return str;\n }\n\n function getCSSPrefix (name, num) {\n var prefix = name.substring(0, name.length - num).toLowerCase();\n if (prefix) { prefix = '-' + prefix + '-'; }\n\n return prefix;\n }\n\n function getTransitionDurationStyle (speed) {\n return getCSSPrefix(TRANSITIONDURATION, 18) + 'transition-duration:' + speed / 1000 + 's;';\n }\n\n function getAnimationDurationStyle (speed) {\n return getCSSPrefix(ANIMATIONDURATION, 17) + 'animation-duration:' + speed / 1000 + 's;';\n }\n\n function initStructure () {\n var classOuter = 'tns-outer',\n classInner = 'tns-inner',\n hasGutter = hasOption('gutter');\n\n outerWrapper.className = classOuter;\n innerWrapper.className = classInner;\n outerWrapper.id = slideId + '-ow';\n innerWrapper.id = slideId + '-iw';\n\n // set container properties\n if (container.id === '') { container.id = slideId; }\n newContainerClasses += PERCENTAGELAYOUT || autoWidth ? ' tns-subpixel' : ' tns-no-subpixel';\n newContainerClasses += CALC ? ' tns-calc' : ' tns-no-calc';\n if (autoWidth) { newContainerClasses += ' tns-autowidth'; }\n newContainerClasses += ' tns-' + options.axis;\n container.className += newContainerClasses;\n\n // add constrain layer for carousel\n if (carousel) {\n middleWrapper = doc.createElement('div');\n middleWrapper.id = slideId + '-mw';\n middleWrapper.className = 'tns-ovh';\n\n outerWrapper.appendChild(middleWrapper);\n middleWrapper.appendChild(innerWrapper);\n } else {\n outerWrapper.appendChild(innerWrapper);\n }\n\n if (autoHeight) {\n var wp = middleWrapper ? middleWrapper : innerWrapper;\n wp.className += ' tns-ah';\n }\n\n containerParent.insertBefore(outerWrapper, container);\n innerWrapper.appendChild(container);\n\n // add id, class, aria attributes\n // before clone slides\n forEach(slideItems, function(item, i) {\n addClass(item, 'tns-item');\n if (!item.id) { item.id = slideId + '-item' + i; }\n if (!carousel && animateNormal) { addClass(item, animateNormal); }\n setAttrs(item, {\n 'aria-hidden': 'true',\n 'tabindex': '-1'\n });\n });\n\n // ## clone slides\n // carousel: n + slides + n\n // gallery: slides + n\n if (cloneCount) {\n var fragmentBefore = doc.createDocumentFragment(),\n fragmentAfter = doc.createDocumentFragment();\n\n for (var j = cloneCount; j--;) {\n var num = j%slideCount,\n cloneFirst = slideItems[num].cloneNode(true);\n addClass(cloneFirst, slideClonedClass);\n removeAttrs(cloneFirst, 'id');\n fragmentAfter.insertBefore(cloneFirst, fragmentAfter.firstChild);\n\n if (carousel) {\n var cloneLast = slideItems[slideCount - 1 - num].cloneNode(true);\n addClass(cloneLast, slideClonedClass);\n removeAttrs(cloneLast, 'id');\n fragmentBefore.appendChild(cloneLast);\n }\n }\n\n container.insertBefore(fragmentBefore, container.firstChild);\n container.appendChild(fragmentAfter);\n slideItems = container.children;\n }\n\n }\n\n function initSliderTransform () {\n // ## images loaded/failed\n if (hasOption('autoHeight') || autoWidth || !horizontal) {\n var imgs = container.querySelectorAll('img');\n\n // add img load event listener\n forEach(imgs, function(img) {\n var src = img.src;\n\n if (!lazyload) {\n // not data img\n if (src && src.indexOf('data:image') < 0) {\n img.src = '';\n addEvents(img, imgEvents);\n addClass(img, 'loading');\n\n img.src = src;\n // data img\n } else {\n imgLoaded(img);\n }\n }\n });\n\n // set imgsComplete\n raf(function(){ imgsLoadedCheck(arrayFromNodeList(imgs), function() { imgsComplete = true; }); });\n\n // reset imgs for auto height: check visible imgs only\n if (hasOption('autoHeight')) { imgs = getImageArray(index, Math.min(index + items - 1, slideCountNew - 1)); }\n\n lazyload ? initSliderTransformStyleCheck() : raf(function(){ imgsLoadedCheck(arrayFromNodeList(imgs), initSliderTransformStyleCheck); });\n\n } else {\n // set container transform property\n if (carousel) { doContainerTransformSilent(); }\n\n // update slider tools and events\n initTools();\n initEvents();\n }\n }\n\n function initSliderTransformStyleCheck () {\n if (autoWidth && slideCount > 1) {\n // check styles application\n var num = loop ? index : slideCount - 1;\n\n (function stylesApplicationCheck() {\n var left = slideItems[num].getBoundingClientRect().left;\n var right = slideItems[num - 1].getBoundingClientRect().right;\n\n (Math.abs(left - right) <= 1) ?\n initSliderTransformCore() :\n setTimeout(function(){ stylesApplicationCheck(); }, 16);\n })();\n\n } else {\n initSliderTransformCore();\n }\n }\n\n\n function initSliderTransformCore () {\n // run Fn()s which are rely on image loading\n if (!horizontal || autoWidth) {\n setSlidePositions();\n\n if (autoWidth) {\n rightBoundary = getRightBoundary();\n if (freezable) { freeze = getFreeze(); }\n indexMax = getIndexMax(); // <= slidePositions, rightBoundary <=\n resetVariblesWhenDisable(disable || freeze);\n } else {\n updateContentWrapperHeight();\n }\n }\n\n // set container transform property\n if (carousel) { doContainerTransformSilent(); }\n\n // update slider tools and events\n initTools();\n initEvents();\n }\n\n function initSheet () {\n // gallery:\n // set animation classes and left value for gallery slider\n if (!carousel) {\n for (var i = index, l = index + Math.min(slideCount, items); i < l; i++) {\n var item = slideItems[i];\n item.style.left = (i - index) * 100 / items + '%';\n addClass(item, animateIn);\n removeClass(item, animateNormal);\n }\n }\n\n // #### LAYOUT\n\n // ## INLINE-BLOCK VS FLOAT\n\n // ## PercentageLayout:\n // slides: inline-block\n // remove blank space between slides by set font-size: 0\n\n // ## Non PercentageLayout:\n // slides: float\n // margin-right: -100%\n // margin-left: ~\n\n // Resource: https://docs.google.com/spreadsheets/d/147up245wwTXeQYve3BRSAD4oVcvQmuGsFteJOeA5xNQ/edit?usp=sharing\n if (horizontal) {\n if (PERCENTAGELAYOUT || autoWidth) {\n addCSSRule(sheet, '#' + slideId + ' > .tns-item', 'font-size:' + win.getComputedStyle(slideItems[0]).fontSize + ';', getCssRulesLength(sheet));\n addCSSRule(sheet, '#' + slideId, 'font-size:0;', getCssRulesLength(sheet));\n } else if (carousel) {\n forEach(slideItems, function (slide, i) {\n slide.style.marginLeft = getSlideMarginLeft(i);\n });\n }\n }\n\n\n // ## BASIC STYLES\n if (CSSMQ) {\n // middle wrapper style\n if (TRANSITIONDURATION) {\n var str = middleWrapper && options.autoHeight ? getTransitionDurationStyle(options.speed) : '';\n addCSSRule(sheet, '#' + slideId + '-mw', str, getCssRulesLength(sheet));\n }\n\n // inner wrapper styles\n str = getInnerWrapperStyles(options.edgePadding, options.gutter, options.fixedWidth, options.speed, options.autoHeight);\n addCSSRule(sheet, '#' + slideId + '-iw', str, getCssRulesLength(sheet));\n\n // container styles\n if (carousel) {\n str = horizontal && !autoWidth ? 'width:' + getContainerWidth(options.fixedWidth, options.gutter, options.items) + ';' : '';\n if (TRANSITIONDURATION) { str += getTransitionDurationStyle(speed); }\n addCSSRule(sheet, '#' + slideId, str, getCssRulesLength(sheet));\n }\n\n // slide styles\n str = horizontal && !autoWidth ? getSlideWidthStyle(options.fixedWidth, options.gutter, options.items) : '';\n if (options.gutter) { str += getSlideGutterStyle(options.gutter); }\n // set gallery items transition-duration\n if (!carousel) {\n if (TRANSITIONDURATION) { str += getTransitionDurationStyle(speed); }\n if (ANIMATIONDURATION) { str += getAnimationDurationStyle(speed); }\n }\n if (str) { addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet)); }\n\n // non CSS mediaqueries: IE8\n // ## update inner wrapper, container, slides if needed\n // set inline styles for inner wrapper & container\n // insert stylesheet (one line) for slides only (since slides are many)\n } else {\n // middle wrapper styles\n update_carousel_transition_duration();\n\n // inner wrapper styles\n innerWrapper.style.cssText = getInnerWrapperStyles(edgePadding, gutter, fixedWidth, autoHeight);\n\n // container styles\n if (carousel && horizontal && !autoWidth) {\n container.style.width = getContainerWidth(fixedWidth, gutter, items);\n }\n\n // slide styles\n var str = horizontal && !autoWidth ? getSlideWidthStyle(fixedWidth, gutter, items) : '';\n if (gutter) { str += getSlideGutterStyle(gutter); }\n\n // append to the last line\n if (str) { addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet)); }\n }\n\n // ## MEDIAQUERIES\n if (responsive && CSSMQ) {\n for (var bp in responsive) {\n // bp: convert string to number\n bp = parseInt(bp);\n\n var opts = responsive[bp],\n str = '',\n middleWrapperStr = '',\n innerWrapperStr = '',\n containerStr = '',\n slideStr = '',\n itemsBP = !autoWidth ? getOption('items', bp) : null,\n fixedWidthBP = getOption('fixedWidth', bp),\n speedBP = getOption('speed', bp),\n edgePaddingBP = getOption('edgePadding', bp),\n autoHeightBP = getOption('autoHeight', bp),\n gutterBP = getOption('gutter', bp);\n\n // middle wrapper string\n if (TRANSITIONDURATION && middleWrapper && getOption('autoHeight', bp) && 'speed' in opts) {\n middleWrapperStr = '#' + slideId + '-mw{' + getTransitionDurationStyle(speedBP) + '}';\n }\n\n // inner wrapper string\n if ('edgePadding' in opts || 'gutter' in opts) {\n innerWrapperStr = '#' + slideId + '-iw{' + getInnerWrapperStyles(edgePaddingBP, gutterBP, fixedWidthBP, speedBP, autoHeightBP) + '}';\n }\n\n // container string\n if (carousel && horizontal && !autoWidth && ('fixedWidth' in opts || 'items' in opts || (fixedWidth && 'gutter' in opts))) {\n containerStr = 'width:' + getContainerWidth(fixedWidthBP, gutterBP, itemsBP) + ';';\n }\n if (TRANSITIONDURATION && 'speed' in opts) {\n containerStr += getTransitionDurationStyle(speedBP);\n }\n if (containerStr) {\n containerStr = '#' + slideId + '{' + containerStr + '}';\n }\n\n // slide string\n if ('fixedWidth' in opts || (fixedWidth && 'gutter' in opts) || !carousel && 'items' in opts) {\n slideStr += getSlideWidthStyle(fixedWidthBP, gutterBP, itemsBP);\n }\n if ('gutter' in opts) {\n slideStr += getSlideGutterStyle(gutterBP);\n }\n // set gallery items transition-duration\n if (!carousel && 'speed' in opts) {\n if (TRANSITIONDURATION) { slideStr += getTransitionDurationStyle(speedBP); }\n if (ANIMATIONDURATION) { slideStr += getAnimationDurationStyle(speedBP); }\n }\n if (slideStr) { slideStr = '#' + slideId + ' > .tns-item{' + slideStr + '}'; }\n\n // add up\n str = middleWrapperStr + innerWrapperStr + containerStr + slideStr;\n\n if (str) {\n sheet.insertRule('@media (min-width: ' + bp / 16 + 'em) {' + str + '}', sheet.cssRules.length);\n }\n }\n }\n }\n\n function initTools () {\n // == slides ==\n updateSlideStatus();\n\n // == live region ==\n outerWrapper.insertAdjacentHTML('afterbegin', '<div class=\"tns-liveregion tns-visually-hidden\" aria-live=\"polite\" aria-atomic=\"true\">slide <span class=\"current\">' + getLiveRegionStr() + '</span> of ' + slideCount + '</div>');\n liveregionCurrent = outerWrapper.querySelector('.tns-liveregion .current');\n\n // == autoplayInit ==\n if (hasAutoplay) {\n var txt = autoplay ? 'stop' : 'start';\n if (autoplayButton) {\n setAttrs(autoplayButton, {'data-action': txt});\n } else if (options.autoplayButtonOutput) {\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.autoplayPosition), '<button type=\"button\" data-action=\"' + txt + '\">' + autoplayHtmlStrings[0] + txt + autoplayHtmlStrings[1] + autoplayText[0] + '</button>');\n autoplayButton = outerWrapper.querySelector('[data-action]');\n }\n\n // add event\n if (autoplayButton) {\n addEvents(autoplayButton, {'click': toggleAutoplay});\n }\n\n if (autoplay) {\n startAutoplay();\n if (autoplayHoverPause) { addEvents(container, hoverEvents); }\n if (autoplayResetOnVisibility) { addEvents(container, visibilityEvent); }\n }\n }\n\n // == navInit ==\n if (hasNav) {\n var initIndex = !carousel ? 0 : cloneCount;\n // customized nav\n // will not hide the navs in case they're thumbnails\n if (navContainer) {\n setAttrs(navContainer, {'aria-label': 'Carousel Pagination'});\n navItems = navContainer.children;\n forEach(navItems, function(item, i) {\n setAttrs(item, {\n 'data-nav': i,\n 'tabindex': '-1',\n 'aria-label': navStr + (i + 1),\n 'aria-controls': slideId,\n });\n });\n\n // generated nav\n } else {\n var navHtml = '',\n hiddenStr = navAsThumbnails ? '' : 'style=\"display:none\"';\n for (var i = 0; i < slideCount; i++) {\n // hide nav items by default\n navHtml += '<button type=\"button\" data-nav=\"' + i +'\" tabindex=\"-1\" aria-controls=\"' + slideId + '\" ' + hiddenStr + ' aria-label=\"' + navStr + (i + 1) +'\"></button>';\n }\n navHtml = '<div class=\"tns-nav\" aria-label=\"Carousel Pagination\">' + navHtml + '</div>';\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.navPosition), navHtml);\n\n navContainer = outerWrapper.querySelector('.tns-nav');\n navItems = navContainer.children;\n }\n\n updateNavVisibility();\n\n // add transition\n if (TRANSITIONDURATION) {\n var prefix = TRANSITIONDURATION.substring(0, TRANSITIONDURATION.length - 18).toLowerCase(),\n str = 'transition: all ' + speed / 1000 + 's';\n\n if (prefix) {\n str = '-' + prefix + '-' + str;\n }\n\n addCSSRule(sheet, '[aria-controls^=' + slideId + '-item]', str, getCssRulesLength(sheet));\n }\n\n setAttrs(navItems[navCurrentIndex], {'aria-label': navStr + (navCurrentIndex + 1) + navStrCurrent});\n removeAttrs(navItems[navCurrentIndex], 'tabindex');\n addClass(navItems[navCurrentIndex], navActiveClass);\n\n // add events\n addEvents(navContainer, navEvents);\n }\n\n\n\n // == controlsInit ==\n if (hasControls) {\n if (!controlsContainer && (!prevButton || !nextButton)) {\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.controlsPosition), '<div class=\"tns-controls\" aria-label=\"Carousel Navigation\" tabindex=\"0\"><button type=\"button\" data-controls=\"prev\" tabindex=\"-1\" aria-controls=\"' + slideId +'\">' + controlsText[0] + '</button><button type=\"button\" data-controls=\"next\" tabindex=\"-1\" aria-controls=\"' + slideId +'\">' + controlsText[1] + '</button></div>');\n\n controlsContainer = outerWrapper.querySelector('.tns-controls');\n }\n\n if (!prevButton || !nextButton) {\n prevButton = controlsContainer.children[0];\n nextButton = controlsContainer.children[1];\n }\n\n if (options.controlsContainer) {\n setAttrs(controlsContainer, {\n 'aria-label': 'Carousel Navigation',\n 'tabindex': '0'\n });\n }\n\n if (options.controlsContainer || (options.prevButton && options.nextButton)) {\n setAttrs([prevButton, nextButton], {\n 'aria-controls': slideId,\n 'tabindex': '-1',\n });\n }\n\n if (options.controlsContainer || (options.prevButton && options.nextButton)) {\n setAttrs(prevButton, {'data-controls' : 'prev'});\n setAttrs(nextButton, {'data-controls' : 'next'});\n }\n\n prevIsButton = isButton(prevButton);\n nextIsButton = isButton(nextButton);\n\n updateControlsStatus();\n\n // add events\n if (controlsContainer) {\n addEvents(controlsContainer, controlsEvents);\n } else {\n addEvents(prevButton, controlsEvents);\n addEvents(nextButton, controlsEvents);\n }\n }\n\n // hide tools if needed\n disableUI();\n }\n\n function initEvents () {\n // add events\n if (carousel && TRANSITIONEND) {\n var eve = {};\n eve[TRANSITIONEND] = onTransitionEnd;\n addEvents(container, eve);\n }\n\n if (touch) { addEvents(container, touchEvents, options.preventScrollOnTouch); }\n if (mouseDrag) { addEvents(container, dragEvents); }\n if (arrowKeys) { addEvents(doc, docmentKeydownEvent); }\n\n if (nested === 'inner') {\n events.on('outerResized', function () {\n resizeTasks();\n events.emit('innerLoaded', info());\n });\n } else if (responsive || fixedWidth || autoWidth || autoHeight || !horizontal) {\n addEvents(win, {'resize': onResize});\n }\n\n if (autoHeight) {\n if (nested === 'outer') {\n events.on('innerLoaded', doAutoHeight);\n } else if (!disable) { doAutoHeight(); }\n }\n\n doLazyLoad();\n if (disable) { disableSlider(); } else if (freeze) { freezeSlider(); }\n\n events.on('indexChanged', additionalUpdates);\n if (nested === 'inner') { events.emit('innerLoaded', info()); }\n if (typeof onInit === 'function') { onInit(info()); }\n isOn = true;\n }\n\n function destroy () {\n // sheet\n sheet.disabled = true;\n if (sheet.ownerNode) { sheet.ownerNode.remove(); }\n\n // remove win event listeners\n removeEvents(win, {'resize': onResize});\n\n // arrowKeys, controls, nav\n if (arrowKeys) { removeEvents(doc, docmentKeydownEvent); }\n if (controlsContainer) { removeEvents(controlsContainer, controlsEvents); }\n if (navContainer) { removeEvents(navContainer, navEvents); }\n\n // autoplay\n removeEvents(container, hoverEvents);\n removeEvents(container, visibilityEvent);\n if (autoplayButton) { removeEvents(autoplayButton, {'click': toggleAutoplay}); }\n if (autoplay) { clearInterval(autoplayTimer); }\n\n // container\n if (carousel && TRANSITIONEND) {\n var eve = {};\n eve[TRANSITIONEND] = onTransitionEnd;\n removeEvents(container, eve);\n }\n if (touch) { removeEvents(container, touchEvents); }\n if (mouseDrag) { removeEvents(container, dragEvents); }\n\n // cache Object values in options && reset HTML\n var htmlList = [containerHTML, controlsContainerHTML, prevButtonHTML, nextButtonHTML, navContainerHTML, autoplayButtonHTML];\n\n tnsList.forEach(function(item, i) {\n var el = item === 'container' ? outerWrapper : options[item];\n\n if (typeof el === 'object' && el) {\n var prevEl = el.previousElementSibling ? el.previousElementSibling : false,\n parentEl = el.parentNode;\n el.outerHTML = htmlList[i];\n options[item] = prevEl ? prevEl.nextElementSibling : parentEl.firstElementChild;\n }\n });\n\n\n // reset variables\n tnsList = animateIn = animateOut = animateDelay = animateNormal = horizontal = outerWrapper = innerWrapper = container = containerParent = containerHTML = slideItems = slideCount = breakpointZone = windowWidth = autoWidth = fixedWidth = edgePadding = gutter = viewport = items = slideBy = viewportMax = arrowKeys = speed = rewind = loop = autoHeight = sheet = lazyload = slidePositions = slideItemsOut = cloneCount = slideCountNew = hasRightDeadZone = rightBoundary = updateIndexBeforeTransform = transformAttr = transformPrefix = transformPostfix = getIndexMax = index = indexCached = indexMin = indexMax = resizeTimer = swipeAngle = moveDirectionExpected = running = onInit = events = newContainerClasses = slideId = disable = disabled = freezable = freeze = frozen = controlsEvents = navEvents = hoverEvents = visibilityEvent = docmentKeydownEvent = touchEvents = dragEvents = hasControls = hasNav = navAsThumbnails = hasAutoplay = hasTouch = hasMouseDrag = slideActiveClass = imgCompleteClass = imgEvents = imgsComplete = controls = controlsText = controlsContainer = controlsContainerHTML = prevButton = nextButton = prevIsButton = nextIsButton = nav = navContainer = navContainerHTML = navItems = pages = pagesCached = navClicked = navCurrentIndex = navCurrentIndexCached = navActiveClass = navStr = navStrCurrent = autoplay = autoplayTimeout = autoplayDirection = autoplayText = autoplayHoverPause = autoplayButton = autoplayButtonHTML = autoplayResetOnVisibility = autoplayHtmlStrings = autoplayTimer = animating = autoplayHoverPaused = autoplayUserPaused = autoplayVisibilityPaused = initPosition = lastPosition = translateInit = disX = disY = panStart = rafIndex = getDist = touch = mouseDrag = null;\n // check variables\n // [animateIn, animateOut, animateDelay, animateNormal, horizontal, outerWrapper, innerWrapper, container, containerParent, containerHTML, slideItems, slideCount, breakpointZone, windowWidth, autoWidth, fixedWidth, edgePadding, gutter, viewport, items, slideBy, viewportMax, arrowKeys, speed, rewind, loop, autoHeight, sheet, lazyload, slidePositions, slideItemsOut, cloneCount, slideCountNew, hasRightDeadZone, rightBoundary, updateIndexBeforeTransform, transformAttr, transformPrefix, transformPostfix, getIndexMax, index, indexCached, indexMin, indexMax, resizeTimer, swipeAngle, moveDirectionExpected, running, onInit, events, newContainerClasses, slideId, disable, disabled, freezable, freeze, frozen, controlsEvents, navEvents, hoverEvents, visibilityEvent, docmentKeydownEvent, touchEvents, dragEvents, hasControls, hasNav, navAsThumbnails, hasAutoplay, hasTouch, hasMouseDrag, slideActiveClass, imgCompleteClass, imgEvents, imgsComplete, controls, controlsText, controlsContainer, controlsContainerHTML, prevButton, nextButton, prevIsButton, nextIsButton, nav, navContainer, navContainerHTML, navItems, pages, pagesCached, navClicked, navCurrentIndex, navCurrentIndexCached, navActiveClass, navStr, navStrCurrent, autoplay, autoplayTimeout, autoplayDirection, autoplayText, autoplayHoverPause, autoplayButton, autoplayButtonHTML, autoplayResetOnVisibility, autoplayHtmlStrings, autoplayTimer, animating, autoplayHoverPaused, autoplayUserPaused, autoplayVisibilityPaused, initPosition, lastPosition, translateInit, disX, disY, panStart, rafIndex, getDist, touch, mouseDrag ].forEach(function(item) { if (item !== null) { console.log(item); } });\n\n for (var a in this) {\n if (a !== 'rebuild') { this[a] = null; }\n }\n isOn = false;\n }\n\n// === ON RESIZE ===\n // responsive || fixedWidth || autoWidth || !horizontal\n function onResize (e) {\n raf(function(){ resizeTasks(getEvent(e)); });\n }\n\n function resizeTasks (e) {\n if (!isOn) { return; }\n if (nested === 'outer') { events.emit('outerResized', info(e)); }\n windowWidth = getWindowWidth();\n var bpChanged,\n breakpointZoneTem = breakpointZone,\n needContainerTransform = false;\n\n if (responsive) {\n setBreakpointZone();\n bpChanged = breakpointZoneTem !== breakpointZone;\n // if (hasRightDeadZone) { needContainerTransform = true; } // *?\n if (bpChanged) { events.emit('newBreakpointStart', info(e)); }\n }\n\n var indChanged,\n itemsChanged,\n itemsTem = items,\n disableTem = disable,\n freezeTem = freeze,\n arrowKeysTem = arrowKeys,\n controlsTem = controls,\n navTem = nav,\n touchTem = touch,\n mouseDragTem = mouseDrag,\n autoplayTem = autoplay,\n autoplayHoverPauseTem = autoplayHoverPause,\n autoplayResetOnVisibilityTem = autoplayResetOnVisibility,\n indexTem = index;\n\n if (bpChanged) {\n var fixedWidthTem = fixedWidth,\n autoHeightTem = autoHeight,\n controlsTextTem = controlsText,\n centerTem = center,\n autoplayTextTem = autoplayText;\n\n if (!CSSMQ) {\n var gutterTem = gutter,\n edgePaddingTem = edgePadding;\n }\n }\n\n // get option:\n // fixed width: viewport, fixedWidth, gutter => items\n // others: window width => all variables\n // all: items => slideBy\n arrowKeys = getOption('arrowKeys');\n controls = getOption('controls');\n nav = getOption('nav');\n touch = getOption('touch');\n center = getOption('center');\n mouseDrag = getOption('mouseDrag');\n autoplay = getOption('autoplay');\n autoplayHoverPause = getOption('autoplayHoverPause');\n autoplayResetOnVisibility = getOption('autoplayResetOnVisibility');\n\n if (bpChanged) {\n disable = getOption('disable');\n fixedWidth = getOption('fixedWidth');\n speed = getOption('speed');\n autoHeight = getOption('autoHeight');\n controlsText = getOption('controlsText');\n autoplayText = getOption('autoplayText');\n autoplayTimeout = getOption('autoplayTimeout');\n\n if (!CSSMQ) {\n edgePadding = getOption('edgePadding');\n gutter = getOption('gutter');\n }\n }\n // update options\n resetVariblesWhenDisable(disable);\n\n viewport = getViewportWidth(); // <= edgePadding, gutter\n if ((!horizontal || autoWidth) && !disable) {\n setSlidePositions();\n if (!horizontal) {\n updateContentWrapperHeight(); // <= setSlidePositions\n needContainerTransform = true;\n }\n }\n if (fixedWidth || autoWidth) {\n rightBoundary = getRightBoundary(); // autoWidth: <= viewport, slidePositions, gutter\n // fixedWidth: <= viewport, fixedWidth, gutter\n indexMax = getIndexMax(); // autoWidth: <= rightBoundary, slidePositions\n // fixedWidth: <= rightBoundary, fixedWidth, gutter\n }\n\n if (bpChanged || fixedWidth) {\n items = getOption('items');\n slideBy = getOption('slideBy');\n itemsChanged = items !== itemsTem;\n\n if (itemsChanged) {\n if (!fixedWidth && !autoWidth) { indexMax = getIndexMax(); } // <= items\n // check index before transform in case\n // slider reach the right edge then items become bigger\n updateIndex();\n }\n }\n\n if (bpChanged) {\n if (disable !== disableTem) {\n if (disable) {\n disableSlider();\n } else {\n enableSlider(); // <= slidePositions, rightBoundary, indexMax\n }\n }\n }\n\n if (freezable && (bpChanged || fixedWidth || autoWidth)) {\n freeze = getFreeze(); // <= autoWidth: slidePositions, gutter, viewport, rightBoundary\n // <= fixedWidth: fixedWidth, gutter, rightBoundary\n // <= others: items\n\n if (freeze !== freezeTem) {\n if (freeze) {\n doContainerTransform(getContainerTransformValue(getStartIndex(0)));\n freezeSlider();\n } else {\n unfreezeSlider();\n needContainerTransform = true;\n }\n }\n }\n\n resetVariblesWhenDisable(disable || freeze); // controls, nav, touch, mouseDrag, arrowKeys, autoplay, autoplayHoverPause, autoplayResetOnVisibility\n if (!autoplay) { autoplayHoverPause = autoplayResetOnVisibility = false; }\n\n if (arrowKeys !== arrowKeysTem) {\n arrowKeys ?\n addEvents(doc, docmentKeydownEvent) :\n removeEvents(doc, docmentKeydownEvent);\n }\n if (controls !== controlsTem) {\n if (controls) {\n if (controlsContainer) {\n showElement(controlsContainer);\n } else {\n if (prevButton) { showElement(prevButton); }\n if (nextButton) { showElement(nextButton); }\n }\n } else {\n if (controlsContainer) {\n hideElement(controlsContainer);\n } else {\n if (prevButton) { hideElement(prevButton); }\n if (nextButton) { hideElement(nextButton); }\n }\n }\n }\n if (nav !== navTem) {\n if (nav) {\n showElement(navContainer);\n updateNavVisibility();\n } else {\n hideElement(navContainer);\n }\n }\n if (touch !== touchTem) {\n touch ?\n addEvents(container, touchEvents, options.preventScrollOnTouch) :\n removeEvents(container, touchEvents);\n }\n if (mouseDrag !== mouseDragTem) {\n mouseDrag ?\n addEvents(container, dragEvents) :\n removeEvents(container, dragEvents);\n }\n if (autoplay !== autoplayTem) {\n if (autoplay) {\n if (autoplayButton) { showElement(autoplayButton); }\n if (!animating && !autoplayUserPaused) { startAutoplay(); }\n } else {\n if (autoplayButton) { hideElement(autoplayButton); }\n if (animating) { stopAutoplay(); }\n }\n }\n if (autoplayHoverPause !== autoplayHoverPauseTem) {\n autoplayHoverPause ?\n addEvents(container, hoverEvents) :\n removeEvents(container, hoverEvents);\n }\n if (autoplayResetOnVisibility !== autoplayResetOnVisibilityTem) {\n autoplayResetOnVisibility ?\n addEvents(doc, visibilityEvent) :\n removeEvents(doc, visibilityEvent);\n }\n\n if (bpChanged) {\n if (fixedWidth !== fixedWidthTem || center !== centerTem) { needContainerTransform = true; }\n\n if (autoHeight !== autoHeightTem) {\n if (!autoHeight) { innerWrapper.style.height = ''; }\n }\n\n if (controls && controlsText !== controlsTextTem) {\n prevButton.innerHTML = controlsText[0];\n nextButton.innerHTML = controlsText[1];\n }\n\n if (autoplayButton && autoplayText !== autoplayTextTem) {\n var i = autoplay ? 1 : 0,\n html = autoplayButton.innerHTML,\n len = html.length - autoplayTextTem[i].length;\n if (html.substring(len) === autoplayTextTem[i]) {\n autoplayButton.innerHTML = html.substring(0, len) + autoplayText[i];\n }\n }\n } else {\n if (center && (fixedWidth || autoWidth)) { needContainerTransform = true; }\n }\n\n if (itemsChanged || fixedWidth && !autoWidth) {\n pages = getPages();\n updateNavVisibility();\n }\n\n indChanged = index !== indexTem;\n if (indChanged) {\n events.emit('indexChanged', info());\n needContainerTransform = true;\n } else if (itemsChanged) {\n if (!indChanged) { additionalUpdates(); }\n } else if (fixedWidth || autoWidth) {\n doLazyLoad();\n updateSlideStatus();\n updateLiveRegion();\n }\n\n if (itemsChanged && !carousel) { updateGallerySlidePositions(); }\n\n if (!disable && !freeze) {\n // non-mediaqueries: IE8\n if (bpChanged && !CSSMQ) {\n // middle wrapper styles\n\n // inner wrapper styles\n if (edgePadding !== edgePaddingTem || gutter !== gutterTem) {\n innerWrapper.style.cssText = getInnerWrapperStyles(edgePadding, gutter, fixedWidth, speed, autoHeight);\n }\n\n if (horizontal) {\n // container styles\n if (carousel) {\n container.style.width = getContainerWidth(fixedWidth, gutter, items);\n }\n\n // slide styles\n var str = getSlideWidthStyle(fixedWidth, gutter, items) +\n getSlideGutterStyle(gutter);\n\n // remove the last line and\n // add new styles\n removeCSSRule(sheet, getCssRulesLength(sheet) - 1);\n addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet));\n }\n }\n\n // auto height\n if (autoHeight) { doAutoHeight(); }\n\n if (needContainerTransform) {\n doContainerTransformSilent();\n indexCached = index;\n }\n }\n\n if (bpChanged) { events.emit('newBreakpointEnd', info(e)); }\n }\n\n\n\n\n\n // === INITIALIZATION FUNCTIONS === //\n function getFreeze () {\n if (!fixedWidth && !autoWidth) {\n var a = center ? items - (items - 1) / 2 : items;\n return slideCount <= a;\n }\n\n var width = fixedWidth ? (fixedWidth + gutter) * slideCount : slidePositions[slideCount],\n vp = edgePadding ? viewport + edgePadding * 2 : viewport + gutter;\n\n if (center) {\n vp -= fixedWidth ? (viewport - fixedWidth) / 2 : (viewport - (slidePositions[index + 1] - slidePositions[index] - gutter)) / 2;\n }\n\n return width <= vp;\n }\n\n function setBreakpointZone () {\n breakpointZone = 0;\n for (var bp in responsive) {\n bp = parseInt(bp); // convert string to number\n if (windowWidth >= bp) { breakpointZone = bp; }\n }\n }\n\n // (slideBy, indexMin, indexMax) => index\n var updateIndex = (function () {\n return loop ?\n carousel ?\n // loop + carousel\n function () {\n var leftEdge = indexMin,\n rightEdge = indexMax;\n\n leftEdge += slideBy;\n rightEdge -= slideBy;\n\n // adjust edges when has edge paddings\n // or fixed-width slider with extra space on the right side\n if (edgePadding) {\n leftEdge += 1;\n rightEdge -= 1;\n } else if (fixedWidth) {\n if ((viewport + gutter)%(fixedWidth + gutter)) { rightEdge -= 1; }\n }\n\n if (cloneCount) {\n if (index > rightEdge) {\n index -= slideCount;\n } else if (index < leftEdge) {\n index += slideCount;\n }\n }\n } :\n // loop + gallery\n function() {\n if (index > indexMax) {\n while (index >= indexMin + slideCount) { index -= slideCount; }\n } else if (index < indexMin) {\n while (index <= indexMax - slideCount) { index += slideCount; }\n }\n } :\n // non-loop\n function() {\n index = Math.max(indexMin, Math.min(indexMax, index));\n };\n })();\n\n function disableUI () {\n if (!autoplay && autoplayButton) { hideElement(autoplayButton); }\n if (!nav && navContainer) { hideElement(navContainer); }\n if (!controls) {\n if (controlsContainer) {\n hideElement(controlsContainer);\n } else {\n if (prevButton) { hideElement(prevButton); }\n if (nextButton) { hideElement(nextButton); }\n }\n }\n }\n\n function enableUI () {\n if (autoplay && autoplayButton) { showElement(autoplayButton); }\n if (nav && navContainer) { showElement(navContainer); }\n if (controls) {\n if (controlsContainer) {\n showElement(controlsContainer);\n } else {\n if (prevButton) { showElement(prevButton); }\n if (nextButton) { showElement(nextButton); }\n }\n }\n }\n\n function freezeSlider () {\n if (frozen) { return; }\n\n // remove edge padding from inner wrapper\n if (edgePadding) { innerWrapper.style.margin = '0px'; }\n\n // add class tns-transparent to cloned slides\n if (cloneCount) {\n var str = 'tns-transparent';\n for (var i = cloneCount; i--;) {\n if (carousel) { addClass(slideItems[i], str); }\n addClass(slideItems[slideCountNew - i - 1], str);\n }\n }\n\n // update tools\n disableUI();\n\n frozen = true;\n }\n\n function unfreezeSlider () {\n if (!frozen) { return; }\n\n // restore edge padding for inner wrapper\n // for mordern browsers\n if (edgePadding && CSSMQ) { innerWrapper.style.margin = ''; }\n\n // remove class tns-transparent to cloned slides\n if (cloneCount) {\n var str = 'tns-transparent';\n for (var i = cloneCount; i--;) {\n if (carousel) { removeClass(slideItems[i], str); }\n removeClass(slideItems[slideCountNew - i - 1], str);\n }\n }\n\n // update tools\n enableUI();\n\n frozen = false;\n }\n\n function disableSlider () {\n if (disabled) { return; }\n\n sheet.disabled = true;\n container.className = container.className.replace(newContainerClasses.substring(1), '');\n removeAttrs(container, ['style']);\n if (loop) {\n for (var j = cloneCount; j--;) {\n if (carousel) { hideElement(slideItems[j]); }\n hideElement(slideItems[slideCountNew - j - 1]);\n }\n }\n\n // vertical slider\n if (!horizontal || !carousel) { removeAttrs(innerWrapper, ['style']); }\n\n // gallery\n if (!carousel) {\n for (var i = index, l = index + slideCount; i < l; i++) {\n var item = slideItems[i];\n removeAttrs(item, ['style']);\n removeClass(item, animateIn);\n removeClass(item, animateNormal);\n }\n }\n\n // update tools\n disableUI();\n\n disabled = true;\n }\n\n function enableSlider () {\n if (!disabled) { return; }\n\n sheet.disabled = false;\n container.className += newContainerClasses;\n doContainerTransformSilent();\n\n if (loop) {\n for (var j = cloneCount; j--;) {\n if (carousel) { showElement(slideItems[j]); }\n showElement(slideItems[slideCountNew - j - 1]);\n }\n }\n\n // gallery\n if (!carousel) {\n for (var i = index, l = index + slideCount; i < l; i++) {\n var item = slideItems[i],\n classN = i < index + items ? animateIn : animateNormal;\n item.style.left = (i - index) * 100 / items + '%';\n addClass(item, classN);\n }\n }\n\n // update tools\n enableUI();\n\n disabled = false;\n }\n\n function updateLiveRegion () {\n var str = getLiveRegionStr();\n if (liveregionCurrent.innerHTML !== str) { liveregionCurrent.innerHTML = str; }\n }\n\n function getLiveRegionStr () {\n var arr = getVisibleSlideRange(),\n start = arr[0] + 1,\n end = arr[1] + 1;\n return start === end ? start + '' : start + ' to ' + end;\n }\n\n function getVisibleSlideRange (val) {\n if (val == null) { val = getContainerTransformValue(); }\n var start = index, end, rangestart, rangeend;\n\n // get range start, range end for autoWidth and fixedWidth\n if (center || edgePadding) {\n if (autoWidth || fixedWidth) {\n rangestart = - (parseFloat(val) + edgePadding);\n rangeend = rangestart + viewport + edgePadding * 2;\n }\n } else {\n if (autoWidth) {\n rangestart = slidePositions[index];\n rangeend = rangestart + viewport;\n }\n }\n\n // get start, end\n // - check auto width\n if (autoWidth) {\n slidePositions.forEach(function(point, i) {\n if (i < slideCountNew) {\n if ((center || edgePadding) && point <= rangestart + 0.5) { start = i; }\n if (rangeend - point >= 0.5) { end = i; }\n }\n });\n\n // - check percentage width, fixed width\n } else {\n\n if (fixedWidth) {\n var cell = fixedWidth + gutter;\n if (center || edgePadding) {\n start = Math.floor(rangestart/cell);\n end = Math.ceil(rangeend/cell - 1);\n } else {\n end = start + Math.ceil(viewport/cell) - 1;\n }\n\n } else {\n if (center || edgePadding) {\n var a = items - 1;\n if (center) {\n start -= a / 2;\n end = index + a / 2;\n } else {\n end = index + a;\n }\n\n if (edgePadding) {\n var b = edgePadding * items / viewport;\n start -= b;\n end += b;\n }\n\n start = Math.floor(start);\n end = Math.ceil(end);\n } else {\n end = start + items - 1;\n }\n }\n\n start = Math.max(start, 0);\n end = Math.min(end, slideCountNew - 1);\n }\n\n return [start, end];\n }\n\n function doLazyLoad () {\n if (lazyload && !disable) {\n var arg = getVisibleSlideRange();\n arg.push(lazyloadSelector);\n\n getImageArray.apply(null, arg).forEach(function (img) {\n if (!hasClass(img, imgCompleteClass)) {\n // stop propagation transitionend event to container\n var eve = {};\n eve[TRANSITIONEND] = function (e) { e.stopPropagation(); };\n addEvents(img, eve);\n\n addEvents(img, imgEvents);\n\n // update src\n img.src = getAttr(img, 'data-src');\n\n // update srcset\n var srcset = getAttr(img, 'data-srcset');\n if (srcset) { img.srcset = srcset; }\n\n addClass(img, 'loading');\n }\n });\n }\n }\n\n function onImgLoaded (e) {\n imgLoaded(getTarget(e));\n }\n\n function onImgFailed (e) {\n imgFailed(getTarget(e));\n }\n\n function imgLoaded (img) {\n addClass(img, 'loaded');\n imgCompleted(img);\n }\n\n function imgFailed (img) {\n addClass(img, 'failed');\n imgCompleted(img);\n }\n\n function imgCompleted (img) {\n addClass(img, imgCompleteClass);\n removeClass(img, 'loading');\n removeEvents(img, imgEvents);\n }\n\n function getImageArray (start, end, imgSelector) {\n var imgs = [];\n if (!imgSelector) { imgSelector = 'img'; }\n\n while (start <= end) {\n forEach(slideItems[start].querySelectorAll(imgSelector), function (img) { imgs.push(img); });\n start++;\n }\n\n return imgs;\n }\n\n // check if all visible images are loaded\n // and update container height if it's done\n function doAutoHeight () {\n var imgs = getImageArray.apply(null, getVisibleSlideRange());\n raf(function(){ imgsLoadedCheck(imgs, updateInnerWrapperHeight); });\n }\n\n function imgsLoadedCheck (imgs, cb) {\n // execute callback function if all images are complete\n if (imgsComplete) { return cb(); }\n\n // check image classes\n imgs.forEach(function (img, index) {\n if (!lazyload && img.complete) { imgCompleted(img); } // Check image.complete\n if (hasClass(img, imgCompleteClass)) { imgs.splice(index, 1); }\n });\n\n // execute callback function if selected images are all complete\n if (!imgs.length) { return cb(); }\n\n // otherwise execute this functiona again\n raf(function(){ imgsLoadedCheck(imgs, cb); });\n }\n\n function additionalUpdates () {\n doLazyLoad();\n updateSlideStatus();\n updateLiveRegion();\n updateControlsStatus();\n updateNavStatus();\n }\n\n\n function update_carousel_transition_duration () {\n if (carousel && autoHeight) {\n middleWrapper.style[TRANSITIONDURATION] = speed / 1000 + 's';\n }\n }\n\n function getMaxSlideHeight (slideStart, slideRange) {\n var heights = [];\n for (var i = slideStart, l = Math.min(slideStart + slideRange, slideCountNew); i < l; i++) {\n heights.push(slideItems[i].offsetHeight);\n }\n\n return Math.max.apply(null, heights);\n }\n\n // update inner wrapper height\n // 1. get the max-height of the visible slides\n // 2. set transitionDuration to speed\n // 3. update inner wrapper height to max-height\n // 4. set transitionDuration to 0s after transition done\n function updateInnerWrapperHeight () {\n var maxHeight = autoHeight ? getMaxSlideHeight(index, items) : getMaxSlideHeight(cloneCount, slideCount),\n wp = middleWrapper ? middleWrapper : innerWrapper;\n\n if (wp.style.height !== maxHeight) { wp.style.height = maxHeight + 'px'; }\n }\n\n // get the distance from the top edge of the first slide to each slide\n // (init) => slidePositions\n function setSlidePositions () {\n slidePositions = [0];\n var attr = horizontal ? 'left' : 'top',\n attr2 = horizontal ? 'right' : 'bottom',\n base = slideItems[0].getBoundingClientRect()[attr];\n\n forEach(slideItems, function(item, i) {\n // skip the first slide\n if (i) { slidePositions.push(item.getBoundingClientRect()[attr] - base); }\n // add the end edge\n if (i === slideCountNew - 1) { slidePositions.push(item.getBoundingClientRect()[attr2] - base); }\n });\n }\n\n // update slide\n function updateSlideStatus () {\n var range = getVisibleSlideRange(),\n start = range[0],\n end = range[1];\n\n forEach(slideItems, function(item, i) {\n // show slides\n if (i >= start && i <= end) {\n if (hasAttr(item, 'aria-hidden')) {\n removeAttrs(item, ['aria-hidden', 'tabindex']);\n addClass(item, slideActiveClass);\n }\n // hide slides\n } else {\n if (!hasAttr(item, 'aria-hidden')) {\n setAttrs(item, {\n 'aria-hidden': 'true',\n 'tabindex': '-1'\n });\n removeClass(item, slideActiveClass);\n }\n }\n });\n }\n\n // gallery: update slide position\n function updateGallerySlidePositions () {\n var l = index + Math.min(slideCount, items);\n for (var i = slideCountNew; i--;) {\n var item = slideItems[i];\n\n if (i >= index && i < l) {\n // add transitions to visible slides when adjusting their positions\n addClass(item, 'tns-moving');\n\n item.style.left = (i - index) * 100 / items + '%';\n addClass(item, animateIn);\n removeClass(item, animateNormal);\n } else if (item.style.left) {\n item.style.left = '';\n addClass(item, animateNormal);\n removeClass(item, animateIn);\n }\n\n // remove outlet animation\n removeClass(item, animateOut);\n }\n\n // removing '.tns-moving'\n setTimeout(function() {\n forEach(slideItems, function(el) {\n removeClass(el, 'tns-moving');\n });\n }, 300);\n }\n\n // set tabindex on Nav\n function updateNavStatus () {\n // get current nav\n if (nav) {\n navCurrentIndex = navClicked >= 0 ? navClicked : getCurrentNavIndex();\n navClicked = -1;\n\n if (navCurrentIndex !== navCurrentIndexCached) {\n var navPrev = navItems[navCurrentIndexCached],\n navCurrent = navItems[navCurrentIndex];\n\n setAttrs(navPrev, {\n 'tabindex': '-1',\n 'aria-label': navStr + (navCurrentIndexCached + 1)\n });\n removeClass(navPrev, navActiveClass);\n\n setAttrs(navCurrent, {'aria-label': navStr + (navCurrentIndex + 1) + navStrCurrent});\n removeAttrs(navCurrent, 'tabindex');\n addClass(navCurrent, navActiveClass);\n\n navCurrentIndexCached = navCurrentIndex;\n }\n }\n }\n\n function getLowerCaseNodeName (el) {\n return el.nodeName.toLowerCase();\n }\n\n function isButton (el) {\n return getLowerCaseNodeName(el) === 'button';\n }\n\n function isAriaDisabled (el) {\n return el.getAttribute('aria-disabled') === 'true';\n }\n\n function disEnableElement (isButton, el, val) {\n if (isButton) {\n el.disabled = val;\n } else {\n el.setAttribute('aria-disabled', val.toString());\n }\n }\n\n // set 'disabled' to true on controls when reach the edges\n function updateControlsStatus () {\n if (!controls || rewind || loop) { return; }\n\n var prevDisabled = (prevIsButton) ? prevButton.disabled : isAriaDisabled(prevButton),\n nextDisabled = (nextIsButton) ? nextButton.disabled : isAriaDisabled(nextButton),\n disablePrev = (index <= indexMin) ? true : false,\n disableNext = (!rewind && index >= indexMax) ? true : false;\n\n if (disablePrev && !prevDisabled) {\n disEnableElement(prevIsButton, prevButton, true);\n }\n if (!disablePrev && prevDisabled) {\n disEnableElement(prevIsButton, prevButton, false);\n }\n if (disableNext && !nextDisabled) {\n disEnableElement(nextIsButton, nextButton, true);\n }\n if (!disableNext && nextDisabled) {\n disEnableElement(nextIsButton, nextButton, false);\n }\n }\n\n // set duration\n function resetDuration (el, str) {\n if (TRANSITIONDURATION) { el.style[TRANSITIONDURATION] = str; }\n }\n\n function getSliderWidth () {\n return fixedWidth ? (fixedWidth + gutter) * slideCountNew : slidePositions[slideCountNew];\n }\n\n function getCenterGap (num) {\n if (num == null) { num = index; }\n\n var gap = edgePadding ? gutter : 0;\n return autoWidth ? ((viewport - gap) - (slidePositions[num + 1] - slidePositions[num] - gutter))/2 :\n fixedWidth ? (viewport - fixedWidth) / 2 :\n (items - 1) / 2;\n }\n\n function getRightBoundary () {\n var gap = edgePadding ? gutter : 0,\n result = (viewport + gap) - getSliderWidth();\n\n if (center && !loop) {\n result = fixedWidth ? - (fixedWidth + gutter) * (slideCountNew - 1) - getCenterGap() :\n getCenterGap(slideCountNew - 1) - slidePositions[slideCountNew - 1];\n }\n if (result > 0) { result = 0; }\n\n return result;\n }\n\n function getContainerTransformValue (num) {\n if (num == null) { num = index; }\n\n var val;\n if (horizontal && !autoWidth) {\n if (fixedWidth) {\n val = - (fixedWidth + gutter) * num;\n if (center) { val += getCenterGap(); }\n } else {\n var denominator = TRANSFORM ? slideCountNew : items;\n if (center) { num -= getCenterGap(); }\n val = - num * 100 / denominator;\n }\n } else {\n val = - slidePositions[num];\n if (center && autoWidth) {\n val += getCenterGap();\n }\n }\n\n if (hasRightDeadZone) { val = Math.max(val, rightBoundary); }\n\n val += (horizontal && !autoWidth && !fixedWidth) ? '%' : 'px';\n\n return val;\n }\n\n function doContainerTransformSilent (val) {\n resetDuration(container, '0s');\n doContainerTransform(val);\n }\n\n function doContainerTransform (val) {\n if (val == null) { val = getContainerTransformValue(); }\n if (textDirection === 'rtl' && val.charAt(0) === '-') {\n val = val.substr(1);\n }\n container.style[transformAttr] = transformPrefix + val + transformPostfix;\n }\n\n function animateSlide (number, classOut, classIn, isOut) {\n var l = number + items;\n if (!loop) { l = Math.min(l, slideCountNew); }\n\n for (var i = number; i < l; i++) {\n var item = slideItems[i];\n\n // set item positions\n if (!isOut) { item.style.left = (i - index) * 100 / items + '%'; }\n\n if (animateDelay && TRANSITIONDELAY) {\n item.style[TRANSITIONDELAY] = item.style[ANIMATIONDELAY] = animateDelay * (i - number) / 1000 + 's';\n }\n removeClass(item, classOut);\n addClass(item, classIn);\n\n if (isOut) { slideItemsOut.push(item); }\n }\n }\n\n // make transfer after click/drag:\n // 1. change 'transform' property for mordern browsers\n // 2. change 'left' property for legacy browsers\n var transformCore = (function () {\n return carousel ?\n function () {\n resetDuration(container, '');\n if (TRANSITIONDURATION || !speed) {\n // for morden browsers with non-zero duration or\n // zero duration for all browsers\n doContainerTransform();\n // run fallback function manually\n // when duration is 0 / container is hidden\n if (!speed || !isVisible(container)) { onTransitionEnd(); }\n\n } else {\n // for old browser with non-zero duration\n jsTransform(container, transformAttr, transformPrefix, transformPostfix, getContainerTransformValue(), speed, onTransitionEnd);\n }\n\n if (!horizontal) { updateContentWrapperHeight(); }\n } :\n function () {\n slideItemsOut = [];\n\n var eve = {};\n eve[TRANSITIONEND] = eve[ANIMATIONEND] = onTransitionEnd;\n removeEvents(slideItems[indexCached], eve);\n addEvents(slideItems[index], eve);\n\n animateSlide(indexCached, animateIn, animateOut, true);\n animateSlide(index, animateNormal, animateIn);\n\n // run fallback function manually\n // when transition or animation not supported / duration is 0\n if (!TRANSITIONEND || !ANIMATIONEND || !speed || !isVisible(container)) { onTransitionEnd(); }\n };\n })();\n\n function render (e, sliderMoved) {\n if (updateIndexBeforeTransform) { updateIndex(); }\n\n // render when slider was moved (touch or drag) even though index may not change\n if (index !== indexCached || sliderMoved) {\n // events\n events.emit('indexChanged', info());\n events.emit('transitionStart', info());\n if (autoHeight) { doAutoHeight(); }\n\n // pause autoplay when click or keydown from user\n if (animating && e && ['click', 'keydown'].indexOf(e.type) >= 0) { stopAutoplay(); }\n\n running = true;\n transformCore();\n }\n }\n\n /*\n * Transfer prefixed properties to the same format\n * CSS: -Webkit-Transform => webkittransform\n * JS: WebkitTransform => webkittransform\n * @param {string} str - property\n *\n */\n function strTrans (str) {\n return str.toLowerCase().replace(/-/g, '');\n }\n\n // AFTER TRANSFORM\n // Things need to be done after a transfer:\n // 1. check index\n // 2. add classes to visible slide\n // 3. disable controls buttons when reach the first/last slide in non-loop slider\n // 4. update nav status\n // 5. lazyload images\n // 6. update container height\n function onTransitionEnd (event) {\n // check running on gallery mode\n // make sure trantionend/animationend events run only once\n if (carousel || running) {\n events.emit('transitionEnd', info(event));\n\n if (!carousel && slideItemsOut.length > 0) {\n for (var i = 0; i < slideItemsOut.length; i++) {\n var item = slideItemsOut[i];\n // set item positions\n item.style.left = '';\n\n if (ANIMATIONDELAY && TRANSITIONDELAY) {\n item.style[ANIMATIONDELAY] = '';\n item.style[TRANSITIONDELAY] = '';\n }\n removeClass(item, animateOut);\n addClass(item, animateNormal);\n }\n }\n\n /* update slides, nav, controls after checking ...\n * => legacy browsers who don't support 'event'\n * have to check event first, otherwise event.target will cause an error\n * => or 'gallery' mode:\n * + event target is slide item\n * => or 'carousel' mode:\n * + event target is container,\n * + event.property is the same with transform attribute\n */\n if (!event ||\n !carousel && event.target.parentNode === container ||\n event.target === container && strTrans(event.propertyName) === strTrans(transformAttr)) {\n\n if (!updateIndexBeforeTransform) {\n var indexTem = index;\n updateIndex();\n if (index !== indexTem) {\n events.emit('indexChanged', info());\n\n doContainerTransformSilent();\n }\n }\n\n if (nested === 'inner') { events.emit('innerLoaded', info()); }\n running = false;\n indexCached = index;\n }\n }\n\n }\n\n // # ACTIONS\n function goTo (targetIndex, e) {\n if (freeze) { return; }\n\n // prev slideBy\n if (targetIndex === 'prev') {\n onControlsClick(e, -1);\n\n // next slideBy\n } else if (targetIndex === 'next') {\n onControlsClick(e, 1);\n\n // go to exact slide\n } else {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n\n var absIndex = getAbsIndex(),\n indexGap = 0;\n\n if (targetIndex === 'first') {\n indexGap = - absIndex;\n } else if (targetIndex === 'last') {\n indexGap = carousel ? slideCount - items - absIndex : slideCount - 1 - absIndex;\n } else {\n if (typeof targetIndex !== 'number') { targetIndex = parseInt(targetIndex); }\n\n if (!isNaN(targetIndex)) {\n // from directly called goTo function\n if (!e) { targetIndex = Math.max(0, Math.min(slideCount - 1, targetIndex)); }\n\n indexGap = targetIndex - absIndex;\n }\n }\n\n // gallery: make sure new page won't overlap with current page\n if (!carousel && indexGap && Math.abs(indexGap) < items) {\n var factor = indexGap > 0 ? 1 : -1;\n indexGap += (index + indexGap - slideCount) >= indexMin ? slideCount * factor : slideCount * 2 * factor * -1;\n }\n\n index += indexGap;\n\n // make sure index is in range\n if (carousel && loop) {\n if (index < indexMin) { index += slideCount; }\n if (index > indexMax) { index -= slideCount; }\n }\n\n // if index is changed, start rendering\n if (getAbsIndex(index) !== getAbsIndex(indexCached)) {\n render(e);\n }\n\n }\n }\n\n // on controls click\n function onControlsClick (e, dir) {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n var passEventObject;\n\n if (!dir) {\n e = getEvent(e);\n var target = getTarget(e);\n\n while (target !== controlsContainer && [prevButton, nextButton].indexOf(target) < 0) { target = target.parentNode; }\n\n var targetIn = [prevButton, nextButton].indexOf(target);\n if (targetIn >= 0) {\n passEventObject = true;\n dir = targetIn === 0 ? -1 : 1;\n }\n }\n\n if (rewind) {\n if (index === indexMin && dir === -1) {\n goTo('last', e);\n return;\n } else if (index === indexMax && dir === 1) {\n goTo('first', e);\n return;\n }\n }\n\n if (dir) {\n index += slideBy * dir;\n if (autoWidth) { index = Math.floor(index); }\n // pass e when click control buttons or keydown\n render((passEventObject || (e && e.type === 'keydown')) ? e : null);\n }\n }\n\n // on nav click\n function onNavClick (e) {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n\n e = getEvent(e);\n var target = getTarget(e), navIndex;\n\n // find the clicked nav item\n while (target !== navContainer && !hasAttr(target, 'data-nav')) { target = target.parentNode; }\n if (hasAttr(target, 'data-nav')) {\n var navIndex = navClicked = Number(getAttr(target, 'data-nav')),\n targetIndexBase = fixedWidth || autoWidth ? navIndex * slideCount / pages : navIndex * items,\n targetIndex = navAsThumbnails ? navIndex : Math.min(Math.ceil(targetIndexBase), slideCount - 1);\n goTo(targetIndex, e);\n\n if (navCurrentIndex === navIndex) {\n if (animating) { stopAutoplay(); }\n navClicked = -1; // reset navClicked\n }\n }\n }\n\n // autoplay functions\n function setAutoplayTimer () {\n autoplayTimer = setInterval(function () {\n onControlsClick(null, autoplayDirection);\n }, autoplayTimeout);\n\n animating = true;\n }\n\n function stopAutoplayTimer () {\n clearInterval(autoplayTimer);\n animating = false;\n }\n\n function updateAutoplayButton (action, txt) {\n setAttrs(autoplayButton, {'data-action': action});\n autoplayButton.innerHTML = autoplayHtmlStrings[0] + action + autoplayHtmlStrings[1] + txt;\n }\n\n function startAutoplay () {\n setAutoplayTimer();\n if (autoplayButton) { updateAutoplayButton('stop', autoplayText[1]); }\n }\n\n function stopAutoplay () {\n stopAutoplayTimer();\n if (autoplayButton) { updateAutoplayButton('start', autoplayText[0]); }\n }\n\n // programaitcally play/pause the slider\n function play () {\n if (autoplay && !animating) {\n startAutoplay();\n autoplayUserPaused = false;\n }\n }\n function pause () {\n if (animating) {\n stopAutoplay();\n autoplayUserPaused = true;\n }\n }\n\n function toggleAutoplay () {\n if (animating) {\n stopAutoplay();\n autoplayUserPaused = true;\n } else {\n startAutoplay();\n autoplayUserPaused = false;\n }\n }\n\n function onVisibilityChange () {\n if (doc.hidden) {\n if (animating) {\n stopAutoplayTimer();\n autoplayVisibilityPaused = true;\n }\n } else if (autoplayVisibilityPaused) {\n setAutoplayTimer();\n autoplayVisibilityPaused = false;\n }\n }\n\n function mouseoverPause () {\n if (animating) {\n stopAutoplayTimer();\n autoplayHoverPaused = true;\n }\n }\n\n function mouseoutRestart () {\n if (autoplayHoverPaused) {\n setAutoplayTimer();\n autoplayHoverPaused = false;\n }\n }\n\n // keydown events on document\n function onDocumentKeydown (e) {\n e = getEvent(e);\n var keyIndex = [KEYS.LEFT, KEYS.RIGHT].indexOf(e.keyCode);\n\n if (keyIndex >= 0) {\n onControlsClick(e, keyIndex === 0 ? -1 : 1);\n }\n }\n\n // on key control\n function onControlsKeydown (e) {\n e = getEvent(e);\n var keyIndex = [KEYS.LEFT, KEYS.RIGHT].indexOf(e.keyCode);\n\n if (keyIndex >= 0) {\n if (keyIndex === 0) {\n if (!prevButton.disabled) { onControlsClick(e, -1); }\n } else if (!nextButton.disabled) {\n onControlsClick(e, 1);\n }\n }\n }\n\n // set focus\n function setFocus (el) {\n el.focus();\n }\n\n // on key nav\n function onNavKeydown (e) {\n e = getEvent(e);\n var curElement = doc.activeElement;\n if (!hasAttr(curElement, 'data-nav')) { return; }\n\n // var code = e.keyCode,\n var keyIndex = [KEYS.LEFT, KEYS.RIGHT, KEYS.ENTER, KEYS.SPACE].indexOf(e.keyCode),\n navIndex = Number(getAttr(curElement, 'data-nav'));\n\n if (keyIndex >= 0) {\n if (keyIndex === 0) {\n if (navIndex > 0) { setFocus(navItems[navIndex - 1]); }\n } else if (keyIndex === 1) {\n if (navIndex < pages - 1) { setFocus(navItems[navIndex + 1]); }\n } else {\n navClicked = navIndex;\n goTo(navIndex, e);\n }\n }\n }\n\n function getEvent (e) {\n e = e || win.event;\n return isTouchEvent(e) ? e.changedTouches[0] : e;\n }\n function getTarget (e) {\n return e.target || win.event.srcElement;\n }\n\n function isTouchEvent (e) {\n return e.type.indexOf('touch') >= 0;\n }\n\n function preventDefaultBehavior (e) {\n e.preventDefault ? e.preventDefault() : e.returnValue = false;\n }\n\n function getMoveDirectionExpected () {\n return getTouchDirection(toDegree(lastPosition.y - initPosition.y, lastPosition.x - initPosition.x), swipeAngle) === options.axis;\n }\n\n function onPanStart (e) {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n\n if (autoplay && animating) { stopAutoplayTimer(); }\n\n panStart = true;\n if (rafIndex) {\n caf(rafIndex);\n rafIndex = null;\n }\n\n var $ = getEvent(e);\n events.emit(isTouchEvent(e) ? 'touchStart' : 'dragStart', info(e));\n\n if (!isTouchEvent(e) && ['img', 'a'].indexOf(getLowerCaseNodeName(getTarget(e))) >= 0) {\n preventDefaultBehavior(e);\n }\n\n lastPosition.x = initPosition.x = $.clientX;\n lastPosition.y = initPosition.y = $.clientY;\n if (carousel) {\n translateInit = parseFloat(container.style[transformAttr].replace(transformPrefix, ''));\n resetDuration(container, '0s');\n }\n }\n\n function onPanMove (e) {\n if (panStart) {\n var $ = getEvent(e);\n lastPosition.x = $.clientX;\n lastPosition.y = $.clientY;\n\n if (carousel) {\n if (!rafIndex) { rafIndex = raf(function(){ panUpdate(e); }); }\n } else {\n if (moveDirectionExpected === '?') { moveDirectionExpected = getMoveDirectionExpected(); }\n if (moveDirectionExpected) { preventScroll = true; }\n }\n\n if ((typeof e.cancelable !== 'boolean' || e.cancelable) && preventScroll) {\n e.preventDefault();\n }\n }\n }\n\n function panUpdate (e) {\n if (!moveDirectionExpected) {\n panStart = false;\n return;\n }\n caf(rafIndex);\n if (panStart) { rafIndex = raf(function(){ panUpdate(e); }); }\n\n if (moveDirectionExpected === '?') { moveDirectionExpected = getMoveDirectionExpected(); }\n if (moveDirectionExpected) {\n if (!preventScroll && isTouchEvent(e)) { preventScroll = true; }\n\n try {\n if (e.type) { events.emit(isTouchEvent(e) ? 'touchMove' : 'dragMove', info(e)); }\n } catch(err) {}\n\n var x = translateInit,\n dist = getDist(lastPosition, initPosition);\n if (!horizontal || fixedWidth || autoWidth) {\n x += dist;\n x += 'px';\n } else {\n var percentageX = TRANSFORM ? dist * items * 100 / ((viewport + gutter) * slideCountNew): dist * 100 / (viewport + gutter);\n x += percentageX;\n x += '%';\n }\n\n container.style[transformAttr] = transformPrefix + x + transformPostfix;\n }\n }\n\n function onPanEnd (e) {\n if (panStart) {\n if (rafIndex) {\n caf(rafIndex);\n rafIndex = null;\n }\n if (carousel) { resetDuration(container, ''); }\n panStart = false;\n\n var $ = getEvent(e);\n lastPosition.x = $.clientX;\n lastPosition.y = $.clientY;\n var dist = getDist(lastPosition, initPosition);\n\n if (Math.abs(dist)) {\n // drag vs click\n if (!isTouchEvent(e)) {\n // prevent \"click\"\n var target = getTarget(e);\n addEvents(target, {'click': function preventClick (e) {\n preventDefaultBehavior(e);\n removeEvents(target, {'click': preventClick});\n }});\n }\n\n if (carousel) {\n rafIndex = raf(function() {\n if (horizontal && !autoWidth) {\n var indexMoved = - dist * items / (viewport + gutter);\n indexMoved = dist > 0 ? Math.floor(indexMoved) : Math.ceil(indexMoved);\n if (textDirection === 'rtl') { \n index += indexMoved * -1;\n } else {\n index += indexMoved;\n }\n } else {\n var moved = - (translateInit + dist);\n if (moved <= 0) {\n index = indexMin;\n } else if (moved >= slidePositions[slideCountNew - 1]) {\n index = indexMax;\n } else {\n var i = 0;\n while (i < slideCountNew && moved >= slidePositions[i]) {\n index = i;\n if (moved > slidePositions[i] && dist < 0) { index += 1; }\n i++;\n }\n }\n }\n\n render(e, dist);\n events.emit(isTouchEvent(e) ? 'touchEnd' : 'dragEnd', info(e));\n });\n } else {\n if (moveDirectionExpected) {\n onControlsClick(e, dist > 0 ? -1 : 1);\n }\n }\n }\n }\n\n // reset\n if (options.preventScrollOnTouch === 'auto') { preventScroll = false; }\n if (swipeAngle) { moveDirectionExpected = '?'; }\n if (autoplay && !animating) { setAutoplayTimer(); }\n }\n\n // === RESIZE FUNCTIONS === //\n // (slidePositions, index, items) => vertical_conentWrapper.height\n function updateContentWrapperHeight () {\n var wp = middleWrapper ? middleWrapper : innerWrapper;\n wp.style.height = slidePositions[index + items] - slidePositions[index] + 'px';\n }\n\n function getPages () {\n var rough = fixedWidth ? (fixedWidth + gutter) * slideCount / viewport : slideCount / items;\n return Math.min(Math.ceil(rough), slideCount);\n }\n\n /*\n * 1. update visible nav items list\n * 2. add \"hidden\" attributes to previous visible nav items\n * 3. remove \"hidden\" attrubutes to new visible nav items\n */\n function updateNavVisibility () {\n if (!nav || navAsThumbnails) { return; }\n\n if (pages !== pagesCached) {\n var min = pagesCached,\n max = pages,\n fn = showElement;\n\n if (pagesCached > pages) {\n min = pages;\n max = pagesCached;\n fn = hideElement;\n }\n\n while (min < max) {\n fn(navItems[min]);\n min++;\n }\n\n // cache pages\n pagesCached = pages;\n }\n }\n\n function info (e) {\n return {\n container: container,\n slideItems: slideItems,\n navContainer: navContainer,\n navItems: navItems,\n controlsContainer: controlsContainer,\n hasControls: hasControls,\n prevButton: prevButton,\n nextButton: nextButton,\n items: items,\n slideBy: slideBy,\n cloneCount: cloneCount,\n slideCount: slideCount,\n slideCountNew: slideCountNew,\n index: index,\n indexCached: indexCached,\n displayIndex: getCurrentSlide(),\n navCurrentIndex: navCurrentIndex,\n navCurrentIndexCached: navCurrentIndexCached,\n pages: pages,\n pagesCached: pagesCached,\n sheet: sheet,\n isOn: isOn,\n event: e || {},\n };\n }\n\n return {\n version: '2.9.3',\n getInfo: info,\n events: events,\n goTo: goTo,\n play: play,\n pause: pause,\n isOn: isOn,\n updateSliderHeight: updateInnerWrapperHeight,\n refresh: initSliderTransform,\n destroy: destroy,\n rebuild: function() {\n return tns(extend(options, optionsElements));\n }\n };\n};\n\nreturn tns;\n})();\n\nexport default tns;","import tns from 'tiny-slider'\n\nexport default class {\n connect() {\n var $container, slider;\n\n function init() {\n var data = $container.data();\n var sidebar = $container.data().sidebar;\n var items = data.browseGroupCategoriesCount;\n var dir = $('html').attr('dir');\n var controls = $container.parent().find('.browse-group-categories-controls')[0];\n\n slider = tns({\n container: $container[0],\n controlsContainer: controls,\n loop: false,\n nav: false,\n items: 1,\n slideBy: 'page',\n textDirection: dir,\n responsive: {\n 576: {\n items: itemCount(items, sidebar)\n }\n }\n });\n }\n\n // Destroy the slider instance, as tns will change the dom elements, causing some issues with turbolinks\n function setupDestroy() {\n document.addEventListener('turbolinks:before-cache', function() {\n if (slider && slider.destroy) {\n slider.destroy();\n }\n });\n }\n\n function itemCount(items, sidebar) {\n if (items < 3) {\n return items;\n }\n return sidebar ? 3 : 4;\n }\n\n return $('[data-browse-group-categories-carousel]').each(function() {\n $container = $(this);\n init();\n setupDestroy();\n });\n }\n}\n","export default class {\n connect() {\n if ($.fn.carousel) {\n $('.carousel').carousel();\n }\n }\n}\n","export default class {\n connect() {\n var $clearBtn = $('.btn-reset');\n var $input = $clearBtn.prev('#browse_q');\n var btnCheck = function(){\n if ($input.val() !== '') {\n $clearBtn.css('display', 'block');\n } else {\n $clearBtn.css('display', 'none');\n }\n };\n\n btnCheck();\n $input.on('keyup', function() {\n btnCheck();\n });\n\n $clearBtn.on('click', function(event) {\n event.preventDefault();\n $input.val('');\n });\n }\n}\n","import OpenSeadragon from 'openseadragon';\n\nexport default class {\n connect() {\n $('.zpr-link').on('click', function() {\n var modalDialog = $('#blacklight-modal .modal-dialog');\n var modalContent = modalDialog.find('.modal-content')\n modalDialog.removeClass('modal-lg')\n modalDialog.addClass('modal-xl')\n modalContent.html('<div id=\"osd-modal-container\"></div>');\n var controls = `<div class=\"controls d-flex justify-content-center justify-content-md-end\">\n <div class=\"custom-close-controls pr-3 pe-3 pt-3\">\n <button type=\"button\" class=\"btn btn-dark\" data-dismiss=\"modal\" data-bs-dismiss=\"modal\" aria-hidden=\"true\">${Spotlight.ZprLinks.close}</button>\n </div>\n <div class=\"zoom-controls mb-3 mr-md-3 me-md-3\">\n <button id=\"osd-zoom-in\" type=\"button\" class=\"btn btn-dark\">${Spotlight.ZprLinks.zoomIn}</button>\n <button id=\"osd-zoom-out\" type=\"button\" class=\"btn btn-dark\">${Spotlight.ZprLinks.zoomOut}</button>\n </div>\n <div id=\"empty-div-required-by-osd\"></div>\n </div>`\n\n $('#osd-modal-container').append('<div id=\"osd-div\"></div>');\n $('#osd-modal-container').append(controls);\n\n $('#blacklight-modal').modal('show');\n \n $('#blacklight-modal').one('hidden.bs.modal', function (event) {\n modalDialog.removeClass('modal-xl')\n modalDialog.addClass('modal-lg')\n });\n\n OpenSeadragon({\n id: 'osd-div',\n zoomInButton: \"osd-zoom-in\",\n zoomOutButton: \"osd-zoom-out\",\n // This is a hack where OpenSeadragon (if using mapped buttons) requires you\n // to map all of the buttons.\n homeButton: \"empty-div-required-by-osd\",\n fullPageButton: \"empty-div-required-by-osd\",\n nextButton: \"empty-div-required-by-osd\",\n previousButton: \"empty-div-required-by-osd\",\n tileSources: [$(this).data('iiif-tilesource')]\n })\n });\n }\n}\n","import BrowseGroupCateogries from 'spotlight/user/browse_group_categories'\nimport Carousel from 'spotlight/user/carousel'\nimport ClearFormButton from 'spotlight/user/clear_form_button'\nimport ZprLinks from 'spotlight/user/zpr_links'\n\nexport default class {\n connect() {\n new BrowseGroupCateogries().connect()\n new Carousel().connect()\n new ClearFormButton().connect()\n new ZprLinks().connect()\n }\n}\n","export default class {\n connect() {\n $(\"[data-action='add-another']\").on(\"click\", function(event) {\n event.preventDefault();\n\n var templateId = $(this).data('template-id');\n\n var template = document.querySelector('#' + templateId);\n var clone = document.importNode(template.content, true);\n\n var count = $(this).closest('.form-group').find('[name=\"' + $(clone).find('[name]').attr('name') + '\"]').length + 1;\n $(clone).find('[id]').each(function(index, el) {\n $(el).attr('id', $(el).attr('id') + '_' + String(count));\n });\n\n $(clone).find('[for]').each(function(index, el) {\n $(el).attr('for', $(el).attr('for') + '_' + String(count));\n });\n\n\n $(clone).insertBefore(this);\n });\n }\n}\n","export default class {\n connect() {\n $(\"[data-expanded-add-button]\").each((_i, el) => this.addExpandBehaviorToButton($(el)))\n }\n\n addExpandBehaviorToButton(button){\n var settings = {\n speed: (button.data('speed') || 450),\n animate_width: (button.data('animate_width') || 425)\n }\n var target = $(button.data('field-target'));\n var save = $(\"input[data-behavior='save']\", target);\n var cancel = $(\"input[data-behavior='cancel']\", target);\n var input = $(\"input[type='text']\", target);\n var original_width = button.outerWidth();\n var expanded = false;\n\n // Animate button open when the mouse enters or\n // the button is given focus (i.e. clicked/tabbed)\n button.on(\"mouseenter focus\", function(){\n expandButton();\n });\n\n // Don't allow blank titles\n save.on('click', function(){\n if ( inputEmpty() ) {\n return false;\n }\n });\n\n // Empty input and collapse\n // button on cancel click\n cancel.on('click', function(e){\n e.preventDefault();\n input.val('');\n collapseButton();\n });\n\n // Collapse the button on when\n // an empty input loses focus\n input.on(\"blur\", function(){\n if ( inputEmpty() ) {\n collapseButton();\n }\n });\n function expandButton(){\n // If this has not yet been expanded, recalculate original_width to \n // handle things that may have been originally hidden.\n if (!expanded) {\n original_width = button.outerWidth();\n }\n if(button.outerWidth() <= (original_width + 5)) {\n expanded = true;\n button.animate(\n {width: settings.animate_width + 'px'}, settings.speed, function(){\n target.show(0, function(){\n input.focus();\n // Set the button to auto width to make\n // sure it has room for any inputs\n button.width(\"auto\");\n // Explicitly set the width of the button\n // so the close animation works properly\n button.width(button.width());\n });\n }\n )\n }\n }\n function collapseButton(){\n target.hide();\n button.animate({width: original_width + 'px'}, settings.speed);\n }\n function inputEmpty(){\n return $.trim(input.val()) == \"\";\n }\n }\n}\n","export default class {\n connect() {\n // Add Select/Deselect all input behavior\n this.addCheckboxToggleBehavior();\n this.addEnableToggleBehavior();\n }\n \n // Add Select/Deselect all behavior for metadata field names for a given view e.g. Item details. \n addCheckboxToggleBehavior() {\n $(\"[data-behavior='metadata-select']\").each(function(){\n var selectCheckbox = $(this);\n var parentCell = selectCheckbox.parents(\"th\");\n var table = parentCell.closest(\"table\");\n var columnRows = $(\"tr td:nth-child(\" + (parentCell.index() + 1) + \")\", table);\n var checkboxes = $(\"input[type='checkbox']\", columnRows);\n updateSelectAllInput(selectCheckbox, columnRows);\n // Add the check/uncheck behavior to the select/deselect all checkbox\n selectCheckbox.on('click', function(e){\n var allChecked = allCheckboxesChecked(columnRows);\n columnRows.each(function(){\n $(\"input[type='checkbox']\", $(this)).prop('checked', !allChecked);\n });\n });\n // When a single checkbox is selected/unselected, the \"All\" checkbox should be updated accordingly.\n checkboxes.each(function(){\n $(this).on('change', function(){\n updateSelectAllInput(selectCheckbox, columnRows);\n });\n }); \n });\n\n // Check number of checkboxes against the number of checked\n // checkboxes to determine if all of them are checked or not\n function allCheckboxesChecked(elements) {\n return ($(\"input[type='checkbox']\", elements).length == $(\"input[type='checkbox']:checked\", elements).length)\n }\n\n // Check or uncheck the \"All\" checkbox for each view column, e.g. Item details, List, etc.\n function updateSelectAllInput(checkbox, elements) {\n if ( allCheckboxesChecked(elements) ) {\n checkbox.prop('checked', true);\n } else {\n checkbox.prop('checked', false);\n }\n }\n }\n \n addEnableToggleBehavior() {\n $(\"[data-behavior='enable-feature']\").each(function(){\n var checkbox = $(this);\n var target = $($(this).data('target'));\n\n checkbox.on('change', function() {\n if ($(this).is(':checked')) {\n target.find('input:checkbox').not(\"[data-behavior='enable-feature']\").prop('checked', true).attr('disabled', false);\n } else {\n target.find('input:checkbox').not(\"[data-behavior='enable-feature']\").prop('checked', false).attr('disabled', true);\n }\n });\n });\n }\n}","import Clipboard from 'clipboard';\n\nexport default class {\n connect() {\n new Clipboard('.copy-email-addresses');\n }\n}\n","export default class Iiif {\n constructor(manifestUrl, manifest) {\n this.manifestUrl = manifestUrl;\n this.manifest = manifest;\n }\n\n sequences() {\n var it = {};\n var context = this;\n it[Symbol.iterator] = function*() {\n for (let sequence of context.manifest.sequences) {\n yield sequence;\n };\n }\n return it;\n }\n\n canvases() {\n var it = {};\n var context = this;\n it[Symbol.iterator] = function*() {\n for (let sequence of context.sequences()) {\n for (let canvas of sequence.canvases) {\n yield canvas;\n }\n }\n }\n return it;\n }\n\n images() {\n var it = {};\n var context = this;\n it[Symbol.iterator] = function*() {\n for (let canvas of context.canvases()) {\n for (let image of canvas.images) {\n var iiifService = image.resource.service['@id'];\n yield {\n 'thumb': iiifService + '/full/!100,100/0/default.jpg',\n 'tilesource': iiifService + '/info.json',\n 'manifest': context.manifestUrl,\n 'canvasId': canvas['@id'],\n 'imageId': image['@id']\n };\n }\n }\n }\n return it;\n }\n\n imagesArray() {\n return Array.from(this.images())\n }\n}\n","import Iiif from 'spotlight/admin/iiif'\n\nexport function addImageSelector(input, panel, manifestUrl, initialize) {\n if (!manifestUrl) {\n showNonIiifAlert(input);\n return;\n }\n var cropper = input.data('iiifCropper');\n $.ajax(manifestUrl).done(\n function(manifest) {\n var iiifManifest = new Iiif(manifestUrl, manifest);\n\n var thumbs = iiifManifest.imagesArray();\n\n hideNonIiifAlert(input);\n\n if (initialize) {\n cropper.setIiifFields(thumbs[0]);\n panel.multiImageSelector(); // Clears out existing selector\n }\n\n if(thumbs.length > 1) {\n panel.show();\n panel.multiImageSelector(thumbs, function(selectorImage) {\n cropper.setIiifFields(selectorImage);\n }, cropper.iiifImageField.val());\n }\n }\n );\n}\n\nfunction showNonIiifAlert(input){\n input.parent().prev('[data-behavior=\"non-iiif-alert\"]').show();\n}\n\nfunction hideNonIiifAlert(input){\n input.parent().prev('[data-behavior=\"non-iiif-alert\"]').hide();\n}","import SirTrevor from \"sir-trevor\"\n\nconst Spotlight = function() {\n var buffer = [];\n return {\n onLoad: function(func) {\n buffer.push(func);\n },\n\n activate: function() {\n this.sirTrevorIcon = window.sirTrevorIcon;\n for(var i = 0; i < buffer.length; i++) {\n buffer[i].call();\n }\n },\n csrfToken: function () {\n return document.querySelector('meta[name=csrf-token]')?.content\n },\n ZprLinks: {\n close: \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\" width=\\\"24\\\"><path d=\\\"M0 0h24v24H0V0z\\\" fill=\\\"none\\\"/><path d=\\\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z\\\"/></svg>\",\n zoomIn: \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\" width=\\\"24\\\"><path d=\\\"M0 0h24v24H0V0z\\\" fill=\\\"none\\\"/><path d=\\\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14zm.5-7H9v2H7v1h2v2h1v-2h2V9h-2z\\\"/></svg>\\n\",\n zoomOut: \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\" width=\\\"24\\\"><path d=\\\"M0 0h24v24H0V0z\\\" fill=\\\"none\\\"/><path d=\\\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14zM7 9h5v1H7V9z\\\"/></svg>\\n\"\n }\n };\n}();\n\n// This allows us to configure Spotlight in app/views/layouts/base.html.erb\nwindow.Spotlight = Spotlight\nwindow.SirTrevor = SirTrevor\nexport default Spotlight\n","import { addImageSelector } from 'spotlight/admin/add_image_selector'\nimport Core from 'spotlight/core'\n\nexport default class Crop {\n constructor(cropArea, preserveAspectRatio = true) {\n this.cropArea = cropArea;\n this.cropArea.data('iiifCropper', this);\n // This element will also have the IIIF input elements contained\n // There may be multiple elements with data-cropper attributes, but\n // there should only one element with this data-cropper attribute value.\n this.cropSelector = '[data-cropper=\"' + cropArea.data('cropperKey') + '\"]';\n this.cropTool = $(this.cropSelector);\n // Exhibit and masthead cropping requires the ratio between image width and height\n // to be consistent, whereas item widget cropping allows any combination of \n // image width and height.\n this.preserveAspectRatio = preserveAspectRatio;\n // Get the IIIF input elements used to store/reference IIIF information\n this.inputPrefix = this.cropTool.data('input-prefix');\n this.iiifUrlField = this.iiifInputElement(this.inputPrefix, 'iiif_tilesource', this.cropTool);\n this.iiifRegionField = this.iiifInputElement(this.inputPrefix, 'iiif_region', this.cropTool);\n this.iiifManifestField = this.iiifInputElement(this.inputPrefix, 'iiif_manifest_url', this.cropTool);\n this.iiifCanvasField = this.iiifInputElement(this.inputPrefix, 'iiif_canvas_id', this.cropTool);\n this.iiifImageField = this.iiifInputElement(this.inputPrefix, 'iiif_image_id', this.cropTool);\n // Get the closest form element\n this.form = cropArea.closest('form');\n this.tileSource = null;\n }\n\n // Return the iiif input element based on the fieldname.\n // Multiple input fields with the same name on the page may be related \n // to a cropper. We thus need to pass in a parent element. \n iiifInputElement(inputPrefix, fieldName, inputParentElement) {\n return $('input[name=\"' + inputPrefix + '[' + fieldName + ']\"]', inputParentElement);\n }\n\n // Render the cropper environment and add hooks into the autocomplete and upload forms\n render() {\n this.setupAutoCompletes();\n this.setupAjaxFileUpload();\n this.setupExistingIiifCropper();\n }\n\n // Setup the cropper on page load if the field\n // that holds the IIIF url is populated\n setupExistingIiifCropper() {\n if(this.iiifUrlField.val() === '') {\n return;\n }\n\n this.addImageSelectorToExistingCropTool();\n this.setTileSource(this.iiifUrlField.val());\n }\n\n // Display the IIIF Cropper map with the current IIIF Layer (and cropbox, once the layer is available)\n setupIiifCropper() {\n this.loaded = false;\n\n this.renderCropperMap();\n\n if (this.imageLayer) {\n // Force a broken layer's container to be an element before removing.\n // Code in leaflet-iiif land calls delete on the image layer's container when removing,\n // which errors if there is an issue fetching the info.json and stops further necessary steps to execute.\n if(!this.imageLayer._container) {\n this.imageLayer._container = $('<div></div>');\n }\n this.cropperMap.removeLayer(this.imageLayer);\n }\n\n this.imageLayer = L.tileLayer.iiif(this.tileSource).addTo(this.cropperMap);\n\n var self = this;\n this.imageLayer.on('load', function() {\n if (!self.loaded) {\n var region = self.getCropRegion();\n self.positionIiifCropBox(region);\n self.loaded = true;\n }\n });\n\n this.cropArea.data('initiallyVisible', this.cropArea.is(':visible'));\n }\n\n // Get (or initialize) the current crop region from the form data\n getCropRegion() {\n var regionFieldValue = this.iiifRegionField.val();\n if(!regionFieldValue || regionFieldValue === '') {\n var region = this.defaultCropRegion();\n this.iiifRegionField.val(region);\n return region;\n } else {\n return regionFieldValue.split(',');\n }\n }\n\n // Calculate a default crop region in the center of the image using the correct aspect ratio\n defaultCropRegion() {\n var imageWidth = this.imageLayer.x;\n var imageHeight = this.imageLayer.y;\n\n var boxWidth = Math.floor(imageWidth / 2);\n var boxHeight = Math.floor(boxWidth / this.aspectRatio());\n\n return [\n Math.floor((imageWidth - boxWidth) / 2),\n Math.floor((imageHeight - boxHeight) / 2),\n boxWidth,\n boxHeight\n ];\n }\n\n // Calculate the required aspect ratio for the crop area\n aspectRatio() {\n var cropWidth = parseInt(this.cropArea.data('crop-width'));\n var cropHeight = parseInt(this.cropArea.data('crop-height'));\n return cropWidth / cropHeight;\n }\n\n // Position the IIIF Crop Box at the given IIIF region\n positionIiifCropBox(region) {\n var bounds = this.unprojectIIIFRegionToBounds(region);\n\n if (!this.cropBox) {\n this.renderCropBox(bounds);\n }\n\n this.cropBox.setBounds(bounds);\n this.cropperMap.invalidateSize();\n this.cropperMap.fitBounds(bounds);\n\n this.cropBox.editor.editLayer.clearLayers();\n this.cropBox.editor.refresh();\n this.cropBox.editor.initVertexMarkers();\n }\n\n // Set all of the various input fields to\n // the appropriate IIIF URL or identifier\n setIiifFields(iiifObject) {\n this.setTileSource(iiifObject.tilesource);\n this.iiifManifestField.val(iiifObject.manifest);\n this.iiifCanvasField.val(iiifObject.canvasId);\n this.iiifImageField.val(iiifObject.imageId);\n }\n\n // Set the Crop tileSource and setup the cropper\n setTileSource(source) {\n if (source == this.tileSource) {\n return;\n }\n\n if (source === null || source === undefined) {\n console.error('No tilesource provided when setting up IIIF Cropper');\n return;\n }\n\n if (this.cropBox) {\n this.iiifRegionField.val(\"\");\n }\n\n this.tileSource = source;\n this.iiifUrlField.val(source);\n this.setupIiifCropper();\n }\n\n // Render the Leaflet Map into the crop area\n renderCropperMap() {\n if (this.cropperMap) {\n return;\n }\n\n var cropperOptions = {\n editable: true,\n center: [0, 0],\n crs: L.CRS.Simple,\n zoom: 0\n }\n\n if(this.preserveAspectRatio) {\n cropperOptions['editOptions'] = {\n rectangleEditorClass: this.aspectRatioPreservingRectangleEditor(this.aspectRatio())\n };\n }\n\n this.cropperMap = L.map(this.cropArea.attr('id'), cropperOptions);\n this.invalidateMapSizeOnTabToggle();\n }\n\n // Render the crop box (a Leaflet editable rectangle) onto the canvas\n renderCropBox(initialBounds) {\n this.cropBox = L.rectangle(initialBounds);\n this.cropBox.addTo(this.cropperMap);\n this.cropBox.enableEdit();\n this.cropBox.on('dblclick', L.DomEvent.stop).on('dblclick', this.cropBox.toggleEdit);\n\n var self = this;\n this.cropperMap.on('editable:dragend editable:vertex:dragend', function(e) {\n var bounds = e.layer.getBounds();\n var region = self.projectBoundsToIIIFRegion(bounds);\n\n self.iiifRegionField.val(region.join(','));\n });\n }\n\n // Get the maximum zoom level for the IIIF Layer (always 1:1 image pixel to canvas?)\n maxZoom() {\n if(this.imageLayer) {\n return this.imageLayer.maxZoom;\n }\n }\n\n // Take a Leaflet LatLngBounds object and transform it into a IIIF [x, y, w, h] region\n projectBoundsToIIIFRegion(bounds) {\n var min = this.cropperMap.project(bounds.getNorthWest(), this.maxZoom());\n var max = this.cropperMap.project(bounds.getSouthEast(), this.maxZoom());\n return [\n Math.max(Math.floor(min.x), 0),\n Math.max(Math.floor(min.y), 0),\n Math.floor(max.x - min.x),\n Math.floor(max.y - min.y)\n ];\n }\n\n // Take a IIIF [x, y, w, h] region and transform it into a Leaflet LatLngBounds\n unprojectIIIFRegionToBounds(region) {\n var minPoint = L.point(parseInt(region[0]), parseInt(region[1]));\n var maxPoint = L.point(parseInt(region[0]) + parseInt(region[2]), parseInt(region[1]) + parseInt(region[3]));\n\n var min = this.cropperMap.unproject(minPoint, this.maxZoom());\n var max = this.cropperMap.unproject(maxPoint, this.maxZoom());\n return L.latLngBounds(min, max);\n }\n\n // TODO: Add accessors to update hidden inputs with IIIF uri/ids?\n\n // Setup autocomplete inputs to have the iiif_cropper context\n setupAutoCompletes() {\n var input = $('[data-behavior=\"autocomplete\"]', this.cropTool);\n input.data('iiifCropper', this);\n }\n\n setupAjaxFileUpload() {\n this.fileInput = $('input[type=\"file\"]', this.cropTool);\n this.fileInput.change(() => this.uploadFile());\n }\n\n addImageSelectorToExistingCropTool() {\n if(this.iiifManifestField.val() === '') {\n return;\n }\n\n var input = $('[data-behavior=\"autocomplete\"]', this.cropTool);\n \n // Not every page which uses this module has autocomplete linked directly to the cropping tool\n if(input.length) {\n var panel = $(input.data('target-panel'));\n addImageSelector(input, panel, this.iiifManifestField.val(), !this.iiifImageField.val());\n }\n }\n\n invalidateMapSizeOnTabToggle() {\n var tabs = $('[role=\"tablist\"]', this.form);\n var self = this;\n tabs.on('shown.bs.tab', function() {\n if(self.cropArea.data('initiallyVisible') === false && self.cropArea.is(':visible')) {\n self.cropperMap.invalidateSize();\n // Because the map size is 0,0 when image is loading (not visible) we need to refit the bounds of the layer\n self.imageLayer._fitBounds();\n self.cropArea.data('initiallyVisible', null);\n }\n });\n }\n\n // Get all the form data with the exception of the _method field.\n getData() {\n var data = new FormData(this.form[0]);\n data.append('_method', null);\n return data;\n }\n\n uploadFile() {\n var url = this.fileInput.data('endpoint')\n // Every post creates a new image/masthead.\n // Because they create IIIF urls which are heavily cached.\n $.ajax({\n url: url, //Server script to process data\n type: 'POST',\n success: (data, stat, xhr) => this.successHandler(data, stat, xhr),\n // error: errorHandler,\n // Form data\n data: this.getData(),\n headers: {\n 'X-CSRF-Token': Core.csrfToken() || ''\n },\n //Options to tell jQuery not to process data or worry about content-type.\n cache: false,\n contentType: false,\n processData: false\n });\n }\n\n successHandler(data, stat, xhr) {\n this.setIiifFields({ tilesource: data.tilesource });\n this.setUploadId(data.id);\n }\n\n setUploadId(id) {\n // This input is currently used for exhibit masthead or thumbnail image upload.\n // The name should be sufficient in this case, as we don't use this part of the\n // code for solr document widgets where we enable cropping. \n // If we require more specificity, we can scope this to this.cropTool. \n $('input[name=\"' + this.inputPrefix + '[upload_id]\"]').val(id);\n }\n\n aspectRatioPreservingRectangleEditor(aspect) {\n return L.Editable.RectangleEditor.extend({\n extendBounds: function (e) {\n var index = e.vertex.getIndex(),\n next = e.vertex.getNext(),\n previous = e.vertex.getPrevious(),\n oppositeIndex = (index + 2) % 4,\n opposite = e.vertex.latlngs[oppositeIndex];\n\n if ((index % 2) == 1) {\n // calculate horiz. displacement\n e.latlng.update([opposite.lat + ((1 / aspect) * (opposite.lng - e.latlng.lng)), e.latlng.lng]);\n } else {\n // calculate vert. displacement\n e.latlng.update([e.latlng.lat, (opposite.lng - (aspect * (opposite.lat - e.latlng.lat)))]);\n }\n var bounds = new L.LatLngBounds(e.latlng, opposite);\n // Update latlngs by hand to preserve order.\n previous.latlng.update([e.latlng.lat, opposite.lng]);\n next.latlng.update([opposite.lat, e.latlng.lng]);\n this.updateBounds(bounds);\n this.refreshVertexMarkers();\n }\n });\n }\n}\n","import Crop from 'spotlight/admin/crop';\n\nexport default class CroppableModal {\n\n attachModalHandlers() {\n // Attach handler for when modal first loads, to show the cropper\n this.attachModalLoadBehavior();\n // Attach handler for save by checking if clicking in the modal is on a save button\n this.attachModalSaveHandler();\n }\n\n attachModalLoadBehavior() {\n // Listen for event thrown when modal is displayed with content\n document.addEventListener('loaded.blacklight.blacklight-modal', function(e) {\n var dataCropperDiv = $('#blacklight-modal [data-behavior=\"iiif-cropper\"]');\n \n if(dataCropperDiv) {\n new Crop(dataCropperDiv, false).render();\n }\n });\n }\n\n // Field names are of the format item[item_0][iiif_image_id]\n iiifInputField(itemIndex, fieldName, parentElement) {\n var itemPrefix = 'item[' + itemIndex + ']';\n var selector = 'input[name=\"' + itemPrefix + '[' + fieldName + ']\"]';\n return $(selector, parentElement);\n }\n\n attachModalSaveHandler() {\n var context = this;\n \n document.addEventListener('show.blacklight.blacklight-modal', function(e) {\n $('#save-cropping-selection').on('click', () => {\n context.saveCroppedRegion();\n });\n });\n }\n\n saveCroppedRegion() {\n //On hitting \"save changes\", we need to copy over the value\n //to the iiif thumbnail url input field as well as the image source itself\n var context = this;\n var dataCropperDiv = $('#blacklight-modal [data-behavior=\"iiif-cropper\"]');\n\n if(dataCropperDiv) {\n var dataCropperKey = dataCropperDiv.data(\"cropper-key\");\n var itemIndex = dataCropperDiv.data(\"index-id\");\n // Get the element on the main edit page whose select image link opened up the modal\n var itemElement = $('[data-cropper=\"' + dataCropperKey + '\"]');\n // Get the hidden input field on the main edit page corresponding to this item\n var thumbnailSaveField = context.iiifInputField(itemIndex, 'thumbnail_image_url', itemElement);\n var fullimageSaveField = context.iiifInputField(itemIndex, 'full_image_url', itemElement);\n var iiifTilesource = context.iiifInputField(itemIndex, 'iiif_tilesource', itemElement).val();\n var regionValue = context.iiifInputField(itemIndex, 'iiif_region', itemElement).val();\n // Extract the region string to incorporate into the thumbnail URL\n var urlPrefix = iiifTilesource.substring(0, iiifTilesource.lastIndexOf('/info.json'));\n var thumbnailUrl = urlPrefix + '/' + regionValue + '/!400,400/0/default.jpg';\n // Set the hidden input value to the thumbnail URL\n // Also set the full image - which is used by widgets like carousel or slideshow\n thumbnailSaveField.val(thumbnailUrl);\n fullimageSaveField.val(urlPrefix + '/' + regionValue + '/!800,800/0/default.jpg');\n // Also change img url for thumbnail image\n var itemImage = $('img.img-thumbnail', itemElement); \n itemImage.attr('src', thumbnailUrl);\n }\n }\n}\n","import Crop from 'spotlight/admin/crop';\nimport CroppableModal from 'spotlight/admin/croppable_modal';\n\nexport default class Croppable {\n connect() {\n // For exhibit masthead or thumbnail pages, where\n // the div exists on page load\n $('[data-behavior=\"iiif-cropper\"]').each(function() {\n var cropElement = $(this)\n new Crop(cropElement).render()\n })\n\n // In the case of individual document thumbnails, selection\n // of the image is through a modal. Here we attach the event\n new CroppableModal().attachModalHandlers();\n }\n}\n","/*\n Simple plugin add edit-in-place behavior\n*/\nexport default class {\n connect() {\n $('[data-in-place-edit-target]').each(function() {\n $(this).on('click.inplaceedit', function() {\n var $label = $(this).find($(this).data('in-place-edit-target'));\n var $input = $(this).find($(this).data('in-place-edit-field-target'));\n\n // hide the edit-in-place affordance icon while in edit mode\n $(this).addClass('hide-edit-icon');\n $label.hide();\n $input.val($label.text());\n $input.attr('type', 'text');\n $input.select();\n $input.focus();\n\n $input.on('keypress', function(e) {\n if(e.which == 13) {\n $input.trigger('blur.inplaceedit');\n return false;\n }\n });\n\n $input.on('blur.inplaceedit', function() {\n var value = $input.val();\n\n if ($.trim(value).length == 0) {\n $input.val($label.text());\n } else {\n $label.text(value);\n }\n\n $label.show();\n $input.attr('type', 'hidden');\n // when leaving edit mode, should no longer hide edit-in-place affordance icon\n $(\"[data-in-place-edit-target]\").removeClass('hide-edit-icon');\n\n return false;\n });\n\n return false;\n });\n })\n\n $(\"[data-behavior='restore-default']\").each(function(){\n var hidden = $(\"[data-default-value]\", $(this));\n var value = $($(\"[data-in-place-edit-target]\", $(this)).data('in-place-edit-target'), $(this));\n var button = $(\"[data-restore-default]\", $(this));\n\n hidden.on('keypress', function(e) {\n if(e.which == 13) {\n hidden.trigger('blur');\n return false;\n }\n });\n\n hidden.on('blur', function(){\n if( $(this).val() == $(this).data('default-value') ) {\n button.addClass('d-none');\n } else {\n button.removeClass('d-none');\n }\n });\n button.on('click', function(e){\n e.preventDefault();\n hidden.val(hidden.data('default-value'));\n value.text(hidden.data('default-value'));\n button.hide();\n });\n });\n }\n}\n","/*\nhttps://gist.github.com/pjambet/3710461\n*/\nvar LATIN_MAP = {\n 'À': 'A', 'Á': 'A', 'Â': 'A', 'Ã': 'A', 'Ä': 'A', 'Å': 'A', 'Æ': 'AE', 'Ç':\n 'C', 'È': 'E', 'É': 'E', 'Ê': 'E', 'Ë': 'E', 'Ì': 'I', 'Í': 'I', 'Î': 'I',\n 'Ï': 'I', 'Ð': 'D', 'Ñ': 'N', 'Ò': 'O', 'Ó': 'O', 'Ô': 'O', 'Õ': 'O', 'Ö':\n 'O', 'Ő': 'O', 'Ø': 'O', 'Ù': 'U', 'Ú': 'U', 'Û': 'U', 'Ü': 'U', 'Ű': 'U',\n 'Ý': 'Y', 'Þ': 'TH', 'ß': 'ss', 'à':'a', 'á':'a', 'â': 'a', 'ã': 'a', 'ä':\n 'a', 'å': 'a', 'æ': 'ae', 'ç': 'c', 'è': 'e', 'é': 'e', 'ê': 'e', 'ë': 'e',\n 'ì': 'i', 'í': 'i', 'î': 'i', 'ï': 'i', 'ð': 'd', 'ñ': 'n', 'ò': 'o', 'ó':\n 'o', 'ô': 'o', 'õ': 'o', 'ö': 'o', 'ő': 'o', 'ø': 'o', 'ù': 'u', 'ú': 'u',\n 'û': 'u', 'ü': 'u', 'ű': 'u', 'ý': 'y', 'þ': 'th', 'ÿ': 'y'\n}\nvar LATIN_SYMBOLS_MAP = {\n '©':'(c)'\n}\nvar GREEK_MAP = {\n 'α':'a', 'β':'b', 'γ':'g', 'δ':'d', 'ε':'e', 'ζ':'z', 'η':'h', 'θ':'8',\n 'ι':'i', 'κ':'k', 'λ':'l', 'μ':'m', 'ν':'n', 'ξ':'3', 'ο':'o', 'π':'p',\n 'ρ':'r', 'σ':'s', 'τ':'t', 'υ':'y', 'φ':'f', 'χ':'x', 'ψ':'ps', 'ω':'w',\n 'ά':'a', 'έ':'e', 'ί':'i', 'ό':'o', 'ύ':'y', 'ή':'h', 'ώ':'w', 'ς':'s',\n 'ϊ':'i', 'ΰ':'y', 'ϋ':'y', 'ΐ':'i',\n 'Α':'A', 'Β':'B', 'Γ':'G', 'Δ':'D', 'Ε':'E', 'Ζ':'Z', 'Η':'H', 'Θ':'8',\n 'Ι':'I', 'Κ':'K', 'Λ':'L', 'Μ':'M', 'Ν':'N', 'Ξ':'3', 'Ο':'O', 'Π':'P',\n 'Ρ':'R', 'Σ':'S', 'Τ':'T', 'Υ':'Y', 'Φ':'F', 'Χ':'X', 'Ψ':'PS', 'Ω':'W',\n 'Ά':'A', 'Έ':'E', 'Ί':'I', 'Ό':'O', 'Ύ':'Y', 'Ή':'H', 'Ώ':'W', 'Ϊ':'I',\n 'Ϋ':'Y'\n}\nvar TURKISH_MAP = {\n 'ş':'s', 'Ş':'S', 'ı':'i', 'İ':'I', 'ç':'c', 'Ç':'C', 'ü':'u', 'Ü':'U',\n 'ö':'o', 'Ö':'O', 'ğ':'g', 'Ğ':'G'\n}\nvar RUSSIAN_MAP = {\n 'а':'a', 'б':'b', 'в':'v', 'г':'g', 'д':'d', 'е':'e', 'ё':'yo', 'ж':'zh',\n 'з':'z', 'и':'i', 'й':'j', 'к':'k', 'л':'l', 'м':'m', 'н':'n', 'о':'o',\n 'п':'p', 'р':'r', 'с':'s', 'т':'t', 'у':'u', 'ф':'f', 'х':'h', 'ц':'c',\n 'ч':'ch', 'ш':'sh', 'щ':'sh', 'ъ':'', 'ы':'y', 'ь':'', 'э':'e', 'ю':'yu',\n 'я':'ya',\n 'А':'A', 'Б':'B', 'В':'V', 'Г':'G', 'Д':'D', 'Е':'E', 'Ё':'Yo', 'Ж':'Zh',\n 'З':'Z', 'И':'I', 'Й':'J', 'К':'K', 'Л':'L', 'М':'M', 'Н':'N', 'О':'O',\n 'П':'P', 'Р':'R', 'С':'S', 'Т':'T', 'У':'U', 'Ф':'F', 'Х':'H', 'Ц':'C',\n 'Ч':'Ch', 'Ш':'Sh', 'Щ':'Sh', 'Ъ':'', 'Ы':'Y', 'Ь':'', 'Э':'E', 'Ю':'Yu',\n 'Я':'Ya'\n}\nvar UKRAINIAN_MAP = {\n 'Є':'Ye', 'І':'I', 'Ї':'Yi', 'Ґ':'G', 'є':'ye', 'і':'i', 'ї':'yi', 'ґ':'g'\n}\nvar CZECH_MAP = {\n 'č':'c', 'ď':'d', 'ě':'e', 'ň': 'n', 'ř':'r', 'š':'s', 'ť':'t', 'ů':'u',\n 'ž':'z', 'Č':'C', 'Ď':'D', 'Ě':'E', 'Ň': 'N', 'Ř':'R', 'Š':'S', 'Ť':'T',\n 'Ů':'U', 'Ž':'Z'\n}\n\nvar POLISH_MAP = {\n 'ą':'a', 'ć':'c', 'ę':'e', 'ł':'l', 'ń':'n', 'ó':'o', 'ś':'s', 'ź':'z',\n 'ż':'z', 'Ą':'A', 'Ć':'C', 'Ę':'e', 'Ł':'L', 'Ń':'N', 'Ó':'o', 'Ś':'S',\n 'Ź':'Z', 'Ż':'Z'\n}\n\nvar LATVIAN_MAP = {\n 'ā':'a', 'č':'c', 'ē':'e', 'ģ':'g', 'ī':'i', 'ķ':'k', 'ļ':'l', 'ņ':'n',\n 'š':'s', 'ū':'u', 'ž':'z', 'Ā':'A', 'Č':'C', 'Ē':'E', 'Ģ':'G', 'Ī':'i',\n 'Ķ':'k', 'Ļ':'L', 'Ņ':'N', 'Š':'S', 'Ū':'u', 'Ž':'Z'\n}\n\nvar ALL_DOWNCODE_MAPS=new Array()\nALL_DOWNCODE_MAPS[0]=LATIN_MAP\nALL_DOWNCODE_MAPS[1]=LATIN_SYMBOLS_MAP\nALL_DOWNCODE_MAPS[2]=GREEK_MAP\nALL_DOWNCODE_MAPS[3]=TURKISH_MAP\nALL_DOWNCODE_MAPS[4]=RUSSIAN_MAP\nALL_DOWNCODE_MAPS[5]=UKRAINIAN_MAP\nALL_DOWNCODE_MAPS[6]=CZECH_MAP\nALL_DOWNCODE_MAPS[7]=POLISH_MAP\nALL_DOWNCODE_MAPS[8]=LATVIAN_MAP\n\nvar Downcoder = new Object();\nDowncoder.Initialize = function()\n{\n if (Downcoder.map) // already made\n return ;\n Downcoder.map ={}\n Downcoder.chars = '' ;\n for(var i in ALL_DOWNCODE_MAPS)\n {\n var lookup = ALL_DOWNCODE_MAPS[i]\n for (var c in lookup)\n {\n Downcoder.map[c] = lookup[c] ;\n Downcoder.chars += c ;\n }\n }\n Downcoder.regex = new RegExp('[' + Downcoder.chars + ']|[^' + Downcoder.chars + ']+','g') ;\n }\n \nconst downcode = function( slug )\n{\n Downcoder.Initialize() ;\n var downcoded =\"\"\n var pieces = slug.match(Downcoder.regex);\n if(pieces)\n {\n for (var i = 0 ; i < pieces.length ; i++)\n {\n if (pieces[i].length == 1)\n {\n var mapped = Downcoder.map[pieces[i]] ;\n if (mapped != null)\n {\n downcoded+=mapped;\n continue ;\n }\n }\n downcoded+=pieces[i];\n }\n }\n else\n {\n downcoded = slug;\n }\n return downcoded;\n}\n\n\nfunction URLify(s, num_chars) {\n // changes, e.g., \"Petty theft\" to \"petty_theft\"\n // remove all these words from the string before urlifying\n s = downcode(s);\n //\n // if downcode doesn't hit, the char will be stripped here\n s = s.replace(/[^-\\w\\s]/g, ' '); // remove unneeded chars\n s = s.replace(/^\\s+|\\s+$/g, ''); // trim leading/trailing spaces\n s = s.replace(/[-\\s]+/g, '-'); // convert spaces to hyphens\n s = s.toLowerCase(); // convert to lowercase\n return s.substring(0, num_chars);// trim to first num_chars chars\n}\n\nexport { URLify };","import { URLify } from 'parameterize';\n\nexport default class {\n connect() {\n // auto-fill the exhibit slug on the new exhibit form\n $('#new_exhibit').each(function() {\n $('#exhibit_title').on('change keyup', function() {\n $('#exhibit_slug').attr('placeholder', URLify($(this).val(), $(this).val().length));\n });\n\n $('#exhibit_slug').on('focus', function() {\n if ($(this).val() === '') {\n $(this).val($(this).attr('placeholder'));\n }\n });\n });\n\n $(\"#another-email\").on(\"click\", function(e) {\n e.preventDefault();\n\n var container = $(this).closest('.form-group');\n var contacts = container.find('.contact');\n var inputContainer = contacts.first().clone();\n\n // wipe out any values from the inputs\n inputContainer.find('input').each(function() {\n $(this).val('');\n $(this).attr('id', $(this).attr('id').replace('0', contacts.length));\n $(this).attr('name', $(this).attr('name').replace('0', contacts.length));\n if ($(this).attr('aria-label')) {\n $(this).attr('aria-label', $(this).attr('aria-label').replace('1', contacts.length + 1));\n }\n });\n\n inputContainer.find('.contact-email-delete-wrapper').remove();\n inputContainer.find('.confirmation-status').remove();\n\n // bootstrap does not render input-groups with only one value in them correctly.\n inputContainer.find('.input-group input:only-child').closest('.input-group').removeClass('input-group');\n\n $(inputContainer).insertAfter(contacts.last());\n });\n\n if (document.getElementById('another-email')) {\n document.addEventListener('turbo:submit-end', this.contactToDeleteNotFoundHandler);\n }\n\n if ($.fn.tooltip) {\n $('.btn-with-tooltip').tooltip();\n }\n\n // Put focus in saved search title input when Save this search modal is shown\n $('#save-modal').on('shown.bs.modal', function () {\n $('#search_title').focus();\n });\n }\n\n contactToDeleteNotFoundHandler(e) {\n const contact = e.detail.formSubmission?.delegate?.element?.querySelector('.contact')\n if (contact && e.detail?.fetchResponse?.response?.status === 404) {\n const error = contact.querySelector('.contact-email-delete-error');\n error.style.display = 'block';\n error.querySelector('.error-msg').textContent = 'Not Found';\n }\n }\n}","\n(function($, _) {\n 'use strict';\n\n /*\n * SerializedForm is built as a singleton jQuery plugin. It needs to be able to\n * handle instantiation from multiple sources, and use the [data-form-observer]\n * as global state object.\n */\n $.SerializedForm = function () {\n var $serializedForm;\n var plugin = this;\n\n // Store form serialization in data attribute\n function serializeFormStatus () {\n $serializedForm.data('serialized-form', formSerialization($serializedForm));\n }\n\n // Do custom serialization of the sir-trevor form data. This needs to be a\n // passed in argument for comparison later on.\n function formSerialization (form) {\n var content_editable = [];\n var i = 0;\n $(\"[contenteditable='true']\", form).each(function(){\n content_editable.push('&contenteditable_' + i + '=' + $(this).text());\n });\n return form.serialize() + content_editable.join();\n }\n\n // Unbind observing form on submit (which we have to do because of turbolinks)\n function unbindObservedFormSubmit () {\n $serializedForm.on('submit', function () {\n $(this).data('being-submitted', true);\n });\n }\n\n // Get the stored serialized form status\n function serializedFormStatus () {\n return $serializedForm.data('serialized-form');\n }\n\n // Check all observed forms on page for status change\n plugin.observedFormsStatusHasChanged = function () {\n var unsaved_changes = false;\n $('[data-form-observer]').each(function (){\n if ( !$(this).data(\"being-submitted\") ) {\n if (serializedFormStatus() != formSerialization($(this))) {\n unsaved_changes = true;\n }\n }\n });\n return unsaved_changes;\n }\n\n function init () {\n $serializedForm = $('[data-form-observer]');\n serializeFormStatus();\n unbindObservedFormSubmit();\n }\n\n init();\n\n return plugin;\n };\n})(jQuery);\n\nexport default class {\n connect() {\n // Instantiate the singleton SerializedForm plugin\n var serializedForm = $.SerializedForm();\n $(window).on('beforeunload page:before-change turbolinks:before-visit turbo:before-visit', function(event) {\n // Don't handle the same event twice #turbolinks\n if (event.handled !== true) {\n if ( serializedForm.observedFormsStatusHasChanged() ) {\n event.handled = true;\n var message = \"You have unsaved changes. Are you sure you want to leave this page?\";\n // There are variations in how Webkit browsers may handle this:\n // https://developer.mozilla.org/en-US/docs/Web/Events/beforeunload\n if ( event.type == \"beforeunload\" ) {\n return message;\n } else {\n return confirm(message)\n }\n }\n }\n });\n }\n}\n","export default class {\n delete_lock(el) {\n const csrfToken = document.querySelector('meta[name=\"csrf-token\"]')?.content;\n \n fetch(el.dataset.lock, {\n method: 'DELETE',\n headers: {\n 'X-CSRF-Token': csrfToken\n }\n });\n \n el.removeAttribute('data-lock');\n }\n\n connect() {\n document.querySelectorAll('[data-lock]').forEach(element => {\n element.addEventListener('click', (e) => {\n this.delete_lock(e.target);\n });\n });\n }\n}","// Module to add multi-image selector to widget panels\n\n(function(){\n $.fn.multiImageSelector = function(image_versions, clickCallback, activeImageId) {\n var changeLink = $(\"<a href='javascript:;'>Change</a>\"),\n thumbsListContainer = $(\"<div class='thumbs-list' style='display:none'></div>\"),\n thumbList = $(\"<ul></ul>\"),\n panel;\n\n var imageIds = $.map(image_versions, function(e) { return e['imageId']; });\n\n return init(this);\n\n function init(el) {\n panel = el;\n\n destroyExistingImageSelector();\n if(image_versions && image_versions.length > 1) {\n addChangeLink();\n addThumbsList();\n }\n }\n function addChangeLink() {\n $('[data-panel-image-pagination]', panel)\n .html(\"Image <span data-current-image='true'>\" + indexOf(activeImageId) + \"</span> of \" + image_versions.length)\n .show()\n .append(\" \")\n .append(changeLink);\n addChangeLinkBehavior();\n }\n\n function destroyExistingImageSelector() {\n var pagination = $('[data-panel-image-pagination]', panel);\n pagination.html('');\n pagination.next('.' + thumbsListContainer.attr('class')).remove();\n }\n\n function indexOf(thumb){\n const index = imageIds.indexOf(thumb)\n if (index > -1) {\n return index + 1;\n } else {\n return 1;\n }\n }\n function addChangeLinkBehavior() {\n changeLink.on('click', function(){\n thumbsListContainer.slideToggle();\n updateThumbListWidth();\n addScrollBehavior();\n scrollToActiveThumb();\n loadVisibleThumbs();\n swapChangeLinkText($(this));\n });\n }\n function updateThumbListWidth() {\n var width = 0;\n $('li', thumbList).each(function(){\n width += $(this).outerWidth();\n });\n thumbList.width(width + 5);\n }\n function loadVisibleThumbs(){\n var viewportWidth = thumbsListContainer.width();\n var width = 0;\n $('li', thumbList).each(function(){\n var thisThumb = $(this),\n image = $('img', thisThumb),\n totalWidth = width += thisThumb.width(),\n position = (thumbList.position().left + totalWidth) - thisThumb.width();\n\n if(position >= 0 && position < viewportWidth) {\n image.prop('src', image.data('src'));\n }\n });\n }\n function addScrollBehavior(){\n thumbsListContainer.scrollStop(function(){\n loadVisibleThumbs();\n });\n }\n function scrollToActiveThumb(){\n var halfContainerWidth = (thumbsListContainer.width() / 2),\n activeThumbLeftPosition = ($('.active', thumbList).position() || $('li', thumbList).first().position()).left,\n halfActiveThumbWidth = ($('.active', thumbList).width() / 2);\n thumbsListContainer.scrollLeft(\n (activeThumbLeftPosition - halfContainerWidth) + halfActiveThumbWidth\n );\n }\n function addThumbsList() {\n addThumbsToList();\n updateActiveThumb();\n $('.card-header', panel).append(\n thumbsListContainer.append(\n thumbList\n )\n );\n }\n function updateActiveThumb(){\n $('li', thumbList).each(function(){\n var item = $(this);\n if($('img', item).data('image-id') == activeImageId){\n item.addClass('active');\n }\n });\n }\n function swapChangeLinkText(link){\n link.text(\n link.text() == 'Change' ? 'Close' : 'Change'\n )\n }\n\n function addThumbsToList(){\n $.each(image_versions, function(i){\n var listItem = $('<li data-index=\"' + i + '\"><a href=\"javascript:;\"><img src=\"' + image_versions[i]['thumb'] +'\" data-image-id=\"' + image_versions[i]['imageId'] +'\" /></a></li>');\n listItem.on('click', function(){\n // get the current image id\n var imageid = $('img', $(this)).data('image-id');\n var src = $('img', $(this)).attr('src');\n\n if (typeof clickCallback === 'function' ) {\n clickCallback(image_versions[i]);\n }\n\n // mark the current selection as active\n $('li.active', thumbList).removeClass('active');\n $(this).addClass('active');\n\n // update the multi-image selector image\n $(\".pic img.img-thumbnail\", panel).attr(\"src\", src);\n\n $('[data-panel-image-pagination] [data-current-image]', panel).text(\n $('li', thumbList).index($(this)) + 1\n );\n scrollToActiveThumb();\n });\n $(\"img\", listItem).on('load', function() {\n updateThumbListWidth();\n });\n thumbList.append(listItem);\n });\n }\n };\n\n})(jQuery);\n\n// source: http://stackoverflow.com/questions/14035083/jquery-bind-event-on-scroll-stops\njQuery.fn.scrollStop = function(callback) {\n $(this).scroll(function() {\n var self = this,\n $this = $(self);\n\n if ($this.data('scrollTimeout')) {\n clearTimeout($this.data('scrollTimeout'));\n }\n\n $this.data('scrollTimeout', setTimeout(callback, 250, self));\n });\n};\n","// Place all the behaviors and hooks related to the matching controller here.\n// All this logic will automatically be available in application.js.\nimport Core from 'spotlight/core'\n\nexport default class {\n connect(){\n SirTrevor.setDefaults({\n iconUrl: Spotlight.sirTrevorIcon,\n uploadUrl: $('[data-attachment-endpoint]').data('attachment-endpoint'),\n ajaxOptions: {\n headers: {\n 'X-CSRF-Token': Core.csrfToken() || ''\n },\n credentials: 'same-origin'\n }\n });\n\n SirTrevor.Blocks.Heading.prototype.toolbarEnabled = true;\n SirTrevor.Blocks.Quote.prototype.toolbarEnabled = true;\n SirTrevor.Blocks.Text.prototype.toolbarEnabled = true;\n\n var instance = $('.js-st-instance').first();\n\n if (instance.length) {\n var editor = new SirTrevor.Editor({\n el: instance[0],\n blockTypes: instance.data('blockTypes'),\n altTextSettings: instance.data('altTextSettings'),\n defaultType:[\"Text\"],\n onEditorRender: function() {\n $.SerializedForm();\n },\n blockTypeLimits: {\n \"SearchResults\": 1\n }\n });\n\n editor.blockControls = Core.BlockControls.create(editor);\n\n new Core.BlockLimits(editor).enforceLimits(editor);\n }\n }\n}\n","export default class {\n connect() {\n var monitorElements = $('[data-behavior=\"progress-panel\"]');\n var defaultRefreshRate = 3000;\n var panelContainer;\n var pollers = [];\n\n $(monitorElements).each(function() {\n panelContainer = $(this);\n panelContainer.hide();\n var monitorUrl = panelContainer.data('monitorUrl');\n var refreshRate = panelContainer.data('refreshRate') || defaultRefreshRate;\n pollers.push(\n setInterval(function() {\n checkMonitorUrl(monitorUrl);\n }, refreshRate)\n );\n });\n\n // Clear the intervals on turbolink:click event (e.g. when the user navigates away from the page)\n $(document).on('turbolinks:click', function() {\n if (pollers.length > 0) {\n $.each(pollers, function() {\n clearInterval(this);\n });\n pollers = [];\n }\n });\n\n function checkMonitorUrl(url) {\n $.ajax(url).done(success).fail(fail);\n }\n\n function success(data) {\n if (data.recently_in_progress) {\n updateMonitorPanel(data);\n monitorPanel().show();\n } else {\n monitorPanel().hide();\n }\n }\n\n function fail() { monitorPanel().hide(); }\n\n function updateMonitorPanel(data) {\n panelStartDate().text(data.started_at);\n panelCurrentDate().text(data.updated_at);\n panelCompletedDate().text(data.updated_at);\n panelCurrent().text(data.completed);\n setPanelCompleted(data.finished);\n updatePanelTotals(data);\n updatePanelErrorMessage(data);\n updateProgressBar(data);\n\n panelContainer.show();\n }\n\n function updateProgressBar(data) {\n var percentage = calculatePercentage(data);\n progressBar()\n .attr('aria-valuemax', data.total)\n .attr('aria-valuenow', percentage)\n .css('width', percentage + '%')\n .text(percentage + '%');\n\n if (data.finished) {\n progressBar().removeClass('active').removeClass('progress-bar-striped');\n }\n }\n\n function updatePanelErrorMessage(data) {\n // We currently do not store this state,\n // but with this code we can in the future.\n if ( data.errored ) {\n panelErrorMessage().show();\n } else {\n panelErrorMessage().hide();\n }\n }\n\n function updatePanelTotals(data) {\n panelTotals().each(function() {\n $(this).text(data.total);\n });\n }\n\n function calculatePercentage(data) {\n if (data.total == 0) return 0;\n return Math.floor((data.completed / data.total) * 100);\n }\n\n function monitorPanel() {\n return panelContainer.find('.index-status');\n }\n\n function panelStartDate() {\n return monitorPanel()\n .find('[data-behavior=\"monitor-start\"]')\n .find('[data-behavior=\"date\"]');\n }\n\n function panelCurrentDate() {\n return monitorPanel()\n .find('[data-behavior=\"monitor-current\"]')\n .find('[data-behavior=\"date\"]');\n }\n\n function panelCompletedDate() {\n return monitorPanel()\n .find('[data-behavior=\"monitor-completed\"]')\n .find('[data-behavior=\"date\"]');\n }\n\n function panelTotals() {\n return monitorPanel().find('[data-behavior=\"total\"]');\n }\n\n function panelCurrent() {\n return monitorPanel()\n .find('[data-behavior=\"monitor-current\"]')\n .find('[data-behavior=\"completed\"]');\n }\n\n function progressBar() {\n return monitorPanel().find('.progress-bar');\n }\n\n function panelErrorMessage() {\n return monitorPanel().find('[data-behavior=\"monitor-error\"]');\n }\n\n function setPanelCompleted(finished) {\n var panel = monitorPanel().find('[data-behavior=\"monitor-completed\"]');\n\n if (finished) {\n panel.show();\n } else {\n panel.hide();\n }\n }\n\n return this;\n }\n}\n","export default class {\n connect() {\n // Don't allow unchecking of checkboxes with the data-readonly attribute \n $(\"input[type='checkbox'][data-readonly]\").on(\"click\", function(event) {\n event.preventDefault();\n })\n }\n}\n","import { addImageSelector } from 'spotlight/admin/add_image_selector'\n\nconst docStore = new Map();\n\nfunction highlight(value, query) {\n if (query.trim() === '') return value;\n const queryValue = query.trim();\n return queryValue ? value.replace(new RegExp(queryValue, 'gi'), '<strong>$&</strong>') : value;\n}\n\nfunction templateFunc(obj, query) {\n const thumbnail = obj.thumbnail ? `<div class=\"document-thumbnail\"><img class=\"img-thumbnail\" src=\"${obj.thumbnail}\" /></div>` : '';\n const privateClass = obj.private ? ' blacklight-private' : '';\n const title = highlight(obj.title, query);\n const description = obj.description ? `<small>&nbsp;&nbsp;${highlight(obj.description, query)}</small>` : '';\n return `<div class=\"autocomplete-item${privateClass}\">${thumbnail}\n <span class=\"autocomplete-title\">${title}</span><br/>${description}\n </div>`;\n}\n\nfunction autoCompleteElementTemplate(obj, query) {\n return `<li role=\"option\" data-autocomplete-value=\"${obj.id}\">${templateFunc(obj, query)}</li>`;\n}\n\nfunction getAutoCompleteElementDataMap(autoCompleteElement) {\n if (!docStore.has(autoCompleteElement.id)) {\n docStore.set(autoCompleteElement.id, new Map());\n }\n return docStore.get(autoCompleteElement.id);\n}\n\nasync function fetchResult(url) {\n const result = await fetchAutocompleteJSON(url);\n const docs = result.docs || [];\n const query = this.querySelector('input').value || '';\n const autoCompleteElementDataMap = getAutoCompleteElementDataMap(this);\n return docs.map(doc => {\n autoCompleteElementDataMap.set(doc.id, doc);\n return autoCompleteElementTemplate(doc, query);\n }).join('');\n}\n\nexport function addAutocompletetoFeaturedImage(){\n const autocompletePath = $('form[data-autocomplete-exhibit-catalog-path]').data('autocomplete-exhibit-catalog-path');\n const featuredImageTypeaheads = $('[data-featured-image-typeahead]');\n if (featuredImageTypeaheads.length === 0) return;\n\n $.each(featuredImageTypeaheads, function(index, autoCompleteInput) {\n const autoCompleteElement = autoCompleteInput.closest('auto-complete');\n\n autoCompleteElement.setAttribute('src', autocompletePath);\n autoCompleteElement.fetchResult = fetchResult;\n autoCompleteElement.addEventListener('auto-complete-change', e => {\n const data = getAutoCompleteElementDataMap(autoCompleteElement).get(e.relatedTarget.value);\n if (!data) return;\n\n const inputElement = $(e.relatedTarget);\n const panel = document.querySelector(e.relatedTarget.dataset.targetPanel);\n e.relatedTarget.value = data.title;\n addImageSelector(inputElement, $(panel), data.iiif_manifest, true);\n $(inputElement.data('id-field')).val(data['global_id']);\n inputElement.attr('type', 'text');\n });\n });\n}\n\nexport async function fetchAutocompleteJSON(url) {\n const res = await(fetch(url.toString()));\n if (!res.ok) {\n throw new Error(await res.text());\n }\n return await res.json();\n}\n","/*\n Simple plugin to select form elements\n when other elements are clicked.\n*/\n(function($) {\n $.fn.selectRelatedInput = function() {\n var clickElements = this;\n\n $(clickElements).each(function() {\n var target = $($(this).data('input-select-target'));\n\n var event;\n\n if ($(this).is(\"select\")) {\n event = 'change';\n } else {\n event = 'click';\n }\n\n $(this).on(event, function() {\n if (target.is(\":checkbox\") || target.is(\":radio\")) {\n target.prop('checked', true);\n } else {\n target.focus();\n }\n });\n });\n\n return this;\n };\n})(jQuery);\n\nexport default class {\n connect() {\n $('[data-input-select-target]').selectRelatedInput();\n }\n}\n","import Sortable from 'sortablejs';\n\nconst Module = (function() {\n const nestableContainerSelector = '[data-behavior=\"nestable\"]';\n const sortableOptions = {\n animation: 150,\n draggable: '.dd-item',\n handle: '.dd-handle',\n fallbackOnBody: true,\n swapThreshold: 0.65,\n emptyInsertThreshold: 15,\n onStart: onStartHandler,\n onEnd: onEndHandler,\n onMove: onMoveHandler,\n }\n const draggableClass = 'dd-item';\n const nestedSortableClass = 'dd-list';\n const nestedSortableSelector = '.dd-list';\n const nestedSortableNodeName = 'ol';\n const findNode = (id, container) => container.querySelector(`[data-id=\"${id}\"]`);\n const setWeight = (node, weight) => weightField(node).value = weight;\n const setParent = (node, parentId) => parentPageField(node).value = parentId;\n const weightField = node => findProperty(node, \"weight\");\n const parentPageField = node => findProperty(node, \"parent_page\");\n const findProperty = (node, property) => node.querySelector(`input[data-property=\"${property}\"]`);\n let nestedId = 0;\n\n return {\n init: function(nestedContainers) {\n if (nestedContainers === undefined) {\n nestedContainers = document.querySelectorAll(nestableContainerSelector);\n }\n\n // nestedContainers could be a jQuery selector result, normalize to an array.\n const containersToInit = Array.from(nestedContainers);\n containersToInit.forEach((container) => {\n // Sir Trevor listens for drag and drop events and will error on Sortable events.\n // Don't let them bubble past the Sortable wrapper.\n container.addEventListener('drop', stopPropagationHandler);\n \n const nestedSortables = [\n ...(container.matches(nestedSortableSelector) ? [container] : []),\n ...Array.from(container.querySelectorAll(nestedSortableSelector))\n ];\n const group = `nested-${nestedId++}`;\n \n nestedSortables.forEach(sortable => {\n new Sortable(sortable, { ...sortableOptions, group: group });\n });\n });\n }\n };\n\n function stopPropagationHandler(evt) {\n evt.stopPropagation();\n }\n\n function onStartHandler(evt) {\n makeEmptyChildSortablesForEligibleParents(getNestableContainer(evt.item), getMaxNestingLevelSetting(evt.item));\n }\n\n function onEndHandler(evt) {\n const nestableContainer = getNestableContainer(evt.item);\n removeEmptySortables(nestableContainer);\n updateWeightsAndRelationships(nestableContainer);\n }\n\n function onMoveHandler(evt) {\n // The usage of data-max-depth is one off of the standard notion of depth (# edges to root)\n // E.g., data-max-depth=2 allows for one level of nesting.\n // evt.dragged is a draggable in a Sortable (e.g., a dd-item)\n // evt.to is the Sortable to insert into (e.g., a dd-list)\n const maxAllowedDepth = getMaxNestingLevelSetting(evt.to) - 1;\n const newDepth = getSortableDepth(evt.to) + getHeight(evt.dragged);\n\n // Be careful here. Returning true is different than returning nothing in SortableJS.\n if (newDepth > maxAllowedDepth) {\n return false;\n }\n }\n\n // Get the depth of the sortable element from the root container\n function getSortableDepth(sortableElement) {\n const originatingGroup = Sortable.get(sortableElement).options.group.name;\n let depth = 0;\n let parentSortableElement = sortableElement;\n\n while ((parentSortableElement = parentSortableElement.parentElement.closest(nestedSortableSelector))) {\n const parentSortable = Sortable.get(parentSortableElement);\n if (parentSortable?.options.group.name === originatingGroup) {\n depth++;\n }\n }\n\n return depth;\n }\n\n // Find the max child depth in the tree, starting from the draggableElement\n function findMaxDepth(draggableElement) {\n const childSortableElement = draggableElement.querySelector(nestedSortableSelector);\n if (!childSortableElement) {\n return 1;\n }\n\n const children = childSortableElement.querySelectorAll(`.${draggableClass}`);\n const childDepths = Array.from(children).map(findMaxDepth);\n return 1 + Math.max(0, ...childDepths);\n }\n\n function getHeight(draggableElement) {\n return findMaxDepth(draggableElement) - 1;\n }\n\n function getNestableContainer(element) {\n return element.closest(nestableContainerSelector);\n }\n\n function getMaxNestingLevelSetting(element) {\n return getNestableContainer(element).getAttribute('data-max-depth') || 1;\n }\n\n // Create empty child sortables for all potential parents as appropriate for the given nesting level\n function makeEmptyChildSortablesForEligibleParents(container, nestingLevel) {\n if (nestingLevel <= 1) {\n return;\n }\n\n const sortableElement = container.querySelector(nestedSortableSelector);\n const sortable = Sortable.get(sortableElement);\n if (!sortable) {\n return;\n }\n\n const group = sortable.options.group.name;\n const draggableElements = Array.from(sortableElement.children)\n .filter(child => child.classList.contains(draggableClass));\n\n draggableElements.forEach(draggableElement => {\n if (!draggableElement.querySelector(nestedSortableSelector)) {\n const emptySortableElement = document.createElement(nestedSortableNodeName);\n emptySortableElement.className = nestedSortableClass;\n draggableElement.appendChild(emptySortableElement);\n new Sortable(emptySortableElement, { ...sortableOptions, group: group });\n }\n makeEmptyChildSortablesForEligibleParents(draggableElement, nestingLevel - 1);\n });\n }\n\n // Remove any empty sortables within the container. They could be empty lists, which are invalid for accessibility.\n function removeEmptySortables(container) {\n const sortableElements = container.querySelectorAll(nestedSortableSelector);\n sortableElements.forEach(sortableElement => {\n if (sortableElement.innerHTML.trim() === '') {\n const sortable = Sortable.get(sortableElement);\n if (sortable) {\n sortable.destroy();\n sortableElement.remove();\n }\n }\n });\n }\n\n // Traverse all sortables within a container and update the weight and parent_page inputs\n function updateWeightsAndRelationships(container) {\n const sortableElement = container.matches(nestedSortableSelector) ? container : container.querySelector(nestedSortableSelector);\n const nestingLevelSetting = getMaxNestingLevelSetting(sortableElement);\n const sortable = Sortable.get(sortableElement);\n const stack = [{nodes: sortable.toArray(), parentId: ''}];\n let weight = 0;\n\n while (stack.length > 0) {\n const {nodes, parentId} = stack.pop();\n\n nodes.forEach((nodeId) => {\n const node = findNode(nodeId, container);\n setWeight(node, weight++);\n\n if (nestingLevelSetting > 1) {\n setParent(node, parentId);\n const children = node.querySelector(nestedSortableSelector);\n if (children) {\n const sortableElement = Sortable.get(children);\n stack.push({nodes: sortableElement.toArray(), parentId: nodeId});\n }\n }\n });\n }\n }\n})();\n\nexport default Module\n","export default class {\n connect() {\n if ($('[role=tabpanel]').length > 0 && window.location.hash) {\n var tabpanel = $(window.location.hash).closest('[role=tabpanel]');\n $('a[role=tab][href=\"#'+tabpanel.attr('id')+'\"]').tab('show');\n }\n }\n}\n","// translationProgress is a plugin that updates the \"3/14\" progress\n// counters in the tabs of the translation adminstration dashboard.\n// This works by counting the number of progress items and translations\n// present (indicated by data attributes) in each tab's content\nexport default class {\n connect() {\n $('[data-behavior=\"translation-progress\"]').each(function(){\n var currentTab = $(this);\n var tabName = $(this).attr('aria-controls');\n var translationFields = $('#' + tabName).find('[data-translation-progress-item=\"true\"]');\n var completedTranslations = $('#' + tabName).find('[data-translation-present=\"true\"]');\n\n currentTab.find('span').text(completedTranslations.length + '/' + translationFields.length);\n })\n }\n}","// Blacklight's BookmarkToggle is doing the real work, this only adds/removes the \"blacklight-private\" class.\nconst VisibilityToggle = (e) => {\n if (e.target.matches('[data-checkboxsubmit-target=\"checkbox\"]')) {\n const form = e.target.closest('form')\n if (form) {\n // Add/remove the \"private\" label to the document row when visibility is toggled\n const docRow = form.closest('tr')\n if (docRow) docRow.classList.toggle('blacklight-private')\n }\n }\n}\ndocument.addEventListener('click', VisibilityToggle)\nexport default VisibilityToggle\n","export default class {\n connect() {\n var container;\n function edit_user(event) {\n event.preventDefault();\n $(this).closest('tr').hide();\n const id = $(this).attr('data-target') || $(this).attr('data-bs-target');\n const edit_view = $(\"[data-edit-for='\"+id+\"']\", container).show();\n $.each(edit_view.find('input[type=\"text\"], select'), function() {\n // Cache original values incase editing is canceled\n $(this).data('orig', $(this).val());\n });\n }\n\n function cancel_edit(event) {\n event.preventDefault();\n const id = $(this).closest('tr').attr('data-edit-for');\n const edit_view = $(\"[data-edit-for='\"+id+\"']\", container).hide();\n clear_errors(edit_view);\n rollback_changes(edit_view);\n $(\"[data-show-for='\"+id+\"']\", container).show();\n }\n\n function clear_errors(element) {\n element.find('.has-error')\n .removeClass('has-error')\n .find('.form-text')\n .remove(); // Remove the error messages\n }\n\n function rollback_changes(element) {\n $.each(element.find('input[type=\"text\"], select'), function() {\n $(this).val($(this).data('orig')).trigger('change');\n });\n }\n\n function destroy_user(event) {\n const id = $(this).attr('data-target') || $(this).attr('data-bs-target');\n $(\"[data-destroy-for='\"+id+\"']\", container).val('1');\n }\n\n function new_user(event) {\n event.preventDefault();\n const edit_view = $(\"[data-edit-for='new']\", container).show();\n $.each(edit_view.find('input[type=\"text\"], select'), function() {\n // Cache original values incase editing is canceled\n $(this).data('orig', $(this).val());\n });\n }\n\n function open_errors() {\n const edit_row = container.find('.has-error').closest('[data-edit-for]');\n edit_row.show();\n // The following row has the controls, so show it too.\n edit_row.next().show();\n }\n\n $('.edit_exhibit, .admin-users').each(function() {\n\n container = $(this);\n $('[data-edit-for]', container).hide();\n open_errors();\n $(\"[data-behavior='edit-user']\", container).on('click', edit_user);\n $(\"[data-behavior='cancel-edit']\", container).on('click', cancel_edit);\n $(\"[data-behavior='destroy-user']\", container).on('click', destroy_user);\n $(\"[data-behavior='new-user']\", container).on('click', new_user);\n })\n }\n}\n","import { fetchAutocompleteJSON } from 'spotlight/admin/search_typeahead';\n\n(function ($){\n SirTrevor.BlockMixins.Autocompleteable = {\n mixinName: \"Autocompleteable\",\n preload: true,\n\n initializeAutocompleteable: function() {\n this.on(\"onRender\", this.addAutocompletetoSirTrevorForm);\n\n if (this['autocomplete_url'] === undefined) {\n this.autocomplete_url = function() { return $('form[data-autocomplete-url]').data('autocomplete-url'); };\n }\n\n if (this['autocomplete_fetch'] === undefined) {\n this.autocomplete_fetch = this.fetchAutocompleteResults;\n }\n\n if (this['transform_autocomplete_results'] === undefined) {\n this.transform_autocomplete_results = (val) => val\n }\n\n if (this['highlight'] === undefined) {\n this.highlight = function(value) {\n if (!value) return '';\n const queryValue = this.getQueryValue().trim();\n return queryValue ? value.replace(new RegExp(queryValue, 'gi'), '<strong>$&</strong>') : value;\n }\n }\n\n if (this['autocomplete_control'] === undefined) {\n this.autocomplete_control = function() {\n const autocompleteID = this.autocompleteID();\n return `\n <auto-complete src=\"${this.autocomplete_url()}\" for=\"${autocompleteID}-popup\" fetch-on-empty>\n <input type=\"text\" name=\"${autocompleteID}\" placeholder=\"${i18n.t(\"blocks:autocompleteable:placeholder\")}\" data-default-typeahead>\n <ul id=\"${autocompleteID}-popup\"></ul>\n <div id=\"${autocompleteID}-popup-feedback\" class=\"sr-only visually-hidden\"></div>\n </auto-complete>\n ` };\n }\n\n if (this['autocomplete_element_template'] === undefined) {\n this.autocomplete_element_template = function(item) {\n return `<li role=\"option\" data-autocomplete-value=\"${item.id}\">${this.autocomplete_template(item)}</li>`\n }\n }\n },\n\n queryTokenizer: function(query) {\n return query.trim().toLowerCase().split(/\\s+/).filter(Boolean);\n },\n\n filterResults: function(data, query) {\n const queryStrings = this.queryTokenizer(query);\n return data.filter(item => {\n const lowerTitle = item.title.toLowerCase();\n return queryStrings.some(queryString => lowerTitle.includes(queryString));\n });\n },\n\n fetchAutocompleteResults: async function(url) {\n const result = await fetchAutocompleteJSON(url);\n const transformed = this.transform_autocomplete_results(result);\n this.fetchedData = {};\n transformed.map(item => this.fetchedData[item.id] = item);\n return transformed.map(item => this.autocomplete_element_template(item)).join('');\n },\n\n fetchOnceAndFilterLocalResults: async function(url) {\n if (this.fetchedData === undefined) {\n await this.fetchAutocompleteResults(url);\n }\n const query = url.searchParams.get('q');\n const data = Object.values(this.fetchedData);\n const filteredData = query ? this.filterResults(data, query) : data;\n return filteredData.map(item => this.autocomplete_element_template(item)).join('');\n },\n\n autocompleteID: function() {\n return this.blockID + '-autocomplete';\n },\n\n getQueryValue: function() {\n const completer = this.inner.querySelector(\"auto-complete > input\");\n return completer.value;\n },\n\n addAutocompletetoSirTrevorForm: function() {\n const completer = this.inner.querySelector(\"auto-complete\");\n completer.fetchResult = this.autocomplete_fetch.bind(this);\n completer.addEventListener('auto-complete-change', (e) => {\n const data = this.fetchedData[e.relatedTarget.value];\n if (e.relatedTarget.value && data) {\n e.value = e.relatedTarget.value = '';\n this.createItemPanel({ ...data, display: \"true\" });\n }\n });\n },\n },\n\n\n SirTrevor.Block.prototype.availableMixins.push(\"autocompleteable\");\n})(jQuery);\n","(function ($){\n SirTrevor.BlockMixins.Formable = {\n mixinName: \"Formable\",\n preload: true,\n\n initializeFormable: function() {\n\n if (this['afterLoadData'] === undefined) {\n this['afterLoadData'] = function(data) { };\n }\n },\n\n formId: function(id) {\n return this.blockID + \"_\" + id;\n },\n\n _serializeData: function() {\n\n var data = $(\":input,textarea,select\", this.inner).not(':input:radio').serializeJSON();\n\n $(':input:radio:checked', this.inner).each(function(index, input) {\n var key = $(input).data('key') || input.getAttribute('name');\n\n if (!key.match(\"\\\\[\")) {\n data[key] = $(input).val();\n }\n });\n\n /* Simple to start. Add conditions later */\n if (this.hasTextBlock()) {\n data.text = this.getTextBlockHTML();\n data.format = 'html';\n if (data.text && data.text.length > 0 && this.options.convertToMarkdown) {\n data.text = stToMarkdown(data.text, this.type);\n data.format = 'markdown';\n }\n }\n\n return data;\n },\n\n loadData: function(data){\n if (this.hasTextBlock()) {\n if (data.text && data.text.length > 0 && this.options.convertFromMarkdown && data.format !== \"html\") {\n this.setTextBlockHTML(SirTrevor.toHTML(data.text, this.type));\n } else {\n this.setTextBlockHTML(data.text);\n }\n }\n this.loadFormDataByKey(data);\n this.afterLoadData(data);\n },\n\n loadFormDataByKey: function(data) {\n $(':input', this.inner).not('button,:input[type=hidden]').each(function(index, input) {\n var key = $(input).data('key') || input.getAttribute('name');\n\n if (key) {\n\n if (key.match(\"\\\\[\\\\]$\")) {\n key = key.replace(\"[]\", \"\");\n }\n\n // by wrapping it in an array, this'll \"just work\" for radio and checkbox fields too\n var input_data = data[key];\n\n if (!(input_data instanceof Array)) {\n input_data = [input_data];\n }\n $(this).val(input_data);\n }\n });\n },\n },\n\n\n SirTrevor.Block.prototype.availableMixins.push(\"formable\");\n})(jQuery);\n","(function ($){\n SirTrevor.BlockMixins.Plustextable = {\n mixinName: \"Textable\",\n preload: true,\n\n initializeTextable: function() {\n if (this['formId'] === undefined) {\n this.withMixin(SirTrevor.BlockMixins.Formable);\n }\n \n if (this['show_heading'] === undefined) {\n this.show_heading = true;\n }\n },\n \n align_key:\"text-align\",\n text_key:\"item-text\",\n heading_key: \"title\",\n \n text_area: function() { \n return `\n <div class=\"row\">\n <div class=\"col-md-8\">\n <div class=\"form-group mb-3\">\n ${this.heading()}\n <div class=\"field\">\n <label for=\"${this.formId(this.text_key)}\" class=\"col-form-label\">${i18n.t(\"blocks:textable:text\")}</label>\n <div id=\"${this.formId(this.text_key)}\" class=\"st-text-block form-control\" contenteditable=\"true\"></div>\n </div>\n </div>\n </div>\n <div class=\"col-md-4\">\n <div class=\"text-align\">\n <p>${i18n.t(\"blocks:textable:align:title\")}</p>\n <input data-key=\"${this.align_key}\" type=\"radio\" name=\"${this.formId(this.align_key)}\" id=\"${this.formId(this.align_key + \"-left\")}\" value=\"left\" checked=\"true\">\n <label for=\"${this.formId(this.align_key + \"-left\")}\">${i18n.t(\"blocks:textable:align:left\")}</label>\n <input data-key=\"${this.align_key}\" type=\"radio\" name=\"${this.formId(this.align_key)}\" id=\"${this.formId(this.align_key + \"-right\")}\" value=\"right\">\n <label for=\"${this.formId(this.align_key + \"-right\")}\">${i18n.t(\"blocks:textable:align:right\")}</label>\n </div>\n </div>\n </div>`\n },\n \n heading: function() {\n if(this.show_heading) {\n return `<div class=\"field\">\n <label for=\"${this.formId(this.heading_key)}\" class=\"col-form-label\">${i18n.t(\"blocks:textable:heading\")}</label>\n <input type=\"text\" class=\"form-control\" id=\"${this.formId(this.heading_key)}\" name=\"${this.heading_key}\" />\n </div>`\n } else {\n return \"\";\n }\n },\n };\n \n\n SirTrevor.Block.prototype.availableMixins.push(\"plustextable\");\n})(jQuery);\n","import Core from 'spotlight/core'\n\n(function ($){\n Core.Block = SirTrevor.Block.extend({\n scribeOptions: {\n allowBlockElements: true,\n tags: { p: true }\n },\n formable: true,\n editorHTML: function() {\n return '';\n },\n beforeBlockRender: function() {\n this.availableMixins.forEach(function(mixin) {\n if (this[mixin] && SirTrevor.BlockMixins[this.capitalize(mixin)].preload) {\n this.withMixin(SirTrevor.BlockMixins[this.capitalize(mixin)]);\n }\n }, this);\n },\n $instance: function() { return $('#' + this.instanceID); },\n capitalize: function(string) {\n return string.charAt(0).toUpperCase() + string.substring(1).toLowerCase();\n }\n })\n})(jQuery);\n","import Core from 'spotlight/core'\nimport SpotlightNestable from 'spotlight/admin/spotlight_nestable'\n\nCore.Block.Resources = (function(){\n\n return Core.Block.extend({\n type: \"resources\",\n formable: true,\n autocompleteable: true,\n show_heading: true,\n show_image_selection: true,\n title: function() { return i18n.t(\"blocks:\" + this.type + \":title\"); },\n description: function() { return i18n.t(\"blocks:\" + this.type + \":description\"); },\n alt_text_guidelines: function() {\n if (this.showAltText()) {\n return i18n.t(\"blocks:alt_text_guidelines:intro\");\n }\n return \"\";\n },\n alt_text_guidelines_link: function() {\n if (this.showAltText()) {\n var link_url = i18n.t(\"blocks:alt_text_guidelines:link_url\");\n var link_label = i18n.t(\"blocks:alt_text_guidelines:link_label\");\n return '<a target=\"_blank\" href=\"' + link_url + '\">' + link_label + '</a>';\n }\n return \"\";\n },\n icon_name: \"resources\",\n blockGroup: function() { return i18n.t(\"blocks:group:items\") },\n\n primary_field_key: \"primary-caption-field\",\n show_primary_field_key: \"show-primary-caption\",\n secondary_field_key: \"secondary-caption-field\",\n show_secondary_field_key: \"show-secondary-caption\",\n\n display_checkbox: \"display-checkbox\",\n decorative_checkbox: \"decorative-checkbox\",\n alt_text_textarea: \"alt-text-textarea\",\n\n globalIndex: 0,\n\n _itemPanelIiifFields: function(index, data) {\n return [];\n },\n\n _altTextFieldsHTML: function(index, data) {\n if (this.showAltText()) {\n return this.altTextHTML(index, data);\n }\n return \"\";\n },\n\n showAltText: function() {\n return this.editorOptions.altTextSettings[this._typeAsCamelCase()]\n },\n\n _typeAsCamelCase: function() {\n return this.type\n .split('_')\n .map(word => word.charAt(0).toUpperCase() + word.slice(1))\n .join('');\n },\n _itemSelectImageLink: function(block_item_id, doc_id, index) {\n // If image selection is not possible for this block, then do not show\n // image selection link\n if (!this.show_image_selection) return ``;\n var url = $('form[data-exhibit-path]').data('exhibit-path') + '/select_image?';\n var markup = `\n <a name=\"selectimage\" href=\"${url}block_item_id=${block_item_id}&index_id=${index}\" data-blacklight-modal=\"trigger\">Select image area</a>\n `;\n return markup;\n },\n _itemPanel: function(data) {\n var index = \"item_\" + this.globalIndex++;\n var checked;\n if (data.display == \"true\") {\n checked = \"checked='checked'\"\n } else {\n checked = \"\";\n }\n var resource_id = data.slug || data.id;\n var block_item_id = this.formId(index);\n var markup = `\n <li class=\"field dd-item dd3-item\" data-cropper=\"select_image_${block_item_id}\" data-resource-id=\"${resource_id}\" data-id=\"${index}\" id=\"${block_item_id}\" data-input-prefix=\"item[${index}]\">\n <input type=\"hidden\" name=\"item[${index}][id]\" value=\"${resource_id}\" />\n <input type=\"hidden\" name=\"item[${index}][title]\" value=\"${data.title}\" />\n ${this._itemPanelIiifFields(index, data)}\n <input data-property=\"weight\" type=\"hidden\" name=\"item[${index}][weight]\" value=\"${data.weight}\" />\n <div class=\"card d-flex dd3-content\">\n <div class=\"dd-handle dd3-handle\">${i18n.t(\"blocks:resources:panel:drag\")}</div>\n <div class=\"card-header item-grid\">\n <div class=\"d-flex\">\n <div class=\"d-inline-block\">\n <div class=\"d-flex\">\n <div class=\"checkbox\">\n <input name=\"item[${index}][display]\" type=\"hidden\" value=\"false\" />\n <input name=\"item[${index}][display]\" id=\"${this.formId(this.display_checkbox + '_' + data.id)}\" type=\"checkbox\" ${checked} class=\"item-grid-checkbox\" value=\"true\" />\n <label class=\"sr-only visually-hidden\" for=\"${this.formId(this.display_checkbox + '_' + data.id)}\">${i18n.t(\"blocks:resources:panel:display\")}</label>\n </div>\n <div class=\"pic\">\n <img class=\"img-thumbnail\" src=\"${(data.thumbnail_image_url || ((data.iiif_tilesource || \"\").replace(\"/info.json\", \"/full/!100,100/0/default.jpg\")))}\" />\n </div>\n </div>\n <div class=\"d-inline-block\">\n ${this._itemSelectImageLink(block_item_id,data.id, index)}\n </div>\n </div>\n <div class=\"main\">\n <div class=\"title card-title\">${data.title}</div>\n <div>${(data.slug || data.id)}</div>\n ${this._altTextFieldsHTML(index, data)}\n </div>\n <div class=\"remove float-right float-end\">\n <a data-item-grid-panel-remove=\"true\" href=\"#\">${i18n.t(\"blocks:resources:panel:remove\")}</a>\n </div>\n </div>\n <div data-panel-image-pagination=\"true\"></div>\n </div>\n </div>\n </li>\n `\n\n const panel = $(markup);\n var context = this;\n\n $('.remove a', panel).on('click', function(e) {\n e.preventDefault();\n $(this).closest('.field').remove();\n context.afterPanelDelete();\n\n });\n\n this.afterPanelRender(data, panel);\n\n return panel;\n },\n\n afterPanelRender: function(data, panel) {\n \n },\n\n afterPanelDelete: function() {\n\n },\n\n createItemPanel: function(data) {\n var panel = this._itemPanel(data);\n this.attachAltTextHandlers(panel);\n $(panel).appendTo($('.panels > ol', this.inner));\n $('[data-behavior=\"nestable\"]', this.inner).trigger('change');\n },\n\n item_options: function() { return \"\"; },\n\n content: function() {\n var templates = [this.items_selector()];\n if (this.plustextable) {\n templates.push(this.text_area());\n }\n return templates.join(\"<hr />\\n\");\n },\n\n items_selector: function() { return [\n '<div class=\"row\">',\n '<div class=\"col-md-8\">',\n '<div class=\"form-group mb-3\">',\n '<div class=\"panels dd nestable-item-grid\" data-behavior=\"nestable\" data-max-depth=\"1\"><ol class=\"dd-list\"></ol></div>',\n this.autocomplete_control(),\n '</div>',\n '</div>',\n '<div class=\"col-md-4\">',\n this.item_options(),\n '</div>',\n '</div>'].join(\"\\n\")\n },\n\n editorHTML: function() {\n return `<div class=\"form resources-admin clearfix\">\n <div class=\"widget-header\">\n ${this.description()}\n ${this.alt_text_guidelines()}\n ${this.alt_text_guidelines_link()}\n </div>\n ${this.content()}\n </div>`\n },\n\n _altTextData: function(data) {\n const isDecorative = data.decorative;\n const altText = isDecorative ? '' : (data.alt_text || '');\n const altTextBackup = data.alt_text_backup || '';\n const placeholderAttr = isDecorative ? '' : `placeholder=\"${i18n.t(\"blocks:resources:alt_text:placeholder\")}\"`;\n const disabledAttr = isDecorative ? 'disabled' : '';\n\n return { isDecorative, altText, altTextBackup, placeholderAttr, disabledAttr };\n },\n\n altTextHTML: function(index, data) {\n const { isDecorative, altText, altTextBackup, placeholderAttr, disabledAttr } = this._altTextData(data);\n return `<div class=\"mt-2 pt-2 d-flex\">\n <div class=\"me-2 mr-2\">\n <label class=\"col-form-label pb-0 pt-1\" for=\"${this.formId(this.alt_text_textarea + '_' + data.id)}\">${i18n.t(\"blocks:resources:alt_text:alternative_text\")}</label>\n <div class=\"form-check mb-1 justify-content-end\">\n <input class=\"form-check-input\" type=\"checkbox\"\n id=\"${this.formId(this.decorative_checkbox + '_' + data.id)}\" name=\"item[${index}][decorative]\" ${isDecorative ? 'checked' : ''}>\n <label class=\"form-check-label\" for=\"${this.formId(this.decorative_checkbox + '_' + data.id)}\">${i18n.t(\"blocks:resources:alt_text:decorative\")}</label>\n </div>\n </div>\n <div class=\"flex-grow-1 flex-fill d-flex\">\n <input type=\"hidden\" name=\"item[${index}][alt_text_backup]\" value=\"${altTextBackup}\" />\n <textarea class=\"form-control w-100\" rows=\"2\" ${placeholderAttr}\n id=\"${this.formId(this.alt_text_textarea + '_' + data.id)}\" name=\"item[${index}][alt_text]\" ${disabledAttr}>${altText}</textarea>\n </div>\n </div>`\n },\n\n attachAltTextHandlers: function(panel) {\n if (this.showAltText()) {\n const decorativeCheckbox = $('input[name$=\"[decorative]\"]', panel);\n const altTextInput = $('textarea[name$=\"[alt_text]\"]', panel);\n const altTextBackupInput = $('input[name$=\"[alt_text_backup]\"]', panel);\n\n decorativeCheckbox.on('change', function() {\n const isDecorative = this.checked;\n if (isDecorative) {\n altTextBackupInput.val(altTextInput.val());\n altTextInput.val('');\n } else {\n altTextInput.val(altTextBackupInput.val());\n }\n altTextInput\n .prop('disabled', isDecorative)\n .attr('placeholder', isDecorative ? '' : i18n.t(\"blocks:resources:alt_text:placeholder\"));\n });\n\n altTextInput.on('input', function() {\n $(this).data('lastValue', $(this).val());\n });\n }\n },\n\n onBlockRender: function() {\n SpotlightNestable.init($('[data-behavior=\"nestable\"]', this.inner));\n $('[data-input-select-target]', this.inner).selectRelatedInput();\n },\n\n afterLoadData: function(data) {\n var context = this;\n $.each(Object.keys(data.item || {}).map(function(k) { return data.item[k]}).sort(function(a,b) { return a.weight - b.weight; }), function(index, item) {\n context.createItemPanel(item);\n });\n \n }\n });\n\n})();\n","import Core from 'spotlight/core'\n\nSirTrevor.Blocks.Browse = (function(){\n\n return Core.Block.Resources.extend({\n type: \"browse\",\n\n icon_name: \"browse\",\n\n autocomplete_url: function() {\n return document.getElementById(this.instanceID).closest('form[data-autocomplete-exhibit-searches-path]').dataset.autocompleteExhibitSearchesPath;\n },\n\n autocomplete_fetch: function(url) {\n return this.fetchOnceAndFilterLocalResults(url);\n },\n\n autocomplete_template: function(obj) {\n const thumbnail = obj.thumbnail_image_url ? `<div class=\"document-thumbnail\"><img class=\"img-thumbnail\" src=\"${obj.thumbnail_image_url}\" /></div>` : ''\n const description = obj.description ? `<small>&nbsp;&nbsp;${obj.description}</small>` : '';\n return `<div class=\"autocomplete-item${!obj.published ? ' blacklight-private' : ''}\">${thumbnail}\n <span class=\"autocomplete-title\">${this.highlight(obj.full_title)}</span>${description}</div>`;\n },\n\n _itemPanel: function(data) {\n var index = \"item_\" + this.globalIndex++;\n var checked;\n if (data.display == \"true\") {\n checked = \"checked='checked'\"\n } else {\n checked = \"\";\n }\n var resource_id = data.slug || data.id;\n var markup = `\n <li class=\"field dd-item dd3-item\" data-resource-id=\"${resource_id}\" data-id=\"${index}\" id=\"${this.formId(index)}\">\n <input type=\"hidden\" name=\"item[${index}][id]\" value=\"${resource_id}\" />\n <input type=\"hidden\" name=\"item[${index}][full_title]\" value=\"${(data.full_title || data.title)}\" />\n <input data-property=\"weight\" type=\"hidden\" name=\"item[${index}][weight]\" value=\"${data.weight}\" />\n <div class=\"card d-flex dd3-content\">\n <div class=\"dd-handle dd3-handle\">${i18n.t(\"blocks:resources:panel:drag\")}</div>\n <div class=\"card-header item-grid\">\n <div class=\"d-flex\">\n <div class=\"checkbox\">\n <input name=\"item[${index}][display]\" type=\"hidden\" value=\"false\" />\n <input name=\"item[${index}][display]\" id=\"${this.formId(this.display_checkbox + '_' + data.id)}\" type=\"checkbox\" ${checked} class=\"item-grid-checkbox\" value=\"true\" />\n <label class=\"sr-only visually-hidden\" for=\"${this.formId(this.display_checkbox + '_' + data.id)}\">${i18n.t(\"blocks:resources:panel:display\")}</label>\n </div>\n <div class=\"pic\">\n <img class=\"img-thumbnail\" src=\"${(data.thumbnail_image_url || ((data.iiif_tilesource || \"\").replace(\"/info.json\", \"/full/!100,100/0/default.jpg\")))}\" />\n </div>\n <div class=\"main\">\n <div class=\"title card-title\">${(data.full_title || data.title)}</div>\n <div>${(data.slug || data.id)}</div>\n </div>\n <div class=\"remove float-right float-end\">\n <a data-item-grid-panel-remove=\"true\" href=\"#\">${i18n.t(\"blocks:resources:panel:remove\")}</a>\n </div>\n </div>\n </div>\n </div>\n </li>`\n\n var panel = $(markup);\n var context = this;\n\n $('.remove a', panel).on('click', function(e) {\n e.preventDefault();\n $(this).closest('.field').remove();\n context.afterPanelDelete();\n\n });\n\n this.afterPanelRender(data, panel);\n\n return panel;\n },\n\n item_options: function() { return `\n <label>\n <input type=\"hidden\" name=\"display-item-counts\" value=\"false\" />\n <input type=\"checkbox\" name=\"display-item-counts\" value=\"true\" checked />\n ${i18n.t(\"blocks:browse:item_counts\")}\n </label>`\n },\n });\n\n})();\n","/*\n Sir Trevor BrowseGroupCategories\n*/\nimport Core from 'spotlight/core'\n\nSirTrevor.Blocks.BrowseGroupCategories = (function(){\n\n return Core.Block.Resources.extend({\n type: \"browse_group_categories\",\n icon_name: \"browse\",\n\n autocomplete_control: function() {\n const autocompleteID = this.blockID + '-autocomplete';\n return `<auto-complete src=\"${this.autocomplete_url()}\" for=\"${autocompleteID}-popup\" fetch-on-empty>\n <input type=\"text\" name=\"${autocompleteID}\" placeholder=\"${i18n.t(\"blocks:browse_group_categories:autocomplete\")}\" data-default-typeahead>\n <ul id=\"${autocompleteID}-popup\"></ul>\n <div id=\"${autocompleteID}-popup-feedback\" class=\"sr-only visually-hidden\"></div>\n </auto-complete>`\n },\n autocomplete_template: function(obj) {\n return `<div class=\"autocomplete-item${!obj.published ? ' blacklight-private' : ''}\">\n <span class=\"autocomplete-title\">${this.highlight(obj.title)}</span><br/></div>`\n },\n\n autocomplete_url: function() {\n return document.getElementById(this.instanceID).closest('form[data-autocomplete-exhibit-browse-groups-path]').dataset.autocompleteExhibitBrowseGroupsPath;\n },\n autocomplete_fetch: function(url) {\n return this.fetchOnceAndFilterLocalResults(url);\n },\n _itemPanel: function(data) {\n var index = \"item_\" + this.globalIndex++;\n var checked;\n if (data.display == \"true\") {\n checked = \"checked='checked'\"\n } else {\n checked = \"\";\n }\n var resource_id = data.slug || data.id;\n var markup = `\n <li class=\"field dd-item dd3-item\" data-resource-id=\"${resource_id}\" data-id=\"${index}\" id=\"${this.formId(index)}\">\n <input type=\"hidden\" name=\"item[${index}][id]\" value=\"${resource_id}\" />\n <input type=\"hidden\" name=\"item[${index}][title]\" value=\"${data.title}\" />\n <input data-property=\"weight\" type=\"hidden\" name=\"item[${index}][weight]\" value=\"${data.weight}\" />\n <div class=\"card d-flex dd3-content\">\n <div class=\"dd-handle dd3-handle\">${i18n.t(\"blocks:resources:panel:drag\")}</div>\n <div class=\"d-flex card-header item-grid justify-content-between\">\n <div class=\"d-flex flex-grow-1\">\n <div class=\"checkbox\">\n <input name=\"item[${index}][display]\" type=\"hidden\" value=\"false\" />\n <input name=\"item[${index}][display]\" id=\"${this.formId(this.display_checkbox + '_' + data.id)}\" type=\"checkbox\" ${checked} class=\"item-grid-checkbox\" value=\"true\" />\n <label class=\"sr-only visually-hidden\" for=\"${this.formId(this.display_checkbox + '_' + data.id)}\">${i18n.t(\"blocks:resources:panel:display\")}</label>\n </div>\n <div class=\"main\">\n <div class=\"title card-title\">${data.title}</div>\n </div>\n </div>\n <div class=\"d-flex\">\n <a data-item-grid-panel-remove=\"true\" href=\"#\">${i18n.t(\"blocks:resources:panel:remove\")}</a>\n </div>\n </div>\n </div>\n </li>`\n\n const panel = $(markup);\n var context = this;\n\n $('a[data-item-grid-panel-remove]', panel).on('click', function(e) {\n e.preventDefault();\n $(this).closest('.field').remove();\n context.afterPanelDelete();\n\n });\n\n this.afterPanelRender(data, panel);\n\n return panel;\n },\n\n item_options: function() { return `\n <label>\n <input type=\"hidden\" name=\"display-item-counts\" value=\"false\" />\n <input type=\"checkbox\" name=\"display-item-counts\" value=\"true\" checked />\n ${i18n.t(\"blocks:browse_group_categories:item_counts\")}\n </label>`\n },\n });\n})();\n","/*\n Sir Trevor ItemText Block.\n This block takes an ID,\n fetches the record from solr,\n displays the image, title, \n and any provided text\n and displays them.\n*/\n\nSirTrevor.Blocks.Iframe = (function(){\n\n return SirTrevor.Block.extend({\n type: \"Iframe\",\n formable: true,\n \n title: function() { return i18n.t('blocks:iframe:title'); },\n description: function() { return i18n.t('blocks:iframe:description'); },\n\n icon_name: \"iframe\",\n \n editorHTML: function() {\n return `<div class=\"clearfix\">\n <div class=\"widget-header\">\n ${this.description()}\n </div>\n <textarea name=\"code\" class=\"form-control\" rows=\"5\" placeholder=\"${i18n.t(\"blocks:iframe:placeholder\")}\"></textarea>\n </div>`;\n }\n });\n})();","SirTrevor.Blocks.LinkToSearch = (function(){\n\n return SirTrevor.Blocks.Browse.extend({\n\n type: \"link_to_search\",\n\n icon_name: 'search_results',\n\n searches_key: \"slug\",\n view_key: \"view\",\n plustextable: false,\n\n });\n})();\n","/*\n Sir Trevor ItemText Block.\n This block takes an ID,\n fetches the record from solr,\n displays the image, title, \n and any provided text\n and displays them.\n*/\nimport Core from 'spotlight/core'\n\nSirTrevor.Blocks.Oembed = (function(){\n\n return Core.Block.extend({\n plustextable: true,\n\n id_key:\"url\",\n\n type: \"oembed\",\n \n title: function() { return i18n.t('blocks:oembed:title'); },\n description: function() { return i18n.t('blocks:oembed:description'); },\n\n icon_name: \"oembed\",\n show_heading: false,\n\n editorHTML: function () {\n return `<div class=\"form oembed-text-admin clearfix\">\n <div class=\"widget-header\">\n ${this.description()}\n </div>\n <div class=\"row\">\n <div class=\"form-group mb-3 col-md-8\">\n <label for=\"${this.formId(this.id_key)}\">${i18n.t(\"blocks:oembed:url\")}</label>\n <input name=\"${this.id_key}\" class=\"form-control col-md-6\" type=\"text\" id=\"${this.formId(this.id_key)}\" />\n </div>\n </div>\n ${this.text_area()}\n </div>`\n }\n });\n})();","import Core from 'spotlight/core'\n\nSirTrevor.Blocks.FeaturedPages = (function(){\n\n return Core.Block.Resources.extend({\n type: \"featured_pages\",\n\n icon_name: \"pages\",\n\n autocomplete_url: function() { return document.getElementById(this.instanceID).closest('form[data-autocomplete-exhibit-pages-path]').dataset.autocompleteExhibitPagesPath; },\n autocomplete_fetch: function(url) {\n return this.fetchOnceAndFilterLocalResults(url);\n },\n autocomplete_template: function(obj) {\n const description = obj.description ? `<small>&nbsp;&nbsp;${obj.description}</small>` : '';\n const thumbnail = obj.thumbnail_image_url ? `<div class=\"document-thumbnail\"><img class=\"img-thumbnail\" src=\"${obj.thumbnail_image_url}\" /></div>` : ''\n return `<div class=\"autocomplete-item${!obj.published ? ' blacklight-private' : ''}\">${thumbnail}\n <span class=\"autocomplete-title\">${this.highlight(obj.title)}</span><br/>${description}</div>`\n },\n });\n\n})();\n","/*\n Sir Trevor ItemText Block.\n This block takes an ID,\n fetches the record from solr,\n displays the image, title, \n and any provided text\n and displays them.\n*/\n\nSirTrevor.Blocks.Rule = (function(){\n\n return SirTrevor.Block.extend({\n type: \"rule\",\n \n title: function() { return i18n.t('blocks:rule:title'); },\n\n icon_name: \"rule\",\n \n editorHTML: function() {\n return '<hr />'\n }\n });\n})();","//= require spotlight/admin/blocks/browse_block\n\nSirTrevor.Blocks.SearchResults = (function(){\n\n return SirTrevor.Blocks.Browse.extend({\n\n type: \"search_results\",\n\n icon_name: 'search_results',\n\n searches_key: \"slug\",\n view_key: \"view\",\n plustextable: false,\n\n content: function() {\n return this.items_selector()\n },\n\n item_options: function() {\n var block = this;\n var fields = $('[data-blacklight-configuration-search-views]').data('blacklight-configuration-search-views');\n\n return $.map(fields, function(field) {\n return `<div>\n <label for='${block.formId(block.view_key + field.key)}'>\n <input id='${block.formId(block.view_key + field.key)}' name='${block.view_key}[]' type='checkbox' value='${field.key}' />\n ${field.label}\n </label>\n </div>`\n }).join(\"\\n\");\n },\n\n afterPanelRender: function(data, panel) {\n $(this.inner).find('.item-input-field').attr(\"disabled\", \"disabled\");\n },\n\n afterPanelDelete: function() {\n $(this.inner).find('.item-input-field').removeAttr(\"disabled\");\n },\n\n });\n})();\n","import Iiif from 'spotlight/admin/iiif'\nimport Core from 'spotlight/core'\n\nSirTrevor.Blocks.SolrDocumentsBase = (function(){\n\n return Core.Block.Resources.extend({\n plustextable: true,\n autocomplete_url: function() { return this.$instance().closest('form[data-autocomplete-exhibit-catalog-path]').data('autocomplete-exhibit-catalog-path') },\n autocomplete_template: function(obj) {\n const thumbnail = obj.thumbnail ? `<div class=\"document-thumbnail\"><img class=\"img-thumbnail\" src=\"${obj.thumbnail}\" /></div>` : ''\n return `<div class=\"autocomplete-item${obj.private ? ' blacklight-private' : ''}\">${thumbnail}\n <span class=\"autocomplete-title\">${this.highlight(obj.title)}</span><br/><small>&nbsp;&nbsp;${this.highlight(obj.description)}</small></div>`\n },\n transform_autocomplete_results: function(response) {\n return $.map(response['docs'], function(doc) {\n return doc;\n })\n },\n\n caption_option_values: function() {\n var fields = $('[data-blacklight-configuration-index-fields]').data('blacklight-configuration-index-fields');\n\n return $.map(fields, function(field) {\n return $('<option />').val(field.key).text(field.label)[0].outerHTML;\n }).join(\"\\n\");\n },\n\n item_options: function() { return this.caption_options(); },\n\n caption_options: function() { return `\n <div class=\"field-select primary-caption\" data-behavior=\"item-caption-admin\">\n <input name=\"${this.show_primary_field_key}\" type=\"hidden\" value=\"false\" />\n <input data-input-select-target=\"#${this.formId(this.primary_field_key)}\" name=\"${this.show_primary_field_key}\" id=\"${this.formId(this.show_primary_field_key)}\" type=\"checkbox\" value=\"true\" />\n <label for=\"${this.formId(this.show_primary_field_key)}\">${i18n.t(\"blocks:solr_documents:caption:primary\")}</label>\n <select data-input-select-target=\"#${this.formId(this.show_primary_field_key)}\" name=\"${this.primary_field_key}\" id=\"${this.formId(this.primary_field_key)}\">\n <option value=\"\">${i18n.t(\"blocks:solr_documents:caption:placeholder\")}</option>\n ${this.caption_option_values()}\n </select>\n </div>\n <div class=\"field-select secondary-caption\" data-behavior=\"item-caption-admin\">\n <input name=\"${this.show_secondary_field_key}\" type=\"hidden\" value=\"false\" />\n <input data-input-select-target=\"#${this.formId(this.secondary_field_key)}\" name=\"${this.show_secondary_field_key}\" id=\"${this.formId(this.show_secondary_field_key)}\" type=\"checkbox\" value=\"true\" />\n <label for=\"${this.formId(this.show_secondary_field_key)}\">${i18n.t(\"blocks:solr_documents:caption:secondary\")}</label>\n <select data-input-select-target=\"#${this.formId(this.show_secondary_field_key)}\" name=\"${this.secondary_field_key}\" id=\"${this.formId(this.secondary_field_key)}\">\n <option value=\"\">${i18n.t(\"blocks:solr_documents:caption:placeholder\")}</option>\n ${this.caption_option_values()}\n </select>\n </div>\n `},\n\n // Sets the first version of the IIIF information from autocomplete data.\n _itemPanelIiifFields: function(index, autocomplete_data) {\n var iiifFields = [\n '<input type=\"hidden\" name=\"item[' + index + '][thumbnail_image_url]\" value=\"' + (autocomplete_data.thumbnail_image_url || autocomplete_data.thumbnail || \"\") + '\"/>',\n '<input type=\"hidden\" name=\"item[' + index + '][full_image_url]\" value=\"' + (autocomplete_data.full_image_url || autocomplete_data.thumbnail_image_url || autocomplete_data.thumbnail || \"\") + '\"/>',\n '<input type=\"hidden\" name=\"item[' + index + '][iiif_tilesource]\" value=\"' + (autocomplete_data.iiif_tilesource) + '\"/>',\n '<input type=\"hidden\" name=\"item[' + index + '][iiif_manifest_url]\" value=\"' + (autocomplete_data.iiif_manifest_url) + '\"/>',\n '<input type=\"hidden\" name=\"item[' + index + '][iiif_canvas_id]\" value=\"' + (autocomplete_data.iiif_canvas_id) + '\"/>',\n '<input type=\"hidden\" name=\"item[' + index + '][iiif_image_id]\" value=\"' + (autocomplete_data.iiif_image_id) + '\"/>',\n ];\n\n // The region input is required for widgets that enable image cropping but not otherwise\n if(this.show_image_selection) {\n iiifFields.push('<input type=\"hidden\" name=\"item[' + index + '][iiif_region]\" value=\"' + (autocomplete_data.iiif_region || \"\") + '\"/>');\n }\n\n return iiifFields.join(\"\\n\");\n },\n // Overwrites the hidden inputs from _itemPanelIiifFields with data from the\n // manifest. Called by afterPanelRender - the manifest_data here is built\n // from canvases in the manifest, transformed by spotlight/admin/iiif.js in\n // the #images method.\n setIiifFields: function(panel, manifest_data, initialize) {\n var legacyThumbnailField = $(panel).find('[name$=\"[thumbnail_image_url]\"]')\n var legacyFullField = $(panel).find('[name$=\"[full_image_url]\"]')\n\n if (initialize && legacyThumbnailField.val().length > 0) {\n return;\n }\n\n legacyThumbnailField.val(\"\");\n legacyFullField.val(\"\");\n $(panel).find('[name$=\"[iiif_image_id]\"]').val(manifest_data.imageId);\n $(panel).find('[name$=\"[iiif_tilesource]\"]').val(manifest_data.tilesource);\n $(panel).find('[name$=\"[iiif_manifest_url]\"]').val(manifest_data.manifest);\n $(panel).find('[name$=\"[iiif_canvas_id]\"]').val(manifest_data.canvasId);\n $(panel).find('img.img-thumbnail').attr('src', manifest_data.thumbnail_image_url || manifest_data.tilesource.replace(\"/info.json\", \"/full/100,100/0/default.jpg\"));\n },\n afterPanelRender: function(data, panel) {\n var context = this;\n var manifestUrl = data.iiif_manifest || data.iiif_manifest_url;\n\n if (!manifestUrl) {\n $(panel).find('[name$=\"[thumbnail_image_url]\"]').val(data.thumbnail_image_url || data.thumbnail);\n $(panel).find('[name$=\"[full_image_url]\"]').val(data.full_image_url);\n\n return;\n }\n\n $.ajax(manifestUrl).done(\n function(manifest) {\n var iiifManifest = new Iiif(manifestUrl, manifest);\n\n var thumbs = iiifManifest.imagesArray();\n\n if (!data.iiif_image_id) {\n context.setIiifFields(panel, thumbs[0], !!data.iiif_manifest_url);\n }\n\n\n if(thumbs.length > 1) {\n panel.multiImageSelector(thumbs, function(selectorImage) {\n context.setIiifFields(panel, selectorImage, false);\n }, data.iiif_image_id);\n }\n }\n );\n }\n });\n\n})();\n","//= require spotlight/admin/blocks/solr_documents_base_block\n\nSirTrevor.Blocks.SolrDocuments = (function(){\n\n return SirTrevor.Blocks.SolrDocumentsBase.extend({\n type: \"solr_documents\",\n\n icon_name: \"items\",\n\n item_options: function() { return this.caption_options() + this.zpr_option(); },\n\n zpr_option: function() {\n return `\n <div>\n <input name=\"${this.zpr_key}\" type=\"hidden\" value=\"false\" />\n <input name=\"${this.zpr_key}\" id=\"${this.formId(this.zpr_key)}\" data-key=\"${this.zpr_key}\" type=\"checkbox\" value=\"true\" />\n <label for=\"${this.formId(this.zpr_key)}\">${i18n.t(\"blocks:solr_documents:zpr:title\")}</label>\n </div>\n `\n },\n\n zpr_key: 'zpr_link'\n });\n\n})();\n","//= require spotlight/admin/blocks/solr_documents_base_block\n\nSirTrevor.Blocks.SolrDocumentsCarousel = (function(){\n\n return SirTrevor.Blocks.SolrDocumentsBase.extend({\n plustextable: false,\n type: \"solr_documents_carousel\",\n\n icon_name: \"item_carousel\",\n\n auto_play_images_key: \"auto-play-images\",\n auto_play_images_interval_key: \"auto-play-images-interval\",\n max_height_key: \"max-height\",\n\n carouselCycleTimesInSeconds: {\n values: [ 3, 5, 8, 12, 20 ],\n selected: 5\n },\n\n carouselMaxHeights: {\n values: { 'Small': 'small', 'Medium': 'medium', 'Large': 'large' },\n selected: 'Medium'\n },\n\n item_options: function() {\n return `${this.caption_options()}\n <div class=\"field-select auto-cycle-images\" data-behavior=\"auto-cycle-images\">\n <input name=\"${this.auto_play_images_key}\" type=\"hidden\" value=\"false\" />\n <input name=\"${this.auto_play_images_key}\" id=\"${this.formId(this.auto_play_images_key)}\" data-key=\"${this.auto_play_images_key}\" type=\"checkbox\" value=\"true\" checked/>\n <label for=\"${this.formId(this.auto_play_images_key)}\">${i18n.t(\"blocks:solr_documents_carousel:interval:title\")}</label>\n <select name=\"${this.auto_play_images_interval_key}\" id=\"${this.formId(this.auto_play_images_interval_key)}\" data=key=\"${this.auto_play_images_interval_key}\">\n <option value=\"\">${i18n.t(\"blocks:solr_documents_carousel:interval:placeholder\")}</option>\n ${this.addCarouselCycleOptions(this.carouselCycleTimesInSeconds)}\n </select>\n </div>\n <div class=\"field-select max-heights\" data-behavior=\"max-heights\">\n <label for=\"${this.formId(this.max_height_key)}\">${i18n.t(\"blocks:solr_documents_carousel:height:title\")}</label><br/>\n ${this.addCarouselMaxHeightOptions(this.carouselMaxHeights)}\n </div>`\n },\n\n addCarouselCycleOptions: function(options) {\n var html = '';\n\n $.each(options.values, function(index, interval) {\n var selected = (interval === options.selected) ? 'selected' : '',\n intervalInMilliSeconds = parseInt(interval, 10) * 1000;\n\n html += '<option value=\"' + intervalInMilliSeconds + '\" ' + selected + '>' + interval + ' seconds</option>';\n });\n\n return html;\n },\n\n addCarouselMaxHeightOptions: function(options) {\n var html = '',\n _this = this;\n\n $.each(options.values, function(size, px) {\n var checked = (size === options.selected) ? 'checked' : '',\n id = _this.formId(_this.max_height_key)\n\n html += '<input data-key=\"' + _this.max_height_key + '\" type=\"radio\" name=\"' + id + '\" value=\"' + px + '\" id=\"' + id + '\" ' + checked + '>';\n html += '<label class=\"carousel-size\" for=\"' + id + '\">' + size + '</label>';\n });\n\n return html;\n },\n\n afterPreviewLoad: function(options) {\n $(this.inner).find('.carousel').carousel();\n\n // the bootstrap carousel only initializes data-bs-slide widgets on page load, so we need\n // to initialize them ourselves..\n var clickHandler = function (e) {\n var href\n var $this = $(this)\n var $target = $($this.attr('data-target') || $this.attr('data-bs-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '')) // strip for ie7\n if (!$target.hasClass('carousel')) return\n var options = $.extend({}, $target.data(), $this.data())\n var slideIndex = $this.attr('data-slide-to') || $this.attr('data-bs-slide-to')\n if (slideIndex) options.interval = false\n\n $.fn.carousel.call($target, options)\n\n if (slideIndex) {\n $target.data('bs.carousel').to(slideIndex)\n }\n\n e.preventDefault()\n }\n\n $(this.inner).find('.carousel')\n .on('click.bs.carousel.data-api', '[data-slide], [data-bs-slide]', clickHandler)\n .on('click.bs.carousel.data-api', '[data-slide-to], [data-bs-slide-to]', clickHandler)\n }\n\n });\n\n})();\n","//= require spotlight/admin/blocks/solr_documents_base_block\n\nSirTrevor.Blocks.SolrDocumentsEmbed = (function(){\n\n return SirTrevor.Blocks.SolrDocumentsBase.extend({\n type: \"solr_documents_embed\",\n icon_name: \"item_embed\",\n show_image_selection: false,\n\n item_options: function() { return \"\" },\n\n afterPreviewLoad: function(options) {\n $(this.inner).find('picture[data-openseadragon]').openseadragon();\n }\n });\n\n})();\n","//= require spotlight/admin/blocks/solr_documents_base_block\n\nSirTrevor.Blocks.SolrDocumentsFeatures = (function(){\n\n return SirTrevor.Blocks.SolrDocumentsBase.extend({\n plustextable: false,\n type: \"solr_documents_features\",\n\n icon_name: \"item_features\",\n\n afterPreviewLoad: function(options) {\n $(this.inner).find('.carousel').carousel();\n\n // the bootstrap carousel only initializes data-bs-slide widgets on page load, so we need\n // to initialize them ourselves..\n var clickHandler = function (e) {\n var href\n var $this = $(this)\n var $target = $($this.attr('data-target') || $this.attr('data-bs-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '')) // strip for ie7\n if (!$target.hasClass('carousel')) return\n var options = $.extend({}, $target.data(), $this.data())\n var slideIndex = $this.attr('data-slide-to') || $this.attr('data-bs-slide-to')\n if (slideIndex) options.interval = false\n\n $.fn.carousel.call($target, options)\n\n if (slideIndex) {\n $target.data('bs.carousel').to(slideIndex)\n }\n\n e.preventDefault()\n }\n\n $(this.inner).find('.carousel')\n .on('click.bs.carousel.data-api', '[data-slide], [data-bs-slide]', clickHandler)\n .on('click.bs.carousel.data-api', '[data-slide-to], [data-bs-slide-to]', clickHandler)\n }\n\n });\n\n})();\n","//= require spotlight/admin/blocks/solr_documents_base_block\n\nSirTrevor.Blocks.SolrDocumentsGrid = (function(){\n\n return SirTrevor.Blocks.SolrDocumentsBase.extend({\n type: \"solr_documents_grid\",\n\n icon_name: \"item_grid\",\n\n\n item_options: function() { return \"\" }\n });\n\n})();\n","import SpotlightNestable from 'spotlight/admin/spotlight_nestable'\nimport Core from 'spotlight/core'\n\nSirTrevor.Blocks.UploadedItems = (function(){\n return Core.Block.Resources.extend({\n plustextable: true,\n uploadable: true,\n autocompleteable: false,\n show_image_selection: false,\n \n id_key: 'file',\n\n type: 'uploaded_items',\n\n icon_name: 'items',\n\n blockGroup: 'undefined',\n\n // Clear out the default Uploadable upload options\n // since we will be using our own custom controls\n upload_options: { html: '' },\n\n fileInput: function() { return $(this.inner).find('input[type=\"file\"]'); },\n\n onBlockRender: function(){\n SpotlightNestable.init($(this.inner).find('[data-behavior=\"nestable\"]'));\n\n this.fileInput().on('change', (function(ev) {\n this.onDrop(ev.currentTarget);\n }).bind(this));\n },\n\n onDrop: function(transferData){\n var file = transferData.files[0],\n urlAPI = (typeof URL !== \"undefined\") ? URL : (typeof webkitURL !== \"undefined\") ? webkitURL : null;\n\n // Handle one upload at a time\n if (/image/.test(file.type)) {\n this.loading();\n\n this.uploader(\n file,\n function(data) {\n this.createItemPanel(data);\n this.fileInput().val('');\n this.ready();\n },\n function(error) {\n this.addMessage(i18n.t('blocks:image:upload_error'));\n this.ready();\n }\n );\n }\n },\n\n title: function() { return i18n.t('blocks:uploaded_items:title'); },\n description: function() { return i18n.t('blocks:uploaded_items:description'); },\n\n globalIndex: 0,\n\n _itemPanel: function(data) {\n var index = \"file_\" + this.globalIndex++;\n var checked = 'checked=\"checked\"';\n\n if (data.display == 'false') {\n checked = '';\n }\n\n var dataId = data.id || data.uid;\n var dataTitle = data.title || data.name;\n var dataUrl = data.url || data.file.url;\n\n var markup = `\n <li class=\"field dd-item dd3-item\" data-id=\"${index}\" id=\"${this.formId(index)}\">\n <input type=\"hidden\" name=\"item[${index}][id]\" value=\"${dataId}\" />\n <input type=\"hidden\" name=\"item[${index}][title]\" value=\"${dataTitle}\" />\n <input type=\"hidden\" name=\"item[${index}][url]\" data-item-grid-thumbnail=\"true\" value=\"${dataUrl}\"/>\n <input data-property=\"weight\" type=\"hidden\" name=\"item[${index}][weight]\" value=\"${data.weight}\" />\n <div class=\"card d-flex dd3-content\">\n <div class=\"dd-handle dd3-handle\">${i18n.t(\"blocks:resources:panel:drag\")}</div>\n <div class=\"card-header d-flex item-grid\">\n <div class=\"checkbox\">\n <input name=\"item[${index}][display]\" type=\"hidden\" value=\"false\" />\n <input name=\"item[${index}][display]\" id=\"${this.formId(this.display_checkbox + '_' + dataId)}\" type=\"checkbox\" ${checked} class=\"item-grid-checkbox\" value=\"true\" />\n <label class=\"sr-only visually-hidden\" for=\"${this.formId(this.display_checkbox + '_' + dataId)}\">${i18n.t(\"blocks:resources:panel:display\")}</label>\n </div>\n <div class=\"pic\">\n <img class=\"img-thumbnail\" src=\"${dataUrl}\" />\n </div>\n <div class=\"main form-horizontal\">\n <div class=\"title card-title\">${dataTitle}</div>\n <div class=\"field row mr-3 me-3\">\n <label for=\"${this.formId('caption_' + dataId)}\" class=\"col-form-label col-md-3\">${i18n.t(\"blocks:uploaded_items:caption\")}</label>\n <input type=\"text\" class=\"form-control col\" id=\"${this.formId('caption_' + dataId)}\" name=\"item[${index}][caption]\" data-field=\"caption\"/>\n </div>\n <div class=\"field row mr-3 me-3\">\n <label for=\"${this.formId('link_' + dataId)}\" class=\"col-form-label col-md-3\">${i18n.t(\"blocks:uploaded_items:link\")}</label>\n <input type=\"text\" class=\"form-control col\" id=\"${this.formId('link_' + dataId)}\" name=\"item[${index}][link]\" data-field=\"link\"/>\n </div>\n ${this._altTextFieldsHTML(index, data)}\n </div>\n <div class=\"remove float-right float-end\">\n <a data-item-grid-panel-remove=\"true\" href=\"#\">${i18n.t(\"blocks:resources:panel:remove\")}</a>\n </div>\n </div>\n </li>`\n\n const panel = $(markup);\n panel.find('[data-field=\"caption\"]').val(data.caption);\n panel.find('[data-field=\"link\"]').val(data.link);\n var context = this;\n\n $('.remove a', panel).on('click', function(e) {\n e.preventDefault();\n $(this).closest('.field').remove();\n context.afterPanelDelete();\n });\n\n this.afterPanelRender(data, panel);\n\n return panel;\n },\n\n editorHTML: function() {\n return `<div class=\"form oembed-text-admin clearfix\">\n <div class=\"widget-header\">\n ${this.description()}\n ${this.alt_text_guidelines()}\n ${this.alt_text_guidelines_link()}\n </div>\n <div class=\"row\">\n <div class=\"form-group mb-3 col-md-8\">\n <div class=\"panels dd nestable-item-grid\" data-behavior=\"nestable\" data-max-depth=\"1\">\n <ol class=\"dd-list\">\n </ol>\n </div>\n <input type=\"file\" id=\"uploaded_item_url\" name=\"file[file_0][file_data]\" />\n </div>\n <div class=\"col-md-4\">\n <input name=\"${this.zpr_key}\" type=\"hidden\" value=\"false\" />\n <input name=\"${this.zpr_key}\" id=\"${this.formId(this.zpr_key)}\" data-key=\"${this.zpr_key}\" type=\"checkbox\" value=\"true\" />\n <label for=\"${this.formId(this.zpr_key)}\">${i18n.t(\"blocks:solr_documents:zpr:title\")}</label>\n </div>\n </div>\n ${this.text_area()}\n </div>`\n },\n\n altTextHTML: function(index, data) {\n const { isDecorative, altText, altTextBackup, placeholderAttr, disabledAttr } = this._altTextData(data);\n return `\n <div class=\"field row mr-3 me-3\">\n <div class=\"col-lg-3 ps-md-2 pl-md-2\">\n <label class=\"col-form-label text-nowrap pb-0 pt-1 justify-content-md-start justify-content-lg-end d-flex\" for=\"${this.formId(this.alt_text_textarea + '_' + data.id)}\">${i18n.t(\"blocks:resources:alt_text:alternative_text\")}</label>\n <div class=\"form-check d-flex justify-content-md-start justify-content-lg-end\">\n <input class=\"form-check-input\" type=\"checkbox\"\n id=\"${this.formId(this.decorative_checkbox + '_' + data.id)}\" name=\"item[${index}][decorative]\" ${isDecorative ? 'checked' : ''}>\n <label class=\"form-check-label\" for=\"${this.formId(this.decorative_checkbox + '_' + data.id)}\">${i18n.t(\"blocks:resources:alt_text:decorative\")}</label>\n </div>\n </div>\n <input type=\"hidden\" name=\"item[${index}][alt_text_backup]\" value=\"${altTextBackup}\" />\n <textarea class=\"col-lg-9\" rows=\"2\" ${placeholderAttr}\n id=\"${this.formId(this.alt_text_textarea + '_' + data.id)}\" name=\"item[${index}][alt_text]\" ${disabledAttr}>${altText}</textarea>\n </div>`\n },\n\n zpr_key: 'zpr_link'\n });\n})();\n","import Core from 'spotlight/core'\n\n(function() {\n var BLOCK_REPLACER_CONTROL_TEMPLATE = function(block) {\n var el = document.createElement('button');\n el.className = \"st-block-controls__button\";\n el.setAttribute('data-type', block.type);\n el.type = \"button\";\n\n var img = document.createElement('svg');\n img.className = \"st-icon\";\n img.setAttribute('role', 'img');\n\n var use = document.createElement('use');\n use.setAttributeNS('https://www.w3.org/1999/xlink', 'href', SirTrevor.config.defaults.iconUrl + \"#\" + block.icon_name);\n img.appendChild(use);\n el.appendChild(img);\n el.appendChild(document.createTextNode(block.title()));\n\n return el.outerHTML;\n };\n\n function generateBlocksHTML(Blocks, availableTypes) {\n var groups = {};\n for(var i in availableTypes) {\n var type = availableTypes[i];\n if (Blocks.hasOwnProperty(type) && Blocks[type].prototype.toolbarEnabled) {\n var blockGroup;\n\n if ($.isFunction(Blocks[type].prototype.blockGroup)) {\n blockGroup = Blocks[type].prototype.blockGroup();\n } else {\n blockGroup = Blocks[type].prototype.blockGroup;\n }\n\n if (blockGroup == 'undefined' || blockGroup === undefined) {\n blockGroup = i18n.t(\"blocks:group:undefined\");\n }\n\n groups[blockGroup] = groups[blockGroup] || [];\n groups[blockGroup].push(BLOCK_REPLACER_CONTROL_TEMPLATE(Blocks[type].prototype));\n }\n }\n\n function generateBlock(groups, key) {\n var group = groups[key];\n var groupEl = $(\"<div class='st-controls-group'><div class='st-group-col-form-label'>\" + key + \"</div></div>\");\n var buttons = group.reduce(function(memo, btn) {\n return memo += btn;\n }, \"\");\n groupEl.append(buttons);\n return groupEl[0].outerHTML;\n }\n\n var standardWidgets = generateBlock(groups, i18n.t(\"blocks:group:undefined\"));\n\n var exhibitWidgets = Object.keys(groups).map(function(key) {\n if (key !== i18n.t(\"blocks:group:undefined\")) {\n return generateBlock(groups, key);\n }\n }).filter(function (element) {\n return element != null;\n });\n\n var blocks = [standardWidgets].concat(exhibitWidgets).join(\"<hr />\");\n return blocks;\n }\n\n function render(Blocks, availableTypes) {\n var el = document.createElement('div');\n el.className = \"st-block-controls__buttons\";\n el.innerHTML = generateBlocksHTML.apply(null, arguments);\n\n var elButtons = document.createElement('div');\n elButtons.className = \"spotlight-block-controls\";\n elButtons.appendChild(el);\n return elButtons;\n }\n\n Core.BlockControls = function() { };\n Core.BlockControls.create = function(editor) {\n // REFACTOR - should probably not know about blockManager\n var el = render(SirTrevor.Blocks, editor.blockManager.blockTypes);\n\n function hide() {\n var parent = el.parentNode;\n if (!parent) { return; }\n parent.removeChild(el);\n parent.classList.remove(\"st-block--controls-active\");\n return parent;\n }\n\n function destroy() {\n SirTrevor = null;\n el = null;\n }\n\n function insert(e) {\n e.stopPropagation();\n\n var parent = this.parentNode;\n if (!parent || hide() === parent) { return; }\n $('.st-block__inner', parent).after(el);\n parent.classList.add(\"st-block--controls-active\");\n }\n\n function replaceBlock() {\n SirTrevor.mediator.trigger(\n \"block:replace\", el.parentNode, this.getAttribute('data-type')\n );\n }\n\n $(editor.wrapper).delegate(\".st-block-replacer\", \"click\", insert);\n $(editor.wrapper).delegate(\".st-block-controls__button\", \"click\", insert);\n\n return {\n el: el,\n hide: hide,\n destroy: destroy\n };\n };\n})();\n","import Core from 'spotlight/core'\n\nCore.BlockLimits = function(editor) {\n this.editor = editor;\n};\n\nCore.BlockLimits.prototype.enforceLimits = function(editor) {\n this.addEditorCallbacks(editor);\n this.checkGlobalBlockTypeLimit()();\n};\n\nCore.BlockLimits.prototype.addEditorCallbacks = function(editor) {\n SirTrevor.EventBus.on('block:create:new', this.checkBlockTypeLimitOnAdd());\n SirTrevor.EventBus.on('block:remove', this.checkGlobalBlockTypeLimit());\n};\n\nCore.BlockLimits.prototype.checkBlockTypeLimitOnAdd = function() {\n var editor = this.editor;\n\n return function(block) {\n var control = $(\".st-block-controls__button[data-type='\" + block.type + \"']\", editor.blockControls.el);\n\n control.prop(\"disabled\", !editor.blockManager.canCreateBlock(block.class()));\n };\n};\n\nCore.BlockLimits.prototype.checkGlobalBlockTypeLimit = function() {\n // we don't know what type of block was created or removed.. So, try them all.\n var editor = this.editor;\n\n return function() {\n $.each(editor.blockManager.blockTypes, function(i, type) {\n var block_type = SirTrevor.Blocks[type].prototype;\n\n var control = $(editor.blockControls.el).find(\".st-block-controls__button[data-type='\" + block_type.type + \"']\");\n control.prop(\"disabled\", !editor.blockManager.canCreateBlock(type));\n });\n };\n};\n","SirTrevor.Locales.en.blocks = $.extend(SirTrevor.Locales.en.blocks, {\n autocompleteable: {\n placeholder: \"Enter a title...\"\n },\n\n browse: {\n title: \"Browse Categories\",\n description: \"This widget highlights browse categories. Each highlighted category links to the corresponding browse category results page.\",\n item_counts: \"Include item counts?\"\n },\n\n browse_group_categories: {\n autocomplete: \"Enter a browse group title...\",\n title: \"Browse Group Categories\",\n description: \"This widget displays all browse categories associated with a selected browse group as a horizontally-scrolling row. Each selected browse group is displayed as a separate row. Each displayed category in a group links to the corresponding browse category results page.\",\n item_counts: \"Include category item counts?\"\n },\n\n link_to_search: {\n title: \"Saved Searches\",\n description: \"This widget highlights saved searches. Each highlighted saved search links to the search results page generated by the saved search parameters. Any saved search listed on the Curation > Browse categories page, whether published or not, can be highlighted as a saved search.\",\n item_counts: \"Include item counts?\"\n },\n\n iframe: {\n title: \"IFrame\",\n description: \"This widget embeds iframe-based embed code into pages\",\n placeholder: \"Enter embed code here. It should begin with e.g. '<iframe'\"\n },\n\n oembed: {\n title: \"Embed + Text\",\n description: \"This widget embeds an oEmbed-supported web resource and a text block to the left or right of it. Examples of oEmbed-supported resources include those from YouTube, Twitter, Flickr, and SlideShare.\",\n url: \"URL\",\n },\n\n uploaded_items: {\n title: \"Uploaded Item Row\",\n description: \"This widget displays uploaded items in a horizontal row. Optionally, you can add a heading and/or text to be displayed adjacent to the items. The item caption and link URL fields are also optional.\",\n caption: 'Caption',\n link: 'Link URL'\n },\n\n featured_pages: {\n title: \"Pages\",\n description: \"This widget highlights pages from this exhibit. Each highlighted item links to the corresponding page.\"\n },\n\n resources: {\n panel: {\n drag: \"Drag\",\n display: \"Display?\",\n remove: \"Remove\"\n },\n alt_text: {\n decorative: \"Decorative\",\n alternative_text: \"Alternative text\",\n placeholder: \"Enter alt text for this item...\"\n }\n },\n\n rule: {\n title: \"Horizontal Rule\"\n },\n\n search_results: {\n title: \"Search Results\",\n description: \"This widget displays a set of search results on a page. Specify a search result set by selecting an existing browse category. You can also select the view types that are available to the user when viewing the result set.\"\n },\n\n solr_documents: {\n title: \"Item Row\",\n description: \"This widget displays exhibit items in a horizontal row. Optionally, you can add a heading and/or text to be displayed adjacent to the items.\",\n caption: {\n placeholder: \"Select...\",\n primary: \"Primary caption\",\n secondary: \"Secondary caption\"\n },\n zpr: {\n title: 'Offer \"View larger\" option'\n }\n },\n\n solr_documents_carousel: {\n title: \"Item Carousel\",\n description: \"This widget displays exhibit items in a carousel. You can configure the item captions, how the images are cycled, and the size of the carousel.\",\n interval: {\n title: \"Automatically cycle images\",\n placeholder: \"Select...\"\n },\n height: {\n title: \"Maximum carousel height\"\n }\n },\n\n solr_documents_embed: {\n title: \"Item Embed\",\n description: \"This widget embeds an exhibit item in a viewer on a page. Optionally, you can add a heading to be displayed above the viewer and/or text to be displayed adjacent to the viewer.\",\n },\n\n solr_documents_features: {\n title: \"Item Slideshow\",\n description: \"This widget displays exhibit items in a static slideshow. The user will move between items in the slideshow using the field you select as the primary caption.\"\n },\n\n solr_documents_grid: {\n title: \"Item Grid\",\n description: \"This widget displays exhibit items in a multi-row grid. Optionally, you can add a heading and/or text to be displayed adjacent to the items.\"\n },\n\n textable: {\n heading: \"Heading\",\n text: \"Text\",\n align: {\n title: \"Display text on:\",\n left: \"Left\",\n right: \"Right\"\n }\n },\n\n group: {\n undefined: \"Standard widgets\",\n items: \"Exhibit item widgets\"\n },\n\n alt_text_guidelines: {\n intro: 'For each item, please enter alternative text or appropriately check the decorative box. ',\n link_label: 'Guidelines for writing alt text.',\n link_url: 'https://www.w3.org/WAI/tutorials/images/' \n }\n});\n","import AddAnother from 'spotlight/admin/add_another'\nimport AddNewButton from 'spotlight/admin/add_new_button'\nimport BlacklightConfiguration from 'spotlight/admin/blacklight_configuration'\nimport CopyEmailAddress from 'spotlight/admin/copy_email_addresses'\nimport Croppable from 'spotlight/admin/croppable'\nimport EditInPlace from 'spotlight/admin/edit_in_place'\nimport Exhibits from 'spotlight/admin/exhibits'\nimport FormObserver from 'spotlight/admin/form_observer'\nimport Locks from 'spotlight/admin/locks'\nimport 'spotlight/admin/multi_image_selector'\nimport Pages from 'spotlight/admin/pages'\nimport ProgressMonitor from 'spotlight/admin/progress_monitor'\nimport ReadonlyCheckbox from 'spotlight/admin/readonly_checkbox'\nimport { addAutocompletetoFeaturedImage } from 'spotlight/admin/search_typeahead'\nimport SelectRelatedInput from 'spotlight/admin/select_related_input'\nimport SpotlightNestable from 'spotlight/admin/spotlight_nestable'\nimport Tabs from 'spotlight/admin/tabs'\nimport TranslationProgress from 'spotlight/admin/translation_progress'\nimport 'spotlight/admin/visibility_toggle'\nimport Users from 'spotlight/admin/users'\n\nimport 'spotlight/admin/block_mixins/autocompleteable'\nimport 'spotlight/admin/block_mixins/formable'\nimport 'spotlight/admin/block_mixins/plustextable'\n\nimport 'spotlight/admin/blocks/block'\nimport 'spotlight/admin/blocks/resources_block' // This is a base class of several other blocks, so must come first\nimport 'spotlight/admin/blocks/browse_block'\nimport 'spotlight/admin/blocks/browse_group_categories_block'\nimport 'spotlight/admin/blocks/iframe_block'\nimport 'spotlight/admin/blocks/link_to_search_block'\nimport 'spotlight/admin/blocks/oembed_block'\nimport 'spotlight/admin/blocks/pages_block'\nimport 'spotlight/admin/blocks/rule_block'\nimport 'spotlight/admin/blocks/search_result_block'\nimport 'spotlight/admin/blocks/solr_documents_base_block'\nimport 'spotlight/admin/blocks/solr_documents_block'\nimport 'spotlight/admin/blocks/solr_documents_carousel_block'\nimport 'spotlight/admin/blocks/solr_documents_embed_block'\nimport 'spotlight/admin/blocks/solr_documents_features_block'\nimport 'spotlight/admin/blocks/solr_documents_grid_block'\nimport 'spotlight/admin/blocks/uploaded_items_block'\n\nimport 'spotlight/admin/sir-trevor/block_controls'\nimport 'spotlight/admin/sir-trevor/block_limits'\nimport 'spotlight/admin/sir-trevor/locales'\n\n\nexport default class {\n connect() {\n new AddAnother().connect()\n new AddNewButton().connect()\n new CopyEmailAddress().connect()\n new Croppable().connect()\n new EditInPlace().connect()\n new Exhibits().connect()\n new FormObserver().connect()\n new Locks().connect()\n new BlacklightConfiguration().connect()\n new Pages().connect()\n new ProgressMonitor().connect()\n new ReadonlyCheckbox().connect()\n new SelectRelatedInput().connect()\n new Tabs().connect()\n new TranslationProgress().connect()\n new Users().connect()\n addAutocompletetoFeaturedImage()\n SpotlightNestable.init();\n }\n}","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n\n static targets = [\n 'addNewTagWrapper',\n 'dropdownContent',\n 'initialTags',\n 'newTag',\n 'searchResultTags',\n 'selectedTags',\n 'tagControlWrapper',\n 'tagSearch',\n 'tagsField',\n 'tagSearchDropdown',\n 'tagSearchInputWrapper'\n ]\n\n static values = {\n tags: Array,\n translations: Object\n }\n\n tagDropdown (event) {\n this.dropdownContentTarget.classList.toggle('d-none')\n }\n\n clickOutside (event) {\n const isShown = !this.dropdownContentTarget.classList.contains('d-none')\n const inSelected = event.target.classList.contains('pill-close')\n const inContainer = this.tagControlWrapperTarget.contains(event.target)\n if (!inContainer && !inSelected && isShown) {\n this.tagDropdown(event)\n }\n }\n\n handleKeydown (event) {\n if (event.key === 'Enter') {\n event.preventDefault()\n const hidden = this.dropdownContentTarget.classList.contains('d-none')\n if (hidden) return;\n\n const tagElementToAdd = this.dropdownContentTarget.querySelector('.active')?.firstElementChild\n if (tagElementToAdd) tagElementToAdd.click()\n }\n\n if (event.key === ',') {\n event.preventDefault()\n if (this.tagSearchTarget.value.length === 0) return\n\n if (!this.addNewTagWrapperTarget.classList.contains('d-none')) {\n this.addNewTagWrapperTarget.click()\n this.tagSearchTarget.focus()\n return\n }\n\n const exactMatch = this.dropdownContentTarget.querySelector('.active')?.firstElementChild\n if (exactMatch?.checked === false) {\n exactMatch.click()\n this.resetSearch()\n }\n this.tagSearchTarget.focus()\n }\n }\n\n addNewTag (event) {\n if (this.addNewTagWrapperTarget.classList.contains('d-none') || this.newTagTarget.dataset.tag.length === 0) {\n return\n }\n\n this.tagsValue = this.tagsValue.concat([this.newTagTarget.dataset.tag])\n this.resetSearch()\n }\n\n resetSearch() {\n this.tagSearchTarget.value = ''\n this.newTagTarget.innerHTML = ''\n this.newTagTarget.dataset.tag = ''\n this.newTagTarget.disabled = true\n this.addNewTagWrapperTarget.classList.add('d-none')\n this.searchResultTagsTargets.forEach(target => this.showElement(target.parentElement))\n }\n\n tagUpdate (event) {\n const target = event.target ? event.target : event\n if (target.checked) {\n this.tagsValue = this.tagsValue.concat([target.dataset.tag])\n } else {\n this.tagsValue = this.tagsValue.filter(tag => tag !== target.dataset.tag)\n }\n }\n\n updateSearchResultsPlaceholder(event) {\n const placeholderElement = this.dropdownContentTarget.querySelector('.no-results')\n if (!placeholderElement) return\n\n const hasVisibleTags = this.dropdownContentTarget.querySelector('label:not(.d-none):not(.no-results)')\n placeholderElement.classList.toggle('d-none', hasVisibleTags)\n }\n\n tagCreate(event) {\n event.preventDefault()\n const newTagCheckbox = document.createElement('label')\n newTagCheckbox.innerHTML = `<input type=\"checkbox\" checked data-action=\"click->${this.identifier}#tagUpdate\" data-tag-selector-target=\"searchResultTags\" data-tag=\"${this.newTagTarget.dataset.tag}\"> ${this.newTagTarget.dataset.tag}`\n const existingTags = Array.from(this.dropdownContentTarget.querySelectorAll('label:not(#add-new-tag-wrapper)'))\n const insertPosition = existingTags.findIndex(tag => tag.textContent.trim().localeCompare(this.newTagTarget.dataset.tag) > 0)\n if (insertPosition === -1) {\n this.addNewTagWrapperTarget.insertAdjacentElement('beforebegin', newTagCheckbox)\n } else {\n existingTags[insertPosition].insertAdjacentElement('beforebegin', newTagCheckbox)\n }\n\n this.tagsValue = this.tagsValue.concat([this.newTagTarget.dataset.tag])\n this.tagSearchTarget.value = ''\n this.tagSearchTarget.dispatchEvent(new Event('input'))\n }\n\n\n tagsValueChanged() {\n const isEmpty = this.tagsValue.length === 0\n\n this.selectedTagsTarget.classList.toggle('d-none', isEmpty)\n this.tagSearchInputWrapperTarget.classList.toggle('rounded', isEmpty)\n this.tagSearchInputWrapperTarget.classList.toggle('rounded-bottom', !isEmpty)\n\n if (!isEmpty) {\n this.selectedTagsTarget.innerHTML = `<ul class=\"list-unstyled border rounded-top mb-0 p-1 px-2\">${this.renderTagPills()}</ul>`\n }\n\n const newValue = this.tagsValue.join(', ')\n if (this.tagsFieldTarget.value !== newValue) {\n this.tagsFieldTarget.value = newValue\n }\n }\n\n normalizeTag (tag) {\n const normalizeRegex = /[^\\w\\s]/gi\n return tag.replace(normalizeRegex, '').toLowerCase().trim()\n }\n\n showElement (element) {\n element.classList.add('d-block')\n element.classList.remove('d-none')\n }\n\n hideElement (element) {\n element.classList.remove('d-block')\n element.classList.add('d-none')\n }\n\n search(event) {\n const searchTerm = this.normalizeTag(event.target.value)\n this.dropdownContentTarget.classList.remove('d-none')\n\n const exactMatch = this.searchResultTagsTargets.some(target => {\n const compareTerm = this.normalizeTag(target.dataset.tag)\n const isMatch = compareTerm.includes(searchTerm)\n target.parentElement.classList.remove('active')\n this[isMatch ? 'showElement' : 'hideElement'](target.parentElement)\n return compareTerm === searchTerm\n })\n\n this[searchTerm.length > 0 && !exactMatch ? 'showElement' : 'hideElement'](this.addNewTagWrapperTarget)\n this.addNewTagWrapperTarget.classList.remove('active')\n this.dropdownContentTarget.querySelector('label:not(.d-none)')?.classList.add('active')\n }\n\n updateTagToAdd (event) {\n const tagAlreadyAdded = this.tagsValue.some(tag =>\n this.normalizeTag(tag) === this.normalizeTag(event.target.value)\n )\n this.newTagTarget.dataset.tag = event.target.value.trim()\n this.newTagTarget.nextSibling.textContent = ` ${this.translationsValue.add_new_tag}: ${event.target.value}`\n this.newTagTarget.disabled = !this.newTagTarget.dataset.tag.length || tagAlreadyAdded\n }\n\n deselect (event) {\n event.preventDefault()\n\n const clickedTag = event.target.closest('button').dataset.tag\n const target = this.searchResultTagsTargets.find((tag) => tag.dataset.tag === clickedTag)\n target ? target.click() : this.tagsValue = this.tagsValue.filter(tag => tag !== clickedTag)\n }\n\n renderTagPills () {\n return this.tagsValue.map((tag) => {\n return `\n <li class=\"d-inline-flex gap-2 align-items-center my-2\">\n <span class=\"bg-light badge rounded-pill border selected-item d-inline-flex align-items-center text-dark\">\n <span class=\"selected-item-label d-inline-flex\">${tag}</span>\n <button\n type=\"button\"\n data-action=\"${this.identifier}#deselect\"\n data-tag=\"${tag}\"\n class=\"btn-close close ms-1 ml-1\"\n aria-label=\"${this.translationsValue.remove} ${tag}\"\n ><span aria-hidden=\"true\" class=\"visually-hidden\">&times;</span></button>\n </span>\n </li>\n `\n }).join('')\n }\n}\n","import TagSelectorController from 'spotlight/controllers/tag_selector_controller'\n\nexport default class {\n connect() {\n if (typeof Stimulus === \"undefined\") return\n Stimulus.register('tag-selector', TagSelectorController)\n }\n}\n","import UserIndex from 'spotlight/user'\nimport AdminIndex from 'spotlight/admin'\nimport Core from 'spotlight/core'\nimport SpotlightControllers from 'spotlight/controllers'\n\nCore.onLoad(() => {\n new SpotlightControllers().connect()\n new UserIndex().connect()\n new AdminIndex().connect()\n})\n\nexport default Core\n"],"names":["Spotlight","SirTrevor","Core","SpotlightNestable"],"mappings":"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AE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG;AAC5E,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC3E,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC3E,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC3E,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC3E,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC5E,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC3E,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC3E,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE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"}