{"version":3,"sources":["bootstrap.js","../i18n.js","../lib/dompurify/purify.js","../layout/logout-event.js","../controller/app.js","../layout/loading-bar.js","../helpers.js","../lib/gamp/gamp.js","../lib/popper/popper.js","../lib/popper/tooltip.js","../lib/polyfill/svg4everybody/svg4everybody.js","../uikitLoader.js","../controller/backoffice.js","../controller/entry.js","../lock.js","../layout/generisRouter.js","../layout/section.js","../controller/Lock/locked.js","../layout/version-warning.js","../controller/login.js","../form/depends-on-property.js","../form/secondary-property.js","../form/post-render-props.js","../form/property.js","../lib/flatpickr/flatpickr.js","../lib/flatpickr/l10n/index.js","../lib/flatpickr/flatpickr!css","../uiForm.js","../layout/actions/binder.js","../layout/permissions.js","../provider/resources.js","../layout/actions/common.js","../layout/actions.js","../layout/nav.js","../layout/search.js","../layout/tree/provider/jstree.js","../layout/tree/provider/resourceSelector.js","../layout/tree/loader.js","../layout/section-height.js","../controller/main.js","../controller/passwordRecovery.js","../controller/routes.js","../controller/security/cspHeaderForm.js","../controller/settings/extensionManager.js","../users.js","../controller/users/add.js","../controller/users/disable-edit.js","../controller/users/index.js","../layout/requirement-check.js","../report.js","../serviceApi/PseudoStorage.js","../serviceApi/ServiceApi.js","../serviceApi/StateStorage.js","../serviceApi/UserInfoService.js","../generis.tree.js","../generis.tree.select.js","onLayerEnd0.js","module-create.js"],"names":[],"mappings":"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","sourcesContent":["/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2016-2018 (original work) Open Assessment Technologies SA ;\n */\n\n/**\n * Bootstrap the app, start the entry controller\n * @author Bertrand Chevrier \n */\n(function(){\n 'use strict';\n\n\n\n var loaderScript = document.getElementById('amd-loader');\n var configUrl = loaderScript.getAttribute('data-config');\n var bundle = loaderScript.getAttribute('data-bundle');\n\n var loadController = function loadController(){\n var controllerOptions = {};\n var controllerPath = loaderScript.getAttribute('data-controller');\n var params = loaderScript.getAttribute('data-params');\n try{\n controllerOptions = JSON.parse(params);\n } catch(err){\n controllerOptions = {};\n }\n window.require([controllerPath], function(controller) {\n var startController = function startController(){\n if(!window.started){\n window.started = true;\n controller.start(controllerOptions);\n }\n };\n document.addEventListener('readystatechange', startController, false);\n if (document.readyState === 'complete') {\n startController();\n }\n });\n };\n\n //always start to load the config\n window.require([configUrl], function() {\n\n //define the global loading mechanism\n if(!window.loadBundles){\n //keep tracl of loaded bundles, even if require does it,\n //this prevent some unecessary cycles\n window.loaded = {};\n\n /**\n * Loading entry point for inter bundle dependency,\n * always take the bundles from the params and window.bundles\n * @param {String[]} [bundles] - an optional list of bundle to load\n */\n window.loadBundles = function loadBundles(bundles){\n bundles = bundles || [];\n bundles = bundles.concat(window.bundles)\n bundles = bundles.filter( function(item, index){\n return item && bundles.indexOf(item) === index && window.loaded[item] !== true;\n });\n require(bundles, function(){\n bundles.forEach( function( item ) {\n window.loaded[item] = true;\n });\n loadController();\n });\n }\n }\n\n if(bundle || (window.bundles && window.bundles.length)) {\n window.loadBundles([bundle]);\n } else {\n loadController();\n }\n });\n})();\n\ndefine(\"loader/bootstrap\", function(){});\n\n","define('i18n',['json!i18ntr/messages.json', 'core/format'], function(i18nTr, format){\n 'use strict';\n\n var translations = i18nTr.translations;\n\n /**\n * Common translation method.\n * @see /locales/#lang#/messages_po.js\n *\n * @param {String} message should be the string in the default language (usually english) used as the key in the gettext translations\n * @returns {String} translated message\n */\n return function __(message){\n var localized = translations[message] || message;\n\n if(arguments.length > 1){\n localized = format.apply(null, [localized].concat([].slice.call(arguments, 1)));\n }\n\n return localized;\n };\n});\n\n","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define('lib/dompurify/purify',factory) :\n\t(global.DOMPurify = factory());\n}(this, (function () { 'use strict';\n\nvar freeze$1 = Object.freeze || function (x) {\n return x;\n};\n\nvar html = freeze$1(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\n\n// SVG\nvar svg = freeze$1(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'audio', 'canvas', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'video', 'view', 'vkern']);\n\nvar svgFilters = freeze$1(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n\nvar mathMl = freeze$1(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover']);\n\nvar text = freeze$1(['#text']);\n\nvar freeze$2 = Object.freeze || function (x) {\n return x;\n};\n\nvar html$1 = freeze$2(['accept', 'action', 'align', 'alt', 'autocomplete', 'background', 'bgcolor', 'border', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'coords', 'crossorigin', 'datetime', 'default', 'dir', 'disabled', 'download', 'enctype', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'integrity', 'ismap', 'label', 'lang', 'list', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'multiple', 'name', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'type', 'usemap', 'valign', 'value', 'width', 'xmlns']);\n\nvar svg$1 = freeze$2(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'specularconstant', 'specularexponent', 'spreadmethod', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'tabindex', 'targetx', 'targety', 'transform', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\n\nvar mathMl$1 = freeze$2(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\n\nvar xml = freeze$2(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\nvar hasOwnProperty = Object.hasOwnProperty;\nvar setPrototypeOf = Object.setPrototypeOf;\n\nvar _ref$1 = typeof Reflect !== 'undefined' && Reflect;\nvar apply$1 = _ref$1.apply;\n\nif (!apply$1) {\n apply$1 = function apply(fun, thisValue, args) {\n return fun.apply(thisValue, args);\n };\n}\n\n/* Add properties to a lookup table */\nfunction addToSet(set, array) {\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n var l = array.length;\n while (l--) {\n var element = array[l];\n if (typeof element === 'string') {\n var lcElement = element.toLowerCase();\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!Object.isFrozen(array)) {\n array[l] = lcElement;\n }\n element = lcElement;\n }\n }\n set[element] = true;\n }\n return set;\n}\n\n/* Shallow clone an object */\nfunction clone(object) {\n var newObject = {};\n var property = void 0;\n for (property in object) {\n if (apply$1(hasOwnProperty, object, [property])) {\n newObject[property] = object[property];\n }\n }\n return newObject;\n}\n\nvar seal = Object.seal || function (x) {\n return x;\n};\n\nvar MUSTACHE_EXPR = seal(/\\{\\{[\\s\\S]*|[\\s\\S]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nvar ERB_EXPR = seal(/<%[\\s\\S]*|[\\s\\S]*%>/gm);\nvar DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/); // eslint-disable-line no-useless-escape\nvar ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nvar IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nvar IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nvar ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205f\\u3000]/g // eslint-disable-line no-control-regex\n);\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar _ref = typeof Reflect !== 'undefined' && Reflect;\nvar apply = _ref.apply;\n\nvar arraySlice = Array.prototype.slice;\nvar freeze = Object.freeze;\n\nvar getGlobal = function getGlobal() {\n return typeof window === 'undefined' ? null : window;\n};\n\nif (!apply) {\n apply = function apply(fun, thisValue, args) {\n return fun.apply(thisValue, args);\n };\n}\n\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param {?TrustedTypePolicyFactory} trustedTypes The policy factory.\n * @param {Document} document The document object (to determine policy name suffix)\n * @return {?TrustedTypePolicy} The policy created (or null, if Trusted Types\n * are not supported).\n */\nvar _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, document) {\n if ((typeof trustedTypes === 'undefined' ? 'undefined' : _typeof(trustedTypes)) !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n }\n\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n var suffix = null;\n var ATTR_NAME = 'data-tt-policy-suffix';\n if (document.currentScript && document.currentScript.hasAttribute(ATTR_NAME)) {\n suffix = document.currentScript.getAttribute(ATTR_NAME);\n }\n\n var policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML: function createHTML(html$$1) {\n return html$$1;\n }\n });\n } catch (e) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n};\n\nfunction createDOMPurify() {\n var window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n\n var DOMPurify = function DOMPurify(root) {\n return createDOMPurify(root);\n };\n\n /**\n * Version label, exposed for easier checks\n * if DOMPurify is up to date or not\n */\n DOMPurify.version = '1.0.9';\n\n /**\n * Array of elements that DOMPurify removed during sanitation.\n * Empty if nothing was removed.\n */\n DOMPurify.removed = [];\n\n if (!window || !window.document || window.document.nodeType !== 9) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n\n return DOMPurify;\n }\n\n var originalDocument = window.document;\n var useDOMParser = false;\n var removeTitle = false;\n\n var document = window.document;\n var DocumentFragment = window.DocumentFragment,\n HTMLTemplateElement = window.HTMLTemplateElement,\n Node = window.Node,\n NodeFilter = window.NodeFilter,\n _window$NamedNodeMap = window.NamedNodeMap,\n NamedNodeMap = _window$NamedNodeMap === undefined ? window.NamedNodeMap || window.MozNamedAttrMap : _window$NamedNodeMap,\n Text = window.Text,\n Comment = window.Comment,\n DOMParser = window.DOMParser,\n TrustedTypes = window.TrustedTypes;\n\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n\n if (typeof HTMLTemplateElement === 'function') {\n var template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n\n var trustedTypesPolicy = _createTrustedTypesPolicy(TrustedTypes, originalDocument);\n var emptyHTML = trustedTypesPolicy ? trustedTypesPolicy.createHTML('') : '';\n\n var _document = document,\n implementation = _document.implementation,\n createNodeIterator = _document.createNodeIterator,\n getElementsByTagName = _document.getElementsByTagName,\n createDocumentFragment = _document.createDocumentFragment;\n var importNode = originalDocument.importNode;\n\n\n var hooks = {};\n\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported = implementation && typeof implementation.createHTMLDocument !== 'undefined' && document.documentMode !== 9;\n\n var MUSTACHE_EXPR$$1 = MUSTACHE_EXPR,\n ERB_EXPR$$1 = ERB_EXPR,\n DATA_ATTR$$1 = DATA_ATTR,\n ARIA_ATTR$$1 = ARIA_ATTR,\n IS_SCRIPT_OR_DATA$$1 = IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE$$1 = ATTR_WHITESPACE;\n var IS_ALLOWED_URI$$1 = IS_ALLOWED_URI;\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n\n /* allowed element names */\n\n var ALLOWED_TAGS = null;\n var DEFAULT_ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray(html), _toConsumableArray(svg), _toConsumableArray(svgFilters), _toConsumableArray(mathMl), _toConsumableArray(text)));\n\n /* Allowed attribute names */\n var ALLOWED_ATTR = null;\n var DEFAULT_ALLOWED_ATTR = addToSet({}, [].concat(_toConsumableArray(html$1), _toConsumableArray(svg$1), _toConsumableArray(mathMl$1), _toConsumableArray(xml)));\n\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n var FORBID_TAGS = null;\n\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n var FORBID_ATTR = null;\n\n /* Decide if ARIA attributes are okay */\n var ALLOW_ARIA_ATTR = true;\n\n /* Decide if custom data attributes are okay */\n var ALLOW_DATA_ATTR = true;\n\n /* Decide if unknown protocols are okay */\n var ALLOW_UNKNOWN_PROTOCOLS = false;\n\n /* Output should be safe for jQuery's $() factory? */\n var SAFE_FOR_JQUERY = false;\n\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n var SAFE_FOR_TEMPLATES = false;\n\n /* Decide if document with ... should be returned */\n var WHOLE_DOCUMENT = false;\n\n /* Track whether config is already set on this instance of DOMPurify. */\n var SET_CONFIG = false;\n\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n var FORCE_BODY = false;\n\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n var RETURN_DOM = false;\n\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n var RETURN_DOM_FRAGMENT = false;\n\n /* If `RETURN_DOM` or `RETURN_DOM_FRAGMENT` is enabled, decide if the returned DOM\n * `Node` is imported into the current `Document`. If this flag is not enabled the\n * `Node` will belong (its ownerDocument) to a fresh `HTMLDocument`, created by\n * DOMPurify. */\n var RETURN_DOM_IMPORT = false;\n\n /* Output should be free from DOM clobbering attacks? */\n var SANITIZE_DOM = true;\n\n /* Keep element content when removing element? */\n var KEEP_CONTENT = true;\n\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n var IN_PLACE = false;\n\n /* Allow usage of profiles like html, svg and mathMl */\n var USE_PROFILES = {};\n\n /* Tags to ignore content of when KEEP_CONTENT is true */\n var FORBID_CONTENTS = addToSet({}, ['audio', 'head', 'math', 'script', 'style', 'template', 'svg', 'video']);\n\n /* Tags that are safe for data: URIs */\n var DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image']);\n\n /* Attributes safe for values like \"javascript:\" */\n var URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'summary', 'title', 'value', 'style', 'xmlns']);\n\n /* Keep a reference to config to pass to hooks */\n var CONFIG = null;\n\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n\n var formElement = document.createElement('form');\n\n /**\n * _parseConfig\n *\n * @param {Object} cfg optional config literal\n */\n // eslint-disable-next-line complexity\n var _parseConfig = function _parseConfig(cfg) {\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n\n /* Shield configuration object from tampering */\n if (!cfg || (typeof cfg === 'undefined' ? 'undefined' : _typeof(cfg)) !== 'object') {\n cfg = {};\n }\n /* Set configuration parameters */\n ALLOWED_TAGS = 'ALLOWED_TAGS' in cfg ? addToSet({}, cfg.ALLOWED_TAGS) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = 'ALLOWED_ATTR' in cfg ? addToSet({}, cfg.ALLOWED_ATTR) : DEFAULT_ALLOWED_ATTR;\n FORBID_TAGS = 'FORBID_TAGS' in cfg ? addToSet({}, cfg.FORBID_TAGS) : {};\n FORBID_ATTR = 'FORBID_ATTR' in cfg ? addToSet({}, cfg.FORBID_ATTR) : {};\n USE_PROFILES = 'USE_PROFILES' in cfg ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n SAFE_FOR_JQUERY = cfg.SAFE_FOR_JQUERY || false; // Default false\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_DOM_IMPORT = cfg.RETURN_DOM_IMPORT || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n\n IS_ALLOWED_URI$$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI$$1;\n\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray(text)));\n ALLOWED_ATTR = [];\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html);\n addToSet(ALLOWED_ATTR, html$1);\n }\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg);\n addToSet(ALLOWED_ATTR, svg$1);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg$1);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl);\n addToSet(ALLOWED_ATTR, mathMl$1);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS);\n }\n if (cfg.ADD_ATTR) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR);\n }\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR);\n }\n\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n }\n\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n\n CONFIG = cfg;\n };\n\n /**\n * _forceRemove\n *\n * @param {Node} node a DOM node\n */\n var _forceRemove = function _forceRemove(node) {\n DOMPurify.removed.push({ element: node });\n try {\n node.parentNode.removeChild(node);\n } catch (err) {\n node.outerHTML = emptyHTML;\n }\n };\n\n /**\n * _removeAttribute\n *\n * @param {String} name an Attribute name\n * @param {Node} node a DOM node\n */\n var _removeAttribute = function _removeAttribute(name, node) {\n try {\n DOMPurify.removed.push({\n attribute: node.getAttributeNode(name),\n from: node\n });\n } catch (err) {\n DOMPurify.removed.push({\n attribute: null,\n from: node\n });\n }\n node.removeAttribute(name);\n };\n\n /**\n * _initDocument\n *\n * @param {String} dirty a string of dirty markup\n * @return {Document} a DOM, filled with the dirty markup\n */\n var _initDocument = function _initDocument(dirty) {\n /* Create a HTML document */\n var doc = void 0;\n var leadingWhitespace = void 0;\n\n if (FORCE_BODY) {\n dirty = '' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n var matches = dirty.match(/^[\\s]+/);\n leadingWhitespace = matches && matches[0];\n if (leadingWhitespace) {\n dirty = dirty.slice(leadingWhitespace.length);\n }\n }\n\n /* Use DOMParser to workaround Firefox bug (see comment below) */\n if (useDOMParser) {\n try {\n doc = new DOMParser().parseFromString(dirty, 'text/html');\n } catch (err) {}\n }\n\n /* Remove title to fix a mXSS bug in older MS Edge */\n if (removeTitle) {\n addToSet(FORBID_TAGS, ['title']);\n }\n\n /* Otherwise use createHTMLDocument, because DOMParser is unsafe in\n Safari (see comment below) */\n if (!doc || !doc.documentElement) {\n doc = implementation.createHTMLDocument('');\n var _doc = doc,\n body = _doc.body;\n\n body.parentNode.removeChild(body.parentNode.firstElementChild);\n body.outerHTML = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n }\n\n if (leadingWhitespace) {\n doc.body.insertBefore(document.createTextNode(leadingWhitespace), doc.body.childNodes[0] || null);\n }\n\n /* Work on whole document or just its body */\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n };\n\n // Firefox uses a different parser for innerHTML rather than\n // DOMParser (see https://bugzilla.mozilla.org/show_bug.cgi?id=1205631)\n // which means that you *must* use DOMParser, otherwise the output may\n // not be safe if used in a document.write context later.\n //\n // So we feature detect the Firefox bug and use the DOMParser if necessary.\n //\n // MS Edge, in older versions, is affected by an mXSS behavior. The second\n // check tests for the behavior and fixes it if necessary.\n if (DOMPurify.isSupported) {\n (function () {\n try {\n var doc = _initDocument('

');\n if (doc.querySelector('svg img')) {\n useDOMParser = true;\n }\n } catch (err) {}\n })();\n (function () {\n try {\n var doc = _initDocument('</title><img>');\n if (doc.querySelector('title').innerHTML.match(/<\\/title/)) {\n removeTitle = true;\n }\n } catch (err) {}\n })();\n }\n\n /**\n * _createIterator\n *\n * @param {Document} root document/fragment to create iterator for\n * @return {Iterator} iterator instance\n */\n var _createIterator = function _createIterator(root) {\n return createNodeIterator.call(root.ownerDocument || root, root, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT, function () {\n return NodeFilter.FILTER_ACCEPT;\n }, false);\n };\n\n /**\n * _isClobbered\n *\n * @param {Node} elm element to check for clobbering attacks\n * @return {Boolean} true if clobbered, false if safe\n */\n var _isClobbered = function _isClobbered(elm) {\n if (elm instanceof Text || elm instanceof Comment) {\n return false;\n }\n if (typeof elm.nodeName !== 'string' || typeof elm.textContent !== 'string' || typeof elm.removeChild !== 'function' || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== 'function' || typeof elm.setAttribute !== 'function') {\n return true;\n }\n return false;\n };\n\n /**\n * _isNode\n *\n * @param {Node} obj object to check whether it's a DOM node\n * @return {Boolean} true is object is a DOM node\n */\n var _isNode = function _isNode(obj) {\n return (typeof Node === 'undefined' ? 'undefined' : _typeof(Node)) === 'object' ? obj instanceof Node : obj && (typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object' && typeof obj.nodeType === 'number' && typeof obj.nodeName === 'string';\n };\n\n /**\n * _executeHook\n * Execute user configurable hooks\n *\n * @param {String} entryPoint Name of the hook's entry point\n * @param {Node} currentNode node to work on with the hook\n * @param {Object} data additional hook parameters\n */\n var _executeHook = function _executeHook(entryPoint, currentNode, data) {\n if (!hooks[entryPoint]) {\n return;\n }\n\n hooks[entryPoint].forEach(function (hook) {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n };\n\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n *\n * @param {Node} currentNode to check for permission to exist\n * @return {Boolean} true if node was killed, false if left alive\n */\n var _sanitizeElements = function _sanitizeElements(currentNode) {\n var content = void 0;\n\n /* Execute a hook if present */\n _executeHook('beforeSanitizeElements', currentNode, null);\n\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Now let's check the element's type and name */\n var tagName = currentNode.nodeName.toLowerCase();\n\n /* Execute a hook if present */\n _executeHook('uponSanitizeElement', currentNode, {\n tagName: tagName,\n allowedTags: ALLOWED_TAGS\n });\n\n /* Remove element if anything forbids its presence */\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n /* Keep content except for black-listed elements */\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName] && typeof currentNode.insertAdjacentHTML === 'function') {\n try {\n var htmlToInsert = currentNode.innerHTML;\n currentNode.insertAdjacentHTML('AfterEnd', trustedTypesPolicy ? trustedTypesPolicy.createHTML(htmlToInsert) : htmlToInsert);\n } catch (err) {}\n }\n _forceRemove(currentNode);\n return true;\n }\n\n /* Convert markup to cover jQuery behavior */\n if (SAFE_FOR_JQUERY && !currentNode.firstElementChild && (!currentNode.content || !currentNode.content.firstElementChild) && /</g.test(currentNode.textContent)) {\n DOMPurify.removed.push({ element: currentNode.cloneNode() });\n if (currentNode.innerHTML) {\n currentNode.innerHTML = currentNode.innerHTML.replace(/</g, '<');\n } else {\n currentNode.innerHTML = currentNode.textContent.replace(/</g, '<');\n }\n }\n\n /* Sanitize element content to be template-safe */\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === 3) {\n /* Get the element's text content */\n content = currentNode.textContent;\n content = content.replace(MUSTACHE_EXPR$$1, ' ');\n content = content.replace(ERB_EXPR$$1, ' ');\n if (currentNode.textContent !== content) {\n DOMPurify.removed.push({ element: currentNode.cloneNode() });\n currentNode.textContent = content;\n }\n }\n\n /* Execute a hook if present */\n _executeHook('afterSanitizeElements', currentNode, null);\n\n return false;\n };\n\n /**\n * _isValidAttribute\n *\n * @param {string} lcTag Lowercase tag name of containing element.\n * @param {string} lcName Lowercase attribute name.\n * @param {string} value Attribute value.\n * @return {Boolean} Returns true if `value` is valid, otherwise false.\n */\n var _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n /* Make sure attribute cannot clobber */\n if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n return false;\n }\n\n /* Sanitize attribute content to be template-safe */\n if (SAFE_FOR_TEMPLATES) {\n value = value.replace(MUSTACHE_EXPR$$1, ' ');\n value = value.replace(ERB_EXPR$$1, ' ');\n }\n\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n if (ALLOW_DATA_ATTR && DATA_ATTR$$1.test(lcName)) {\n // This attribute is safe\n } else if (ALLOW_ARIA_ATTR && ARIA_ATTR$$1.test(lcName)) {\n // This attribute is safe\n /* Otherwise, check the name is permitted */\n } else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n return false;\n\n /* Check value is safe. First, is attr inert? If so, is safe */\n } else if (URI_SAFE_ATTRIBUTES[lcName]) {\n // This attribute is safe\n /* Check no script, data or unknown possibly unsafe URI\n unless we know URI values are safe for that attribute */\n } else if (IS_ALLOWED_URI$$1.test(value.replace(ATTR_WHITESPACE$$1, ''))) {\n // This attribute is safe\n /* Keep image data URIs alive if src/xlink:href is allowed */\n /* Further prevent gadget XSS for dynamically built script tags */\n } else if ((lcName === 'src' || lcName === 'xlink:href') && lcTag !== 'script' && value.indexOf('data:') === 0 && DATA_URI_TAGS[lcTag]) {\n // This attribute is safe\n /* Allow unknown protocols: This provides support for links that\n are handled by protocol handlers which may be unknown ahead of\n time, e.g. fb:, spotify: */\n } else if (ALLOW_UNKNOWN_PROTOCOLS && !IS_SCRIPT_OR_DATA$$1.test(value.replace(ATTR_WHITESPACE$$1, ''))) {\n // This attribute is safe\n /* Check for binary attributes */\n // eslint-disable-next-line no-negated-condition\n } else if (!value) {\n // Binary attributes are safe at this point\n /* Anything else, presume unsafe, do not add it back */\n } else {\n return false;\n }\n return true;\n };\n\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param {Node} node to sanitize\n */\n // eslint-disable-next-line complexity\n var _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n var attr = void 0;\n var value = void 0;\n var lcName = void 0;\n var idAttr = void 0;\n var l = void 0;\n /* Execute a hook if present */\n _executeHook('beforeSanitizeAttributes', currentNode, null);\n\n var attributes = currentNode.attributes;\n\n /* Check if we have attributes; if not we might have a text node */\n\n if (!attributes) {\n return;\n }\n\n var hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR\n };\n l = attributes.length;\n\n /* Go backwards over all attributes; safely remove bad ones */\n while (l--) {\n attr = attributes[l];\n var _attr = attr,\n name = _attr.name,\n namespaceURI = _attr.namespaceURI;\n\n value = attr.value.trim();\n lcName = name.toLowerCase();\n\n /* Execute a hook if present */\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n _executeHook('uponSanitizeAttribute', currentNode, hookEvent);\n value = hookEvent.attrValue;\n\n /* Remove attribute */\n // Safari (iOS + Mac), last tested v8.0.5, crashes if you try to\n // remove a \"name\" attribute from an <img> tag that has an \"id\"\n // attribute at the time.\n if (lcName === 'name' && currentNode.nodeName === 'IMG' && attributes.id) {\n idAttr = attributes.id;\n attributes = apply(arraySlice, attributes, []);\n _removeAttribute('id', currentNode);\n _removeAttribute(name, currentNode);\n if (attributes.indexOf(idAttr) > l) {\n currentNode.setAttribute('id', idAttr.value);\n }\n } else if (\n // This works around a bug in Safari, where input[type=file]\n // cannot be dynamically set after type has been removed\n currentNode.nodeName === 'INPUT' && lcName === 'type' && value === 'file' && (ALLOWED_ATTR[lcName] || !FORBID_ATTR[lcName])) {\n continue;\n } else {\n // This avoids a crash in Safari v9.0 with double-ids.\n // The trick is to first set the id to be empty and then to\n // remove the attribute\n if (name === 'id') {\n currentNode.setAttribute(name, '');\n }\n _removeAttribute(name, currentNode);\n }\n\n /* Did the hooks approve of the attribute? */\n if (!hookEvent.keepAttr) {\n continue;\n }\n\n /* Is `value` valid for this attribute? */\n var lcTag = currentNode.nodeName.toLowerCase();\n if (!_isValidAttribute(lcTag, lcName, value)) {\n continue;\n }\n\n /* Handle invalid data-* attribute set by try-catching it */\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n DOMPurify.removed.pop();\n } catch (err) {}\n }\n\n /* Execute a hook if present */\n _executeHook('afterSanitizeAttributes', currentNode, null);\n };\n\n /**\n * _sanitizeShadowDOM\n *\n * @param {DocumentFragment} fragment to iterate over recursively\n */\n var _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n var shadowNode = void 0;\n var shadowIterator = _createIterator(fragment);\n\n /* Execute a hook if present */\n _executeHook('beforeSanitizeShadowDOM', fragment, null);\n\n while (shadowNode = shadowIterator.nextNode()) {\n /* Execute a hook if present */\n _executeHook('uponSanitizeShadowNode', shadowNode, null);\n\n /* Sanitize tags and elements */\n if (_sanitizeElements(shadowNode)) {\n continue;\n }\n\n /* Deep shadow DOM detected */\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n\n /* Check attributes, sanitize if necessary */\n _sanitizeAttributes(shadowNode);\n }\n\n /* Execute a hook if present */\n _executeHook('afterSanitizeShadowDOM', fragment, null);\n };\n\n /**\n * Sanitize\n * Public method providing core sanitation functionality\n *\n * @param {String|Node} dirty string or DOM node\n * @param {Object} configuration object\n */\n // eslint-disable-next-line complexity\n DOMPurify.sanitize = function (dirty, cfg) {\n var body = void 0;\n var importedNode = void 0;\n var currentNode = void 0;\n var oldNode = void 0;\n var returnNode = void 0;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n if (!dirty) {\n dirty = '<!-->';\n }\n\n /* Stringify, in case dirty is an object */\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n // eslint-disable-next-line no-negated-condition\n if (typeof dirty.toString !== 'function') {\n throw new TypeError('toString is not a function');\n } else {\n dirty = dirty.toString();\n if (typeof dirty !== 'string') {\n throw new TypeError('dirty is not a string, aborting');\n }\n }\n }\n\n /* Check we can run. Otherwise fall back or ignore */\n if (!DOMPurify.isSupported) {\n if (_typeof(window.toStaticHTML) === 'object' || typeof window.toStaticHTML === 'function') {\n if (typeof dirty === 'string') {\n return window.toStaticHTML(dirty);\n }\n if (_isNode(dirty)) {\n return window.toStaticHTML(dirty.outerHTML);\n }\n }\n return dirty;\n }\n\n /* Assign config vars */\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n\n /* Clean up removed elements */\n DOMPurify.removed = [];\n\n if (IN_PLACE) {\n /* No special handling necessary for in-place sanitization */\n } else if (dirty instanceof Node) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('<!-->');\n importedNode = body.ownerDocument.importNode(dirty, true);\n if (importedNode.nodeType === 1 && importedNode.nodeName === 'BODY') {\n /* Node is already a body, use as is */\n body = importedNode;\n } else {\n body.appendChild(importedNode);\n }\n } else {\n /* Exit directly if we have nothing to do */\n if (!RETURN_DOM && !WHOLE_DOCUMENT && dirty.indexOf('<') === -1) {\n return trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n }\n\n /* Initialize the document to work on */\n body = _initDocument(dirty);\n\n /* Check we have a DOM node from the data */\n if (!body) {\n return RETURN_DOM ? null : emptyHTML;\n }\n }\n\n /* Remove first element node (ours) if FORCE_BODY is set */\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n\n /* Get node iterator */\n var nodeIterator = _createIterator(IN_PLACE ? dirty : body);\n\n /* Now start iterating over the created document */\n while (currentNode = nodeIterator.nextNode()) {\n /* Fix IE's strange behavior with manipulated textNodes #89 */\n if (currentNode.nodeType === 3 && currentNode === oldNode) {\n continue;\n }\n\n /* Sanitize tags and elements */\n if (_sanitizeElements(currentNode)) {\n continue;\n }\n\n /* Shadow DOM detected, sanitize it */\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n\n /* Check attributes, sanitize if necessary */\n _sanitizeAttributes(currentNode);\n\n oldNode = currentNode;\n }\n\n oldNode = null;\n\n /* If we sanitized `dirty` in-place, return it. */\n if (IN_PLACE) {\n return dirty;\n }\n\n /* Return sanitized string or DOM */\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n\n while (body.firstChild) {\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n\n if (RETURN_DOM_IMPORT) {\n /* AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs. */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n\n return returnNode;\n }\n\n var serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n return trustedTypesPolicy ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n };\n\n /**\n * Public method to set the configuration once\n * setConfig\n *\n * @param {Object} cfg configuration object\n */\n DOMPurify.setConfig = function (cfg) {\n _parseConfig(cfg);\n SET_CONFIG = true;\n };\n\n /**\n * Public method to remove the configuration\n * clearConfig\n *\n */\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n\n /**\n * Public method to check if an attribute value is valid.\n * Uses last set config, if any. Otherwise, uses config defaults.\n * isValidAttribute\n *\n * @param {string} tag Tag name of containing element.\n * @param {string} attr Attribute name.\n * @param {string} value Attribute value.\n * @return {Boolean} Returns true if `value` is valid. Otherwise, returns false.\n */\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n var lcTag = tag.toLowerCase();\n var lcName = attr.toLowerCase();\n return _isValidAttribute(lcTag, lcName, value);\n };\n\n /**\n * AddHook\n * Public method to add DOMPurify hooks\n *\n * @param {String} entryPoint entry point for the hook to add\n * @param {Function} hookFunction function to execute\n */\n DOMPurify.addHook = function (entryPoint, hookFunction) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n hooks[entryPoint] = hooks[entryPoint] || [];\n hooks[entryPoint].push(hookFunction);\n };\n\n /**\n * RemoveHook\n * Public method to remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if more are present)\n *\n * @param {String} entryPoint entry point for the hook to remove\n */\n DOMPurify.removeHook = function (entryPoint) {\n if (hooks[entryPoint]) {\n hooks[entryPoint].pop();\n }\n };\n\n /**\n * RemoveHooks\n * Public method to remove all DOMPurify hooks at a given entryPoint\n *\n * @param {String} entryPoint entry point for the hooks to remove\n */\n DOMPurify.removeHooks = function (entryPoint) {\n if (hooks[entryPoint]) {\n hooks[entryPoint] = [];\n }\n };\n\n /**\n * RemoveAllHooks\n * Public method to remove all DOMPurify hooks\n *\n */\n DOMPurify.removeAllHooks = function () {\n hooks = {};\n };\n\n return DOMPurify;\n}\n\nvar purify = createDOMPurify();\n\nreturn purify;\n\n})));\n//# sourceMappingURL=purify.js.map\n;\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2016-2017 (original work) Open Assessment Technologies SA;\n *\n */\n\n/**\n * Notify user about logout\n *\n * @author Alexander Zagovorichev <zagovorichev@1pt.com>\n */\ndefine('layout/logout-event',['jquery', 'lodash', 'i18n', 'util/url', 'ui/dialog/alert'], function (\n $,\n _,\n __,\n url,\n alert\n) {\n 'use strict';\n\n var defaults = {\n message: __('You have been logged out. Please login again'),\n redirectUrl: url.route('logout', 'Main', 'tao')\n };\n\n /**\n * @param {Object} options\n * @param {String} [options.message] - Message to be displayed before redirect\n * @param {String} [options.redirectUrl] - Target URI\n */\n return function logoutEvent(options) {\n options = _.defaults(options || {}, defaults);\n alert(options.message, function () {\n window.location = options.redirectUrl;\n });\n };\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2017 (original work) Open Assessment Technologies SA ;\n */\n/**\n * @author Jean-Sébastien Conan <jean-sebastien@taotesting.com>\n */\ndefine('controller/app',[\n 'lodash',\n 'jquery',\n 'core/historyRouter',\n 'core/logger',\n 'core/eventifier',\n 'core/statifier',\n 'util/url',\n 'ui/feedback',\n 'layout/logout-event'\n], function (_, $, historyRouterFactory, loggerFactory, eventifier, statifier, urlUtil, feedback, logoutEvent) {\n 'use strict';\n\n /**\n * Shared router that will manage the page for each controller\n * @type {historyRouter}\n */\n var historyRouter;\n\n /**\n *\n */\n var redirectUrl;\n\n /**\n * Creates a logger for the app\n * @type {logger}\n */\n var appLogger = loggerFactory('controller/app');\n\n /**\n * Defines an application controller that will manage the routes through the history.\n * It will start by dispatching the current location, in order to keep history consistency.\n * To properly use this application controller you need to take care of it in each controller\n * that is intended to be routed through the history. See samples below.\n *\n * @example\n * // Defines a controller that is routable through the history\n * return {\n * // Will be called each time the history routes the action to this controller\n * start: function start() {\n * // Take care of the application controller by applying a hook on each routable links\n * return appController.apply('.link');\n *\n * // You can also be notified of a change in the route,\n * // and release some resources as this controller will be destroyed.\n * // Pay attention to the event namespace, it must be unique.\n * appController.on('change.myController', function() {\n * // Release the event, as this controller will be destroyed\n * appController.off('change.myController');\n *\n * // Release resources\n * ...\n * });\n *\n * // Do the stuff of the controller\n * ...\n *\n * // If you need to change the current route you can rely on the router brought by the appController\n * appController.getRouter().redirect(url);\n * };\n *\n * @typedef {appController}\n */\n var appController = eventifier(statifier({\n /**\n * App controller entry point: set up the router.\n * @param {Object} options\n * @param {String} [options.forwardTo] - an optional route of a client controller to forward\n * @param {String} [options.redirectUrl] - an optional url to redirect client on authorisation errors\n */\n start: function start(options){\n var currentRoute;\n\n // all links that are tagged with the \"router\" class are dispatched using the history router\n appController.apply();\n\n // dispatch the current route\n if (options && options.forwardTo) {\n currentRoute = options.forwardTo;\n } else {\n currentRoute = window.location + '';\n }\n\n if (options && options.redirectUrl) {\n redirectUrl = options.redirectUrl || {};\n }\n historyRouter.forward(currentRoute);\n },\n\n /**\n * Catch all links below the target, when they have the provided selector,\n * then dispatch them using the history router.\n * @param {String} [selector] - The CSS signature of links to catch (default: \".router\")\n * @param {String|HTMLElement|jQuery} [target] - The container from which catch links (default: document)\n * @returns {appController}\n */\n apply: function apply(selector, target) {\n selector = selector || '.router';\n target = target || document;\n\n $(target).off('click.appController').on('click.appController', selector, function (e) {\n var $elt, href;\n\n // prevent the browser to actually change the page from this link\n e.preventDefault();\n\n // try to get the target of the link\n $elt = $(this);\n href = $elt.attr('href');\n if (!href) {\n href = $('[href]:first-child', $elt).attr('href');\n }\n\n // use the history router to change the current view\n // the called controller will have in charge to get the data and update the view accordingly\n if (href) {\n historyRouter.redirect(href);\n }\n });\n\n return this;\n },\n\n /**\n * Exposes the router so other controllers can dispatch a route\n *\n * @returns {router} the router\n */\n getRouter: function getRouter() {\n return historyRouter;\n },\n\n /**\n * Exposes the logger so other controllers can log application level events\n *\n * @returns {logger} the router\n */\n getLogger: function getLogger() {\n return appLogger;\n },\n\n /**\n * Catches errors\n * @param {Object} err\n * @returns {appController}\n */\n onError: function onError(err) {\n var message = err && err.message || err;\n var options = {message: message};\n\n appLogger.error(err);\n if (err.code === 403){\n options = _.defaults(options, redirectUrl || {});\n logoutEvent(options);\n }else{\n feedback().error(message);\n }\n return this;\n }\n }));\n\n // setup the history router\n historyRouter = historyRouterFactory()\n .on('dispatching', function (url) {\n appController.setState('dispatching');\n appController.trigger('change', url);\n })\n .on('dispatched', function (url) {\n appController.setState('dispatching', false);\n appController.trigger('started', url);\n });\n\n return appController;\n});\n\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2015 (original work) Open Assessment Technologies SA;\n *\n */\n\n/**\n * Loading bar a.k.a. Knight Rider\n *\n * @author dieter <dieter@taotesting.com>\n */\ndefine('layout/loading-bar',['jquery'],\n function ($) {\n 'use strict';\n\n var $loadingBar = $('.loading-bar'),\n originalHeight = $loadingBar.height(),\n $win = $(window),\n $doc = $(document),\n $contentWrap = $('.content-wrap'),\n headerElements = {\n $versionWarning: $contentWrap.find('.version-warning'),\n $header: $contentWrap.find('header:first()')\n },\n headerHeight = getHeaderHeight(headerElements);\n\n /**\n * the TAO header can have three different forms\n * 1. version warning on alpha/beta + main navi\n * 2. main navi only on regular version\n * 3. nothing in the case of LTI\n *\n * @param headerElements\n */\n function getHeaderHeight(headerElements) {\n var $element;\n headerHeight = 0;\n for ($element in headerElements) {\n if (headerElements[$element].length && headerElements[$element].is(':visible')) {\n headerHeight += headerElements[$element].outerHeight();\n }\n }\n return headerHeight;\n }\n\n /**\n * Update height of cover element\n */\n function updateHeight() {\n var loadingBarHeight = $doc.height();\n if (!$loadingBar.hasClass('loading')) {\n return;\n }\n // status of height would change for instance when version warning is hidden\n headerHeight = getHeaderHeight(headerElements);\n\n if (headerHeight <= $win.scrollTop()) {\n $loadingBar.addClass('fixed');\n } else {\n $loadingBar.removeClass('fixed');\n }\n\n if ($loadingBar.hasClass('loadingbar-covered')) {\n if (window.devicePixelRatio !== 1) {\n loadingBarHeight--;\n }\n $loadingBar.height(loadingBarHeight);\n } else {\n $loadingBar.height('');\n }\n }\n\n $win.on('scroll.loadingbar', function () {\n updateHeight();\n });\n\n return {\n /**\n * Show loading bar\n * @param {Boolean} [covered = true] - - whether overlay HTML element should be added (disable GUI).\n */\n start: function (covered) {\n if (typeof covered === 'undefined') {\n covered = true;\n }\n if ($loadingBar.hasClass('loading')) {\n $loadingBar.stop();\n }\n $loadingBar.addClass('loading');\n $loadingBar.toggleClass('loadingbar-covered', covered);\n updateHeight();\n },\n stop: function () {\n $loadingBar.removeClass('loading fixed').height(originalHeight);\n }\n };\n });\n\n","/*\n * Helpers\n *\n * @deprecated Do not use it anymore. Only here for backward compat.\n */\ndefine('helpers',[\n 'lodash',\n 'jquery',\n 'context',\n 'layout/loading-bar'\n], function (_, $, context, loadingBar) {\n 'use strict';\n\n var Helpers = {\n init: function () {\n /**\n * Extends the JQuery post method for convenience use with Json\n * @param {String} url\n * @param {Object} data\n * @param {Function} callback\n */\n $.postJson = function (url, data, callback) {\n $.post(url, data, callback, \"json\");\n };\n },\n\n getMainContainer: function () {\n console.warn('deprecated, use section instead');\n var sectionId,\n sectionIndex;\n if (!context.section) {\n sectionIndex = $('.section-container').tabs('options', 'selected');\n $('.content-panel').eq(sectionIndex).find('.content-block');\n }\n return $('#panel-' + context.section + ' .content-block');\n },\n\n /**\n * @return {String} the current main container jQuery selector (from the opened tab)\n */\n getMainContainerSelector: function ($tabs) {\n console.warn('deprecated, use section instead');\n var $container = this.getMainContainer();\n if ($container && $container.length > 0) {\n return $container.selector;\n }\n return false;\n },\n\n /*\n * Navigation and ajax helpers\n */\n\n /**\n * Begin an async request, while loading:\n * - show the loader img\n * - disable the submit buttons\n */\n loading: function () {\n console.warn('deprecated, this should be automated');\n $(window).on('click', function (e) {\n e.stopPropagation();\n e.preventDefault();\n return false;\n });\n loadingBar.start();\n },\n\n /**\n * Complete an async request, once loaded:\n * - hide the loader img\n * - enable back the submit buttons\n */\n loaded: function () {\n console.warn('deprecated, this should be automated');\n $(window).off('click');\n loadingBar.stop();\n },\n\n /**\n * Load url asyncly into selector container\n * @param {String} selector\n * @param {String} url\n */\n _load: function (selector, url, data) {\n\n url = url || '';\n\n if (data) {\n data.nc = new Date().getTime();\n }\n else {\n data = {nc: new Date().getTime()};\n }\n $(selector).hide().empty().show();\n if (url.indexOf('?') === -1) {\n $(selector).load(url, data);\n }\n else {\n url += '&' + ($.param(data));\n $(selector).load(url);\n }\n },\n\n /*\n * others\n */\n\n /**\n * simple _url implementation, requires layout_header to set some global variables\n * @deprecated use util/url#route instead\n */\n _url: function (action, controller, extension, params) {\n\n var url;\n\n if(typeof action !== 'string' || typeof controller !== 'string' || typeof extension !== 'string'){\n throw new TypeError('All parts are required to build an URL');\n }\n\n url = context.root_url + extension + '/' + controller + '/' + action;\n\n if(_.isString(params)) {\n url += '?' + params;\n } else if (_.isPlainObject(params)) {\n url += '?' + $.param(params);\n }\n return url;\n }\n };\n\n return Helpers;\n});\n\n","/**\n * Gamp v0.2.1 - A simple arithmetic API with workaround to floating-point issue\n *\n * https://github.com/jsconan/gamp\n *\n * Copyright (c) 2016 Jean-Sébastien CONAN\n * Released under the MIT license.\n */\n\n// 2016 - OAT - modified AMD loader to be able to compile it\ndefine('lib/gamp/gamp',[],function() {\n 'use strict';\n\n /**\n * Computes the precision of a decimal number.\n * This precision will be then used as a correction factor to normalize\n * the value in order to prevent the floating-point round error.\n * @param {number} val\n * @returns {number}\n */\n function precision(val) {\n var digits = String(val);\n var point = digits.indexOf('.');\n return point < 0 ? 1 : Math.pow(10, digits.length - point - 1);\n }\n\n /**\n * Computes the approached precision for a list of decimal numbers.\n * This precision will be then used as a correction factor to normalize\n * the values in order to prevent the floating-point round error.\n * @param {number} ...\n * @returns {number}\n */\n function gamp() {\n var i = arguments.length - 1;\n var factor = -Infinity;\n while (i >= 0) {\n factor = Math.max(factor, precision(arguments[i--]));\n }\n return Math.abs(factor);\n }\n\n /**\n * Makes the translation of a floating point number to an integer value using a precision factor\n * @param {number} val\n * @param {number} factor\n * @returns {number}\n */\n gamp.normalize = function normalize(val, factor) {\n return Math.round(factor * Number(val));\n };\n\n /**\n * Adjusts the number of digits to prevent round-off error\n * @param {number} val\n * @param {number} [digits=16]\n * @returns {number}\n */\n gamp.round = function round(val, digits) {\n return Number(Number(val).toPrecision('undefined' === typeof digits ? 16 : digits));\n };\n\n /**\n * Computes the addition of two decimal values\n * @param {number} a\n * @param {number} b\n * @returns {number}\n */\n gamp.add = function add(a, b) {\n var factor = gamp(a, b);\n return gamp.round((gamp.normalize(a, factor) + gamp.normalize(b, factor)) / factor);\n };\n\n /**\n * Computes the subtraction of two decimal values\n * @param {number} a\n * @param {number} b\n * @returns {number}\n */\n gamp.sub = function sub(a, b) {\n var factor = gamp(a, b);\n return gamp.round((gamp.normalize(a, factor) - gamp.normalize(b, factor)) / factor);\n };\n\n /**\n * Computes the multiplication of two decimal values\n * @param {number} a\n * @param {number} b\n * @returns {number}\n */\n gamp.mul = function mul(a, b) {\n var factor = gamp(a, b);\n return gamp.round((gamp.normalize(a, factor) * gamp.normalize(b, factor)) / (factor * factor), 15);\n };\n\n /**\n * Computes the division of two decimal values\n * @param {number} a\n * @param {number} b\n * @returns {number}\n */\n gamp.div = function div(a, b) {\n var factor = gamp(a, b);\n return gamp.round(gamp.normalize(a, factor) / gamp.normalize(b, factor));\n };\n\n /**\n * Computes the power of a decimal value\n * @param {number} a\n * @param {number} b\n * @returns {number}\n */\n gamp.pow = function pow(a, b) {\n var factor = gamp(a);\n var ta = gamp.normalize(a, factor);\n var ib = Math.floor(b);\n var fb = b - ib;\n var res = ib ? Math.pow(ta, ib) / Math.pow(factor, ib) : 1;\n if (fb) {\n res = gamp.div(gamp.mul(res, Math.pow(ta, fb)), Math.pow(factor, fb));\n }\n return gamp.round(res, 15);\n };\n\n return gamp;\n});\n\n","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.14.5\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define('lib/popper/popper',factory) :\n\t(global.Popper = factory());\n}(this, (function () { 'use strict';\n\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nvar longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nvar timeoutDuration = 0;\nfor (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n timeoutDuration = 1;\n break;\n }\n}\n\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n called = true;\n window.Promise.resolve().then(function () {\n called = false;\n fn();\n });\n };\n}\n\nfunction taskDebounce(fn) {\n var scheduled = false;\n return function () {\n if (!scheduled) {\n scheduled = true;\n setTimeout(function () {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n var window = element.ownerDocument.defaultView;\n var css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nfunction getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n case '#document':\n return element.body;\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n\n var _getStyleComputedProp = getStyleComputedProperty(element),\n overflow = _getStyleComputedProp.overflow,\n overflowX = _getStyleComputedProp.overflowX,\n overflowY = _getStyleComputedProp.overflowY;\n\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nfunction isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nfunction getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n var noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n var offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n var nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY') {\n return false;\n }\n return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nfunction findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1;\n\n // Get common ancestor container\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer;\n\n // Both nodes are inside #document\n\n if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n var element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n var html = element.ownerDocument.documentElement;\n var scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n var modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return parseFloat(styles['border' + sideA + 'Width'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\n\nfunction getWindowSizes(document) {\n var body = document.body;\n var html = document.documentElement;\n var computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nfunction getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\n}\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nfunction getBoundingClientRect(element) {\n var rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } else {\n rect = element.getBoundingClientRect();\n }\n } catch (e) {}\n\n var result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n\n // subtract scrollbar size from sizes\n var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n var width = sizes.width || element.clientWidth || result.right - result.left;\n var height = sizes.height || element.clientHeight || result.bottom - result.top;\n\n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var isIE10 = isIE(10);\n var isHTML = parent.nodeName === 'HTML';\n var childrenRect = getBoundingClientRect(children);\n var parentRect = getBoundingClientRect(parent);\n var scrollParent = getScrollParent(children);\n\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth, 10);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n var offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n var marginTop = parseFloat(styles.marginTop, 10);\n var marginLeft = parseFloat(styles.marginLeft, 10);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var html = element.ownerDocument.documentElement;\n var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n var width = Math.max(html.clientWidth, window.innerWidth || 0);\n var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n var scrollTop = !excludeScroll ? getScroll(html) : 0;\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n var offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width: width,\n height: height\n };\n\n return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n return isFixed(getParentNode(element));\n}\n\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nfunction getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n var el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n}\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n // NOTE: 1 DOM access here\n\n var boundaries = { top: 0, left: 0 };\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n } else {\n // Handle other cases based on DOM element used as boundaries\n var boundariesNode = void 0;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n height = _getWindowSizes.height,\n width = _getWindowSizes.width;\n\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n var isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n\n return boundaries;\n}\n\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n\n var rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height\n }\n };\n\n var sortedAreas = Object.keys(rects).map(function (key) {\n return _extends({\n key: key\n }, rects[key], {\n area: getArea(rects[key])\n });\n }).sort(function (a, b) {\n return b.area - a.area;\n });\n\n var filteredAreas = sortedAreas.filter(function (_ref2) {\n var width = _ref2.width,\n height = _ref2.height;\n return width >= popper.clientWidth && height >= popper.clientHeight;\n });\n\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n var variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? '-' + variation : '');\n}\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nfunction getOuterSizes(element) {\n var window = element.ownerDocument.defaultView;\n var styles = window.getComputedStyle(element);\n var x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);\n var y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);\n var result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x\n };\n return result;\n}\n\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nfunction getOppositePlacement(placement) {\n var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n var popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n var mainSide = isHoriz ? 'top' : 'left';\n var secondarySide = isHoriz ? 'left' : 'top';\n var measurement = isHoriz ? 'height' : 'width';\n var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(function (cur) {\n return cur[prop] === value;\n });\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(function (modifier) {\n if (modifier['function']) {\n // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nfunction update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n var data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {}\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nfunction isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(function (_ref) {\n var name = _ref.name,\n enabled = _ref.enabled;\n return enabled && name === modifierName;\n });\n}\n\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nfunction getSupportedPropertyName(property) {\n var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (var i = 0; i < prefixes.length; i++) {\n var prefix = prefixes[i];\n var toCheck = prefix ? '' + prefix + upperProp : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicity asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nfunction getWindow(element) {\n var ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n var isBody = scrollParent.nodeName === 'BODY';\n var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nfunction applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper;\n\n // Remove this legacy support in Popper.js v2\n\n var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'applyStyle';\n }).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n }\n var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n var styles = {\n position: popper.position\n };\n\n // Avoid blurry text by using full pixel integers.\n // For pixel-perfect positioning, top/bottom prefers rounded\n // values, while left/right prefers floored values.\n var offsets = {\n left: Math.floor(popper.left),\n top: Math.round(popper.top),\n bottom: Math.round(popper.bottom),\n right: Math.floor(popper.right)\n };\n\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n var prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n var left = void 0,\n top = void 0;\n if (sideA === 'bottom') {\n // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n var invertTop = sideA === 'bottom' ? -1 : 1;\n var invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = sideA + ', ' + sideB;\n }\n\n // Attributes\n var attributes = {\n 'x-placement': data.placement\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\n\n var isRequired = !!requesting && modifiers.some(function (modifier) {\n return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n });\n\n if (!isRequired) {\n var _requesting = '`' + requestingName + '`';\n var requested = '`' + requestedName + '`';\n console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n }\n return isRequired;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction arrow(data, options) {\n var _data$offsets$arrow;\n\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n var arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn('WARNING: `arrow.element` must be child of its popper element!');\n return data;\n }\n }\n\n var placement = data.placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n var len = isVertical ? 'height' : 'width';\n var sideCapitalized = isVertical ? 'Top' : 'Left';\n var side = sideCapitalized.toLowerCase();\n var altSide = isVertical ? 'left' : 'top';\n var opSide = isVertical ? 'bottom' : 'right';\n var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n\n if (reference[side] + arrowElementSize > popper[opSide] ) {\n // modification for tao\n // correction of popper position on very right edge of web page\n var clientWidth = Math.max(document.documentElement.clientWidth, document.documentElement.innerWidth || 0);\n if(clientWidth < (popper[opSide] + arrowElementSize) && !isVertical){\n data.offsets.popper[opSide] = clientWidth-2;\n data.offsets.popper[side] = data.offsets.popper[opSide] - data.popper.width;\n }else{\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n var css = getStyleComputedProperty(data.instance.popper);\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized], 10);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width'], 10);\n var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n return data;\n}\n\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var index = validPlacements.indexOf(placement);\n var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise'\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n\n var flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach(function (step, index) {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n var floor = Math.floor;\n var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n // flip the variation if required\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var flippedVariation = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var placement = data.placement.split('-')[0];\n var floor = Math.floor;\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var side = isVertical ? 'right' : 'bottom';\n var opSide = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n var value = +split[1];\n var unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n var element = void 0;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n var rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n var size = void 0;\n if (unit === 'vh') {\n size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n } else {\n size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n });\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n var divider = fragments.indexOf(find(fragments, function (frag) {\n return frag.search(/,|\\s/) !== -1;\n }));\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n var splitRegex = /\\s*,\\s*|\\s+/;\n var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map(function (op, index) {\n // Most of the units rely on the orientation of the popper\n var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n var mergeWithPrevious = false;\n return op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce(function (a, b) {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(function (str) {\n return toValue(str, measurement, popperOffsets, referenceOffsets);\n });\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach(function (op, index) {\n op.forEach(function (frag, index2) {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nfunction offset(data, _ref) {\n var offset = _ref.offset;\n var placement = data.placement,\n _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var basePlacement = placement.split('-')[0];\n\n var offsets = void 0;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n\n/**\n * modification for tao: more precise boundary calculation for tooltips on right side of screen\n * on test item authoring page\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n var transformProp = getSupportedPropertyName('transform');\n var popperStyles = data.instance.popper.style; // assignment to help minification\n var top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n var order = options.priority;\n var popper = data.offsets.popper;\n\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n // oat modification\n if (placement === 'left') {\n var overlap = boundaries.width - (popper.left + popper.width);\n if (!options.escapeWithReference && overlap < 0) {\n var padding = options.padding || 0;\n value = boundaries.width - popper.width - padding;\n }\n }\n // end of oat modification\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return defineProperty({}, placement, value);\n },\n secondary: function secondary(placement) {\n var mainSide = placement === 'right' ? 'left' : 'top';\n var value = popper[mainSide];\n if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n return defineProperty({}, mainSide, value);\n }\n };\n\n order.forEach(function (placement) {\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = _extends({}, popper, check[side](placement));\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n var refRect = data.offsets.reference;\n var bound = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'preventOverflow';\n }).boundaries;\n\n if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction inner(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nvar modifiers = {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.<br />\n * It will read the variation of the `placement` property.<br />\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.<br />\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.<br />\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.<br />\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.<br />\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent'\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]'\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport'\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right'\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined\n }\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overridden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nvar Defaults = {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: function onCreate() {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: function onUpdate() {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers: modifiers\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {HTMLElement|referenceObject} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n function Popper(reference, popper) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, Popper);\n\n this.scheduleUpdate = function () {\n return requestAnimationFrame(_this.update);\n };\n\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = _extends({}, Popper.Defaults, options);\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n })\n // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n });\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(function (modifierOptions) {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n var eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n\n\n createClass(Popper, [{\n key: 'update',\n value: function update$$1() {\n return update.call(this);\n }\n }, {\n key: 'destroy',\n value: function destroy$$1() {\n return destroy.call(this);\n }\n }, {\n key: 'enableEventListeners',\n value: function enableEventListeners$$1() {\n return enableEventListeners.call(this);\n }\n }, {\n key: 'disableEventListeners',\n value: function disableEventListeners$$1() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n\n }]);\n return Popper;\n}();\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n\nreturn Popper;\n\n})));\n//# sourceMappingURL=popper.js.map\n;\n","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.3.1\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./popper')) :\n\ttypeof define === 'function' && define.amd ? define('lib/popper/tooltip',['./popper'], factory) :\n\t(global.Tooltip = factory(global.Popper));\n}(this, (function (Popper) { 'use strict';\n\nPopper = Popper && Popper.hasOwnProperty('default') ? Popper['default'] : Popper;\n\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\n\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar DEFAULT_OPTIONS = {\n container: false,\n delay: 0,\n html: false,\n placement: 'top',\n title: '',\n template: '<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',\n trigger: 'hover focus',\n offset: 0,\n arrowSelector: '.tooltip-arrow, .tooltip__arrow',\n innerSelector: '.tooltip-inner, .tooltip__inner'\n};\n\nvar Tooltip = function () {\n /**\n * Create a new Tooltip.js instance\n * @class Tooltip\n * @param {HTMLElement} reference - The DOM node used as reference of the tooltip (it can be a jQuery element).\n * @param {Object} options\n * @param {String} options.placement='top'\n * Placement of the popper accepted values: `top(-start, -end), right(-start, -end), bottom(-start, -end),\n * left(-start, -end)`\n * @param {String} options.arrowSelector='.tooltip-arrow, .tooltip__arrow' - className used to locate the DOM arrow element in the tooltip.\n * @param {String} options.innerSelector='.tooltip-inner, .tooltip__inner' - className used to locate the DOM inner element in the tooltip.\n * @param {HTMLElement|String|false} options.container=false - Append the tooltip to a specific element.\n * @param {Number|Object} options.delay=0\n * Delay showing and hiding the tooltip (ms) - does not apply to manual trigger type.\n * If a number is supplied, delay is applied to both hide/show.\n * Object structure is: `{ show: 500, hide: 100 }`\n * @param {Boolean} options.html=false - Insert HTML into the tooltip. If false, the content will inserted with `textContent`.\n * @param {String} [options.template='<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>']\n * Base HTML to used when creating the tooltip.\n * The tooltip's `title` will be injected into the `.tooltip-inner` or `.tooltip__inner`.\n * `.tooltip-arrow` or `.tooltip__arrow` will become the tooltip's arrow.\n * The outermost wrapper element should have the `.tooltip` class.\n * @param {String|HTMLElement|TitleFunction} options.title='' - Default title value if `title` attribute isn't present.\n * @param {String} [options.trigger='hover focus']\n * How tooltip is triggered - click, hover, focus, manual.\n * You may pass multiple triggers; separate them with a space. `manual` cannot be combined with any other trigger.\n * @param {Boolean} options.closeOnClickOutside=false - Close a popper on click outside of the popper and reference element. This has effect only when options.trigger is 'click'.\n * @param {String|HTMLElement} options.boundariesElement\n * The element used as boundaries for the tooltip. For more information refer to Popper.js'\n * [boundariesElement docs](https://popper.js.org/popper-documentation.html)\n * @param {Number|String} options.offset=0 - Offset of the tooltip relative to its reference. For more information refer to Popper.js'\n * [offset docs](https://popper.js.org/popper-documentation.html)\n * @param {Object} options.popperOptions={} - Popper options, will be passed directly to popper instance. For more information refer to Popper.js'\n * [options docs](https://popper.js.org/popper-documentation.html)\n * @return {Object} instance - The generated tooltip instance\n */\n function Tooltip(reference, options) {\n classCallCheck(this, Tooltip);\n\n _initialiseProps.call(this);\n\n // apply user options over default ones\n options = _extends({}, DEFAULT_OPTIONS, options);\n\n reference.jquery && (reference = reference[0]);\n\n // cache reference and options\n this.reference = reference;\n this.options = options;\n\n // get events list\n var events = typeof options.trigger === 'string' ? options.trigger.split(' ').filter(function (trigger) {\n return ['click', 'hover', 'focus'].indexOf(trigger) !== -1;\n }) : [];\n\n // set initial state\n this._isOpen = false;\n this._popperOptions = {};\n\n // set event listeners\n this._setEventListeners(reference, events, options);\n }\n\n //\n // Public methods\n //\n\n /**\n * Reveals an element's tooltip. This is considered a \"manual\" triggering of the tooltip.\n * Tooltips with zero-length titles are never displayed.\n * @method Tooltip#show\n * @memberof Tooltip\n */\n\n\n /**\n * Hides an element’s tooltip. This is considered a “manual” triggering of the tooltip.\n * @method Tooltip#hide\n * @memberof Tooltip\n */\n\n\n /**\n * Hides and destroys an element’s tooltip.\n * @method Tooltip#dispose\n * @memberof Tooltip\n */\n\n\n /**\n * Toggles an element’s tooltip. This is considered a “manual” triggering of the tooltip.\n * @method Tooltip#toggle\n * @memberof Tooltip\n */\n\n\n /**\n * Updates the tooltip's title content\n * @method Tooltip#updateTitleContent\n * @memberof Tooltip\n * @param {String|HTMLElement} title - The new content to use for the title\n */\n\n\n //\n // Private methods\n //\n\n createClass(Tooltip, [{\n key: '_create',\n\n\n /**\n * Creates a new tooltip node\n * @memberof Tooltip\n * @private\n * @param {HTMLElement} reference\n * @param {String} template\n * @param {String|HTMLElement|TitleFunction} title\n * @param {Boolean} allowHtml\n * @return {HTMLElement} tooltipNode\n */\n value: function _create(reference, template, title, allowHtml) {\n // create tooltip element\n var tooltipGenerator = window.document.createElement('div');\n tooltipGenerator.innerHTML = template.trim();\n var tooltipNode = tooltipGenerator.childNodes[0];\n\n // add unique ID to our tooltip (needed for accessibility reasons)\n tooltipNode.id = 'tooltip_' + Math.random().toString(36).substr(2, 10);\n\n // set initial `aria-hidden` state to `false` (it's visible!)\n tooltipNode.setAttribute('aria-hidden', 'false');\n\n // add title to tooltip\n var titleNode = tooltipGenerator.querySelector(this.options.innerSelector);\n this._addTitleContent(reference, title, allowHtml, titleNode);\n\n // return the generated tooltip node\n return tooltipNode;\n }\n }, {\n key: '_addTitleContent',\n value: function _addTitleContent(reference, title, allowHtml, titleNode) {\n if (title.nodeType === 1 || title.nodeType === 11) {\n // if title is a element node or document fragment, append it only if allowHtml is true\n allowHtml && titleNode.appendChild(title);\n } else if (isFunction(title)) {\n // if title is a function, call it and set textContent or innerHtml depending by `allowHtml` value\n var titleText = title.call(reference);\n allowHtml ? titleNode.innerHTML = titleText : titleNode.textContent = titleText;\n } else {\n // if it's just a simple text, set textContent or innerHtml depending by `allowHtml` value\n allowHtml ? titleNode.innerHTML = title : titleNode.textContent = title;\n }\n }\n }, {\n key: '_show',\n value: function _show(reference, options) {\n // don't show if it's already visible\n // or if it's not being showed\n if (this._isOpen && !this._isOpening) {\n return this;\n }\n this._isOpen = true;\n\n // if the tooltipNode already exists, just show it\n if (this._tooltipNode) {\n this._tooltipNode.style.visibility = 'visible';\n this._tooltipNode.setAttribute('aria-hidden', 'false');\n this.popperInstance.update();\n return this;\n }\n\n // get title\n var title = reference.getAttribute('title') || options.title;\n\n // don't show tooltip if no title is defined\n if (!title) {\n return this;\n }\n\n // create tooltip node\n var tooltipNode = this._create(reference, options.template, title, options.html);\n\n // Add `aria-describedby` to our reference element for accessibility reasons\n reference.setAttribute('aria-describedby', tooltipNode.id);\n\n // append tooltip to container\n var container = this._findContainer(options.container, reference);\n\n this._append(tooltipNode, container);\n\n this._popperOptions = _extends({}, options.popperOptions, {\n placement: options.placement\n });\n\n this._popperOptions.modifiers = _extends({}, this._popperOptions.modifiers, {\n arrow: {\n element: this.options.arrowSelector\n },\n offset: {\n offset: options.offset\n }\n });\n\n if (options.boundariesElement) {\n this._popperOptions.modifiers.preventOverflow = {\n boundariesElement: options.boundariesElement\n };\n }\n\n this.popperInstance = new Popper(reference, tooltipNode, this._popperOptions);\n\n this._tooltipNode = tooltipNode;\n\n return this;\n }\n }, {\n key: '_hide',\n value: function _hide() /*reference, options*/{\n // don't hide if it's already hidden\n if (!this._isOpen) {\n return this;\n }\n\n this._isOpen = false;\n\n // hide tooltipNode\n this._tooltipNode.style.visibility = 'hidden';\n this._tooltipNode.setAttribute('aria-hidden', 'true');\n\n return this;\n }\n }, {\n key: '_dispose',\n value: function _dispose() {\n var _this = this;\n\n // remove event listeners first to prevent any unexpected behaviour\n this._events.forEach(function (_ref) {\n var func = _ref.func,\n event = _ref.event;\n\n _this.reference.removeEventListener(event, func);\n });\n this._events = [];\n\n if (this._tooltipNode) {\n this._hide();\n\n // destroy instance\n this.popperInstance.destroy();\n\n // destroy tooltipNode if removeOnDestroy is not set, as popperInstance.destroy() already removes the element\n if (!this.popperInstance.options.removeOnDestroy) {\n this._tooltipNode.parentNode.removeChild(this._tooltipNode);\n this._tooltipNode = null;\n }\n }\n return this;\n }\n }, {\n key: '_findContainer',\n value: function _findContainer(container, reference) {\n // if container is a query, get the relative element\n if (typeof container === 'string') {\n container = window.document.querySelector(container);\n } else if (container === false) {\n // if container is `false`, set it to reference parent\n container = reference.parentNode;\n }\n return container;\n }\n\n /**\n * Append tooltip to container\n * makes popper instnce to redraw itself in order to fix word wrap on dynamic content\n * @memberof Tooltip\n * @private\n * @param {HTMLElement} tooltipNode\n * @param {HTMLElement|String|false} container\n */\n\n }, {\n key: '_append',\n value: function _append(tooltipNode, container) {\n var _this2 = this;\n\n container.appendChild(tooltipNode);\n\n setTimeout(function () {\n if (_this2._isOpen) {\n _this2.hide();\n }\n _this2.show();\n });\n }\n }, {\n key: '_setEventListeners',\n value: function _setEventListeners(reference, events, options) {\n var _this3 = this;\n\n var directEvents = [];\n var oppositeEvents = [];\n\n events.forEach(function (event) {\n switch (event) {\n case 'hover':\n directEvents.push('mouseenter');\n oppositeEvents.push('mouseleave');\n break;\n case 'focus':\n directEvents.push('focus');\n oppositeEvents.push('blur');\n break;\n case 'click':\n directEvents.push('click');\n oppositeEvents.push('click');\n break;\n }\n });\n\n // schedule show tooltip\n directEvents.forEach(function (event) {\n var func = function func(evt) {\n if (_this3._isOpening === true) {\n return;\n }\n evt.usedByTooltip = true;\n _this3._scheduleShow(reference, options.delay, options, evt);\n };\n _this3._events.push({ event: event, func: func });\n reference.addEventListener(event, func);\n });\n\n // schedule hide tooltip\n oppositeEvents.forEach(function (event) {\n var func = function func(evt) {\n if (evt.usedByTooltip === true) {\n return;\n }\n _this3._scheduleHide(reference, options.delay, options, evt);\n };\n _this3._events.push({ event: event, func: func });\n reference.addEventListener(event, func);\n if (event === 'click' && options.closeOnClickOutside) {\n document.addEventListener('mousedown', function (e) {\n if (!_this3._isOpening) {\n return;\n }\n var popper = _this3.popperInstance.popper;\n if (reference.contains(e.target) || popper.contains(e.target)) {\n return;\n }\n func(e);\n }, true);\n }\n });\n }\n }, {\n key: '_scheduleShow',\n value: function _scheduleShow(reference, delay, options /*, evt */) {\n var _this4 = this;\n\n this._isOpening = true;\n // defaults to 0\n var computedDelay = delay && delay.show || delay || 0;\n this._showTimeout = window.setTimeout(function () {\n return _this4._show(reference, options);\n }, computedDelay);\n }\n }, {\n key: '_scheduleHide',\n value: function _scheduleHide(reference, delay, options, evt) {\n var _this5 = this;\n\n this._isOpening = false;\n // defaults to 0\n var computedDelay = delay && delay.hide || delay || 0;\n window.setTimeout(function () {\n window.clearTimeout(_this5._showTimeout);\n if (_this5._isOpen === false) {\n return;\n }\n if (!document.body.contains(_this5._tooltipNode)) {\n return;\n }\n\n // if we are hiding because of a mouseleave, we must check that the new\n // reference isn't the tooltip, because in this case we don't want to hide it\n if (evt.type === 'mouseleave') {\n var isSet = _this5._setTooltipNodeEvent(evt, reference, delay, options);\n\n // if we set the new event, don't hide the tooltip yet\n // the new event will take care to hide it if necessary\n if (isSet) {\n return;\n }\n }\n\n _this5._hide(reference, options);\n }, computedDelay);\n }\n }, {\n key: '_updateTitleContent',\n value: function _updateTitleContent(title) {\n if (typeof this._tooltipNode === 'undefined') {\n if (typeof this.options.title !== 'undefined') {\n this.options.title = title;\n }\n return;\n }\n var titleNode = this._tooltipNode.querySelector(this.options.innerSelector);\n this._clearTitleContent(titleNode, this.options.html, this.reference.getAttribute('title') || this.options.title);\n this._addTitleContent(this.reference, title, this.options.html, titleNode);\n this.options.title = title;\n this.popperInstance.update();\n }\n }, {\n key: '_clearTitleContent',\n value: function _clearTitleContent(titleNode, allowHtml, lastTitle) {\n if (lastTitle.nodeType === 1 || lastTitle.nodeType === 11) {\n allowHtml && titleNode.removeChild(lastTitle);\n } else {\n allowHtml ? titleNode.innerHTML = '' : titleNode.textContent = '';\n }\n }\n }]);\n return Tooltip;\n}();\n\n/**\n * Title function, its context is the Tooltip instance.\n * @memberof Tooltip\n * @callback TitleFunction\n * @return {String} placement - The desired title.\n */\n\n\nvar _initialiseProps = function _initialiseProps() {\n var _this6 = this;\n\n this.show = function () {\n return _this6._show(_this6.reference, _this6.options);\n };\n\n this.hide = function () {\n return _this6._hide();\n };\n\n this.dispose = function () {\n return _this6._dispose();\n };\n\n this.toggle = function () {\n if (_this6._isOpen) {\n return _this6.hide();\n } else {\n return _this6.show();\n }\n };\n\n this.updateTitleContent = function (title) {\n return _this6._updateTitleContent(title);\n };\n\n this._events = [];\n\n this._setTooltipNodeEvent = function (evt, reference, delay, options) {\n var relatedreference = evt.relatedreference || evt.toElement || evt.relatedTarget;\n\n var callback = function callback(evt2) {\n var relatedreference2 = evt2.relatedreference || evt2.toElement || evt2.relatedTarget;\n\n // Remove event listener after call\n _this6._tooltipNode.removeEventListener(evt.type, callback);\n\n // If the new reference is not the reference element\n if (!reference.contains(relatedreference2)) {\n // Schedule to hide tooltip\n _this6._scheduleHide(reference, options.delay, options, evt2);\n }\n };\n\n if (_this6._tooltipNode.contains(relatedreference)) {\n // listen to mouseleave on the tooltip element to be able to hide the tooltip\n _this6._tooltipNode.addEventListener(evt.type, callback);\n return true;\n }\n\n return false;\n };\n};\n\nreturn Tooltip;\n\n})));\n//# sourceMappingURL=tooltip.js.map\n;\n","!function(root, factory) {\n \"function\" == typeof define && define.amd ? // AMD. Register as an anonymous module unless amdModuleId is set\n define('lib/polyfill/svg4everybody/svg4everybody',[], function() {\n return root.svg4everybody = factory();\n }) : \"object\" == typeof exports ? module.exports = factory() : root.svg4everybody = factory();\n}(this, function() {\n /*! svg4everybody v2.0.3 | github.com/jonathantneal/svg4everybody */\n function embed(svg, target) {\n // if the target exists\n if (target) {\n // create a document fragment to hold the contents of the target\n var fragment = document.createDocumentFragment(), viewBox = !svg.getAttribute(\"viewBox\") && target.getAttribute(\"viewBox\");\n // conditionally set the viewBox on the svg\n viewBox && svg.setAttribute(\"viewBox\", viewBox);\n // copy the contents of the clone into the fragment\n for (// clone the target\n var clone = target.cloneNode(!0); clone.childNodes.length; ) {\n fragment.appendChild(clone.firstChild);\n }\n\n /* Note that this is a change of the original code.\n * svg4everybody removes the original <use>. This code wraps\n * the SVG in a group with the class 'use'. This allows to\n * change the colors of the SVG for all browsers by using the\n * CSS selector 'svg use, svg .use'\n */\n var group = document.createElementNS('http://www.w3.org/2000/svg', 'g');\n group.setAttribute('class', 'use');\n group.appendChild(fragment);\n svg.appendChild(group);\n }\n }\n function loadreadystatechange(xhr) {\n // listen to changes in the request\n xhr.onreadystatechange = function() {\n // if the request is ready\n if (4 === xhr.readyState) {\n // get the cached html document\n var cachedDocument = xhr._cachedDocument;\n // ensure the cached html document based on the xhr response\n cachedDocument || (cachedDocument = xhr._cachedDocument = document.implementation.createHTMLDocument(\"\"), \n cachedDocument.body.innerHTML = xhr.responseText, xhr._cachedTarget = {}), // clear the xhr embeds list and embed each item\n xhr._embeds.splice(0).map(function(item) {\n // get the cached target\n var target = xhr._cachedTarget[item.id];\n // ensure the cached target\n target || (target = xhr._cachedTarget[item.id] = cachedDocument.getElementById(item.id)), \n // embed the target into the svg\n embed(item.svg, target);\n });\n }\n }, // test the ready state change immediately\n xhr.onreadystatechange();\n }\n function svg4everybody(rawopts) {\n function oninterval() {\n // while the index exists in the live <use> collection\n for (// get the cached <use> index\n var index = 0; index < uses.length; ) {\n // get the current <use>\n var use = uses[index], svg = use.parentNode;\n if (svg && /svg/i.test(svg.nodeName)) {\n var src = use.getAttribute(\"xlink:href\");\n if (polyfill && (!opts.validate || opts.validate(src, svg, use))) {\n // remove the <use> element\n svg.removeChild(use);\n // parse the src and get the url and id\n var srcSplit = src.split(\"#\"), url = srcSplit.shift(), id = srcSplit.join(\"#\");\n // if the link is external\n if (url.length) {\n // get the cached xhr request\n var xhr = requests[url];\n // ensure the xhr request exists\n xhr || (xhr = requests[url] = new XMLHttpRequest(), xhr.open(\"GET\", url), xhr.send(), \n xhr._embeds = []), // add the svg and id as an item to the xhr embeds list\n xhr._embeds.push({\n svg: svg,\n id: id\n }), // prepare the xhr ready state change event\n loadreadystatechange(xhr);\n } else {\n // embed the local id into the svg\n embed(svg, document.getElementById(id));\n }\n }\n } else {\n // increase the index when the previous value was not \"valid\"\n ++index;\n }\n }\n // continue the interval\n requestAnimationFrame(oninterval, 67);\n }\n var polyfill, opts = Object(rawopts), newerIEUA = /\\bTrident\\/[567]\\b|\\bMSIE (?:9|10)\\.0\\b/, webkitUA = /\\bAppleWebKit\\/(\\d+)\\b/, olderEdgeUA = /\\bEdge\\/12\\.(\\d+)\\b/;\n polyfill = \"polyfill\" in opts ? opts.polyfill : newerIEUA.test(navigator.userAgent) || (navigator.userAgent.match(olderEdgeUA) || [])[1] < 10547 || (navigator.userAgent.match(webkitUA) || [])[1] < 537;\n // create xhr requests object\n var requests = {}, requestAnimationFrame = window.requestAnimationFrame || setTimeout, uses = document.getElementsByTagName(\"use\");\n // conditionally start the interval if the polyfill is active\n polyfill && oninterval();\n }\n return svg4everybody;\n});\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2013 (original work) Open Assessment Technologies SA (under the project TAO-PRODUCT);\n *\n *\n */\ndefine('uikitLoader',[\n 'ui/toggler',\n 'ui/disabler',\n 'ui/adder',\n 'ui/deleter',\n 'ui/incrementer',\n 'ui/inplacer',\n 'ui/btngrouper',\n 'ui/durationer',\n 'ui/selecter',\n 'ui/modal',\n 'ui/tooltip',\n 'ui/form',\n 'ui/validator',\n 'ui/groupvalidator'\n], function(toggler, disabler, adder, deleter, incrementer, inplacer, btngrouper, durationer, selecter, modal, tooltip, form) {\n 'use strict';\n\n /**\n * svg4everybody is only required by certain legacy browsers to enable the use of external SVG sprites.\n * The functionality below is based on lib/polyfill/svg4everybody/svg4everybody.js\n */\n function initCrossBrowserSvg() {\n\n // code taken from svg4everybody\n var newerIEUA = /\\bTrident\\/[567]\\b|\\bMSIE (?:9|10)\\.0\\b/;\n var webkitUA = /\\bAppleWebKit\\/(\\d+)\\b/;\n var olderEdgeUA = /\\bEdge\\/12\\.(\\d+)\\b/;\n\n if(newerIEUA.test(navigator.userAgent) ||\n (navigator.userAgent.match(olderEdgeUA) || [])[1] < 10547 ||\n (navigator.userAgent.match(webkitUA) || [])[1] < 537){\n\n require(['lib/polyfill/svg4everybody/svg4everybody'], function(svg4everybody){\n svg4everybody();\n });\n }\n }\n\n /**\n * @author Bertrand Chevrier <bertrand@taotesting.com>\n * @exports ui\n */\n return {\n\n /**\n * Start up the components lookup and data-attr listening\n * @param {jQueryElement} $container - to lookup within\n */\n startEventComponents : function($container){\n adder($container);\n btngrouper($container);\n deleter($container);\n disabler($container);\n toggler($container);\n inplacer($container);\n modal($container);\n form($container);\n this.startDomComponent($container);\n },\n\n startDomComponent : function($container){\n incrementer($container);\n durationer($container);\n selecter($container);\n initCrossBrowserSvg();\n tooltip.lookup($container);\n }\n };\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2014 (original work) Open Assessment Technologies SA (under the project TAO-PRODUCT);\n */\n\n/**\n * @author Bertrand Chevrier <bertrand@taotesting.com>\n */\ndefine('controller/backoffice',[\n 'jquery',\n 'lodash',\n 'i18n',\n 'context',\n 'helpers',\n 'core/router',\n 'uikitLoader',\n 'core/history',\n 'ui/feedback',\n 'layout/logout-event'\n], function ($, _, __, context, helpers, router, uikitLoader, history, feedback, logoutEvent) {\n 'use strict';\n\n function hasAjaxResponse(ajaxResponse) {\n return ajaxResponse && ajaxResponse !== null;\n }\n\n function hasAjaxResponseProperties(ajaxResponse) {\n return typeof ajaxResponse.success !== 'undefined' &&\n typeof ajaxResponse.type !== 'undefined' &&\n typeof ajaxResponse.message !== 'undefined' &&\n typeof ajaxResponse.data !== 'undefined'\n }\n\n /**\n * The backoffice controller.\n * Starts the ajax based router, the automated error reporting and the UI listeners.\n */\n return {\n /**\n * Controller entry point\n */\n start: function start() {\n var $doc = $(document);\n var $container = $('body > .content-wrap');\n\n //fix backspace going back into the history\n history.fixBrokenBrowsers();\n\n //contextual loading, do a dispatch each time an ajax request loads an HTML page\n $doc.ajaxComplete(function (event, request, settings) {\n var urls;\n var forward;\n if (_.contains(settings.dataTypes, 'html')) {\n urls = [settings.url];\n forward = request.getResponseHeader('X-Tao-Forward');\n if (forward) {\n urls.push(forward);\n }\n\n router.dispatch(urls, function () {\n uikitLoader.startDomComponent($container);\n });\n }\n });\n\n //dispatch also the current page (or the forward)\n router.dispatchUrl(helpers._url(context.action, context.module, context.extension));\n\n //intercept errors\n //TODO this should belongs to the Router\n $doc.ajaxError(function (event, request, settings, thrownError) {\n var ajaxResponse;\n var errorMessage = __('Unknown Error');\n\n // Request was manually aborted, isn't a error\n if (thrownError === 'abort') return;\n\n try {\n ajaxResponse = $.parseJSON(request.responseText);\n } catch (err) {\n errorMessage = `${request.status}: ${request.responseText}`;\n }\n\n // Specific error tooManyFolders in sharedStimulus\n if (ajaxResponse && ajaxResponse.code === 999) { return; }\n\n if ((request.status === 404 || request.status === 0) && settings.type === 'HEAD') {\n //consider it as a \"test\" to check if resource exists\n return;\n } else if (request.status === 404 || request.status === 500) {\n if (hasAjaxResponse() && hasAjaxResponseProperties()) {\n errorMessage = `${request.status}: ${ajaxResponse.message}`;\n } else {\n errorMessage = `${request.status}: ${request.responseText}`;\n }\n }\n\n if (request.status === 403) {\n logoutEvent();\n } else {\n feedback().error(errorMessage);\n }\n });\n\n //initialize new components\n uikitLoader.startEventComponents($container);\n }\n };\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2017 (original work) Open Assessment Technologies SA (under the project TAO-PRODUCT);\n */\n\ndefine('controller/entry',[\n 'jquery',\n 'lodash',\n 'i18n',\n 'ui/feedback'\n], function ($, _, __, feedback) {\n 'use strict';\n\n /**\n * The login controller\n */\n return {\n\n /**\n * Controller entry point\n */\n start: function start() {\n var $container = $('#entry-point-box');\n var errorMessage = $container.data('errormessage');\n if (errorMessage) {\n feedback().error(errorMessage);\n }\n }\n };\n});\n","/* \n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n * \n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n * \n * Copyright (c) 2013\n * \n */\n\ndefine('lock',['jquery', 'helpers'], function($, helpers){\n\n /**\n * Lock management\n * @exports lock\n * @constructor\n * @param {String} resourceUri - the uri of the locked resource\n */\n function Lock (resourceUri){\n this.uri = resourceUri;\n }\n\n /**\n * Release the lock on the current resource\n * @memberOf Lock\n * @param {Function} cb - callback once release\n * @param {Function} err - errorback unable to release \n */\n Lock.prototype.release = function (cb, err){\n\n var releaseUrl = helpers._url('release', 'Lock', 'tao' );\n var options = { \n data: { uri : this.uri },\n type: 'POST',\n dataType: 'json'\n };\n \n $.ajax(releaseUrl, options)\n .success(cb)\n .fail(err);\n };\n\n return Lock;\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2017 (original work) Open Assessment Technologies SA;\n */\n/**\n * The purpose of this router is to allow navigation between Generis views entities (sections, tree items...).\n * It does not dispatch any controller (that's the backoffice.js' job) but ensures that the browser history has\n * a consistent state and URLs. On history move, it triggers event listened by the section manager and the tree.\n * Those module actually do the job of restoring the route state.\n **\n * @author Christophe Noël <christophe@taotesting.com>\n */\ndefine('layout/generisRouter',[\n 'jquery',\n 'lodash',\n 'core/eventifier',\n 'util/url'\n], function(\n $,\n _,\n eventifier,\n urlUtil\n) {\n 'use strict';\n\n /**\n * Keep track of the latest known state\n */\n var topState;\n\n /**\n * The router instance\n */\n var generisRouter = eventifier({\n /**\n * To be called on section initial loading or section change.\n * This method create a new history state or replace the current one. It might be called as a convenient way\n * to add the sectionId to the current browser Url. In that case, history.replaceState() will be used.\n * Otherwise, history.pushState().\n *\n * @param {String} baseUrl - a base on which to build the stateUrl. Most of the time, it is the current URL from the call point.\n * @param {String} sectionId - to be saved in the state and added to the Url\n * @param {('activate'|'show')} restoreWith - the method needed to restore the section\n */\n pushSectionState: function pushSectionState(baseUrl, sectionId, restoreWith) {\n var parsedUrl = urlUtil.parse(baseUrl);\n var currentQuery = _.mapValues(parsedUrl.query, function(value, key) {\n return (key === 'uri') ? decodeURIComponent(value) : value;\n });\n var newQuery = _.clone(currentQuery);\n var baseUrlHasSection = currentQuery.section;\n\n var stateUrl;\n var newState = {\n sectionId: sectionId,\n restoreWith : restoreWith || 'activate',\n nodeUri: currentQuery.uri\n };\n\n if (!baseUrlHasSection) {\n // adding missing section parameter\n newQuery.section = sectionId;\n\n } else if (sectionId !== currentQuery.section) {\n // changing section, we need to remove any uri\n newQuery.section = sectionId;\n delete newQuery.uri;\n delete newState.nodeUri;\n }\n\n if (sectionId && !_.isEqual(currentQuery, newQuery)) {\n stateUrl = urlUtil.build(parsedUrl.path, newQuery);\n\n if (baseUrlHasSection) {\n window.history.pushState(newState, null, stateUrl);\n this.trigger('pushsectionstate', stateUrl);\n\n } else {\n window.history.replaceState(newState, null, stateUrl);\n this.trigger('replacesectionstate', stateUrl);\n }\n topState = newState;\n }\n },\n\n /**\n * To be called on node selection in the tree.\n * This method create a new history state or replace the current one. It might be called as a convenient way\n * to add the Uri parameter to the current browser Url. In that case, history.replaceState() will be used.\n * Otherwise, history.pushState().\n *\n * @param {String} baseUrl - a base on which to build the stateUrl. Most of the time, it is the current URL from the call point.\n * @param {String} nodeUri - to be saved in the state and added to the Url. Should be given as a plain non-encoded URI (ex: http://tao/mytao.rdf#i151378052813779)\n */\n pushNodeState: function pushNodeState(baseUrl, nodeUri) {\n var parsedUrl = urlUtil.parse(baseUrl);\n var currentQuery = _.mapValues(parsedUrl.query, function(value, key) {\n return (key === 'uri') ? decodeURIComponent(value) : value;\n });\n var newQuery = _.clone(currentQuery);\n var baseUrlHasUri = currentQuery.uri;\n\n var currentState = window.history.state || {};\n var newState = {\n sectionId: currentState.sectionId || currentQuery.section || '',\n restoreWith : currentState.restoreWith || 'activate',\n nodeUri: nodeUri\n };\n var stateUrl;\n\n if (nodeUri !== currentQuery.uri) {\n newQuery.uri = nodeUri;\n }\n\n if (nodeUri && !_.isEqual(currentQuery, newQuery)) {\n stateUrl = urlUtil.build(parsedUrl.path, newQuery);\n\n if (baseUrlHasUri) {\n window.history.pushState(newState, null, stateUrl);\n this.trigger('pushnodestate', stateUrl);\n\n } else {\n window.history.replaceState(newState, null, stateUrl);\n this.trigger('replacenodestate', stateUrl);\n }\n topState = newState;\n }\n },\n\n /**\n * Restore a state from the history, by triggering events relevant to the retrieved state.\n * @param {Boolean} fromPopState - if this method has been called following a popState event\n */\n restoreState: function restoreState(fromPopState) {\n var state = window.history.state || {};\n if(this.hasRestorableState()){\n // generisRouter has already been used\n if (fromPopState) {\n topState = topState || {};\n\n // changing section\n if (topState.sectionId !== state.sectionId) {\n this.trigger('section' + state.restoreWith, state.sectionId);\n\n // changing uri\n } else if (state.nodeUri) {\n this.trigger('urichange', state.nodeUri, state.sectionId);\n }\n\n // we are restoring in section initialisation: we only need to deal with the section,\n // as uri will be read and set during tree initialisation\n } else {\n this.trigger('section' + state.restoreWith, state.sectionId);\n }\n topState = state;\n }\n },\n\n /**\n * Check that the current state contains the minimum information to restore a state\n */\n hasRestorableState: function hasRestorableState() {\n var state = window.history.state;\n return state && state.restoreWith && state.sectionId;\n },\n\n /**\n * Add the listener that triggers the actual routing events\n */\n init: function init() {\n $(window).on('popstate.generisRouter', function () {\n generisRouter.restoreState(true);\n });\n },\n\n /**\n * Removes the popstate listener\n */\n destroy: function destroy() {\n $(window).off('.generisRouter');\n }\n });\n\n return generisRouter;\n});\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2014 (original work) Open Assessment Technologies SA (under the project TAO-PRODUCT);\n */\n/**\n * @author Bertrand Chevrier <bertrand@taotesting.com>\n */\ndefine('layout/section',[\n 'jquery',\n 'lodash',\n 'context',\n 'util/url',\n 'layout/generisRouter'\n], function(\n $,\n _,\n context,\n url,\n generisRouter\n){\n 'use strict';\n\n var sectionApi;\n\n /**\n * The section API provides you all the methods needed to manage sections.\n * @typedef SectionApi\n * @exports layout/section\n */\n sectionApi = {\n\n scope : $('.section-container'),\n sections : {},\n selected : null,\n\n /**\n * Find section into the scope and initiliaze them.\n *\n * @param {jQueryElement} $scope - the main scope\n * @param {Object} [options] - configuration options\n * @param {Boolean} [options.history = true] - use the history manager\n * @returns {SectionApi} instance for chaining\n *\n * @fires SectionApi#init.section\n */\n init : function($scope, options){\n var self = this;\n var restore = true;\n var $openersContainer;\n var parsedUrl = url.parse(location.href);\n var defaultSection = parsedUrl.query.section;\n var defaultUri = decodeURIComponent(parsedUrl.query.uri);\n\n this.options = options || {};\n\n this.scope = $scope || this.scope || $('.section-container');\n $openersContainer = $('.tab-container', this.scope);\n\n this.selected = null;\n\n //load sections from the DOM\n $('li', $openersContainer).each(function(index){\n\n var $sectionOpener = $(this);\n var $link = $sectionOpener.children('a');\n var id = $link.attr('href').replace('#panel-', '');\n var $panel = $(`#panel-${id}`);\n var isActive = defaultSection ? defaultSection === id : index === 0;\n\n $panel.removeClass('hidden');\n\n self.sections[id] = {\n id : id,\n url : $link.data('url'),\n name : $link.text(),\n panel : $panel,\n opener : $sectionOpener,\n type : $panel.find('.section-trees').children().length ? 'tree' : 'content',\n active : isActive,\n activated : false,\n disabled : $sectionOpener.hasClass('disabled'),\n defaultUri : (isActive && defaultUri) ? defaultUri : ''\n };\n });\n\n //to be sure at least one is active, for example when the given default section does not exists\n if (_(this.sections).where({'active' : true }).size() === 0) {\n for (let id in this.sections) {\n this.sections[id].active = true;\n restore = false;\n break;\n }\n }\n\n this._bindOpener($openersContainer);\n\n /**\n * Once the sections are initialized\n * @event SectionApi#init.section\n */\n this.scope.trigger('init.section');\n\n generisRouter\n .off('.sectionManager')\n .on('sectionactivate.sectionManager', function(sectionId) {\n self.get(sectionId)._activate();\n })\n .on('sectionshow.sectionManager', function(sectionId) {\n self.get(sectionId)._show();\n });\n\n if (this.options.history !== false && restore && generisRouter.hasRestorableState()) {\n generisRouter.restoreState();\n } else {\n return this.activate();\n }\n },\n\n /**\n * Bind the openeers (ie. the tabs) to react on click.\n * Also hide them if there is less than 1 visible.\n * @param {jQueryElement} $openersContainer - the element that contains the openers\n * @returns {SectionApi} instance for chaining\n */\n _bindOpener : function($openersContainer){\n var self = this;\n //bind click on openers\n $openersContainer\n .off('click.section', 'li')\n .on('click.section', 'li', function(e){\n e.preventDefault();\n let id = $(this).children('a').attr('href').replace('#panel-', '');\n let section = self.sections[id];\n if(!section.disabled){\n self.get(id).activate();\n }\n });\n\n //display the openers only if there is more than 1 section\n if ($('li:not(.hidden)', $openersContainer).length < 2) {\n $openersContainer.hide();\n } else {\n $openersContainer.show();\n }\n\n return this;\n },\n\n /**\n * Activate the selected current section (by pushing a new state to the history)\n *\n * @returns {SectionApi} instance for chaining\n * @fires SectionApi#activate.section\n * @fires SectionApi#hide.section\n * @fires SectionApi#show.section\n */\n activate : function(){\n if (!this.selected) {\n this.current();\n }\n if (this.options.history !== false) {\n generisRouter.pushSectionState(location.href, this.selected.id, 'activate');\n }\n return this._activate();\n },\n\n /**\n * Activate the selected section.\n * Unlike the public one, this method does the job.\n *\n * @private\n * @returns {SectionApi} instance for chaining\n * @fires SectionApi#activate.section\n * @fires SectionApi#hide.section\n * @fires SectionApi#show.section\n */\n _activate : function(){\n this._show();\n if (this.selected.activated === false) {\n this.selected.activated = true;\n\n /**\n * A section is activated\n * @event SectionApi#activate.section\n * @param {Object} section - the section\n */\n this.scope.trigger('activate.section', [this.selected]);\n }\n\n return this;\n },\n\n /**\n * Shows the selected section (by pushing a new state to the history).\n * Shows is different from activate just by the events\n * that are send (show doesn't trigger the activate event).\n *\n * @returns {SectionApi} instance for chaining\n * @fires SectionApi#hide.section\n * @fires SectionApi#show.section\n */\n show : function(){\n if (!this.selected) {\n this.current();\n }\n if (this.options.history !== false) {\n generisRouter.pushSectionState(location.href, this.selected.id, 'show');\n }\n return this._show();\n },\n\n\n /**\n * Shows the selected section.\n * Unlike the public one, this method does the job.\n *\n * @private\n * @returns {SectionApi} instance for chaining\n * @fires SectionApi#hide.section\n * @fires SectionApi#show.section\n */\n _show : function(){\n\n var self = this;\n var active = _(this.sections).where({'active' : true }).first();\n\n //switch the active section if set previously\n if (this.selected && this.selected.id !== active.id) {\n _.forEach(this.sections, function(section){\n section.active = false;\n });\n this.sections[this.selected.id].active = true;\n } else {\n this.current();\n }\n\n _.where(this.sections, {'active' : false }).forEach(function(section){\n section.opener.removeClass('active');\n section.panel.hide();\n\n /**\n * A section is hidden\n * @event SectionApi#hide.section\n * @param {Object} section - the section\n */\n self.scope.trigger('hide.section', [section]);\n\n });\n _.where(this.sections, {'active' : true }).forEach(function(section){\n section.opener.addClass('active');\n section.panel.show();\n\n /**\n * A section is shown\n * @event SectionApi#show.section\n * @param {Object} section - the section\n */\n self.scope.trigger('show.section', [section]);\n });\n\n return this;\n },\n\n /**\n * refresh the sections.\n * they are re loaded from the dom.\n *\n * @returns {sectionapi} instance for chaining\n */\n refresh : function(){\n this.sections = {};\n return this.init();\n },\n\n /**\n * Enable the current section\n *\n * @returns {sectionapi} instance for chaining\n * @fires SectionApi#enable.section\n */\n enable : function(){\n if (!this.selected) {\n this.current();\n }\n if (this.selected.disabled === true) {\n this.selected.disabled = false;\n this.selected.opener.removeClass('disabled');\n\n /**\n * A section is enabled\n * @event SectionApi#enable.section\n * @param {Object} section - the section\n */\n this.scope.trigger('enable.section', [this.selected]);\n }\n return this;\n },\n\n /**\n * Disable the current section\n *\n * @returns {sectionapi} instance for chaining\n * @fires SectionApi#disable.section\n */\n disable : function(){\n if (!this.selected) {\n this.current();\n }\n if (this.selected.disabled === false) {\n this.selected.disabled = true;\n this.selected.opener.addClass('disabled');\n\n /**\n * A section is disabled\n * @event SectionApi#disable.section\n * @param {Object} section - the section\n */\n this.scope.trigger('disable.section', [this.selected]);\n }\n return this;\n },\n\n /**\n * Make the active section the selected. Useful before chaining with another method :\n * @example section.current().show();\n *\n *\n * @returns {SectionApi} instance for chaining\n */\n current : function(){\n this.selected = _(this.sections).where({'active' : true }).first();\n return this;\n },\n\n /**\n * This method enables you to create a new section.\n * If the section already exists, it may be updated (panel's content)\n *\n * @param {Object} data - the section data\n * @param {String} data.id - the section identifier\n * @param {String} data.url - the section url\n * @param {String} data.name - the section name (already translated please)\n * @param {Boolean} [data.visible] - is the section opener (ie. the tab) shown ?\n * @param {String} [data.content] - the panel content\n *\n * @returns {SectionApi} instance for chaining\n */\n create : function(data){\n var $openersContainer = this.scope.find('.tab-container');\n var $sectionOpener,\n $sectionPanel,\n section;\n\n if (!_.isObject(data)) {\n throw new TypeError(\"The create() method requires an object with section data as parameter.\");\n }\n if (!_.isString(data.id) || !_.isString(data.url) || !_.isString(data.name)) {\n throw new TypeError(\"The create() method requires data with id, url and name to create a new section.\");\n }\n if (typeof data.visible === 'undefined') {\n data.visible = true;\n }\n\n this.get(data.id);\n section = this.selected && this.selected.id === data.id ? this.selected : undefined;\n\n\n if (!section) {\n\n //TODO use templates\n $sectionPanel = $(`<div id=\"panel-${data.id}\" class=\"clear\"></div>`);\n if(data.contentBlock === true){\n $sectionPanel.append('<section class=\"content-container\"><ul class=\"plain action-bar content-action-bar horizontal-action-bar\"></ul><div class=\"content-block\"></div></section>');\n }\n $sectionOpener = $(`<li class=\"small ${ !data.visible ? 'hidden' : '' }\"><a title=\"${data.name}\" data-url=\"${data.url}\" href=\"#panel-${ data.id }\">${data.name}</a></li>`);\n $openersContainer.append($sectionOpener);\n this.scope.append($sectionPanel);\n\n section = {\n id : data.id,\n url : data.url,\n name : data.name,\n panel : $sectionPanel,\n opener : $sectionOpener,\n type : 'content',\n active : false\n };\n this.sections[data.id] = section;\n }\n section.url = section.url === data.url || data.url === undefined ? section.url : data.url;\n this.selected = section;\n\n if (data.content) {\n if (data.contentBlock === true) {\n this.updateContentBlock(data.content);\n } else {\n section.panel.html(data.content);\n }\n\n } else {\n if (data.contentBlock === true) {\n this.loadContentBlock();\n } else {\n this.load();\n }\n }\n\n this._bindOpener($openersContainer);\n\n return this;\n },\n\n /**\n * Select a section using either it's id or url.\n *\n * @example section.get('manage_items').activate();\n *\n * @param {String} value - id, panel id, short or long URL\n * @returns {SectionApi} instance for chaining\n */\n get : function(value){\n var section;\n if (!_.isString(value)) {\n throw new TypeError(\"The get() method requires a string parameter, the section id or url.\");\n }\n\n //try to get the section assuming the value is the id or the url.\n section =\n this.sections[value] ||\n this.sections[value.replace('panel-', '')] ||\n _(this.sections).where({'url' : value }).first() ||\n _(this.sections).where({'url' : context.root_url + value }).first();\n if (section) {\n this.selected = section;\n } else {\n this.current();\n }\n\n return this;\n },\n\n /**\n * Loads content from a URL to the section's panel.\n *\n * @example section.get('manage_items').load();\n *\n * @param {String} [url] - the url to load, by default section's URL is used.\n * @param {Object} [data] - data to add to the request\n * @param {Function} [loaded] - callback once loaded\n * @returns {SectionApi} instance for chaining\n * @fires SectionApi#load.section\n */\n load : function load(url, data, loaded){\n let self = this;\n\n if (!this.selected) {\n this.current();\n }\n url = url || this.selected.url;\n\n if (this.selected.type === 'tree') {\n this.selected.panel.addClass('content-panel');\n } else {\n this.selected.panel.removeClass('content-panel');\n }\n\n this.selected.panel.empty().load(url, data, function(response){\n\n /**\n * Section content has been loaded\n * @event SectionApi#load.section\n * @param {Object} section - the section\n * @param {String} response - the received content\n */\n self.scope.trigger('load.section', [self.selected, response]);\n\n if (_.isFunction(loaded)) {\n loaded();\n }\n });\n\n return this;\n },\n\n /**\n * Clears content from the content block area.\n **/\n clearContentBlock: function clearContentBlock() {\n if (!this.selected) {\n return;\n }\n const $contentblock = $('.content-block', this.selected.panel);\n if ($contentblock.length) {\n $contentblock.empty();\n }\n },\n\n /**\n * Loads content from a URL but try to target first the content block area before the panel.\n *\n * @example section.get('manage_items').loadContentBlock('/taoItems/Items/edit');\n *\n * @param {String} [url] - the url to load, by default section's URL is used.\n * @param {Object} [data] - data to add to the request\n * @param {Function} [loaded] - callback once loaded\n * @returns {SectionApi} instance for chaining\n * @fires SectionApi#load.section\n */\n loadContentBlock : function loadContentBlock(url, data, loaded){\n var $contentblock;\n\n if (!this.selected) {\n this.current();\n }\n url = url || this.selected.url;\n\n if (this.selected.type === 'tree') {\n this.selected.panel.addClass('content-panel');\n } else {\n this.selected.panel.removeClass('content-panel');\n }\n\n $contentblock = $('.content-block', this.selected.panel);\n\n if ($contentblock.length) {\n\n //do not yet trigger event on content block load, but may be required\n $contentblock.empty().load(url, data, loaded);\n return this;\n }\n\n return this.load(url, data, loaded);\n },\n\n /**\n * Update content block's content or the panel if not found.\n *\n * @param {String} [html] - the new content\n * @returns {SectionApi} instance for chaining\n */\n updateContentBlock : function(html){\n var $contentblock = $('.content-block', this.selected.panel);\n\n if($contentblock.length){\n $contentblock.empty().html(html);\n } else {\n this.selected.panel.empty().html(html);\n }\n return this;\n },\n\n /**\n * Sugar to help you listen for event on sections\n * @param {String} eventName - the name of the event (without the namespace)\n * @param {Function} cb - the event callbacks\n * @returns {SectionApi} instance for chaining\n */\n on : function(eventName, cb){\n let self = this;\n this.scope.on(`${eventName}.section`, function() {\n cb.apply(self, Array.prototype.slice.call(arguments, 1));\n });\n return this;\n },\n\n /**\n * Sugar to help you remove listeners from sections\n *\n * @param {String} eventName - the name of the event (without the namespace)\n * @returns {SectionApi} instance for chaining\n */\n off : function(eventName){\n this.scope.off(`${eventName }.section`);\n return this;\n }\n };\n\n return sectionApi;\n});\n\n","define('controller/Lock/locked',['jquery', 'i18n', 'helpers', 'lock', 'layout/section', 'ui/feedback'], \nfunction($, __, helpers, Lock, sectionApi, feedback){\n 'use strict';\n\t\n return {\n start : function(){\n\n\t\t $(\".forcerelease\").click(function(e) {\n\t\t \t\n\t\t e.preventDefault();\n\t\t \n\t\t $.ajax({\n url: helpers._url('forceRelease', 'Lock', 'tao'),\n type: \"POST\",\n data : {uri : $(this).data('id')},\n dataType: 'json',\n success : function(response){\n if(response.success){\n \t\t feedback().success(__('The lock has been released'));\n $('.tree').trigger('refresh.taotree'); \n }\n else{\n \t\t feedback().error(__('Unable to release the lock'));\n }\n },\n error : function(){\n \t\t feedback().error(__('Unable to release the lock'));\n }\n });\n\t\t \n\t\t });\n }\n }\n});\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2015 (original work) Open Assessment Technologies SA;\n *\n */\n\ndefine('layout/version-warning',[\n 'jquery',\n 'jquery.cookie'\n],\n function($){\n\n 'use strict';\n\n\n var versionWarning = $('.version-warning');\n\n /**\n * Hide the warning and add a class to <html>\n *\n * @param slide\n */\n function hideWarning(slide) {\n\n var callback = function() {\n document.documentElement.className += ' no-version-warning';\n versionWarning.trigger('hiding.versionwarning');\n };\n\n if(!slide) {\n versionWarning.hide();\n callback();\n }\n else {\n versionWarning.slideUp('slow', function() {\n versionWarning.slideUp('slow', callback);\n });\n }\n }\n\n return {\n /**\n * Initialize behaviour of version warning\n */\n init : function(){\n if($.cookie('versionWarning')) {\n hideWarning(false);\n return;\n }\n\n versionWarning.find('.close-trigger').on('click', function() {\n $.cookie('versionWarning', true, { path: '/' });\n hideWarning(true);\n });\n\n }\n };\n});\n\n\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2014 (original work) Open Assessment Technologies SA (under the project TAO-PRODUCT);\n */\n\n/**\n * The controller dedicated to the login page.\n * @author Bertrand Chevrier <bertrand@taotesting.com>\n */\ndefine('controller/login',[\n 'jquery',\n 'lodash',\n 'i18n',\n 'module',\n 'layout/loading-bar',\n 'layout/version-warning',\n 'ui/login/login',\n 'core/store'\n], function ($, _, __, module, loadingBar, versionWarning, loginComponent, store) {\n 'use strict';\n\n var _defaults = {\n disableAutocomplete: false,\n enablePasswordReveal: false,\n disableAutofocus: false,\n message: {\n error: ''\n }\n };\n\n /**\n * The login controller\n */\n return {\n\n /**\n * Controller entry point\n */\n start: function start(){\n\n var conf = _.defaults({}, module.config(), _defaults);\n var login = loginComponent($('#login-box-inner-container'), conf);\n\n login.on('init', function() {\n loadingBar.start();\n }).after('render', function() {\n versionWarning.init();\n loadingBar.stop();\n }).on('submit.login', function() {\n loadingBar.start();\n });\n }\n };\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2021 (original work) Open Assessment Technologies SA ;\n */\n\n define('form/depends-on-property',[\n 'jquery',\n 'lodash'\n], function ($, _) {\n 'use strict';\n function _isHiddenDependsOn($container) {\n const $typeElt = $('.property-type', $container);\n if (!$typeElt || !$typeElt.val() || !$typeElt.val().trim()) {\n return true;\n }\n\n const $listElt = $('.property-listvalues', $container);\n if ($listElt && $listElt.val() && $listElt.val().trim()) {\n return false;\n }\n\n return true;\n }\n\n function toggleDependsOn($dependsOnSelectbox, $wrapper, $container) {\n $container = $container || $('.property-edit-container-open .property-heading-label ~ .property-edit-container');\n if (!$container.length) {\n return;\n }\n \n $dependsOnSelectbox = $dependsOnSelectbox || $container.find('.property-depends-on');\n if (!$dependsOnSelectbox.length) {\n return;\n } \n\n if (!$wrapper) {\n $wrapper = $dependsOnSelectbox;\n while (!_.isEqual($wrapper.parent()[0], $container[0])) {\n $wrapper = $wrapper.parent();\n }\n }\n\n if (!_isHiddenDependsOn($container)) {\n $dependsOnSelectbox.removeAttr('disabled');\n $wrapper.show();\n return;\n }\n\n $dependsOnSelectbox.prop('disabled', \"disabled\");\n $wrapper.hide();\n }\n\n return {\n toggle: toggleDependsOn,\n }\n});\n\n\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2021 (original work) Open Assessment Technologies SA ;\n */\n\n define('form/secondary-property',[\n 'jquery',\n 'context',\n], function ($, context) {\n 'use strict';\n\n function getSecondaryPropsList($primaryProp) {\n let $secondaryPropsList = $primaryProp.find('.secondary-props-list');\n\n if (!$secondaryPropsList.length) {\n $secondaryPropsList = $('<ul class=\"secondary-props-list\"></ul>');\n $primaryProp.append($secondaryPropsList);\n }\n\n return $secondaryPropsList;\n }\n\n function filterSecondaryValues($container, selectedPrimaryProperty, fromMultiple) {\n const $secondaryList = $container.find('.secondary-props-list > li > *');\n\n $secondaryList.each((i, secondaryProp) => {\n let $secondarySelect = $(secondaryProp).children('select');\n\n if ($secondarySelect.length) {\n $.ajax({\n url: context.root_url + 'tao/PropertyValues/get',\n type: \"GET\",\n data: {\n propertyUri: $secondarySelect.attr('id'),\n parentListValues: selectedPrimaryProperty\n },\n dataType: 'json',\n success: function(response) {\n if (fromMultiple) {\n response.data.forEach((selectOption) => {\n if (!$secondarySelect.find(`option[value=\"${selectOption.uri}\"]`).length) {\n $secondarySelect.append(new Option(selectOption.label, selectOption.uri));\n }\n });\n } else {\n $secondarySelect.empty().append(new Option('', ' '));\n\n response.data.forEach((selectOption) => {\n $secondarySelect.append(new Option(selectOption.label, selectOption.uri));\n });\n }\n }\n });\n }\n });\n }\n\n function toggleDisableSecondary($container, disable = true) {\n const $secondaryList = $container.find('.secondary-props-list > li > *');\n\n $secondaryList.each((i, secondaryProp) => {\n if (disable) {\n $(secondaryProp).find('[data-depends-on-property]').attr('disabled', 'disabled');\n $(secondaryProp).addClass('disabled');\n clearSecondary($(secondaryProp));\n return;\n }\n\n $(secondaryProp).find('[data-depends-on-property]').removeAttr('disabled');\n $(secondaryProp).removeClass('disabled');\n });\n }\n\n function clearSecondary($secondaryProp) {\n const $select2Chosen = $secondaryProp.find('.select2-chosen');\n if ($select2Chosen.length) {\n $(this).find('> div > input').val('').trigger('change');\n $select2Chosen.empty();\n return;\n }\n\n const $selectElt = $secondaryProp.find('select[data-depends-on-property]');\n if ($selectElt.length) {\n $selectElt.each(function() {\n $(this).find('option[selected]').removeAttr('selected');\n $(this).find('option[value=\" \"]').attr('selected', 'selected');\n $(this).trigger('change');\n });\n return;\n }\n\n const $inputElt = $secondaryProp.find('input');\n if ($inputElt.length) {\n $inputElt.each(function() {\n $(this).val(null).trigger('change');\n });\n }\n }\n\n function initializeSecondaryProperties($container) {\n const $props = $container.children();\n let primaryPropsMap = new Map();\n let $secondaryProps = $props.filter(function() {\n return !!$(this).find('[data-depends-on-property]').length;\n });\n\n $secondaryProps.each((i, secondaryProp) => {\n const primaryPropUri = $(secondaryProp).find('[data-depends-on-property]').data('depends-on-property');\n let $primaryProp = $($props.filter(function() {\n return !!$(this).find(`#${primaryPropUri}`).length;\n })[0]);\n\n if (!$primaryProp.length) {\n return;\n } else {\n primaryPropsMap.has(primaryPropUri) ? null : primaryPropsMap.set(primaryPropUri, $primaryProp);\n moveSecondaryProperty($(secondaryProp), $primaryProp);\n const $primaryElt = $primaryProp.find(`[name=\"${primaryPropUri}\"]`);\n toggleDisableSecondary($primaryProp, !$primaryElt.val().trim());\n }\n });\n\n primaryPropsMap.forEach(($primaryProp, primaryPropUri) => {\n addPrimaryPropertyListener($primaryProp, primaryPropUri);\n })\n }\n\n function addPrimaryPropertyListener($primaryProp, primaryPropUri) {\n $primaryProp.on('change', `[name=\"${primaryPropUri}\"]`, (e) => {\n if (e.removed || e.added) {\n // This is from a multiple input (i.e: multiple search input)\n // TODO: ADF-521 - Add cascade deletion logic here when e.removed\n filterSecondaryValues($primaryProp, e.target.value.split(','), true);\n } else {\n // This is from a single input (i.e: single dropdown)\n filterSecondaryValues($primaryProp, e.target.value.split(','));\n }\n\n toggleDisableSecondary($primaryProp, !e.target.value.trim());\n });\n }\n\n function moveSecondaryProperty($secondaryProp, $primaryProp) {\n const $secondaryPropsList = getSecondaryPropsList($primaryProp);\n const $wrapper = $('<li></li>');\n $secondaryPropsList.append($wrapper);\n $wrapper.append($secondaryProp.detach());\n }\n\n return {\n init: initializeSecondaryProperties,\n }\n});\n\n\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2018 (original work) Open Assessment Technologies SA ;\n */\n\ndefine('form/post-render-props',[\n 'jquery',\n 'i18n',\n 'ui/feedback',\n './depends-on-property',\n './secondary-property'\n], function ($, __, feedback, dependsOn, secondaryProps) {\n 'use strict';\n\n function _createCopyToClipboardHandler($field) {\n var\n successFeedback = $field.data('copy-success-feedback')\n || __('Resource Identifier has been copied to the clipboard'),\n failureFeedback = $field.data('copy-failure-feedback')\n || __('Resource Identifier could not be copied to the clipboard');\n\n return function () {\n var success;\n try {\n $field.select();\n success = document.execCommand('copy');\n $field.blur();\n if (success) {\n feedback().success(successFeedback);\n } else {\n feedback().error(failureFeedback);\n }\n } catch (err) {\n feedback().error(__('Your browser does not support copying to the clipboard'));\n }\n }\n }\n\n function _cloneField($field) {\n return $field.clone()\n // To make MS browsers happy, value needs to be removed and re-added\n .val('')\n .attr({readonly: true, type: 'text'});\n }\n\n /**\n * Add a field with URI of an item etc and a button to copy it to the clipboard\n * @param $container\n * @private\n */\n function _initializeCopyToClipboard($container) {\n // Early return in case:\n // 1. isInstanceForm that will not work with jquery|querySelector\n // 2. The field has already been added\n if (!document.getElementById('tao.forms.instance') || $('.uri-container').length) {\n return;\n }\n\n $container.find('#id, .copy-to-clipboard').each(function () {\n var $field = $(this),\n $fieldCopy = _cloneField($field),\n $button = $('<span>', {class: 'icon-clipboard clipboard-command', title: __('Copy to clipboard')}),\n $label = $('<span>', {class: 'form_desc', text: __('Resource Identifier')}),\n $fieldBox = $('<span>', {class: 'uri-container'}),\n value = $field.val();\n\n if ($field.attr('id') === 'id') {\n $field.remove();\n $field = $fieldCopy;\n\n $fieldBox.append([$field, $button]);\n\n $container.find('div')\n .first()\n .after($('<div>').append([$label, $fieldBox]));\n $fieldBox.height($field.outerHeight());\n } else {\n $fieldBox.height($field.outerHeight());\n $field.wrap($fieldBox).parent().append($button);\n }\n\n $button.on('click', _createCopyToClipboardHandler($field));\n $field.addClass('final').val(value);\n });\n }\n\n\n /**\n * Toggle availability of mode switch (advanced/simple)\n *\n * @param newMode\n * @private\n */\n function _toggleModeBtn(newMode) {\n var $modeToggle = $('.property-mode');\n if (newMode === 'disabled') {\n $modeToggle.addClass('disabled');\n } else {\n $modeToggle.removeClass('disabled');\n }\n }\n\n /**\n * Reposition the radio buttons or checkboxes of a property and make them look nice.\n *\n * @param $container the container in which to search and upgrade buttons\n * @param type string the type of input we want to upgrade 'checkbox' or 'radio' by default we use radio\n * @private\n */\n function _upgradeButtons($container, type) {\n\n //if the type is not radio or checkbox we put by default radio\n if (type !== 'radio' && type !== 'checkbox') {\n type = 'radio';\n }\n var selector = '.form_checklst';\n var notSelector = '';\n if (type === 'radio') {\n selector = '.form_radlst';\n notSelector = '.form_checklst, ';\n }\n\n $container.find(selector).not(notSelector + '.property-' + type + '-list').each(function () {\n var $radioList = $(this);\n $radioList.addClass('property-' + type + '-list');\n $radioList.parent().addClass('property-' + type + '-list-box');\n $radioList.each(function () {\n var $block = $(this),\n $inputs = $block.find('input');\n\n if ($inputs.length <= 2) {\n $block.find('br').remove();\n }\n\n $inputs.each(function () {\n var $input = $(this),\n $label = $block.find('label[for=\"' + this.id + '\"]'),\n $icon = $('<span>', {'class': 'icon-' + type});\n\n $label.prepend($icon);\n $label.prepend($input);\n });\n });\n });\n }\n\n\n /**\n * Get reference to property container. If it doesn't' exist create one and add it to the DOM.\n *\n * @returns {*|HTMLElement}\n */\n function getPropertyContainer() {\n var $propertyContainer = $('.content-block .property-container');\n if ($propertyContainer.length) {\n return $propertyContainer;\n }\n $propertyContainer = $('<div>', {'class': 'property-container'});\n $('.content-block .form-group').first().before($propertyContainer);\n return $propertyContainer;\n }\n\n\n /**\n * Add properties to the designated container. Also add some CSS classes for easier access.\n *\n * @param $properties\n * @private\n */\n function _wrapPropsInContainer($properties) {\n var $propertyContainer = getPropertyContainer(),\n // the reason why this is not done via a simple counter is that\n // the function could have been called multiple times, e.g. when\n // properties are created dynamically.\n hasAlreadyProperties = !!$propertyContainer.find('.property-block').length;\n\n\n $properties.each(function () {\n var $property = $(this);\n if ($property.attr !== undefined) {\n var type = (function () {\n var $propertyMode = $('.property-mode');\n\n switch ($property.attr('id').replace(/_?property_[\\d]+/, '')) {\n case 'ro':\n return 'readonly-property';\n case 'parent':\n return 'parent-property';\n default:\n var $editIcon = $property.find('.icon-edit'),\n $editContainer = $property.children('div:first');\n\n var $indexIcon = $property.find('.icon-find');\n\n $editContainer.addClass('property-edit-container');\n\n\n _hideProperties($editContainer);\n _hideIndexes($editContainer);\n\n if ($propertyMode.hasClass('property-mode-simple')) {\n $indexIcon.hide();\n } else if ($propertyMode.hasClass('property-mode-advanced')) {\n $indexIcon.show();\n }\n\n //on click on edit icon show property form or hide it\n $editIcon.on('click', function () {\n //form is close so open it (hide index, show property)\n if (!$editContainer.parent().hasClass('property-edit-container-open')) {\n //hide index and show properties\n _hideIndexes($editContainer);\n _showProperties($editContainer);\n $editContainer.slideToggle(function () {\n $editContainer.parent().toggleClass('property-edit-container-open');\n });\n }\n //it is open so switch between index and property or close it\n else {\n // close form\n if ($($('.property', $editContainer)[0]).is(':visible')) {\n $editContainer.slideToggle(function () {\n $editContainer.parent().toggleClass('property-edit-container-open');\n //hide properties\n _hideProperties($editContainer);\n });\n }\n // hide index and show properties\n else {\n //hide index properties\n _hideIndexes($editContainer);\n //show properties\n _showProperties($editContainer);\n }\n }\n });\n\n //on click on index icon show index form or hide it\n $indexIcon.on('click', function () {\n //if form property is simple we can show index form\n if ($('.property-mode').hasClass('property-mode-advanced')) {\n //form is close so open it (hide property, show index)\n if (!$editContainer.parent().hasClass('property-edit-container-open')) {\n //hide index and show properties\n _hideProperties($editContainer);\n _showIndexes($editContainer);\n $editContainer.slideToggle(function () {\n $editContainer.parent().toggleClass('property-edit-container-open');\n });\n }\n //it is open so switch between index and property or close it\n else {\n // close form\n if ($($('.index', $editContainer)[0]).is(':visible')) {\n $editContainer.slideToggle(function () {\n $editContainer.parent().toggleClass('property-edit-container-open');\n //hide indexes\n _hideIndexes($editContainer);\n });\n }\n // hide properties and show indexes\n else {\n _hideProperties($editContainer);\n //show properties\n _showIndexes($editContainer);\n }\n }\n }\n });\n return 'regular-property';\n }\n }());\n $property.addClass(!hasAlreadyProperties ? 'property-block-first property-block ' + type : 'property-block ' + type);\n $propertyContainer.append($property);\n hasAlreadyProperties = true;\n }\n });\n }\n\n\n /**\n * Make properties look nice\n *\n * @param $properties (optional)\n */\n function init($properties) {\n var $container = $('.content-block .xhtml_form:first form');\n if (!$container.length) {\n return;\n }\n\n _initializeCopyToClipboard($container);\n\n // case no or empty argument -> find all properties not upgraded yet\n if (!$properties || !$properties.length) {\n $properties = $container.children('div[id*=\"property_\"]').not('.property-block');\n }\n if (!$properties.length) {\n if ($container.children('[name=\"tao.forms.instance\"]').length) {\n secondaryProps.init($container);\n }\n return;\n }\n _wrapPropsInContainer($properties);\n _upgradeButtons($container, 'radio');\n _upgradeButtons($container, 'checkbox');\n _toggleModeBtn('disabled');\n _showErrors($container);\n _checkRegularPropertyLabels($properties);\n }\n\n function _showErrors($container) {\n var $editContainer;\n var $error = $container.find('.error');\n if ($error.length) {\n $editContainer = $error.closest('.property-edit-container');\n if ($editContainer.length) {\n _hideIndexes($editContainer);\n _showProperties($editContainer);\n $editContainer.slideToggle(function () {\n $editContainer.parent().toggleClass('property-edit-container-open');\n });\n }\n }\n\n }\n\n function _hideProperties($container) {\n $('.property', $container).each(function () {\n var $currentTarget = $(this);\n while (!_.isEqual($currentTarget.parent()[0], $container[0])) {\n $currentTarget = $currentTarget.parent();\n }\n $currentTarget.hide();\n });\n _toggleModeBtn('disabled');\n }\n\n function _showProperties($container) {\n $('.property', $container).each(function () {\n var $currentTarget = $(this);\n while (!_.isEqual($currentTarget.parent()[0], $container[0])) {\n $currentTarget = $currentTarget.parent();\n }\n if ($(this).hasClass('property-depends-on')) {\n if ($(this)[0].length > 1) {\n dependsOn.toggle($(this), $currentTarget, $container);\n }\n return;\n }\n $currentTarget.show();\n });\n //show or hide the list values select\n var elt = $('[class*=\"property-type\"]', $container).parent(\"div\").next(\"div\");\n\n var propertiesTypes = ['list', 'tree'];\n var re = new RegExp(propertiesTypes.join('$|').concat('$'));\n\n if (re.test($('[class*=\"property-type\"]', $container).val())) {\n if (elt.css('display') === 'none') {\n elt.show();\n elt.find('select').removeAttr('disabled');\n }\n } else if (elt.css('display') !== 'none') {\n elt.css('display', 'none');\n elt.find('select').prop('disabled', \"disabled\");\n }\n\n _toggleModeBtn('enabled');\n }\n\n function _hideIndexes($container) {\n $('.index', $container).each(function () {\n var $currentTarget = $(this);\n while (!_.isEqual($currentTarget.parent()[0], $container[0])) {\n $currentTarget = $currentTarget.parent();\n }\n $currentTarget.hide();\n });\n $('.index-remover', $container).each(function () {\n $(this).parent().hide();\n });\n }\n\n function _showIndexes($container) {\n $('.index', $container).each(function () {\n var $currentTarget = $(this);\n while (!_.isEqual($currentTarget.parent()[0], $container[0])) {\n $currentTarget = $currentTarget.parent();\n }\n $currentTarget.show();\n });\n $('.index-remover', $container).each(function () {\n $(this).parent().show();\n });\n }\n\n /**\n * Checks and updates property labels\n * @param {Object} $properties - properties object\n */\n function _checkRegularPropertyLabels($properties) {\n $properties.each(function() {\n if($(this).hasClass('regular-property')) {\n var $parentHeadingLabel = $(this).find('.property-heading-label');\n var $editBlockLabel = $(this).find('.property-edit-container input[name$=\"_label\"]');\n\n if ($editBlockLabel.val() !== '') {\n $parentHeadingLabel.text($editBlockLabel.val());\n }\n }\n });\n }\n\n\n return {\n /**\n * Initialize post renderer, this can be done multiple times\n */\n init: init,\n getPropertyContainer: getPropertyContainer\n };\n});\n\n\n\n","define('form/property',['jquery', 'lodash', 'form/post-render-props'], function ($, _, postRenderProps) {\n\n /**\n * The data context for actions\n * @typedef {Object} ActionContext\n * @property {String} [uri] - the resource uri\n * @property {String} [classUri] - the class uri\n */\n\n /**\n * @exports form/property\n */\n var propertyManager = {\n\n /**\n * Add a new property\n * @param {String} classUri\n * @param {String} url\n */\n add: function (classUri, url) {\n var $existingProperties = $('.property-block'),\n index = $existingProperties.length;\n\n $existingProperties.each(function () {\n index = Math.max(parseInt(this.id.replace(/[\\D]+/, '')), index);\n });\n index++;\n\n $.ajax({\n url: url,\n type: \"POST\",\n data: {\n index: index,\n id: classUri\n },\n dataType: 'html',\n success: function (response) {\n\n var $response = $(response),\n property = $response.first();\n if($response.length > 1){\n var script = $response.last();\n script.appendTo(property);\n }\n\n postRenderProps.init(property);\n }\n });\n },\n /**\n * Remove property\n * @param {String} uri\n * @param {String} classUri\n * @param {String} url\n */\n remove: function (uri, classUri, url, successCallback) {\n\n $.ajax({\n url: url,\n type: \"POST\",\n data: {\n uri: uri,\n classUri: classUri\n },\n dataType: 'html',\n success: function () {\n if (_.isFunction(successCallback)) {\n successCallback();\n }\n }\n });\n }\n\n };\n\n return propertyManager;\n});\n\n","/* flatpickr v4.5.7, @license MIT */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define('lib/flatpickr/flatpickr',factory) :\n (global = global || self, global.flatpickr = factory());\n}(this, function () { 'use strict';\n\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation. All rights reserved.\r\n Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\n this file except in compliance with the License. You may obtain a copy of the\r\n License at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\n WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\n MERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\n See the Apache Version 2.0 License for specific language governing permissions\r\n and limitations under the License.\r\n ***************************************************************************** */\r\n\r\n var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n };\n\n var HOOKS = [\n \"onChange\",\n \"onClose\",\n \"onDayCreate\",\n \"onDestroy\",\n \"onKeyDown\",\n \"onMonthChange\",\n \"onOpen\",\n \"onParseConfig\",\n \"onReady\",\n \"onValueUpdate\",\n \"onYearChange\",\n \"onPreCalendarPosition\",\n ];\n var defaults = {\n _disable: [],\n _enable: [],\n allowInput: false,\n altFormat: \"F j, Y\",\n altInput: false,\n altInputClass: \"form-control input\",\n animate: typeof window === \"object\" &&\n window.navigator.userAgent.indexOf(\"MSIE\") === -1,\n ariaDateFormat: \"F j, Y\",\n clickOpens: true,\n closeOnSelect: true,\n conjunction: \", \",\n dateFormat: \"Y-m-d\",\n defaultHour: 12,\n defaultMinute: 0,\n defaultSeconds: 0,\n disable: [],\n disableMobile: false,\n enable: [],\n enableSeconds: false,\n enableTime: false,\n errorHandler: function (err) {\n return typeof console !== \"undefined\" && console.warn(err);\n },\n getWeek: function (givenDate) {\n var date = new Date(givenDate.getTime());\n date.setHours(0, 0, 0, 0);\n // Thursday in current week decides the year.\n date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n // January 4 is always in week 1.\n var week1 = new Date(date.getFullYear(), 0, 4);\n // Adjust to Thursday in week 1 and count number of weeks from date to week1.\n return (1 +\n Math.round(((date.getTime() - week1.getTime()) / 86400000 -\n 3 +\n ((week1.getDay() + 6) % 7)) /\n 7));\n },\n hourIncrement: 1,\n ignoredFocusElements: [],\n inline: false,\n locale: \"default\",\n minuteIncrement: 5,\n mode: \"single\",\n nextArrow: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M13.207 8.472l-7.854 7.854-0.707-0.707 7.146-7.146-7.146-7.148 0.707-0.707 7.854 7.854z' /></svg>\",\n noCalendar: false,\n now: new Date(),\n onChange: [],\n onClose: [],\n onDayCreate: [],\n onDestroy: [],\n onKeyDown: [],\n onMonthChange: [],\n onOpen: [],\n onParseConfig: [],\n onReady: [],\n onValueUpdate: [],\n onYearChange: [],\n onPreCalendarPosition: [],\n plugins: [],\n position: \"auto\",\n positionElement: undefined,\n prevArrow: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M5.207 8.471l7.146 7.147-0.707 0.707-7.853-7.854 7.854-7.853 0.707 0.707-7.147 7.146z' /></svg>\",\n shorthandCurrentMonth: false,\n showMonths: 1,\n static: false,\n time_24hr: false,\n weekNumbers: false,\n wrap: false\n };\n\n var english = {\n weekdays: {\n shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n longhand: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ]\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n longhand: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ]\n },\n daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n firstDayOfWeek: 0,\n ordinal: function (nth) {\n var s = nth % 100;\n if (s > 3 && s < 21)\n return \"th\";\n switch (s % 10) {\n case 1:\n return \"st\";\n case 2:\n return \"nd\";\n case 3:\n return \"rd\";\n default:\n return \"th\";\n }\n },\n rangeSeparator: \" to \",\n weekAbbreviation: \"Wk\",\n scrollTitle: \"Scroll to increment\",\n toggleTitle: \"Click to toggle\",\n amPM: [\"AM\", \"PM\"],\n yearAriaLabel: \"Year\"\n };\n\n var pad = function (number) { return (\"0\" + number).slice(-2); };\n var int = function (bool) { return (bool === true ? 1 : 0); };\n /* istanbul ignore next */\n function debounce(func, wait, immediate) {\n if (immediate === void 0) { immediate = false; }\n var timeout;\n return function () {\n var context = this, args = arguments;\n timeout !== null && clearTimeout(timeout);\n timeout = window.setTimeout(function () {\n timeout = null;\n if (!immediate)\n func.apply(context, args);\n }, wait);\n if (immediate && !timeout)\n func.apply(context, args);\n };\n }\n var arrayify = function (obj) {\n return obj instanceof Array ? obj : [obj];\n };\n\n function toggleClass(elem, className, bool) {\n if (bool === true)\n return elem.classList.add(className);\n elem.classList.remove(className);\n }\n function createElement(tag, className, content) {\n var e = window.document.createElement(tag);\n className = className || \"\";\n content = content || \"\";\n e.className = className;\n if (content !== undefined)\n e.textContent = content;\n return e;\n }\n function clearNode(node) {\n while (node.firstChild)\n node.removeChild(node.firstChild);\n }\n function findParent(node, condition) {\n if (condition(node))\n return node;\n else if (node.parentNode)\n return findParent(node.parentNode, condition);\n return undefined; // nothing found\n }\n function createNumberInput(inputClassName, opts) {\n var wrapper = createElement(\"div\", \"numInputWrapper\"), numInput = createElement(\"input\", \"numInput \" + inputClassName), arrowUp = createElement(\"span\", \"arrowUp\"), arrowDown = createElement(\"span\", \"arrowDown\");\n if (navigator.userAgent.indexOf(\"MSIE 9.0\") === -1) {\n numInput.type = \"number\";\n }\n else {\n numInput.type = \"text\";\n numInput.pattern = \"\\\\d*\";\n }\n if (opts !== undefined)\n for (var key in opts)\n numInput.setAttribute(key, opts[key]);\n wrapper.appendChild(numInput);\n wrapper.appendChild(arrowUp);\n wrapper.appendChild(arrowDown);\n return wrapper;\n }\n function getEventTarget(event) {\n if (typeof event.composedPath === \"function\") {\n var path = event.composedPath();\n return path[0];\n }\n return event.target;\n }\n\n var do_nothing = function () { return undefined; };\n var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber]; };\n var revFormat = {\n D: do_nothing,\n F: function (dateObj, monthName, locale) {\n dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n },\n G: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n H: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n J: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n K: function (dateObj, amPM, locale) {\n dateObj.setHours((dateObj.getHours() % 12) +\n 12 * int(new RegExp(locale.amPM[1], \"i\").test(amPM)));\n },\n M: function (dateObj, shortMonth, locale) {\n dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\n },\n S: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n U: function (_, unixSeconds) { return new Date(parseFloat(unixSeconds) * 1000); },\n W: function (dateObj, weekNum) {\n var weekNumber = parseInt(weekNum);\n return new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\n },\n Y: function (dateObj, year) {\n dateObj.setFullYear(parseFloat(year));\n },\n Z: function (_, ISODate) { return new Date(ISODate); },\n d: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n h: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n i: function (dateObj, minutes) {\n dateObj.setMinutes(parseFloat(minutes));\n },\n j: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n l: do_nothing,\n m: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n n: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n s: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n u: function (_, unixMillSeconds) {\n return new Date(parseFloat(unixMillSeconds));\n },\n w: do_nothing,\n y: function (dateObj, year) {\n dateObj.setFullYear(2000 + parseFloat(year));\n }\n };\n var tokenRegex = {\n D: \"(\\\\w+)\",\n F: \"(\\\\w+)\",\n G: \"(\\\\d\\\\d|\\\\d)\",\n H: \"(\\\\d\\\\d|\\\\d)\",\n J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n K: \"\",\n M: \"(\\\\w+)\",\n S: \"(\\\\d\\\\d|\\\\d)\",\n U: \"(.+)\",\n W: \"(\\\\d\\\\d|\\\\d)\",\n Y: \"(\\\\d{4})\",\n Z: \"(.+)\",\n d: \"(\\\\d\\\\d|\\\\d)\",\n h: \"(\\\\d\\\\d|\\\\d)\",\n i: \"(\\\\d\\\\d|\\\\d)\",\n j: \"(\\\\d\\\\d|\\\\d)\",\n l: \"(\\\\w+)\",\n m: \"(\\\\d\\\\d|\\\\d)\",\n n: \"(\\\\d\\\\d|\\\\d)\",\n s: \"(\\\\d\\\\d|\\\\d)\",\n u: \"(.+)\",\n w: \"(\\\\d\\\\d|\\\\d)\",\n y: \"(\\\\d{2})\"\n };\n var formats = {\n // get the date in UTC\n Z: function (date) { return date.toISOString(); },\n // weekday name, short, e.g. Thu\n D: function (date, locale, options) {\n return locale.weekdays.shorthand[formats.w(date, locale, options)];\n },\n // full month name e.g. January\n F: function (date, locale, options) {\n return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n },\n // padded hour 1-12\n G: function (date, locale, options) {\n return pad(formats.h(date, locale, options));\n },\n // hours with leading zero e.g. 03\n H: function (date) { return pad(date.getHours()); },\n // day (1-30) with ordinal suffix e.g. 1st, 2nd\n J: function (date, locale) {\n return locale.ordinal !== undefined\n ? date.getDate() + locale.ordinal(date.getDate())\n : date.getDate();\n },\n // AM/PM\n K: function (date, locale) { return locale.amPM[int(date.getHours() > 11)]; },\n // shorthand month e.g. Jan, Sep, Oct, etc\n M: function (date, locale) {\n return monthToStr(date.getMonth(), true, locale);\n },\n // seconds 00-59\n S: function (date) { return pad(date.getSeconds()); },\n // unix timestamp\n U: function (date) { return date.getTime() / 1000; },\n W: function (date, _, options) {\n return options.getWeek(date);\n },\n // full year e.g. 2016\n Y: function (date) { return date.getFullYear(); },\n // day in month, padded (01-30)\n d: function (date) { return pad(date.getDate()); },\n // hour from 1-12 (am/pm)\n h: function (date) { return (date.getHours() % 12 ? date.getHours() % 12 : 12); },\n // minutes, padded with leading zero e.g. 09\n i: function (date) { return pad(date.getMinutes()); },\n // day in month (1-30)\n j: function (date) { return date.getDate(); },\n // weekday name, full, e.g. Thursday\n l: function (date, locale) {\n return locale.weekdays.longhand[date.getDay()];\n },\n // padded month number (01-12)\n m: function (date) { return pad(date.getMonth() + 1); },\n // the month number (1-12)\n n: function (date) { return date.getMonth() + 1; },\n // seconds 0-59\n s: function (date) { return date.getSeconds(); },\n // Unix Milliseconds\n u: function (date) { return date.getTime(); },\n // number of the day of the week\n w: function (date) { return date.getDay(); },\n // last two digits of year e.g. 16 for 2016\n y: function (date) { return String(date.getFullYear()).substring(2); }\n };\n\n var createDateFormatter = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;\n return function (dateObj, frmt, overrideLocale) {\n var locale = overrideLocale || l10n;\n if (config.formatDate !== undefined) {\n return config.formatDate(dateObj, frmt, locale);\n }\n return frmt\n .split(\"\")\n .map(function (c, i, arr) {\n return formats[c] && arr[i - 1] !== \"\\\\\"\n ? formats[c](dateObj, locale, config)\n : c !== \"\\\\\"\n ? c\n : \"\";\n })\n .join(\"\");\n };\n };\n var createDateParser = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;\n return function (date, givenFormat, timeless, customLocale) {\n if (date !== 0 && !date)\n return undefined;\n var locale = customLocale || l10n;\n var parsedDate;\n var date_orig = date;\n if (date instanceof Date)\n parsedDate = new Date(date.getTime());\n else if (typeof date !== \"string\" &&\n date.toFixed !== undefined // timestamp\n )\n // create a copy\n parsedDate = new Date(date);\n else if (typeof date === \"string\") {\n // date string\n var format = givenFormat || (config || defaults).dateFormat;\n var datestr = String(date).trim();\n if (datestr === \"today\") {\n parsedDate = new Date();\n timeless = true;\n }\n else if (/Z$/.test(datestr) ||\n /GMT$/.test(datestr) // datestrings w/ timezone\n )\n parsedDate = new Date(date);\n else if (config && config.parseDate)\n parsedDate = config.parseDate(date, format);\n else {\n parsedDate =\n !config || !config.noCalendar\n ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)\n : new Date(new Date().setHours(0, 0, 0, 0));\n var matched = void 0, ops = [];\n for (var i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n var token_1 = format[i];\n var isBackSlash = token_1 === \"\\\\\";\n var escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n if (tokenRegex[token_1] && !escaped) {\n regexStr += tokenRegex[token_1];\n var match = new RegExp(regexStr).exec(date);\n if (match && (matched = true)) {\n ops[token_1 !== \"Y\" ? \"push\" : \"unshift\"]({\n fn: revFormat[token_1],\n val: match[++matchIndex]\n });\n }\n }\n else if (!isBackSlash)\n regexStr += \".\"; // don't really care\n ops.forEach(function (_a) {\n var fn = _a.fn, val = _a.val;\n return (parsedDate = fn(parsedDate, val, locale) || parsedDate);\n });\n }\n parsedDate = matched ? parsedDate : undefined;\n }\n }\n /* istanbul ignore next */\n if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n config.errorHandler(new Error(\"Invalid date provided: \" + date_orig));\n return undefined;\n }\n if (timeless === true)\n parsedDate.setHours(0, 0, 0, 0);\n return parsedDate;\n };\n };\n /**\n * Compute the difference in dates, measured in ms\n */\n function compareDates(date1, date2, timeless) {\n if (timeless === void 0) { timeless = true; }\n if (timeless !== false) {\n return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -\n new Date(date2.getTime()).setHours(0, 0, 0, 0));\n }\n return date1.getTime() - date2.getTime();\n }\n var isBetween = function (ts, ts1, ts2) {\n return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n };\n var duration = {\n DAY: 86400000\n };\n\n if (typeof Object.assign !== \"function\") {\n Object.assign = function (target) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (!target) {\n throw TypeError(\"Cannot convert undefined or null to object\");\n }\n var _loop_1 = function (source) {\n if (source) {\n Object.keys(source).forEach(function (key) { return (target[key] = source[key]); });\n }\n };\n for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n var source = args_1[_a];\n _loop_1(source);\n }\n return target;\n };\n }\n\n var DEBOUNCED_CHANGE_MS = 300;\n function FlatpickrInstance(element, instanceConfig) {\n var self = {\n config: __assign({}, flatpickr.defaultConfig),\n l10n: english\n };\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n self._handlers = [];\n self._bind = bind;\n self._setHoursFromDate = setHoursFromDate;\n self._positionCalendar = positionCalendar;\n self.changeMonth = changeMonth;\n self.changeYear = changeYear;\n self.clear = clear;\n self.close = close;\n self._createElement = createElement;\n self.destroy = destroy;\n self.isEnabled = isEnabled;\n self.jumpToDate = jumpToDate;\n self.open = open;\n self.redraw = redraw;\n self.set = set;\n self.setDate = setDate;\n self.toggle = toggle;\n function setupHelperFunctions() {\n self.utils = {\n getDaysInMonth: function (month, yr) {\n if (month === void 0) { month = self.currentMonth; }\n if (yr === void 0) { yr = self.currentYear; }\n if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))\n return 29;\n return self.l10n.daysInMonth[month];\n }\n };\n }\n function init() {\n self.element = self.input = element;\n self.isOpen = false;\n parseConfig();\n setupLocale();\n setupInputs();\n setupDates();\n setupHelperFunctions();\n if (!self.isMobile)\n build();\n bindEvents();\n if (self.selectedDates.length || self.config.noCalendar) {\n if (self.config.enableTime) {\n setHoursFromDate(self.config.noCalendar\n ? self.latestSelectedDateObj || self.config.minDate\n : undefined);\n }\n updateValue(false);\n }\n setCalendarWidth();\n self.showTimeInput =\n self.selectedDates.length > 0 || self.config.noCalendar;\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n /* TODO: investigate this further\n \n Currently, there is weird positioning behavior in safari causing pages\n to scroll up. https://github.com/chmln/flatpickr/issues/563\n \n However, most browsers are not Safari and positioning is expensive when used\n in scale. https://github.com/chmln/flatpickr/issues/1096\n */\n if (!self.isMobile && isSafari) {\n positionCalendar();\n }\n triggerEvent(\"onReady\");\n }\n function bindToInstance(fn) {\n return fn.bind(self);\n }\n function setCalendarWidth() {\n var config = self.config;\n if (config.weekNumbers === false && config.showMonths === 1)\n return;\n else if (config.noCalendar !== true) {\n window.requestAnimationFrame(function () {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.style.visibility = \"hidden\";\n self.calendarContainer.style.display = \"block\";\n }\n if (self.daysContainer !== undefined) {\n var daysWidth = (self.days.offsetWidth + 1) * config.showMonths;\n self.daysContainer.style.width = daysWidth + \"px\";\n self.calendarContainer.style.width =\n daysWidth +\n (self.weekWrapper !== undefined\n ? self.weekWrapper.offsetWidth\n : 0) +\n \"px\";\n self.calendarContainer.style.removeProperty(\"visibility\");\n self.calendarContainer.style.removeProperty(\"display\");\n }\n });\n }\n }\n /**\n * The handler for all events targeting the time inputs\n */\n function updateTime(e) {\n if (self.selectedDates.length === 0) {\n setDefaultTime();\n }\n if (e !== undefined && e.type !== \"blur\") {\n timeWrapper(e);\n }\n var prevValue = self._input.value;\n setHoursFromInputs();\n updateValue();\n if (self._input.value !== prevValue) {\n self._debouncedChange();\n }\n }\n function ampm2military(hour, amPM) {\n return (hour % 12) + 12 * int(amPM === self.l10n.amPM[1]);\n }\n function military2ampm(hour) {\n switch (hour % 24) {\n case 0:\n case 12:\n return 12;\n default:\n return hour % 12;\n }\n }\n /**\n * Syncs the selected date object time with user's time input\n */\n function setHoursFromInputs() {\n if (self.hourElement === undefined || self.minuteElement === undefined)\n return;\n var hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined\n ? (parseInt(self.secondElement.value, 10) || 0) % 60\n : 0;\n if (self.amPM !== undefined) {\n hours = ampm2military(hours, self.amPM.textContent);\n }\n var limitMinHours = self.config.minTime !== undefined ||\n (self.config.minDate &&\n self.minDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.minDate, true) ===\n 0);\n var limitMaxHours = self.config.maxTime !== undefined ||\n (self.config.maxDate &&\n self.maxDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.maxDate, true) ===\n 0);\n if (limitMaxHours) {\n var maxTime = self.config.maxTime !== undefined\n ? self.config.maxTime\n : self.config.maxDate;\n hours = Math.min(hours, maxTime.getHours());\n if (hours === maxTime.getHours())\n minutes = Math.min(minutes, maxTime.getMinutes());\n if (minutes === maxTime.getMinutes())\n seconds = Math.min(seconds, maxTime.getSeconds());\n }\n if (limitMinHours) {\n var minTime = self.config.minTime !== undefined\n ? self.config.minTime\n : self.config.minDate;\n hours = Math.max(hours, minTime.getHours());\n if (hours === minTime.getHours())\n minutes = Math.max(minutes, minTime.getMinutes());\n if (minutes === minTime.getMinutes())\n seconds = Math.max(seconds, minTime.getSeconds());\n }\n setHours(hours, minutes, seconds);\n }\n /**\n * Syncs time input values with a date\n */\n function setHoursFromDate(dateObj) {\n var date = dateObj || self.latestSelectedDateObj;\n if (date)\n setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n }\n function setDefaultHours() {\n var hours = self.config.defaultHour;\n var minutes = self.config.defaultMinute;\n var seconds = self.config.defaultSeconds;\n if (self.config.minDate !== undefined) {\n var min_hr = self.config.minDate.getHours();\n var min_minutes = self.config.minDate.getMinutes();\n hours = Math.max(hours, min_hr);\n if (hours === min_hr)\n minutes = Math.max(min_minutes, minutes);\n if (hours === min_hr && minutes === min_minutes)\n seconds = self.config.minDate.getSeconds();\n }\n if (self.config.maxDate !== undefined) {\n var max_hr = self.config.maxDate.getHours();\n var max_minutes = self.config.maxDate.getMinutes();\n hours = Math.min(hours, max_hr);\n if (hours === max_hr)\n minutes = Math.min(max_minutes, minutes);\n if (hours === max_hr && minutes === max_minutes)\n seconds = self.config.maxDate.getSeconds();\n }\n setHours(hours, minutes, seconds);\n }\n /**\n * Sets the hours, minutes, and optionally seconds\n * of the latest selected date object and the\n * corresponding time inputs\n * @param {Number} hours the hour. whether its military\n * or am-pm gets inferred from config\n * @param {Number} minutes the minutes\n * @param {Number} seconds the seconds (optional)\n */\n function setHours(hours, minutes, seconds) {\n if (self.latestSelectedDateObj !== undefined) {\n self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n }\n if (!self.hourElement || !self.minuteElement || self.isMobile)\n return;\n self.hourElement.value = pad(!self.config.time_24hr\n ? ((12 + hours) % 12) + 12 * int(hours % 12 === 0)\n : hours);\n self.minuteElement.value = pad(minutes);\n if (self.amPM !== undefined)\n self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];\n if (self.secondElement !== undefined)\n self.secondElement.value = pad(seconds);\n }\n /**\n * Handles the year input and incrementing events\n * @param {Event} event the keyup or increment event\n */\n function onYearInput(event) {\n var year = parseInt(event.target.value) + (event.delta || 0);\n if (year / 1000 > 1 ||\n (event.key === \"Enter\" && !/[^\\d]/.test(year.toString()))) {\n changeYear(year);\n }\n }\n /**\n * Essentially addEventListener + tracking\n * @param {Element} element the element to addEventListener to\n * @param {String} event the event name\n * @param {Function} handler the event handler\n */\n function bind(element, event, handler, options) {\n if (event instanceof Array)\n return event.forEach(function (ev) { return bind(element, ev, handler, options); });\n if (element instanceof Array)\n return element.forEach(function (el) { return bind(el, event, handler, options); });\n element.addEventListener(event, handler, options);\n self._handlers.push({\n element: element,\n event: event,\n handler: handler,\n options: options\n });\n }\n /**\n * A mousedown handler which mimics click.\n * Minimizes latency, since we don't need to wait for mouseup in most cases.\n * Also, avoids handling right clicks.\n *\n * @param {Function} handler the event handler\n */\n function onClick(handler) {\n return function (evt) {\n evt.which === 1 && handler(evt);\n };\n }\n function triggerChange() {\n triggerEvent(\"onChange\");\n }\n /**\n * Adds all the necessary event listeners\n */\n function bindEvents() {\n if (self.config.wrap) {\n [\"open\", \"close\", \"toggle\", \"clear\"].forEach(function (evt) {\n Array.prototype.forEach.call(self.element.querySelectorAll(\"[data-\" + evt + \"]\"), function (el) {\n return bind(el, \"click\", self[evt]);\n });\n });\n }\n if (self.isMobile) {\n setupMobile();\n return;\n }\n var debouncedResize = debounce(onResize, 50);\n self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);\n if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))\n bind(self.daysContainer, \"mouseover\", function (e) {\n if (self.config.mode === \"range\")\n onMouseOver(e.target);\n });\n bind(window.document.body, \"keydown\", onKeyDown);\n if (!self.config.static)\n bind(self._input, \"keydown\", onKeyDown);\n if (!self.config.inline && !self.config.static)\n bind(window, \"resize\", debouncedResize);\n if (window.ontouchstart !== undefined)\n bind(window.document, \"click\", documentClick);\n else\n bind(window.document, \"mousedown\", onClick(documentClick));\n bind(window.document, \"focus\", documentClick, { capture: true });\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"mousedown\", onClick(self.open));\n }\n if (self.daysContainer !== undefined) {\n bind(self.monthNav, \"mousedown\", onClick(onMonthNavClick));\n bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n bind(self.daysContainer, \"mousedown\", onClick(selectDate));\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined) {\n var selText = function (e) {\n return e.target.select();\n };\n bind(self.timeContainer, [\"increment\"], updateTime);\n bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n bind(self.timeContainer, \"mousedown\", onClick(timeIncrement));\n bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n if (self.secondElement !== undefined)\n bind(self.secondElement, \"focus\", function () { return self.secondElement && self.secondElement.select(); });\n if (self.amPM !== undefined) {\n bind(self.amPM, \"mousedown\", onClick(function (e) {\n updateTime(e);\n triggerChange();\n }));\n }\n }\n }\n /**\n * Set the calendar view to a particular date.\n * @param {Date} jumpDate the date to set the view to\n */\n function jumpToDate(jumpDate) {\n var jumpTo = jumpDate !== undefined\n ? self.parseDate(jumpDate)\n : self.latestSelectedDateObj ||\n (self.config.minDate && self.config.minDate > self.now\n ? self.config.minDate\n : self.config.maxDate && self.config.maxDate < self.now\n ? self.config.maxDate\n : self.now);\n try {\n if (jumpTo !== undefined) {\n self.currentYear = jumpTo.getFullYear();\n self.currentMonth = jumpTo.getMonth();\n }\n }\n catch (e) {\n /* istanbul ignore next */\n e.message = \"Invalid date supplied: \" + jumpTo;\n self.config.errorHandler(e);\n }\n self.redraw();\n }\n /**\n * The up/down arrow handler for time inputs\n * @param {Event} e the click event\n */\n function timeIncrement(e) {\n if (~e.target.className.indexOf(\"arrow\"))\n incrementNumInput(e, e.target.classList.contains(\"arrowUp\") ? 1 : -1);\n }\n /**\n * Increments/decrements the value of input associ-\n * ated with the up/down arrow by dispatching an\n * \"increment\" event on the input.\n *\n * @param {Event} e the click event\n * @param {Number} delta the diff (usually 1 or -1)\n * @param {Element} inputElem the input element\n */\n function incrementNumInput(e, delta, inputElem) {\n var target = e && e.target;\n var input = inputElem ||\n (target && target.parentNode && target.parentNode.firstChild);\n var event = createEvent(\"increment\");\n event.delta = delta;\n input && input.dispatchEvent(event);\n }\n function build() {\n var fragment = window.document.createDocumentFragment();\n self.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\n self.calendarContainer.tabIndex = -1;\n if (!self.config.noCalendar) {\n fragment.appendChild(buildMonthNav());\n self.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\n if (self.config.weekNumbers) {\n var _a = buildWeeks(), weekWrapper = _a.weekWrapper, weekNumbers = _a.weekNumbers;\n self.innerContainer.appendChild(weekWrapper);\n self.weekNumbers = weekNumbers;\n self.weekWrapper = weekWrapper;\n }\n self.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\n self.rContainer.appendChild(buildWeekdays());\n if (!self.daysContainer) {\n self.daysContainer = createElement(\"div\", \"flatpickr-days\");\n self.daysContainer.tabIndex = -1;\n }\n buildDays();\n self.rContainer.appendChild(self.daysContainer);\n self.innerContainer.appendChild(self.rContainer);\n fragment.appendChild(self.innerContainer);\n }\n if (self.config.enableTime) {\n fragment.appendChild(buildTime());\n }\n toggleClass(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n toggleClass(self.calendarContainer, \"animate\", self.config.animate === true);\n toggleClass(self.calendarContainer, \"multiMonth\", self.config.showMonths > 1);\n self.calendarContainer.appendChild(fragment);\n var customAppend = self.config.appendTo !== undefined &&\n self.config.appendTo.nodeType !== undefined;\n if (self.config.inline || self.config.static) {\n self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n if (self.config.inline) {\n if (!customAppend && self.element.parentNode)\n self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);\n else if (self.config.appendTo !== undefined)\n self.config.appendTo.appendChild(self.calendarContainer);\n }\n if (self.config.static) {\n var wrapper = createElement(\"div\", \"flatpickr-wrapper\");\n if (self.element.parentNode)\n self.element.parentNode.insertBefore(wrapper, self.element);\n wrapper.appendChild(self.element);\n if (self.altInput)\n wrapper.appendChild(self.altInput);\n wrapper.appendChild(self.calendarContainer);\n }\n }\n if (!self.config.static && !self.config.inline)\n (self.config.appendTo !== undefined\n ? self.config.appendTo\n : window.document.body).appendChild(self.calendarContainer);\n }\n function createDay(className, date, dayNumber, i) {\n var dateIsEnabled = isEnabled(date, true), dayElement = createElement(\"span\", \"flatpickr-day \" + className, date.getDate().toString());\n dayElement.dateObj = date;\n dayElement.$i = i;\n dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n if (className.indexOf(\"hidden\") === -1 &&\n compareDates(date, self.now) === 0) {\n self.todayDateElem = dayElement;\n dayElement.classList.add(\"today\");\n dayElement.setAttribute(\"aria-current\", \"date\");\n }\n if (dateIsEnabled) {\n dayElement.tabIndex = -1;\n if (isDateSelected(date)) {\n dayElement.classList.add(\"selected\");\n self.selectedDateElem = dayElement;\n if (self.config.mode === \"range\") {\n toggleClass(dayElement, \"startRange\", self.selectedDates[0] &&\n compareDates(date, self.selectedDates[0], true) === 0);\n toggleClass(dayElement, \"endRange\", self.selectedDates[1] &&\n compareDates(date, self.selectedDates[1], true) === 0);\n if (className === \"nextMonthDay\")\n dayElement.classList.add(\"inRange\");\n }\n }\n }\n else {\n dayElement.classList.add(\"disabled\");\n }\n if (self.config.mode === \"range\") {\n if (isDateInRange(date) && !isDateSelected(date))\n dayElement.classList.add(\"inRange\");\n }\n if (self.weekNumbers &&\n self.config.showMonths === 1 &&\n className !== \"prevMonthDay\" &&\n dayNumber % 7 === 1) {\n self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"<span class='flatpickr-day'>\" + self.config.getWeek(date) + \"</span>\");\n }\n triggerEvent(\"onDayCreate\", dayElement);\n return dayElement;\n }\n function focusOnDayElem(targetNode) {\n targetNode.focus();\n if (self.config.mode === \"range\")\n onMouseOver(targetNode);\n }\n function getFirstAvailableDay(delta) {\n var startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n for (var m = startMonth; m != endMonth; m += delta) {\n var month = self.daysContainer.children[m];\n var startIndex = delta > 0 ? 0 : month.children.length - 1;\n var endIndex = delta > 0 ? month.children.length : -1;\n for (var i = startIndex; i != endIndex; i += delta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj))\n return c;\n }\n }\n return undefined;\n }\n function getNextAvailableDay(current, delta) {\n var givenMonth = current.className.indexOf(\"Month\") === -1\n ? current.dateObj.getMonth()\n : self.currentMonth;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n var loopDelta = delta > 0 ? 1 : -1;\n for (var m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n var month = self.daysContainer.children[m];\n var startIndex = givenMonth - self.currentMonth === m\n ? current.$i + delta\n : delta < 0\n ? month.children.length - 1\n : 0;\n var numMonthDays = month.children.length;\n for (var i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 &&\n isEnabled(c.dateObj) &&\n Math.abs(current.$i - i) >= Math.abs(delta))\n return focusOnDayElem(c);\n }\n }\n self.changeMonth(loopDelta);\n focusOnDay(getFirstAvailableDay(loopDelta), 0);\n return undefined;\n }\n function focusOnDay(current, offset) {\n var dayFocused = isInView(document.activeElement || document.body);\n var startElem = current !== undefined\n ? current\n : dayFocused\n ? document.activeElement\n : self.selectedDateElem !== undefined && isInView(self.selectedDateElem)\n ? self.selectedDateElem\n : self.todayDateElem !== undefined && isInView(self.todayDateElem)\n ? self.todayDateElem\n : getFirstAvailableDay(offset > 0 ? 1 : -1);\n if (startElem === undefined)\n return self._input.focus();\n if (!dayFocused)\n return focusOnDayElem(startElem);\n getNextAvailableDay(startElem, offset);\n }\n function buildMonthDays(year, month) {\n var firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n var prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12);\n var daysInMonth = self.utils.getDaysInMonth(month), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\", nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n var dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;\n // prepend days from the ending of previous month\n for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n days.appendChild(createDay(prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n }\n // Start at 1 since there is no 0th day\n for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n }\n // append days from the next month\n for (var dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n days.appendChild(createDay(nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n }\n //updateNavigationCurrentMonth();\n var dayContainer = createElement(\"div\", \"dayContainer\");\n dayContainer.appendChild(days);\n return dayContainer;\n }\n function buildDays() {\n if (self.daysContainer === undefined) {\n return;\n }\n clearNode(self.daysContainer);\n // TODO: week numbers for each month\n if (self.weekNumbers)\n clearNode(self.weekNumbers);\n var frag = document.createDocumentFragment();\n for (var i = 0; i < self.config.showMonths; i++) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));\n }\n self.daysContainer.appendChild(frag);\n self.days = self.daysContainer.firstChild;\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n onMouseOver();\n }\n }\n function buildMonth() {\n var container = createElement(\"div\", \"flatpickr-month\");\n var monthNavFragment = window.document.createDocumentFragment();\n var monthElement = createElement(\"span\", \"cur-month\");\n var yearInput = createNumberInput(\"cur-year\", { tabindex: \"-1\" });\n var yearElement = yearInput.getElementsByTagName(\"input\")[0];\n yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n if (self.config.minDate) {\n yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n }\n if (self.config.maxDate) {\n yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n yearElement.disabled =\n !!self.config.minDate &&\n self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n }\n var currentMonth = createElement(\"div\", \"flatpickr-current-month\");\n currentMonth.appendChild(monthElement);\n currentMonth.appendChild(yearInput);\n monthNavFragment.appendChild(currentMonth);\n container.appendChild(monthNavFragment);\n return {\n container: container,\n yearElement: yearElement,\n monthElement: monthElement\n };\n }\n function buildMonths() {\n clearNode(self.monthNav);\n self.monthNav.appendChild(self.prevMonthNav);\n if (self.config.showMonths) {\n self.yearElements = [];\n self.monthElements = [];\n }\n for (var m = self.config.showMonths; m--;) {\n var month = buildMonth();\n self.yearElements.push(month.yearElement);\n self.monthElements.push(month.monthElement);\n self.monthNav.appendChild(month.container);\n }\n self.monthNav.appendChild(self.nextMonthNav);\n }\n function buildMonthNav() {\n self.monthNav = createElement(\"div\", \"flatpickr-months\");\n self.yearElements = [];\n self.monthElements = [];\n self.prevMonthNav = createElement(\"span\", \"flatpickr-prev-month\");\n self.prevMonthNav.innerHTML = self.config.prevArrow;\n self.nextMonthNav = createElement(\"span\", \"flatpickr-next-month\");\n self.nextMonthNav.innerHTML = self.config.nextArrow;\n buildMonths();\n Object.defineProperty(self, \"_hidePrevMonthArrow\", {\n get: function () { return self.__hidePrevMonthArrow; },\n set: function (bool) {\n if (self.__hidePrevMonthArrow !== bool) {\n toggleClass(self.prevMonthNav, \"disabled\", bool);\n self.__hidePrevMonthArrow = bool;\n }\n }\n });\n Object.defineProperty(self, \"_hideNextMonthArrow\", {\n get: function () { return self.__hideNextMonthArrow; },\n set: function (bool) {\n if (self.__hideNextMonthArrow !== bool) {\n toggleClass(self.nextMonthNav, \"disabled\", bool);\n self.__hideNextMonthArrow = bool;\n }\n }\n });\n self.currentYearElement = self.yearElements[0];\n updateNavigationCurrentMonth();\n return self.monthNav;\n }\n function buildTime() {\n self.calendarContainer.classList.add(\"hasTime\");\n if (self.config.noCalendar)\n self.calendarContainer.classList.add(\"noCalendar\");\n self.timeContainer = createElement(\"div\", \"flatpickr-time\");\n self.timeContainer.tabIndex = -1;\n var separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\n var hourInput = createNumberInput(\"flatpickr-hour\");\n self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n var minuteInput = createNumberInput(\"flatpickr-minute\");\n self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n self.hourElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getHours()\n : self.config.time_24hr\n ? self.config.defaultHour\n : military2ampm(self.config.defaultHour));\n self.minuteElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getMinutes()\n : self.config.defaultMinute);\n self.hourElement.setAttribute(\"step\", self.config.hourIncrement.toString());\n self.minuteElement.setAttribute(\"step\", self.config.minuteIncrement.toString());\n self.hourElement.setAttribute(\"min\", self.config.time_24hr ? \"0\" : \"1\");\n self.hourElement.setAttribute(\"max\", self.config.time_24hr ? \"23\" : \"12\");\n self.minuteElement.setAttribute(\"min\", \"0\");\n self.minuteElement.setAttribute(\"max\", \"59\");\n self.timeContainer.appendChild(hourInput);\n self.timeContainer.appendChild(separator);\n self.timeContainer.appendChild(minuteInput);\n if (self.config.time_24hr)\n self.timeContainer.classList.add(\"time24hr\");\n if (self.config.enableSeconds) {\n self.timeContainer.classList.add(\"hasSeconds\");\n var secondInput = createNumberInput(\"flatpickr-second\");\n self.secondElement = secondInput.getElementsByTagName(\"input\")[0];\n self.secondElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getSeconds()\n : self.config.defaultSeconds);\n self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n self.secondElement.setAttribute(\"min\", \"0\");\n self.secondElement.setAttribute(\"max\", \"59\");\n self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n self.timeContainer.appendChild(secondInput);\n }\n if (!self.config.time_24hr) {\n // add self.amPM if appropriate\n self.amPM = createElement(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[int((self.latestSelectedDateObj\n ? self.hourElement.value\n : self.config.defaultHour) > 11)]);\n self.amPM.title = self.l10n.toggleTitle;\n self.amPM.tabIndex = -1;\n self.timeContainer.appendChild(self.amPM);\n }\n return self.timeContainer;\n }\n function buildWeekdays() {\n if (!self.weekdayContainer)\n self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");\n else\n clearNode(self.weekdayContainer);\n for (var i = self.config.showMonths; i--;) {\n var container = createElement(\"div\", \"flatpickr-weekdaycontainer\");\n self.weekdayContainer.appendChild(container);\n }\n updateWeekdays();\n return self.weekdayContainer;\n }\n function updateWeekdays() {\n var firstDayOfWeek = self.l10n.firstDayOfWeek;\n var weekdays = self.l10n.weekdays.shorthand.slice();\n if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n weekdays = weekdays.splice(firstDayOfWeek, weekdays.length).concat(weekdays.splice(0, firstDayOfWeek));\n }\n for (var i = self.config.showMonths; i--;) {\n self.weekdayContainer.children[i].innerHTML = \"\\n <span class='flatpickr-weekday'>\\n \" + weekdays.join(\"</span><span class='flatpickr-weekday'>\") + \"\\n </span>\\n \";\n }\n }\n /* istanbul ignore next */\n function buildWeeks() {\n self.calendarContainer.classList.add(\"hasWeeks\");\n var weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\n weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n var weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\n weekWrapper.appendChild(weekNumbers);\n return {\n weekWrapper: weekWrapper,\n weekNumbers: weekNumbers\n };\n }\n function changeMonth(value, is_offset) {\n if (is_offset === void 0) { is_offset = true; }\n var delta = is_offset ? value : value - self.currentMonth;\n if ((delta < 0 && self._hidePrevMonthArrow === true) ||\n (delta > 0 && self._hideNextMonthArrow === true))\n return;\n self.currentMonth += delta;\n if (self.currentMonth < 0 || self.currentMonth > 11) {\n self.currentYear += self.currentMonth > 11 ? 1 : -1;\n self.currentMonth = (self.currentMonth + 12) % 12;\n triggerEvent(\"onYearChange\");\n }\n buildDays();\n triggerEvent(\"onMonthChange\");\n updateNavigationCurrentMonth();\n }\n function clear(triggerChangeEvent, toInitial) {\n if (triggerChangeEvent === void 0) { triggerChangeEvent = true; }\n if (toInitial === void 0) { toInitial = true; }\n self.input.value = \"\";\n if (self.altInput !== undefined)\n self.altInput.value = \"\";\n if (self.mobileInput !== undefined)\n self.mobileInput.value = \"\";\n self.selectedDates = [];\n self.latestSelectedDateObj = undefined;\n if (toInitial === true) {\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n }\n self.showTimeInput = false;\n if (self.config.enableTime === true) {\n setDefaultHours();\n }\n self.redraw();\n if (triggerChangeEvent)\n // triggerChangeEvent is true (default) or an Event\n triggerEvent(\"onChange\");\n }\n function close() {\n self.isOpen = false;\n if (!self.isMobile) {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.classList.remove(\"open\");\n }\n if (self._input !== undefined) {\n self._input.classList.remove(\"active\");\n }\n }\n triggerEvent(\"onClose\");\n }\n function destroy() {\n if (self.config !== undefined)\n triggerEvent(\"onDestroy\");\n for (var i = self._handlers.length; i--;) {\n var h = self._handlers[i];\n h.element.removeEventListener(h.event, h.handler, h.options);\n }\n self._handlers = [];\n if (self.mobileInput) {\n if (self.mobileInput.parentNode)\n self.mobileInput.parentNode.removeChild(self.mobileInput);\n self.mobileInput = undefined;\n }\n else if (self.calendarContainer && self.calendarContainer.parentNode) {\n if (self.config.static && self.calendarContainer.parentNode) {\n var wrapper = self.calendarContainer.parentNode;\n wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);\n if (wrapper.parentNode) {\n while (wrapper.firstChild)\n wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n wrapper.parentNode.removeChild(wrapper);\n }\n }\n else\n self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n }\n if (self.altInput) {\n self.input.type = \"text\";\n if (self.altInput.parentNode)\n self.altInput.parentNode.removeChild(self.altInput);\n delete self.altInput;\n }\n if (self.input) {\n self.input.type = self.input._type;\n self.input.classList.remove(\"flatpickr-input\");\n self.input.removeAttribute(\"readonly\");\n self.input.value = \"\";\n }\n [\n \"_showTimeInput\",\n \"latestSelectedDateObj\",\n \"_hideNextMonthArrow\",\n \"_hidePrevMonthArrow\",\n \"__hideNextMonthArrow\",\n \"__hidePrevMonthArrow\",\n \"isMobile\",\n \"isOpen\",\n \"selectedDateElem\",\n \"minDateHasTime\",\n \"maxDateHasTime\",\n \"days\",\n \"daysContainer\",\n \"_input\",\n \"_positionElement\",\n \"innerContainer\",\n \"rContainer\",\n \"monthNav\",\n \"todayDateElem\",\n \"calendarContainer\",\n \"weekdayContainer\",\n \"prevMonthNav\",\n \"nextMonthNav\",\n \"currentMonthElement\",\n \"currentYearElement\",\n \"navigationCurrentMonth\",\n \"selectedDateElem\",\n \"config\",\n ].forEach(function (k) {\n try {\n delete self[k];\n }\n catch (_) { }\n });\n }\n function isCalendarElem(elem) {\n if (self.config.appendTo && self.config.appendTo.contains(elem))\n return true;\n return self.calendarContainer.contains(elem);\n }\n function documentClick(e) {\n if (self.isOpen && !self.config.inline) {\n var eventTarget_1 = getEventTarget(e);\n var isCalendarElement = isCalendarElem(eventTarget_1);\n var isInput = eventTarget_1 === self.input ||\n eventTarget_1 === self.altInput ||\n self.element.contains(eventTarget_1) ||\n // web components\n // e.path is not present in all browsers. circumventing typechecks\n (e.path &&\n e.path.indexOf &&\n (~e.path.indexOf(self.input) ||\n ~e.path.indexOf(self.altInput)));\n var lostFocus = e.type === \"blur\"\n ? isInput &&\n e.relatedTarget &&\n !isCalendarElem(e.relatedTarget)\n : !isInput &&\n !isCalendarElement &&\n !isCalendarElem(e.relatedTarget);\n var isIgnored = !self.config.ignoredFocusElements.some(function (elem) {\n return elem.contains(eventTarget_1);\n });\n if (lostFocus && isIgnored) {\n self.close();\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n self.clear(false);\n self.redraw();\n }\n }\n }\n }\n function changeYear(newYear) {\n if (!newYear ||\n (self.config.minDate && newYear < self.config.minDate.getFullYear()) ||\n (self.config.maxDate && newYear > self.config.maxDate.getFullYear()))\n return;\n var newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;\n self.currentYear = newYearNum || self.currentYear;\n if (self.config.maxDate &&\n self.currentYear === self.config.maxDate.getFullYear()) {\n self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n }\n else if (self.config.minDate &&\n self.currentYear === self.config.minDate.getFullYear()) {\n self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n }\n if (isNewYear) {\n self.redraw();\n triggerEvent(\"onYearChange\");\n }\n }\n function isEnabled(date, timeless) {\n if (timeless === void 0) { timeless = true; }\n var dateToCheck = self.parseDate(date, undefined, timeless); // timeless\n if ((self.config.minDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||\n (self.config.maxDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))\n return false;\n if (self.config.enable.length === 0 && self.config.disable.length === 0)\n return true;\n if (dateToCheck === undefined)\n return false;\n var bool = self.config.enable.length > 0, array = bool ? self.config.enable : self.config.disable;\n for (var i = 0, d = void 0; i < array.length; i++) {\n d = array[i];\n if (typeof d === \"function\" &&\n d(dateToCheck) // disabled by function\n )\n return bool;\n else if (d instanceof Date &&\n dateToCheck !== undefined &&\n d.getTime() === dateToCheck.getTime())\n // disabled by date\n return bool;\n else if (typeof d === \"string\" && dateToCheck !== undefined) {\n // disabled by date string\n var parsed = self.parseDate(d, undefined, true);\n return parsed && parsed.getTime() === dateToCheck.getTime()\n ? bool\n : !bool;\n }\n else if (\n // disabled by range\n typeof d === \"object\" &&\n dateToCheck !== undefined &&\n d.from &&\n d.to &&\n dateToCheck.getTime() >= d.from.getTime() &&\n dateToCheck.getTime() <= d.to.getTime())\n return bool;\n }\n return !bool;\n }\n function isInView(elem) {\n if (self.daysContainer !== undefined)\n return (elem.className.indexOf(\"hidden\") === -1 &&\n self.daysContainer.contains(elem));\n return false;\n }\n function onKeyDown(e) {\n // e.key e.keyCode\n // \"Backspace\" 8\n // \"Tab\" 9\n // \"Enter\" 13\n // \"Escape\" (IE \"Esc\") 27\n // \"ArrowLeft\" (IE \"Left\") 37\n // \"ArrowUp\" (IE \"Up\") 38\n // \"ArrowRight\" (IE \"Right\") 39\n // \"ArrowDown\" (IE \"Down\") 40\n // \"Delete\" (IE \"Del\") 46\n var isInput = e.target === self._input;\n var allowInput = self.config.allowInput;\n var allowKeydown = self.isOpen && (!allowInput || !isInput);\n var allowInlineKeydown = self.config.inline && isInput && !allowInput;\n if (e.keyCode === 13 && isInput) {\n if (allowInput) {\n self.setDate(self._input.value, true, e.target === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n return e.target.blur();\n }\n else\n self.open();\n }\n else if (isCalendarElem(e.target) ||\n allowKeydown ||\n allowInlineKeydown) {\n var isTimeObj = !!self.timeContainer &&\n self.timeContainer.contains(e.target);\n switch (e.keyCode) {\n case 13:\n if (isTimeObj) {\n updateTime();\n focusAndClose();\n }\n else\n selectDate(e);\n break;\n case 27: // escape\n e.preventDefault();\n focusAndClose();\n break;\n case 8:\n case 46:\n if (isInput && !self.config.allowInput) {\n e.preventDefault();\n self.clear();\n }\n break;\n case 37:\n case 39:\n if (!isTimeObj) {\n e.preventDefault();\n if (self.daysContainer !== undefined &&\n (allowInput === false ||\n (document.activeElement && isInView(document.activeElement)))) {\n var delta_1 = e.keyCode === 39 ? 1 : -1;\n if (!e.ctrlKey)\n focusOnDay(undefined, delta_1);\n else {\n e.stopPropagation();\n changeMonth(delta_1);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n }\n }\n else if (self.hourElement)\n self.hourElement.focus();\n break;\n case 38:\n case 40:\n e.preventDefault();\n var delta = e.keyCode === 40 ? 1 : -1;\n if ((self.daysContainer && e.target.$i !== undefined) ||\n e.target === self.input) {\n if (e.ctrlKey) {\n e.stopPropagation();\n changeYear(self.currentYear - delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n else if (!isTimeObj)\n focusOnDay(undefined, delta * 7);\n }\n else if (self.config.enableTime) {\n if (!isTimeObj && self.hourElement)\n self.hourElement.focus();\n updateTime(e);\n self._debouncedChange();\n }\n break;\n case 9:\n if (isTimeObj) {\n var elems = [\n self.hourElement,\n self.minuteElement,\n self.secondElement,\n self.amPM,\n ].filter(function (x) { return x; });\n var i = elems.indexOf(e.target);\n if (i !== -1) {\n var target = elems[i + (e.shiftKey ? -1 : 1)];\n if (target !== undefined) {\n e.preventDefault();\n target.focus();\n }\n else if (e.shiftKey) {\n e.preventDefault();\n self._input.focus();\n }\n }\n }\n break;\n default:\n break;\n }\n }\n if (self.amPM !== undefined && e.target === self.amPM) {\n switch (e.key) {\n case self.l10n.amPM[0].charAt(0):\n case self.l10n.amPM[0].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[0];\n setHoursFromInputs();\n updateValue();\n break;\n case self.l10n.amPM[1].charAt(0):\n case self.l10n.amPM[1].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[1];\n setHoursFromInputs();\n updateValue();\n break;\n }\n }\n triggerEvent(\"onKeyDown\", e);\n }\n function onMouseOver(elem) {\n if (self.selectedDates.length !== 1 ||\n (elem &&\n (!elem.classList.contains(\"flatpickr-day\") ||\n elem.classList.contains(\"disabled\"))))\n return;\n var hoverDate = elem\n ? elem.dateObj.getTime()\n : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime()), lastDate = self.daysContainer.lastChild\n .lastChild.dateObj.getTime();\n var containsDisabled = false;\n var minRange = 0, maxRange = 0;\n for (var t = rangeStartDate; t < lastDate; t += duration.DAY) {\n if (!isEnabled(new Date(t), true)) {\n containsDisabled =\n containsDisabled || (t > rangeStartDate && t < rangeEndDate);\n if (t < initialDate && (!minRange || t > minRange))\n minRange = t;\n else if (t > initialDate && (!maxRange || t < maxRange))\n maxRange = t;\n }\n }\n for (var m = 0; m < self.config.showMonths; m++) {\n var month = self.daysContainer.children[m];\n var prevMonth = self.daysContainer.children[m - 1];\n var _loop_1 = function (i, l) {\n var dayElem = month.children[i], date = dayElem.dateObj;\n var timestamp = date.getTime();\n var outOfRange = (minRange > 0 && timestamp < minRange) ||\n (maxRange > 0 && timestamp > maxRange);\n if (outOfRange) {\n dayElem.classList.add(\"notAllowed\");\n [\"inRange\", \"startRange\", \"endRange\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n return \"continue\";\n }\n else if (containsDisabled && !outOfRange)\n return \"continue\";\n [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n if (elem !== undefined) {\n elem.classList.add(hoverDate < self.selectedDates[0].getTime()\n ? \"startRange\"\n : \"endRange\");\n if (month.contains(elem) ||\n !(m > 0 &&\n prevMonth &&\n prevMonth.lastChild.dateObj.getTime() >= timestamp)) {\n if (initialDate < hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"startRange\");\n else if (initialDate > hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"endRange\");\n if (timestamp >= minRange &&\n (maxRange === 0 || timestamp <= maxRange) &&\n isBetween(timestamp, initialDate, hoverDate))\n dayElem.classList.add(\"inRange\");\n }\n }\n };\n for (var i = 0, l = month.children.length; i < l; i++) {\n _loop_1(i, l);\n }\n }\n }\n function onResize() {\n if (self.isOpen && !self.config.static && !self.config.inline)\n positionCalendar();\n }\n function setDefaultTime() {\n self.setDate(self.config.minDate !== undefined\n ? new Date(self.config.minDate.getTime())\n : new Date(), false);\n setDefaultHours();\n updateValue();\n }\n function open(e, positionElement) {\n if (positionElement === void 0) { positionElement = self._positionElement; }\n if (self.isMobile === true) {\n if (e) {\n e.preventDefault();\n e.target && e.target.blur();\n }\n if (self.mobileInput !== undefined) {\n self.mobileInput.focus();\n self.mobileInput.click();\n }\n triggerEvent(\"onOpen\");\n return;\n }\n if (self._input.disabled || self.config.inline)\n return;\n var wasOpen = self.isOpen;\n self.isOpen = true;\n if (!wasOpen) {\n self.calendarContainer.classList.add(\"open\");\n self._input.classList.add(\"active\");\n triggerEvent(\"onOpen\");\n positionCalendar(positionElement);\n }\n if (self.config.enableTime === true && self.config.noCalendar === true) {\n if (self.selectedDates.length === 0) {\n setDefaultTime();\n }\n if (self.config.allowInput === false &&\n (e === undefined ||\n !self.timeContainer.contains(e.relatedTarget))) {\n setTimeout(function () { return self.hourElement.select(); }, 50);\n }\n }\n }\n function minMaxDateSetter(type) {\n return function (date) {\n var dateObj = (self.config[\"_\" + type + \"Date\"] = self.parseDate(date, self.config.dateFormat));\n var inverseDateObj = self.config[\"_\" + (type === \"min\" ? \"max\" : \"min\") + \"Date\"];\n if (dateObj !== undefined) {\n self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] =\n dateObj.getHours() > 0 ||\n dateObj.getMinutes() > 0 ||\n dateObj.getSeconds() > 0;\n }\n if (self.selectedDates) {\n self.selectedDates = self.selectedDates.filter(function (d) { return isEnabled(d); });\n if (!self.selectedDates.length && type === \"min\")\n setHoursFromDate(dateObj);\n updateValue();\n }\n if (self.daysContainer) {\n redraw();\n if (dateObj !== undefined)\n self.currentYearElement[type] = dateObj.getFullYear().toString();\n else\n self.currentYearElement.removeAttribute(type);\n self.currentYearElement.disabled =\n !!inverseDateObj &&\n dateObj !== undefined &&\n inverseDateObj.getFullYear() === dateObj.getFullYear();\n }\n };\n }\n function parseConfig() {\n var boolOpts = [\n \"wrap\",\n \"weekNumbers\",\n \"allowInput\",\n \"clickOpens\",\n \"time_24hr\",\n \"enableTime\",\n \"noCalendar\",\n \"altInput\",\n \"shorthandCurrentMonth\",\n \"inline\",\n \"static\",\n \"enableSeconds\",\n \"disableMobile\",\n ];\n var userConfig = __assign({}, instanceConfig, JSON.parse(JSON.stringify(element.dataset || {})));\n var formats = {};\n self.config.parseDate = userConfig.parseDate;\n self.config.formatDate = userConfig.formatDate;\n Object.defineProperty(self.config, \"enable\", {\n get: function () { return self.config._enable; },\n set: function (dates) {\n self.config._enable = parseDateRules(dates);\n }\n });\n Object.defineProperty(self.config, \"disable\", {\n get: function () { return self.config._disable; },\n set: function (dates) {\n self.config._disable = parseDateRules(dates);\n }\n });\n var timeMode = userConfig.mode === \"time\";\n if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n formats.dateFormat =\n userConfig.noCalendar || timeMode\n ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\")\n : flatpickr.defaultConfig.dateFormat +\n \" H:i\" +\n (userConfig.enableSeconds ? \":S\" : \"\");\n }\n if (userConfig.altInput &&\n (userConfig.enableTime || timeMode) &&\n !userConfig.altFormat) {\n formats.altFormat =\n userConfig.noCalendar || timeMode\n ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\")\n : flatpickr.defaultConfig.altFormat +\n (\" h:i\" + (userConfig.enableSeconds ? \":S\" : \"\") + \" K\");\n }\n Object.defineProperty(self.config, \"minDate\", {\n get: function () { return self.config._minDate; },\n set: minMaxDateSetter(\"min\")\n });\n Object.defineProperty(self.config, \"maxDate\", {\n get: function () { return self.config._maxDate; },\n set: minMaxDateSetter(\"max\")\n });\n var minMaxTimeSetter = function (type) { return function (val) {\n self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i\");\n }; };\n Object.defineProperty(self.config, \"minTime\", {\n get: function () { return self.config._minTime; },\n set: minMaxTimeSetter(\"min\")\n });\n Object.defineProperty(self.config, \"maxTime\", {\n get: function () { return self.config._maxTime; },\n set: minMaxTimeSetter(\"max\")\n });\n if (userConfig.mode === \"time\") {\n self.config.noCalendar = true;\n self.config.enableTime = true;\n }\n Object.assign(self.config, formats, userConfig);\n for (var i = 0; i < boolOpts.length; i++)\n self.config[boolOpts[i]] =\n self.config[boolOpts[i]] === true ||\n self.config[boolOpts[i]] === \"true\";\n HOOKS.filter(function (hook) { return self.config[hook] !== undefined; }).forEach(function (hook) {\n self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);\n });\n self.isMobile =\n !self.config.disableMobile &&\n !self.config.inline &&\n self.config.mode === \"single\" &&\n !self.config.disable.length &&\n !self.config.enable.length &&\n !self.config.weekNumbers &&\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n for (var i = 0; i < self.config.plugins.length; i++) {\n var pluginConf = self.config.plugins[i](self) || {};\n for (var key in pluginConf) {\n if (HOOKS.indexOf(key) > -1) {\n self.config[key] = arrayify(pluginConf[key])\n .map(bindToInstance)\n .concat(self.config[key]);\n }\n else if (typeof userConfig[key] === \"undefined\")\n self.config[key] = pluginConf[key];\n }\n }\n triggerEvent(\"onParseConfig\");\n }\n function setupLocale() {\n if (typeof self.config.locale !== \"object\" &&\n typeof flatpickr.l10ns[self.config.locale] === \"undefined\")\n self.config.errorHandler(new Error(\"flatpickr: invalid locale \" + self.config.locale));\n self.l10n = __assign({}, flatpickr.l10ns[\"default\"], (typeof self.config.locale === \"object\"\n ? self.config.locale\n : self.config.locale !== \"default\"\n ? flatpickr.l10ns[self.config.locale]\n : undefined));\n tokenRegex.K = \"(\" + self.l10n.amPM[0] + \"|\" + self.l10n.amPM[1] + \"|\" + self.l10n.amPM[0].toLowerCase() + \"|\" + self.l10n.amPM[1].toLowerCase() + \")\";\n self.formatDate = createDateFormatter(self);\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n }\n function positionCalendar(customPositionElement) {\n if (self.calendarContainer === undefined)\n return;\n triggerEvent(\"onPreCalendarPosition\");\n var positionElement = customPositionElement || self._positionElement;\n var calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, (function (acc, child) { return acc + child.offsetHeight; }), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(\" \"), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === \"above\" ||\n (configPosVertical !== \"below\" &&\n distanceFromBottom < calendarHeight &&\n inputBounds.top > calendarHeight);\n var top = window.pageYOffset +\n inputBounds.top +\n (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n toggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\n toggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\n if (self.config.inline)\n return;\n var left = window.pageXOffset +\n inputBounds.left -\n (configPosHorizontal != null && configPosHorizontal === \"center\"\n ? (calendarWidth - inputBounds.width) / 2\n : 0);\n var right = window.document.body.offsetWidth - inputBounds.right;\n var rightMost = left + calendarWidth > window.document.body.offsetWidth;\n var centerMost = right + calendarWidth > window.document.body.offsetWidth;\n toggleClass(self.calendarContainer, \"rightMost\", rightMost);\n if (self.config.static)\n return;\n self.calendarContainer.style.top = top + \"px\";\n if (!rightMost) {\n self.calendarContainer.style.left = left + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n else if (!centerMost) {\n self.calendarContainer.style.left = \"auto\";\n self.calendarContainer.style.right = right + \"px\";\n }\n else {\n var doc = document.styleSheets[0];\n // some testing environments don't have css support\n if (doc === undefined)\n return;\n var bodyWidth = window.document.body.offsetWidth;\n var centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n var centerBefore = \".flatpickr-calendar.centerMost:before\";\n var centerAfter = \".flatpickr-calendar.centerMost:after\";\n var centerIndex = doc.cssRules.length;\n var centerStyle = \"{left:\" + inputBounds.left + \"px;right:auto;}\";\n toggleClass(self.calendarContainer, \"rightMost\", false);\n toggleClass(self.calendarContainer, \"centerMost\", true);\n doc.insertRule(centerBefore + \",\" + centerAfter + centerStyle, centerIndex);\n self.calendarContainer.style.left = centerLeft + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n }\n function redraw() {\n if (self.config.noCalendar || self.isMobile)\n return;\n updateNavigationCurrentMonth();\n buildDays();\n }\n function focusAndClose() {\n self._input.focus();\n if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 ||\n navigator.msMaxTouchPoints !== undefined) {\n // hack - bugs in the way IE handles focus keeps the calendar open\n setTimeout(self.close, 0);\n }\n else {\n self.close();\n }\n }\n function selectDate(e) {\n e.preventDefault();\n e.stopPropagation();\n var isSelectable = function (day) {\n return day.classList &&\n day.classList.contains(\"flatpickr-day\") &&\n !day.classList.contains(\"disabled\") &&\n !day.classList.contains(\"notAllowed\");\n };\n var t = findParent(e.target, isSelectable);\n if (t === undefined)\n return;\n var target = t;\n var selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));\n var shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth ||\n selectedDate.getMonth() >\n self.currentMonth + self.config.showMonths - 1) &&\n self.config.mode !== \"range\";\n self.selectedDateElem = target;\n if (self.config.mode === \"single\")\n self.selectedDates = [selectedDate];\n else if (self.config.mode === \"multiple\") {\n var selectedIndex = isDateSelected(selectedDate);\n if (selectedIndex)\n self.selectedDates.splice(parseInt(selectedIndex), 1);\n else\n self.selectedDates.push(selectedDate);\n }\n else if (self.config.mode === \"range\") {\n if (self.selectedDates.length === 2) {\n self.clear(false, false);\n }\n self.latestSelectedDateObj = selectedDate;\n self.selectedDates.push(selectedDate);\n // unless selecting same date twice, sort ascendingly\n if (compareDates(selectedDate, self.selectedDates[0], true) !== 0)\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n setHoursFromInputs();\n if (shouldChangeMonth) {\n var isNewYear = self.currentYear !== selectedDate.getFullYear();\n self.currentYear = selectedDate.getFullYear();\n self.currentMonth = selectedDate.getMonth();\n if (isNewYear)\n triggerEvent(\"onYearChange\");\n triggerEvent(\"onMonthChange\");\n }\n updateNavigationCurrentMonth();\n buildDays();\n updateValue();\n if (self.config.enableTime)\n setTimeout(function () { return (self.showTimeInput = true); }, 50);\n // maintain focus\n if (!shouldChangeMonth &&\n self.config.mode !== \"range\" &&\n self.config.showMonths === 1)\n focusOnDayElem(target);\n else if (self.selectedDateElem !== undefined &&\n self.hourElement === undefined) {\n self.selectedDateElem && self.selectedDateElem.focus();\n }\n if (self.hourElement !== undefined)\n self.hourElement !== undefined && self.hourElement.focus();\n if (self.config.closeOnSelect) {\n var single = self.config.mode === \"single\" && !self.config.enableTime;\n var range = self.config.mode === \"range\" &&\n self.selectedDates.length === 2 &&\n !self.config.enableTime;\n if (single || range) {\n focusAndClose();\n }\n }\n triggerChange();\n }\n var CALLBACKS = {\n locale: [setupLocale, updateWeekdays],\n showMonths: [buildMonths, setCalendarWidth, buildWeekdays]\n };\n function set(option, value) {\n if (option !== null && typeof option === \"object\")\n Object.assign(self.config, option);\n else {\n self.config[option] = value;\n if (CALLBACKS[option] !== undefined)\n CALLBACKS[option].forEach(function (x) { return x(); });\n else if (HOOKS.indexOf(option) > -1)\n self.config[option] = arrayify(value);\n }\n self.redraw();\n updateValue(false);\n }\n function setSelectedDate(inputDate, format) {\n var dates = [];\n if (inputDate instanceof Array)\n dates = inputDate.map(function (d) { return self.parseDate(d, format); });\n else if (inputDate instanceof Date || typeof inputDate === \"number\")\n dates = [self.parseDate(inputDate, format)];\n else if (typeof inputDate === \"string\") {\n switch (self.config.mode) {\n case \"single\":\n case \"time\":\n dates = [self.parseDate(inputDate, format)];\n break;\n case \"multiple\":\n dates = inputDate\n .split(self.config.conjunction)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n case \"range\":\n dates = inputDate\n .split(self.l10n.rangeSeparator)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n default:\n break;\n }\n }\n else\n self.config.errorHandler(new Error(\"Invalid date supplied: \" + JSON.stringify(inputDate)));\n self.selectedDates = dates.filter(function (d) { return d instanceof Date && isEnabled(d, false); });\n if (self.config.mode === \"range\")\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n function setDate(date, triggerChange, format) {\n if (triggerChange === void 0) { triggerChange = false; }\n if (format === void 0) { format = self.config.dateFormat; }\n if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))\n return self.clear(triggerChange);\n setSelectedDate(date, format);\n self.showTimeInput = self.selectedDates.length > 0;\n self.latestSelectedDateObj = self.selectedDates[0];\n self.redraw();\n jumpToDate();\n setHoursFromDate();\n updateValue(triggerChange);\n if (triggerChange)\n triggerEvent(\"onChange\");\n }\n function parseDateRules(arr) {\n return arr\n .slice()\n .map(function (rule) {\n if (typeof rule === \"string\" ||\n typeof rule === \"number\" ||\n rule instanceof Date) {\n return self.parseDate(rule, undefined, true);\n }\n else if (rule &&\n typeof rule === \"object\" &&\n rule.from &&\n rule.to)\n return {\n from: self.parseDate(rule.from, undefined),\n to: self.parseDate(rule.to, undefined)\n };\n return rule;\n })\n .filter(function (x) { return x; }); // remove falsy values\n }\n function setupDates() {\n self.selectedDates = [];\n self.now = self.parseDate(self.config.now) || new Date();\n // Workaround IE11 setting placeholder as the input's value\n var preloadedDate = self.config.defaultDate ||\n ((self.input.nodeName === \"INPUT\" ||\n self.input.nodeName === \"TEXTAREA\") &&\n self.input.placeholder &&\n self.input.value === self.input.placeholder\n ? null\n : self.input.value);\n if (preloadedDate)\n setSelectedDate(preloadedDate, self.config.dateFormat);\n self._initialDate =\n self.selectedDates.length > 0\n ? self.selectedDates[0]\n : self.config.minDate &&\n self.config.minDate.getTime() > self.now.getTime()\n ? self.config.minDate\n : self.config.maxDate &&\n self.config.maxDate.getTime() < self.now.getTime()\n ? self.config.maxDate\n : self.now;\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n if (self.selectedDates.length > 0)\n self.latestSelectedDateObj = self.selectedDates[0];\n if (self.config.minTime !== undefined)\n self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n if (self.config.maxTime !== undefined)\n self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n self.minDateHasTime =\n !!self.config.minDate &&\n (self.config.minDate.getHours() > 0 ||\n self.config.minDate.getMinutes() > 0 ||\n self.config.minDate.getSeconds() > 0);\n self.maxDateHasTime =\n !!self.config.maxDate &&\n (self.config.maxDate.getHours() > 0 ||\n self.config.maxDate.getMinutes() > 0 ||\n self.config.maxDate.getSeconds() > 0);\n Object.defineProperty(self, \"showTimeInput\", {\n get: function () { return self._showTimeInput; },\n set: function (bool) {\n self._showTimeInput = bool;\n if (self.calendarContainer)\n toggleClass(self.calendarContainer, \"showTimeInput\", bool);\n self.isOpen && positionCalendar();\n }\n });\n }\n function setupInputs() {\n self.input = self.config.wrap\n ? element.querySelector(\"[data-input]\")\n : element;\n /* istanbul ignore next */\n if (!self.input) {\n self.config.errorHandler(new Error(\"Invalid input element specified\"));\n return;\n }\n // hack: store previous type to restore it after destroy()\n self.input._type = self.input.type;\n self.input.type = \"text\";\n self.input.classList.add(\"flatpickr-input\");\n self._input = self.input;\n if (self.config.altInput) {\n // replicate self.element\n self.altInput = createElement(self.input.nodeName, self.input.className + \" \" + self.config.altInputClass);\n self._input = self.altInput;\n self.altInput.placeholder = self.input.placeholder;\n self.altInput.disabled = self.input.disabled;\n self.altInput.required = self.input.required;\n self.altInput.tabIndex = self.input.tabIndex;\n self.altInput.type = \"text\";\n self.input.setAttribute(\"type\", \"hidden\");\n if (!self.config.static && self.input.parentNode)\n self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n }\n if (!self.config.allowInput)\n self._input.setAttribute(\"readonly\", \"readonly\");\n self._positionElement = self.config.positionElement || self._input;\n }\n function setupMobile() {\n var inputType = self.config.enableTime\n ? self.config.noCalendar\n ? \"time\"\n : \"datetime-local\"\n : \"date\";\n self.mobileInput = createElement(\"input\", self.input.className + \" flatpickr-mobile\");\n self.mobileInput.step = self.input.getAttribute(\"step\") || \"any\";\n self.mobileInput.tabIndex = 1;\n self.mobileInput.type = inputType;\n self.mobileInput.disabled = self.input.disabled;\n self.mobileInput.required = self.input.required;\n self.mobileInput.placeholder = self.input.placeholder;\n self.mobileFormatStr =\n inputType === \"datetime-local\"\n ? \"Y-m-d\\\\TH:i:S\"\n : inputType === \"date\"\n ? \"Y-m-d\"\n : \"H:i:S\";\n if (self.selectedDates.length > 0) {\n self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n }\n if (self.config.minDate)\n self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n if (self.config.maxDate)\n self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n self.input.type = \"hidden\";\n if (self.altInput !== undefined)\n self.altInput.type = \"hidden\";\n try {\n if (self.input.parentNode)\n self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n }\n catch (_a) { }\n bind(self.mobileInput, \"change\", function (e) {\n self.setDate(e.target.value, false, self.mobileFormatStr);\n triggerEvent(\"onChange\");\n triggerEvent(\"onClose\");\n });\n }\n function toggle(e) {\n if (self.isOpen === true)\n return self.close();\n self.open(e);\n }\n function triggerEvent(event, data) {\n // If the instance has been destroyed already, all hooks have been removed\n if (self.config === undefined)\n return;\n var hooks = self.config[event];\n if (hooks !== undefined && hooks.length > 0) {\n for (var i = 0; hooks[i] && i < hooks.length; i++)\n hooks[i](self.selectedDates, self.input.value, self, data);\n }\n if (event === \"onChange\") {\n self.input.dispatchEvent(createEvent(\"change\"));\n // many front-end frameworks bind to the input event\n self.input.dispatchEvent(createEvent(\"input\"));\n }\n }\n function createEvent(name) {\n var e = document.createEvent(\"Event\");\n e.initEvent(name, true, true);\n return e;\n }\n function isDateSelected(date) {\n for (var i = 0; i < self.selectedDates.length; i++) {\n if (compareDates(self.selectedDates[i], date) === 0)\n return \"\" + i;\n }\n return false;\n }\n function isDateInRange(date) {\n if (self.config.mode !== \"range\" || self.selectedDates.length < 2)\n return false;\n return (compareDates(date, self.selectedDates[0]) >= 0 &&\n compareDates(date, self.selectedDates[1]) <= 0);\n }\n function updateNavigationCurrentMonth() {\n if (self.config.noCalendar || self.isMobile || !self.monthNav)\n return;\n self.yearElements.forEach(function (yearElement, i) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n self.monthElements[i].textContent =\n monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) +\n \" \";\n yearElement.value = d.getFullYear().toString();\n });\n self._hidePrevMonthArrow =\n self.config.minDate !== undefined &&\n (self.currentYear === self.config.minDate.getFullYear()\n ? self.currentMonth <= self.config.minDate.getMonth()\n : self.currentYear < self.config.minDate.getFullYear());\n self._hideNextMonthArrow =\n self.config.maxDate !== undefined &&\n (self.currentYear === self.config.maxDate.getFullYear()\n ? self.currentMonth + 1 > self.config.maxDate.getMonth()\n : self.currentYear > self.config.maxDate.getFullYear());\n }\n function getDateStr(format) {\n return self.selectedDates\n .map(function (dObj) { return self.formatDate(dObj, format); })\n .filter(function (d, i, arr) {\n return self.config.mode !== \"range\" ||\n self.config.enableTime ||\n arr.indexOf(d) === i;\n })\n .join(self.config.mode !== \"range\"\n ? self.config.conjunction\n : self.l10n.rangeSeparator);\n }\n /**\n * Updates the values of inputs associated with the calendar\n */\n function updateValue(triggerChange) {\n if (triggerChange === void 0) { triggerChange = true; }\n if (self.selectedDates.length === 0)\n return self.clear(triggerChange);\n if (self.mobileInput !== undefined && self.mobileFormatStr) {\n self.mobileInput.value =\n self.latestSelectedDateObj !== undefined\n ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)\n : \"\";\n }\n self.input.value = getDateStr(self.config.dateFormat);\n if (self.altInput !== undefined) {\n self.altInput.value = getDateStr(self.config.altFormat);\n }\n if (triggerChange !== false)\n triggerEvent(\"onValueUpdate\");\n }\n function onMonthNavClick(e) {\n e.preventDefault();\n var isPrevMonth = self.prevMonthNav.contains(e.target);\n var isNextMonth = self.nextMonthNav.contains(e.target);\n if (isPrevMonth || isNextMonth) {\n changeMonth(isPrevMonth ? -1 : 1);\n }\n else if (self.yearElements.indexOf(e.target) >= 0) {\n e.target.select();\n }\n else if (e.target.classList.contains(\"arrowUp\")) {\n self.changeYear(self.currentYear + 1);\n }\n else if (e.target.classList.contains(\"arrowDown\")) {\n self.changeYear(self.currentYear - 1);\n }\n }\n function timeWrapper(e) {\n e.preventDefault();\n var isKeyDown = e.type === \"keydown\", input = e.target;\n if (self.amPM !== undefined && e.target === self.amPM) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n var min = parseFloat(input.getAttribute(\"min\")), max = parseFloat(input.getAttribute(\"max\")), step = parseFloat(input.getAttribute(\"step\")), curValue = parseInt(input.value, 10), delta = e.delta ||\n (isKeyDown ? (e.which === 38 ? 1 : -1) : 0);\n var newValue = curValue + step * delta;\n if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n var isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;\n if (newValue < min) {\n newValue =\n max +\n newValue +\n int(!isHourElem) +\n (int(isHourElem) && int(!self.amPM));\n if (isMinuteElem)\n incrementNumInput(undefined, -1, self.hourElement);\n }\n else if (newValue > max) {\n newValue =\n input === self.hourElement ? newValue - max - int(!self.amPM) : min;\n if (isMinuteElem)\n incrementNumInput(undefined, 1, self.hourElement);\n }\n if (self.amPM &&\n isHourElem &&\n (step === 1\n ? newValue + curValue === 23\n : Math.abs(newValue - curValue) > step)) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n input.value = pad(newValue);\n }\n }\n init();\n return self;\n }\n /* istanbul ignore next */\n function _flatpickr(nodeList, config) {\n // static list\n var nodes = Array.prototype.slice\n .call(nodeList)\n .filter(function (x) { return x instanceof HTMLElement; });\n var instances = [];\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n try {\n if (node.getAttribute(\"data-fp-omit\") !== null)\n continue;\n if (node._flatpickr !== undefined) {\n node._flatpickr.destroy();\n node._flatpickr = undefined;\n }\n node._flatpickr = FlatpickrInstance(node, config || {});\n instances.push(node._flatpickr);\n }\n catch (e) {\n console.error(e);\n }\n }\n return instances.length === 1 ? instances[0] : instances;\n }\n /* istanbul ignore next */\n if (typeof HTMLElement !== \"undefined\") {\n // browser env\n HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n HTMLElement.prototype.flatpickr = function (config) {\n return _flatpickr([this], config);\n };\n }\n /* istanbul ignore next */\n var flatpickr = function (selector, config) {\n if (typeof selector === \"string\") {\n return _flatpickr(window.document.querySelectorAll(selector), config);\n }\n else if (selector instanceof Node) {\n return _flatpickr([selector], config);\n }\n else {\n return _flatpickr(selector, config);\n }\n };\n /* istanbul ignore next */\n flatpickr.defaultConfig = defaults;\n flatpickr.l10ns = {\n en: __assign({}, english),\n \"default\": __assign({}, english)\n };\n flatpickr.localize = function (l10n) {\n flatpickr.l10ns[\"default\"] = __assign({}, flatpickr.l10ns[\"default\"], l10n);\n };\n flatpickr.setDefaults = function (config) {\n flatpickr.defaultConfig = __assign({}, flatpickr.defaultConfig, config);\n };\n flatpickr.parseDate = createDateParser({});\n flatpickr.formatDate = createDateFormatter({});\n flatpickr.compareDates = compareDates;\n /* istanbul ignore next */\n if (typeof jQuery !== \"undefined\") {\n jQuery.fn.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n }\n Date.prototype.fp_incr = function (days) {\n return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n };\n if (typeof window !== \"undefined\") {\n window.flatpickr = flatpickr;\n }\n\n return flatpickr;\n\n}));\n\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define('lib/flatpickr/l10n/index',['exports'], factory) :\n (global = global || self, factory(global.index = {}));\n}(this, function (exports) { 'use strict';\n\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation. All rights reserved.\r\n Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\n this file except in compliance with the License. You may obtain a copy of the\r\n License at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\n WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\n MERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\n See the Apache Version 2.0 License for specific language governing permissions\r\n and limitations under the License.\r\n ***************************************************************************** */\r\n\r\n var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n };\n\n var fp = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Arabic = {\n weekdays: {\n shorthand: [\"أحد\", \"اثنين\", \"ثلاثاء\", \"أربعاء\", \"خميس\", \"جمعة\", \"سبت\"],\n longhand: [\n \"الأحد\",\n \"الاثنين\",\n \"الثلاثاء\",\n \"الأربعاء\",\n \"الخميس\",\n \"الجمعة\",\n \"السبت\",\n ]\n },\n months: {\n shorthand: [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"11\", \"12\"],\n longhand: [\n \"يناير\",\n \"فبراير\",\n \"مارس\",\n \"أبريل\",\n \"مايو\",\n \"يونيو\",\n \"يوليو\",\n \"أغسطس\",\n \"سبتمبر\",\n \"أكتوبر\",\n \"نوفمبر\",\n \"ديسمبر\",\n ]\n }\n };\n fp.l10ns.ar = Arabic;\n fp.l10ns;\n\n var fp$1 = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Austria = {\n weekdays: {\n shorthand: [\"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\"],\n longhand: [\n \"Sonntag\",\n \"Montag\",\n \"Dienstag\",\n \"Mittwoch\",\n \"Donnerstag\",\n \"Freitag\",\n \"Samstag\",\n ]\n },\n months: {\n shorthand: [\n \"Jän\",\n \"Feb\",\n \"Mär\",\n \"Apr\",\n \"Mai\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Okt\",\n \"Nov\",\n \"Dez\",\n ],\n longhand: [\n \"Jänner\",\n \"Februar\",\n \"März\",\n \"April\",\n \"Mai\",\n \"Juni\",\n \"Juli\",\n \"August\",\n \"September\",\n \"Oktober\",\n \"November\",\n \"Dezember\",\n ]\n },\n firstDayOfWeek: 1,\n weekAbbreviation: \"KW\",\n rangeSeparator: \" bis \",\n scrollTitle: \"Zum Ändern scrollen\",\n toggleTitle: \"Zum Umschalten klicken\"\n };\n fp$1.l10ns.at = Austria;\n fp$1.l10ns;\n\n var fp$2 = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Azerbaijan = {\n weekdays: {\n shorthand: [\"Baz\", \"BzE\", \"ÇAx\", \"Çər\", \"CAx\", \"Cüm\", \"Şən\"],\n longhand: [\n \"Bazar\",\n \"Bazar ertəsi\",\n \"Çərşənbə axşamı\",\n \"Çərşənbə\",\n \"Cümə axşamı\",\n \"Cümə\",\n \"Şənbə\",\n ]\n },\n months: {\n shorthand: [\n \"Yan\",\n \"Fev\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"İyn\",\n \"İyl\",\n \"Avq\",\n \"Sen\",\n \"Okt\",\n \"Noy\",\n \"Dek\",\n ],\n longhand: [\n \"Yanvar\",\n \"Fevral\",\n \"Mart\",\n \"Aprel\",\n \"May\",\n \"İyun\",\n \"İyul\",\n \"Avqust\",\n \"Sentyabr\",\n \"Oktyabr\",\n \"Noyabr\",\n \"Dekabr\",\n ]\n },\n firstDayOfWeek: 1,\n ordinal: function () {\n return \".\";\n },\n rangeSeparator: \" - \",\n weekAbbreviation: \"Hf\",\n scrollTitle: \"Artırmaq üçün sürüşdürün\",\n toggleTitle: \"Aç / Bağla\",\n amPM: [\"GƏ\", \"GS\"]\n };\n fp$2.l10ns.az = Azerbaijan;\n fp$2.l10ns;\n\n var fp$3 = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Belarusian = {\n weekdays: {\n shorthand: [\"Нд\", \"Пн\", \"Аў\", \"Ср\", \"Чц\", \"Пт\", \"Сб\"],\n longhand: [\n \"Нядзеля\",\n \"Панядзелак\",\n \"Аўторак\",\n \"Серада\",\n \"Чацвер\",\n \"Пятніца\",\n \"Субота\",\n ]\n },\n months: {\n shorthand: [\n \"Сту\",\n \"Лют\",\n \"Сак\",\n \"Кра\",\n \"Тра\",\n \"Чэр\",\n \"Ліп\",\n \"Жні\",\n \"Вер\",\n \"Кас\",\n \"Ліс\",\n \"Сне\",\n ],\n longhand: [\n \"Студзень\",\n \"Люты\",\n \"Сакавік\",\n \"Красавік\",\n \"Травень\",\n \"Чэрвень\",\n \"Ліпень\",\n \"Жнівень\",\n \"Верасень\",\n \"Кастрычнік\",\n \"Лістапад\",\n \"Снежань\",\n ]\n },\n firstDayOfWeek: 1,\n ordinal: function () {\n return \"\";\n },\n rangeSeparator: \" — \",\n weekAbbreviation: \"Тыд.\",\n scrollTitle: \"Пракруціце для павелічэння\",\n toggleTitle: \"Націсніце для пераключэння\",\n amPM: [\"ДП\", \"ПП\"],\n yearAriaLabel: \"Год\"\n };\n fp$3.l10ns.be = Belarusian;\n fp$3.l10ns;\n\n var fp$4 = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Bulgarian = {\n weekdays: {\n shorthand: [\"Нд\", \"Пн\", \"Вт\", \"Ср\", \"Чт\", \"Пт\", \"Сб\"],\n longhand: [\n \"Неделя\",\n \"Понеделник\",\n \"Вторник\",\n \"Сряда\",\n \"Четвъртък\",\n \"Петък\",\n \"Събота\",\n ]\n },\n months: {\n shorthand: [\n \"Яну\",\n \"Фев\",\n \"Март\",\n \"Апр\",\n \"Май\",\n \"Юни\",\n \"Юли\",\n \"Авг\",\n \"Сеп\",\n \"Окт\",\n \"Ное\",\n \"Дек\",\n ],\n longhand: [\n \"Януари\",\n \"Февруари\",\n \"Март\",\n \"Април\",\n \"Май\",\n \"Юни\",\n \"Юли\",\n \"Август\",\n \"Септември\",\n \"Октомври\",\n \"Ноември\",\n \"Декември\",\n ]\n }\n };\n fp$4.l10ns.bg = Bulgarian;\n fp$4.l10ns;\n\n var fp$5 = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Bangla = {\n weekdays: {\n shorthand: [\"রবি\", \"সোম\", \"মঙ্গল\", \"বুধ\", \"বৃহস্পতি\", \"শুক্র\", \"শনি\"],\n longhand: [\n \"রবিবার\",\n \"সোমবার\",\n \"মঙ্গলবার\",\n \"বুধবার\",\n \"বৃহস্পতিবার\",\n \"শুক্রবার\",\n \"শনিবার\",\n ]\n },\n months: {\n shorthand: [\n \"জানু\",\n \"ফেব্রু\",\n \"মার্চ\",\n \"এপ্রিল\",\n \"মে\",\n \"জুন\",\n \"জুলাই\",\n \"আগ\",\n \"সেপ্টে\",\n \"অক্টো\",\n \"নভে\",\n \"ডিসে\",\n ],\n longhand: [\n \"জানুয়ারী\",\n \"ফেব্রুয়ারী\",\n \"মার্চ\",\n \"এপ্রিল\",\n \"মে\",\n \"জুন\",\n \"জুলাই\",\n \"আগস্ট\",\n \"সেপ্টেম্বর\",\n \"অক্টোবর\",\n \"নভেম্বর\",\n \"ডিসেম্বর\",\n ]\n }\n };\n fp$5.l10ns.bn = Bangla;\n fp$5.l10ns;\n\n var fp$6 = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Catalan = {\n weekdays: {\n shorthand: [\"Dg\", \"Dl\", \"Dt\", \"Dc\", \"Dj\", \"Dv\", \"Ds\"],\n longhand: [\n \"Diumenge\",\n \"Dilluns\",\n \"Dimarts\",\n \"Dimecres\",\n \"Dijous\",\n \"Divendres\",\n \"Dissabte\",\n ]\n },\n months: {\n shorthand: [\n \"Gen\",\n \"Febr\",\n \"Març\",\n \"Abr\",\n \"Maig\",\n \"Juny\",\n \"Jul\",\n \"Ag\",\n \"Set\",\n \"Oct\",\n \"Nov\",\n \"Des\",\n ],\n longhand: [\n \"Gener\",\n \"Febrer\",\n \"Març\",\n \"Abril\",\n \"Maig\",\n \"Juny\",\n \"Juliol\",\n \"Agost\",\n \"Setembre\",\n \"Octubre\",\n \"Novembre\",\n \"Desembre\",\n ]\n },\n ordinal: function (nth) {\n var s = nth % 100;\n if (s > 3 && s < 21)\n return \"è\";\n switch (s % 10) {\n case 1:\n return \"r\";\n case 2:\n return \"n\";\n case 3:\n return \"r\";\n case 4:\n return \"t\";\n default:\n return \"è\";\n }\n },\n firstDayOfWeek: 1\n };\n fp$6.l10ns.cat = Catalan;\n fp$6.l10ns;\n\n var fp$7 = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Czech = {\n weekdays: {\n shorthand: [\"Ne\", \"Po\", \"Út\", \"St\", \"Čt\", \"Pá\", \"So\"],\n longhand: [\n \"Neděle\",\n \"Pondělí\",\n \"Úterý\",\n \"Středa\",\n \"Čtvrtek\",\n \"Pátek\",\n \"Sobota\",\n ]\n },\n months: {\n shorthand: [\n \"Led\",\n \"Ún\",\n \"Bře\",\n \"Dub\",\n \"Kvě\",\n \"Čer\",\n \"Čvc\",\n \"Srp\",\n \"Zář\",\n \"Říj\",\n \"Lis\",\n \"Pro\",\n ],\n longhand: [\n \"Leden\",\n \"Únor\",\n \"Březen\",\n \"Duben\",\n \"Květen\",\n \"Červen\",\n \"Červenec\",\n \"Srpen\",\n \"Září\",\n \"Říjen\",\n \"Listopad\",\n \"Prosinec\",\n ]\n },\n firstDayOfWeek: 1,\n ordinal: function () {\n return \".\";\n },\n rangeSeparator: \" do \",\n weekAbbreviation: \"Týd.\",\n scrollTitle: \"Rolujte pro změnu\",\n toggleTitle: \"Přepnout dopoledne/odpoledne\",\n amPM: [\"dop.\", \"odp.\"],\n yearAriaLabel: \"Rok\"\n };\n fp$7.l10ns.cs = Czech;\n fp$7.l10ns;\n\n var fp$8 = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Welsh = {\n weekdays: {\n shorthand: [\"Sul\", \"Llun\", \"Maw\", \"Mer\", \"Iau\", \"Gwe\", \"Sad\"],\n longhand: [\n \"Dydd Sul\",\n \"Dydd Llun\",\n \"Dydd Mawrth\",\n \"Dydd Mercher\",\n \"Dydd Iau\",\n \"Dydd Gwener\",\n \"Dydd Sadwrn\",\n ]\n },\n months: {\n shorthand: [\n \"Ion\",\n \"Chwef\",\n \"Maw\",\n \"Ebr\",\n \"Mai\",\n \"Meh\",\n \"Gorff\",\n \"Awst\",\n \"Medi\",\n \"Hyd\",\n \"Tach\",\n \"Rhag\",\n ],\n longhand: [\n \"Ionawr\",\n \"Chwefror\",\n \"Mawrth\",\n \"Ebrill\",\n \"Mai\",\n \"Mehefin\",\n \"Gorffennaf\",\n \"Awst\",\n \"Medi\",\n \"Hydref\",\n \"Tachwedd\",\n \"Rhagfyr\",\n ]\n },\n firstDayOfWeek: 1,\n ordinal: function (nth) {\n if (nth === 1)\n return \"af\";\n if (nth === 2)\n return \"ail\";\n if (nth === 3 || nth === 4)\n return \"ydd\";\n if (nth === 5 || nth === 6)\n return \"ed\";\n if ((nth >= 7 && nth <= 10) ||\n nth == 12 ||\n nth == 15 ||\n nth == 18 ||\n nth == 20)\n return \"fed\";\n if (nth == 11 ||\n nth == 13 ||\n nth == 14 ||\n nth == 16 ||\n nth == 17 ||\n nth == 19)\n return \"eg\";\n if (nth >= 21 && nth <= 39)\n return \"ain\";\n // Inconclusive.\n return \"\";\n }\n };\n fp$8.l10ns.cy = Welsh;\n fp$8.l10ns;\n\n var fp$9 = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Danish = {\n weekdays: {\n shorthand: [\"søn\", \"man\", \"tir\", \"ons\", \"tors\", \"fre\", \"lør\"],\n longhand: [\n \"søndag\",\n \"mandag\",\n \"tirsdag\",\n \"onsdag\",\n \"torsdag\",\n \"fredag\",\n \"lørdag\",\n ]\n },\n months: {\n shorthand: [\n \"jan\",\n \"feb\",\n \"mar\",\n \"apr\",\n \"maj\",\n \"jun\",\n \"jul\",\n \"aug\",\n \"sep\",\n \"okt\",\n \"nov\",\n \"dec\",\n ],\n longhand: [\n \"januar\",\n \"februar\",\n \"marts\",\n \"april\",\n \"maj\",\n \"juni\",\n \"juli\",\n \"august\",\n \"september\",\n \"oktober\",\n \"november\",\n \"december\",\n ]\n },\n ordinal: function () {\n return \".\";\n },\n firstDayOfWeek: 1,\n rangeSeparator: \" til \",\n weekAbbreviation: \"uge\"\n };\n fp$9.l10ns.da = Danish;\n fp$9.l10ns;\n\n var fp$a = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var German = {\n weekdays: {\n shorthand: [\"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\"],\n longhand: [\n \"Sonntag\",\n \"Montag\",\n \"Dienstag\",\n \"Mittwoch\",\n \"Donnerstag\",\n \"Freitag\",\n \"Samstag\",\n ]\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mär\",\n \"Apr\",\n \"Mai\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Okt\",\n \"Nov\",\n \"Dez\",\n ],\n longhand: [\n \"Januar\",\n \"Februar\",\n \"März\",\n \"April\",\n \"Mai\",\n \"Juni\",\n \"Juli\",\n \"August\",\n \"September\",\n \"Oktober\",\n \"November\",\n \"Dezember\",\n ]\n },\n firstDayOfWeek: 1,\n weekAbbreviation: \"KW\",\n rangeSeparator: \" bis \",\n scrollTitle: \"Zum Ändern scrollen\",\n toggleTitle: \"Zum Umschalten klicken\"\n };\n fp$a.l10ns.de = German;\n fp$a.l10ns;\n\n var english = {\n weekdays: {\n shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n longhand: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ]\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n longhand: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ]\n },\n daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n firstDayOfWeek: 0,\n ordinal: function (nth) {\n var s = nth % 100;\n if (s > 3 && s < 21)\n return \"th\";\n switch (s % 10) {\n case 1:\n return \"st\";\n case 2:\n return \"nd\";\n case 3:\n return \"rd\";\n default:\n return \"th\";\n }\n },\n rangeSeparator: \" to \",\n weekAbbreviation: \"Wk\",\n scrollTitle: \"Scroll to increment\",\n toggleTitle: \"Click to toggle\",\n amPM: [\"AM\", \"PM\"],\n yearAriaLabel: \"Year\"\n };\n\n var fp$b = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Esperanto = {\n firstDayOfWeek: 1,\n rangeSeparator: \" ĝis \",\n weekAbbreviation: \"Sem\",\n scrollTitle: \"Rulumu por pligrandigi la valoron\",\n toggleTitle: \"Klaku por ŝalti\",\n weekdays: {\n shorthand: [\"Dim\", \"Lun\", \"Mar\", \"Mer\", \"Ĵaŭ\", \"Ven\", \"Sab\"],\n longhand: [\n \"dimanĉo\",\n \"lundo\",\n \"mardo\",\n \"merkredo\",\n \"ĵaŭdo\",\n \"vendredo\",\n \"sabato\",\n ]\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"Maj\",\n \"Jun\",\n \"Jul\",\n \"Aŭg\",\n \"Sep\",\n \"Okt\",\n \"Nov\",\n \"Dec\",\n ],\n longhand: [\n \"januaro\",\n \"februaro\",\n \"marto\",\n \"aprilo\",\n \"majo\",\n \"junio\",\n \"julio\",\n \"aŭgusto\",\n \"septembro\",\n \"oktobro\",\n \"novembro\",\n \"decembro\",\n ]\n },\n ordinal: function () {\n return \"-a\";\n }\n };\n fp$b.l10ns.eo = Esperanto;\n fp$b.l10ns;\n\n var fp$c = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Spanish = {\n weekdays: {\n shorthand: [\"Dom\", \"Lun\", \"Mar\", \"Mié\", \"Jue\", \"Vie\", \"Sáb\"],\n longhand: [\n \"Domingo\",\n \"Lunes\",\n \"Martes\",\n \"Miércoles\",\n \"Jueves\",\n \"Viernes\",\n \"Sábado\",\n ]\n },\n months: {\n shorthand: [\n \"Ene\",\n \"Feb\",\n \"Mar\",\n \"Abr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Ago\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dic\",\n ],\n longhand: [\n \"Enero\",\n \"Febrero\",\n \"Marzo\",\n \"Abril\",\n \"Mayo\",\n \"Junio\",\n \"Julio\",\n \"Agosto\",\n \"Septiembre\",\n \"Octubre\",\n \"Noviembre\",\n \"Diciembre\",\n ]\n },\n ordinal: function () {\n return \"º\";\n },\n firstDayOfWeek: 1,\n rangeSeparator: \" a \"\n };\n fp$c.l10ns.es = Spanish;\n fp$c.l10ns;\n\n var fp$d = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Estonian = {\n weekdays: {\n shorthand: [\"P\", \"E\", \"T\", \"K\", \"N\", \"R\", \"L\"],\n longhand: [\n \"Pühapäev\",\n \"Esmaspäev\",\n \"Teisipäev\",\n \"Kolmapäev\",\n \"Neljapäev\",\n \"Reede\",\n \"Laupäev\",\n ]\n },\n months: {\n shorthand: [\n \"Jaan\",\n \"Veebr\",\n \"Märts\",\n \"Apr\",\n \"Mai\",\n \"Juuni\",\n \"Juuli\",\n \"Aug\",\n \"Sept\",\n \"Okt\",\n \"Nov\",\n \"Dets\",\n ],\n longhand: [\n \"Jaanuar\",\n \"Veebruar\",\n \"Märts\",\n \"Aprill\",\n \"Mai\",\n \"Juuni\",\n \"Juuli\",\n \"August\",\n \"September\",\n \"Oktoober\",\n \"November\",\n \"Detsember\",\n ]\n },\n firstDayOfWeek: 1,\n ordinal: function () {\n return \".\";\n },\n weekAbbreviation: \"Näd\",\n rangeSeparator: \" kuni \",\n scrollTitle: \"Keri, et suurendada\",\n toggleTitle: \"Klõpsa, et vahetada\"\n };\n fp$d.l10ns.et = Estonian;\n fp$d.l10ns;\n\n var fp$e = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Persian = {\n weekdays: {\n shorthand: [\"یک\", \"دو\", \"سه\", \"چهار\", \"پنج\", \"جمعه\", \"شنبه\"],\n longhand: [\n \"یک‌شنبه\",\n \"دوشنبه\",\n \"سه‌شنبه\",\n \"چهارشنبه\",\n \"پنچ‌شنبه\",\n \"جمعه\",\n \"شنبه\",\n ]\n },\n months: {\n shorthand: [\n \"ژانویه\",\n \"فوریه\",\n \"مارس\",\n \"آوریل\",\n \"مه\",\n \"ژوئن\",\n \"ژوئیه\",\n \"اوت\",\n \"سپتامبر\",\n \"اکتبر\",\n \"نوامبر\",\n \"دسامبر\",\n ],\n longhand: [\n \"ژانویه\",\n \"فوریه\",\n \"مارس\",\n \"آوریل\",\n \"مه\",\n \"ژوئن\",\n \"ژوئیه\",\n \"اوت\",\n \"سپتامبر\",\n \"اکتبر\",\n \"نوامبر\",\n \"دسامبر\",\n ]\n },\n firstDayOfWeek: 6,\n ordinal: function () {\n return \"\";\n }\n };\n fp$e.l10ns.fa = Persian;\n fp$e.l10ns;\n\n var fp$f = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Finnish = {\n firstDayOfWeek: 1,\n weekdays: {\n shorthand: [\"Su\", \"Ma\", \"Ti\", \"Ke\", \"To\", \"Pe\", \"La\"],\n longhand: [\n \"Sunnuntai\",\n \"Maanantai\",\n \"Tiistai\",\n \"Keskiviikko\",\n \"Torstai\",\n \"Perjantai\",\n \"Lauantai\",\n ]\n },\n months: {\n shorthand: [\n \"Tammi\",\n \"Helmi\",\n \"Maalis\",\n \"Huhti\",\n \"Touko\",\n \"Kesä\",\n \"Heinä\",\n \"Elo\",\n \"Syys\",\n \"Loka\",\n \"Marras\",\n \"Joulu\",\n ],\n longhand: [\n \"Tammikuu\",\n \"Helmikuu\",\n \"Maaliskuu\",\n \"Huhtikuu\",\n \"Toukokuu\",\n \"Kesäkuu\",\n \"Heinäkuu\",\n \"Elokuu\",\n \"Syyskuu\",\n \"Lokakuu\",\n \"Marraskuu\",\n \"Joulukuu\",\n ]\n },\n ordinal: function () {\n return \".\";\n }\n };\n fp$f.l10ns.fi = Finnish;\n fp$f.l10ns;\n\n var fp$g = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Faroese = {\n weekdays: {\n shorthand: [\"Sun\", \"Mán\", \"Týs\", \"Mik\", \"Hós\", \"Frí\", \"Ley\"],\n longhand: [\n \"Sunnudagur\",\n \"Mánadagur\",\n \"Týsdagur\",\n \"Mikudagur\",\n \"Hósdagur\",\n \"Fríggjadagur\",\n \"Leygardagur\",\n ]\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"Mai\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Okt\",\n \"Nov\",\n \"Des\",\n ],\n longhand: [\n \"Januar\",\n \"Februar\",\n \"Mars\",\n \"Apríl\",\n \"Mai\",\n \"Juni\",\n \"Juli\",\n \"August\",\n \"Septembur\",\n \"Oktobur\",\n \"Novembur\",\n \"Desembur\",\n ]\n },\n ordinal: function () {\n return \".\";\n },\n firstDayOfWeek: 1,\n rangeSeparator: \" til \",\n weekAbbreviation: \"vika\",\n scrollTitle: \"Rulla fyri at broyta\",\n toggleTitle: \"Trýst fyri at skifta\",\n yearAriaLabel: \"Ár\"\n };\n fp$g.l10ns.fo = Faroese;\n fp$g.l10ns;\n\n var fp$h = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var French = {\n firstDayOfWeek: 1,\n weekdays: {\n shorthand: [\"dim\", \"lun\", \"mar\", \"mer\", \"jeu\", \"ven\", \"sam\"],\n longhand: [\n \"dimanche\",\n \"lundi\",\n \"mardi\",\n \"mercredi\",\n \"jeudi\",\n \"vendredi\",\n \"samedi\",\n ]\n },\n months: {\n shorthand: [\n \"janv\",\n \"févr\",\n \"mars\",\n \"avr\",\n \"mai\",\n \"juin\",\n \"juil\",\n \"août\",\n \"sept\",\n \"oct\",\n \"nov\",\n \"déc\",\n ],\n longhand: [\n \"janvier\",\n \"février\",\n \"mars\",\n \"avril\",\n \"mai\",\n \"juin\",\n \"juillet\",\n \"août\",\n \"septembre\",\n \"octobre\",\n \"novembre\",\n \"décembre\",\n ]\n },\n ordinal: function (nth) {\n if (nth > 1)\n return \"\";\n return \"er\";\n },\n rangeSeparator: \" au \",\n weekAbbreviation: \"Sem\",\n scrollTitle: \"Défiler pour augmenter la valeur\",\n toggleTitle: \"Cliquer pour basculer\"\n };\n fp$h.l10ns.fr = French;\n fp$h.l10ns;\n\n var fp$i = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Greek = {\n weekdays: {\n shorthand: [\"Κυ\", \"Δε\", \"Τρ\", \"Τε\", \"Πέ\", \"Πα\", \"Σά\"],\n longhand: [\n \"Κυριακή\",\n \"Δευτέρα\",\n \"Τρίτη\",\n \"Τετάρτη\",\n \"Πέμπτη\",\n \"Παρασκευή\",\n \"Σάββατο\",\n ]\n },\n months: {\n shorthand: [\n \"Ιαν\",\n \"Φεβ\",\n \"Μάρ\",\n \"Απρ\",\n \"Μάι\",\n \"Ιού\",\n \"Ιού\",\n \"Αύγ\",\n \"Σεπ\",\n \"Οκτ\",\n \"Νοέ\",\n \"Δεκ\",\n ],\n longhand: [\n \"Ιανουάριος\",\n \"Φεβρουάριος\",\n \"Μάρτιος\",\n \"Απρίλιος\",\n \"Μάιος\",\n \"Ιούνιος\",\n \"Ιούλιος\",\n \"Αύγουστος\",\n \"Σεπτέμβριος\",\n \"Οκτώβριος\",\n \"Νοέμβριος\",\n \"Δεκέμβριος\",\n ]\n },\n firstDayOfWeek: 1,\n ordinal: function () {\n return \"\";\n },\n weekAbbreviation: \"Εβδ\",\n rangeSeparator: \" έως \",\n scrollTitle: \"Μετακυλήστε για προσαύξηση\",\n toggleTitle: \"Κάντε κλικ για αλλαγή\",\n amPM: [\"ΠΜ\", \"ΜΜ\"]\n };\n fp$i.l10ns.gr = Greek;\n fp$i.l10ns;\n\n var fp$j = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Hebrew = {\n weekdays: {\n shorthand: [\"א\", \"ב\", \"ג\", \"ד\", \"ה\", \"ו\", \"ש\"],\n longhand: [\"ראשון\", \"שני\", \"שלישי\", \"רביעי\", \"חמישי\", \"שישי\", \"שבת\"]\n },\n months: {\n shorthand: [\n \"ינו׳\",\n \"פבר׳\",\n \"מרץ\",\n \"אפר׳\",\n \"מאי\",\n \"יוני\",\n \"יולי\",\n \"אוג׳\",\n \"ספט׳\",\n \"אוק׳\",\n \"נוב׳\",\n \"דצמ׳\",\n ],\n longhand: [\n \"ינואר\",\n \"פברואר\",\n \"מרץ\",\n \"אפריל\",\n \"מאי\",\n \"יוני\",\n \"יולי\",\n \"אוגוסט\",\n \"ספטמבר\",\n \"אוקטובר\",\n \"נובמבר\",\n \"דצמבר\",\n ]\n },\n rangeSeparator: \" אל \"\n };\n fp$j.l10ns.he = Hebrew;\n fp$j.l10ns;\n\n var fp$k = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Hindi = {\n weekdays: {\n shorthand: [\"रवि\", \"सोम\", \"मंगल\", \"बुध\", \"गुरु\", \"शुक्र\", \"शनि\"],\n longhand: [\n \"रविवार\",\n \"सोमवार\",\n \"मंगलवार\",\n \"बुधवार\",\n \"गुरुवार\",\n \"शुक्रवार\",\n \"शनिवार\",\n ]\n },\n months: {\n shorthand: [\n \"जन\",\n \"फर\",\n \"मार्च\",\n \"अप्रेल\",\n \"मई\",\n \"जून\",\n \"जूलाई\",\n \"अग\",\n \"सित\",\n \"अक्ट\",\n \"नव\",\n \"दि\",\n ],\n longhand: [\n \"जनवरी \",\n \"फरवरी\",\n \"मार्च\",\n \"अप्रेल\",\n \"मई\",\n \"जून\",\n \"जूलाई\",\n \"अगस्त \",\n \"सितम्बर\",\n \"अक्टूबर\",\n \"नवम्बर\",\n \"दिसम्बर\",\n ]\n }\n };\n fp$k.l10ns.hi = Hindi;\n fp$k.l10ns;\n\n var fp$l = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Croatian = {\n firstDayOfWeek: 1,\n weekdays: {\n shorthand: [\"Ned\", \"Pon\", \"Uto\", \"Sri\", \"Čet\", \"Pet\", \"Sub\"],\n longhand: [\n \"Nedjelja\",\n \"Ponedjeljak\",\n \"Utorak\",\n \"Srijeda\",\n \"Četvrtak\",\n \"Petak\",\n \"Subota\",\n ]\n },\n months: {\n shorthand: [\n \"Sij\",\n \"Velj\",\n \"Ožu\",\n \"Tra\",\n \"Svi\",\n \"Lip\",\n \"Srp\",\n \"Kol\",\n \"Ruj\",\n \"Lis\",\n \"Stu\",\n \"Pro\",\n ],\n longhand: [\n \"Siječanj\",\n \"Veljača\",\n \"Ožujak\",\n \"Travanj\",\n \"Svibanj\",\n \"Lipanj\",\n \"Srpanj\",\n \"Kolovoz\",\n \"Rujan\",\n \"Listopad\",\n \"Studeni\",\n \"Prosinac\",\n ]\n }\n };\n fp$l.l10ns.hr = Croatian;\n fp$l.l10ns;\n\n var fp$m = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Hungarian = {\n firstDayOfWeek: 1,\n weekdays: {\n shorthand: [\"V\", \"H\", \"K\", \"Sz\", \"Cs\", \"P\", \"Szo\"],\n longhand: [\n \"Vasárnap\",\n \"Hétfő\",\n \"Kedd\",\n \"Szerda\",\n \"Csütörtök\",\n \"Péntek\",\n \"Szombat\",\n ]\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Már\",\n \"Ápr\",\n \"Máj\",\n \"Jún\",\n \"Júl\",\n \"Aug\",\n \"Szep\",\n \"Okt\",\n \"Nov\",\n \"Dec\",\n ],\n longhand: [\n \"Január\",\n \"Február\",\n \"Március\",\n \"Április\",\n \"Május\",\n \"Június\",\n \"Július\",\n \"Augusztus\",\n \"Szeptember\",\n \"Október\",\n \"November\",\n \"December\",\n ]\n },\n ordinal: function () {\n return \".\";\n },\n weekAbbreviation: \"Hét\",\n scrollTitle: \"Görgessen\",\n toggleTitle: \"Kattintson a váltáshoz\",\n rangeSeparator: \" - \"\n };\n fp$m.l10ns.hu = Hungarian;\n fp$m.l10ns;\n\n var fp$n = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Indonesian = {\n weekdays: {\n shorthand: [\"Min\", \"Sen\", \"Sel\", \"Rab\", \"Kam\", \"Jum\", \"Sab\"],\n longhand: [\"Minggu\", \"Senin\", \"Selasa\", \"Rabu\", \"Kamis\", \"Jumat\", \"Sabtu\"]\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"Mei\",\n \"Jun\",\n \"Jul\",\n \"Agu\",\n \"Sep\",\n \"Okt\",\n \"Nov\",\n \"Des\",\n ],\n longhand: [\n \"Januari\",\n \"Februari\",\n \"Maret\",\n \"April\",\n \"Mei\",\n \"Juni\",\n \"Juli\",\n \"Agustus\",\n \"September\",\n \"Oktober\",\n \"November\",\n \"Desember\",\n ]\n },\n firstDayOfWeek: 1,\n ordinal: function () {\n return \"\";\n }\n };\n fp$n.l10ns.id = Indonesian;\n fp$n.l10ns;\n\n var fp$o = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Icelandic = {\n weekdays: {\n shorthand: [\"Sun\", \"Mán\", \"Þri\", \"Mið\", \"Fim\", \"Fös\", \"Lau\"],\n longhand: [\n \"Sunnudagur\",\n \"Mánudagur\",\n \"Þriðjudagur\",\n \"Miðvikudagur\",\n \"Fimmtudagur\",\n \"Föstudagur\",\n \"Laugardagur\",\n ]\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"Maí\",\n \"Jún\",\n \"Júl\",\n \"Ágú\",\n \"Sep\",\n \"Okt\",\n \"Nóv\",\n \"Des\",\n ],\n longhand: [\n \"Janúar\",\n \"Febrúar\",\n \"Mars\",\n \"Apríl\",\n \"Maí\",\n \"Júní\",\n \"Júlí\",\n \"Ágúst\",\n \"September\",\n \"Október\",\n \"Nóvember\",\n \"Desember\",\n ]\n },\n ordinal: function () {\n return \".\";\n },\n firstDayOfWeek: 1,\n rangeSeparator: \" til \",\n weekAbbreviation: \"vika\",\n yearAriaLabel: \"Ár\"\n };\n fp$o.l10ns.is = Icelandic;\n fp$o.l10ns;\n\n var fp$p = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Italian = {\n weekdays: {\n shorthand: [\"Dom\", \"Lun\", \"Mar\", \"Mer\", \"Gio\", \"Ven\", \"Sab\"],\n longhand: [\n \"Domenica\",\n \"Lunedì\",\n \"Martedì\",\n \"Mercoledì\",\n \"Giovedì\",\n \"Venerdì\",\n \"Sabato\",\n ]\n },\n months: {\n shorthand: [\n \"Gen\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"Mag\",\n \"Giu\",\n \"Lug\",\n \"Ago\",\n \"Set\",\n \"Ott\",\n \"Nov\",\n \"Dic\",\n ],\n longhand: [\n \"Gennaio\",\n \"Febbraio\",\n \"Marzo\",\n \"Aprile\",\n \"Maggio\",\n \"Giugno\",\n \"Luglio\",\n \"Agosto\",\n \"Settembre\",\n \"Ottobre\",\n \"Novembre\",\n \"Dicembre\",\n ]\n },\n firstDayOfWeek: 1,\n ordinal: function () { return \"°\"; },\n rangeSeparator: \" al \",\n weekAbbreviation: \"Se\",\n scrollTitle: \"Scrolla per aumentare\",\n toggleTitle: \"Clicca per cambiare\"\n };\n fp$p.l10ns.it = Italian;\n fp$p.l10ns;\n\n var fp$q = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Japanese = {\n weekdays: {\n shorthand: [\"日\", \"月\", \"火\", \"水\", \"木\", \"金\", \"土\"],\n longhand: [\n \"日曜日\",\n \"月曜日\",\n \"火曜日\",\n \"水曜日\",\n \"木曜日\",\n \"金曜日\",\n \"土曜日\",\n ]\n },\n months: {\n shorthand: [\n \"1月\",\n \"2月\",\n \"3月\",\n \"4月\",\n \"5月\",\n \"6月\",\n \"7月\",\n \"8月\",\n \"9月\",\n \"10月\",\n \"11月\",\n \"12月\",\n ],\n longhand: [\n \"1月\",\n \"2月\",\n \"3月\",\n \"4月\",\n \"5月\",\n \"6月\",\n \"7月\",\n \"8月\",\n \"9月\",\n \"10月\",\n \"11月\",\n \"12月\",\n ]\n }\n };\n fp$q.l10ns.ja = Japanese;\n fp$q.l10ns;\n\n var fp$r = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Korean = {\n weekdays: {\n shorthand: [\"일\", \"월\", \"화\", \"수\", \"목\", \"금\", \"토\"],\n longhand: [\n \"일요일\",\n \"월요일\",\n \"화요일\",\n \"수요일\",\n \"목요일\",\n \"금요일\",\n \"토요일\",\n ]\n },\n months: {\n shorthand: [\n \"1월\",\n \"2월\",\n \"3월\",\n \"4월\",\n \"5월\",\n \"6월\",\n \"7월\",\n \"8월\",\n \"9월\",\n \"10월\",\n \"11월\",\n \"12월\",\n ],\n longhand: [\n \"1월\",\n \"2월\",\n \"3월\",\n \"4월\",\n \"5월\",\n \"6월\",\n \"7월\",\n \"8월\",\n \"9월\",\n \"10월\",\n \"11월\",\n \"12월\",\n ]\n },\n ordinal: function () {\n return \"일\";\n }\n };\n fp$r.l10ns.ko = Korean;\n fp$r.l10ns;\n\n var fp$s = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Khmer = {\n weekdays: {\n shorthand: [\"អាទិត្យ\", \"ចន្ទ\", \"អង្គារ\", \"ពុធ\", \"ព្រហស.\", \"សុក្រ\", \"សៅរ៍\"],\n longhand: [\n \"អាទិត្យ\",\n \"ចន្ទ\",\n \"អង្គារ\",\n \"ពុធ\",\n \"ព្រហស្បតិ៍\",\n \"សុក្រ\",\n \"សៅរ៍\",\n ]\n },\n months: {\n shorthand: [\n \"មករា\",\n \"កុម្ភះ\",\n \"មីនា\",\n \"មេសា\",\n \"ឧសភា\",\n \"មិថុនា\",\n \"កក្កដា\",\n \"សីហា\",\n \"កញ្ញា\",\n \"តុលា\",\n \"វិច្ឆិកា\",\n \"ធ្នូ\",\n ],\n longhand: [\n \"មករា\",\n \"កុម្ភះ\",\n \"មីនា\",\n \"មេសា\",\n \"ឧសភា\",\n \"មិថុនា\",\n \"កក្កដា\",\n \"សីហា\",\n \"កញ្ញា\",\n \"តុលា\",\n \"វិច្ឆិកា\",\n \"ធ្នូ\",\n ]\n },\n ordinal: function () {\n return \"\";\n },\n firstDayOfWeek: 1,\n rangeSeparator: \" ដល់ \",\n weekAbbreviation: \"សប្តាហ៍\",\n scrollTitle: \"រំកិលដើម្បីបង្កើន\",\n toggleTitle: \"ចុចដើម្បីផ្លាស់ប្ដូរ\",\n yearAriaLabel: \"ឆ្នាំ\"\n };\n fp$s.l10ns.km = Khmer;\n fp$s.l10ns;\n\n var fp$t = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Kazakh = {\n weekdays: {\n shorthand: [\"Жс\", \"Дс\", \"Сc\", \"Ср\", \"Бс\", \"Жм\", \"Сб\"],\n longhand: [\n \"Жексенбi\",\n \"Дүйсенбi\",\n \"Сейсенбi\",\n \"Сәрсенбi\",\n \"Бейсенбi\",\n \"Жұма\",\n \"Сенбi\",\n ]\n },\n months: {\n shorthand: [\n \"Қаң\",\n \"Ақп\",\n \"Нау\",\n \"Сәу\",\n \"Мам\",\n \"Мау\",\n \"Шiл\",\n \"Там\",\n \"Қыр\",\n \"Қаз\",\n \"Қар\",\n \"Жел\",\n ],\n longhand: [\n \"Қаңтар\",\n \"Ақпан\",\n \"Наурыз\",\n \"Сәуiр\",\n \"Мамыр\",\n \"Маусым\",\n \"Шiлде\",\n \"Тамыз\",\n \"Қыркүйек\",\n \"Қазан\",\n \"Қараша\",\n \"Желтоқсан\",\n ]\n },\n firstDayOfWeek: 1,\n ordinal: function () {\n return \"\";\n },\n rangeSeparator: \" — \",\n weekAbbreviation: \"Апта\",\n scrollTitle: \"Үлкейту үшін айналдырыңыз\",\n toggleTitle: \"Ауыстыру үшін басыңыз\",\n amPM: [\"ТД\", \"ТК\"],\n yearAriaLabel: \"Жыл\"\n };\n fp$t.l10ns.kz = Kazakh;\n fp$t.l10ns;\n\n var fp$u = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Lithuanian = {\n weekdays: {\n shorthand: [\"S\", \"Pr\", \"A\", \"T\", \"K\", \"Pn\", \"Š\"],\n longhand: [\n \"Sekmadienis\",\n \"Pirmadienis\",\n \"Antradienis\",\n \"Trečiadienis\",\n \"Ketvirtadienis\",\n \"Penktadienis\",\n \"Šeštadienis\",\n ]\n },\n months: {\n shorthand: [\n \"Sau\",\n \"Vas\",\n \"Kov\",\n \"Bal\",\n \"Geg\",\n \"Bir\",\n \"Lie\",\n \"Rgp\",\n \"Rgs\",\n \"Spl\",\n \"Lap\",\n \"Grd\",\n ],\n longhand: [\n \"Sausis\",\n \"Vasaris\",\n \"Kovas\",\n \"Balandis\",\n \"Gegužė\",\n \"Birželis\",\n \"Liepa\",\n \"Rugpjūtis\",\n \"Rugsėjis\",\n \"Spalis\",\n \"Lapkritis\",\n \"Gruodis\",\n ]\n },\n firstDayOfWeek: 1,\n ordinal: function () {\n return \"-a\";\n },\n weekAbbreviation: \"Sav\",\n scrollTitle: \"Keisti laiką pelės rateliu\",\n toggleTitle: \"Perjungti laiko formatą\"\n };\n fp$u.l10ns.lt = Lithuanian;\n fp$u.l10ns;\n\n var fp$v = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Latvian = {\n firstDayOfWeek: 1,\n weekdays: {\n shorthand: [\"Sv\", \"Pr\", \"Ot\", \"Tr\", \"Ce\", \"Pk\", \"Se\"],\n longhand: [\n \"Svētdiena\",\n \"Pirmdiena\",\n \"Otrdiena\",\n \"Trešdiena\",\n \"Ceturtdiena\",\n \"Piektdiena\",\n \"Sestdiena\",\n ]\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"Mai\",\n \"Jūn\",\n \"Jūl\",\n \"Aug\",\n \"Sep\",\n \"Okt\",\n \"Nov\",\n \"Dec\",\n ],\n longhand: [\n \"Janvāris\",\n \"Februāris\",\n \"Marts\",\n \"Aprīlis\",\n \"Maijs\",\n \"Jūnijs\",\n \"Jūlijs\",\n \"Augusts\",\n \"Septembris\",\n \"Oktobris\",\n \"Novembris\",\n \"Decembris\",\n ]\n },\n rangeSeparator: \" līdz \"\n };\n fp$v.l10ns.lv = Latvian;\n fp$v.l10ns;\n\n var fp$w = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Macedonian = {\n weekdays: {\n shorthand: [\"Не\", \"По\", \"Вт\", \"Ср\", \"Че\", \"Пе\", \"Са\"],\n longhand: [\n \"Недела\",\n \"Понеделник\",\n \"Вторник\",\n \"Среда\",\n \"Четврток\",\n \"Петок\",\n \"Сабота\",\n ]\n },\n months: {\n shorthand: [\n \"Јан\",\n \"Фев\",\n \"Мар\",\n \"Апр\",\n \"Мај\",\n \"Јун\",\n \"Јул\",\n \"Авг\",\n \"Сеп\",\n \"Окт\",\n \"Ное\",\n \"Дек\",\n ],\n longhand: [\n \"Јануари\",\n \"Февруари\",\n \"Март\",\n \"Април\",\n \"Мај\",\n \"Јуни\",\n \"Јули\",\n \"Август\",\n \"Септември\",\n \"Октомври\",\n \"Ноември\",\n \"Декември\",\n ]\n },\n firstDayOfWeek: 1,\n weekAbbreviation: \"Нед.\",\n rangeSeparator: \" до \"\n };\n fp$w.l10ns.mk = Macedonian;\n fp$w.l10ns;\n\n var fp$x = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Mongolian = {\n firstDayOfWeek: 1,\n weekdays: {\n shorthand: [\"Да\", \"Мя\", \"Лх\", \"Пү\", \"Ба\", \"Бя\", \"Ня\"],\n longhand: [\"Даваа\", \"Мягмар\", \"Лхагва\", \"Пүрэв\", \"Баасан\", \"Бямба\", \"Ням\"]\n },\n months: {\n shorthand: [\n \"1-р сар\",\n \"2-р сар\",\n \"3-р сар\",\n \"4-р сар\",\n \"5-р сар\",\n \"6-р сар\",\n \"7-р сар\",\n \"8-р сар\",\n \"9-р сар\",\n \"10-р сар\",\n \"11-р сар\",\n \"12-р сар\",\n ],\n longhand: [\n \"Нэгдүгээр сар\",\n \"Хоёрдугаар сар\",\n \"Гуравдугаар сар\",\n \"Дөрөвдүгээр сар\",\n \"Тавдугаар сар\",\n \"Зургаадугаар сар\",\n \"Долдугаар сар\",\n \"Наймдугаар сар\",\n \"Есдүгээр сар\",\n \"Аравдугаар сар\",\n \"Арваннэгдүгээр сар\",\n \"Арванхоёрдугаар сар\",\n ]\n },\n rangeSeparator: \"-с \"\n };\n fp$x.l10ns.mn = Mongolian;\n fp$x.l10ns;\n\n var fp$y = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Malaysian = {\n weekdays: {\n shorthand: [\"Min\", \"Isn\", \"Sel\", \"Rab\", \"Kha\", \"Jum\", \"Sab\"],\n longhand: [\n \"Minggu\",\n \"Isnin\",\n \"Selasa\",\n \"Rabu\",\n \"Khamis\",\n \"Jumaat\",\n \"Sabtu\",\n ]\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mac\",\n \"Apr\",\n \"Mei\",\n \"Jun\",\n \"Jul\",\n \"Ogo\",\n \"Sep\",\n \"Okt\",\n \"Nov\",\n \"Dis\",\n ],\n longhand: [\n \"Januari\",\n \"Februari\",\n \"Mac\",\n \"April\",\n \"Mei\",\n \"Jun\",\n \"Julai\",\n \"Ogos\",\n \"September\",\n \"Oktober\",\n \"November\",\n \"Disember\",\n ]\n },\n firstDayOfWeek: 1,\n ordinal: function () {\n return \"\";\n }\n };\n fp$y.l10ns;\n\n var fp$z = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Burmese = {\n weekdays: {\n shorthand: [\"နွေ\", \"လာ\", \"ဂါ\", \"ဟူး\", \"ကြာ\", \"သော\", \"နေ\"],\n longhand: [\n \"တနင်္ဂနွေ\",\n \"တနင်္လာ\",\n \"အင်္ဂါ\",\n \"ဗုဒ္ဓဟူး\",\n \"ကြာသပတေး\",\n \"သောကြာ\",\n \"စနေ\",\n ]\n },\n months: {\n shorthand: [\n \"ဇန်\",\n \"ဖေ\",\n \"မတ်\",\n \"ပြီ\",\n \"မေ\",\n \"ဇွန်\",\n \"လိုင်\",\n \"သြ\",\n \"စက်\",\n \"အောက်\",\n \"နို\",\n \"ဒီ\",\n ],\n longhand: [\n \"ဇန်နဝါရီ\",\n \"ဖေဖော်ဝါရီ\",\n \"မတ်\",\n \"ဧပြီ\",\n \"မေ\",\n \"ဇွန်\",\n \"ဇူလိုင်\",\n \"သြဂုတ်\",\n \"စက်တင်ဘာ\",\n \"အောက်တိုဘာ\",\n \"နိုဝင်ဘာ\",\n \"ဒီဇင်ဘာ\",\n ]\n },\n firstDayOfWeek: 1,\n ordinal: function () {\n return \"\";\n }\n };\n fp$z.l10ns.my = Burmese;\n fp$z.l10ns;\n\n var fp$A = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Dutch = {\n weekdays: {\n shorthand: [\"zo\", \"ma\", \"di\", \"wo\", \"do\", \"vr\", \"za\"],\n longhand: [\n \"zondag\",\n \"maandag\",\n \"dinsdag\",\n \"woensdag\",\n \"donderdag\",\n \"vrijdag\",\n \"zaterdag\",\n ]\n },\n months: {\n shorthand: [\n \"jan\",\n \"feb\",\n \"mrt\",\n \"apr\",\n \"mei\",\n \"jun\",\n \"jul\",\n \"aug\",\n \"sept\",\n \"okt\",\n \"nov\",\n \"dec\",\n ],\n longhand: [\n \"januari\",\n \"februari\",\n \"maart\",\n \"april\",\n \"mei\",\n \"juni\",\n \"juli\",\n \"augustus\",\n \"september\",\n \"oktober\",\n \"november\",\n \"december\",\n ]\n },\n firstDayOfWeek: 1,\n weekAbbreviation: \"wk\",\n rangeSeparator: \" tot \",\n scrollTitle: \"Scroll voor volgende / vorige\",\n toggleTitle: \"Klik om te wisselen\",\n ordinal: function (nth) {\n if (nth === 1 || nth === 8 || nth >= 20)\n return \"ste\";\n return \"de\";\n }\n };\n fp$A.l10ns.nl = Dutch;\n fp$A.l10ns;\n\n var fp$B = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Norwegian = {\n weekdays: {\n shorthand: [\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"],\n longhand: [\n \"Søndag\",\n \"Mandag\",\n \"Tirsdag\",\n \"Onsdag\",\n \"Torsdag\",\n \"Fredag\",\n \"Lørdag\",\n ]\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"Mai\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Okt\",\n \"Nov\",\n \"Des\",\n ],\n longhand: [\n \"Januar\",\n \"Februar\",\n \"Mars\",\n \"April\",\n \"Mai\",\n \"Juni\",\n \"Juli\",\n \"August\",\n \"September\",\n \"Oktober\",\n \"November\",\n \"Desember\",\n ]\n },\n firstDayOfWeek: 1,\n rangeSeparator: \" til \",\n weekAbbreviation: \"Uke\",\n scrollTitle: \"Scroll for å endre\",\n toggleTitle: \"Klikk for å veksle\",\n ordinal: function () {\n return \".\";\n }\n };\n fp$B.l10ns.no = Norwegian;\n fp$B.l10ns;\n\n var fp$C = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Punjabi = {\n weekdays: {\n shorthand: [\"ਐਤ\", \"ਸੋਮ\", \"ਮੰਗਲ\", \"ਬੁੱਧ\", \"ਵੀਰ\", \"ਸ਼ੁੱਕਰ\", \"ਸ਼ਨਿੱਚਰ\"],\n longhand: [\n \"ਐਤਵਾਰ\",\n \"ਸੋਮਵਾਰ\",\n \"ਮੰਗਲਵਾਰ\",\n \"ਬੁੱਧਵਾਰ\",\n \"ਵੀਰਵਾਰ\",\n \"ਸ਼ੁੱਕਰਵਾਰ\",\n \"ਸ਼ਨਿੱਚਰਵਾਰ\",\n ]\n },\n months: {\n shorthand: [\n \"ਜਨ\",\n \"ਫ਼ਰ\",\n \"ਮਾਰ\",\n \"ਅਪ੍ਰੈ\",\n \"ਮਈ\",\n \"ਜੂਨ\",\n \"ਜੁਲਾ\",\n \"ਅਗ\",\n \"ਸਤੰ\",\n \"ਅਕ\",\n \"ਨਵੰ\",\n \"ਦਸੰ\",\n ],\n longhand: [\n \"ਜਨਵਰੀ\",\n \"ਫ਼ਰਵਰੀ\",\n \"ਮਾਰਚ\",\n \"ਅਪ੍ਰੈਲ\",\n \"ਮਈ\",\n \"ਜੂਨ\",\n \"ਜੁਲਾਈ\",\n \"ਅਗਸਤ\",\n \"ਸਤੰਬਰ\",\n \"ਅਕਤੂਬਰ\",\n \"ਨਵੰਬਰ\",\n \"ਦਸੰਬਰ\",\n ]\n }\n };\n fp$C.l10ns.pa = Punjabi;\n fp$C.l10ns;\n\n var fp$D = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Polish = {\n weekdays: {\n shorthand: [\"Nd\", \"Pn\", \"Wt\", \"Śr\", \"Cz\", \"Pt\", \"So\"],\n longhand: [\n \"Niedziela\",\n \"Poniedziałek\",\n \"Wtorek\",\n \"Środa\",\n \"Czwartek\",\n \"Piątek\",\n \"Sobota\",\n ]\n },\n months: {\n shorthand: [\n \"Sty\",\n \"Lut\",\n \"Mar\",\n \"Kwi\",\n \"Maj\",\n \"Cze\",\n \"Lip\",\n \"Sie\",\n \"Wrz\",\n \"Paź\",\n \"Lis\",\n \"Gru\",\n ],\n longhand: [\n \"Styczeń\",\n \"Luty\",\n \"Marzec\",\n \"Kwiecień\",\n \"Maj\",\n \"Czerwiec\",\n \"Lipiec\",\n \"Sierpień\",\n \"Wrzesień\",\n \"Październik\",\n \"Listopad\",\n \"Grudzień\",\n ]\n },\n rangeSeparator: \" do \",\n weekAbbreviation: \"tydz.\",\n scrollTitle: \"Przwiń aby zwiększyć\",\n toggleTitle: \"Kliknij aby przełączyć\",\n firstDayOfWeek: 1,\n ordinal: function () {\n return \".\";\n }\n };\n fp$D.l10ns.pl = Polish;\n fp$D.l10ns;\n\n var fp$E = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Portuguese = {\n weekdays: {\n shorthand: [\"Dom\", \"Seg\", \"Ter\", \"Qua\", \"Qui\", \"Sex\", \"Sáb\"],\n longhand: [\n \"Domingo\",\n \"Segunda-feira\",\n \"Terça-feira\",\n \"Quarta-feira\",\n \"Quinta-feira\",\n \"Sexta-feira\",\n \"Sábado\",\n ]\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Fev\",\n \"Mar\",\n \"Abr\",\n \"Mai\",\n \"Jun\",\n \"Jul\",\n \"Ago\",\n \"Set\",\n \"Out\",\n \"Nov\",\n \"Dez\",\n ],\n longhand: [\n \"Janeiro\",\n \"Fevereiro\",\n \"Março\",\n \"Abril\",\n \"Maio\",\n \"Junho\",\n \"Julho\",\n \"Agosto\",\n \"Setembro\",\n \"Outubro\",\n \"Novembro\",\n \"Dezembro\",\n ]\n },\n rangeSeparator: \" até \"\n };\n fp$E.l10ns.pt = Portuguese;\n fp$E.l10ns;\n\n var fp$F = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Romanian = {\n weekdays: {\n shorthand: [\"Dum\", \"Lun\", \"Mar\", \"Mie\", \"Joi\", \"Vin\", \"Sam\"],\n longhand: [\n \"Duminică\",\n \"Luni\",\n \"Marți\",\n \"Miercuri\",\n \"Joi\",\n \"Vineri\",\n \"Sâmbătă\",\n ]\n },\n months: {\n shorthand: [\n \"Ian\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"Mai\",\n \"Iun\",\n \"Iul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Noi\",\n \"Dec\",\n ],\n longhand: [\n \"Ianuarie\",\n \"Februarie\",\n \"Martie\",\n \"Aprilie\",\n \"Mai\",\n \"Iunie\",\n \"Iulie\",\n \"August\",\n \"Septembrie\",\n \"Octombrie\",\n \"Noiembrie\",\n \"Decembrie\",\n ]\n },\n firstDayOfWeek: 1,\n ordinal: function () {\n return \"\";\n }\n };\n fp$F.l10ns.ro = Romanian;\n fp$F.l10ns;\n\n var fp$G = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Russian = {\n weekdays: {\n shorthand: [\"Вс\", \"Пн\", \"Вт\", \"Ср\", \"Чт\", \"Пт\", \"Сб\"],\n longhand: [\n \"Воскресенье\",\n \"Понедельник\",\n \"Вторник\",\n \"Среда\",\n \"Четверг\",\n \"Пятница\",\n \"Суббота\",\n ]\n },\n months: {\n shorthand: [\n \"Янв\",\n \"Фев\",\n \"Март\",\n \"Апр\",\n \"Май\",\n \"Июнь\",\n \"Июль\",\n \"Авг\",\n \"Сен\",\n \"Окт\",\n \"Ноя\",\n \"Дек\",\n ],\n longhand: [\n \"Январь\",\n \"Февраль\",\n \"Март\",\n \"Апрель\",\n \"Май\",\n \"Июнь\",\n \"Июль\",\n \"Август\",\n \"Сентябрь\",\n \"Октябрь\",\n \"Ноябрь\",\n \"Декабрь\",\n ]\n },\n firstDayOfWeek: 1,\n ordinal: function () {\n return \"\";\n },\n rangeSeparator: \" — \",\n weekAbbreviation: \"Нед.\",\n scrollTitle: \"Прокрутите для увеличения\",\n toggleTitle: \"Нажмите для переключения\",\n amPM: [\"ДП\", \"ПП\"],\n yearAriaLabel: \"Год\"\n };\n fp$G.l10ns.ru = Russian;\n fp$G.l10ns;\n\n var fp$H = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Sinhala = {\n weekdays: {\n shorthand: [\"ඉ\", \"ස\", \"අ\", \"බ\", \"බ්‍ර\", \"සි\", \"සෙ\"],\n longhand: [\n \"ඉරිදා\",\n \"සඳුදා\",\n \"අඟහරුවාදා\",\n \"බදාදා\",\n \"බ්‍රහස්පතින්දා\",\n \"සිකුරාදා\",\n \"සෙනසුරාදා\",\n ]\n },\n months: {\n shorthand: [\n \"ජන\",\n \"පෙබ\",\n \"මාර්\",\n \"අප්‍රේ\",\n \"මැයි\",\n \"ජුනි\",\n \"ජූලි\",\n \"අගෝ\",\n \"සැප්\",\n \"ඔක්\",\n \"නොවැ\",\n \"දෙසැ\",\n ],\n longhand: [\n \"ජනවාරි\",\n \"පෙබරවාරි\",\n \"මාර්තු\",\n \"අප්‍රේල්\",\n \"මැයි\",\n \"ජුනි\",\n \"ජූලි\",\n \"අගෝස්තු\",\n \"සැප්තැම්බර්\",\n \"ඔක්තෝබර්\",\n \"නොවැම්බර්\",\n \"දෙසැම්බර්\",\n ]\n }\n };\n fp$H.l10ns.si = Sinhala;\n fp$H.l10ns;\n\n var fp$I = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Slovak = {\n weekdays: {\n shorthand: [\"Ned\", \"Pon\", \"Ut\", \"Str\", \"Štv\", \"Pia\", \"Sob\"],\n longhand: [\n \"Nedeľa\",\n \"Pondelok\",\n \"Utorok\",\n \"Streda\",\n \"Štvrtok\",\n \"Piatok\",\n \"Sobota\",\n ]\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"Máj\",\n \"Jún\",\n \"Júl\",\n \"Aug\",\n \"Sep\",\n \"Okt\",\n \"Nov\",\n \"Dec\",\n ],\n longhand: [\n \"Január\",\n \"Február\",\n \"Marec\",\n \"Apríl\",\n \"Máj\",\n \"Jún\",\n \"Júl\",\n \"August\",\n \"September\",\n \"Október\",\n \"November\",\n \"December\",\n ]\n },\n firstDayOfWeek: 1,\n rangeSeparator: \" do \",\n ordinal: function () {\n return \".\";\n }\n };\n fp$I.l10ns.sk = Slovak;\n fp$I.l10ns;\n\n var fp$J = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Slovenian = {\n weekdays: {\n shorthand: [\"Ned\", \"Pon\", \"Tor\", \"Sre\", \"Čet\", \"Pet\", \"Sob\"],\n longhand: [\n \"Nedelja\",\n \"Ponedeljek\",\n \"Torek\",\n \"Sreda\",\n \"Četrtek\",\n \"Petek\",\n \"Sobota\",\n ]\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"Maj\",\n \"Jun\",\n \"Jul\",\n \"Avg\",\n \"Sep\",\n \"Okt\",\n \"Nov\",\n \"Dec\",\n ],\n longhand: [\n \"Januar\",\n \"Februar\",\n \"Marec\",\n \"April\",\n \"Maj\",\n \"Junij\",\n \"Julij\",\n \"Avgust\",\n \"September\",\n \"Oktober\",\n \"November\",\n \"December\",\n ]\n },\n firstDayOfWeek: 1,\n rangeSeparator: \" do \",\n ordinal: function () {\n return \".\";\n }\n };\n fp$J.l10ns.sl = Slovenian;\n fp$J.l10ns;\n\n var fp$K = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Albanian = {\n weekdays: {\n shorthand: [\"Di\", \"Hë\", \"Ma\", \"Më\", \"En\", \"Pr\", \"Sh\"],\n longhand: [\n \"E Diel\",\n \"E Hënë\",\n \"E Martë\",\n \"E Mërkurë\",\n \"E Enjte\",\n \"E Premte\",\n \"E Shtunë\",\n ]\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Shk\",\n \"Mar\",\n \"Pri\",\n \"Maj\",\n \"Qer\",\n \"Kor\",\n \"Gus\",\n \"Sht\",\n \"Tet\",\n \"Nën\",\n \"Dhj\",\n ],\n longhand: [\n \"Janar\",\n \"Shkurt\",\n \"Mars\",\n \"Prill\",\n \"Maj\",\n \"Qershor\",\n \"Korrik\",\n \"Gusht\",\n \"Shtator\",\n \"Tetor\",\n \"Nëntor\",\n \"Dhjetor\",\n ]\n }\n };\n fp$K.l10ns.sq = Albanian;\n fp$K.l10ns;\n\n var fp$L = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Serbian = {\n weekdays: {\n shorthand: [\"Ned\", \"Pon\", \"Uto\", \"Sre\", \"Čet\", \"Pet\", \"Sub\"],\n longhand: [\n \"Nedelja\",\n \"Ponedeljak\",\n \"Utorak\",\n \"Sreda\",\n \"Četvrtak\",\n \"Petak\",\n \"Subota\",\n ]\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"Maj\",\n \"Jun\",\n \"Jul\",\n \"Avg\",\n \"Sep\",\n \"Okt\",\n \"Nov\",\n \"Dec\",\n ],\n longhand: [\n \"Januar\",\n \"Februar\",\n \"Mart\",\n \"April\",\n \"Maj\",\n \"Jun\",\n \"Jul\",\n \"Avgust\",\n \"Septembar\",\n \"Oktobar\",\n \"Novembar\",\n \"Decembar\",\n ]\n },\n firstDayOfWeek: 1,\n weekAbbreviation: \"Ned.\",\n rangeSeparator: \" do \"\n };\n fp$L.l10ns.sr = Serbian;\n fp$L.l10ns;\n\n var fp$M = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Swedish = {\n firstDayOfWeek: 1,\n weekAbbreviation: \"v\",\n weekdays: {\n shorthand: [\"Sön\", \"Mån\", \"Tis\", \"Ons\", \"Tor\", \"Fre\", \"Lör\"],\n longhand: [\n \"Söndag\",\n \"Måndag\",\n \"Tisdag\",\n \"Onsdag\",\n \"Torsdag\",\n \"Fredag\",\n \"Lördag\",\n ]\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"Maj\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Okt\",\n \"Nov\",\n \"Dec\",\n ],\n longhand: [\n \"Januari\",\n \"Februari\",\n \"Mars\",\n \"April\",\n \"Maj\",\n \"Juni\",\n \"Juli\",\n \"Augusti\",\n \"September\",\n \"Oktober\",\n \"November\",\n \"December\",\n ]\n },\n ordinal: function () {\n return \".\";\n }\n };\n fp$M.l10ns.sv = Swedish;\n fp$M.l10ns;\n\n var fp$N = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Thai = {\n weekdays: {\n shorthand: [\"อา\", \"จ\", \"อ\", \"พ\", \"พฤ\", \"ศ\", \"ส\"],\n longhand: [\n \"อาทิตย์\",\n \"จันทร์\",\n \"อังคาร\",\n \"พุธ\",\n \"พฤหัสบดี\",\n \"ศุกร์\",\n \"เสาร์\",\n ]\n },\n months: {\n shorthand: [\n \"ม.ค.\",\n \"ก.พ.\",\n \"มี.ค.\",\n \"เม.ย.\",\n \"พ.ค.\",\n \"มิ.ย.\",\n \"ก.ค.\",\n \"ส.ค.\",\n \"ก.ย.\",\n \"ต.ค.\",\n \"พ.ย.\",\n \"ธ.ค.\",\n ],\n longhand: [\n \"มกราคม\",\n \"กุมภาพันธ์\",\n \"มีนาคม\",\n \"เมษายน\",\n \"พฤษภาคม\",\n \"มิถุนายน\",\n \"กรกฎาคม\",\n \"สิงหาคม\",\n \"กันยายน\",\n \"ตุลาคม\",\n \"พฤศจิกายน\",\n \"ธันวาคม\",\n ]\n },\n firstDayOfWeek: 1,\n rangeSeparator: \" ถึง \",\n scrollTitle: \"เลื่อนเพื่อเพิ่มหรือลด\",\n toggleTitle: \"คลิกเพื่อเปลี่ยน\",\n ordinal: function () {\n return \"\";\n }\n };\n fp$N.l10ns.th = Thai;\n fp$N.l10ns;\n\n var fp$O = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Turkish = {\n weekdays: {\n shorthand: [\"Paz\", \"Pzt\", \"Sal\", \"Çar\", \"Per\", \"Cum\", \"Cmt\"],\n longhand: [\n \"Pazar\",\n \"Pazartesi\",\n \"Salı\",\n \"Çarşamba\",\n \"Perşembe\",\n \"Cuma\",\n \"Cumartesi\",\n ]\n },\n months: {\n shorthand: [\n \"Oca\",\n \"Şub\",\n \"Mar\",\n \"Nis\",\n \"May\",\n \"Haz\",\n \"Tem\",\n \"Ağu\",\n \"Eyl\",\n \"Eki\",\n \"Kas\",\n \"Ara\",\n ],\n longhand: [\n \"Ocak\",\n \"Şubat\",\n \"Mart\",\n \"Nisan\",\n \"Mayıs\",\n \"Haziran\",\n \"Temmuz\",\n \"Ağustos\",\n \"Eylül\",\n \"Ekim\",\n \"Kasım\",\n \"Aralık\",\n ]\n },\n firstDayOfWeek: 1,\n ordinal: function () {\n return \".\";\n },\n rangeSeparator: \" - \",\n weekAbbreviation: \"Hf\",\n scrollTitle: \"Artırmak için kaydırın\",\n toggleTitle: \"Aç/Kapa\",\n amPM: [\"ÖÖ\", \"ÖS\"]\n };\n fp$O.l10ns.tr = Turkish;\n fp$O.l10ns;\n\n var fp$P = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Ukrainian = {\n firstDayOfWeek: 1,\n weekdays: {\n shorthand: [\"Нд\", \"Пн\", \"Вт\", \"Ср\", \"Чт\", \"Пт\", \"Сб\"],\n longhand: [\n \"Неділя\",\n \"Понеділок\",\n \"Вівторок\",\n \"Середа\",\n \"Четвер\",\n \"П'ятниця\",\n \"Субота\",\n ]\n },\n months: {\n shorthand: [\n \"Січ\",\n \"Лют\",\n \"Бер\",\n \"Кві\",\n \"Тра\",\n \"Чер\",\n \"Лип\",\n \"Сер\",\n \"Вер\",\n \"Жов\",\n \"Лис\",\n \"Гру\",\n ],\n longhand: [\n \"Січень\",\n \"Лютий\",\n \"Березень\",\n \"Квітень\",\n \"Травень\",\n \"Червень\",\n \"Липень\",\n \"Серпень\",\n \"Вересень\",\n \"Жовтень\",\n \"Листопад\",\n \"Грудень\",\n ]\n }\n };\n fp$P.l10ns.uk = Ukrainian;\n fp$P.l10ns;\n\n var fp$Q = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Vietnamese = {\n weekdays: {\n shorthand: [\"CN\", \"T2\", \"T3\", \"T4\", \"T5\", \"T6\", \"T7\"],\n longhand: [\n \"Chủ nhật\",\n \"Thứ hai\",\n \"Thứ ba\",\n \"Thứ tư\",\n \"Thứ năm\",\n \"Thứ sáu\",\n \"Thứ bảy\",\n ]\n },\n months: {\n shorthand: [\n \"Th1\",\n \"Th2\",\n \"Th3\",\n \"Th4\",\n \"Th5\",\n \"Th6\",\n \"Th7\",\n \"Th8\",\n \"Th9\",\n \"Th10\",\n \"Th11\",\n \"Th12\",\n ],\n longhand: [\n \"Tháng một\",\n \"Tháng hai\",\n \"Tháng ba\",\n \"Tháng tư\",\n \"Tháng năm\",\n \"Tháng sáu\",\n \"Tháng bảy\",\n \"Tháng tám\",\n \"Tháng chín\",\n \"Tháng mười\",\n \"Tháng 11\",\n \"Tháng 12\",\n ]\n },\n firstDayOfWeek: 1\n };\n fp$Q.l10ns.vn = Vietnamese;\n fp$Q.l10ns;\n\n var fp$R = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var Mandarin = {\n weekdays: {\n shorthand: [\"周日\", \"周一\", \"周二\", \"周三\", \"周四\", \"周五\", \"周六\"],\n longhand: [\n \"星期日\",\n \"星期一\",\n \"星期二\",\n \"星期三\",\n \"星期四\",\n \"星期五\",\n \"星期六\",\n ]\n },\n months: {\n shorthand: [\n \"一月\",\n \"二月\",\n \"三月\",\n \"四月\",\n \"五月\",\n \"六月\",\n \"七月\",\n \"八月\",\n \"九月\",\n \"十月\",\n \"十一月\",\n \"十二月\",\n ],\n longhand: [\n \"一月\",\n \"二月\",\n \"三月\",\n \"四月\",\n \"五月\",\n \"六月\",\n \"七月\",\n \"八月\",\n \"九月\",\n \"十月\",\n \"十一月\",\n \"十二月\",\n ]\n },\n rangeSeparator: \" 至 \",\n weekAbbreviation: \"周\",\n scrollTitle: \"滚动切换\",\n toggleTitle: \"点击切换 12/24 小时时制\"\n };\n fp$R.l10ns.zh = Mandarin;\n fp$R.l10ns;\n\n var fp$S = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {}\n };\n var MandarinTraditional = {\n weekdays: {\n shorthand: [\"週日\", \"週一\", \"週二\", \"週三\", \"週四\", \"週五\", \"週六\"],\n longhand: [\n \"星期日\",\n \"星期一\",\n \"星期二\",\n \"星期三\",\n \"星期四\",\n \"星期五\",\n \"星期六\",\n ]\n },\n months: {\n shorthand: [\n \"一月\",\n \"二月\",\n \"三月\",\n \"四月\",\n \"五月\",\n \"六月\",\n \"七月\",\n \"八月\",\n \"九月\",\n \"十月\",\n \"十一月\",\n \"十二月\",\n ],\n longhand: [\n \"一月\",\n \"二月\",\n \"三月\",\n \"四月\",\n \"五月\",\n \"六月\",\n \"七月\",\n \"八月\",\n \"九月\",\n \"十月\",\n \"十一月\",\n \"十二月\",\n ]\n },\n rangeSeparator: \" 至 \",\n weekAbbreviation: \"週\",\n scrollTitle: \"滾動切換\",\n toggleTitle: \"點擊切換 12/24 小時時制\"\n };\n fp$S.l10ns.zh_tw = MandarinTraditional;\n fp$S.l10ns;\n\n var l10n = {\n ar: Arabic,\n at: Austria,\n az: Azerbaijan,\n be: Belarusian,\n bg: Bulgarian,\n bn: Bangla,\n cat: Catalan,\n cs: Czech,\n cy: Welsh,\n da: Danish,\n de: German,\n \"default\": __assign({}, english),\n en: english,\n eo: Esperanto,\n es: Spanish,\n et: Estonian,\n fa: Persian,\n fi: Finnish,\n fo: Faroese,\n fr: French,\n gr: Greek,\n he: Hebrew,\n hi: Hindi,\n hr: Croatian,\n hu: Hungarian,\n id: Indonesian,\n is: Icelandic,\n it: Italian,\n ja: Japanese,\n ko: Korean,\n km: Khmer,\n kz: Kazakh,\n lt: Lithuanian,\n lv: Latvian,\n mk: Macedonian,\n mn: Mongolian,\n ms: Malaysian,\n my: Burmese,\n nl: Dutch,\n no: Norwegian,\n pa: Punjabi,\n pl: Polish,\n pt: Portuguese,\n ro: Romanian,\n ru: Russian,\n si: Sinhala,\n sk: Slovak,\n sl: Slovenian,\n sq: Albanian,\n sr: Serbian,\n sv: Swedish,\n th: Thai,\n tr: Turkish,\n uk: Ukrainian,\n vn: Vietnamese,\n zh: Mandarin,\n zh_tw: MandarinTraditional\n };\n\n exports.default = l10n;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n\n","\ndefine('css!lib/flatpickr/flatpickr',[],function(){});\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2015-2019 (original work) Open Assessment Technologies SA ;\n *\n */\n\n/**\n * UiForm class enable you to manage form elements, initialize form component and bind common events\n *\n * @author Bertrand Chevrier, <bertrand.chevrier@tudor.lu>\n */\n define('uiForm',[\n 'module',\n 'jquery',\n 'lodash',\n 'i18n',\n 'helpers',\n 'context',\n 'form/property',\n 'form/post-render-props',\n 'form/depends-on-property',\n 'util/encode',\n 'ckeditor',\n 'ui/ckeditor/ckConfigurator',\n 'ui/datetime/picker',\n 'ui/dialog/confirmDelete',\n 'core/request',\n 'util/url',\n], function (\n module,\n $,\n _,\n __,\n helpers,\n context,\n property,\n postRenderProps,\n dependsOn,\n encode,\n ckeditor,\n ckConfigurator,\n dateTimePicker,\n confirmDialog,\n request,\n urlUtil,\n) {\n 'use strict';\n\n /**\n * Create a URL based on action and module\n *\n * @param action\n * @returns {string}\n */\n var getUrl = function getUrl(action) {\n var conf = module.config();\n return context.root_url + conf.extension + '/' + conf.module + '/' + action;\n };\n\n var UiForm = {\n\n /**\n * Keep references to CkEditor instances, per field\n */\n htmlEditors : {},\n\n init: function init() {\n var self = this;\n\n $('body').off('change', 'input[value=notEmpty]').on('change', 'input[value=notEmpty]', function(event) {\n let primaryPropertyUri = $(event.target).closest('[id^=\"property_\"]').attr('id').replace('property_', '');\n const secondaryProperties = $(`option[value=${primaryPropertyUri}][selected='selected']`).closest('[id^=\"property_\"]');\n let secondaryPropertiesCheckbox = secondaryProperties.find('[value=notEmpty]');\n\n secondaryPropertiesCheckbox.each((i, notEmptyCheckbox) => {\n if (event.target.checked) {\n notEmptyCheckbox.disabled = false;\n } else {\n notEmptyCheckbox.disabled = true;\n notEmptyCheckbox.checked = false;\n }\n })\n });\n\n this.counter = 0;\n this.initGenerisFormPattern = new RegExp(['add', 'edit', 'mode', 'PropertiesAuthoring'].join('|'), 'i');\n this.initTranslationFormPattern = /translate/;\n this.htmlEditors = {};\n\n $(document).ajaxComplete(function (event, request, settings) {\n var testedUrl;\n\n //initialize regarding the requested action\n //async request waiting for html or not defined\n if (settings.dataType === 'html' || !settings.dataType) {\n if (settings.url.indexOf('?') !== -1) {\n testedUrl = settings.url.substr(0, settings.url.indexOf('?'));\n }\n else {\n testedUrl = settings.url;\n }\n\n self.initRendering();\n self.initElements();\n if (self.initGenerisFormPattern.test(testedUrl)) {\n self.initOntoForms();\n }\n if (self.initTranslationFormPattern.test(testedUrl)) {\n self.initTranslationForm();\n }\n }\n });\n this.initRendering();\n },\n\n /**\n * make some adjustment on the forms\n */\n initRendering: function initRendering() {\n\n var self = this;\n\n var $container = $('.content-block .xhtml_form:first'),\n $toolBar = $container.find('.form-toolbar'),\n $authoringBtn = $('.authoringOpener'),\n $authoringBtnParent,\n $testAuthoringBtn = $('.test-authoring'),\n $rdfImportForm = $('.rdfImport #import'),\n $rdfExportForm = $('.rdfExport #export');\n\n // allows to fix label position for list of radio buttons\n $('.form_desc ~.form_radlst').parent().addClass('bool-list');\n\n // allows long labels if the following input is hidden\n $('.form_desc + input[type=\"hidden\"]').prev().addClass('hidden-input-label');\n\n // move authoring button to toolbar, unless it is already there\n if($authoringBtn.length && !$authoringBtn.hasClass('btn-info')) {\n $authoringBtnParent = $authoringBtn.parent();\n $authoringBtn.prepend($('<span>', { 'class': 'icon-edit' }));\n $authoringBtn.addClass('btn-info small');\n $authoringBtn.appendTo($toolBar);\n $authoringBtnParent.remove();\n }\n\n // move test authoring button\n if($testAuthoringBtn.length) {\n $testAuthoringBtn.prependTo($toolBar);\n }\n\n // import Ontology styling changes\n if($rdfImportForm.length) {\n $('span.form_desc:empty',$rdfImportForm).hide();\n $('span.form-elt-info',$rdfImportForm).css({\n display: 'block',\n width: '100%'\n });\n $('.form-elt-container.file-uploader',$rdfImportForm).css({\n width: '65%',\n float: 'right'\n });\n\n }\n if($rdfExportForm.length){\n $('div:first',$rdfExportForm).find('input[type=\"text\"]').css('width', 'calc(65% - 23px)');\n $('div:not(.form-toolbar):last span',$rdfExportForm).css('float', 'right')\n .closest('div')\n .find('[id*=\"ns_filter\"]')\n .addClass('btn-default small');\n }\n\n $('body').off('submit','.xhtml_form form').on('submit', '.xhtml_form form', function (e) {\n var $form = $(this);\n e.preventDefault();\n\n return self.submitForm($form, self.getFormData($form));\n });\n\n $('.form-submitter').off('click').on('click', function (e) {\n e.preventDefault();\n $(this).addClass('current-submitter');\n $(e.target).closest('.xhtml_form form').trigger('submit');\n });\n\n // modify properties\n postRenderProps.init();\n },\n\n /**\n * Retrieve form fields and pack to internal format for transfering\n * @param {jQueryElement} $form\n * @returns {object|undefined}\n */\n getFormData: function getFormData($form) {\n var formData = {};\n var clazz = {};\n var properties = [];\n var indexes = [];\n\n //for backward compatibility\n if (!$('[id=\"tao.forms.class\"]').length) {\n return;\n }\n\n //get all global data\n $('input.global', $form[0]).each(function () {\n var $global = $(this);\n var name = $global.attr('name');\n if (name.indexOf('class_') > -1) {\n name = name.replace('class_', '');\n clazz[name] = $global.val();\n\n }\n else {\n formData[name] = $global.val();\n }\n });\n if (clazz.length !== 0) {\n formData.class = clazz;\n }\n\n //get data for each property\n $('.regular-property', $form[0]).each(function () {\n var property = {};\n var name = '',\n isArray = false;\n\n //get range on advanced mode\n var range = [];\n $('[id*=\"http_2_www_0_w3_0_org_1_2000_1_01_1_rdf-schema_3_range-TreeBox\"]', this).find('.checked').each(function () {\n range.push($(this).parent().attr('id'));\n });\n if (range.length !== 0) {\n property['http_2_www_0_w3_0_org_1_2000_1_01_1_rdf-schema_3_range'] = range;\n }\n\n $(':input.property', this).each(function () {\n var $property = $(this);\n name = $property.attr('name').replace(/(property_)?[^_]+_/, '');\n\n isArray = (name.indexOf('[]') === name.length - 2);\n if ($property.attr('type') === 'checkbox' && isArray) {\n name = name.substr(0, name.length - 2);\n if ($property.is(':checked')) {\n if (!_.isArray(property[name])) {\n property[name] = [];\n }\n property[name].push($property.val());\n }\n\n } else if ($property.attr('type') === 'radio') {\n if ($property.is(':checked')) {\n property[name] = $property.val();\n }\n }\n else {\n property[name] = $property.val();\n }\n\n });\n //get data for each index\n $(':input.index', this).each(function () {\n\n var i;\n var found = false;\n var name = '';\n var $index = $(this);\n for (i in indexes) {\n if (indexes[i] && $index.attr('data-related-index') === indexes[i].uri) {\n name = $index.attr('name').replace(/(index_)?[^_]+_/, '');\n if ($index.attr('type') === 'radio' || $index.attr('type') === 'checkbox') {\n if ($index.is(':checked')) {\n indexes[i][name] = $index.val();\n }\n }\n else {\n indexes[i][name] = $index.val();\n }\n\n found = true;\n }\n }\n if (!found) {\n var index = {};\n index.uri = $index.attr('data-related-index');\n name = $index.attr('name').replace(/(index_)?[^_]+_/, '');\n if ($index.attr('type') === 'radio') {\n if ($index.is(':checked')) {\n index[name] = $index.val();\n }\n }\n else {\n index[name] = $index.val();\n }\n indexes.push(index);\n }\n\n\n });\n //add indexes to related property\n property.indexes = indexes;\n properties.push(property);\n });\n\n formData.properties = properties;\n\n return formData;\n },\n\n initElements: function initElements() {\n var self = this;\n var $uriElm;\n var $classUriElm;\n\n //revert form button\n $(\".form-refresher\").off('click').on('click', function () {\n var $form = $(this).parents('form');\n $(\":input[name='\" + $form.attr('name') + \"_sent']\").remove();\n\n return $form.submit();\n });\n\n //translate button\n $uriElm = $(\"#uri\"),\n $classUriElm = $(\"#classUri\");\n\n $(\".form-translator\").off('click').on('click', function () {\n if ( $uriElm.length && $classUriElm.length) {\n helpers.getMainContainer().load(getUrl('translateInstance'), {'uri': $uriElm.val(), 'classUri': $classUriElm.val()});\n }\n return false;\n });\n\n //map the wysiwyg editor to the html-area fields\n $('.html-area').each(function () {\n var propertyUri = this.id;\n\n // destroy previously created editors\n if (ckeditor.instances[propertyUri]) {\n ckeditor.instances[propertyUri].destroy(this);\n delete self.htmlEditors[propertyUri];\n }\n\n var editor = ckeditor.replace(this);\n editor.config = ckConfigurator.getConfig(editor, 'htmlField', {resize_enabled : false });\n self.htmlEditors[propertyUri] = editor;\n });\n\n $('.datepicker-input').each(function(){\n dateTimePicker($(this).parent(), {\n replaceField : this,\n setup : 'datetime',\n controlButtons : true\n });\n });\n\n $('.box-checker').off('click').on('click', function () {\n var $checker = $(this);\n var regexpId = new RegExp('^' + $checker.prop('id').replace('_checker', ''), 'i');\n\n if ($checker.hasClass('box-checker-uncheck')) {\n $(\":checkbox:not(:disabled)\").each(function () {\n if (regexpId.test(this.id)) {\n //noinspection JSPotentiallyInvalidUsageOfThis,JSPotentiallyInvalidUsageOfThis\n this.checked = false;\n $(this).change();\n }\n });\n $checker.removeClass('box-checker-uncheck');\n $checker.text(__('Check all'));\n }\n else {\n $(\":checkbox:not(:disabled)\").each(function () {\n if (regexpId.test(this.id)) {\n this.checked = true;\n $(this).change();\n }\n });\n $checker.addClass('box-checker-uncheck');\n $checker.text(__('Uncheck all'));\n }\n\n return false;\n });\n },\n\n /**\n * init special forms controls\n */\n initOntoForms: function () {\n\n\n //open the authoring tool on the authoringOpener button\n $('.authoringOpener').click(function () {\n var tabUrl = getUrl('authoring'),\n tabId = 'panel-' + module.config().module.toLowerCase() + '_authoring',\n $tabContainer = $('#tabs'),\n $panel = (function() {\n var $wantedPanel = $tabContainer.find('#' + tabId);\n\n if(!$wantedPanel.length) {\n $wantedPanel = $('<div>', { id: tabId, 'class': 'clear content-panel' }).hide();\n $tabContainer.find('.content-panel').after($wantedPanel);\n }\n return $wantedPanel;\n }());\n\n $.ajax({\n type: \"GET\",\n url: tabUrl,\n data: {\n uri: $(\"#uri\").val(),\n classUri: $(\"#classUri\").val()\n },\n dataType: 'html',\n success: function (responseHtml) {\n $tabContainer.find('.content-panel').not($panel).hide();\n window.location.hash = tabId;\n responseHtml = $(responseHtml);\n responseHtml.find('#authoringBack').click(function () {\n var $myPanel = $(this).parents('.content-panel'),\n $otherPanel = $myPanel.prev();\n $myPanel.hide();\n $otherPanel.show();\n });\n $panel.html(responseHtml).show();\n }\n });\n });\n\n $('input.editVersionedFile').each(function () {\n var infoUrl = context.root_url + 'tao/File/getPropertyFileInfo';\n var data = {\n 'uri': $(\"#uri\").val(),\n 'propertyUri': $(this).siblings('label.form_desc').prop('for')\n };\n var $_this = $(this);\n $.ajax({\n type: \"GET\",\n url: infoUrl,\n data: data,\n dataType: 'json',\n success: function (r) {\n $_this.after('<span>' + r.name + '</span>');\n }\n });\n }).click(function () {\n var data = {\n 'uri': $(\"#uri\").val(),\n 'propertyUri': $(this).siblings('label.form_desc').prop('for')\n };\n\n helpers.getMainContainer().load(getUrl('editVersionedFile'), data);\n return false;\n });\n\n function buildClassPropertiesAuthoringURL(action) {\n const shownExtensions = context.shownExtension;\n\n let extension = 'tao';\n let controller = 'PropertiesAuthoring';\n\n if (shownExtensions === 'taoItems') {\n extension = shownExtensions;\n controller = 'Items';\n }\n\n return helpers._url(action, controller, extension);\n }\n\n /**\n * Validate if property has a dependency\n */\n async function checkForDependency(propertyUri) {\n try {\n const url = urlUtil.route('getDependentProperties', 'PropertyValues', 'tao', { propertyUri })\n const response = await request({ url, method: 'GET', dataType: 'json'})\n if (response.success && response.data) { return response.data; }\n else { throw response; }\n } catch (err) {\n console.error(err);\n return null;\n }\n }\n\n function regularConfirmantion() {\n return window.confirm(__('Please confirm property deletion!')); \n }\n\n async function getPropertyRemovalConfirmation($groupNode, uri) {\n const dependencies = await checkForDependency(uri);\n\n return new Promise((resolve, reject) => {\n if (!dependencies.length) {\n return regularConfirmantion() ? resolve() : reject();\n } else {\n const name = $groupNode.find('.property-heading-label')[0].innerText;\n const dependantPropName = dependencies.reduce((prev, next, index) => {\n const delimiter = index === dependencies.length - 1 ? '' : ', '\n return prev + `${next.label}${delimiter}`;\n }, '');\n\n confirmDialog(\n `<b>${name}</b>\n ${__('currently has a dependency established with ')}\n <b>${dependantPropName}</b>.\n ${__('Deleting this property will also remove the dependency')}. \n <br><br> ${__('Are you wish to delete it')}?`,\n resolve,\n reject\n );\n }\n })\n }\n\n /**\n * remove a form group, ie. a property\n */\n async function removePropertyGroup() {\n const $groupNode = $(this).closest(\".form-group\");\n try {\n await getPropertyRemovalConfirmation($groupNode, $(this).data(\"uri\"));\n } catch (err) { return; } \n \n property.remove(\n $(this).data(\"uri\"),\n $(\"#id\").val(),\n buildClassPropertiesAuthoringURL('removeClassProperty'),\n function() {\n $groupNode.remove();\n }\n );\n\n document.getElementById('item-class-schema').click();\n }\n\n //property delete button\n $(\".property-deleter\").off('click').on('click', removePropertyGroup);\n\n //property add button\n $(\".property-adder\").off('click').on('click', function (e) {\n e.preventDefault();\n\n property.add($(\"#id\").val(), buildClassPropertiesAuthoringURL('addClassProperty'));\n });\n\n $(\".index-adder\").off('click').on('click', function (e) {\n e.preventDefault();\n var $prependTo = $(this).closest('div');\n var $groupNode = $(this).closest(\".form-group\");\n if ($groupNode.length) {\n var max = 0;\n var $propertyindex = $('.property-uri', $groupNode);\n var propertyindex = parseInt($propertyindex.attr('id').replace(/[\\D]+/, ''));\n\n\n $groupNode.find('[data-index]').each(function(){\n if(max < $(this).data('index')){\n max = $(this).data('index');\n }\n });\n\n max = max + 1;\n var uri = $groupNode.find('.property-uri').val();\n $.ajax({\n type: \"GET\",\n url: helpers._url('addPropertyIndex', 'PropertiesAuthoring', 'tao'),\n data: {uri : uri, index : max, propertyIndex : propertyindex},\n dataType: 'json',\n success: function (response) {\n $prependTo.before(response.form);\n }\n });\n }\n });\n\n $('.property-edit-container').off('click', '.index-remover').on('click', '.index-remover', function(e){\n e.preventDefault();\n var $groupNode = $(this).closest(\".form-group\");\n var uri = $groupNode.find('.property-uri').val();\n\n var $editContainer = $($groupNode[0]).children('.property-edit-container');\n $.ajax({\n type: \"POST\",\n url: helpers._url('removePropertyIndex', 'PropertiesAuthoring', 'tao'),\n data: {uri : uri, indexProperty : $(this).attr('id')},\n dataType: 'json',\n success: function (response) {\n var $toRemove = $('[id*=\"'+response.id+'\"], [data-related-index=\"'+response.id+'\"]');\n $toRemove.each(function(){\n var $currentTarget = $(this);\n while(!_.isEqual($currentTarget.parent()[0], $editContainer[0]) && $currentTarget.parent()[0] !== undefined){\n $currentTarget = $currentTarget.parent();\n }\n $currentTarget.remove();\n });\n }\n });\n });\n\n $(\".property-mode\").off('click').on('click', function () {\n var $btn = $(this);\n var mode = 'simple';\n var url;\n\n if ($btn.hasClass('disabled')) {\n return;\n }\n\n if ($btn.hasClass('property-mode-advanced')) {\n mode = 'advanced';\n }\n url = $btn.parents('form').prop('action');\n\n helpers.getMainContainer().load(url, {\n 'property_mode': mode,\n 'uri': $(\"#uri\").val(),\n 'id': $(\"#id\").val(),\n 'classUri': $(\"#classUri\").val()\n });\n\n return false;\n });\n\n /**\n * display or not the list regarding the property type\n */\n function showPropertyList(e, isInit) {\n var $this = $(this);\n var $elt = $this.parent(\"div\").next(\"div\");\n var propertiesTypes = ['list','tree'];\n\n var re = new RegExp(propertiesTypes.join('$|').concat('$'));\n if (re.test($this.val())) {\n if ($elt.css('display') === 'none') {\n $elt.show();\n $elt.find('select').removeAttr('disabled');\n }\n }\n else if ($elt.css('display') !== 'none') {\n $elt.css('display', 'none');\n $elt.find('select').prop('disabled', false);\n $elt.find('select option[value=\" \"]').attr('selected', 'selected').trigger('change');\n }\n\n $.each(propertiesTypes, function (i, rangedPropertyName) {\n var re = new RegExp(rangedPropertyName + '$');\n if (re.test($this.val())) {\n const $propValuesSelect = $elt.find('select');\n const propValue = $propValuesSelect.val();\n $propValuesSelect.html($elt.closest('.property-edit-container').find('.' + rangedPropertyName + '-template').html());\n const $selectedInTemplate = $propValuesSelect.find('option[selected]');\n\n if (!propValue || !propValue.trim()) {\n if (!isInit && $selectedInTemplate.length) {\n $propValuesSelect.find('option[value=\" \"]').attr('selected', 'selected');\n }\n\n return true;\n }\n\n if ($(`option[value=\"${propValue}\"]`, $propValuesSelect).length) {\n $propValuesSelect.val(propValue);\n }\n\n return true;\n }\n });\n }\n\n\n function clearPropertyListValues() {\n $(this).parent(\"div\").parent(\"div\").children(\"ul.form-elt-list\").remove();\n }\n\n /**\n * by selecting a list, the values are displayed\n */\n function showPropertyListValues() {\n const $this = $(this);\n const elt = $this.parent(\"div\");\n let classUri;\n\n //load the instances and display them (the list items)\n $(elt).parent(\"div\").children(\"ul.form-elt-list\").remove();\n classUri = $this.val();\n if (classUri && classUri.trim()) {\n $this.parent(\"div\").children(\"div.form-error\").remove();\n $.ajax({\n url: context.root_url + 'taoBackOffice/Lists/getListElements',\n type: \"POST\",\n data: {listUri: classUri},\n dataType: 'json',\n success: function (response) {\n let html = \"<ul class='form-elt-list'>\",\n property;\n for (property in response) {\n if(!response.hasOwnProperty(property)) {\n continue;\n }\n html += '<li>' + encode.html(response[property]) + '</li>';\n }\n html += '</ul>';\n $(elt).after(html);\n }\n });\n }\n }\n\n function showDependsOnProperty() {\n \tconst $this = $(this);\n const classUri = $(document.getElementById('classUri')).val();\n let propertyUriToSend;\n \tconst listUri = $this.val();\n const dependsId = $(this)[0].id.match(/\\d+_/)[0];\n const dependsOnSelect = $(document.getElementById(`${dependsId}depends-on-property`));\n propertyUriToSend = $this.parent().parent().parent()[0].id;\n propertyUriToSend = propertyUriToSend.replace('property_', '');\n $.ajax({\n url: context.root_url + 'tao/PropertyValues/getDependOnPropertyList',\n type: \"GET\",\n data: {\n class_uri: classUri,\n list_uri: listUri,\n property_uri: propertyUriToSend,\n },\n dataType: 'json',\n success: function (response) {\n if (response && response.data && response.data.length !== 0) {\n const backendValues = response.data.reduce(\n (accumulator, currentValue) => {\n accumulator.push(currentValue.uriEncoded);\n return accumulator;\n },\n []\n );\n const currentValues = Object\n .values(dependsOnSelect[0].options)\n .map(entry => entry.value)\n .filter(entry => entry !== ' ');\n let haveSameData = false;\n currentValues.map(entry => {\n if (!backendValues.includes(entry)) {\n haveSameData = true;\n }\n return;\n });\n if (dependsOnSelect[0].length <= 1 || haveSameData) {\n let html = '<option value=\" \"> --- select --- </option>';\n for (const propertyData in response.data) {\n html += `<option value=\"${response.data[propertyData].uri}\">${response.data[propertyData].label}</option>`;\n }\n dependsOnSelect.empty().append(html);\n }\n dependsOn.toggle();\n } else {\n dependsOnSelect.parent().hide();\n }\n }\n });\n }\n\n function onTypeChange(e, flag) {\n showPropertyList.bind(this)(e, flag === 'initial');\n }\n\n function onListValuesChange(e) {\n clearPropertyListValues.bind(this)(e);\n if (!$(this).val() || !$(this).val().trim()) {\n $(this).find('option[value=\" \"]').attr('selected', 'selected');\n }\n showPropertyListValues.bind(this)(e);\n showDependsOnProperty.bind(this)(e);\n }\n\n //bind functions to the drop down:\n\n $('.property-template').each(function(){\n $(this).closest('div').hide();\n });\n\n //display the values drop down regarding the selected type\n var $propertyType = $(\".property-type\"),\n $propertyListValues = $(\".property-listvalues\");\n\n $propertyType.on('change', onTypeChange).trigger('change', 'initial');\n\n //display the values of the selected list\n $propertyListValues.off('change');\n $propertyListValues.on('change', onListValuesChange).trigger('change');\n\n $propertyListValues.each(function () {\n var elt = $(this).parent(\"div\");\n if (!elt.hasClass('form-elt-highlight') && elt.css('display') !== 'none') {\n elt.addClass('form-elt-highlight');\n }\n });\n },\n\n /**\n * controls of the translation forms\n */\n initTranslationForm: function initTranslationForm () {\n var self = this;\n $('#translate_lang').change(function () {\n var trLang = $(this).val();\n if (trLang !== '') {\n $(\"#translation_form\").find(\":input\").each(function () {\n if (/^http/.test($(this).prop('name'))) {\n $(this).val('');\n }\n });\n $.post(\n getUrl('getTranslatedData'),\n {uri: $(\"#uri\").val(), classUri: $(\"#classUri\").val(), lang: trLang},\n function (response) {\n var index;\n var formElt;\n for (index in response) {\n formElt = $(\":input[name='\" + index + \"']\");\n if (formElt.hasClass('html-area') && self.htmlEditors[index]) {\n self.htmlEditors[index].setData(response[index]);\n }\n else {\n formElt.val(response[index]);\n }\n }\n },\n 'json'\n );\n }\n });\n },\n\n /**\n * Ajax form submit -> post the form data and display back the form into the container\n * @param myForm\n * @param serialize\n * @return boolean\n */\n submitForm: function submitForm(myForm, serialize) {\n var self = this;\n var $container;\n\n try {\n if (myForm.prop('enctype') === 'multipart/form-data' && myForm.find(\".file-uploader\").length) {\n return false;\n }\n else {\n //FIXME should use sectionAPI instead\n $container = myForm.closest('.content-block');\n if (!$container || $container.length === 0) {\n return true;//go to the link\n }\n else {\n //if a ckeditor is in the form we need to sync the textarea content\n $('.html-area', myForm).each(function(){\n if(self.htmlEditors[this.id]){\n self.htmlEditors[this.id].updateElement();\n }\n });\n\n serialize = typeof serialize !== 'undefined' ? serialize : myForm.serializeArray();\n\n $('.current-submitter', myForm).each(function () {\n $(this).removeClass('current-submitter');\n if (Array.isArray(serialize)) {\n serialize.push({name: this.name, value: this.value});\n } else {\n serialize[this.name] = this.value;\n }\n });\n\n $('[data-depends-on-property][disabled]', myForm).each(function () {\n if (Array.isArray(serialize)) {\n serialize.push({name: this.name, value: this.value});\n } else {\n serialize[this.name] = this.value;\n }\n });\n\n $container.load(myForm.prop('action'), serialize);\n }\n }\n }\n catch (exp) {\n return false;\n }\n return false;\n }\n };\n\n return UiForm;\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2014-2017 Open Assessment Technologies SA;\n */\n/**\n * @author Bertrand Chevrier <bertrand@taotesting.com>\n */\ndefine('layout/actions/binder',['lodash'], function(_){\n 'use strict';\n\n /**\n * The list of registered bindings, key are binding name.\n */\n var bindings = {};\n\n /**\n * Helps you to bind actions' behavior.\n *\n * To bind a behavior to an action, you need to register a callback under the same name than 'binding' value in the structure.xml\n *\n *\n * @exports layout/actions/binder\n */\n var actionBinder = {\n\n /**\n * Register a new binding\n *\n * @example\n * binder.register('subClass', function subClass(context){\n * //do something with context.uri to create a sub class.\n * });\n *\n * @param {String} name - the binding name\n * @param {ActionBinding}\n *\n */\n register : function register(name, binding){\n\n /**\n * @callback ActionBinding\n * @this action - the action object\n * @param {ActionContext} context - the context\n */\n bindings[name] = binding;\n },\n\n /**\n * Execute the binding of an action if one has been registerd\n * @param {Object} action - the action to execute the binding of\n * @param {String} action.binding - the action must contain a binding property that match a registerd binding\n * @param {ActionContext} context - the context in which to execute the binding\n * @returns {Promise?}\n */\n exec : function exec(action, context){\n var name;\n if(action && action.binding){\n\n name = action.binding;\n if(_.isFunction(bindings[name])){\n return bindings[name].call(action, context);\n }\n }\n }\n };\n\n return actionBinder;\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2018 Open Assessment Technologies SA;\n */\n\n/**\n * Manage resources and actions permissions.\n * The model is based on actions expecting some permissions (requiredRights) for a given parameter.\n * Then each resource has it's own permissions (READ, WRITE, GRANT) that we store.\n *\n * We can check if a resource has a given permission (can read for example)\n * or to validate a context that must contains all required parameters.\n *\n *\n * @author Bertrand Chevrier <bertrand@taotesting.com>\n */\ndefine('layout/permissions',[\n 'lodash',\n 'uri',\n], function(_, uriUtil){\n 'use strict';\n\n /**\n * store permissions per resource\n * @type {Object}\n */\n var permissionStore = {};\n\n /**\n * The list of supported rights\n * @type {String[]}\n */\n var supportedRights = [];\n\n /**\n * The permissions manager\n * @typedef {Object} permissionsManager\n */\n var permissionsManager = {\n\n /**\n * set the rights, none by defaults\n * @param {String[]} rights\n * @returns {permissionsManager} chains\n */\n setSupportedRights : function setSupportedRights(rights){\n if (_.isArray(rights)) {\n supportedRights = _.filter(rights, _.isString);\n }\n },\n\n /**\n * Get the current rights\n * @returns {String[]} the rights\n */\n getRights : function getRights(){\n return supportedRights;\n },\n\n /**\n * Check if the given right is supported\n * @param {String} right - the right to check\n * @returns {Boolean}\n */\n isSupported : function isSupported(right){\n return _.contains(supportedRights, right);\n },\n\n /**\n * Add permissions to the store.\n *\n * Polymorphic.\n * @example permissionsManager.addPermissions('http://uri.foo/a', ['READ', 'WRITE']);\n * @example permissionsManager.addPermissions({\n * 'http://uri.foo/a' : ['READ', 'WRITE'],\n * 'http://uri.foo/b' : ['READ']\n * });\n *\n *\n * @param {String} [uri] - the resource URI\n * @param {Array|Object} permissions - either an object where the keys are the URIs or directly the permissions\n * @returns {permissionsManager} chains\n */\n addPermissions : function addPermissions(uri, permissions){\n if(_.isString(uri) && _.isArray(permissions)){\n permissionStore[uri] = _.intersection(permissions, _.values(this.getRights()));\n }\n\n if(_.isUndefined(permissions) && _.isPlainObject(uri)){\n permissions = uri;\n _.forEach(permissions, function(value, key){\n this.addPermissions(key, value);\n }, this);\n }\n\n return this;\n },\n\n /**\n * Retrieve the permissions for the given resource\n * @param {String} uri - the resource URI\n * @returns {Array} the permissions\n */\n getPermissions : function getPermissions(uri){\n return permissionStore[uri];\n },\n\n /**\n * Check if the given resource has the permission\n * @param {String} uri - the resource URI\n * @param {String} permission - the permission to check\n * @returns {Boolean}\n */\n hasPermission : function hasPermission(uri, permission){\n\n //if no right is defined, it's open bar\n if( supportedRights.length === 0 ) {\n return true;\n }\n if(typeof permissionStore[uri] !== 'undefined'){\n return _.contains(permissionStore[uri], permission);\n }\n return false;\n },\n\n /**\n * Clear all permissions\n * @returns {permissionsManager} chains\n */\n clear : function clear(){\n permissionStore = {};\n return this;\n },\n\n /**\n * Check if the given context is allowed to execute an action with required rights.\n * @param {Object} requiredRights - the action required rights (parameterName : permission)\n * @param {Object} resourceContext - the context to verify\n * @returns {Boolean}\n */\n isContextAllowed : function isContextAllowed(requiredRights, resourceContext){\n var self = this;\n if(! requiredRights || _.size(requiredRights) === 0 || supportedRights.length === 0){\n return true;\n }\n if(!_.isPlainObject(resourceContext)){\n return false;\n }\n return _.all(requiredRights, function(right, requiredParameter){\n var parameterValue;\n\n // translate muti-id into single-id\n if (requiredParameter === 'ids') {\n requiredParameter = 'id';\n }\n\n if(typeof resourceContext[requiredParameter] === 'undefined' || !self.isSupported(right)){\n return false;\n }\n\n //some values in the context are still URI encoded\n parameterValue = uriUtil.decode(resourceContext[requiredParameter]);\n\n return self.hasPermission(parameterValue, right);\n });\n },\n\n /**\n * For a given resource compute the permission mode:\n * - allowed : no supported rights required or has the permission on all supported rights\n * - partial : has the permission only on some supported rights\n * - denied : has the permission on none of the supported rights\n * @param {String} uri - the resource URI\n * @returns {String} the mode\n */\n getResourceAccessMode : function getResourcesAccessMode(uri) {\n var self = this;\n var mode = 'allowed';\n var rights = this.getRights();\n var count = _.reduce(rights, function(acc, right){\n if(self.hasPermission(uri, right)){\n acc++;\n }\n return acc;\n }, 0);\n\n if (rights.length > 0 && count !== rights.length) {\n if(count === 0){\n mode = 'denied';\n } else {\n mode = 'partial';\n }\n }\n return mode;\n }\n };\n\n return permissionsManager;\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2017 (original work) Open Assessment Technologies SA;\n */\n\n/**\n * The resource data provider\n *\n * @author Bertrand Chevrier <bertrand@taotesting.com>\n */\ndefine('provider/resources',[\n 'lodash',\n 'i18n',\n 'util/url',\n 'core/promise',\n 'core/dataProvider/request',\n 'layout/permissions'\n], function (_, __, urlUtil, Promise, request, permissionsManager) {\n 'use strict';\n\n /**\n * Per function requests configuration.\n */\n var defaultConfig = {\n getClasses : {\n url : urlUtil.route('getAll', 'RestClass', 'tao')\n },\n getResources : {\n url : urlUtil.route('getAll', 'RestResource', 'tao')\n },\n getClassProperties : {\n url : urlUtil.route('create', 'RestResource', 'tao')\n },\n copyTo : {\n //unset because it belongs to sub controllers, see /taoItems/Items/copyInstance,\n //so it needs to be defined\n },\n moveTo : {\n //unset because it belongs to sub controllers, see /taoItems/Items/moveResource,\n //so it needs to be defined\n }\n };\n\n /**\n * Recursively compute the access mode (permissions) for the given resource hierarchy\n * @param {Object[]} nodes\n * @returns {Object[]} the nodes augmented of the \"accessMode=<partial|denied|allowed>\" property\n */\n var computeNodeAccessMode = function computeNodeAccessMode(nodes){\n return _.map(nodes, function(node){\n node.accessMode = permissionsManager.getResourceAccessMode(node.uri);\n if(_.isArray(node.children)){\n node.children = computeNodeAccessMode(node.children);\n }\n return node;\n });\n };\n\n /**\n * Enforces signature to classSignature in every child resources\n *\n * @param {Array|Object} resources\n * @param {String} [signature]\n * @returns {Array|Object}\n */\n function applyClassSignatures(resources, signature) {\n if (_.isArray(resources)) {\n _.forEach(resources, function(resource) {\n applyClassSignatures(resource, signature);\n });\n } else if (resources) {\n if (signature) {\n resources.classSignature = signature;\n }\n if (resources.children) {\n applyClassSignatures(resources.children, resources.signature || signature);\n }\n }\n return resources;\n }\n\n /**\n * Creates a configured provider\n *\n * @param {Object} [config] - to override the default config\n * @returns {resourceProvider} the new provider\n */\n return function resourceProviderFactory(config){\n\n config = _.defaults(config || {}, defaultConfig);\n\n /**\n * @typedef {resourceProvider}\n */\n return {\n\n /**\n * Get the list of classes and sub classes\n * @param {String} classUri - the root class URI\n * @returns {Promise} that resolves with the classes\n */\n getClasses: function getClasses(classUri){\n return request(config.getClasses.url, { classUri : classUri });\n },\n\n /**\n * Get QTI Items in different formats\n * @param {Object} [params] - the parameters to pass through the request\n * @param {Boolean} [computePermissions=false] - do we compute the resource's permissions?\n * @returns {Promise} that resolves with the classes\n */\n getResources : function getResources(params, computePermissions){\n return request(config.getResources.url, params).then(function(results){\n var resources;\n var currentRights;\n\n if(results && results.resources){\n resources = results.resources;\n } else {\n resources = results;\n }\n\n //each time we retrieve resources,\n //the list of their permission can come along them\n //in that case, we update the main permission manager\n //and compute the permission mode for each received resource\n //by filling the property \"accessMode\"\n if(computePermissions && results.permissions){\n currentRights = permissionsManager.getRights();\n\n if(results.permissions.supportedRights &&\n results.permissions.supportedRights.length &&\n currentRights.length === 0) {\n\n permissionsManager.setSupportedRights(results.permissions.supportedRights);\n\n }\n if(results.permissions.data){\n permissionsManager.addPermissions(results.permissions.data);\n }\n\n //compute the mode for each resource\n if(resources.nodes){\n resources.nodes = computeNodeAccessMode(resources.nodes);\n } else {\n resources = computeNodeAccessMode(resources);\n }\n }\n return resources;\n }).then(applyClassSignatures);\n },\n\n /**\n * Get the properties of the given resource class\n * @param {String} classUri - the class URI\n * @returns {Promise} that resolves with the classes\n */\n getClassProperties: function getClassProperties(classUri) {\n return request(config.getClassProperties.url, { classUri : classUri });\n },\n\n /**\n * Copy a resource into another class\n * @param {String} uri - the resource to copy\n * @param {String} destinationClassUri - the destination class\n * @param {String} signature - the signature for the uri\n * @returns {Promise<Object>} resolves with the data of the new resource\n */\n copyTo : function copyTo(uri, destinationClassUri, signature) {\n if(_.isEmpty(config.copyTo.url)){\n return Promise.reject('Please define the action URL');\n }\n if(_.isEmpty(uri)){\n return Promise.reject('The URI of the resource to copy must be defined');\n }\n if(_.isEmpty(destinationClassUri)){\n return Promise.reject('The URI of the destination class must be defined');\n }\n // dataProvider request must be tokenised in this case (noToken=false)\n return request(config.copyTo.url, {\n uri : uri,\n destinationClassUri : destinationClassUri,\n signature: signature\n }, 'POST', null, true, false);\n },\n\n /**\n * Move resources into another class\n * @param {String|String[]} ids - the resources to move\n * @param {String} destinationClassUri - the destination class\n * @returns {Promise<Object>} resolves with the data of the new resource\n */\n moveTo: function moveTo(ids, destinationClassUri) {\n var params = {\n destinationClassUri: destinationClassUri\n };\n\n if (!ids) {\n ids = [];\n } else if (!_.isArray(ids)) {\n ids = [ids];\n }\n if (ids.length === 1) {\n params.uri = ids[0];\n params.signature = config.moveTo.signature;\n } else {\n params.ids = ids;\n }\n\n if (_.isEmpty(config.moveTo.url)) {\n return Promise.reject('Please define the action URL');\n }\n if (_.isEmpty(ids) || _.some(ids, _.isEmpty)) {\n return Promise.reject('The URI of the resource to move must be defined');\n }\n if (_.isEmpty(destinationClassUri)) {\n return Promise.reject('The URI of the destination class must be defined');\n }\n\n // dataProvider request must be tokenised in this case (noToken=false)\n return request(config.moveTo.url, params, 'POST', null, true, false);\n }\n };\n };\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2014-2017 Open Assessment Technologies SA;\n */\n\n/**\n * @author Bertrand Chevrier <bertrand@taotesting.com>\n */\ndefine('layout/actions/common',[\n 'jquery',\n 'i18n',\n 'lodash',\n 'core/promise',\n 'core/request',\n 'layout/section',\n 'layout/actions/binder',\n 'layout/permissions',\n 'provider/resources',\n 'ui/destination/selector',\n 'uri',\n 'ui/feedback',\n 'ui/dialog/confirm',\n], function($, __, _, Promise, request, section, binder, permissionsManager, resourceProviderFactory, destinationSelectorFactory, uri, feedback, confirmDialog) {\n 'use strict';\n\n var messages = {\n confirmMove: __('The properties of the source class will be replaced by those of the destination class. This might result in a loss of metadata. Continue anyway?')\n };\n\n /**\n * Cleans up the main panel and creates a container\n * @returns {jQuery}\n */\n var emptyPanel = function cleanupPanel() {\n section.current().updateContentBlock('<div class=\"main-container flex-container-form-main\"></div>');\n return $(section.selected.panel).find('.main-container');\n };\n\n /**\n * Register common actions.\n *\n * TODO this common actions may be re-structured, split in different files or moved in a more obvious location.\n *\n * @exports layout/actions/common\n */\n var commonActions = function commonActions(){\n\n /**\n * Register the load action: load the url and into the content container\n *\n * @this the action (once register it is bound to an action object)\n *\n * @param {Object} actionContext - the current actionContext\n * @param {String} [actionContext.uri]\n * @param {String} [actionContext.classUri]\n */\n binder.register('load', function load(actionContext){\n section.current().loadContentBlock(this.url, _.pick(actionContext, ['uri', 'classUri', 'id']));\n });\n\n /**\n * Register the load class action: load the url into the content container\n *\n * @this the action (once register it is bound to an action object)\n *\n * @param {Object} actionContext - the current actionContext\n * @param {String} actionContext.classUri - the URI of the parent class\n */\n binder.register('loadClass', function load(actionContext){\n section.current().loadContentBlock(this.url, {classUri: actionContext.classUri, id: uri.decode(actionContext.classUri)});\n });\n\n /**\n * Register the subClass action: creates a sub class\n *\n * @this the action (once register it is bound to an action object)\n *\n * @param {Object} actionContext - the current actionContext\n * @param {String} actionContext.classUri - the URI of the parent class\n * @returns {Promise<Object>} resolves with the new class data\n *\n * @fires layout/tree#addnode.taotree\n */\n binder.register('subClass', function subClass(actionContext){\n var classUri = uri.decode(actionContext.classUri);\n var signature = actionContext.signature;\n var self = this;\n if (actionContext.type !== 'class') {\n signature = actionContext.classSignature;\n }\n\n const currentSection = section.current();\n if (currentSection.clearContentBlock) {\n currentSection.clearContentBlock();\n }\n\n return request({\n url: self.url,\n method: \"POST\",\n data: {id: classUri, type: 'class', signature: signature},\n dataType: 'json',\n })\n .then(function(response) {\n if (response.success && response.uri) {\n if (actionContext.tree) {\n $(actionContext.tree).trigger('addnode.taotree', [{\n uri : uri.decode(response.uri),\n label : response.label,\n parent : uri.decode(actionContext.classUri),\n cssClass : 'node-class'\n }]);\n }\n\n //return format (resourceSelector)\n return {\n uri : uri.decode(response.uri),\n label : response.label,\n classUri : uri.decode(actionContext.classUri),\n type : 'class'\n };\n\n } else {\n throw new Error(__('Adding the new class has failed'));\n }\n });\n });\n\n /**\n * Register the instanciate action: creates a new instance from a class\n *\n * @this the action (once register it is bound to an action object)\n *\n * @param {Object} actionContext - the current actionContext\n * @param {String} actionContext.classUri - the URI of the class' instance\n * @returns {Promise<Object>} resolves with the new instance data\n *\n * @fires layout/tree#addnode.taotree\n */\n binder.register('instanciate', function instanciate(actionContext){\n var self = this;\n var classUri = uri.decode(actionContext.classUri);\n var signature = actionContext.signature;\n if (actionContext.type !== 'class') {\n signature = actionContext.classSignature;\n }\n return request({\n url: self.url,\n method: \"POST\",\n data: {id: classUri, type: 'instance', signature: signature},\n dataType: 'json'\n })\n .then(function(response) {\n if (response.success && response.uri) {\n //backward compat format for jstree\n if(actionContext.tree){\n $(actionContext.tree).trigger('addnode.taotree', [{\n uri : uri.decode(response.uri),\n label : response.label,\n parent : uri.decode(actionContext.classUri),\n cssClass : 'node-instance'\n }]);\n }\n\n //return format (resourceSelector)\n return {\n uri : uri.decode(response.uri),\n label : response.label,\n classUri : uri.decode(actionContext.classUri),\n type : 'instance'\n };\n\n } else {\n throw new Error(__('Adding the new resource has failed'));\n }\n });\n });\n\n /**\n * Register the duplicateNode action: creates a clone of a node.\n *\n * @this the action (once register it is bound to an action object)\n *\n * @param {Object} actionContext - the current actionContext\n * @param {String} actionContext.uri - the URI of the base instance\n * @param {String} actionContext.classUri - the URI of the class' instance\n * @returns {Promise<Object>} resolves with the new instance data\n *\n * @fires layout/tree#addnode.taotree\n */\n binder.register('duplicateNode', function duplicateNode(actionContext){\n var self = this;\n return request({\n url: self.url,\n method: \"POST\",\n data: {\n uri: actionContext.id,\n classUri: uri.decode(actionContext.classUri),\n signature: actionContext.signature\n },\n dataType: 'json',\n })\n .then(function(response) {\n if (response.success && response.uri) {\n //backward compat format for jstree\n if(actionContext.tree){\n $(actionContext.tree).trigger('addnode.taotree', [{\n uri : uri.decode(response.uri),\n label : response.label,\n parent : uri.decode(actionContext.classUri),\n cssClass : 'node-instance'\n }]);\n }\n\n //return format (resourceSelector)\n return {\n uri : uri.decode(response.uri),\n label : response.label,\n classUri : uri.decode(actionContext.classUri),\n type : 'instance'\n };\n\n } else {\n throw new Error(__('Node duplication has failed'));\n }\n });\n });\n\n /**\n * Register the removeNode action: removes a resource.\n *\n * @this the action (once register it is bound to an action object)\n *\n * @param {Object} actionContext - the current actionContext\n * @param {String} [actionContext.uri]\n * @param {String} [actionContext.classUri]\n *\n * @fires layout/tree#removenode.taotree\n */\n binder.register('removeNode', function remove(actionContext){\n var self = this;\n var data = {};\n\n data.uri = uri.decode(actionContext.uri);\n data.classUri = uri.decode(actionContext.classUri);\n data.id = actionContext.id;\n data.signature = actionContext.signature;\n\n return new Promise( function (resolve, reject){\n confirmDialog(__(\"Please confirm deletion\"), function accept(){\n request({\n url: self.url,\n method: \"POST\",\n data: data,\n dataType: 'json',\n })\n .then(function(response) {\n if (response.success && response.deleted) {\n feedback().success(response.message || __('Resource deleted'));\n\n if (actionContext.tree){\n $(actionContext.tree).trigger('removenode.taotree', [{\n id : actionContext.uri || actionContext.classUri\n }]);\n }\n return resolve({\n uri : actionContext.uri || actionContext.classUri\n });\n\n } else {\n reject(response.msg || __(\"Unable to delete the selected resource\"));\n }\n });\n }, function cancel(){\n reject({ cancel : true });\n });\n });\n });\n\n /**\n * Register the removeNodes action: removes multiple resources\n *\n * @this the action (once register it is bound to an action object)\n *\n * @param {Object[]|Object} actionContexts - single or multiple action contexts\n * @returns {Promise<String[]>} with the list of deleted ids/uris\n */\n binder.register('removeNodes', function removeNodes(actionContexts){\n var self = this;\n var confirmMessage = '';\n var data = {};\n var classes;\n var instances;\n\n if(!_.isArray(actionContexts)){\n actionContexts = [actionContexts];\n }\n\n classes = _.filter(actionContexts, { type : 'class' });\n instances = _.filter(actionContexts, { type : 'instance' });\n\n data.ids = _.map(actionContexts, function (elem) {\n return {id: elem.id, signature: elem.signature};\n });\n\n if(actionContexts.length === 1){\n confirmMessage = __('Please confirm deletion');\n } else if(actionContexts.length > 1){\n if(instances.length){\n if(instances.length === 1){\n confirmMessage = __('an instance');\n } else {\n confirmMessage = __('%s instances', instances.length);\n }\n }\n if(classes.length){\n if(confirmMessage){\n confirmMessage += __(' and ');\n }\n if(classes.length === 1){\n confirmMessage = __('a class');\n } else {\n confirmMessage += __('%s classes', classes.length);\n }\n }\n confirmMessage = __('Please confirm deletion of %s.', confirmMessage);\n }\n\n return new Promise( function (resolve, reject){\n\n confirmDialog(confirmMessage, function accept(){\n request({\n url: self.url,\n method: \"POST\",\n data: data,\n dataType: 'json',\n })\n .then(function(response) {\n if (response.success && response.deleted) {\n resolve(response.deleted);\n } else {\n reject(new Error(response.message || __(\"Unable to delete the selected resources\")));\n }\n });\n }, function cancel(){\n reject({ cancel : true });\n });\n });\n });\n\n /**\n * Register the moveNode action: moves a resource.\n *\n * @this the action (once register it is bound to an action object)\n *\n * @param {Object} actionContext - the current actionContext\n * @param {String} [actionContext.uri]\n * @param {String} [actionContext.classUri]\n */\n binder.register('moveNode', function remove(actionContext){\n var data = _.pick(actionContext, ['id', 'uri', 'destinationClassUri', 'confirmed', 'signature']);\n\n //wrap into a private function for recusion calls\n var _moveNode = function _moveNode(url){\n request({\n url: url,\n method: \"POST\",\n data: data,\n dataType: 'json',\n })\n .then(function(response) {\n var message;\n var i;\n\n if (response && response.status === true) {\n return;\n } else if (response && response.status === 'diff') {\n message = __(\"Moving this element will replace the properties of the previous class by those of the destination class :\");\n message += \"\\n\";\n for (i = 0; i < response.data.length; i++) {\n if (response.data[i].label) {\n message += `- ${response.data[i].label}\\n`;\n }\n }\n message += `${__(\"Please confirm this operation.\")}\\n`;\n\n // eslint-disable-next-line no-alert\n if (window.confirm(message)) {\n data.confirmed = true;\n return _moveNode(url, data);\n }\n }\n\n //ask to rollback the tree\n $(actionContext.tree).trigger('rollback.taotree');\n });\n };\n _moveNode(this.url, data);\n });\n\n /**\n * Register the launchEditor action.\n *\n * @this the action (once register it is bound to an action object)\n *\n * @param {Object} actionContext - the current actionContext\n * @param {String} [actionContext.uri]\n * @param {String} [actionContext.classUri]\n *\n * @fires layout/tree#removenode.taotree\n */\n binder.register('launchEditor', function launchEditor(actionContext){\n\n var data = _.pick(actionContext, ['id']);\n var wideDifferenciator = '[data-content-target=\"wide\"]';\n\n $.ajax({\n url: this.url,\n type: \"GET\",\n data: data,\n dataType: 'html',\n success: function(response){\n var $response = $($.parseHTML(response, document, true));\n //check if the editor should be displayed widely or in the content area\n if($response.is(wideDifferenciator) || $response.find(wideDifferenciator).length){\n section.create({\n id : 'authoring',\n name : __('Authoring'),\n url : this.url,\n content : $response,\n visible : false\n })\n .show();\n } else {\n section.updateContentBlock($response);\n }\n }\n });\n });\n\n /**\n * Register the copyTo action: select a destination class to copy a resource\n *\n * @this the action (once register it is bound to an action object)\n *\n * @param {Object[]|Object} actionContext - single or multiple action contexts\n * @returns {Promise<String>} with the new resource URI\n */\n binder.register('copyTo', function copyTo (actionContext){\n //create the container manually...\n var $container = emptyPanel();\n\n //get the resource provider configured with the action URL\n var resourceProvider = resourceProviderFactory({\n copyTo : {\n url : this.url\n }\n });\n\n return new Promise( function (resolve, reject){\n\n //set up a destination selector\n destinationSelectorFactory($container, {\n classUri: actionContext.rootClassUri,\n preventSelection : function preventSelection(nodeUri, node, $node){\n //prevent selection on nodes without WRITE permissions\n if( $node.length && $node.data('access') === 'partial' || $node.data('access') === 'denied'){\n if(! permissionsManager.hasPermission(nodeUri, 'WRITE') ) {\n feedback().warning(__('You are not allowed to write in the class %s', node.label));\n return true;\n }\n }\n return false;\n }\n })\n .on('query', function(params) {\n var self = this;\n\n //asks only classes\n params.classOnly = true;\n resourceProvider\n .getResources(params, true)\n .then(function(resources){\n //ask the server the resources from the component query\n self.update(resources, params);\n })\n .catch(function(err){\n self.trigger('error', err);\n });\n })\n .on('select', function(destinationClassUri){\n var self = this;\n if(!_.isEmpty(destinationClassUri)){\n this.disable();\n\n resourceProvider\n .copyTo(actionContext.id, destinationClassUri, actionContext.signature)\n .then(function(result){\n if(result && result.uri){\n\n feedback().success(__('Resource copied'));\n\n //backward compatible for jstree\n if(actionContext.tree){\n $(actionContext.tree).trigger('refresh.taotree', [result]);\n }\n return resolve(result);\n }\n return reject(new Error(__('Unable to copy the resource')));\n })\n .catch(function(err){\n self.trigger('error', err);\n });\n }\n })\n .on('error', reject);\n });\n });\n\n /**\n * Register the moveTo action: select a destination class to move resources\n *\n * @this the action (once register it is bound to an action object)\n *\n * @param {Object|Object[]} actionContext - multiple action contexts\n * @returns {Promise<String>} with the destination class URI\n */\n binder.register('moveTo', function moveTo(actionContext) {\n //create the container manually...\n var $container = emptyPanel();\n\n //backward compatible for jstree\n var tree = actionContext.tree;\n\n //get the resource provider configured with the action URL\n var resourceProvider = resourceProviderFactory({\n moveTo: {\n url: this.url\n }\n });\n\n if (!_.isArray(actionContext)) {\n actionContext = [actionContext];\n }\n\n return new Promise(function (resolve, reject) {\n var rootClassUri = _.pluck(actionContext, 'rootClassUri').pop();\n var selectedUri = _.pluck(actionContext, 'id');\n var selectedData = _.map(actionContext, function (a) {\n return {id: a.id, signature: a.signature};\n });\n\n //set up a destination selector\n destinationSelectorFactory($container, {\n title: __('Move to'),\n actionName: __('Move'),\n icon: 'move-item',\n classUri: rootClassUri,\n confirm: messages.confirmMove,\n preventSelection: function preventSelection(nodeUri, node, $node) {\n var uriList = [];\n\n //prevent selection on nodes without WRITE permissions\n if ($node.length && $node.data('access') === 'partial' || $node.data('access') === 'denied') {\n if (!permissionsManager.hasPermission(nodeUri, 'WRITE')) {\n feedback().warning(__('You are not allowed to write in the class %s', node.label));\n return true;\n }\n }\n\n uriList = [nodeUri];\n $node.parents('.class').each(function() {\n if (this.dataset.uri !== rootClassUri) {\n uriList.push(this.dataset.uri);\n }\n });\n\n //prevent selection on nodes that are already the containers of the resources or the resources themselves\n if (_.intersection(selectedUri, uriList).length) {\n feedback().warning(__('You cannot move the selected resources in the class %s', node.label));\n return true;\n }\n\n return false;\n }\n })\n .on('query', function (params) {\n var self = this;\n\n //asks only classes\n params.classOnly = true;\n resourceProvider\n .getResources(params, true)\n .then(function (resources) {\n //ask the server the resources from the component query\n self.update(resources, params);\n })\n .catch(function (err) {\n self.trigger('error', err);\n });\n })\n .on('select', function (destinationClassUri) {\n var self = this;\n\n if (!_.isEmpty(destinationClassUri)) {\n this.disable();\n\n resourceProvider\n .moveTo(selectedData, destinationClassUri)\n .then(function (results) {\n var failed = [];\n var success = [];\n\n _.forEach(results, function (result, resUri) {\n var resource = _.find(actionContext, {uri: resUri});\n if (result.success) {\n success.push(resource);\n } else {\n failed.push(result.message);\n }\n });\n\n if (!success.length) {\n feedback().error(__('Unable to move the resources'));\n } else if (failed.length) {\n feedback().warning(__('Some resources have not been moved: %s', failed.join(', ')));\n } else {\n feedback().success(__('Resources moved'));\n }\n\n //backward compatible for jstree\n if (tree) {\n $(tree).trigger('refresh.taotree', [destinationClassUri]);\n }\n return resolve(destinationClassUri);\n })\n .catch(function (err) {\n self.trigger('error', err);\n });\n }\n })\n .on('error', reject);\n });\n });\n };\n\n return commonActions;\n});\n\n\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2014-2017 Open Assessment Technologies SA;\n */\n/**\n * @author Bertrand Chevrier <bertrand@taotesting.com>\n */\ndefine('layout/actions',[\n 'jquery',\n 'lodash',\n 'core/eventifier',\n 'core/promise',\n 'lib/uuid',\n 'layout/actions/binder',\n 'layout/actions/common',\n 'layout/permissions'\n], function($, _, eventifier, Promise, uuid, binder, commonActions, permissionsManager){\n 'use strict';\n\n /**\n * The data context for actions\n * @typedef {Object} ActionContext\n * @property {String} [uri] - the resource uri\n * @property {String} [classUri] - the class uri\n */\n\n var actions = {};\n var resourceContext = {};\n\n /**\n * @exports layout/actions\n */\n var actionManager = eventifier({\n\n /**\n * Initialize the actions for the given scope. It should be done only once.\n * @constructor\n * @param {jQueryElement} [$scope = $(document)] - to scope the actions into the page\n */\n init: function init($scope){\n\n if($scope && $scope.length){\n this.$scope = $scope;\n } else {\n this.$scope = $(document);\n }\n\n //initialize the registration of common actions\n commonActions();\n\n this._lookup();\n this.updateContext();\n this._listenUpdates();\n this._bind();\n },\n\n /**\n * Lookup for existing actions in the page and add them to the _actions property\n * @private\n */\n _lookup : function _lookup(){\n var self = this;\n $('.action-bar .action', this.$scope).each(function(){\n\n var $this = $(this);\n var id;\n if($this.data('action')){\n\n //use the element id\n if($this.attr('id')){\n id = $this.attr('id');\n } else {\n //or generate one\n do {\n id = 'action-' + uuid(8, 16);\n } while (self._actions[id]);\n\n $this.attr('id', id);\n }\n\n actions[id] = {\n id : id,\n name : $this.attr('title'),\n binding : $this.data('action'),\n url : $('a', $this).attr('href'),\n context : $this.data('context'),\n multiple : $this.data('multiple'),\n rights : $this.data('rights'),\n state : {\n disabled : $this.hasClass('disabled'),\n hidden : $this.hasClass('hidden'),\n active : $this.hasClass('active')\n }\n };\n }\n });\n },\n\n /**\n * Bind actions' events: try to execute the binding registered for this action.\n * The behavior depends on the binding name of the action.\n * @private\n */\n _bind : function _bind(){\n var self = this;\n var actionSelector = this.$scope.selector + ' .action-bar .action';\n\n $(document)\n .off('click', actionSelector)\n .on('click', actionSelector, function(e){\n var selected;\n e.preventDefault();\n selected = actions[$(this).attr('id')];\n if(selected && selected.state.disabled === false && selected.state.hidden === false){\n self.exec(selected);\n }\n });\n },\n\n /**\n * Listen for event that could update the actions.\n * Those events may change the current context.\n * @private\n * @deprecated\n */\n _listenUpdates : function _listenUpdates(){\n var self = this;\n var treeSelector = this.$scope.selector + ' .tree';\n\n //listen for tree changes\n $(document)\n .off('change.taotree.actions', treeSelector)\n .on('change.taotree.actions', treeSelector, function(e, context){\n context = context || {};\n context.tree = this;\n self.updateContext(context);\n });\n },\n\n /**\n * Update the current context. Context update may change the visibility of the actions.\n * @param {ActionContext|ActionContext[]} context - the new context\n * @fires ActionManager#contextchange event with the new context\n */\n updateContext : function updateContext(context){\n var self = this;\n var hasClasses, hasInstances, current;\n\n context = context || {};\n\n if(_.isArray(context) ) {\n hasClasses = _.some(context, { type : 'class' });\n hasInstances = _.some(context, { type : 'instance' });\n\n _.forEach(actions, function(action){\n //if some has not the permissions we deny\n var hasPermissionDenied = _.some(context, function(resource){\n return !permissionsManager.isContextAllowed(action.rights, resource);\n });\n\n if( context.length &&\n action.multiple &&\n !hasPermissionDenied &&\n action.context !== 'none' &&\n ( (action.context === '*' || action.context === 'resource') ||\n (action.context === 'instance' && hasInstances && !hasClasses) ||\n (action.context === 'class' && hasClasses && !hasInstances) ) ) {\n\n action.state.hidden = false;\n } else {\n action.state.hidden = true;\n }\n });\n\n } else {\n\n if(context.type){\n current = context.type;\n } else {\n current = context.uri ? 'instance' : context.classUri ? 'class' : 'none';\n }\n\n _.forEach(actions, function(action){\n\n var allowed = permissionsManager.isContextAllowed(action.rights, context);\n\n if( action.multiple || allowed === false ||\n (current === 'none' && action.context !== '*') ||\n (action.context !== '*' && action.context !== 'resource' && current !== action.context) ){\n\n action.state.hidden = true;\n\n } else {\n action.state.hidden = false;\n }\n });\n }\n\n resourceContext = context;\n\n /**\n * @event ActionManager#contextchange\n * @param {ActionContext|ActionContext[]} context - the new context\n */\n self.trigger('contextchange', context);\n\n self.updateState();\n },\n\n /**\n * Update the state of the actions regarding the values of their state property\n */\n updateState : function updateState(){\n _.forEach(actions, function(action, id){\n var $elt = $('#' + id);\n _.forEach(['hidden', 'disabled', 'active'], function(state){\n if(action.state[state] === true){\n $elt.addClass(state);\n } else {\n $elt.removeClass(state);\n }\n });\n });\n },\n\n /**\n * Execute the operation bound to an action (via {@link layout/actions/binder#register});\n * @param {String|Object} action - can be either the id, the name or the action directly\n * @param {ActionContext} [context] - an action context, use the current otherwise\n * @returns {Promise?} always resolves\n * @fires ActionManager#error if the executed action fails\n * @fires ActionManager#{actionId} an event with the action id\n * @fires ActionManager#cancel if the action has been canceled\n */\n exec : function exec(action, context){\n var self = this;\n if(_.isString(action)){\n if(_.isPlainObject(actions[action])){\n //try to find by id\n action = actions[action];\n } else {\n //or by by name\n action = _.find(actions, {name : action});\n }\n }\n if(_.isPlainObject(action)){\n\n //make the executed action active\n _.forEach(actions, function(otherAction){\n otherAction.state.active = false;\n });\n action.state.active = true;\n this.updateState();\n\n return Promise\n .resolve(binder.exec(action, context || resourceContext))\n .then(function actionDone(actionData){\n var events = [action.id, action.binding];\n\n /**\n * @event ActionManager#{actionId}\n * @param {ActionContext} context - the context the action received\n * @param {Object} [actionData] - the data produced by the action\n */\n self.trigger(events.join(' '), context || resourceContext, actionData);\n })\n .catch( function actionError(err){\n if(err && err.cancel){\n\n /**\n * @event ActionManager#cancel\n * @param {String} actionId - the id of the canceled action\n */\n return self.trigger('cancel', action.id);\n }\n\n /**\n * @event ActionManager#error\n * @param {Error} err - the source error\n */\n self.trigger('error', err);\n });\n }\n },\n\n /**\n * Helps you to retrieve an action from it's name or id\n * @param {String} actionName - name or id of the action\n * @returns {Object} the action\n */\n getBy : function(actionName){\n var action;\n if(_.isPlainObject(actions[actionName])){\n //try to find by id\n action = actions[actionName];\n } else {\n //or by by name\n action = _.find(actions, {name : actionName});\n }\n return action;\n }\n });\n\n return actionManager;\n});\n\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2015 (original work) Open Assessment Technologies SA;\n *\n */\n\n/**\n * This component manage the navigation bar of TAO.\n *\n * @author Bertrand Chevrier <bertrand@taotesting.com>\n * @author Dieter Raber <dieter@taotesting.com>\n */\ndefine('layout/nav',['jquery', 'lodash'], function ($, _) {\n 'use strict';\n\n var $body = $('body'),\n $navContainer = $('header.dark-bar'),\n $nav = $navContainer.find($('nav')),\n $mainMenu = $nav.find('.main-menu'),\n $settingsMenu = $nav.find('.settings-menu'),\n navIsOversized = false,\n expandedMinWidth = (function () {\n var _width = $navContainer.find('img').parent().outerWidth();\n $mainMenu.add($settingsMenu).each(function () {\n var oldDisplay = window.getComputedStyle(this, null).getPropertyValue('display');\n this.style.display = 'block';\n _width += $(this).outerWidth();\n this.style.display = oldDisplay;\n });\n // 20 makes sure there is always a bit of distance between the menus\n return _width + 20;\n })();\n\n /**\n * If logo and main menu leave not enough space for the settings menu\n * the mobile menu will be shown instead.\n */\n var checkHeight = function checkHeight() {\n if (!$mainMenu.length || !$settingsMenu.length) {\n return;\n }\n // - nav is too wide\n if ($mainMenu.offset().top !== $settingsMenu.offset().top) {\n $body.addClass('oversized-nav');\n navIsOversized = true;\n }\n // - body.oversized-nav has been set in a previous call\n // find out if there is enough space now\n else if (navIsOversized && expandedMinWidth <= $navContainer.width()) {\n $body.removeClass('oversized-nav');\n navIsOversized = false;\n }\n // in all other cases leave things as they are\n };\n\n /**\n * @exports layout/nav\n */\n return {\n /**\n * Initialize the navigation bar\n *\n * @author Bertrand Chevrier <bertrand@taotesting.com>\n */\n init: function () {\n //here the bindings are controllers or even the name of any AMD file to load\n $('[data-action]', $nav)\n .off('click')\n .on('click', function (e) {\n e.preventDefault();\n let binding = $(this).data('action');\n if (binding) {\n require([binding], function (controller) {\n if (controller && typeof controller.start === 'function') {\n controller.start();\n }\n });\n }\n });\n\n // check the height of the header on load and on resize\n checkHeight();\n $(window)\n .off('resize.navheight')\n .on(\n 'resize.navheight',\n _.debounce(function () {\n checkHeight();\n }, 100)\n );\n }\n };\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2014-2020 (update and modification) Open Assessment Technologies SA;\n */\n\n/**\n * @author Bertrand Chevrier <bertrand@taotesting.com>\n */\ndefine('layout/search',[\n 'jquery',\n 'layout/actions',\n 'ui/searchModal',\n 'core/store',\n 'context',\n 'util/url',\n 'layout/actions/binder'\n], function ($, actionManager, searchModal, store, context, urlHelper, binder) {\n /**\n * Seach bar component for TAO action bar. It clears the store and\n * exposes the container, the indexeddb store that manages\n * search results, and @init function\n */\n const searchComponent = {\n container: null,\n searchStore: null,\n panelId: '',\n init(panelId) {\n searchComponent.panelId = panelId;\n store('search')\n .then(store => {\n store.clear();\n searchComponent.searchStore = store;\n initializeEvents();\n manageSearchStoreUpdate();\n })\n .catch(e => {\n actionManager.trigger('error', e);\n });\n }\n };\n\n /**\n * Sets events to init searchModal instance on search and results icons click, enter keypress\n * and ctrl + k shortcut\n */\n function initializeEvents() {\n searchComponent.container = searchComponent.panelId ? $(`#panel-${searchComponent.panelId} .action-bar .search-area`) : $('.action-bar .search-area');\n const $searchBtn = $('button.icon-find', searchComponent.container);\n const $searchInput = $('input', searchComponent.container);\n const $resultsBtn = $('button.icon-ul', searchComponent.container);\n\n $searchBtn.off('.searchComponent').on('click.searchComponent', () => createSearchModalInstance());\n\n $searchInput.off('.searchComponent').on('keypress.searchComponent', e => {\n if (e.which === 13) {\n createSearchModalInstance();\n }\n });\n\n $resultsBtn.off('.searchComponent').on('click.searchComponent', () => {\n searchComponent.searchStore\n .getItem('criterias')\n .then(storedCriterias => createSearchModalInstance(storedCriterias, false))\n .catch(e => {\n actionManager.trigger('error', e);\n });\n });\n\n $(document).on('keydown.searchComponent', e => {\n if (\n $('.action-bar .search-area').closest('.content-panel').css('display') === 'flex' &&\n e.ctrlKey &&\n e.which == 75\n ) {\n e.preventDefault();\n createSearchModalInstance();\n }\n });\n }\n\n /**\n * Creates a searchModal instance and set up searchStoreUpdate listener to update search component visuals when search store changes\n * @param {string} criterias - stored criterias for the searchComponent to be initialized with\n * @param {boolean} searchOnInit - if datatable request must be triggered on init, or use the stored results instead\n */\n function createSearchModalInstance(criterias, searchOnInit = true) {\n criterias = criterias || { search: $('input', searchComponent.container).val() };\n const url = searchComponent.container.data('url');\n const placeholder = searchComponent.container.find('input').attr('placeholder');\n const rootClassUri = decodeURIComponent(urlHelper.parse(url).query.rootNode);\n const isResultPage = context.shownStructure === 'results';\n const searchModalInstance = searchModal({\n criterias,\n url,\n searchOnInit,\n rootClassUri,\n hideResourceSelector: isResultPage,\n placeholder\n });\n\n searchModalInstance.on('store-updated', manageSearchStoreUpdate);\n searchModalInstance.on('refresh', (id, data) => {\n // in all cases id == resource_uri and node in the resorce tree\n // after triggering 'refresh' this resource will be selected in tree\n // on Results page we have 2 cases\n // 1. GenerisSearch id == delivery_uri\n // 2. ElasticSearch id == delivery_result_uri and data.delivery == delivery_uri\n const uri = !isResultPage || !data.delivery ? id : data.delivery;\n actionManager.trigger('refresh', { uri });\n // case 2. ElasticSearch - need to store delivery_result_uri in searchComponent for taoOutcomeUi controller\n isResultPage && data.delivery && searchComponent.container.data('show-result', id);\n });\n }\n\n /**\n * Callback to searchStoreUpdate event. First checks if current location is the same as the stored one, and if\n * it is not, clears the store. Then requests stored criterias and results if still necessary, and updates view\n */\n function manageSearchStoreUpdate() {\n searchComponent.searchStore\n .getItem('context')\n .then(storedContext => {\n if (storedContext !== context.shownStructure) {\n searchComponent.searchStore.clear();\n updateViewAfterSeachStoreUpdate();\n } else {\n let promises = [];\n promises.push(searchComponent.searchStore.getItem('criterias'));\n promises.push(searchComponent.searchStore.getItem('results'));\n return Promise.all(promises).then(values => {\n updateViewAfterSeachStoreUpdate(values[0], values[1]);\n });\n }\n })\n .catch(e => actionManager.trigger('error', e));\n }\n\n /**\n * Updates template with the received query and results dataset\n * @param {string} storedCriterias - stored search criterias to be used on component creation\n * @param {object} storedSearchResults - stored search results dataset, to display number of saved results on .results-counter\n */\n function updateViewAfterSeachStoreUpdate(storedCriterias, storedSearchResults) {\n const $searchInput = $('input', searchComponent.container);\n const $resultsCounterContainer = $('.results-counter', searchComponent.container);\n const $searchAreaButtonsContainer = $('.search-area-buttons-container', searchComponent.container);\n\n $searchInput.val(storedCriterias ? storedCriterias.search : '');\n if (storedSearchResults) {\n $searchAreaButtonsContainer.addClass('has-results-counter');\n $resultsCounterContainer.text(storedSearchResults.totalCount > 99 ? '+99' : storedSearchResults.totalCount);\n } else {\n $searchAreaButtonsContainer.removeClass('has-results-counter');\n $resultsCounterContainer.text('');\n }\n }\n\n return searchComponent;\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2014-2017 Open Assessment Technologies SA;\n */\n\n/**\n * Tree provider : jstree\n *\n * @author Bertrand Chevrier <bertrand@taotesting.com>\n */\ndefine('layout/tree/provider/jstree',[\n 'jquery',\n 'lodash',\n 'i18n',\n 'context',\n 'core/store',\n 'core/promise',\n 'util/url',\n 'layout/generisRouter',\n 'layout/actions',\n 'layout/section',\n 'layout/permissions',\n 'ui/feedback',\n 'uri',\n 'jquery.tree'\n], function($, _, __, context, store, Promise, urlUtil, generisRouter, actionManager, sectionManager, permissionsManager, feedback, uri){\n 'use strict';\n\n var pageRange = 30;\n\n return {\n\n /**\n * Tree provider name\n */\n name : 'jstree',\n\n /**\n * The tree factory helps you to instantiate a new tree from the TAO ontology\n * @exports layout/tree/provider/jstree\n *\n * @param {jQueryElement} $container - that will contain the tree\n * @param {Object} [options] - additional configuration options\n * @param {String} [options.url] - the endpoint to load data\n * @param {String} [options.rootClassUri] - the URI of the root class\n * @param {Object} [options.serverParameters] - add parameters to send to the endpoint (defaults are hideInstance, filter, offset and limit)\n * @param {Object} [options.actions] - which actions to perform from the tree\n * @param {String} [options.actions.moveInstance] - the id of the action bound (using actionManager.register) on move\n * @param {String} [options.actions.selectInstance] - the id of the action bound (using actionManager.register) on item selection\n * @param {String} [options.actions.selectClass] - the id of the action bound (using actionManager.register) on class selection\n * @param {String} [options.actions.deleteInstance] - the id of the action bound (using actionManager.register) on delete\n * @param {String} [options.selectNode] - the URI of the node to be selected by default, the node must be loaded.\n * @param {String} [options.loadNode] - the URI of a node to be loaded from the server side and selected.\n\n * @returns {Promise} resolves when the tree is ready\n */\n init : function init($container, options){\n var lastOpened;\n var lastSelected;\n\n var moreNode = {\n data : __('More'),\n type : 'more',\n attributes : {\n class : 'more'\n }\n };\n\n //these are the parameters added to the server call to load data\n var serverParams = _.defaults(options.serverParameters || {}, {\n extension : context.shownExtension,\n perspective : context.shownStructure,\n section : context.section,\n // eslint-disable-next-line no-undefined\n classUri : options.rootClassUri ? options.rootClassUri : undefined,\n hideInstances : options.hideInstances || 0,\n filter : '*',\n offset : 0,\n limit : pageRange\n });\n\n //list of events callbacks to be bound to the tree\n var events = {\n\n /**\n * Refresh the tree\n *\n * @event layout/tree#refresh.taotree\n * @param {Object} [data] - some data to bind to the tree\n * @param {String} [data.filter] - reload the tree in filtering mode\n * @param {String} [data.selectNode] - reload the tree and select the given node (by URI) if it is already loaded.\n * @param {String} [data.loadNode] - the URI of a node to display in filtering mode (it will load only this node)\n */\n refresh : function refresh(data){\n var treeState, node;\n var tree = $.tree.reference($container);\n if(tree){\n\n // try to select the node within the current loaded tree\n if (data && data.loadNode) {\n node = $container.find('[data-uri=\"' + data.loadNode + '\"]');\n if (node.length) {\n tree.select_branch(node);\n return;\n }\n }\n\n //update the state with data to be used later (ie. filter value, etc.)\n treeState = _.merge($container.data('tree-state') || {}, data);\n treeState = _.omit(treeState, 'selectNode');\n\n if (data && data.loadNode) {\n tree.deselect_branch(tree.selected);\n tree.settings.selected = false;\n treeState.selectNode = data.loadNode;\n } else if (data && data.selectNode) { //node will be selected in `onload` function\n tree.deselect_branch(tree.selected);\n tree.settings.selected = false;\n }\n\n setTreeState(treeState);\n tree.refresh();\n }\n },\n\n /**\n * Rollback the tree.\n * The rollback state must have been set in the state previously, otherwise runs a refresh.\n *\n * @event layout/tree#rollback.taotree\n */\n rollback : function rollback(){\n var treeState;\n var tree = $.tree.reference($container);\n if(tree){\n\n treeState = $container.data('tree-state');\n if(treeState.rollback){\n $.tree.rollback(treeState.rollback);\n\n //remove the rollback infos.\n setTreeState(_.omit(treeState, 'rollback'));\n } else {\n //trigger a full refresh\n $container.trigger('refresh.taotree');\n }\n }\n },\n\n /**\n * Add a node to the tree.\n *\n * @event layout/tree#addnode.taotree\n * @param {Object} data - the data about the node to add\n * @param {String} data.parent - the id/uri of the node that will contain the new node\n * @param {String} data.id - the id of the new node\n * @param {String} data.cssClass - the css class for the new node (node-instance or node-class at least).\n */\n addnode : function addnode(data) {\n var tree = $.tree.reference($container);\n var parentNode = tree.get_node($('#' + uri.encode(data.parent), $container).get(0));\n\n var params = _.clone(serverParams);\n\n params.classUri = data.parent;\n if (data.cssClass === 'node-class') {\n params.hideInstances = 1; //load only class nodes\n } else {\n params.loadNode = data.uri; //load particular instance\n }\n //load tree branch with new node to get new node permissions\n $.ajax(tree.settings.data.opts.url, {\n type : tree.settings.data.opts.method,\n dataType : tree.settings.data.type,\n async : tree.settings.data.async,\n data : params,\n success : function (response) {\n var treeData = getTreeData(response);\n var items = treeData.children || treeData;\n var node = _.filter(items, function (child) {\n return child.attributes && child.attributes['data-uri'] === data.uri;\n });\n if (node.length) {\n tree.select_branch(\n tree.create(node[0], parentNode)\n );\n }\n }\n });\n },\n\n /**\n * Remove a node from the tree.\n *\n * @event layout/tree#removenode.taotree\n * @param {Object} data - the data about the node to remove\n * @param {String} data.id - the id of the node to remove\n */\n removenode : function removenode(data){\n var tree = $.tree.reference($container);\n var node = tree.get_node($('#' + data.id, $container).get(0));\n tree.remove(node);\n },\n\n /**\n * Select a node\n *\n * @event layout/tree#selectnode.taotree\n * @param {Object} data - the data about the node to select\n * @param {String} data.id - the id of the node to select\n */\n selectnode : function selectnode(data){\n var tree = $.tree.reference($container);\n var node = tree.get_node($('#' + data.id, $container).get(0));\n $('li a', $container).removeClass('clicked');\n tree.select_branch(node);\n },\n\n /**\n * Opens a tree branch\n *\n * @event layout/tree#openbranch.taotree\n * @param {Object} data - the data about the node to remove\n * @param {String} data.id - the id of the node to remove\n */\n openbranch : function openbranch(data){\n var tree = $.tree.reference($container);\n var node = tree.get_node($('#' + data.id, $container).get(0));\n $('li a', $container).removeClass('clicked');\n tree.open_branch(node);\n }\n };\n\n /**\n * Options given to the jsTree plugin\n */\n var treeOptions = {\n\n //data call\n data: {\n type: \"json\",\n async : true,\n opts: {\n method : \"GET\",\n url: options.url\n }\n },\n\n //theme\n ui: {\n \"theme_name\" : \"css\",\n \"theme_path\" : context.taobase_www + 'js/lib/jsTree/themes/css/style.css'\n },\n\n //nodes types\n types: {\n \"default\" : {\n renameable\t: false,\n deletable\t: true,\n creatable\t: true,\n draggable\t: function($node) {\n return $node.hasClass('node-instance') && !$node.hasClass('node-undraggable') && options.actions && options.actions.moveInstance;\n }\n }\n },\n\n //lifecycle callbacks\n callback: {\n\n /**\n * Delete node callback.\n * @fires layout/tree#delete.taotree\n * @returns {undefined}\n */\n ondelete: function ondelete() {\n $container.trigger('delete.taotree', Array.prototype.slice.call(arguments));\n },\n\n /**\n * Additional parameters to send to the server to retrieve data.\n * It uses the serverParams object previously defined\n * @param {jQueryElement} [$node] - the node that represents a class. Used to add the classUri to the call\n * @returns {Object} params\n */\n beforedata: function beforedata($node) {\n var treeData = $container.data('tree-state');\n var params = _.clone(serverParams);\n if($node && $node.length){\n params.classUri = $node.data('uri');\n }\n if(lastSelected){\n params.selected = lastSelected;\n }\n\n //check for additionnal parameters in tree state\n if(treeData){\n\n //the tree has been loaded/refreshed with the filtering\n if(_.isString(treeData.filter) && treeData.filter.length){\n params.filter = treeData.filter;\n treeData = _.omit(treeData, 'filter');\n }\n\n //the tree has been loaded/refreshed with the loadNode parameter, so it has to be selected\n if(_.isString(treeData.loadNode) && treeData.loadNode.length){\n params.selected = treeData.loadNode;\n treeData.selectNode = uri.encode(treeData.loadNode);\n treeData = _.omit(treeData, 'loadNode');\n }\n\n setTreeState(treeData);\n }\n return params;\n },\n\n /**\n * Called back once the data are received.\n * Used to modify them before building the tree.\n *\n * @param {Object} data - the received data\n * @returns {Object} data the modified data\n */\n ondata: function ondata(data) {\n\n var treeData;\n if(data.error){\n feedback().error(data.error);\n return [];\n }\n\n treeData = getTreeData(data);\n\n //automatically open the children of the received node\n if (treeData.children) {\n treeData.state = 'open';\n }\n\n computeSelectionAccess(treeData);\n\n needMore(treeData);\n\n addTitle(treeData);\n\n return treeData;\n },\n\n /**\n * Once the data are loaded and the tree is ready\n * Used to modify them before building the tree.\n *\n * @param {Object} tree - the tree instance\n *\n * @fires layout/tree#ready.taotree\n */\n onload: function onload(tree){\n var $firstClass = $(\".node-class:not(.private):first\", $container);\n var $firstInstance = $(\".node-instance:not(.private):first\", $container);\n var treeState = $container.data('tree-state') || {};\n var selectNode = treeState.selectNode || options.selectNode;\n var nodeSelection = function nodeSelection() {\n //the node to select is given\n if (selectNodeById(selectNode, tree)) {\n return;\n }\n\n //after refreshing tree previously node will be already selected.\n if (tree.selected) {\n return;\n }\n\n //if selectNode was not given and there is no selected node on the tree then try to find node to select:\n\n //try to select the last one\n if (selectNodeById(lastSelected, tree)) {\n return;\n }\n\n //or the 1st instance\n if ($firstInstance.length) {\n return tree.select_branch($firstInstance);\n }\n\n //or something\n tree.select_branch($('.node-class,.node-instance', $container).get(0));\n };\n\n if($firstClass.hasClass('leaf')){\n tree.select_branch($firstClass);\n } else {\n //open the first class\n tree.open_branch($firstClass, false, function(){\n _.delay(nodeSelection, 10); //delay needed as jstree seems to doesn't know the callbacks right now...,\n });\n }\n\n /**\n * The tree is now ready\n * @event layout/tree#ready.taotree\n * @param {Object} [context] - the tree context (uri, classUri)\n */\n $container.trigger('ready.taotree');\n },\n\n /**\n * After a branch is initialized\n */\n oninit : function oninit() {\n //execute initTree action\n if (options.actions && options.actions.init) {\n actionManager.exec(options.actions.init, {\n uri: $container.data('rootnode')\n });\n }\n },\n\n /**\n * Before a branch is opened\n * @param {HTMLElement} node - the opened node\n */\n beforeopen: function beforeopen(node) {\n lastOpened = $(node);\n },\n\n /**\n * A node is selected.\n *\n * @param {HTMLElement} node - the opened node\n * @param {Object} tree - the tree instance\n *\n * @fires layout/tree#change.taotree\n * @fires layout/tree#select.taotree\n */\n onselect: function onselect(node, tree) {\n\n var $node = $(node);\n var classActions = [];\n var nodeId = $node.attr('id');\n var nodeUri = $node.data('uri');\n var $parentNode = tree.parent($node);\n var nodeContext = {\n rootClassUri: options.rootClassUri,\n signature: $node.data('signature')\n };\n\n lastSelected = nodeId;\n\n //mark all unselected\n $('a.clicked', $container)\n .parent('li')\n .not('[id=\"' + nodeId + '\"]')\n .removeClass('clicked');\n\n //the more node makes you load more resources\n if($node.hasClass('more')){\n loadMore($node, $parentNode, tree);\n return false;\n }\n\n //exec the selectClass action\n if ($node.hasClass('node-class')) {\n if ($node.hasClass('closed')) {\n tree.open_branch($node);\n }\n nodeContext.classUri = nodeId;\n nodeContext.classSignature = $node.data('signature');\n nodeContext.id = nodeUri;\n nodeContext.context = ['class', 'resource'];\n\n //Check if any class-level action is defined in the structures.xml file\n classActions = _.intersection(_.pluck(options.actions, 'context'), ['class', 'resource', '*']);\n if (classActions.length > 0) {\n generisRouter.pushNodeState(location.href, uri.decode(nodeContext.classUri));\n executePossibleAction(options.actions, nodeContext, ['delete']);\n }\n }\n\n //exec the selectInstance action\n if ($node.hasClass('node-instance')){\n nodeContext.uri = nodeId;\n nodeContext.classUri = $parentNode.attr('id');\n nodeContext.classSignature = $parentNode.data('signature');\n nodeContext.id = nodeUri;\n nodeContext.context = ['instance', 'resource'];\n\n //the last selected node is stored\n store('taotree').then(function(treeStore){\n treeStore.setItem(context.section, nodeId).then(function(){\n generisRouter.pushNodeState(location.href, uri.decode(nodeContext.uri));\n executePossibleAction(options.actions, nodeContext, ['moveInstance', 'delete']);\n });\n });\n }\n\n /**\n * A node has been selected\n * @event layout/tree#select.taotree\n * @param {Object} [context] - the tree context (uri, classUri)\n */\n $container\n .trigger('select.taotree', [nodeContext])\n .trigger('change.taotree', [nodeContext]);\n\n return false;\n },\n\n //when a node is move by drag n'drop\n onmove: function onmove(node, refNode, type, tree, rollback) {\n if (!options.actions.moveInstance) {\n return false;\n }\n\n //do not move an instance into an instance...\n if ($(refNode).hasClass('node-instance') && type === 'inside') {\n $.tree.rollback(rollback);\n return false;\n }\n\n if (type === 'after' || type === 'before') {\n refNode = tree.parent(refNode);\n }\n\n if (!(refNode instanceof $) && !(refNode instanceof window.HTMLElement)) {\n $.tree.rollback(rollback);\n return false;\n }\n\n //set the rollback data\n setTreeState(_.merge($container.data('tree-state'), {rollback : rollback}));\n\n //execute the selectInstance action\n actionManager.exec(options.actions.moveInstance, {\n uri: $(node).data('uri'),\n destinationClassUri: $(refNode).data('uri'),\n signature: $(node).data('signature'),\n tree: node\n });\n\n $container.trigger('change.taotree');\n }\n }\n };\n\n /**\n * Set up the tree using the defined options\n * @private\n */\n var setUpTree = function setUpTree(){\n return new Promise( function (resolve) {\n\n //bind events from the definition below\n _.forEach(events, function(callback, name){\n $container\n .off(name + '.taotree')\n .on(name + '.taotree', function(){\n callback.apply(this, Array.prototype.slice.call(arguments, 1));\n });\n });\n\n //forward some events\n actionManager.on('refresh', function(node){\n var params = node;\n if(node && node.uri){\n params = {\n loadNode : uri.encode(params.uri)\n };\n }\n\n if($container.is(':visible')){\n $container.trigger('refresh.taotree', [params]);\n }\n });\n\n // workaround to fix dublicate tree bindings on multiple page loads\n if (!$container.hasClass('tree')) {\n\n store('taotree').then(function(treeStore){\n treeStore.getItem(context.section).then(function(node){\n //create the tree\n setTreeState({ loadNode: options.loadNode });\n $container.tree(treeOptions);\n sectionManager.on('show.section', function (section) {\n if (options.sectionId === section.id) {\n $container.trigger('refresh.taotree');\n }\n });\n generisRouter.on('urichange', function(nodeUri, sectionId) {\n if (options.sectionId === sectionId) {\n $container.trigger('refresh.taotree', [{loadNode : uri.encode(nodeUri)}]);\n }\n });\n });\n });\n }\n $container.on('ready.taotree', function() {\n resolve();\n });\n });\n };\n\n /**\n * Set tree state\n * @param treeState\n */\n function setTreeState(treeState) {\n $container.data('tree-state', treeState);\n }\n\n /**\n * Check if a node has access to a type of action regarding it's permissions\n * @private\n * @param {String} actionType - in selectClass, selectInstance, moveInstance and delete\n * @param {Object} node - the node data as recevied from the server\n * @returns {Boolean} true if the action is allowed\n */\n function hasAccessTo(actionType, node){\n var action = options.actions[actionType];\n if(node && action && node.permissions && action.rights){\n return permissionsManager.isContextAllowed(action.rights, {\n uri : node.attributes['data-uri'],\n classUri : node.attributes['data-classUri'],\n id : node.attributes.id\n });\n }\n return true;\n }\n\n /**\n * Check whether the nodes in a tree are selectable. If not, we add the <strong>private</strong> class.\n * @private\n * @param {Object} node - the tree node as recevied from the server\n */\n function computeSelectionAccess(node){\n\n if(_.isArray(node)){\n _.forEach(node, computeSelectionAccess);\n return;\n }\n if(node.type){\n addClassToNode(node, getPermissionClass(node));\n if (!hasAccessTo('moveInstance', node)) {\n addClassToNode(node, 'node-undraggable');\n }\n }\n if(node.children){\n _.forEach(node.children, computeSelectionAccess);\n }\n }\n\n /**\n * Get the CSS class to apply to the node regarding the computed permissions\n * @private\n * @param {Object} node - the tree node\n * @returns {String} the CSS class\n */\n function getPermissionClass(node){\n var nodeId = node.attributes['data-uri'];\n\n var rights = permissionsManager.getRights();\n var count = _.reduce(rights, function(acc, right){\n if(permissionsManager.hasPermission(nodeId, right)){\n acc++;\n }\n return acc;\n }, 0);\n\n if (rights.length === 0 || count === rights.length) {\n return 'permissions-full';\n }\n if(count === 0){\n return 'permissions-none';\n }\n\n return 'permissions-partial';\n }\n\n /**\n * Add a title attribute to the nodes\n * @private\n * @param {Object} node - the tree node as recevied from the server\n */\n function addTitle(node){\n if(_.isArray(node)){\n _.forEach(node, addTitle);\n return;\n }\n if(node.attributes && node.data){\n node.attributes.title = node.data;\n }\n if(node.children){\n _.forEach(node.children, addTitle);\n }\n }\n\n function needMore(node){\n if(_.isArray(node) && lastOpened && lastOpened.length && lastOpened.data('count') > pageRange){\n node.push(moreNode);\n } else {\n if(node.count){\n node.attributes['data-count'] = node.count;\n\n if (node.children && node.count > node.children.length) {\n node.children.push(moreNode);\n }\n }\n if(node.children){\n _.forEach(node.children, needMore);\n }\n if(_.isArray(node)){\n _.forEach(node, needMore);\n }\n }\n }\n\n function loadMore($node, $parentNode, tree){\n var current = $parentNode.children('ul').children('li.node-instance').length;\n var count = $parentNode.data('count');\n var left = count - current;\n var params = _.defaults({\n 'classUri' : $parentNode.attr('id'),\n 'subclasses' : 0,\n 'offset' : current,\n 'limit' : left < 0 ? pageRange : (left < pageRange ? left : pageRange)\n }, serverParams);\n\n $.ajax(tree.settings.data.opts.url, {\n type : tree.settings.data.opts.method,\n dataType : tree.settings.data.type,\n async : tree.settings.data.async,\n data : params\n }).done(function(response){\n var treeData = getTreeData(response);\n if(treeData && _.isArray(treeData.children)){\n treeData = treeData.children;\n }\n if(_.isArray(treeData)){\n _.forEach(treeData, function(newNode){\n if(newNode.type === 'instance'){ //yes the server send also the class, even though I ask him gently...\n tree.create(newNode, $parentNode);\n }\n });\n tree.deselect_branch($node);\n tree.remove($node);\n if(left - treeData.length > 0){\n tree.create(moreNode, $parentNode);\n }\n }\n });\n }\n\n\n /**\n * Function executes first found allowed action for tree node.\n * @param {object} actions - All tree actions\n * @param {object} [context] - Node context\n * @param {object} [context.permissions] - Node permissions\n * @param {object} [context.context] - The context of the action: (class|instance|resource|*)\n * @param {array} exclude - list of actions to be excluded.\n * @returns {undefined}\n */\n function executePossibleAction(actions, nodeContext, exclude) {\n var possibleActions;\n if (!_.isArray(exclude)) {\n exclude = [];\n }\n\n possibleActions = _.filter(actions, function (action, name) {\n var possible = _.contains(nodeContext.context, action.context);\n return possible && !_.contains(exclude, name);\n });\n //execute the first allowed action\n if(possibleActions.length > 0){\n actionManager.exec(possibleActions[0], nodeContext);\n }\n }\n\n function addClassToNode(node, clazz){\n if(node && node.attributes){\n\n node.attributes['class'] = node.attributes['class'] || '';\n\n if(node.attributes['class'].length) {\n node.attributes['class'] = node.attributes['class'] + ' ' + clazz;\n } else {\n node.attributes['class'] = clazz;\n }\n }\n }\n\n /**\n * Parse a response from a request to get the tree data\n * and extract the permissions if given\n * @param {Object} response - from a request\n * @returns {Object} the tree data\n */\n function getTreeData(response){\n var treeData = response.tree || response;\n var currentRights;\n\n if(response.permissions){\n currentRights = permissionsManager.getRights();\n\n if(response.permissions.supportedRights &&\n response.permissions.supportedRights.length &&\n currentRights.length === 0) {\n\n permissionsManager.setSupportedRights(response.permissions.supportedRights);\n\n }\n if(response.permissions.data){\n permissionsManager.addPermissions(response.permissions.data);\n }\n }\n return treeData;\n }\n\n /**\n * @param {String} id\n * @param {Object} tree\n *\n * @returns {Boolean} Whether or not the selection succeed\n */\n function selectNodeById(id, tree) {\n var $node;\n\n if (!id) {\n return false;\n }\n\n $node = $('#' + id, $container);\n\n if(!$node.length || $node.hasClass('private')){\n return false;\n }\n\n tree.select_branch($node);\n\n return true;\n }\n\n return setUpTree();\n }\n };\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2014-2017 Open Assessment Technologies SA;\n */\n\n/**\n * Tree provider : resource-selector\n *\n * @author Bertrand Chevrier <bertrand@taotesting.com>\n */\ndefine('layout/tree/provider/resourceSelector',[\n 'lodash',\n 'i18n',\n 'core/promise',\n 'core/store',\n 'core/logger',\n 'layout/actions',\n 'layout/generisRouter',\n 'layout/permissions',\n 'provider/resources',\n 'ui/resource/selector'\n], function(_, __, Promise, store, loggerFactory, actionManager, generisRouter, permissionsManager, resourceProviderFactory, resourceSelectorFactory){\n 'use strict';\n\n var logger = loggerFactory('layout/tree/provider/resourceSelector');\n\n var resourceProvider = resourceProviderFactory();\n\n /**\n * The resource-selector tree provider\n */\n return {\n\n /**\n * Tree provider name\n */\n name : 'resource-selector',\n\n /**\n * Init is the tree provider entry point\n * @param {jQueryElement} $container - that will contain the tree\n * @param {Object} [options] - additional configuration options\n * @param {String} [options.id] - the tree identifier\n * @param {String} [options.url] - the endpoint to load data\n * @param {String} [options.rootClassUri] - the URI of the root class\n * @param {Object} [options.actions] - which actions to perform from the tree\n * @param {String} [options.loadNode] - the URI of the node to select by default\n * @param {String} [options.sectionId] - the section the selector belongs to\n * @returns {Promise} resolves when the tree is rendered\n */\n init: function init($container, options){\n\n return new Promise(function(resolve){\n\n store('taotree').then(function(treeStore){\n\n return Promise.all([\n resourceProvider.getClasses(options.rootClassUri),\n resourceProvider.getClassProperties(options.rootClassUri),\n treeStore.getItem(options.id)\n ])\n .then(function(results) {\n var classes = results[0];\n var filters = results[1];\n var defaultNode = results[2];\n var preloadNode = typeof options.loadNode !== 'undefined';\n\n resourceSelectorFactory($container, {\n icon : options.icon || 'test',\n searchPlaceholder : __('Filter'),\n selectionMode: 'both',\n selectClass : true,\n classUri: options.rootClassUri,\n classes: classes,\n filters: filters\n })\n .on('init', function(){\n actionManager.exec(options.actions.init, {\n uri: options.rootClassUri\n });\n })\n .on('render', function() {\n var self = this;\n\n actionManager.on('removeNodes', function(actionContext, nodes){\n\n //make the component in loading state\n //to prevent handling intermediate changes\n self.setState('loading', true);\n\n _.forEach(nodes, self.removeNode, self);\n self.changeSelectionMode('single');\n\n self.setState('loading', false);\n self.selectDefaultNode(defaultNode);\n });\n actionManager.on('removeNode', function(actionContext, node){\n self.removeNode(node);\n self.selectDefaultNode(defaultNode);\n });\n actionManager.on('subClass instanciate duplicateNode', function(actionContext, node){\n self\n .after('update.add', function() {\n self.off('update.add');\n self.select(node);\n })\n .changeSelectionMode('single')\n .query({classUri: node.classUri});\n });\n actionManager.on('copyTo moveTo', function(actionContext, node){\n self.refresh(node || defaultNode);\n });\n actionManager.on('refresh', function(node){\n self.refresh(node || defaultNode);\n });\n\n generisRouter.on('urichange', function(nodeUri, sectionId) {\n if (options.sectionId === sectionId) {\n self.refresh(nodeUri);\n }\n });\n\n resolve();\n })\n .on('query', function(params) {\n var self = this;\n\n if(preloadNode){\n params.selectedUri = options.loadNode;\n preloadNode = false;\n }\n\n //ask the server the resources from the component query\n resourceProvider.getResources(params, true)\n .then(function(resources) {\n self.update(resources, params);\n })\n .catch(function(err) {\n logger.error(err);\n });\n })\n .on('update.first', function(){\n\n this.off('update.first');\n\n //on the 1st update we select the default node\n //or fallback on 1st instance, or even 1st class\n this.selectDefaultNode(options.loadNode || defaultNode);\n })\n .on('selectionmodechange', function(mode) {\n if (mode === 'single' && defaultNode) {\n this.selectDefaultNode(defaultNode);\n }\n })\n .on('change', function(selection) {\n var self = this;\n var length = _.size(selection);\n var getContext = function getContext(resource) {\n return _.defaults(resource, {\n id : resource.uri,\n rootClassUri : self.classUri\n });\n };\n\n //ignore changes while loading or modifying the selector\n if(self.is('loading')){\n return;\n }\n\n if(length === 1){\n _.forEach(selection, function(resource) {\n var selectedContext = getContext(resource);\n actionManager.updateContext(selectedContext);\n\n if(selectedContext.type === 'class'){\n actionManager.exec(options.actions.selectClass, selectedContext);\n }\n if(selectedContext.type === 'instance'){\n actionManager.exec(options.actions.selectInstance, selectedContext);\n }\n\n generisRouter.pushNodeState(location.href, resource.uri);\n\n defaultNode = resource;\n treeStore.setItem(options.id, defaultNode);\n });\n } else {\n actionManager.updateContext( _.transform(selection, function(acc, resource){\n acc.push(getContext(resource));\n return acc;\n }, []));\n }\n })\n .on('error', function(err){\n logger.error(err);\n });\n });\n });\n });\n }\n };\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2017 Open Assessment Technologies SA;\n */\n\n/**\n * Loads and register the different tree implementations\n *\n * @author Bertrand Chevrier <bertrand@taotesting.com>\n */\ndefine('layout/tree/loader',[\n 'module',\n 'core/providerRegistry',\n 'layout/tree/provider/jstree',\n 'layout/tree/provider/resourceSelector'\n], function(module, providerRegistry, jsTreeProvider, resourceSelectorProvider){\n 'use strict';\n\n /**\n * If not config is set, this is the default tree provider\n */\n var defaultProvider = 'jstree';\n\n /**\n * Contains all tree providers\n */\n var treeProviderRegistry = providerRegistry({});\n\n /**\n * Check whether a provider exists\n * @param {String} providerName - the name of the provider\n * @returns {Boolean} true if the provider is registered\n */\n var providerExists = function providerExists(providerName){\n return providerName && treeProviderRegistry.getAvailableProviders().indexOf(providerName) !== -1;\n };\n\n //manually register the providers\n treeProviderRegistry.registerProvider(jsTreeProvider.name, jsTreeProvider);\n treeProviderRegistry.registerProvider(resourceSelectorProvider.name, resourceSelectorProvider);\n\n /**\n * Let's you load either the default tree provider or a specific one\n * @param {String} [providerName] - the name of the provider\n * @returns {treeProvider} the provider\n */\n return function loadTree(providerName){\n var providerToLoad = defaultProvider;\n var config = module.config();\n\n if(providerExists(providerName)){\n providerToLoad = providerName;\n } else if (providerExists(config.treeProvider)){\n providerToLoad = config.treeProvider;\n }\n return treeProviderRegistry.getProvider(providerToLoad);\n };\n});\n\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2015 (original work) Open Assessment Technologies SA ;\n *\n */\n\n/**\n * @author Dieter Raber <dieter@taotesting.com>\n * @author Bertrand Chevrier <bertrand@taotesting.com>\n */\ndefine('layout/section-height',[\n 'jquery',\n 'lodash'\n], function ($, _) {\n\n 'use strict';\n\n\n var $versionWarning = $('.version-warning:visible'),\n $window = $(window),\n $footer = $('body > footer');\n\n /**\n * Bar with the tree actions (providing room for at least two rows of buttons)\n *\n * @returns {number}\n */\n function getTreeActionIdealHeight() {\n var $visibleActionBarBox = $('.tree-action-bar-box'),\n $visibleActionBar = $visibleActionBarBox.find('.tree-action-bar'),\n $mainButtons = $visibleActionBar.find('li'),\n $visibleButtons = $mainButtons.filter(':visible'),\n // at least two rows\n $requiredRows = Math.max(Math.ceil($mainButtons.length/4), 2),\n idealHeight;\n\n if(!$visibleButtons.length) {\n $visibleButtons = $('<li class=\"dummy\"><a/></li>');\n $visibleActionBar.append($visibleButtons);\n }\n\n idealHeight = ($visibleButtons.outerHeight(true) * $requiredRows) +\n parseInt($visibleActionBarBox.css('margin-bottom')) +\n parseInt($visibleActionBarBox.css('margin-top'));\n\n $visibleActionBarBox.find('.dummy').remove();\n\n return idealHeight;\n }\n\n\n /**\n * Compute the height of the navi- and content container\n *\n * @param $scope jQueryElement\n * @returns {number}\n */\n function getContainerHeight($scope) {\n var winHeight = $window.innerHeight(),\n footerHeight = $footer.outerHeight(),\n headerHeight = $('header.dark-bar').outerHeight() + ($versionWarning.length ? $versionWarning.outerHeight() : 0),\n actionBarHeight = $scope.find('.content-container .action-bar').outerHeight(),\n $tabs = $('.section-container > .tab-container:visible'),\n tabHeight = $tabs.length ? $tabs.outerHeight() : 0;\n\n return winHeight - headerHeight - footerHeight - actionBarHeight - tabHeight;\n }\n\n\n /**\n * Resize section heights\n * @private\n * @param {jQueryElement} $scope - the section scope\n */\n function setHeights($scope) {\n var containerHeight = getContainerHeight($scope),\n $contentBlock = $scope.find('.content-block'),\n $tree = $scope.find('.taotree');\n var treeHeight;\n\n if (!$tree.length) {\n return;\n }\n\n\n $contentBlock.css( { height: containerHeight, maxHeight: containerHeight });\n treeHeight = containerHeight - getTreeActionIdealHeight();\n $tree.css({ maxHeight: treeHeight });\n\n //bad hack, but the entire module is a joke, so it doesn't hurt that much\n if($tree.data('type') === 'resource-selector'){\n $tree.css({ height: treeHeight });\n }\n }\n\n /**\n * Helps you to manage the section heights\n * @exports layout/section-height\n */\n return {\n\n /**\n * Initialize behaviour of section height\n * @param {jQueryElement} $scope - the section scope\n */\n init: function ($scope) {\n\n\n $window\n .off('resize.sectionheight')\n .on('resize.sectionheight', _.debounce(function () {\n setHeights($scope);\n }, 50));\n\n $versionWarning\n .off('hiding.versionwarning')\n .on('hiding.versionwarning', function () {\n $versionWarning = $('.version-warning:visible');\n setHeights($scope);\n });\n\n // Resizing the section can cause scroll bars to appear\n // and hence the viewport might change. This in return could\n // cause the <nav>s to nudge\n $(window).trigger('resize.navheight');\n },\n\n /**\n * Resize section heights\n * @param {jQueryElement} $scope - the section scope\n */\n setHeights: setHeights\n };\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2014-2017 Open Assessment Technologies SA;\n */\n\n/**\n * Main controller for the backend\n *\n * @author Bertrand Chevrier <bertrand@taotesting.com>\n */\ndefine('controller/main',[\n 'module',\n 'jquery',\n 'lodash',\n 'context',\n 'core/router',\n 'helpers',\n 'uiForm',\n 'util/url',\n 'core/logger',\n 'ui/feedback',\n 'layout/generisRouter',\n 'layout/section',\n 'layout/actions',\n 'layout/version-warning',\n 'layout/loading-bar',\n 'layout/nav',\n 'layout/search',\n 'layout/tree/loader',\n 'layout/section-height',\n], function(module, $, _, context, router, helpers, uiForm, urlUtil, loggerFactory, feedback, generisRouter, sections, actionManager,versionWarning, loadingBar, nav, search, treeLoader, sectionHeight){\n 'use strict';\n\n const logger = loggerFactory('controller/main');\n\n /**\n * Loads and set up the given tree for a section, based on the tree provider\n * @param {jQueryElement} $container - the tree container with accurate data-attr\n * @param {Object} section - the section the tree belongs to\n * @param {String} section.id - id of the section\n * @param {String} [section.defaultUri] - the URI of the node to select by default\n * @returns {Promise} that resolves once rendered\n */\n const sectionTree = function sectionTree($container, section) {\n\n //get the tree actions\n const treeActions = _.reduce($container.data('actions'), (acc, id, key) => {\n const action = actionManager.getBy(id);\n if(action){\n acc[key] = action;\n }\n return acc;\n }, {});\n\n const treeUrl = urlUtil.build([context.root_url, $container.data('url')]);\n\n const treeType = $container.data('type');\n\n //get the current tree based on the type attr, or fallback to jstree\n const treeProvider = treeLoader(treeType);\n\n if(!treeType){\n //fill with the default value\n $container.data('type', treeProvider.name);\n }\n\n return treeProvider.init($container, {\n id : $container.attr('id'),\n url : treeUrl,\n rootClassUri : $container.data('rootnode'),\n icon : $container.data('icon'),\n actions : treeActions,\n sectionId : section.id,\n loadNode : section.defaultUri\n });\n };\n\n /**\n * Handle errors by displaying an entry in the logger\n * and a message to the user\n *\n * @param {Error} err - the caught error\n */\n const handleError = function handleError(err) {\n logger.error(err);\n feedback().error(err);\n };\n\n /**\n * This controller initialize all the layout components used by the backend : sections, actions, tree, loader, etc.\n * @exports tao/controller/main\n */\n return {\n start() {\n\n const config = module.config();\n const $doc = $(document);\n\n versionWarning.init();\n generisRouter.init();\n\n //just before an ajax request\n $doc.ajaxSend( () => loadingBar.start() );\n\n //when an ajax request complete\n $doc.ajaxComplete( () => loadingBar.stop() );\n\n //navigation bindings\n nav.init();\n\n actionManager.on('error', handleError);\n\n actionManager.on('contextchange', actionContext => {\n // in case of multi selection, the main panel should be empty\n if (_.isArray(actionContext) && actionContext.length !== 1) {\n sections.current().updateContentBlock('<div class=\"main-container flex-container-form-main\"></div>');\n }\n });\n\n //initialize sections\n sections.on('activate', section => {\n window.scrollTo(0, 0);\n\n // quick work around issue in IE11\n // IE randomly thinks there is no id and throws an error\n // I know it's not logical but with this 'fix' everything works fine\n if (!section || !section.id) {\n return;\n }\n\n context.section = section.id;\n\n //initialize actions\n actionManager.init(section.panel);\n\n\n //search component\n search.init(section.id);\n\n switch (section.type) {\n case 'tree':\n section.panel.addClass('content-panel');\n sectionHeight.init(section.panel);\n\n //set up the tree\n $('.taotree', section.panel).each(function() {\n const $treeElt = $(this);\n const $actionBar = $('.tree-action-bar-box', section.panel);\n\n sectionTree($treeElt, section)\n .then(() => {\n $actionBar.addClass('active');\n sectionHeight.setHeights(section.panel);\n })\n .catch(handleError);\n });\n\n $('.navi-container', section.panel).show();\n break;\n case 'content':\n\n //or load the content block\n sections.loadContentBlock();\n break;\n }\n })\n .init();\n\n //initialize legacy components\n helpers.init();\n uiForm.init();\n\n //dispatch also extra registered controllers\n if(config && _.isArray(config.extraRoutes) && config.extraRoutes.length){\n router.dispatch(config.extraRoutes);\n }\n }\n };\n});\n\n","/** \n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n * \n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n * \n * Copyright (c) 2015 (original work) Open Assessment Technologies SA;\n * \n */\n\n/**\n * Recovery password page controller\n * @author Aleh Hutnikau <hutnikau@1pt.com>\n */\ndefine('controller/passwordRecovery',[\n 'jquery',\n 'i18n',\n 'module',\n 'ui/feedback',\n 'layout/version-warning'\n], function ($, __, module, feedback, versionWarning) {\n 'use strict';\n var conf = module.config(),\n feedbackType;\n\n versionWarning.init();\n if (conf.message) {\n for (feedbackType in conf.message) {\n if (conf.message[feedbackType]) {\n feedback()[feedbackType](conf.message[feedbackType]);\n }\n }\n }\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2014 (original work) Open Assessment Technologies SA (under the project TAO-PRODUCT);\n *\n *\n */\n\n//@see http://forge.taotesting.com/projects/tao/wiki/Front_js\ndefine('controller/routes',[],function(){\n 'use strict';\n\n return {\n 'Main': {\n 'actions' : {\n 'index' : 'controller/main',\n 'entry' : 'controller/entry',\n 'getSectionActions' : 'controller/main/actions',\n 'getSectionTrees' : 'controller/main/trees',\n 'login' : 'controller/login'\n }\n },\n 'PasswordRecovery': {\n 'actions' : {\n 'index' : 'controller/passwordRecovery'\n },\n },\n 'Lock': {\n 'actions' : {\n 'locked' : 'controller/Lock/locked'\n }\n },\n 'ExtensionsManager' : {\n 'actions' : {\n 'index' : 'controller/settings/extensionManager'\n }\n },\n 'Users' : {\n 'deps' : 'controller/users/disable-edit',\n 'actions' : {\n 'index' : 'controller/users/index',\n 'add' : 'controller/users/add'\n }\n },\n 'Security' : {\n 'actions' : {\n 'index' : 'controller/security/cspHeaderForm'\n }\n },\n };\n});\n\n","define('controller/security/cspHeaderForm',[\n 'jquery',\n 'lodash',\n 'i18n',\n 'ui/feedback',\n 'ui/tooltip'\n],\nfunction($, _, __, feedback, tooltip) {\n 'use strict';\n\n\n function initializeForm() {\n var $form = $('form#cspHeader'),\n $formSourceList = $form.find('#iframeSourceDomains').parent(),\n $formRadioOptions = $form.find('input[name=iframeSourceOption]'),\n $selectedRadio;\n\n // manage radios & visibility of form sections:\n $formSourceList.hide();\n\n $selectedRadio = $form.find('input[name=iframeSourceOption]:checked');\n if ($selectedRadio.val() === 'list') {\n $formSourceList.show();\n }\n\n $formRadioOptions.on('click', function() {\n var selectedValue = $(this).val();\n $formSourceList.toggle(selectedValue === 'list');\n });\n\n // handle submit:\n $form.on('submit', _submitForm);\n }\n\n function _submitForm(event) {\n var $form = $('form#cspHeader');\n event.preventDefault();\n\n $.ajax({\n url: $form.attr('action'),\n method: 'POST',\n success: function(data) {\n $form.closest('.content-block').html(data);\n setTimeout(_showFeedback, 250);\n },\n fail: function() {\n feedback().error(__('Form data not saved.'));\n }\n });\n }\n\n function _showFeedback() {\n // DOM content was probably renewed, so make sure we have a fresh reference:\n var $form = $('form#cspHeader');\n var $formTextArea = $form.find('#iframeSourceDomains');\n var $formErrors = $form.find('.form-error');\n var tooltipOptions;\n\n // handle errors:\n if ($formErrors.length > 0) {\n tooltipOptions = {\n trigger: 'click',\n closeOnClickOutside: true,\n placement: 'right'\n };\n tooltip.error($formTextArea, $formErrors.html(), tooltipOptions).show();\n $formErrors.remove();\n }\n else {\n feedback().success(__('Saved.'));\n }\n }\n\n return {\n start : initializeForm\n };\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2013-2019 (original work) Open Assessment Technologies SA ;\n */\n\n/**\n * Extension manager controller\n */\ndefine('controller/settings/extensionManager',[\n 'jquery',\n 'i18n',\n 'util/url',\n 'ui/feedback',\n 'ui/modal'\n], function($, __, urlUtil, feedback){\n 'use strict';\n\n var ext_installed = [];\n var toInstall = [];\n var indexCurrentToInstall = -1;\n var percentByExt = 0;\n var installError = 0;\n\n function getDependencies(extension) {\n var dependencies = [];\n $('#' + extension + ' .dependencies li:not(.installed)').each(function() {\n var ext = $(this).attr('rel');\n var deps = getDependencies(ext);\n deps.push(ext);\n dependencies = dependencies.concat(deps);\n });\n return dependencies;\n }\n\n //Give an array with unique values\n function getUnique(orig){\n var a = [];\n var i;\n for (i = 0; i < orig.length; i++) {\n if ($.inArray(orig[i], a) < 0) a.push(orig[i]);\n }\n return a;\n }\n\n function progressConsole(msg) {\n $('#installProgress .console').append('<p>' + msg + '</p>');\n $('#installProgress .console').prop({scrollTop: $('#installProgress .console').prop(\"scrollHeight\")});\n }\n\n function installNextExtension() {\n var ext = toInstall[indexCurrentToInstall];\n $('#installProgress p.status').text(__('Installing extension %s...').replace('%s', ext));\n progressConsole(__('Installing extension %s...').replace('%s', ext));\n $.ajax({\n type: \"POST\",\n url: urlUtil.route('install', 'ExtensionsManager', 'tao'),\n data: 'id='+ext,\n dataType: 'json',\n success: function success(data) {\n\n if (data.success) {\n progressConsole(__('> Extension %s succesfully installed.').replace('%s', ext));\n\n // state that the extension is install in remaining dependencies.\n $('li.ext-id.ext-' + ext).addClass('installed');\n\n $('tr#'+ext).slideUp('normal', function() {\n var $tr = $('<tr></tr>').appendTo($('#extensions-manager-container tbody')).hide();\n var $orig = $('tr#' + ext + ' td');\n $tr.append('<td class=\"ext-id bordered\">' + $($orig[0]).text() + '</td>');\n $tr.append('<td class=\"author\">' + $($orig[1]).text() + '</td>');\n $tr.append('<td class=\"version\">' + $($orig[2]).text() + '</td>');\n $tr.slideDown('normal', function() {\n $('tr#' + ext).remove();\n\n // table changed, restyle.\n styleTables();\n\n // If the available extensions table is empty,\n // just inform the user.\n if ($('#available-extensions-container table tbody tr').length === 0){\n noAvailableExtensions();\n }\n\n $('#installProgress .bar').animate({width:'+=' + percentByExt + '%'}, 1000, function() {\n //Next\n indexCurrentToInstall++;\n hasNextExtensionToInstall();\n });\n });\n });\n } else {\n installError = 1;\n progressConsole('Installation of ' + ext + ' failed');\n }\n feedback().info(data.message);\n }\n });\n\n if (installError) {\n progressConsole(__('A fatal error occured during the installation process.'));\n }\n }\n\n function postInstall(){\n progressConsole(__('Post install processing'));\n return $.ajax({\n type: \"GET\",\n url: urlUtil.route('postInstall', 'ExtensionsManager', 'tao')\n });\n }\n\n function hasNextExtensionToInstall() {\n if (indexCurrentToInstall >= toInstall.length) {\n toInstall = [];\n $('#installProgress .bar').animate({backgroundColor:'#bb6',width:'100%'}, 1000);\n\n postInstall().done(function() {\n\n $('#installProgress .bar').animate({backgroundColor:'#6b6'}, 1000);\n $('#installProgress p.status').text(__('Installation done.'));\n progressConsole(__('> Installation done.'));\n progressConsole(__('... reloading page.'));\n\n setTimeout(function(){\n window.location.reload(true);\n }, 1000);\n });\n } else {\n installNextExtension();\n }\n }\n\n function styleTables(){\n // Clean all to make this function able to \"restyle\" after\n // data refresh.\n $('#Extensions_manager table tr').removeClass('extensionOdd')\n .removeClass('extensionEven');\n\n $('#Extensions_manager table tr:nth-child(even)').addClass('extensionEven');\n $('#Extensions_manager table tr:nth-child(odd)').addClass('extensionOdd');\n }\n\n function noAvailableExtensions(){\n var $noAvailableExtElement = $('<div/>');\n $noAvailableExtElement.attr('id', 'noExtensions')\n .addClass('ui-state-highlight')\n .text(__('No extensions available.'));\n\n $('#available-extensions-container').empty().append($noAvailableExtElement);\n }\n\n return {\n start : function start(){\n\n // Table styling.\n styleTables();\n\n $('#installProgress').hide();\n\n //Detect wich extension is already installed\n $('#extensions-manager-container .ext-id').each(function() {\n var ext = $(this).text();\n ext_installed.push(ext);\n $('.ext-id.ext-' + ext).addClass('installed');\n });\n\n $('#available-extensions-container tr input').click(function(event){\n event.stopPropagation();\n });\n\n $('#available-extensions-container tr input:checkbox').click(function() {\n var $installButton = $('#installButton');\n if ($(this).parent().parent().parent().find('input:checkbox:checked').length > 0){\n $installButton.attr('disabled', false);\n }\n else{\n $installButton.attr('disabled', true);\n }\n });\n\n $('#available-extensions-container #installButton').click(function(event) {\n var $modalContainer = $('#installProgress');\n\n event.preventDefault();\n\n //Prepare the list of extension to install in the order of dependency\n toInstall = [];\n $('#available-extensions-container input:checked').each(function() {\n var ext = $(this).prop('name').split('_')[1];\n var deps = getDependencies(ext);\n if (deps.length) {\n toInstall = toInstall.concat(deps);\n }\n toInstall.push(ext);\n });\n toInstall = getUnique(toInstall);\n if (!toInstall.length) {\n window.alert(__('Nothing to install !'));\n return false;\n }\n //Let's go\n percentByExt = 100 / toInstall.length;\n\n //Show the dialog with the result\n $('.status', $modalContainer).text(__('%s extension(s) to install.').replace('%s', toInstall.length));\n $('.bar', $modalContainer).width(0);\n $('.console', $modalContainer).empty();\n\n progressConsole(__('Do you wish to install the following extension(s):\\n%s?').replace('%s', toInstall.join(', ')));\n\n $('[data-control=cancel]', $modalContainer).on('click', function(e){\n e.preventDefault();\n $modalContainer.modal('close');\n });\n $('[data-control=confirm]', $modalContainer).on('click', function(e){\n e.preventDefault();\n progressConsole(__('Preparing installation...'));\n $('.buttons', $modalContainer).remove();\n installError = 0;\n indexCurrentToInstall = 0;\n installNextExtension();\n });\n\n $modalContainer.modal({\n width : 400,\n height : 300,\n top : 150,\n disableEscape : true,\n disableClosing : true\n });\n });\n }\n };\n});\n\n","define('users',['jquery', 'i18n', 'context'], function($, __, context){\n\n /**\n * Enable you to check if the login contained in the field identified by id is unique\n * An ajax request is sent to the url with the login and a JSON response <code>{\"available\": \"true\"}</code>\n * @param id\n * @param url\n * @return void\n */\n function checkLogin(id, url){\n var $login = $(\"input[id='\" + id + \"']\");\n if($login.length > 0){\n $login.blur(function(){\n var elt = $(this);\n\n // trim value\n var trimmedValue = elt.val().replace(/^\\s+/g,'').replace(/\\s+$/g,'');\n var value = elt.val();\n $('input#http_2_www_0_tao_0_lu_1_Ontologies_1_generis_0_rdf_3_login ~ div.form-error').remove();\n if(trimmedValue === ''){\n $('span.login-info').remove();\n } else{\n $.postJson(url,\n { login: value },\n function(data){\n $('span.login-info').remove();\n if(data.available){\n elt.after(\"<span class='login-info'><img src='\"+context.taobase_www+\"img/tick.png' /> \" + __('Login available') + \"</span>\");\n } else{\n elt.after(\"<span class='login-info ui-state-error'><img src='\"+context.taobase_www+\"img/exclamation.png' class='icon' /> \" + __('This Login is already in use') + \"</span>\");\n }\n }\n );\n }\n });\n }\n }\n\n return {\n checkLogin : checkLogin\n };\n});\n\n","/**\n * @author Bertrand Chevrier <bertrand@taotesting.com>\n */\ndefine('controller/users/add',['jquery', 'module', 'helpers', 'users'], function($, module, helpers, users) {\n 'use strict';\n \n \n /**\n * The user add controller\n * @exports controller/users/add\n */ \n return {\n start : function(){\n var conf = module.config();\n var url = helpers._url('checkLogin', 'Users', 'tao');\n users.checkLogin(conf.loginId, url);\n \n if(conf.exit === true){\n\n setTimeout(function(){\n //TODO would be better to clean up the form and switch the section\n window.location = helpers._url('index', 'Main', 'tao', {structure: 'users', ext : 'tao', section : 'list_users'});\n }, 1000);\n }\n }\n };\n});\n\n","/**\n * @author Bertrand Chevrier <bertrand@taotesting.com>\n */\ndefine('controller/users/disable-edit',['layout/section'], function(section) {\n 'use strict';\n \n /**\n * Ensure edit section is disabled\n * @exports controller/users/disable-edit\n */ \n return {\n start : function(){\n section.get('edit_user').disable();\n }\n };\n});\n\n","/**\n * @author Jérôme Bogaert <jerome@taotesting.com>\n * @author Bertrand Chevrier <bertrand@taotesting.com>\n */\ndefine('controller/users/index',[\n 'jquery',\n 'lodash',\n 'i18n',\n 'util/url',\n 'layout/section',\n 'core/request',\n 'ui/feedback',\n 'ui/dialog/confirm',\n 'ui/datatable'\n], function ($, _, __, urlHelper, section, request, feedback, dialogConfirm) {\n 'use strict';\n\n /**\n * Make a request to the server for a token-protected user action\n * @param {String} uri - the user uri\n * @param {String} action\n * @param {String} confirmMessage\n */\n var runUserAction = function runUserAction(uri, action, confirmMessage) {\n var data = {\n uri: uri\n };\n\n dialogConfirm(confirmMessage, function() {\n request({\n url: urlHelper.route(action, 'Users', 'tao'),\n data: data,\n method: 'POST'\n })\n .then(function(response) {\n if (response.success) {\n feedback().success(response.message);\n }\n $('#user-list').datatable('refresh');\n })\n .catch(function(err) {\n feedback().error(err);\n });\n });\n };\n\n /**\n * Edit a user (shows the edit section)\n * @param {String} uri - the user uri\n */\n var editUser = function editUser(uri) {\n section\n .get('edit_user')\n .enable()\n .loadContentBlock(urlHelper.route('edit', 'Users', 'tao'), {uri : uri})\n .show();\n };\n\n /**\n * Removes a user\n * @param {String} uri - the user uri\n * @param row\n */\n var removeUser = function removeUser(uri, row) {\n runUserAction(uri, 'delete', __('Please confirm deletion of user %s', row.login));\n };\n\n /**\n * Locks a user\n * @param {String} uri - the user uri\n * @param row\n */\n var lockUser = function lockUser(uri, row) {\n runUserAction(uri, 'lock', __('Please confirm locking of account %s', row.login));\n };\n\n /**\n * Unlocks blocked user\n * @param {String} uri - the user uri\n * @param row\n */\n var unlockUser = function unlockUser(uri, row) {\n runUserAction(uri, 'unlock', __('Please confirm unlocking of account %s', row.login));\n };\n\n /**\n * The user index controller\n * @exports controller/users/index\n */\n return {\n start : function(){\n var $userList = $('#user-list');\n\n section.on('show', function (section) {\n if (section.id === 'list_users') {\n $userList.datatable('refresh');\n }\n });\n\n var actions = {\n edit: editUser,\n remove: removeUser,\n lock: lockUser,\n unlock: unlockUser\n };\n\n // initialize the user manager component\n $userList.on('load.datatable', function (e, dataset) {\n _.forEach(dataset.data, function(row) {\n var lockBtn = '[data-item-identifier=\"' + row.id + '\"] button.lock';\n var unlockBtn = '[data-item-identifier=\"' + row.id + '\"] button.unlock';\n if (row.lockable) {\n $(row.locked ? lockBtn : unlockBtn, $userList).hide();\n } else {\n _.forEach([lockBtn, unlockBtn], function (btn) {\n $(btn, $userList).hide();\n });\n }\n });\n }).datatable({\n url: urlHelper.route('data', 'Users', 'tao'),\n paginationStrategyBottom: 'pages',\n filter: true,\n actions: actions,\n model: [\n {\n id : 'login',\n label : __('Login'),\n sortable : true\n },{\n id : 'firstname',\n label : __('First Name'),\n sortable : true\n },{\n id : 'lastname',\n label : __('Last Name'),\n sortable : true\n },{\n id : 'email',\n label : __('Email'),\n sortable : true\n },{\n id : 'roles',\n label : __('Roles'),\n sortable : false\n },{\n id : 'dataLg',\n label : __('Data Language'),\n sortable : true,\n visible : $userList.data('user-data-lang-enabled')\n },{\n id: 'guiLg',\n label : __('Interface Language'),\n sortable : true\n }, {\n id: 'status',\n label: __('Account status'),\n sortable: true,\n transform: function (value) {\n var icon = value === 'enabled'\n ? 'result-ok'\n : 'lock';\n return '<span class=\"icon-' + icon + '\"></span> ' + value;\n }\n }\n ]\n });\n }\n };\n});\n\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2016 (original work) Open Assessment Technologies SA;\n */\n\n/**\n * Basic features checks :\n * - js enabled\n * - ES5 features\n * - DOM and browser API\n *\n *\n * js check hides the 'js-check' box if there's JS and remove the 'no-js' class which hide the content.\n * feature check show the 'browser-check' box as soon as one of the check fails.\n *\n * Uses old school JS to ensure it runs on old old browers.\n */\n(function () {\n 'use strict';\n\n var reqFeedback = document.getElementById('browser-check');\n\n var tests = [{\n name : 'ES5 Global JSON',\n test : function (){\n return 'JSON' in window && typeof JSON.parse === 'function' && typeof JSON.stringify === 'function';\n }\n }, {\n name : 'ES5 Extension',\n test : function (){\n return typeof Function.prototype.bind === 'function' && typeof String.prototype.trim === 'function';\n }\n }, {\n name : 'localstorage',\n test : function (){\n return 'localStorage' in window;\n }\n }, {\n name : 'querySelector',\n test : function (){\n return 'querySelector' in window.document && 'querySelectorAll' in window.document;\n }\n }, {\n name : 'file reader',\n test : function (){\n return 'File' in window && 'FileReader' in window;\n }\n }];\n var testCounter = 0;\n\n document.documentElement.className = document.documentElement.className.replace('no-js', '');\n\n //if one of the test fail, we show the warning\n if(reqFeedback){\n while(testCounter < tests.length){\n if(typeof tests[testCounter].test === 'function' && !tests[testCounter].test()){\n reqFeedback.style.display = 'block';\n reqFeedback.className = reqFeedback.className.replace('hidden', '');\n document.documentElement.className = document.documentElement.className + ' no-js';\n break;\n }\n testCounter++;\n }\n }\n}());\n\n\ndefine(\"layout/requirement-check\", function(){});\n\n","define('report',['jquery', 'context', 'i18n'], function($, context, __){\n 'use strict';\n\n var reportModule = {\n\n fold: function() {\n var $content = $('.report > .feedback-nesting-0 > div');\n var $top = $('.report > .feedback-nesting-0');\n\n if ($content.css('display') === 'none') {\n $content.css('display', 'block');\n $top.css('background-color', 'transparent');\n $top.css('border-color', 'transparent');\n\n $('#fold > span.check-txt').text(__('Hide detailed report'));\n }\n else {\n $content.css('display', 'none');\n if ($top.hasClass('feedback-success')) {\n $top.css('border-color', '#3ea76f');\n $top.css('background-color', '#e6f4ed');\n }\n else if ($top.hasClass('feedback-warning')) {\n $top.css('border-color', '#dfbe7b');\n $top.css('background-color', '#fbf6ee');\n }\n else if ($top.hasClass('feedback-error')) {\n $top.css('border-color', '#c74155');\n $top.css('background-color', '#f8e7e9');\n }\n else {\n // info\n $top.css('border-color', '#3e7da7');\n $top.css('background-color', '#e6eef4');\n }\n\n $('#fold > span.check-txt').text(__('Show detailed report'));\n }\n }\n }\n\n return reportModule;\n});\n","define('serviceApi/PseudoStorage',[],function(){\n \n function PseudoStorage() {\n }\n\n PseudoStorage.prototype.get = function(callback){\n if (typeof callback === 'function') {\n callback(null);\n }\n return null;\n };\n\n PseudoStorage.prototype.set = function(state, callback){\n if (typeof callback === \"function\") {\n callback();\n }\n };\n\n return PseudoStorage;\n});\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2014 (original work) Open Assessment Technologies SA (under the project TAO-PRODUCT);\n */\ndefine('serviceApi/ServiceApi',['jquery', 'util/urlParser'], function($, UrlParser){\n 'use strict';\n\n /**\n * @constructor\n */\n function ServiceApi(baseUrl, parameters, serviceCallId, stateStorage, userService, paused){\n this.baseUrl = baseUrl;\n this.parameters = parameters;\n this.connected = false;\n\n this.serviceCallId = serviceCallId;\n this.state = stateStorage;\n this.userService = userService;\n this.hasBeenPaused = paused;\n }\n\n ServiceApi.SIG_SUCCESS = 0;\n ServiceApi.SIG_ERROR = 1;\n\n ServiceApi.prototype.loadInto = function(frame, connected){\n var self = this;\n var $frame = $(frame);\n var callUrl = this.getCallUrl();\n var isCORSAllowed = new UrlParser(callUrl).checkCORS();\n\n $frame.on('load', function(e){\n //if we are in the same domain, we add a variable\n //to the frame window, so the frame knows it can communicate\n //with the parent\n $(document).on('serviceready', function(){\n self.connect(frame, function(){\n $(document).off('serviceready');\n if(typeof connected === 'function'){\n connected();\n }\n });\n });\n if(isCORSAllowed === true){\n frame.contentWindow.__knownParent__ = true;\n }\n });\n\n $frame.attr('src', callUrl);\n };\n\n ServiceApi.prototype.connect = function(frame, connected){\n if(this.connected === false && frame.contentWindow){\n //frame.contentWindow.serviceApi = this;\n if (typeof(frame.contentWindow.onServiceApiReady) === \"function\") {\n frame.contentWindow.onServiceApiReady(this);\n this.connected = true;\n if(typeof connected === 'function'){\n connected();\n }\n }\n }\n };\n\n /**\n * Get the service call URL\n * @returns {String} the URI\n */\n ServiceApi.prototype.getCallUrl = function(){\n var params = this.parameters || {};\n params.serviceCallId = this.serviceCallId;\n return this.baseUrl + '?' + $.param(params);\n };\n\n ServiceApi.prototype.getUserPropertyValues = function(property, callback){\n \tthis.userService.get(property, callback);\n };\n\n //Context\n ServiceApi.prototype.getServiceCallId = function(){\n return this.serviceCallId;\n };\n\n //Context\n ServiceApi.prototype.getState = function(){\n return this.state.get();\n };\n\n ServiceApi.prototype.setState = function(state, callback){\n return this.state.set(state, callback);\n };\n\n //Context\n ServiceApi.prototype.getHasBeenPaused = function(){\n return this.hasBeenPaused;\n };\n\n ServiceApi.prototype.setHasBeenPaused = function(paused){\n this.hasBeenPaused = paused;\n };\n\n // Variables\n ServiceApi.prototype.getParameter = function(identifier){\n if (typeof(this.parameters[identifier]) !== \"undefined\") {\n return this.parameters[identifier];\n } else {\n return null;\n }\n };\n\n /**\n * Sets a callback on the finish action\n * @param {Function} callback\n * @returns {ServiceApi}\n */\n ServiceApi.prototype.onFinish = function(callback) {\n this.onFinishCallback = callback;\n return this;\n };\n\n /**\n * Sets a callback on the kill action\n * @param {Function} callback\n * @returns {ServiceApi}\n */\n ServiceApi.prototype.onKill = function(callback) {\n this.onKillCallback = callback;\n return this;\n };\n\n /**\n * Sets a callback on the exit action\n * @param {Function} callback\n * @returns {ServiceApi}\n */\n ServiceApi.prototype.onExit = function(callback) {\n this.onExitCallback = callback;\n return this;\n };\n\n /**\n * @param {Function} callback - Function called if no dedicated callback is found\n */\n ServiceApi.prototype.kill = function(callback) {\n \tif (typeof this.onKillCallback === 'function') {\n \t\tthis.onKillCallback(callback);\n \t} else {\n \t\tcallback(0);\n \t}\n };\n\n /**\n * Exits the flow\n * @param {Function} callback - Function called if no dedicated callback is found\n */\n ServiceApi.prototype.exit = function(callback) {\n \tif (typeof this.onExitCallback === 'function') {\n \t\tthis.onExitCallback(callback);\n \t} else {\n \t\tcallback(0);\n \t}\n };\n\n /**\n * Finishes the flow\n * @param valueArray - return parameters of the service.\n */\n ServiceApi.prototype.finish = function(valueArray) {\n //return execution to service caller\n if (typeof this.onFinishCallback === 'function') {\n this.onFinishCallback(valueArray);\n }\n };\n\n return ServiceApi;\n\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2013 (original work) Open Assessment Technologies SA ;\n */\ndefine('serviceApi/StateStorage',['jquery'], function($){\n 'use strict';\n \n function StateStorage(state, submitUrl) {\n this.state = state;\n this.submitUrl = submitUrl;\n }\n\n StateStorage.prototype.get = function(callback){\n if (typeof callback === 'function') {\n callback(this.state);\n }\n return this.state;\n };\n\n StateStorage.prototype.set = function(state, callback){\n\n if (state === this.state) {\n if (typeof callback === \"function\") {\n callback();\n }\n } else {\n this.state = state;\n $.ajax({\n url : this.submitUrl,\n data \t\t: {\n 'state' : state\n },\n type : 'post',\n dataType\t: 'json',\n success : typeof callback === \"function\" ? callback : null\n });\n }\n };\n\n return StateStorage;\n});\n","define('serviceApi/UserInfoService',['jquery'], function($){\n \n function UserInfoService(requestUrl, data) {\n this.data = data;\n this.requestUrl = requestUrl;\n }\n\n UserInfoService.prototype.get = function(property, callback){\n if (this.data.hasOwnProperty(property)) {\n if (typeof callback === \"function\") {\n callback(this.data[property]);\n }\n } else {\n $.ajax({\n url : this.requestUrl,\n data \t\t: {\n 'property' : property\n },\n type : 'post',\n dataType\t: 'json',\n success : (function(service, callback) {return function(r) {\n \t\tfor (key in r.data) {\n \t\t\tservice.data[key] = r.data[key];\n \t\t}\n if (typeof callback === \"function\") {\n callback(service.data[property]);\n }\n\n }})(this, callback)\n /*\t\n \tfunction(r){\n if(r.success){\n \tconsole.log(this.data);\n \tthis.data[property] = r.values;\n \t//console.log(this.data);\n\t if (typeof callback === \"function\") {\n\t callback(this.data[property]);\n\t }\n }\n }\n */\n \n \n });\n }\n };\n\n return UserInfoService;\n});\n","/**\n * Mother class of Generis Trees\n *\n * @require jquery >= 1.4.2 [http://jquery.com/]\n * @require jstree = 0.9.9a2 [http://jstree.com/]\n *\n * @author Jehan Bihini\n * @deprecated use layout/tree instead\n */\ndefine('generis.tree',['jquery', 'i18n', 'class'], function($, __, Class) {\n\tvar GenerisTreeClass = Class.extend({\n\t\t/**\n\t\t * Constructor\n\t\t * @param {String} selector the jquery selector of the tree container\n\t\t * @param {String} dataUrl the url to call, it must provide the json data to populate the tree\n\t\t * @param {Object} options\n\t\t * @param {Object} treeOptions\n\t\t */\n\t\tinit: function(selector, dataUrl, options, treeOptions) {\n\t\t\tvar self = this;\n\n\t\t\tthis.STATE_BROWSING = 0;\n\t\t\tthis.STATE_FILTERING = 1;\n\n\t\t\tthis.selector = selector;\t //jsquery selector of the tree\n\t\t\tthis.options = options;\t\t //options\n\t\t\tthis.dataUrl = dataUrl;\t\t //Url used to get tree data\n\t\t\tthis.metaClasses = [];\t //Store meta data of opened classes\n\t\t\tthis.lastOpened = null;\t\t //Keep a reference of the last opened node\n\t\t\tthis.state = this.STATE_BROWSING; //Generis tree class state, by default browsing\n\n\t\t\t//Paginate the tree or not\n\t\t\tthis.paginate = typeof options.paginate !== 'undefined' ? options.paginate : 0;\n\t\t\t//Options to pass to the server\n\t\t\tthis.serverParameters = (typeof options.serverParameters !== \"undefined\") ? options.serverParameters : new Array ();\n\t\t\t//Default server parameters\n\t\t\tthis.defaultServerParameters = {\n\t\t\t\thideInstances: this.options.hideInstances | false,\n\t\t\t\tfilter: \t\t$(\"#filter-content-\" + options.actionId).val(),\n\t\t\t\toffset:\t\t\t0,\n\t\t\t\tlimit:\t\t\tthis.options.paginate\n\t\t\t};\n\n\t\t\tthis.treeOptions = {\n\t\t\t\tdata: {\n\t\t\t\t\ttype: \"json\",\n\t\t\t\t\tasync : true,\n\t\t\t\t\topts: {\n\t\t\t\t\t\tmethod : \"POST\",\n\t\t\t\t\t\turl: this.dataUrl\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\ttypes: {\n\t\t\t\t\t\"default\" : {\n\t\t\t\t\t\trenameable\t: false,\n\t\t\t\t\t\tdeletable\t: true,\n\t\t\t\t\t\tcreatable\t: true\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tcallback: {\n\t\t\t\t\tbeforeopen: function(NODE, TREE_OBJ) {\n\t\t\t\t\t\tself.lastOpened = NODE;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t $.extend(true, this.treeOptions, treeOptions);\n\n\t\t\t// workaround to fix dublicate tree bindings on multiple page loads\n\t\t\tvar classes = $(selector).attr('class');\n\t\t\tif (typeof classes != 'string' || classes.match('tree') == null) {\n\t\t\t\t$(selector).tree(this.treeOptions);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Create meta from class node\n\t\t * @private\n\t\t */\n\t\tcreateMeta: function(meta) {\n\t\t\tthis.metaClasses[meta.id] = {\n\t\t\t\tdisplayed: meta.displayed ? meta.displayed : 0 // Total of elements displayed\n\t\t\t\t, count: meta.count ? meta.count : 0 // Total of elements in the class\n\t\t\t\t, position: meta.position ? meta.position : 0\t // Position of the last element displayed\n\t\t\t};\n\t\t},\n\n\t\t/**\n\t\t * Extract meta data from received data\n\t\t */\n\t\textractMeta: function(DATA) {\n\t\t\tvar nodes = new Array();\n\t\t\tvar nodeId = null;\n\n\t\t\tif (!(DATA instanceof Array)) {\n\t\t\t\t//An object is received\n\t\t\t\tnodeId = DATA.attributes.id;\n\t\t\t\tif (typeof DATA.children != 'undefined') {\n\t\t\t\t\tnodes = DATA.children;\n\t\t\t\t}\n\t\t\t\tthis.createMeta({id:DATA.attributes.id, count:DATA.count});\n\t\t\t} else {\n\t\t\t\t//An array of nodes is received\n\t\t\t\t// Get the last opened node\n\t\t\t\tif (this.lastOpened && this.state != this.STATE_FILTERING) {\n\t\t\t\t\tnodeId = this.lastOpened.id;\n\t\t\t\t} else {\n\t\t\t\t\tnodeId = \"DEFAULT_ROOT\";\n\t\t\t\t\tthis.createMeta({id:nodeId, count:0});\n\t\t\t\t}\n\t\t\t\tnodes = DATA;\n\t\t\t}\n\n\t\t\t//Extract meta from children\n\t\t\tif (nodes.length !== 0) {\n\t\t\t\t//Number of classes found\n\t\t\t\tvar countClass =0;\n\t\t\t\tfor (var i=0; i < nodes.length; i++) {\n\t\t\t\t\t// if the children is a class, create meta for this class\n\t\t\t\t\tif (nodes[i].type == 'class') {\n\t\t\t\t\t\tthis.extractMeta (nodes[i]);\n\t\t\t\t\t\tcountClass++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tvar countInstances = nodes.length - countClass;\n\t\t\t\tthis.setMeta(nodeId, 'position', countInstances); // Position of the last element displayed\n\t\t\t\tthis.setMeta(nodeId, 'displayed',countInstances); // Total of elements displayed\n\n\t\t\t\tif (!(DATA instanceof Array) && DATA.state && DATA.state != 'closed') {\n\t\t\t\t\tif (this.getMeta(nodeId, 'displayed') < this.getMeta(nodeId, 'count')) {\n\t\t\t\t\t\tnodes.push(this.getPaginateActionNodes());\n\t\t\t\t\t}\n\t\t\t\t} else if ((DATA instanceof Array) && this.getMeta(nodeId, 'displayed') < this.getMeta(nodeId, 'count')) {\n\t\t\t\t\tnodes.push(this.getPaginateActionNodes());\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Set a server parameter\n\t\t * @param {string} key\n\t\t * @param {string} value\n\t\t * @param {boolean} reload Reload the tree after parameter updated\n\t\t */\n\t\tsetServerParameter: function(key, value, reload) {\n\t\t\tthis.serverParameters[key] = value;\n\t\t\tif (typeof(reload)!='undefined' && reload){\n\t\t\t\tthis.isRefreshing = true;\n\t\t\t\tthis.getTree().refresh();\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @return {Object} the tree instance\n\t\t */\n\t\tgetTree: function() {\n\t\t\treturn $.tree.reference(this.selector);\n\t\t},\n\n\t\t/**\n\t\t * Get node's meta data\n\t\t */\n\t\tgetMeta: function(classId, metaName, value) {\n\t\t\treturn this.metaClasses[classId][metaName];\n\t\t},\n\n\t\t/**\n\t\t * Set node's meta data\n\t\t */\n\t\tsetMeta: function(classId, metaName, value) {\n\t\t\tthis.metaClasses[classId][metaName] = value;\n\t\t},\n\n\t\t/**\n\t\t * Get paginate nodes\n\t\t * @return {array}\n\t\t */\n\t\tgetPaginateActionNodes: function() {\n\t\t\treturnValue = [{\n\t\t\t\t'data' : __('all')\n\t\t\t\t\t, 'attributes' : { 'class':'paginate paginate-all' }\n\t\t\t\t},{\n\t\t\t\t\t'data' : this.paginate+__(' next')\n\t\t\t\t\t, 'attributes' : { 'class':'paginate paginate-more' }\n\t\t\t\t}];\n\t\t\treturn returnValue;\n\t\t},\n\n\t\t/**\n\t\t * Show paginate options\n\t\t * @param NODE\n\t\t * @param TREE_OBJ\n\t\t * @private\n\t\t */\n\t\tshowPaginate: function(NODE, TREE_OBJ) {\n\t\t\tvar DATA = this.getPaginateActionNodes();\n\t\t\tfor (var i = 0; i < DATA.length; i++) {\n\t\t\t\tTREE_OBJ.create(DATA[i], TREE_OBJ.get_node(NODE[0]));\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Hide pagination\n\t\t * @param {string} nodeId\n\t\t */\n\t\thidePaginate: function hidePaginate(nodeId) {\n\t\t\t$('#' + nodeId + ' > ul > li.paginate', $(this.selector)).each(function(){\n\t\t\t\t$(this).remove();\n\t\t\t});\n\t\t},\n\n\t\t/**\n\t\t * Refresh pagination, hide and show if required\n\t\t * @param NODE\n\t\t * @param TREE_OBJ\n\t\t * @private\n\t\t */\n\t\trefreshPaginate: function(NODE, TREE_OBJ) {\n\t\t\tvar nodeId = $(NODE)[0].id;\n\t\t\tthis.hidePaginate (nodeId);\n\t\t\tif (this.getMeta(nodeId, \"displayed\") < this.getMeta(nodeId, \"count\")) {\n\t\t\t\tthis.showPaginate(NODE, TREE_OBJ);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Get the Class URI from the tree\n\t\t */\n\t\tgetClassUri: function(NODE) {\n\t\t\tvar parents = $(NODE).parents('li');\n\t\t\tvar classUri = null;\n\t\t\tif (parents.length == 0) classUri = $(NODE).prop('id');\n\t\t\telse classUri = $(parents[0]).prop('id');\n\t\t\treturn classUri;\n\t\t},\n\n\t\tcallGetSectionActions: function(NODE, TREE_OBJ) {\n\t\t\tvar uri = undefined;\n\t\t\tvar classUri = undefined;\n\n\t\t\tif (NODE != undefined) {\n\t\t\t\tif ($(NODE).hasClass('node-class')) {\n\t\t\t\t\tclassUri = $(NODE).prop('id');\n\t\t\t\t} else {\n\t\t\t\t\turi = $(NODE).prop('id');\n\t\t\t\t\tclassUri = this.getClassUri(NODE);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\treturn GenerisTreeClass;\n});\n\n","/**\n * GenerisTreeSelectClass is an easy to use container for the checkbox tree widget,\n * it provides the common behavior for a selectable Class/Instance Rdf resource tree\n *\n * @example new GenerisTreeClass('#tree-container', 'myData.php', {});\n * @see GenerisTreeClass.defaultOptions for options example\n *\n * @require jquery >= 1.3.2 [http://jquery.com/]\n * @require jstree = 0.9.9 [http://jstree.com/]\n *\n * @author Bertrand Chevrier, <bertrand.chevrier@tudor.lu>\n * @author Aliaksandr Katovich, <aliaksandr@taotesting.com>\n * @author Jehan Bihin (class)\n */\n\ndefine('generis.tree.select',[\n 'jquery',\n 'lodash',\n 'i18n',\n 'context',\n 'generis.tree',\n 'helpers',\n 'ui/feedback',\n 'jquery.tree',\n 'lib/jsTree/plugins/jquery.tree.checkbox'\n], function($, _, __, context, GenerisTreeClass, helpers, feedback) {\n var GenerisTreeSelectClass = GenerisTreeClass.extend({\n /**\n * Constructor\n * @param {String} selector the jquery selector of the tree container\n * @param {String} dataUrl the url to call, it must provide the json data to populate the tree\n * @param {Object} options\n */\n init: function(selector, dataUrl, options) {\n this.loadedData = null;\n this.checkedNodes = typeof options.checkedNodes !== 'undefined' ? options.checkedNodes.slice(0) : [];\n this.hiddenNodes = typeof options.hiddenNodes !== 'undefined' ? options.hiddenNodes.slice(0) : [];\n if (options.callback && options.callback.checkPaginate) {\n this.checkPaginate = options.callback.checkPaginate;\n }\n this.checkResourcePermissions =\n typeof options.checkResourcePermissions !== 'undefined' ? options.checkResourcePermissions : false;\n var instance = this;\n\n /**\n * Display priority DISPLAY_SELECTED.\n * Display in priority the previously selected instances ..\n */\n this.DISPLAY_SELECTED = 1;\n\n var treeOptions = {\n types: {\n default: {\n draggable: false\n }\n },\n ui: {\n theme_name: 'checkbox',\n theme_path: context.taobase_www + 'js/lib/jsTree/themes/css/style.css'\n },\n callback: {\n //before check\n beforecheck: function(NODE, TREE_OBJ) {\n var nodeId = $(NODE).prop('id');\n if (instance.isRefreshing) {\n if ($.inArray(nodeId, instance.checkedNodes) === -1) {\n return false;\n }\n }\n\n if (NODE.hasClass('node-class')) {\n if (instance.getMeta(nodeId, 'displayed') !== instance.getMeta(nodeId, 'count')) {\n instance.paginateInstances(NODE, TREE_OBJ, { limit: 0, checkedNodes: '*' });\n return false;\n }\n }\n return true;\n },\n //before check\n beforeuncheck: function(NODE, TREE_OBJ) {\n var nodeId = $(NODE).prop('id');\n var indice = $.inArray(nodeId, instance.checkedNodes);\n\n if (!$(NODE).hasClass('node-class') && indice > -1) {\n instance.checkedNodes.splice(indice, 1);\n }\n\n return true;\n },\n //Before receive data from server, return the POST parameters\n beforedata: function(NODE, TREE_OBJ) {\n var returnValue = instance.defaultServerParameters;\n //If a NODE is given, send its identifier to the server\n if (NODE) {\n returnValue['classUri'] = $(NODE).prop('id');\n }\n //Augment with the serverParameters\n for (var key in instance.serverParameters) {\n if (instance.serverParameters[key] !== null) {\n returnValue[key] = instance.serverParameters[key];\n }\n }\n return returnValue;\n },\n //\n onopen: function(NODE, TREE_OBJ) {\n if (instance.checkedNodes) {\n instance.check(instance.checkedNodes);\n }\n if (instance.options.onOpenCallback) {\n instance.options.onOpenCallback(TREE_OBJ);\n }\n },\n /**\n * Triggered actions when data was loaded\n * @param {Object} TREE_OBJ - the reference to the tree\n */\n onload: function(TREE_OBJ) {\n instance.check(instance.checkedNodes);\n\n if (instance.options.loadCallback) {\n instance.options.loadCallback(TREE_OBJ);\n }\n\n instance.isRefreshing = false;\n },\n onchange: function(NODE, TREE_OBJ) {\n if (instance.options.onChangeCallback && !instance.isRefreshing) {\n instance.options.onChangeCallback(NODE, TREE_OBJ);\n }\n },\n //when a node is selected\n onselect: function(NODE, TREE_OBJ) {\n var servOptions = {};\n var $NODE = $(NODE);\n var $nodeParent = $NODE.parent().parent();\n\n if (instance.serverParameters.hasOwnProperty('order')) {\n servOptions.order = instance.serverParameters.order;\n }\n if (instance.serverParameters.hasOwnProperty('orderdir')) {\n servOptions.orderdir = instance.serverParameters.orderdir;\n }\n if ($NODE.hasClass('paginate-more')) {\n instance.paginateInstances($nodeParent, TREE_OBJ, servOptions);\n return;\n }\n if ($NODE.hasClass('paginate-all')) {\n var parentNodeId = $nodeParent.prop('id');\n servOptions.limit =\n instance.getMeta(parentNodeId, 'count') - instance.getMeta(parentNodeId, 'displayed');\n instance.paginateInstances($nodeParent, TREE_OBJ, servOptions);\n return;\n }\n return true;\n },\n ondata: function(DATA, TREE_OBJ) {\n if (instance.checkResourcePermissions && DATA.permissions) {\n DATA = instance.convertDataWithPermissions(DATA);\n }\n\n //automatically open the children of the received node\n if (DATA.children) {\n DATA.state = 'open';\n }\n\n //saving response data\n instance.loadedData = DATA;\n\n //extract meta data from children\n instance.extractMeta(DATA);\n\n //remove hidden nodes from the data\n instance.removeHiddenNodes(DATA.children || DATA);\n\n return DATA;\n }\n },\n plugins: {\n checkbox: { three_state: true }\n }\n };\n\n //Add server parameters to the treeOptions variable\n for (var i in this.serverParameters) {\n treeOptions.data.opts[i] = this.serverParameters[i];\n }\n\n //create the tree\n this._super(selector, dataUrl, options, treeOptions);\n\n $('#saver-action-' + this.options.actionId).click({ instance: this }, function(e) {\n e.data.instance.saveData();\n });\n },\n /**\n * converts and filter raw data to common format to use it with jquery.tree.js component\n * @returns {Array} - list of tree nodes to form a checkbox list from it\n */\n convertDataWithPermissions: function convertDataWithPermissions(rawData) {\n var converted = rawData;\n var children;\n var filteredChildren;\n var permissions = converted.permissions;\n\n if (converted.tree.children) {\n children = converted.tree.children;\n } else {\n children = converted.tree;\n }\n //checking all the permissions recursively to check if inner classes/instances should be hidden\n filteredChildren = this.checkPermissionsRecursively(children, permissions);\n\n //setting filtered children back\n if (converted.tree.children) {\n converted.tree.children = filteredChildren;\n } else {\n converted.tree = filteredChildren;\n }\n return converted.tree;\n },\n\n /**\n * Check permissions (if applicable) on the tree members\n * @param {Array} children list of nodes\n * @param {Array} permissions list of permissions returned from backend to check against\n * @returns {Array}\n */\n checkPermissionsRecursively: function checkPermissionsRecursively(children, permissions) {\n var filteredChildren = [];\n var recursiveCheck = [];\n\n _.each(children, function(dataObj) {\n var key = dataObj.attributes['data-uri'];\n\n if (dataObj.children && dataObj.children.length > 0) {\n recursiveCheck = checkPermissionsRecursively(dataObj.children, permissions);\n if (permissions.data[key] && permissions.data[key].indexOf('READ') !== -1) {\n dataObj.children = recursiveCheck;\n filteredChildren.push(dataObj);\n }\n } else {\n if (permissions.data[key] && permissions.data[key].indexOf('READ') !== -1) {\n filteredChildren.push(dataObj);\n }\n }\n });\n\n return filteredChildren;\n },\n\n /**\n * Remove configured hidden nodes from the DATA\n * @param {Array} nodes\n */\n removeHiddenNodes: function removeHiddenNodes(nodes) {\n var self = this;\n var hiddenNodes = this.hiddenNodes;\n\n if (_.isArray(nodes) && hiddenNodes && _.isArray(hiddenNodes)) {\n _.remove(nodes, function(node) {\n if (node.type === 'instance') {\n return _.indexOf(hiddenNodes, node.attributes['data-uri']) >= 0;\n } else if (node.type === 'class' && node.children) {\n self.removeHiddenNodes(node.children);\n }\n });\n }\n },\n\n trace: function() {\n /*console.log('TRACE '+\n\t\t\t\targuments.callee.caller\n\t\t\t\t.arguments.callee.caller\n\t\t\t\t.arguments.callee.caller\n\t\t\t\t.arguments.callee.caller\n\t\t\t);*/\n },\n\n /**\n * Paginate function, display more instances\n */\n paginateInstances: function(NODE, TREE_OBJ, pOptions, callback) {\n var nodeId = NODE[0].id;\n var instancesLeft = this.getMeta(nodeId, 'count') - this.getMeta(nodeId, 'displayed');\n var options = {\n classUri: nodeId,\n subclasses: 0,\n offset: this.getMeta(nodeId, 'position'),\n limit: instancesLeft < this.paginate ? instancesLeft : this.paginate\n };\n options = $.extend(options, pOptions);\n\n $.post(\n this.dataUrl,\n options,\n (function(instance) {\n return function(DATA) {\n var countClass = 0;\n var i = 0;\n\n if (instance.checkResourcePermissions) {\n DATA = instance.convertDataWithPermissions(DATA);\n }\n //Hide paginate options\n instance.hidePaginate(nodeId);\n //Display incoming nodes\n for (i; i < DATA.length; i++) {\n DATA[i].attributes['class'] =\n instance.options.instanceClass + ' node-instance node-draggable';\n if (!$('#' + DATA[i].attributes['id'], $(TREE_OBJ.container)).length)\n TREE_OBJ.create(DATA[i], TREE_OBJ.get_node(NODE[0]));\n // If the check all options. Add the incoming nodes to the list of node to check\n if (options.checkedNodes === '*') {\n instance.checkedNodes.push(DATA[i].attributes.id);\n }\n countClass += DATA[i].type === 'class';\n }\n\n // Update meta data\n instance.setMeta(\n nodeId,\n 'displayed',\n instance.getMeta(nodeId, 'displayed') + DATA.length - countClass\n );\n instance.setMeta(\n nodeId,\n 'position',\n instance.getMeta(nodeId, 'position') + DATA.length - countClass\n );\n\n //refresh pagination options\n instance.refreshPaginate(NODE, TREE_OBJ);\n\n //If options checked nodes\n if (options.checkedNodes) {\n // If options check all, check not checked nodes\n if (options.checkedNodes === '*') {\n $(NODE)\n .find('ul:first')\n .children()\n .each(function() {\n var $this = $(this);\n\n if ($this.hasClass('node-instance')) {\n $this.find('a:not(.checked, .undetermined)').each(function() {\n instance.checkedNodes.push($this.parent().prop('id'));\n });\n }\n });\n } else {\n instance.checkedNodes = options.checkedNodes;\n }\n }\n\n instance.check(instance.checkedNodes);\n\n //Execute callback;\n if (instance.options.onChangeCallback) {\n instance.options.onChangeCallback();\n }\n\n if (callback) {\n callback(NODE, TREE_OBJ);\n }\n if (instance.checkPaginate) {\n instance.checkPaginate(NODE, TREE_OBJ);\n }\n };\n })(this),\n 'json'\n );\n },\n\n /**\n * Check the tree instances\n * @param {Array} elements the list of ids of instances to check\n */\n check: function(elements) {\n var self = this;\n\n $.each(elements, function(i, elt) {\n if (elt != null) {\n var NODE = $(self.selector).find(\"li[id='\" + elt + \"']\");\n if (NODE.length > 0) {\n if ($(NODE).hasClass('node-instance')) {\n $.tree.plugins.checkbox.check(NODE);\n }\n }\n }\n });\n },\n\n /**\n * Get the checked nodes\n * @return {array}\n */\n getChecked: function() {\n var unchecked = [];\n $.each($.tree.plugins.checkbox.get_unchecked(this.getTree()), function(i, NODE) {\n if ($(NODE).hasClass('node-instance')) {\n unchecked.push($(NODE).prop('id'));\n }\n });\n var returnValue = $.grep(this.checkedNodes, function(value) {\n return unchecked.indexOf(value) == -1;\n });\n\n $.each($.tree.plugins.checkbox.get_checked(this.getTree()), function(i, NODE) {\n if ($(NODE).hasClass('node-instance')) {\n var value = $(NODE).prop('id');\n if (returnValue.indexOf(value) == -1) {\n returnValue.push(value);\n }\n }\n });\n return returnValue;\n },\n\n /**\n * save the checked instances in the tree by sending the ids using an ajax request\n */\n saveData: function() {\n var instance = this;\n var toSend = {};\n if (typeof this.options.saveData == 'object') {\n for (var key in this.options.saveData) {\n toSend[key] = this.options.saveData[key];\n }\n }\n var index = 0;\n\n helpers.loading();\n /*$.each($.tree.plugins.checkbox.get_checked(this.getTree()), function(i, NODE){\n\t\t\t\tif ($(NODE).hasClass('node-instance')) {\n\t\t\t\t\ttoSend2['instance_' + index2] = $(NODE).prop('id');\n\t\t\t\t\tindex2++;\n\t\t\t\t}\n\t\t\t});*/\n\n var nodes = this.getChecked();\n toSend['instances'] = JSON.stringify(nodes);\n\n var uriField,\n classUriField = null;\n if (this.options.relatedFormId) {\n var uriEltSelector = '#' + this.options.relatedFormId + ' :input[name=uri]';\n if ($(uriEltSelector).length) {\n uriField = $(uriEltSelector);\n }\n\n var classUriEltSelector = '#' + this.options.relatedFormId + ' :input[name=classUri]';\n if ($(classUriEltSelector).length) {\n classUriField = $(classUriEltSelector);\n }\n }\n\n if (!uriField) {\n uriField = $('input[name=uri]');\n }\n if (!classUriField) {\n classUriField = $('input[name=classUri]');\n }\n\n if (uriField) {\n toSend.uri = uriField.val();\n }\n\n if (classUriField) {\n toSend.classUri = classUriField.val();\n }\n\n $.ajax({\n url: this.options.saveUrl,\n type: 'POST',\n data: toSend,\n dataType: 'json',\n success: function(response) {\n if (response.saved) {\n if (instance.options.saveCallback) {\n instance.options.saveCallback(toSend);\n }\n feedback().info(__('Selection saved successfully'));\n } else {\n if (instance.options.saveErrorCallback) {\n instance.options.saveErrorCallback(response, instance);\n }\n }\n },\n complete: function() {\n helpers.loaded();\n }\n });\n }\n });\n\n return GenerisTreeSelectClass;\n});\n\n","\n(function(c){var d=document,a='appendChild',i='styleSheet',s=d.createElement('style');s.type='text/css';d.getElementsByTagName('head')[0][a](s);s[i]?s[i].cssText=c:s[a](d.createTextNode(c));})\n('.flatpickr-calendar {\\n background: transparent;\\n opacity: 0;\\n display: none;\\n text-align: center;\\n visibility: hidden;\\n padding: 0;\\n -webkit-animation: none;\\n animation: none;\\n direction: ltr;\\n border: 0;\\n font-size: 14px;\\n line-height: 24px;\\n border-radius: 5px;\\n position: absolute;\\n width: 307.875px;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n -ms-touch-action: manipulation;\\n touch-action: manipulation;\\n background: #fff;\\n -webkit-box-shadow: 1px 0 0 #e6e6e6, -1px 0 0 #e6e6e6, 0 1px 0 #e6e6e6, 0 -1px 0 #e6e6e6, 0 3px 13px rgba(0,0,0,0.08);\\n box-shadow: 1px 0 0 #e6e6e6, -1px 0 0 #e6e6e6, 0 1px 0 #e6e6e6, 0 -1px 0 #e6e6e6, 0 3px 13px rgba(0,0,0,0.08);\\n}\\n.flatpickr-calendar.open,\\n.flatpickr-calendar.inline {\\n opacity: 1;\\n max-height: 640px;\\n visibility: visible;\\n}\\n.flatpickr-calendar.open {\\n display: inline-block;\\n z-index: 99999;\\n}\\n.flatpickr-calendar.animate.open {\\n -webkit-animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);\\n animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);\\n}\\n.flatpickr-calendar.inline {\\n display: block;\\n position: relative;\\n top: 2px;\\n}\\n.flatpickr-calendar.static {\\n position: absolute;\\n top: calc(100% + 2px);\\n}\\n.flatpickr-calendar.static.open {\\n z-index: 999;\\n display: block;\\n}\\n.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7) {\\n -webkit-box-shadow: none !important;\\n box-shadow: none !important;\\n}\\n.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1) {\\n -webkit-box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;\\n box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;\\n}\\n.flatpickr-calendar .hasWeeks .dayContainer,\\n.flatpickr-calendar .hasTime .dayContainer {\\n border-bottom: 0;\\n border-bottom-right-radius: 0;\\n border-bottom-left-radius: 0;\\n}\\n.flatpickr-calendar .hasWeeks .dayContainer {\\n border-left: 0;\\n}\\n.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time {\\n height: 40px;\\n border-top: 1px solid #e6e6e6;\\n}\\n.flatpickr-calendar.noCalendar.hasTime .flatpickr-time {\\n height: auto;\\n}\\n.flatpickr-calendar:before,\\n.flatpickr-calendar:after {\\n position: absolute;\\n display: block;\\n pointer-events: none;\\n border: solid transparent;\\n content: \\'\\';\\n height: 0;\\n width: 0;\\n left: 22px;\\n}\\n.flatpickr-calendar.rightMost:before,\\n.flatpickr-calendar.rightMost:after {\\n left: auto;\\n right: 22px;\\n}\\n.flatpickr-calendar:before {\\n border-width: 5px;\\n margin: 0 -5px;\\n}\\n.flatpickr-calendar:after {\\n border-width: 4px;\\n margin: 0 -4px;\\n}\\n.flatpickr-calendar.arrowTop:before,\\n.flatpickr-calendar.arrowTop:after {\\n bottom: 100%;\\n}\\n.flatpickr-calendar.arrowTop:before {\\n border-bottom-color: #e6e6e6;\\n}\\n.flatpickr-calendar.arrowTop:after {\\n border-bottom-color: #fff;\\n}\\n.flatpickr-calendar.arrowBottom:before,\\n.flatpickr-calendar.arrowBottom:after {\\n top: 100%;\\n}\\n.flatpickr-calendar.arrowBottom:before {\\n border-top-color: #e6e6e6;\\n}\\n.flatpickr-calendar.arrowBottom:after {\\n border-top-color: #fff;\\n}\\n.flatpickr-calendar:focus {\\n outline: 0;\\n}\\n.flatpickr-wrapper {\\n position: relative;\\n display: inline-block;\\n}\\n.flatpickr-months {\\n display: -webkit-box;\\n display: -webkit-flex;\\n display: -ms-flexbox;\\n display: flex;\\n}\\n.flatpickr-months .flatpickr-month {\\n background: transparent;\\n color: rgba(0,0,0,0.9);\\n fill: rgba(0,0,0,0.9);\\n height: 28px;\\n line-height: 1;\\n text-align: center;\\n position: relative;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n overflow: hidden;\\n -webkit-box-flex: 1;\\n -webkit-flex: 1;\\n -ms-flex: 1;\\n flex: 1;\\n}\\n.flatpickr-months .flatpickr-prev-month,\\n.flatpickr-months .flatpickr-next-month {\\n text-decoration: none;\\n cursor: pointer;\\n position: absolute;\\n top: 0px;\\n line-height: 16px;\\n height: 28px;\\n padding: 10px;\\n z-index: 3;\\n color: rgba(0,0,0,0.9);\\n fill: rgba(0,0,0,0.9);\\n}\\n.flatpickr-months .flatpickr-prev-month.disabled,\\n.flatpickr-months .flatpickr-next-month.disabled {\\n display: none;\\n}\\n.flatpickr-months .flatpickr-prev-month i,\\n.flatpickr-months .flatpickr-next-month i {\\n position: relative;\\n}\\n.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,\\n.flatpickr-months .flatpickr-next-month.flatpickr-prev-month {\\n/*\\n /*rtl:begin:ignore*/\\n/*\\n */\\n left: 0;\\n/*\\n /*rtl:end:ignore*/\\n/*\\n */\\n}\\n/*\\n /*rtl:begin:ignore*/\\n/*\\n /*rtl:end:ignore*/\\n.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,\\n.flatpickr-months .flatpickr-next-month.flatpickr-next-month {\\n/*\\n /*rtl:begin:ignore*/\\n/*\\n */\\n right: 0;\\n/*\\n /*rtl:end:ignore*/\\n/*\\n */\\n}\\n/*\\n /*rtl:begin:ignore*/\\n/*\\n /*rtl:end:ignore*/\\n.flatpickr-months .flatpickr-prev-month:hover,\\n.flatpickr-months .flatpickr-next-month:hover {\\n color: #959ea9;\\n}\\n.flatpickr-months .flatpickr-prev-month:hover svg,\\n.flatpickr-months .flatpickr-next-month:hover svg {\\n fill: #f64747;\\n}\\n.flatpickr-months .flatpickr-prev-month svg,\\n.flatpickr-months .flatpickr-next-month svg {\\n width: 14px;\\n height: 14px;\\n}\\n.flatpickr-months .flatpickr-prev-month svg path,\\n.flatpickr-months .flatpickr-next-month svg path {\\n -webkit-transition: fill 0.1s;\\n transition: fill 0.1s;\\n fill: inherit;\\n}\\n.numInputWrapper {\\n position: relative;\\n height: auto;\\n}\\n.numInputWrapper input,\\n.numInputWrapper span {\\n display: inline-block;\\n}\\n.numInputWrapper input {\\n width: 100%;\\n}\\n.numInputWrapper input::-ms-clear {\\n display: none;\\n}\\n.numInputWrapper input::-webkit-outer-spin-button,\\n.numInputWrapper input::-webkit-inner-spin-button {\\n margin: 0;\\n -webkit-appearance: none;\\n}\\n.numInputWrapper span {\\n position: absolute;\\n right: 0;\\n width: 14px;\\n padding: 0 4px 0 2px;\\n height: 50%;\\n line-height: 50%;\\n opacity: 0;\\n cursor: pointer;\\n border: 1px solid rgba(57,57,57,0.15);\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n}\\n.numInputWrapper span:hover {\\n background: rgba(0,0,0,0.1);\\n}\\n.numInputWrapper span:active {\\n background: rgba(0,0,0,0.2);\\n}\\n.numInputWrapper span:after {\\n display: block;\\n content: \\\"\\\";\\n position: absolute;\\n}\\n.numInputWrapper span.arrowUp {\\n top: 0;\\n border-bottom: 0;\\n}\\n.numInputWrapper span.arrowUp:after {\\n border-left: 4px solid transparent;\\n border-right: 4px solid transparent;\\n border-bottom: 4px solid rgba(57,57,57,0.6);\\n top: 26%;\\n}\\n.numInputWrapper span.arrowDown {\\n top: 50%;\\n}\\n.numInputWrapper span.arrowDown:after {\\n border-left: 4px solid transparent;\\n border-right: 4px solid transparent;\\n border-top: 4px solid rgba(57,57,57,0.6);\\n top: 40%;\\n}\\n.numInputWrapper span svg {\\n width: inherit;\\n height: auto;\\n}\\n.numInputWrapper span svg path {\\n fill: rgba(0,0,0,0.5);\\n}\\n.numInputWrapper:hover {\\n background: rgba(0,0,0,0.05);\\n}\\n.numInputWrapper:hover span {\\n opacity: 1;\\n}\\n.flatpickr-current-month {\\n font-size: 135%;\\n line-height: inherit;\\n font-weight: 300;\\n color: inherit;\\n position: absolute;\\n width: 75%;\\n left: 12.5%;\\n padding: 6.16px 0 0 0;\\n line-height: 1;\\n height: 28px;\\n display: inline-block;\\n text-align: center;\\n -webkit-transform: translate3d(0px, 0px, 0px);\\n transform: translate3d(0px, 0px, 0px);\\n}\\n.flatpickr-current-month span.cur-month {\\n font-family: inherit;\\n font-weight: 700;\\n color: inherit;\\n display: inline-block;\\n margin-left: 0.5ch;\\n padding: 0;\\n}\\n.flatpickr-current-month span.cur-month:hover {\\n background: rgba(0,0,0,0.05);\\n}\\n.flatpickr-current-month .numInputWrapper {\\n width: 6ch;\\n width: 7ch\\\\0;\\n display: inline-block;\\n}\\n.flatpickr-current-month .numInputWrapper span.arrowUp:after {\\n border-bottom-color: rgba(0,0,0,0.9);\\n}\\n.flatpickr-current-month .numInputWrapper span.arrowDown:after {\\n border-top-color: rgba(0,0,0,0.9);\\n}\\n.flatpickr-current-month input.cur-year {\\n background: transparent;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n color: inherit;\\n cursor: text;\\n padding: 0 0 0 0.5ch;\\n margin: 0;\\n display: inline-block;\\n font-size: inherit;\\n font-family: inherit;\\n font-weight: 300;\\n line-height: inherit;\\n height: auto;\\n border: 0;\\n border-radius: 0;\\n vertical-align: initial;\\n -webkit-appearance: textfield;\\n -moz-appearance: textfield;\\n appearance: textfield;\\n}\\n.flatpickr-current-month input.cur-year:focus {\\n outline: 0;\\n}\\n.flatpickr-current-month input.cur-year[disabled],\\n.flatpickr-current-month input.cur-year[disabled]:hover {\\n font-size: 100%;\\n color: rgba(0,0,0,0.5);\\n background: transparent;\\n pointer-events: none;\\n}\\n.flatpickr-weekdays {\\n background: transparent;\\n text-align: center;\\n overflow: hidden;\\n width: 100%;\\n display: -webkit-box;\\n display: -webkit-flex;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -webkit-align-items: center;\\n -ms-flex-align: center;\\n align-items: center;\\n height: 28px;\\n}\\n.flatpickr-weekdays .flatpickr-weekdaycontainer {\\n display: -webkit-box;\\n display: -webkit-flex;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-flex: 1;\\n -webkit-flex: 1;\\n -ms-flex: 1;\\n flex: 1;\\n}\\nspan.flatpickr-weekday {\\n cursor: default;\\n font-size: 90%;\\n background: transparent;\\n color: rgba(0,0,0,0.54);\\n line-height: 1;\\n margin: 0;\\n text-align: center;\\n display: block;\\n -webkit-box-flex: 1;\\n -webkit-flex: 1;\\n -ms-flex: 1;\\n flex: 1;\\n font-weight: bolder;\\n}\\n.dayContainer,\\n.flatpickr-weeks {\\n padding: 1px 0 0 0;\\n}\\n.flatpickr-days {\\n position: relative;\\n overflow: hidden;\\n display: -webkit-box;\\n display: -webkit-flex;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: start;\\n -webkit-align-items: flex-start;\\n -ms-flex-align: start;\\n align-items: flex-start;\\n width: 307.875px;\\n}\\n.flatpickr-days:focus {\\n outline: 0;\\n}\\n.dayContainer {\\n padding: 0;\\n outline: 0;\\n text-align: left;\\n width: 307.875px;\\n min-width: 307.875px;\\n max-width: 307.875px;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n display: inline-block;\\n display: -ms-flexbox;\\n display: -webkit-box;\\n display: -webkit-flex;\\n display: flex;\\n -webkit-flex-wrap: wrap;\\n flex-wrap: wrap;\\n -ms-flex-wrap: wrap;\\n -ms-flex-pack: justify;\\n -webkit-justify-content: space-around;\\n justify-content: space-around;\\n -webkit-transform: translate3d(0px, 0px, 0px);\\n transform: translate3d(0px, 0px, 0px);\\n opacity: 1;\\n}\\n.dayContainer + .dayContainer {\\n -webkit-box-shadow: -1px 0 0 #e6e6e6;\\n box-shadow: -1px 0 0 #e6e6e6;\\n}\\n.flatpickr-day {\\n background: none;\\n border: 1px solid transparent;\\n border-radius: 150px;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n color: #393939;\\n cursor: pointer;\\n font-weight: 400;\\n width: 14.2857143%;\\n -webkit-flex-basis: 14.2857143%;\\n -ms-flex-preferred-size: 14.2857143%;\\n flex-basis: 14.2857143%;\\n max-width: 39px;\\n height: 39px;\\n line-height: 39px;\\n margin: 0;\\n display: inline-block;\\n position: relative;\\n -webkit-box-pack: center;\\n -webkit-justify-content: center;\\n -ms-flex-pack: center;\\n justify-content: center;\\n text-align: center;\\n}\\n.flatpickr-day.inRange,\\n.flatpickr-day.prevMonthDay.inRange,\\n.flatpickr-day.nextMonthDay.inRange,\\n.flatpickr-day.today.inRange,\\n.flatpickr-day.prevMonthDay.today.inRange,\\n.flatpickr-day.nextMonthDay.today.inRange,\\n.flatpickr-day:hover,\\n.flatpickr-day.prevMonthDay:hover,\\n.flatpickr-day.nextMonthDay:hover,\\n.flatpickr-day:focus,\\n.flatpickr-day.prevMonthDay:focus,\\n.flatpickr-day.nextMonthDay:focus {\\n cursor: pointer;\\n outline: 0;\\n background: #e6e6e6;\\n border-color: #e6e6e6;\\n}\\n.flatpickr-day.today {\\n border-color: #959ea9;\\n}\\n.flatpickr-day.today:hover,\\n.flatpickr-day.today:focus {\\n border-color: #959ea9;\\n background: #959ea9;\\n color: #fff;\\n}\\n.flatpickr-day.selected,\\n.flatpickr-day.startRange,\\n.flatpickr-day.endRange,\\n.flatpickr-day.selected.inRange,\\n.flatpickr-day.startRange.inRange,\\n.flatpickr-day.endRange.inRange,\\n.flatpickr-day.selected:focus,\\n.flatpickr-day.startRange:focus,\\n.flatpickr-day.endRange:focus,\\n.flatpickr-day.selected:hover,\\n.flatpickr-day.startRange:hover,\\n.flatpickr-day.endRange:hover,\\n.flatpickr-day.selected.prevMonthDay,\\n.flatpickr-day.startRange.prevMonthDay,\\n.flatpickr-day.endRange.prevMonthDay,\\n.flatpickr-day.selected.nextMonthDay,\\n.flatpickr-day.startRange.nextMonthDay,\\n.flatpickr-day.endRange.nextMonthDay {\\n background: #569ff7;\\n -webkit-box-shadow: none;\\n box-shadow: none;\\n color: #fff;\\n border-color: #569ff7;\\n}\\n.flatpickr-day.selected.startRange,\\n.flatpickr-day.startRange.startRange,\\n.flatpickr-day.endRange.startRange {\\n border-radius: 50px 0 0 50px;\\n}\\n.flatpickr-day.selected.endRange,\\n.flatpickr-day.startRange.endRange,\\n.flatpickr-day.endRange.endRange {\\n border-radius: 0 50px 50px 0;\\n}\\n.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),\\n.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),\\n.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)) {\\n -webkit-box-shadow: -10px 0 0 #569ff7;\\n box-shadow: -10px 0 0 #569ff7;\\n}\\n.flatpickr-day.selected.startRange.endRange,\\n.flatpickr-day.startRange.startRange.endRange,\\n.flatpickr-day.endRange.startRange.endRange {\\n border-radius: 50px;\\n}\\n.flatpickr-day.inRange {\\n border-radius: 0;\\n -webkit-box-shadow: -5px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;\\n box-shadow: -5px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;\\n}\\n.flatpickr-day.disabled,\\n.flatpickr-day.disabled:hover,\\n.flatpickr-day.prevMonthDay,\\n.flatpickr-day.nextMonthDay,\\n.flatpickr-day.notAllowed,\\n.flatpickr-day.notAllowed.prevMonthDay,\\n.flatpickr-day.notAllowed.nextMonthDay {\\n color: rgba(57,57,57,0.3);\\n background: transparent;\\n border-color: transparent;\\n cursor: default;\\n}\\n.flatpickr-day.disabled,\\n.flatpickr-day.disabled:hover {\\n cursor: not-allowed;\\n color: rgba(57,57,57,0.1);\\n}\\n.flatpickr-day.week.selected {\\n border-radius: 0;\\n -webkit-box-shadow: -5px 0 0 #569ff7, 5px 0 0 #569ff7;\\n box-shadow: -5px 0 0 #569ff7, 5px 0 0 #569ff7;\\n}\\n.flatpickr-day.hidden {\\n visibility: hidden;\\n}\\n.rangeMode .flatpickr-day {\\n margin-top: 1px;\\n}\\n.flatpickr-weekwrapper {\\n display: inline-block;\\n float: left;\\n}\\n.flatpickr-weekwrapper .flatpickr-weeks {\\n padding: 0 12px;\\n -webkit-box-shadow: 1px 0 0 #e6e6e6;\\n box-shadow: 1px 0 0 #e6e6e6;\\n}\\n.flatpickr-weekwrapper .flatpickr-weekday {\\n float: none;\\n width: 100%;\\n line-height: 28px;\\n}\\n.flatpickr-weekwrapper span.flatpickr-day,\\n.flatpickr-weekwrapper span.flatpickr-day:hover {\\n display: block;\\n width: 100%;\\n max-width: none;\\n color: rgba(57,57,57,0.3);\\n background: transparent;\\n cursor: default;\\n border: none;\\n}\\n.flatpickr-innerContainer {\\n display: block;\\n display: -webkit-box;\\n display: -webkit-flex;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n overflow: hidden;\\n}\\n.flatpickr-rContainer {\\n display: inline-block;\\n padding: 0;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n}\\n.flatpickr-time {\\n text-align: center;\\n outline: 0;\\n display: block;\\n height: 0;\\n line-height: 40px;\\n max-height: 40px;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n overflow: hidden;\\n display: -webkit-box;\\n display: -webkit-flex;\\n display: -ms-flexbox;\\n display: flex;\\n}\\n.flatpickr-time:after {\\n content: \\\"\\\";\\n display: table;\\n clear: both;\\n}\\n.flatpickr-time .numInputWrapper {\\n -webkit-box-flex: 1;\\n -webkit-flex: 1;\\n -ms-flex: 1;\\n flex: 1;\\n width: 40%;\\n height: 40px;\\n float: left;\\n}\\n.flatpickr-time .numInputWrapper span.arrowUp:after {\\n border-bottom-color: #393939;\\n}\\n.flatpickr-time .numInputWrapper span.arrowDown:after {\\n border-top-color: #393939;\\n}\\n.flatpickr-time.hasSeconds .numInputWrapper {\\n width: 26%;\\n}\\n.flatpickr-time.time24hr .numInputWrapper {\\n width: 49%;\\n}\\n.flatpickr-time input {\\n background: transparent;\\n -webkit-box-shadow: none;\\n box-shadow: none;\\n border: 0;\\n border-radius: 0;\\n text-align: center;\\n margin: 0;\\n padding: 0;\\n height: inherit;\\n line-height: inherit;\\n color: #393939;\\n font-size: 14px;\\n position: relative;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n -webkit-appearance: textfield;\\n -moz-appearance: textfield;\\n appearance: textfield;\\n}\\n.flatpickr-time input.flatpickr-hour {\\n font-weight: bold;\\n}\\n.flatpickr-time input.flatpickr-minute,\\n.flatpickr-time input.flatpickr-second {\\n font-weight: 400;\\n}\\n.flatpickr-time input:focus {\\n outline: 0;\\n border: 0;\\n}\\n.flatpickr-time .flatpickr-time-separator,\\n.flatpickr-time .flatpickr-am-pm {\\n height: inherit;\\n display: inline-block;\\n float: left;\\n line-height: inherit;\\n color: #393939;\\n font-weight: bold;\\n width: 2%;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n -webkit-align-self: center;\\n -ms-flex-item-align: center;\\n align-self: center;\\n}\\n.flatpickr-time .flatpickr-am-pm {\\n outline: 0;\\n width: 18%;\\n cursor: pointer;\\n text-align: center;\\n font-weight: 400;\\n}\\n.flatpickr-time input:hover,\\n.flatpickr-time .flatpickr-am-pm:hover,\\n.flatpickr-time input:focus,\\n.flatpickr-time .flatpickr-am-pm:focus {\\n background: #eee;\\n}\\n.flatpickr-input[readonly] {\\n cursor: pointer;\\n}\\n@-webkit-keyframes fpFadeInDown {\\n from {\\n opacity: 0;\\n -webkit-transform: translate3d(0, -20px, 0);\\n transform: translate3d(0, -20px, 0);\\n }\\n to {\\n opacity: 1;\\n -webkit-transform: translate3d(0, 0, 0);\\n transform: translate3d(0, 0, 0);\\n }\\n}\\n@keyframes fpFadeInDown {\\n from {\\n opacity: 0;\\n -webkit-transform: translate3d(0, -20px, 0);\\n transform: translate3d(0, -20px, 0);\\n }\\n to {\\n opacity: 1;\\n -webkit-transform: translate3d(0, 0, 0);\\n transform: translate3d(0, 0, 0);\\n }\\n}\\n');\n","\ndefine(\"loader/tao.bundle\", function(){});\n"]}