{
  "version": 3,
  "sources": ["../../../node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js", "../../../node_modules/@rails/actioncable/src/adapters.js", "../../../node_modules/@rails/actioncable/src/logger.js", "../../../node_modules/@rails/actioncable/src/connection_monitor.js", "../../../node_modules/@rails/actioncable/src/internal.js", "../../../node_modules/@rails/actioncable/src/connection.js", "../../../node_modules/@rails/actioncable/src/subscription.js", "../../../node_modules/@rails/actioncable/src/subscription_guarantor.js", "../../../node_modules/@rails/actioncable/src/subscriptions.js", "../../../node_modules/@rails/actioncable/src/consumer.js", "../../../node_modules/@rails/actioncable/src/index.js", "../../javascript/src/reorder_steps.js", "../../../node_modules/clipboard/dist/clipboard.js", "../../../node_modules/tslib/tslib.js", "../../../node_modules/cropperjs/dist/cropper.js", "../../../node_modules/tributejs/src/utils.js", "../../../node_modules/tributejs/src/TributeEvents.js", "../../../node_modules/tributejs/src/TributeMenuEvents.js", "../../../node_modules/tributejs/src/TributeRange.js", "../../../node_modules/tributejs/src/TributeSearch.js", "../../../node_modules/tributejs/src/Tribute.js", "../../../node_modules/tom-select/src/contrib/microevent.ts", "../../../node_modules/tom-select/src/contrib/microplugin.ts", "../../../node_modules/tom-select/node_modules/@orchidjs/unicode-variants/dist/esm/regex.js", "../../../node_modules/tom-select/node_modules/@orchidjs/unicode-variants/dist/esm/strings.js", "../../../node_modules/tom-select/node_modules/@orchidjs/unicode-variants/dist/esm/index.js", "../../../node_modules/tom-select/node_modules/@orchidjs/sifter/dist/esm/utils.js", "../../../node_modules/tom-select/node_modules/@orchidjs/sifter/dist/esm/sifter.js", "../../../node_modules/tom-select/node_modules/@orchidjs/sifter/lib/utils.ts", "../../../node_modules/tom-select/src/vanilla.ts", "../../../node_modules/tom-select/src/contrib/highlight.ts", "../../../node_modules/tom-select/src/constants.ts", "../../../node_modules/tom-select/src/defaults.ts", "../../../node_modules/tom-select/src/utils.ts", "../../../node_modules/tom-select/src/getSettings.ts", "../../../node_modules/tom-select/src/tom-select.ts", "../../../node_modules/tom-select/src/plugins/change_listener/plugin.ts", "../../../node_modules/tom-select/src/plugins/checkbox_options/plugin.ts", "../../../node_modules/tom-select/src/plugins/clear_button/plugin.ts", "../../../node_modules/tom-select/src/plugins/drag_drop/plugin.ts", "../../../node_modules/tom-select/src/plugins/dropdown_header/plugin.ts", "../../../node_modules/tom-select/src/plugins/caret_position/plugin.ts", "../../../node_modules/tom-select/src/plugins/dropdown_input/plugin.ts", "../../../node_modules/tom-select/src/plugins/input_autogrow/plugin.ts", "../../../node_modules/tom-select/src/plugins/no_backspace_delete/plugin.ts", "../../../node_modules/tom-select/src/plugins/no_active_items/plugin.ts", "../../../node_modules/tom-select/src/plugins/optgroup_columns/plugin.ts", "../../../node_modules/tom-select/src/plugins/remove_button/plugin.ts", "../../../node_modules/tom-select/src/plugins/restore_on_backspace/plugin.ts", "../../../node_modules/tom-select/src/plugins/virtual_scroll/plugin.ts", "../../../node_modules/tom-select/src/tom-select.complete.ts", "../../javascript/src/advanced_search.js", "../../javascript/src/confirm.js", "../../javascript/src/direct_uploads.js", "../../javascript/src/lazysrc.js", "../../../node_modules/jstz/dist/jstz.js", "../../../node_modules/jstz/index.js", "../../../node_modules/@rails/activestorage/app/assets/javascripts/activestorage.js", "../../../node_modules/local-time/app/assets/javascripts/local-time.js", "../../javascript/application.js", "../../../node_modules/@hotwired/turbo/dist/turbo.es2017-esm.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/snakeize.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable_stream_source_element.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/fetch_requests.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/index.js", "../../../node_modules/@rails/actiontext/app/assets/javascripts/actiontext.js", "../../../node_modules/@hotwired/stimulus/dist/stimulus.js", "../../javascript/controllers/application.js", "../../../node_modules/stimulus-reveal-controller/dist/stimulus-reveal-controller.mjs", "../../javascript/controllers/accounts_controller.js", "../../../node_modules/@rails/actioncable/app/assets/javascripts/actioncable.esm.js", "../../javascript/channels/consumer.js", "../../javascript/controllers/braintree_controller.js", "../../javascript/controllers/bulk_controller.js", "../../javascript/controllers/clipboard_controller.js", "../../../node_modules/@popperjs/core/lib/enums.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js", "../../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js", "../../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js", "../../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js", "../../../node_modules/@popperjs/core/lib/utils/math.js", "../../../node_modules/@popperjs/core/lib/utils/userAgent.js", "../../../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js", "../../../node_modules/@popperjs/core/lib/dom-utils/contains.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js", "../../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js", "../../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js", "../../../node_modules/@popperjs/core/lib/utils/within.js", "../../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js", "../../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js", "../../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js", "../../../node_modules/@popperjs/core/lib/modifiers/arrow.js", "../../../node_modules/@popperjs/core/lib/utils/getVariation.js", "../../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js", "../../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js", "../../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js", "../../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js", "../../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js", "../../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js", "../../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js", "../../../node_modules/@popperjs/core/lib/utils/computeOffsets.js", "../../../node_modules/@popperjs/core/lib/utils/detectOverflow.js", "../../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js", "../../../node_modules/@popperjs/core/lib/modifiers/flip.js", "../../../node_modules/@popperjs/core/lib/modifiers/hide.js", "../../../node_modules/@popperjs/core/lib/modifiers/offset.js", "../../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js", "../../../node_modules/@popperjs/core/lib/utils/getAltAxis.js", "../../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js", "../../../node_modules/@popperjs/core/lib/utils/orderModifiers.js", "../../../node_modules/@popperjs/core/lib/utils/debounce.js", "../../../node_modules/@popperjs/core/lib/utils/format.js", "../../../node_modules/@popperjs/core/lib/utils/validateModifiers.js", "../../../node_modules/@popperjs/core/lib/utils/uniqueBy.js", "../../../node_modules/@popperjs/core/lib/utils/mergeByName.js", "../../../node_modules/@popperjs/core/lib/createPopper.js", "../../../node_modules/@popperjs/core/lib/popper.js", "../../../node_modules/tippy.js/src/constants.ts", "../../../node_modules/tippy.js/src/utils.ts", "../../../node_modules/tippy.js/src/dom-utils.ts", "../../../node_modules/tippy.js/src/bindGlobalEventListeners.ts", "../../../node_modules/tippy.js/src/browser.ts", "../../../node_modules/tippy.js/src/validation.ts", "../../../node_modules/tippy.js/src/props.ts", "../../../node_modules/tippy.js/src/template.ts", "../../../node_modules/tippy.js/src/createTippy.ts", "../../../node_modules/tippy.js/src/index.ts", "../../../node_modules/tippy.js/src/addons/createSingleton.ts", "../../../node_modules/tippy.js/src/addons/delegate.ts", "../../../node_modules/tippy.js/src/plugins/animateFill.ts", "../../../node_modules/tippy.js/src/plugins/followCursor.ts", "../../../node_modules/tippy.js/src/plugins/inlinePositioning.ts", "../../../node_modules/tippy.js/src/plugins/sticky.ts", "../../../node_modules/tippy.js/build/base.js", "../../javascript/controllers/command_palette_controller.js", "../../../node_modules/@lit/reactive-element/src/css-tag.ts", "../../../node_modules/@lit/reactive-element/src/reactive-element.ts", "../../../node_modules/lit-html/src/lit-html.ts", "../../../node_modules/lit-element/src/lit-element.ts", "../../../node_modules/@lit/reactive-element/src/decorators/custom-element.ts", "../../../node_modules/@lit/reactive-element/src/decorators/property.ts", "../../../node_modules/@lit/reactive-element/src/decorators/state.ts", "../../../node_modules/@lit/reactive-element/src/decorators/query-assigned-elements.ts", "../../../node_modules/lit-html/src/directive.ts", "../../../node_modules/lit-html/src/directive-helpers.ts", "../../../node_modules/lit-html/src/directives/repeat.ts", "../../../node_modules/lit-html/src/directives/live.ts", "../../../node_modules/lit-html/src/async-directive.ts", "../../../node_modules/lit-html/src/directives/ref.ts", "../../../node_modules/lit-html/src/directives/class-map.ts", "../../../node_modules/hotkeys-js/dist/hotkeys.esm.js", "../../../node_modules/@gorails/ninja-keys/src/ninja-header.ts", "../../../node_modules/lit-html/src/directives/unsafe-html.ts", "../../../node_modules/tslib/modules/index.js", "../../../node_modules/@material/mwc-icon/mwc-icon-host.css.ts", "../../../node_modules/@material/mwc-icon/mwc-icon.ts", "../../../node_modules/@gorails/ninja-keys/src/ninja-action.ts", "../../../node_modules/@gorails/ninja-keys/src/ninja-footer.ts", "../../../node_modules/@gorails/ninja-keys/src/base-styles.ts", "../../../node_modules/@gorails/ninja-keys/src/ninja-keys.ts", "../../javascript/controllers/csv_export_controller.js", "../../javascript/controllers/customcrop_controller.js", "../../../node_modules/tailwindcss-stimulus-components/src/alert.js", "../../../node_modules/tailwindcss-stimulus-components/src/autosave.js", "../../../node_modules/tailwindcss-stimulus-components/src/dropdown.js", "../../../node_modules/tailwindcss-stimulus-components/src/modal.js", "../../../node_modules/tailwindcss-stimulus-components/src/tabs.js", "../../../node_modules/tailwindcss-stimulus-components/src/toggle.js", "../../../node_modules/tailwindcss-stimulus-components/src/popover.js", "../../../node_modules/tailwindcss-stimulus-components/src/slideover.js", "../../../node_modules/tailwindcss-stimulus-components/src/color_preview.js", "../../javascript/controllers/customtoggle_controller.js", "../../javascript/controllers/event_registrations_controller.js", "../../javascript/controllers/events_controller.js", "../../javascript/controllers/landing_carousel_controller.js", "../../javascript/controllers/members_admin_controller.js", "../../javascript/controllers/mentions_controller.js", "../../../node_modules/trix/dist/trix.esm.min.js", "../../javascript/controllers/noncnx_counter_controller.js", "../../javascript/controllers/notifications_controller.js", "../../javascript/controllers/paddle_controller.js", "../../javascript/controllers/paypal_controller.js", "../../javascript/controllers/pricing_controller.js", "../../javascript/controllers/select_controller.js", "../../javascript/controllers/slim_controller.js", "../../../node_modules/slim-select/dist/slimselect.es.js", "../../javascript/controllers/stripe_controller.js", "../../javascript/controllers/toggle_controller.js", "../../javascript/controllers/tooltip_controller.js", "../../javascript/controllers/trix_controller.js", "../../javascript/controllers/turbo_native/sign_out_controller.js", "rails:/var/www/cnx.very.hu/releases/20261022103137/app/javascript/controllers/**/*_controller.js", "../../../node_modules/flatpickr/dist/esm/types/options.js", "../../../node_modules/flatpickr/dist/esm/l10n/default.js", "../../../node_modules/flatpickr/dist/esm/utils/index.js", "../../../node_modules/flatpickr/dist/esm/utils/dom.js", "../../../node_modules/flatpickr/dist/esm/utils/formatting.js", "../../../node_modules/flatpickr/dist/esm/utils/dates.js", "../../../node_modules/flatpickr/dist/esm/utils/polyfills.js", "../../../node_modules/flatpickr/dist/esm/index.js", "../../../node_modules/stimulus-flatpickr/node_modules/@hotwired/stimulus/dist/stimulus.js", "../../../node_modules/stimulus-flatpickr/src/utils.js", "../../../node_modules/stimulus-flatpickr/src/config_options.js", "../../../node_modules/stimulus-flatpickr/src/events.js", "../../../node_modules/stimulus-flatpickr/src/elements.js", "../../../node_modules/stimulus-flatpickr/src/strftime_mapping.js", "../../../node_modules/stimulus-flatpickr/src/index.js", "../../javascript/controllers/index.js", "../../../node_modules/@rails/request.js/src/fetch_response.js", "../../../node_modules/@rails/request.js/src/request_interceptor.js", "../../../node_modules/@rails/request.js/src/lib/utils.js", "../../../node_modules/@rails/request.js/src/fetch_request.js", "../../../node_modules/@rails/request.js/src/verbs.js", "../../javascript/src/actiontext.js", "rails:/var/www/cnx.very.hu/releases/20261022103137/app/javascript/src/**/*", "../../../node_modules/js-cookie/dist/js.cookie.mjs", "../../javascript/src/timezone.js", "../../javascript/src/turbo_native/bridge.js", "../../javascript/src/turbo_streams.js"],
  "sourcesContent": ["/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/main/actionview/app/assets/javascripts\nReleased under the MIT license\n */;\n\n(function() {\n  var context = this;\n\n  (function() {\n    (function() {\n      this.Rails = {\n        linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',\n        buttonClickSelector: {\n          selector: 'button[data-remote]:not([form]), button[data-confirm]:not([form])',\n          exclude: 'form button'\n        },\n        inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',\n        formSubmitSelector: 'form:not([data-turbo=true])',\n        formInputClickSelector: 'form:not([data-turbo=true]) input[type=submit], form:not([data-turbo=true]) input[type=image], form:not([data-turbo=true]) button[type=submit], form:not([data-turbo=true]) button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',\n        formDisableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',\n        formEnableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',\n        fileInputSelector: 'input[name][type=file]:not([disabled])',\n        linkDisableSelector: 'a[data-disable-with], a[data-disable]',\n        buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]'\n      };\n\n    }).call(this);\n  }).call(context);\n\n  var Rails = context.Rails;\n\n  (function() {\n    (function() {\n      var nonce;\n\n      nonce = null;\n\n      Rails.loadCSPNonce = function() {\n        var ref;\n        return nonce = (ref = document.querySelector(\"meta[name=csp-nonce]\")) != null ? ref.content : void 0;\n      };\n\n      Rails.cspNonce = function() {\n        return nonce != null ? nonce : Rails.loadCSPNonce();\n      };\n\n    }).call(this);\n    (function() {\n      var expando, m;\n\n      m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n\n      Rails.matches = function(element, selector) {\n        if (selector.exclude != null) {\n          return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n        } else {\n          return m.call(element, selector);\n        }\n      };\n\n      expando = '_ujsData';\n\n      Rails.getData = function(element, key) {\n        var ref;\n        return (ref = element[expando]) != null ? ref[key] : void 0;\n      };\n\n      Rails.setData = function(element, key, value) {\n        if (element[expando] == null) {\n          element[expando] = {};\n        }\n        return element[expando][key] = value;\n      };\n\n      Rails.$ = function(selector) {\n        return Array.prototype.slice.call(document.querySelectorAll(selector));\n      };\n\n    }).call(this);\n    (function() {\n      var $, csrfParam, csrfToken;\n\n      $ = Rails.$;\n\n      csrfToken = Rails.csrfToken = function() {\n        var meta;\n        meta = document.querySelector('meta[name=csrf-token]');\n        return meta && meta.content;\n      };\n\n      csrfParam = Rails.csrfParam = function() {\n        var meta;\n        meta = document.querySelector('meta[name=csrf-param]');\n        return meta && meta.content;\n      };\n\n      Rails.CSRFProtection = function(xhr) {\n        var token;\n        token = csrfToken();\n        if (token != null) {\n          return xhr.setRequestHeader('X-CSRF-Token', token);\n        }\n      };\n\n      Rails.refreshCSRFTokens = function() {\n        var param, token;\n        token = csrfToken();\n        param = csrfParam();\n        if ((token != null) && (param != null)) {\n          return $('form input[name=\"' + param + '\"]').forEach(function(input) {\n            return input.value = token;\n          });\n        }\n      };\n\n    }).call(this);\n    (function() {\n      var CustomEvent, fire, matches, preventDefault;\n\n      matches = Rails.matches;\n\n      CustomEvent = window.CustomEvent;\n\n      if (typeof CustomEvent !== 'function') {\n        CustomEvent = function(event, params) {\n          var evt;\n          evt = document.createEvent('CustomEvent');\n          evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n          return evt;\n        };\n        CustomEvent.prototype = window.Event.prototype;\n        preventDefault = CustomEvent.prototype.preventDefault;\n        CustomEvent.prototype.preventDefault = function() {\n          var result;\n          result = preventDefault.call(this);\n          if (this.cancelable && !this.defaultPrevented) {\n            Object.defineProperty(this, 'defaultPrevented', {\n              get: function() {\n                return true;\n              }\n            });\n          }\n          return result;\n        };\n      }\n\n      fire = Rails.fire = function(obj, name, data) {\n        var event;\n        event = new CustomEvent(name, {\n          bubbles: true,\n          cancelable: true,\n          detail: data\n        });\n        obj.dispatchEvent(event);\n        return !event.defaultPrevented;\n      };\n\n      Rails.stopEverything = function(e) {\n        fire(e.target, 'ujs:everythingStopped');\n        e.preventDefault();\n        e.stopPropagation();\n        return e.stopImmediatePropagation();\n      };\n\n      Rails.delegate = function(element, selector, eventType, handler) {\n        return element.addEventListener(eventType, function(e) {\n          var target;\n          target = e.target;\n          while (!(!(target instanceof Element) || matches(target, selector))) {\n            target = target.parentNode;\n          }\n          if (target instanceof Element && handler.call(target, e) === false) {\n            e.preventDefault();\n            return e.stopPropagation();\n          }\n        });\n      };\n\n    }).call(this);\n    (function() {\n      var AcceptHeaders, CSRFProtection, createXHR, cspNonce, fire, prepareOptions, processResponse;\n\n      cspNonce = Rails.cspNonce, CSRFProtection = Rails.CSRFProtection, fire = Rails.fire;\n\n      AcceptHeaders = {\n        '*': '*/*',\n        text: 'text/plain',\n        html: 'text/html',\n        xml: 'application/xml, text/xml',\n        json: 'application/json, text/javascript',\n        script: 'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript'\n      };\n\n      Rails.ajax = function(options) {\n        var xhr;\n        options = prepareOptions(options);\n        xhr = createXHR(options, function() {\n          var ref, response;\n          response = processResponse((ref = xhr.response) != null ? ref : xhr.responseText, xhr.getResponseHeader('Content-Type'));\n          if (Math.floor(xhr.status / 100) === 2) {\n            if (typeof options.success === \"function\") {\n              options.success(response, xhr.statusText, xhr);\n            }\n          } else {\n            if (typeof options.error === \"function\") {\n              options.error(response, xhr.statusText, xhr);\n            }\n          }\n          return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : void 0;\n        });\n        if ((options.beforeSend != null) && !options.beforeSend(xhr, options)) {\n          return false;\n        }\n        if (xhr.readyState === XMLHttpRequest.OPENED) {\n          return xhr.send(options.data);\n        }\n      };\n\n      prepareOptions = function(options) {\n        options.url = options.url || location.href;\n        options.type = options.type.toUpperCase();\n        if (options.type === 'GET' && options.data) {\n          if (options.url.indexOf('?') < 0) {\n            options.url += '?' + options.data;\n          } else {\n            options.url += '&' + options.data;\n          }\n        }\n        if (AcceptHeaders[options.dataType] == null) {\n          options.dataType = '*';\n        }\n        options.accept = AcceptHeaders[options.dataType];\n        if (options.dataType !== '*') {\n          options.accept += ', */*; q=0.01';\n        }\n        return options;\n      };\n\n      createXHR = function(options, done) {\n        var xhr;\n        xhr = new XMLHttpRequest();\n        xhr.open(options.type, options.url, true);\n        xhr.setRequestHeader('Accept', options.accept);\n        if (typeof options.data === 'string') {\n          xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\n        }\n        if (!options.crossDomain) {\n          xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n          CSRFProtection(xhr);\n        }\n        xhr.withCredentials = !!options.withCredentials;\n        xhr.onreadystatechange = function() {\n          if (xhr.readyState === XMLHttpRequest.DONE) {\n            return done(xhr);\n          }\n        };\n        return xhr;\n      };\n\n      processResponse = function(response, type) {\n        var parser, script;\n        if (typeof response === 'string' && typeof type === 'string') {\n          if (type.match(/\\bjson\\b/)) {\n            try {\n              response = JSON.parse(response);\n            } catch (error) {}\n          } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n            script = document.createElement('script');\n            script.setAttribute('nonce', cspNonce());\n            script.text = response;\n            document.head.appendChild(script).parentNode.removeChild(script);\n          } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n            parser = new DOMParser();\n            type = type.replace(/;.+/, '');\n            try {\n              response = parser.parseFromString(response, type);\n            } catch (error) {}\n          }\n        }\n        return response;\n      };\n\n      Rails.href = function(element) {\n        return element.href;\n      };\n\n      Rails.isCrossDomain = function(url) {\n        var e, originAnchor, urlAnchor;\n        originAnchor = document.createElement('a');\n        originAnchor.href = location.href;\n        urlAnchor = document.createElement('a');\n        try {\n          urlAnchor.href = url;\n          return !(((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host) || (originAnchor.protocol + '//' + originAnchor.host === urlAnchor.protocol + '//' + urlAnchor.host));\n        } catch (error) {\n          e = error;\n          return true;\n        }\n      };\n\n    }).call(this);\n    (function() {\n      var matches, toArray;\n\n      matches = Rails.matches;\n\n      toArray = function(e) {\n        return Array.prototype.slice.call(e);\n      };\n\n      Rails.serializeElement = function(element, additionalParam) {\n        var inputs, params;\n        inputs = [element];\n        if (matches(element, 'form')) {\n          inputs = toArray(element.elements);\n        }\n        params = [];\n        inputs.forEach(function(input) {\n          if (!input.name || input.disabled) {\n            return;\n          }\n          if (matches(input, 'fieldset[disabled] *')) {\n            return;\n          }\n          if (matches(input, 'select')) {\n            return toArray(input.options).forEach(function(option) {\n              if (option.selected) {\n                return params.push({\n                  name: input.name,\n                  value: option.value\n                });\n              }\n            });\n          } else if (input.checked || ['radio', 'checkbox', 'submit'].indexOf(input.type) === -1) {\n            return params.push({\n              name: input.name,\n              value: input.value\n            });\n          }\n        });\n        if (additionalParam) {\n          params.push(additionalParam);\n        }\n        return params.map(function(param) {\n          if (param.name != null) {\n            return (encodeURIComponent(param.name)) + \"=\" + (encodeURIComponent(param.value));\n          } else {\n            return param;\n          }\n        }).join('&');\n      };\n\n      Rails.formElements = function(form, selector) {\n        if (matches(form, 'form')) {\n          return toArray(form.elements).filter(function(el) {\n            return matches(el, selector);\n          });\n        } else {\n          return toArray(form.querySelectorAll(selector));\n        }\n      };\n\n    }).call(this);\n    (function() {\n      var allowAction, fire, stopEverything;\n\n      fire = Rails.fire, stopEverything = Rails.stopEverything;\n\n      Rails.handleConfirm = function(e) {\n        if (!allowAction(this)) {\n          return stopEverything(e);\n        }\n      };\n\n      Rails.confirm = function(message, element) {\n        return confirm(message);\n      };\n\n      allowAction = function(element) {\n        var answer, callback, message;\n        message = element.getAttribute('data-confirm');\n        if (!message) {\n          return true;\n        }\n        answer = false;\n        if (fire(element, 'confirm')) {\n          try {\n            answer = Rails.confirm(message, element);\n          } catch (error) {}\n          callback = fire(element, 'confirm:complete', [answer]);\n        }\n        return answer && callback;\n      };\n\n    }).call(this);\n    (function() {\n      var disableFormElement, disableFormElements, disableLinkElement, enableFormElement, enableFormElements, enableLinkElement, formElements, getData, isXhrRedirect, matches, setData, stopEverything;\n\n      matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, stopEverything = Rails.stopEverything, formElements = Rails.formElements;\n\n      Rails.handleDisabledElement = function(e) {\n        var element;\n        element = this;\n        if (element.disabled) {\n          return stopEverything(e);\n        }\n      };\n\n      Rails.enableElement = function(e) {\n        var element;\n        if (e instanceof Event) {\n          if (isXhrRedirect(e)) {\n            return;\n          }\n          element = e.target;\n        } else {\n          element = e;\n        }\n        if (matches(element, Rails.linkDisableSelector)) {\n          return enableLinkElement(element);\n        } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formEnableSelector)) {\n          return enableFormElement(element);\n        } else if (matches(element, Rails.formSubmitSelector)) {\n          return enableFormElements(element);\n        }\n      };\n\n      Rails.disableElement = function(e) {\n        var element;\n        element = e instanceof Event ? e.target : e;\n        if (matches(element, Rails.linkDisableSelector)) {\n          return disableLinkElement(element);\n        } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formDisableSelector)) {\n          return disableFormElement(element);\n        } else if (matches(element, Rails.formSubmitSelector)) {\n          return disableFormElements(element);\n        }\n      };\n\n      disableLinkElement = function(element) {\n        var replacement;\n        if (getData(element, 'ujs:disabled')) {\n          return;\n        }\n        replacement = element.getAttribute('data-disable-with');\n        if (replacement != null) {\n          setData(element, 'ujs:enable-with', element.innerHTML);\n          element.innerHTML = replacement;\n        }\n        element.addEventListener('click', stopEverything);\n        return setData(element, 'ujs:disabled', true);\n      };\n\n      enableLinkElement = function(element) {\n        var originalText;\n        originalText = getData(element, 'ujs:enable-with');\n        if (originalText != null) {\n          element.innerHTML = originalText;\n          setData(element, 'ujs:enable-with', null);\n        }\n        element.removeEventListener('click', stopEverything);\n        return setData(element, 'ujs:disabled', null);\n      };\n\n      disableFormElements = function(form) {\n        return formElements(form, Rails.formDisableSelector).forEach(disableFormElement);\n      };\n\n      disableFormElement = function(element) {\n        var replacement;\n        if (getData(element, 'ujs:disabled')) {\n          return;\n        }\n        replacement = element.getAttribute('data-disable-with');\n        if (replacement != null) {\n          if (matches(element, 'button')) {\n            setData(element, 'ujs:enable-with', element.innerHTML);\n            element.innerHTML = replacement;\n          } else {\n            setData(element, 'ujs:enable-with', element.value);\n            element.value = replacement;\n          }\n        }\n        element.disabled = true;\n        return setData(element, 'ujs:disabled', true);\n      };\n\n      enableFormElements = function(form) {\n        return formElements(form, Rails.formEnableSelector).forEach(enableFormElement);\n      };\n\n      enableFormElement = function(element) {\n        var originalText;\n        originalText = getData(element, 'ujs:enable-with');\n        if (originalText != null) {\n          if (matches(element, 'button')) {\n            element.innerHTML = originalText;\n          } else {\n            element.value = originalText;\n          }\n          setData(element, 'ujs:enable-with', null);\n        }\n        element.disabled = false;\n        return setData(element, 'ujs:disabled', null);\n      };\n\n      isXhrRedirect = function(event) {\n        var ref, xhr;\n        xhr = (ref = event.detail) != null ? ref[0] : void 0;\n        return (xhr != null ? xhr.getResponseHeader(\"X-Xhr-Redirect\") : void 0) != null;\n      };\n\n    }).call(this);\n    (function() {\n      var stopEverything;\n\n      stopEverything = Rails.stopEverything;\n\n      Rails.handleMethod = function(e) {\n        var csrfParam, csrfToken, form, formContent, href, link, method;\n        link = this;\n        method = link.getAttribute('data-method');\n        if (!method) {\n          return;\n        }\n        href = Rails.href(link);\n        csrfToken = Rails.csrfToken();\n        csrfParam = Rails.csrfParam();\n        form = document.createElement('form');\n        formContent = \"<input name='_method' value='\" + method + \"' type='hidden' />\";\n        if ((csrfParam != null) && (csrfToken != null) && !Rails.isCrossDomain(href)) {\n          formContent += \"<input name='\" + csrfParam + \"' value='\" + csrfToken + \"' type='hidden' />\";\n        }\n        formContent += '<input type=\"submit\" />';\n        form.method = 'post';\n        form.action = href;\n        form.target = link.target;\n        form.innerHTML = formContent;\n        form.style.display = 'none';\n        document.body.appendChild(form);\n        form.querySelector('[type=\"submit\"]').click();\n        return stopEverything(e);\n      };\n\n    }).call(this);\n    (function() {\n      var ajax, fire, getData, isCrossDomain, isRemote, matches, serializeElement, setData, stopEverything,\n        slice = [].slice;\n\n      matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, fire = Rails.fire, stopEverything = Rails.stopEverything, ajax = Rails.ajax, isCrossDomain = Rails.isCrossDomain, serializeElement = Rails.serializeElement;\n\n      isRemote = function(element) {\n        var value;\n        value = element.getAttribute('data-remote');\n        return (value != null) && value !== 'false';\n      };\n\n      Rails.handleRemote = function(e) {\n        var button, data, dataType, element, method, url, withCredentials;\n        element = this;\n        if (!isRemote(element)) {\n          return true;\n        }\n        if (!fire(element, 'ajax:before')) {\n          fire(element, 'ajax:stopped');\n          return false;\n        }\n        withCredentials = element.getAttribute('data-with-credentials');\n        dataType = element.getAttribute('data-type') || 'script';\n        if (matches(element, Rails.formSubmitSelector)) {\n          button = getData(element, 'ujs:submit-button');\n          method = getData(element, 'ujs:submit-button-formmethod') || element.method;\n          url = getData(element, 'ujs:submit-button-formaction') || element.getAttribute('action') || location.href;\n          if (method.toUpperCase() === 'GET') {\n            url = url.replace(/\\?.*$/, '');\n          }\n          if (element.enctype === 'multipart/form-data') {\n            data = new FormData(element);\n            if (button != null) {\n              data.append(button.name, button.value);\n            }\n          } else {\n            data = serializeElement(element, button);\n          }\n          setData(element, 'ujs:submit-button', null);\n          setData(element, 'ujs:submit-button-formmethod', null);\n          setData(element, 'ujs:submit-button-formaction', null);\n        } else if (matches(element, Rails.buttonClickSelector) || matches(element, Rails.inputChangeSelector)) {\n          method = element.getAttribute('data-method');\n          url = element.getAttribute('data-url');\n          data = serializeElement(element, element.getAttribute('data-params'));\n        } else {\n          method = element.getAttribute('data-method');\n          url = Rails.href(element);\n          data = element.getAttribute('data-params');\n        }\n        ajax({\n          type: method || 'GET',\n          url: url,\n          data: data,\n          dataType: dataType,\n          beforeSend: function(xhr, options) {\n            if (fire(element, 'ajax:beforeSend', [xhr, options])) {\n              return fire(element, 'ajax:send', [xhr]);\n            } else {\n              fire(element, 'ajax:stopped');\n              return false;\n            }\n          },\n          success: function() {\n            var args;\n            args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n            return fire(element, 'ajax:success', args);\n          },\n          error: function() {\n            var args;\n            args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n            return fire(element, 'ajax:error', args);\n          },\n          complete: function() {\n            var args;\n            args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n            return fire(element, 'ajax:complete', args);\n          },\n          crossDomain: isCrossDomain(url),\n          withCredentials: (withCredentials != null) && withCredentials !== 'false'\n        });\n        return stopEverything(e);\n      };\n\n      Rails.formSubmitButtonClick = function(e) {\n        var button, form;\n        button = this;\n        form = button.form;\n        if (!form) {\n          return;\n        }\n        if (button.name) {\n          setData(form, 'ujs:submit-button', {\n            name: button.name,\n            value: button.value\n          });\n        }\n        setData(form, 'ujs:formnovalidate-button', button.formNoValidate);\n        setData(form, 'ujs:submit-button-formaction', button.getAttribute('formaction'));\n        return setData(form, 'ujs:submit-button-formmethod', button.getAttribute('formmethod'));\n      };\n\n      Rails.preventInsignificantClick = function(e) {\n        var data, insignificantMetaClick, link, metaClick, method, nonPrimaryMouseClick;\n        link = this;\n        method = (link.getAttribute('data-method') || 'GET').toUpperCase();\n        data = link.getAttribute('data-params');\n        metaClick = e.metaKey || e.ctrlKey;\n        insignificantMetaClick = metaClick && method === 'GET' && !data;\n        nonPrimaryMouseClick = (e.button != null) && e.button !== 0;\n        if (nonPrimaryMouseClick || insignificantMetaClick) {\n          return e.stopImmediatePropagation();\n        }\n      };\n\n    }).call(this);\n    (function() {\n      var $, CSRFProtection, delegate, disableElement, enableElement, fire, formSubmitButtonClick, getData, handleConfirm, handleDisabledElement, handleMethod, handleRemote, loadCSPNonce, preventInsignificantClick, refreshCSRFTokens;\n\n      fire = Rails.fire, delegate = Rails.delegate, getData = Rails.getData, $ = Rails.$, refreshCSRFTokens = Rails.refreshCSRFTokens, CSRFProtection = Rails.CSRFProtection, loadCSPNonce = Rails.loadCSPNonce, enableElement = Rails.enableElement, disableElement = Rails.disableElement, handleDisabledElement = Rails.handleDisabledElement, handleConfirm = Rails.handleConfirm, preventInsignificantClick = Rails.preventInsignificantClick, handleRemote = Rails.handleRemote, formSubmitButtonClick = Rails.formSubmitButtonClick, handleMethod = Rails.handleMethod;\n\n      if ((typeof jQuery !== \"undefined\" && jQuery !== null) && (jQuery.ajax != null)) {\n        if (jQuery.rails) {\n          throw new Error('If you load both jquery_ujs and rails-ujs, use rails-ujs only.');\n        }\n        jQuery.rails = Rails;\n        jQuery.ajaxPrefilter(function(options, originalOptions, xhr) {\n          if (!options.crossDomain) {\n            return CSRFProtection(xhr);\n          }\n        });\n      }\n\n      Rails.start = function() {\n        if (window._rails_loaded) {\n          throw new Error('rails-ujs has already been loaded!');\n        }\n        window.addEventListener('pageshow', function() {\n          $(Rails.formEnableSelector).forEach(function(el) {\n            if (getData(el, 'ujs:disabled')) {\n              return enableElement(el);\n            }\n          });\n          return $(Rails.linkDisableSelector).forEach(function(el) {\n            if (getData(el, 'ujs:disabled')) {\n              return enableElement(el);\n            }\n          });\n        });\n        delegate(document, Rails.linkDisableSelector, 'ajax:complete', enableElement);\n        delegate(document, Rails.linkDisableSelector, 'ajax:stopped', enableElement);\n        delegate(document, Rails.buttonDisableSelector, 'ajax:complete', enableElement);\n        delegate(document, Rails.buttonDisableSelector, 'ajax:stopped', enableElement);\n        delegate(document, Rails.linkClickSelector, 'click', preventInsignificantClick);\n        delegate(document, Rails.linkClickSelector, 'click', handleDisabledElement);\n        delegate(document, Rails.linkClickSelector, 'click', handleConfirm);\n        delegate(document, Rails.linkClickSelector, 'click', disableElement);\n        delegate(document, Rails.linkClickSelector, 'click', handleRemote);\n        delegate(document, Rails.linkClickSelector, 'click', handleMethod);\n        delegate(document, Rails.buttonClickSelector, 'click', preventInsignificantClick);\n        delegate(document, Rails.buttonClickSelector, 'click', handleDisabledElement);\n        delegate(document, Rails.buttonClickSelector, 'click', handleConfirm);\n        delegate(document, Rails.buttonClickSelector, 'click', disableElement);\n        delegate(document, Rails.buttonClickSelector, 'click', handleRemote);\n        delegate(document, Rails.inputChangeSelector, 'change', handleDisabledElement);\n        delegate(document, Rails.inputChangeSelector, 'change', handleConfirm);\n        delegate(document, Rails.inputChangeSelector, 'change', handleRemote);\n        delegate(document, Rails.formSubmitSelector, 'submit', handleDisabledElement);\n        delegate(document, Rails.formSubmitSelector, 'submit', handleConfirm);\n        delegate(document, Rails.formSubmitSelector, 'submit', handleRemote);\n        delegate(document, Rails.formSubmitSelector, 'submit', function(e) {\n          return setTimeout((function() {\n            return disableElement(e);\n          }), 13);\n        });\n        delegate(document, Rails.formSubmitSelector, 'ajax:send', disableElement);\n        delegate(document, Rails.formSubmitSelector, 'ajax:complete', enableElement);\n        delegate(document, Rails.formInputClickSelector, 'click', preventInsignificantClick);\n        delegate(document, Rails.formInputClickSelector, 'click', handleDisabledElement);\n        delegate(document, Rails.formInputClickSelector, 'click', handleConfirm);\n        delegate(document, Rails.formInputClickSelector, 'click', formSubmitButtonClick);\n        document.addEventListener('DOMContentLoaded', refreshCSRFTokens);\n        document.addEventListener('DOMContentLoaded', loadCSPNonce);\n        return window._rails_loaded = true;\n      };\n\n      if (window.Rails === Rails && fire(document, 'rails:attachBindings')) {\n        Rails.start();\n      }\n\n    }).call(this);\n  }).call(this);\n\n  if (typeof module === \"object\" && module.exports) {\n    module.exports = Rails;\n  } else if (typeof define === \"function\" && define.amd) {\n    define(Rails);\n  }\n}).call(this);\n", "export default {\n  logger: self.console,\n  WebSocket: self.WebSocket\n}\n", "import adapters from \"./adapters\"\n\n// The logger is disabled by default. You can enable it with:\n//\n//   ActionCable.logger.enabled = true\n//\n//   Example:\n//\n//   import * as ActionCable from '@rails/actioncable'\n//\n//   ActionCable.logger.enabled = true\n//   ActionCable.logger.log('Connection Established.')\n//\n\nexport default {\n  log(...messages) {\n    if (this.enabled) {\n      messages.push(Date.now())\n      adapters.logger.log(\"[ActionCable]\", ...messages)\n    }\n  },\n}\n", "import logger from \"./logger\"\n\n// Responsible for ensuring the cable connection is in good health by validating the heartbeat pings sent from the server, and attempting\n// revival reconnections if things go astray. Internal class, not intended for direct user manipulation.\n\nconst now = () => new Date().getTime()\n\nconst secondsSince = time => (now() - time) / 1000\n\nclass ConnectionMonitor {\n  constructor(connection) {\n    this.visibilityDidChange = this.visibilityDidChange.bind(this)\n    this.connection = connection\n    this.reconnectAttempts = 0\n  }\n\n  start() {\n    if (!this.isRunning()) {\n      this.startedAt = now()\n      delete this.stoppedAt\n      this.startPolling()\n      addEventListener(\"visibilitychange\", this.visibilityDidChange)\n      logger.log(`ConnectionMonitor started. stale threshold = ${this.constructor.staleThreshold} s`)\n    }\n  }\n\n  stop() {\n    if (this.isRunning()) {\n      this.stoppedAt = now()\n      this.stopPolling()\n      removeEventListener(\"visibilitychange\", this.visibilityDidChange)\n      logger.log(\"ConnectionMonitor stopped\")\n    }\n  }\n\n  isRunning() {\n    return this.startedAt && !this.stoppedAt\n  }\n\n  recordPing() {\n    this.pingedAt = now()\n  }\n\n  recordConnect() {\n    this.reconnectAttempts = 0\n    this.recordPing()\n    delete this.disconnectedAt\n    logger.log(\"ConnectionMonitor recorded connect\")\n  }\n\n  recordDisconnect() {\n    this.disconnectedAt = now()\n    logger.log(\"ConnectionMonitor recorded disconnect\")\n  }\n\n  // Private\n\n  startPolling() {\n    this.stopPolling()\n    this.poll()\n  }\n\n  stopPolling() {\n    clearTimeout(this.pollTimeout)\n  }\n\n  poll() {\n    this.pollTimeout = setTimeout(() => {\n      this.reconnectIfStale()\n      this.poll()\n    }\n    , this.getPollInterval())\n  }\n\n  getPollInterval() {\n    const { staleThreshold, reconnectionBackoffRate } = this.constructor\n    const backoff = Math.pow(1 + reconnectionBackoffRate, Math.min(this.reconnectAttempts, 10))\n    const jitterMax = this.reconnectAttempts === 0 ? 1.0 : reconnectionBackoffRate\n    const jitter = jitterMax * Math.random()\n    return staleThreshold * 1000 * backoff * (1 + jitter)\n  }\n\n  reconnectIfStale() {\n    if (this.connectionIsStale()) {\n      logger.log(`ConnectionMonitor detected stale connection. reconnectAttempts = ${this.reconnectAttempts}, time stale = ${secondsSince(this.refreshedAt)} s, stale threshold = ${this.constructor.staleThreshold} s`)\n      this.reconnectAttempts++\n      if (this.disconnectedRecently()) {\n        logger.log(`ConnectionMonitor skipping reopening recent disconnect. time disconnected = ${secondsSince(this.disconnectedAt)} s`)\n      } else {\n        logger.log(\"ConnectionMonitor reopening\")\n        this.connection.reopen()\n      }\n    }\n  }\n\n  get refreshedAt() {\n    return this.pingedAt ? this.pingedAt : this.startedAt\n  }\n\n  connectionIsStale() {\n    return secondsSince(this.refreshedAt) > this.constructor.staleThreshold\n  }\n\n  disconnectedRecently() {\n    return this.disconnectedAt && (secondsSince(this.disconnectedAt) < this.constructor.staleThreshold)\n  }\n\n  visibilityDidChange() {\n    if (document.visibilityState === \"visible\") {\n      setTimeout(() => {\n        if (this.connectionIsStale() || !this.connection.isOpen()) {\n          logger.log(`ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = ${document.visibilityState}`)\n          this.connection.reopen()\n        }\n      }\n      , 200)\n    }\n  }\n\n}\n\nConnectionMonitor.staleThreshold = 6 // Server::Connections::BEAT_INTERVAL * 2 (missed two pings)\nConnectionMonitor.reconnectionBackoffRate = 0.15\n\nexport default ConnectionMonitor\n", "export default {\n  \"message_types\": {\n    \"welcome\": \"welcome\",\n    \"disconnect\": \"disconnect\",\n    \"ping\": \"ping\",\n    \"confirmation\": \"confirm_subscription\",\n    \"rejection\": \"reject_subscription\"\n  },\n  \"disconnect_reasons\": {\n    \"unauthorized\": \"unauthorized\",\n    \"invalid_request\": \"invalid_request\",\n    \"server_restart\": \"server_restart\"\n  },\n  \"default_mount_path\": \"/cable\",\n  \"protocols\": [\n    \"actioncable-v1-json\",\n    \"actioncable-unsupported\"\n  ]\n}\n", "import adapters from \"./adapters\"\nimport ConnectionMonitor from \"./connection_monitor\"\nimport INTERNAL from \"./internal\"\nimport logger from \"./logger\"\n\n// Encapsulate the cable connection held by the consumer. This is an internal class not intended for direct user manipulation.\n\nconst {message_types, protocols} = INTERNAL\nconst supportedProtocols = protocols.slice(0, protocols.length - 1)\n\nconst indexOf = [].indexOf\n\nclass Connection {\n  constructor(consumer) {\n    this.open = this.open.bind(this)\n    this.consumer = consumer\n    this.subscriptions = this.consumer.subscriptions\n    this.monitor = new ConnectionMonitor(this)\n    this.disconnected = true\n  }\n\n  send(data) {\n    if (this.isOpen()) {\n      this.webSocket.send(JSON.stringify(data))\n      return true\n    } else {\n      return false\n    }\n  }\n\n  open() {\n    if (this.isActive()) {\n      logger.log(`Attempted to open WebSocket, but existing socket is ${this.getState()}`)\n      return false\n    } else {\n      logger.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${protocols}`)\n      if (this.webSocket) { this.uninstallEventHandlers() }\n      this.webSocket = new adapters.WebSocket(this.consumer.url, protocols)\n      this.installEventHandlers()\n      this.monitor.start()\n      return true\n    }\n  }\n\n  close({allowReconnect} = {allowReconnect: true}) {\n    if (!allowReconnect) { this.monitor.stop() }\n    // Avoid closing websockets in a \"connecting\" state due to Safari 15.1+ bug. See: https://github.com/rails/rails/issues/43835#issuecomment-1002288478\n    if (this.isOpen()) {\n      return this.webSocket.close()\n    }\n  }\n\n  reopen() {\n    logger.log(`Reopening WebSocket, current state is ${this.getState()}`)\n    if (this.isActive()) {\n      try {\n        return this.close()\n      } catch (error) {\n        logger.log(\"Failed to reopen WebSocket\", error)\n      }\n      finally {\n        logger.log(`Reopening WebSocket in ${this.constructor.reopenDelay}ms`)\n        setTimeout(this.open, this.constructor.reopenDelay)\n      }\n    } else {\n      return this.open()\n    }\n  }\n\n  getProtocol() {\n    if (this.webSocket) {\n      return this.webSocket.protocol\n    }\n  }\n\n  isOpen() {\n    return this.isState(\"open\")\n  }\n\n  isActive() {\n    return this.isState(\"open\", \"connecting\")\n  }\n\n  // Private\n\n  isProtocolSupported() {\n    return indexOf.call(supportedProtocols, this.getProtocol()) >= 0\n  }\n\n  isState(...states) {\n    return indexOf.call(states, this.getState()) >= 0\n  }\n\n  getState() {\n    if (this.webSocket) {\n      for (let state in adapters.WebSocket) {\n        if (adapters.WebSocket[state] === this.webSocket.readyState) {\n          return state.toLowerCase()\n        }\n      }\n    }\n    return null\n  }\n\n  installEventHandlers() {\n    for (let eventName in this.events) {\n      const handler = this.events[eventName].bind(this)\n      this.webSocket[`on${eventName}`] = handler\n    }\n  }\n\n  uninstallEventHandlers() {\n    for (let eventName in this.events) {\n      this.webSocket[`on${eventName}`] = function() {}\n    }\n  }\n\n}\n\nConnection.reopenDelay = 500\n\nConnection.prototype.events = {\n  message(event) {\n    if (!this.isProtocolSupported()) { return }\n    const {identifier, message, reason, reconnect, type} = JSON.parse(event.data)\n    switch (type) {\n      case message_types.welcome:\n        this.monitor.recordConnect()\n        return this.subscriptions.reload()\n      case message_types.disconnect:\n        logger.log(`Disconnecting. Reason: ${reason}`)\n        return this.close({allowReconnect: reconnect})\n      case message_types.ping:\n        return this.monitor.recordPing()\n      case message_types.confirmation:\n        this.subscriptions.confirmSubscription(identifier)\n        return this.subscriptions.notify(identifier, \"connected\")\n      case message_types.rejection:\n        return this.subscriptions.reject(identifier)\n      default:\n        return this.subscriptions.notify(identifier, \"received\", message)\n    }\n  },\n\n  open() {\n    logger.log(`WebSocket onopen event, using '${this.getProtocol()}' subprotocol`)\n    this.disconnected = false\n    if (!this.isProtocolSupported()) {\n      logger.log(\"Protocol is unsupported. Stopping monitor and disconnecting.\")\n      return this.close({allowReconnect: false})\n    }\n  },\n\n  close(event) {\n    logger.log(\"WebSocket onclose event\")\n    if (this.disconnected) { return }\n    this.disconnected = true\n    this.monitor.recordDisconnect()\n    return this.subscriptions.notifyAll(\"disconnected\", {willAttemptReconnect: this.monitor.isRunning()})\n  },\n\n  error() {\n    logger.log(\"WebSocket onerror event\")\n  }\n}\n\nexport default Connection\n", "// A new subscription is created through the ActionCable.Subscriptions instance available on the consumer.\n// It provides a number of callbacks and a method for calling remote procedure calls on the corresponding\n// Channel instance on the server side.\n//\n// An example demonstrates the basic functionality:\n//\n//   App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\", {\n//     connected() {\n//       // Called once the subscription has been successfully completed\n//     },\n//\n//     disconnected({ willAttemptReconnect: boolean }) {\n//       // Called when the client has disconnected with the server.\n//       // The object will have an `willAttemptReconnect` property which\n//       // says whether the client has the intention of attempting\n//       // to reconnect.\n//     },\n//\n//     appear() {\n//       this.perform('appear', {appearing_on: this.appearingOn()})\n//     },\n//\n//     away() {\n//       this.perform('away')\n//     },\n//\n//     appearingOn() {\n//       $('main').data('appearing-on')\n//     }\n//   })\n//\n// The methods #appear and #away forward their intent to the remote AppearanceChannel instance on the server\n// by calling the `perform` method with the first parameter being the action (which maps to AppearanceChannel#appear/away).\n// The second parameter is a hash that'll get JSON encoded and made available on the server in the data parameter.\n//\n// This is how the server component would look:\n//\n//   class AppearanceChannel < ApplicationActionCable::Channel\n//     def subscribed\n//       current_user.appear\n//     end\n//\n//     def unsubscribed\n//       current_user.disappear\n//     end\n//\n//     def appear(data)\n//       current_user.appear on: data['appearing_on']\n//     end\n//\n//     def away\n//       current_user.away\n//     end\n//   end\n//\n// The \"AppearanceChannel\" name is automatically mapped between the client-side subscription creation and the server-side Ruby class name.\n// The AppearanceChannel#appear/away public methods are exposed automatically to client-side invocation through the perform method.\n\nconst extend = function(object, properties) {\n  if (properties != null) {\n    for (let key in properties) {\n      const value = properties[key]\n      object[key] = value\n    }\n  }\n  return object\n}\n\nexport default class Subscription {\n  constructor(consumer, params = {}, mixin) {\n    this.consumer = consumer\n    this.identifier = JSON.stringify(params)\n    extend(this, mixin)\n  }\n\n  // Perform a channel action with the optional data passed as an attribute\n  perform(action, data = {}) {\n    data.action = action\n    return this.send(data)\n  }\n\n  send(data) {\n    return this.consumer.send({command: \"message\", identifier: this.identifier, data: JSON.stringify(data)})\n  }\n\n  unsubscribe() {\n    return this.consumer.subscriptions.remove(this)\n  }\n}\n", "import logger from \"./logger\"\n\n// Responsible for ensuring channel subscribe command is confirmed, retrying until confirmation is received.\n// Internal class, not intended for direct user manipulation.\n\nclass SubscriptionGuarantor {\n  constructor(subscriptions) {\n    this.subscriptions = subscriptions\n    this.pendingSubscriptions = []\n  }\n\n  guarantee(subscription) {\n    if(this.pendingSubscriptions.indexOf(subscription) == -1){ \n      logger.log(`SubscriptionGuarantor guaranteeing ${subscription.identifier}`)\n      this.pendingSubscriptions.push(subscription) \n    }\n    else {\n      logger.log(`SubscriptionGuarantor already guaranteeing ${subscription.identifier}`)\n    }\n    this.startGuaranteeing()\n  }\n\n  forget(subscription) {\n    logger.log(`SubscriptionGuarantor forgetting ${subscription.identifier}`)\n    this.pendingSubscriptions = (this.pendingSubscriptions.filter((s) => s !== subscription))\n  }\n\n  startGuaranteeing() {\n    this.stopGuaranteeing()\n    this.retrySubscribing()\n  }\n  \n  stopGuaranteeing() {\n    clearTimeout(this.retryTimeout)\n  }\n\n  retrySubscribing() {\n    this.retryTimeout = setTimeout(() => {\n      if (this.subscriptions && typeof(this.subscriptions.subscribe) === \"function\") {\n        this.pendingSubscriptions.map((subscription) => {\n          logger.log(`SubscriptionGuarantor resubscribing ${subscription.identifier}`)\n          this.subscriptions.subscribe(subscription)\n        })\n      }\n    }\n    , 500)\n  }\n}\n\nexport default SubscriptionGuarantor", "import Subscription from \"./subscription\"\nimport SubscriptionGuarantor from \"./subscription_guarantor\"\nimport logger from \"./logger\"\n\n// Collection class for creating (and internally managing) channel subscriptions.\n// The only method intended to be triggered by the user is ActionCable.Subscriptions#create,\n// and it should be called through the consumer like so:\n//\n//   App = {}\n//   App.cable = ActionCable.createConsumer(\"ws://example.com/accounts/1\")\n//   App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\")\n//\n// For more details on how you'd configure an actual channel subscription, see ActionCable.Subscription.\n\nexport default class Subscriptions {\n  constructor(consumer) {\n    this.consumer = consumer\n    this.guarantor = new SubscriptionGuarantor(this)\n    this.subscriptions = []\n  }\n\n  create(channelName, mixin) {\n    const channel = channelName\n    const params = typeof channel === \"object\" ? channel : {channel}\n    const subscription = new Subscription(this.consumer, params, mixin)\n    return this.add(subscription)\n  }\n\n  // Private\n\n  add(subscription) {\n    this.subscriptions.push(subscription)\n    this.consumer.ensureActiveConnection()\n    this.notify(subscription, \"initialized\")\n    this.subscribe(subscription)\n    return subscription\n  }\n\n  remove(subscription) {\n    this.forget(subscription)\n    if (!this.findAll(subscription.identifier).length) {\n      this.sendCommand(subscription, \"unsubscribe\")\n    }\n    return subscription\n  }\n\n  reject(identifier) {\n    return this.findAll(identifier).map((subscription) => {\n      this.forget(subscription)\n      this.notify(subscription, \"rejected\")\n      return subscription\n    })\n  }\n\n  forget(subscription) {\n    this.guarantor.forget(subscription)\n    this.subscriptions = (this.subscriptions.filter((s) => s !== subscription))\n    return subscription\n  }\n\n  findAll(identifier) {\n    return this.subscriptions.filter((s) => s.identifier === identifier)\n  }\n\n  reload() {\n    return this.subscriptions.map((subscription) =>\n      this.subscribe(subscription))\n  }\n\n  notifyAll(callbackName, ...args) {\n    return this.subscriptions.map((subscription) =>\n      this.notify(subscription, callbackName, ...args))\n  }\n\n  notify(subscription, callbackName, ...args) {\n    let subscriptions\n    if (typeof subscription === \"string\") {\n      subscriptions = this.findAll(subscription)\n    } else {\n      subscriptions = [subscription]\n    }\n\n    return subscriptions.map((subscription) =>\n      (typeof subscription[callbackName] === \"function\" ? subscription[callbackName](...args) : undefined))\n  }\n\n  subscribe(subscription) {\n    if (this.sendCommand(subscription, \"subscribe\")) {\n      this.guarantor.guarantee(subscription)\n    }\n  }\n\n  confirmSubscription(identifier) {\n    logger.log(`Subscription confirmed ${identifier}`)\n    this.findAll(identifier).map((subscription) =>\n      this.guarantor.forget(subscription))\n  }\n\n  sendCommand(subscription, command) {\n    const {identifier} = subscription\n    return this.consumer.send({command, identifier})\n  }\n}\n", "import Connection from \"./connection\"\nimport Subscriptions from \"./subscriptions\"\n\n// The ActionCable.Consumer establishes the connection to a server-side Ruby Connection object. Once established,\n// the ActionCable.ConnectionMonitor will ensure that its properly maintained through heartbeats and checking for stale updates.\n// The Consumer instance is also the gateway to establishing subscriptions to desired channels through the #createSubscription\n// method.\n//\n// The following example shows how this can be set up:\n//\n//   App = {}\n//   App.cable = ActionCable.createConsumer(\"ws://example.com/accounts/1\")\n//   App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\")\n//\n// For more details on how you'd configure an actual channel subscription, see ActionCable.Subscription.\n//\n// When a consumer is created, it automatically connects with the server.\n//\n// To disconnect from the server, call\n//\n//   App.cable.disconnect()\n//\n// and to restart the connection:\n//\n//   App.cable.connect()\n//\n// Any channel subscriptions which existed prior to disconnecting will\n// automatically resubscribe.\n\nexport default class Consumer {\n  constructor(url) {\n    this._url = url\n    this.subscriptions = new Subscriptions(this)\n    this.connection = new Connection(this)\n  }\n\n  get url() {\n    return createWebSocketURL(this._url)\n  }\n\n  send(data) {\n    return this.connection.send(data)\n  }\n\n  connect() {\n    return this.connection.open()\n  }\n\n  disconnect() {\n    return this.connection.close({allowReconnect: false})\n  }\n\n  ensureActiveConnection() {\n    if (!this.connection.isActive()) {\n      return this.connection.open()\n    }\n  }\n}\n\nexport function createWebSocketURL(url) {\n  if (typeof url === \"function\") {\n    url = url()\n  }\n\n  if (url && !/^wss?:/i.test(url)) {\n    const a = document.createElement(\"a\")\n    a.href = url\n    // Fix populating Location properties in IE. Otherwise, protocol will be blank.\n    a.href = a.href\n    a.protocol = a.protocol.replace(\"http\", \"ws\")\n    return a.href\n  } else {\n    return url\n  }\n}\n", "import Connection from \"./connection\"\nimport ConnectionMonitor from \"./connection_monitor\"\nimport Consumer, { createWebSocketURL } from \"./consumer\"\nimport INTERNAL from \"./internal\"\nimport Subscription from \"./subscription\"\nimport Subscriptions from \"./subscriptions\"\nimport SubscriptionGuarantor from \"./subscription_guarantor\"\nimport adapters from \"./adapters\"\nimport logger from \"./logger\"\n\nexport {\n  Connection,\n  ConnectionMonitor,\n  Consumer,\n  INTERNAL,\n  Subscription,\n  Subscriptions,\n  SubscriptionGuarantor,\n  adapters,\n  createWebSocketURL,\n  logger,\n}\n\nexport function createConsumer(url = getConfig(\"url\") || INTERNAL.default_mount_path) {\n  return new Consumer(url)\n}\n\nexport function getConfig(name) {\n  const element = document.head.querySelector(`meta[name='action-cable-${name}']`)\n  if (element) {\n    return element.getAttribute(\"content\")\n  }\n}\n", "function reorderSteps() {\n    const stepsContainer = document.querySelector('.steps-container');\n    const steps = stepsContainer?.querySelectorAll('.step-content');\n    const innerStepsContainers = stepsContainer?.querySelectorAll('.step-content-wrapper');\n\n    if (window.innerWidth < 1024) {\n        innerStepsContainers?.at(0)?.appendChild(steps[3]); // step 2\n        innerStepsContainers?.at(0)?.appendChild(steps[4]); // step 4\n    } else {\n        innerStepsContainers?.at(1)?.insertBefore(steps[3], steps[1]); // step 2\n        innerStepsContainers?.at(1)?.appendChild(steps[4]); // step 4\n    }\n\n\n}\n\n// reorder when resizing and page loading\nwindow.addEventListener('resize', reorderSteps);\nwindow.addEventListener('DOMContentLoaded', reorderSteps)\n", "/*!\n * clipboard.js v2.0.11\n * https://clipboardjs.com/\n *\n * Licensed MIT \u00A9 Zeno Rocha\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ClipboardJS\"] = factory();\n\telse\n\t\troot[\"ClipboardJS\"] = factory();\n})(this, function() {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 686:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n  \"default\": function() { return /* binding */ clipboard; }\n});\n\n// EXTERNAL MODULE: ./node_modules/tiny-emitter/index.js\nvar tiny_emitter = __webpack_require__(279);\nvar tiny_emitter_default = /*#__PURE__*/__webpack_require__.n(tiny_emitter);\n// EXTERNAL MODULE: ./node_modules/good-listener/src/listen.js\nvar listen = __webpack_require__(370);\nvar listen_default = /*#__PURE__*/__webpack_require__.n(listen);\n// EXTERNAL MODULE: ./node_modules/select/src/select.js\nvar src_select = __webpack_require__(817);\nvar select_default = /*#__PURE__*/__webpack_require__.n(src_select);\n;// CONCATENATED MODULE: ./src/common/command.js\n/**\n * Executes a given operation type.\n * @param {String} type\n * @return {Boolean}\n */\nfunction command(type) {\n  try {\n    return document.execCommand(type);\n  } catch (err) {\n    return false;\n  }\n}\n;// CONCATENATED MODULE: ./src/actions/cut.js\n\n\n/**\n * Cut action wrapper.\n * @param {String|HTMLElement} target\n * @return {String}\n */\n\nvar ClipboardActionCut = function ClipboardActionCut(target) {\n  var selectedText = select_default()(target);\n  command('cut');\n  return selectedText;\n};\n\n/* harmony default export */ var actions_cut = (ClipboardActionCut);\n;// CONCATENATED MODULE: ./src/common/create-fake-element.js\n/**\n * Creates a fake textarea element with a value.\n * @param {String} value\n * @return {HTMLElement}\n */\nfunction createFakeElement(value) {\n  var isRTL = document.documentElement.getAttribute('dir') === 'rtl';\n  var fakeElement = document.createElement('textarea'); // Prevent zooming on iOS\n\n  fakeElement.style.fontSize = '12pt'; // Reset box model\n\n  fakeElement.style.border = '0';\n  fakeElement.style.padding = '0';\n  fakeElement.style.margin = '0'; // Move element out of screen horizontally\n\n  fakeElement.style.position = 'absolute';\n  fakeElement.style[isRTL ? 'right' : 'left'] = '-9999px'; // Move element to the same position vertically\n\n  var yPosition = window.pageYOffset || document.documentElement.scrollTop;\n  fakeElement.style.top = \"\".concat(yPosition, \"px\");\n  fakeElement.setAttribute('readonly', '');\n  fakeElement.value = value;\n  return fakeElement;\n}\n;// CONCATENATED MODULE: ./src/actions/copy.js\n\n\n\n/**\n * Create fake copy action wrapper using a fake element.\n * @param {String} target\n * @param {Object} options\n * @return {String}\n */\n\nvar fakeCopyAction = function fakeCopyAction(value, options) {\n  var fakeElement = createFakeElement(value);\n  options.container.appendChild(fakeElement);\n  var selectedText = select_default()(fakeElement);\n  command('copy');\n  fakeElement.remove();\n  return selectedText;\n};\n/**\n * Copy action wrapper.\n * @param {String|HTMLElement} target\n * @param {Object} options\n * @return {String}\n */\n\n\nvar ClipboardActionCopy = function ClipboardActionCopy(target) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n    container: document.body\n  };\n  var selectedText = '';\n\n  if (typeof target === 'string') {\n    selectedText = fakeCopyAction(target, options);\n  } else if (target instanceof HTMLInputElement && !['text', 'search', 'url', 'tel', 'password'].includes(target === null || target === void 0 ? void 0 : target.type)) {\n    // If input type doesn't support `setSelectionRange`. Simulate it. https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n    selectedText = fakeCopyAction(target.value, options);\n  } else {\n    selectedText = select_default()(target);\n    command('copy');\n  }\n\n  return selectedText;\n};\n\n/* harmony default export */ var actions_copy = (ClipboardActionCopy);\n;// CONCATENATED MODULE: ./src/actions/default.js\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n\n/**\n * Inner function which performs selection from either `text` or `target`\n * properties and then executes copy or cut operations.\n * @param {Object} options\n */\n\nvar ClipboardActionDefault = function ClipboardActionDefault() {\n  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  // Defines base properties passed from constructor.\n  var _options$action = options.action,\n      action = _options$action === void 0 ? 'copy' : _options$action,\n      container = options.container,\n      target = options.target,\n      text = options.text; // Sets the `action` to be performed which can be either 'copy' or 'cut'.\n\n  if (action !== 'copy' && action !== 'cut') {\n    throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"');\n  } // Sets the `target` property using an element that will be have its content copied.\n\n\n  if (target !== undefined) {\n    if (target && _typeof(target) === 'object' && target.nodeType === 1) {\n      if (action === 'copy' && target.hasAttribute('disabled')) {\n        throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');\n      }\n\n      if (action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) {\n        throw new Error('Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes');\n      }\n    } else {\n      throw new Error('Invalid \"target\" value, use a valid Element');\n    }\n  } // Define selection strategy based on `text` property.\n\n\n  if (text) {\n    return actions_copy(text, {\n      container: container\n    });\n  } // Defines which selection strategy based on `target` property.\n\n\n  if (target) {\n    return action === 'cut' ? actions_cut(target) : actions_copy(target, {\n      container: container\n    });\n  }\n};\n\n/* harmony default export */ var actions_default = (ClipboardActionDefault);\n;// CONCATENATED MODULE: ./src/clipboard.js\nfunction clipboard_typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { clipboard_typeof = function _typeof(obj) { return typeof obj; }; } else { clipboard_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return clipboard_typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (clipboard_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\n\n\n\n/**\n * Helper function to retrieve attribute value.\n * @param {String} suffix\n * @param {Element} element\n */\n\nfunction getAttributeValue(suffix, element) {\n  var attribute = \"data-clipboard-\".concat(suffix);\n\n  if (!element.hasAttribute(attribute)) {\n    return;\n  }\n\n  return element.getAttribute(attribute);\n}\n/**\n * Base class which takes one or more elements, adds event listeners to them,\n * and instantiates a new `ClipboardAction` on each click.\n */\n\n\nvar Clipboard = /*#__PURE__*/function (_Emitter) {\n  _inherits(Clipboard, _Emitter);\n\n  var _super = _createSuper(Clipboard);\n\n  /**\n   * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n   * @param {Object} options\n   */\n  function Clipboard(trigger, options) {\n    var _this;\n\n    _classCallCheck(this, Clipboard);\n\n    _this = _super.call(this);\n\n    _this.resolveOptions(options);\n\n    _this.listenClick(trigger);\n\n    return _this;\n  }\n  /**\n   * Defines if attributes would be resolved using internal setter functions\n   * or custom functions that were passed in the constructor.\n   * @param {Object} options\n   */\n\n\n  _createClass(Clipboard, [{\n    key: \"resolveOptions\",\n    value: function resolveOptions() {\n      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      this.action = typeof options.action === 'function' ? options.action : this.defaultAction;\n      this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;\n      this.text = typeof options.text === 'function' ? options.text : this.defaultText;\n      this.container = clipboard_typeof(options.container) === 'object' ? options.container : document.body;\n    }\n    /**\n     * Adds a click event listener to the passed trigger.\n     * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n     */\n\n  }, {\n    key: \"listenClick\",\n    value: function listenClick(trigger) {\n      var _this2 = this;\n\n      this.listener = listen_default()(trigger, 'click', function (e) {\n        return _this2.onClick(e);\n      });\n    }\n    /**\n     * Defines a new `ClipboardAction` on each click event.\n     * @param {Event} e\n     */\n\n  }, {\n    key: \"onClick\",\n    value: function onClick(e) {\n      var trigger = e.delegateTarget || e.currentTarget;\n      var action = this.action(trigger) || 'copy';\n      var text = actions_default({\n        action: action,\n        container: this.container,\n        target: this.target(trigger),\n        text: this.text(trigger)\n      }); // Fires an event based on the copy operation result.\n\n      this.emit(text ? 'success' : 'error', {\n        action: action,\n        text: text,\n        trigger: trigger,\n        clearSelection: function clearSelection() {\n          if (trigger) {\n            trigger.focus();\n          }\n\n          window.getSelection().removeAllRanges();\n        }\n      });\n    }\n    /**\n     * Default `action` lookup function.\n     * @param {Element} trigger\n     */\n\n  }, {\n    key: \"defaultAction\",\n    value: function defaultAction(trigger) {\n      return getAttributeValue('action', trigger);\n    }\n    /**\n     * Default `target` lookup function.\n     * @param {Element} trigger\n     */\n\n  }, {\n    key: \"defaultTarget\",\n    value: function defaultTarget(trigger) {\n      var selector = getAttributeValue('target', trigger);\n\n      if (selector) {\n        return document.querySelector(selector);\n      }\n    }\n    /**\n     * Allow fire programmatically a copy action\n     * @param {String|HTMLElement} target\n     * @param {Object} options\n     * @returns Text copied.\n     */\n\n  }, {\n    key: \"defaultText\",\n\n    /**\n     * Default `text` lookup function.\n     * @param {Element} trigger\n     */\n    value: function defaultText(trigger) {\n      return getAttributeValue('text', trigger);\n    }\n    /**\n     * Destroy lifecycle.\n     */\n\n  }, {\n    key: \"destroy\",\n    value: function destroy() {\n      this.listener.destroy();\n    }\n  }], [{\n    key: \"copy\",\n    value: function copy(target) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n        container: document.body\n      };\n      return actions_copy(target, options);\n    }\n    /**\n     * Allow fire programmatically a cut action\n     * @param {String|HTMLElement} target\n     * @returns Text cutted.\n     */\n\n  }, {\n    key: \"cut\",\n    value: function cut(target) {\n      return actions_cut(target);\n    }\n    /**\n     * Returns the support of the given action, or all actions if no action is\n     * given.\n     * @param {String} [action]\n     */\n\n  }, {\n    key: \"isSupported\",\n    value: function isSupported() {\n      var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut'];\n      var actions = typeof action === 'string' ? [action] : action;\n      var support = !!document.queryCommandSupported;\n      actions.forEach(function (action) {\n        support = support && !!document.queryCommandSupported(action);\n      });\n      return support;\n    }\n  }]);\n\n  return Clipboard;\n}((tiny_emitter_default()));\n\n/* harmony default export */ var clipboard = (Clipboard);\n\n/***/ }),\n\n/***/ 828:\n/***/ (function(module) {\n\nvar DOCUMENT_NODE_TYPE = 9;\n\n/**\n * A polyfill for Element.matches()\n */\nif (typeof Element !== 'undefined' && !Element.prototype.matches) {\n    var proto = Element.prototype;\n\n    proto.matches = proto.matchesSelector ||\n                    proto.mozMatchesSelector ||\n                    proto.msMatchesSelector ||\n                    proto.oMatchesSelector ||\n                    proto.webkitMatchesSelector;\n}\n\n/**\n * Finds the closest parent that matches a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @return {Function}\n */\nfunction closest (element, selector) {\n    while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {\n        if (typeof element.matches === 'function' &&\n            element.matches(selector)) {\n          return element;\n        }\n        element = element.parentNode;\n    }\n}\n\nmodule.exports = closest;\n\n\n/***/ }),\n\n/***/ 438:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar closest = __webpack_require__(828);\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction _delegate(element, selector, type, callback, useCapture) {\n    var listenerFn = listener.apply(this, arguments);\n\n    element.addEventListener(type, listenerFn, useCapture);\n\n    return {\n        destroy: function() {\n            element.removeEventListener(type, listenerFn, useCapture);\n        }\n    }\n}\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element|String|Array} [elements]\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction delegate(elements, selector, type, callback, useCapture) {\n    // Handle the regular Element usage\n    if (typeof elements.addEventListener === 'function') {\n        return _delegate.apply(null, arguments);\n    }\n\n    // Handle Element-less usage, it defaults to global delegation\n    if (typeof type === 'function') {\n        // Use `document` as the first parameter, then apply arguments\n        // This is a short way to .unshift `arguments` without running into deoptimizations\n        return _delegate.bind(null, document).apply(null, arguments);\n    }\n\n    // Handle Selector-based usage\n    if (typeof elements === 'string') {\n        elements = document.querySelectorAll(elements);\n    }\n\n    // Handle Array-like based usage\n    return Array.prototype.map.call(elements, function (element) {\n        return _delegate(element, selector, type, callback, useCapture);\n    });\n}\n\n/**\n * Finds closest match and invokes callback.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Function}\n */\nfunction listener(element, selector, type, callback) {\n    return function(e) {\n        e.delegateTarget = closest(e.target, selector);\n\n        if (e.delegateTarget) {\n            callback.call(element, e);\n        }\n    }\n}\n\nmodule.exports = delegate;\n\n\n/***/ }),\n\n/***/ 879:\n/***/ (function(__unused_webpack_module, exports) {\n\n/**\n * Check if argument is a HTML element.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.node = function(value) {\n    return value !== undefined\n        && value instanceof HTMLElement\n        && value.nodeType === 1;\n};\n\n/**\n * Check if argument is a list of HTML elements.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.nodeList = function(value) {\n    var type = Object.prototype.toString.call(value);\n\n    return value !== undefined\n        && (type === '[object NodeList]' || type === '[object HTMLCollection]')\n        && ('length' in value)\n        && (value.length === 0 || exports.node(value[0]));\n};\n\n/**\n * Check if argument is a string.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.string = function(value) {\n    return typeof value === 'string'\n        || value instanceof String;\n};\n\n/**\n * Check if argument is a function.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.fn = function(value) {\n    var type = Object.prototype.toString.call(value);\n\n    return type === '[object Function]';\n};\n\n\n/***/ }),\n\n/***/ 370:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar is = __webpack_require__(879);\nvar delegate = __webpack_require__(438);\n\n/**\n * Validates all params and calls the right\n * listener function based on its target type.\n *\n * @param {String|HTMLElement|HTMLCollection|NodeList} target\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listen(target, type, callback) {\n    if (!target && !type && !callback) {\n        throw new Error('Missing required arguments');\n    }\n\n    if (!is.string(type)) {\n        throw new TypeError('Second argument must be a String');\n    }\n\n    if (!is.fn(callback)) {\n        throw new TypeError('Third argument must be a Function');\n    }\n\n    if (is.node(target)) {\n        return listenNode(target, type, callback);\n    }\n    else if (is.nodeList(target)) {\n        return listenNodeList(target, type, callback);\n    }\n    else if (is.string(target)) {\n        return listenSelector(target, type, callback);\n    }\n    else {\n        throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');\n    }\n}\n\n/**\n * Adds an event listener to a HTML element\n * and returns a remove listener function.\n *\n * @param {HTMLElement} node\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNode(node, type, callback) {\n    node.addEventListener(type, callback);\n\n    return {\n        destroy: function() {\n            node.removeEventListener(type, callback);\n        }\n    }\n}\n\n/**\n * Add an event listener to a list of HTML elements\n * and returns a remove listener function.\n *\n * @param {NodeList|HTMLCollection} nodeList\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNodeList(nodeList, type, callback) {\n    Array.prototype.forEach.call(nodeList, function(node) {\n        node.addEventListener(type, callback);\n    });\n\n    return {\n        destroy: function() {\n            Array.prototype.forEach.call(nodeList, function(node) {\n                node.removeEventListener(type, callback);\n            });\n        }\n    }\n}\n\n/**\n * Add an event listener to a selector\n * and returns a remove listener function.\n *\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenSelector(selector, type, callback) {\n    return delegate(document.body, selector, type, callback);\n}\n\nmodule.exports = listen;\n\n\n/***/ }),\n\n/***/ 817:\n/***/ (function(module) {\n\nfunction select(element) {\n    var selectedText;\n\n    if (element.nodeName === 'SELECT') {\n        element.focus();\n\n        selectedText = element.value;\n    }\n    else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {\n        var isReadOnly = element.hasAttribute('readonly');\n\n        if (!isReadOnly) {\n            element.setAttribute('readonly', '');\n        }\n\n        element.select();\n        element.setSelectionRange(0, element.value.length);\n\n        if (!isReadOnly) {\n            element.removeAttribute('readonly');\n        }\n\n        selectedText = element.value;\n    }\n    else {\n        if (element.hasAttribute('contenteditable')) {\n            element.focus();\n        }\n\n        var selection = window.getSelection();\n        var range = document.createRange();\n\n        range.selectNodeContents(element);\n        selection.removeAllRanges();\n        selection.addRange(range);\n\n        selectedText = selection.toString();\n    }\n\n    return selectedText;\n}\n\nmodule.exports = select;\n\n\n/***/ }),\n\n/***/ 279:\n/***/ (function(module) {\n\nfunction E () {\n  // Keep this empty so it's easier to inherit from\n  // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n  on: function (name, callback, ctx) {\n    var e = this.e || (this.e = {});\n\n    (e[name] || (e[name] = [])).push({\n      fn: callback,\n      ctx: ctx\n    });\n\n    return this;\n  },\n\n  once: function (name, callback, ctx) {\n    var self = this;\n    function listener () {\n      self.off(name, listener);\n      callback.apply(ctx, arguments);\n    };\n\n    listener._ = callback\n    return this.on(name, listener, ctx);\n  },\n\n  emit: function (name) {\n    var data = [].slice.call(arguments, 1);\n    var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n    var i = 0;\n    var len = evtArr.length;\n\n    for (i; i < len; i++) {\n      evtArr[i].fn.apply(evtArr[i].ctx, data);\n    }\n\n    return this;\n  },\n\n  off: function (name, callback) {\n    var e = this.e || (this.e = {});\n    var evts = e[name];\n    var liveEvents = [];\n\n    if (evts && callback) {\n      for (var i = 0, len = evts.length; i < len; i++) {\n        if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n          liveEvents.push(evts[i]);\n      }\n    }\n\n    // Remove event from queue to prevent memory leak\n    // Suggested by https://github.com/lazd\n    // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n    (liveEvents.length)\n      ? e[name] = liveEvents\n      : delete e[name];\n\n    return this;\n  }\n};\n\nmodule.exports = E;\nmodule.exports.TinyEmitter = E;\n\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(__webpack_module_cache__[moduleId]) {\n/******/ \t\t\treturn __webpack_module_cache__[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/compat get default export */\n/******/ \t!function() {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__webpack_require__.n = function(module) {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\tfunction() { return module['default']; } :\n/******/ \t\t\t\tfunction() { return module; };\n/******/ \t\t\t__webpack_require__.d(getter, { a: getter });\n/******/ \t\t\treturn getter;\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t!function() {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = function(exports, definition) {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t!function() {\n/******/ \t\t__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }\n/******/ \t}();\n/******/ \t\n/************************************************************************/\n/******/ \t// module exports must be returned from runtime so entry inlining is disabled\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(686);\n/******/ })()\n.default;\n});", "/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global global, define, System, Reflect, Promise */\r\nvar __extends;\r\nvar __assign;\r\nvar __rest;\r\nvar __decorate;\r\nvar __param;\r\nvar __esDecorate;\r\nvar __runInitializers;\r\nvar __propKey;\r\nvar __setFunctionName;\r\nvar __metadata;\r\nvar __awaiter;\r\nvar __generator;\r\nvar __exportStar;\r\nvar __values;\r\nvar __read;\r\nvar __spread;\r\nvar __spreadArrays;\r\nvar __spreadArray;\r\nvar __await;\r\nvar __asyncGenerator;\r\nvar __asyncDelegator;\r\nvar __asyncValues;\r\nvar __makeTemplateObject;\r\nvar __importStar;\r\nvar __importDefault;\r\nvar __classPrivateFieldGet;\r\nvar __classPrivateFieldSet;\r\nvar __classPrivateFieldIn;\r\nvar __createBinding;\r\n(function (factory) {\r\n    var root = typeof global === \"object\" ? global : typeof self === \"object\" ? self : typeof this === \"object\" ? this : {};\r\n    if (typeof define === \"function\" && define.amd) {\r\n        define(\"tslib\", [\"exports\"], function (exports) { factory(createExporter(root, createExporter(exports))); });\r\n    }\r\n    else if (typeof module === \"object\" && typeof module.exports === \"object\") {\r\n        factory(createExporter(root, createExporter(module.exports)));\r\n    }\r\n    else {\r\n        factory(createExporter(root));\r\n    }\r\n    function createExporter(exports, previous) {\r\n        if (exports !== root) {\r\n            if (typeof Object.create === \"function\") {\r\n                Object.defineProperty(exports, \"__esModule\", { value: true });\r\n            }\r\n            else {\r\n                exports.__esModule = true;\r\n            }\r\n        }\r\n        return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };\r\n    }\r\n})\r\n(function (exporter) {\r\n    var extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n\r\n    __extends = function (d, b) {\r\n        if (typeof b !== \"function\" && b !== null)\r\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n        extendStatics(d, b);\r\n        function __() { this.constructor = d; }\r\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n    };\r\n\r\n    __assign = Object.assign || function (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\r\n    __rest = function (s, e) {\r\n        var t = {};\r\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n            t[p] = s[p];\r\n        if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n            for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n                if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                    t[p[i]] = s[p[i]];\r\n            }\r\n        return t;\r\n    };\r\n\r\n    __decorate = function (decorators, target, key, desc) {\r\n        var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n        if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n        else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n        return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n    };\r\n\r\n    __param = function (paramIndex, decorator) {\r\n        return function (target, key) { decorator(target, key, paramIndex); }\r\n    };\r\n\r\n    __esDecorate = function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n        function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n        var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n        var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n        var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n        var _, done = false;\r\n        for (var i = decorators.length - 1; i >= 0; i--) {\r\n            var context = {};\r\n            for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n            for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n            context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n            var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n            if (kind === \"accessor\") {\r\n                if (result === void 0) continue;\r\n                if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n                if (_ = accept(result.get)) descriptor.get = _;\r\n                if (_ = accept(result.set)) descriptor.set = _;\r\n                if (_ = accept(result.init)) initializers.push(_);\r\n            }\r\n            else if (_ = accept(result)) {\r\n                if (kind === \"field\") initializers.push(_);\r\n                else descriptor[key] = _;\r\n            }\r\n        }\r\n        if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n        done = true;\r\n    };\r\n\r\n    __runInitializers = function (thisArg, initializers, value) {\r\n        var useValue = arguments.length > 2;\r\n        for (var i = 0; i < initializers.length; i++) {\r\n            value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n        }\r\n        return useValue ? value : void 0;\r\n    };\r\n\r\n    __propKey = function (x) {\r\n        return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n    };\r\n\r\n    __setFunctionName = function (f, name, prefix) {\r\n        if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n        return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n    };\r\n\r\n    __metadata = function (metadataKey, metadataValue) {\r\n        if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n    };\r\n\r\n    __awaiter = function (thisArg, _arguments, P, generator) {\r\n        function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n        return new (P || (P = Promise))(function (resolve, reject) {\r\n            function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n            function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n            function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n            step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n        });\r\n    };\r\n\r\n    __generator = function (thisArg, body) {\r\n        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n        return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n        function verb(n) { return function (v) { return step([n, v]); }; }\r\n        function step(op) {\r\n            if (f) throw new TypeError(\"Generator is already executing.\");\r\n            while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n                if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n                if (y = 0, t) op = [op[0] & 2, t.value];\r\n                switch (op[0]) {\r\n                    case 0: case 1: t = op; break;\r\n                    case 4: _.label++; return { value: op[1], done: false };\r\n                    case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                    case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                    default:\r\n                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                        if (t[2]) _.ops.pop();\r\n                        _.trys.pop(); continue;\r\n                }\r\n                op = body.call(thisArg, _);\r\n            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n        }\r\n    };\r\n\r\n    __exportStar = function(m, o) {\r\n        for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n    };\r\n\r\n    __createBinding = Object.create ? (function(o, m, k, k2) {\r\n        if (k2 === undefined) k2 = k;\r\n        var desc = Object.getOwnPropertyDescriptor(m, k);\r\n        if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n            desc = { enumerable: true, get: function() { return m[k]; } };\r\n        }\r\n        Object.defineProperty(o, k2, desc);\r\n    }) : (function(o, m, k, k2) {\r\n        if (k2 === undefined) k2 = k;\r\n        o[k2] = m[k];\r\n    });\r\n\r\n    __values = function (o) {\r\n        var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n        if (m) return m.call(o);\r\n        if (o && typeof o.length === \"number\") return {\r\n            next: function () {\r\n                if (o && i >= o.length) o = void 0;\r\n                return { value: o && o[i++], done: !o };\r\n            }\r\n        };\r\n        throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n    };\r\n\r\n    __read = function (o, n) {\r\n        var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n        if (!m) return o;\r\n        var i = m.call(o), r, ar = [], e;\r\n        try {\r\n            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n        }\r\n        catch (error) { e = { error: error }; }\r\n        finally {\r\n            try {\r\n                if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n            }\r\n            finally { if (e) throw e.error; }\r\n        }\r\n        return ar;\r\n    };\r\n\r\n    /** @deprecated */\r\n    __spread = function () {\r\n        for (var ar = [], i = 0; i < arguments.length; i++)\r\n            ar = ar.concat(__read(arguments[i]));\r\n        return ar;\r\n    };\r\n\r\n    /** @deprecated */\r\n    __spreadArrays = function () {\r\n        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n        for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n                r[k] = a[j];\r\n        return r;\r\n    };\r\n\r\n    __spreadArray = function (to, from, pack) {\r\n        if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n            if (ar || !(i in from)) {\r\n                if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n                ar[i] = from[i];\r\n            }\r\n        }\r\n        return to.concat(ar || Array.prototype.slice.call(from));\r\n    };\r\n\r\n    __await = function (v) {\r\n        return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n    };\r\n\r\n    __asyncGenerator = function (thisArg, _arguments, generator) {\r\n        if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n        var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n        return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n        function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n        function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n        function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);  }\r\n        function fulfill(value) { resume(\"next\", value); }\r\n        function reject(value) { resume(\"throw\", value); }\r\n        function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n    };\r\n\r\n    __asyncDelegator = function (o) {\r\n        var i, p;\r\n        return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n        function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n    };\r\n\r\n    __asyncValues = function (o) {\r\n        if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n        var m = o[Symbol.asyncIterator], i;\r\n        return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n        function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n        function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n    };\r\n\r\n    __makeTemplateObject = function (cooked, raw) {\r\n        if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n        return cooked;\r\n    };\r\n\r\n    var __setModuleDefault = Object.create ? (function(o, v) {\r\n        Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n    }) : function(o, v) {\r\n        o[\"default\"] = v;\r\n    };\r\n\r\n    __importStar = function (mod) {\r\n        if (mod && mod.__esModule) return mod;\r\n        var result = {};\r\n        if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n        __setModuleDefault(result, mod);\r\n        return result;\r\n    };\r\n\r\n    __importDefault = function (mod) {\r\n        return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n    };\r\n\r\n    __classPrivateFieldGet = function (receiver, state, kind, f) {\r\n        if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n        if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n        return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n    };\r\n\r\n    __classPrivateFieldSet = function (receiver, state, value, kind, f) {\r\n        if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n        if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n        if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n        return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n    };\r\n\r\n    __classPrivateFieldIn = function (state, receiver) {\r\n        if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n        return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n    };\r\n\r\n    exporter(\"__extends\", __extends);\r\n    exporter(\"__assign\", __assign);\r\n    exporter(\"__rest\", __rest);\r\n    exporter(\"__decorate\", __decorate);\r\n    exporter(\"__param\", __param);\r\n    exporter(\"__esDecorate\", __esDecorate);\r\n    exporter(\"__runInitializers\", __runInitializers);\r\n    exporter(\"__propKey\", __propKey);\r\n    exporter(\"__setFunctionName\", __setFunctionName);\r\n    exporter(\"__metadata\", __metadata);\r\n    exporter(\"__awaiter\", __awaiter);\r\n    exporter(\"__generator\", __generator);\r\n    exporter(\"__exportStar\", __exportStar);\r\n    exporter(\"__createBinding\", __createBinding);\r\n    exporter(\"__values\", __values);\r\n    exporter(\"__read\", __read);\r\n    exporter(\"__spread\", __spread);\r\n    exporter(\"__spreadArrays\", __spreadArrays);\r\n    exporter(\"__spreadArray\", __spreadArray);\r\n    exporter(\"__await\", __await);\r\n    exporter(\"__asyncGenerator\", __asyncGenerator);\r\n    exporter(\"__asyncDelegator\", __asyncDelegator);\r\n    exporter(\"__asyncValues\", __asyncValues);\r\n    exporter(\"__makeTemplateObject\", __makeTemplateObject);\r\n    exporter(\"__importStar\", __importStar);\r\n    exporter(\"__importDefault\", __importDefault);\r\n    exporter(\"__classPrivateFieldGet\", __classPrivateFieldGet);\r\n    exporter(\"__classPrivateFieldSet\", __classPrivateFieldSet);\r\n    exporter(\"__classPrivateFieldIn\", __classPrivateFieldIn);\r\n});\r\n", "/*!\n * Cropper.js v1.5.13\n * https://fengyuanchen.github.io/cropperjs\n *\n * Copyright 2015-present Chen Fengyuan\n * Released under the MIT license\n *\n * Date: 2022-11-20T05:30:46.114Z\n */\n\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Cropper = factory());\n})(this, (function () { 'use strict';\n\n  function ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n      var symbols = Object.getOwnPropertySymbols(object);\n      enumerableOnly && (symbols = symbols.filter(function (sym) {\n        return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n      })), keys.push.apply(keys, symbols);\n    }\n    return keys;\n  }\n  function _objectSpread2(target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = null != arguments[i] ? arguments[i] : {};\n      i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n    return target;\n  }\n  function _typeof(obj) {\n    \"@babel/helpers - typeof\";\n\n    return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n      return typeof obj;\n    } : function (obj) {\n      return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    }, _typeof(obj);\n  }\n  function _classCallCheck(instance, Constructor) {\n    if (!(instance instanceof Constructor)) {\n      throw new TypeError(\"Cannot call a class as a function\");\n    }\n  }\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  function _createClass(Constructor, protoProps, staticProps) {\n    if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) _defineProperties(Constructor, staticProps);\n    Object.defineProperty(Constructor, \"prototype\", {\n      writable: false\n    });\n    return Constructor;\n  }\n  function _defineProperty(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    return obj;\n  }\n  function _toConsumableArray(arr) {\n    return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n  }\n  function _arrayWithoutHoles(arr) {\n    if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n  }\n  function _iterableToArray(iter) {\n    if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n  }\n  function _unsupportedIterableToArray(o, minLen) {\n    if (!o) return;\n    if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n    var n = Object.prototype.toString.call(o).slice(8, -1);\n    if (n === \"Object\" && o.constructor) n = o.constructor.name;\n    if (n === \"Map\" || n === \"Set\") return Array.from(o);\n    if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n  }\n  function _arrayLikeToArray(arr, len) {\n    if (len == null || len > arr.length) len = arr.length;\n    for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n    return arr2;\n  }\n  function _nonIterableSpread() {\n    throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n  }\n\n  var IS_BROWSER = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n  var WINDOW = IS_BROWSER ? window : {};\n  var IS_TOUCH_DEVICE = IS_BROWSER && WINDOW.document.documentElement ? 'ontouchstart' in WINDOW.document.documentElement : false;\n  var HAS_POINTER_EVENT = IS_BROWSER ? 'PointerEvent' in WINDOW : false;\n  var NAMESPACE = 'cropper';\n\n  // Actions\n  var ACTION_ALL = 'all';\n  var ACTION_CROP = 'crop';\n  var ACTION_MOVE = 'move';\n  var ACTION_ZOOM = 'zoom';\n  var ACTION_EAST = 'e';\n  var ACTION_WEST = 'w';\n  var ACTION_SOUTH = 's';\n  var ACTION_NORTH = 'n';\n  var ACTION_NORTH_EAST = 'ne';\n  var ACTION_NORTH_WEST = 'nw';\n  var ACTION_SOUTH_EAST = 'se';\n  var ACTION_SOUTH_WEST = 'sw';\n\n  // Classes\n  var CLASS_CROP = \"\".concat(NAMESPACE, \"-crop\");\n  var CLASS_DISABLED = \"\".concat(NAMESPACE, \"-disabled\");\n  var CLASS_HIDDEN = \"\".concat(NAMESPACE, \"-hidden\");\n  var CLASS_HIDE = \"\".concat(NAMESPACE, \"-hide\");\n  var CLASS_INVISIBLE = \"\".concat(NAMESPACE, \"-invisible\");\n  var CLASS_MODAL = \"\".concat(NAMESPACE, \"-modal\");\n  var CLASS_MOVE = \"\".concat(NAMESPACE, \"-move\");\n\n  // Data keys\n  var DATA_ACTION = \"\".concat(NAMESPACE, \"Action\");\n  var DATA_PREVIEW = \"\".concat(NAMESPACE, \"Preview\");\n\n  // Drag modes\n  var DRAG_MODE_CROP = 'crop';\n  var DRAG_MODE_MOVE = 'move';\n  var DRAG_MODE_NONE = 'none';\n\n  // Events\n  var EVENT_CROP = 'crop';\n  var EVENT_CROP_END = 'cropend';\n  var EVENT_CROP_MOVE = 'cropmove';\n  var EVENT_CROP_START = 'cropstart';\n  var EVENT_DBLCLICK = 'dblclick';\n  var EVENT_TOUCH_START = IS_TOUCH_DEVICE ? 'touchstart' : 'mousedown';\n  var EVENT_TOUCH_MOVE = IS_TOUCH_DEVICE ? 'touchmove' : 'mousemove';\n  var EVENT_TOUCH_END = IS_TOUCH_DEVICE ? 'touchend touchcancel' : 'mouseup';\n  var EVENT_POINTER_DOWN = HAS_POINTER_EVENT ? 'pointerdown' : EVENT_TOUCH_START;\n  var EVENT_POINTER_MOVE = HAS_POINTER_EVENT ? 'pointermove' : EVENT_TOUCH_MOVE;\n  var EVENT_POINTER_UP = HAS_POINTER_EVENT ? 'pointerup pointercancel' : EVENT_TOUCH_END;\n  var EVENT_READY = 'ready';\n  var EVENT_RESIZE = 'resize';\n  var EVENT_WHEEL = 'wheel';\n  var EVENT_ZOOM = 'zoom';\n\n  // Mime types\n  var MIME_TYPE_JPEG = 'image/jpeg';\n\n  // RegExps\n  var REGEXP_ACTIONS = /^e|w|s|n|se|sw|ne|nw|all|crop|move|zoom$/;\n  var REGEXP_DATA_URL = /^data:/;\n  var REGEXP_DATA_URL_JPEG = /^data:image\\/jpeg;base64,/;\n  var REGEXP_TAG_NAME = /^img|canvas$/i;\n\n  // Misc\n  // Inspired by the default width and height of a canvas element.\n  var MIN_CONTAINER_WIDTH = 200;\n  var MIN_CONTAINER_HEIGHT = 100;\n\n  var DEFAULTS = {\n    // Define the view mode of the cropper\n    viewMode: 0,\n    // 0, 1, 2, 3\n\n    // Define the dragging mode of the cropper\n    dragMode: DRAG_MODE_CROP,\n    // 'crop', 'move' or 'none'\n\n    // Define the initial aspect ratio of the crop box\n    initialAspectRatio: NaN,\n    // Define the aspect ratio of the crop box\n    aspectRatio: NaN,\n    // An object with the previous cropping result data\n    data: null,\n    // A selector for adding extra containers to preview\n    preview: '',\n    // Re-render the cropper when resize the window\n    responsive: true,\n    // Restore the cropped area after resize the window\n    restore: true,\n    // Check if the current image is a cross-origin image\n    checkCrossOrigin: true,\n    // Check the current image's Exif Orientation information\n    checkOrientation: true,\n    // Show the black modal\n    modal: true,\n    // Show the dashed lines for guiding\n    guides: true,\n    // Show the center indicator for guiding\n    center: true,\n    // Show the white modal to highlight the crop box\n    highlight: true,\n    // Show the grid background\n    background: true,\n    // Enable to crop the image automatically when initialize\n    autoCrop: true,\n    // Define the percentage of automatic cropping area when initializes\n    autoCropArea: 0.8,\n    // Enable to move the image\n    movable: true,\n    // Enable to rotate the image\n    rotatable: true,\n    // Enable to scale the image\n    scalable: true,\n    // Enable to zoom the image\n    zoomable: true,\n    // Enable to zoom the image by dragging touch\n    zoomOnTouch: true,\n    // Enable to zoom the image by wheeling mouse\n    zoomOnWheel: true,\n    // Define zoom ratio when zoom the image by wheeling mouse\n    wheelZoomRatio: 0.1,\n    // Enable to move the crop box\n    cropBoxMovable: true,\n    // Enable to resize the crop box\n    cropBoxResizable: true,\n    // Toggle drag mode between \"crop\" and \"move\" when click twice on the cropper\n    toggleDragModeOnDblclick: true,\n    // Size limitation\n    minCanvasWidth: 0,\n    minCanvasHeight: 0,\n    minCropBoxWidth: 0,\n    minCropBoxHeight: 0,\n    minContainerWidth: MIN_CONTAINER_WIDTH,\n    minContainerHeight: MIN_CONTAINER_HEIGHT,\n    // Shortcuts of events\n    ready: null,\n    cropstart: null,\n    cropmove: null,\n    cropend: null,\n    crop: null,\n    zoom: null\n  };\n\n  var TEMPLATE = '<div class=\"cropper-container\" touch-action=\"none\">' + '<div class=\"cropper-wrap-box\">' + '<div class=\"cropper-canvas\"></div>' + '</div>' + '<div class=\"cropper-drag-box\"></div>' + '<div class=\"cropper-crop-box\">' + '<span class=\"cropper-view-box\"></span>' + '<span class=\"cropper-dashed dashed-h\"></span>' + '<span class=\"cropper-dashed dashed-v\"></span>' + '<span class=\"cropper-center\"></span>' + '<span class=\"cropper-face\"></span>' + '<span class=\"cropper-line line-e\" data-cropper-action=\"e\"></span>' + '<span class=\"cropper-line line-n\" data-cropper-action=\"n\"></span>' + '<span class=\"cropper-line line-w\" data-cropper-action=\"w\"></span>' + '<span class=\"cropper-line line-s\" data-cropper-action=\"s\"></span>' + '<span class=\"cropper-point point-e\" data-cropper-action=\"e\"></span>' + '<span class=\"cropper-point point-n\" data-cropper-action=\"n\"></span>' + '<span class=\"cropper-point point-w\" data-cropper-action=\"w\"></span>' + '<span class=\"cropper-point point-s\" data-cropper-action=\"s\"></span>' + '<span class=\"cropper-point point-ne\" data-cropper-action=\"ne\"></span>' + '<span class=\"cropper-point point-nw\" data-cropper-action=\"nw\"></span>' + '<span class=\"cropper-point point-sw\" data-cropper-action=\"sw\"></span>' + '<span class=\"cropper-point point-se\" data-cropper-action=\"se\"></span>' + '</div>' + '</div>';\n\n  /**\n   * Check if the given value is not a number.\n   */\n  var isNaN = Number.isNaN || WINDOW.isNaN;\n\n  /**\n   * Check if the given value is a number.\n   * @param {*} value - The value to check.\n   * @returns {boolean} Returns `true` if the given value is a number, else `false`.\n   */\n  function isNumber(value) {\n    return typeof value === 'number' && !isNaN(value);\n  }\n\n  /**\n   * Check if the given value is a positive number.\n   * @param {*} value - The value to check.\n   * @returns {boolean} Returns `true` if the given value is a positive number, else `false`.\n   */\n  var isPositiveNumber = function isPositiveNumber(value) {\n    return value > 0 && value < Infinity;\n  };\n\n  /**\n   * Check if the given value is undefined.\n   * @param {*} value - The value to check.\n   * @returns {boolean} Returns `true` if the given value is undefined, else `false`.\n   */\n  function isUndefined(value) {\n    return typeof value === 'undefined';\n  }\n\n  /**\n   * Check if the given value is an object.\n   * @param {*} value - The value to check.\n   * @returns {boolean} Returns `true` if the given value is an object, else `false`.\n   */\n  function isObject(value) {\n    return _typeof(value) === 'object' && value !== null;\n  }\n  var hasOwnProperty = Object.prototype.hasOwnProperty;\n\n  /**\n   * Check if the given value is a plain object.\n   * @param {*} value - The value to check.\n   * @returns {boolean} Returns `true` if the given value is a plain object, else `false`.\n   */\n  function isPlainObject(value) {\n    if (!isObject(value)) {\n      return false;\n    }\n    try {\n      var _constructor = value.constructor;\n      var prototype = _constructor.prototype;\n      return _constructor && prototype && hasOwnProperty.call(prototype, 'isPrototypeOf');\n    } catch (error) {\n      return false;\n    }\n  }\n\n  /**\n   * Check if the given value is a function.\n   * @param {*} value - The value to check.\n   * @returns {boolean} Returns `true` if the given value is a function, else `false`.\n   */\n  function isFunction(value) {\n    return typeof value === 'function';\n  }\n  var slice = Array.prototype.slice;\n\n  /**\n   * Convert array-like or iterable object to an array.\n   * @param {*} value - The value to convert.\n   * @returns {Array} Returns a new array.\n   */\n  function toArray(value) {\n    return Array.from ? Array.from(value) : slice.call(value);\n  }\n\n  /**\n   * Iterate the given data.\n   * @param {*} data - The data to iterate.\n   * @param {Function} callback - The process function for each element.\n   * @returns {*} The original data.\n   */\n  function forEach(data, callback) {\n    if (data && isFunction(callback)) {\n      if (Array.isArray(data) || isNumber(data.length) /* array-like */) {\n        toArray(data).forEach(function (value, key) {\n          callback.call(data, value, key, data);\n        });\n      } else if (isObject(data)) {\n        Object.keys(data).forEach(function (key) {\n          callback.call(data, data[key], key, data);\n        });\n      }\n    }\n    return data;\n  }\n\n  /**\n   * Extend the given object.\n   * @param {*} target - The target object to extend.\n   * @param {*} args - The rest objects for merging to the target object.\n   * @returns {Object} The extended object.\n   */\n  var assign = Object.assign || function assign(target) {\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n    if (isObject(target) && args.length > 0) {\n      args.forEach(function (arg) {\n        if (isObject(arg)) {\n          Object.keys(arg).forEach(function (key) {\n            target[key] = arg[key];\n          });\n        }\n      });\n    }\n    return target;\n  };\n  var REGEXP_DECIMALS = /\\.\\d*(?:0|9){12}\\d*$/;\n\n  /**\n   * Normalize decimal number.\n   * Check out {@link https://0.30000000000000004.com/}\n   * @param {number} value - The value to normalize.\n   * @param {number} [times=100000000000] - The times for normalizing.\n   * @returns {number} Returns the normalized number.\n   */\n  function normalizeDecimalNumber(value) {\n    var times = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100000000000;\n    return REGEXP_DECIMALS.test(value) ? Math.round(value * times) / times : value;\n  }\n  var REGEXP_SUFFIX = /^width|height|left|top|marginLeft|marginTop$/;\n\n  /**\n   * Apply styles to the given element.\n   * @param {Element} element - The target element.\n   * @param {Object} styles - The styles for applying.\n   */\n  function setStyle(element, styles) {\n    var style = element.style;\n    forEach(styles, function (value, property) {\n      if (REGEXP_SUFFIX.test(property) && isNumber(value)) {\n        value = \"\".concat(value, \"px\");\n      }\n      style[property] = value;\n    });\n  }\n\n  /**\n   * Check if the given element has a special class.\n   * @param {Element} element - The element to check.\n   * @param {string} value - The class to search.\n   * @returns {boolean} Returns `true` if the special class was found.\n   */\n  function hasClass(element, value) {\n    return element.classList ? element.classList.contains(value) : element.className.indexOf(value) > -1;\n  }\n\n  /**\n   * Add classes to the given element.\n   * @param {Element} element - The target element.\n   * @param {string} value - The classes to be added.\n   */\n  function addClass(element, value) {\n    if (!value) {\n      return;\n    }\n    if (isNumber(element.length)) {\n      forEach(element, function (elem) {\n        addClass(elem, value);\n      });\n      return;\n    }\n    if (element.classList) {\n      element.classList.add(value);\n      return;\n    }\n    var className = element.className.trim();\n    if (!className) {\n      element.className = value;\n    } else if (className.indexOf(value) < 0) {\n      element.className = \"\".concat(className, \" \").concat(value);\n    }\n  }\n\n  /**\n   * Remove classes from the given element.\n   * @param {Element} element - The target element.\n   * @param {string} value - The classes to be removed.\n   */\n  function removeClass(element, value) {\n    if (!value) {\n      return;\n    }\n    if (isNumber(element.length)) {\n      forEach(element, function (elem) {\n        removeClass(elem, value);\n      });\n      return;\n    }\n    if (element.classList) {\n      element.classList.remove(value);\n      return;\n    }\n    if (element.className.indexOf(value) >= 0) {\n      element.className = element.className.replace(value, '');\n    }\n  }\n\n  /**\n   * Add or remove classes from the given element.\n   * @param {Element} element - The target element.\n   * @param {string} value - The classes to be toggled.\n   * @param {boolean} added - Add only.\n   */\n  function toggleClass(element, value, added) {\n    if (!value) {\n      return;\n    }\n    if (isNumber(element.length)) {\n      forEach(element, function (elem) {\n        toggleClass(elem, value, added);\n      });\n      return;\n    }\n\n    // IE10-11 doesn't support the second parameter of `classList.toggle`\n    if (added) {\n      addClass(element, value);\n    } else {\n      removeClass(element, value);\n    }\n  }\n  var REGEXP_CAMEL_CASE = /([a-z\\d])([A-Z])/g;\n\n  /**\n   * Transform the given string from camelCase to kebab-case\n   * @param {string} value - The value to transform.\n   * @returns {string} The transformed value.\n   */\n  function toParamCase(value) {\n    return value.replace(REGEXP_CAMEL_CASE, '$1-$2').toLowerCase();\n  }\n\n  /**\n   * Get data from the given element.\n   * @param {Element} element - The target element.\n   * @param {string} name - The data key to get.\n   * @returns {string} The data value.\n   */\n  function getData(element, name) {\n    if (isObject(element[name])) {\n      return element[name];\n    }\n    if (element.dataset) {\n      return element.dataset[name];\n    }\n    return element.getAttribute(\"data-\".concat(toParamCase(name)));\n  }\n\n  /**\n   * Set data to the given element.\n   * @param {Element} element - The target element.\n   * @param {string} name - The data key to set.\n   * @param {string} data - The data value.\n   */\n  function setData(element, name, data) {\n    if (isObject(data)) {\n      element[name] = data;\n    } else if (element.dataset) {\n      element.dataset[name] = data;\n    } else {\n      element.setAttribute(\"data-\".concat(toParamCase(name)), data);\n    }\n  }\n\n  /**\n   * Remove data from the given element.\n   * @param {Element} element - The target element.\n   * @param {string} name - The data key to remove.\n   */\n  function removeData(element, name) {\n    if (isObject(element[name])) {\n      try {\n        delete element[name];\n      } catch (error) {\n        element[name] = undefined;\n      }\n    } else if (element.dataset) {\n      // #128 Safari not allows to delete dataset property\n      try {\n        delete element.dataset[name];\n      } catch (error) {\n        element.dataset[name] = undefined;\n      }\n    } else {\n      element.removeAttribute(\"data-\".concat(toParamCase(name)));\n    }\n  }\n  var REGEXP_SPACES = /\\s\\s*/;\n  var onceSupported = function () {\n    var supported = false;\n    if (IS_BROWSER) {\n      var once = false;\n      var listener = function listener() {};\n      var options = Object.defineProperty({}, 'once', {\n        get: function get() {\n          supported = true;\n          return once;\n        },\n        /**\n         * This setter can fix a `TypeError` in strict mode\n         * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Getter_only}\n         * @param {boolean} value - The value to set\n         */\n        set: function set(value) {\n          once = value;\n        }\n      });\n      WINDOW.addEventListener('test', listener, options);\n      WINDOW.removeEventListener('test', listener, options);\n    }\n    return supported;\n  }();\n\n  /**\n   * Remove event listener from the target element.\n   * @param {Element} element - The event target.\n   * @param {string} type - The event type(s).\n   * @param {Function} listener - The event listener.\n   * @param {Object} options - The event options.\n   */\n  function removeListener(element, type, listener) {\n    var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n    var handler = listener;\n    type.trim().split(REGEXP_SPACES).forEach(function (event) {\n      if (!onceSupported) {\n        var listeners = element.listeners;\n        if (listeners && listeners[event] && listeners[event][listener]) {\n          handler = listeners[event][listener];\n          delete listeners[event][listener];\n          if (Object.keys(listeners[event]).length === 0) {\n            delete listeners[event];\n          }\n          if (Object.keys(listeners).length === 0) {\n            delete element.listeners;\n          }\n        }\n      }\n      element.removeEventListener(event, handler, options);\n    });\n  }\n\n  /**\n   * Add event listener to the target element.\n   * @param {Element} element - The event target.\n   * @param {string} type - The event type(s).\n   * @param {Function} listener - The event listener.\n   * @param {Object} options - The event options.\n   */\n  function addListener(element, type, listener) {\n    var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n    var _handler = listener;\n    type.trim().split(REGEXP_SPACES).forEach(function (event) {\n      if (options.once && !onceSupported) {\n        var _element$listeners = element.listeners,\n          listeners = _element$listeners === void 0 ? {} : _element$listeners;\n        _handler = function handler() {\n          delete listeners[event][listener];\n          element.removeEventListener(event, _handler, options);\n          for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n            args[_key2] = arguments[_key2];\n          }\n          listener.apply(element, args);\n        };\n        if (!listeners[event]) {\n          listeners[event] = {};\n        }\n        if (listeners[event][listener]) {\n          element.removeEventListener(event, listeners[event][listener], options);\n        }\n        listeners[event][listener] = _handler;\n        element.listeners = listeners;\n      }\n      element.addEventListener(event, _handler, options);\n    });\n  }\n\n  /**\n   * Dispatch event on the target element.\n   * @param {Element} element - The event target.\n   * @param {string} type - The event type(s).\n   * @param {Object} data - The additional event data.\n   * @returns {boolean} Indicate if the event is default prevented or not.\n   */\n  function dispatchEvent(element, type, data) {\n    var event;\n\n    // Event and CustomEvent on IE9-11 are global objects, not constructors\n    if (isFunction(Event) && isFunction(CustomEvent)) {\n      event = new CustomEvent(type, {\n        detail: data,\n        bubbles: true,\n        cancelable: true\n      });\n    } else {\n      event = document.createEvent('CustomEvent');\n      event.initCustomEvent(type, true, true, data);\n    }\n    return element.dispatchEvent(event);\n  }\n\n  /**\n   * Get the offset base on the document.\n   * @param {Element} element - The target element.\n   * @returns {Object} The offset data.\n   */\n  function getOffset(element) {\n    var box = element.getBoundingClientRect();\n    return {\n      left: box.left + (window.pageXOffset - document.documentElement.clientLeft),\n      top: box.top + (window.pageYOffset - document.documentElement.clientTop)\n    };\n  }\n  var location = WINDOW.location;\n  var REGEXP_ORIGINS = /^(\\w+:)\\/\\/([^:/?#]*):?(\\d*)/i;\n\n  /**\n   * Check if the given URL is a cross origin URL.\n   * @param {string} url - The target URL.\n   * @returns {boolean} Returns `true` if the given URL is a cross origin URL, else `false`.\n   */\n  function isCrossOriginURL(url) {\n    var parts = url.match(REGEXP_ORIGINS);\n    return parts !== null && (parts[1] !== location.protocol || parts[2] !== location.hostname || parts[3] !== location.port);\n  }\n\n  /**\n   * Add timestamp to the given URL.\n   * @param {string} url - The target URL.\n   * @returns {string} The result URL.\n   */\n  function addTimestamp(url) {\n    var timestamp = \"timestamp=\".concat(new Date().getTime());\n    return url + (url.indexOf('?') === -1 ? '?' : '&') + timestamp;\n  }\n\n  /**\n   * Get transforms base on the given object.\n   * @param {Object} obj - The target object.\n   * @returns {string} A string contains transform values.\n   */\n  function getTransforms(_ref) {\n    var rotate = _ref.rotate,\n      scaleX = _ref.scaleX,\n      scaleY = _ref.scaleY,\n      translateX = _ref.translateX,\n      translateY = _ref.translateY;\n    var values = [];\n    if (isNumber(translateX) && translateX !== 0) {\n      values.push(\"translateX(\".concat(translateX, \"px)\"));\n    }\n    if (isNumber(translateY) && translateY !== 0) {\n      values.push(\"translateY(\".concat(translateY, \"px)\"));\n    }\n\n    // Rotate should come first before scale to match orientation transform\n    if (isNumber(rotate) && rotate !== 0) {\n      values.push(\"rotate(\".concat(rotate, \"deg)\"));\n    }\n    if (isNumber(scaleX) && scaleX !== 1) {\n      values.push(\"scaleX(\".concat(scaleX, \")\"));\n    }\n    if (isNumber(scaleY) && scaleY !== 1) {\n      values.push(\"scaleY(\".concat(scaleY, \")\"));\n    }\n    var transform = values.length ? values.join(' ') : 'none';\n    return {\n      WebkitTransform: transform,\n      msTransform: transform,\n      transform: transform\n    };\n  }\n\n  /**\n   * Get the max ratio of a group of pointers.\n   * @param {string} pointers - The target pointers.\n   * @returns {number} The result ratio.\n   */\n  function getMaxZoomRatio(pointers) {\n    var pointers2 = _objectSpread2({}, pointers);\n    var maxRatio = 0;\n    forEach(pointers, function (pointer, pointerId) {\n      delete pointers2[pointerId];\n      forEach(pointers2, function (pointer2) {\n        var x1 = Math.abs(pointer.startX - pointer2.startX);\n        var y1 = Math.abs(pointer.startY - pointer2.startY);\n        var x2 = Math.abs(pointer.endX - pointer2.endX);\n        var y2 = Math.abs(pointer.endY - pointer2.endY);\n        var z1 = Math.sqrt(x1 * x1 + y1 * y1);\n        var z2 = Math.sqrt(x2 * x2 + y2 * y2);\n        var ratio = (z2 - z1) / z1;\n        if (Math.abs(ratio) > Math.abs(maxRatio)) {\n          maxRatio = ratio;\n        }\n      });\n    });\n    return maxRatio;\n  }\n\n  /**\n   * Get a pointer from an event object.\n   * @param {Object} event - The target event object.\n   * @param {boolean} endOnly - Indicates if only returns the end point coordinate or not.\n   * @returns {Object} The result pointer contains start and/or end point coordinates.\n   */\n  function getPointer(_ref2, endOnly) {\n    var pageX = _ref2.pageX,\n      pageY = _ref2.pageY;\n    var end = {\n      endX: pageX,\n      endY: pageY\n    };\n    return endOnly ? end : _objectSpread2({\n      startX: pageX,\n      startY: pageY\n    }, end);\n  }\n\n  /**\n   * Get the center point coordinate of a group of pointers.\n   * @param {Object} pointers - The target pointers.\n   * @returns {Object} The center point coordinate.\n   */\n  function getPointersCenter(pointers) {\n    var pageX = 0;\n    var pageY = 0;\n    var count = 0;\n    forEach(pointers, function (_ref3) {\n      var startX = _ref3.startX,\n        startY = _ref3.startY;\n      pageX += startX;\n      pageY += startY;\n      count += 1;\n    });\n    pageX /= count;\n    pageY /= count;\n    return {\n      pageX: pageX,\n      pageY: pageY\n    };\n  }\n\n  /**\n   * Get the max sizes in a rectangle under the given aspect ratio.\n   * @param {Object} data - The original sizes.\n   * @param {string} [type='contain'] - The adjust type.\n   * @returns {Object} The result sizes.\n   */\n  function getAdjustedSizes(_ref4) {\n    var aspectRatio = _ref4.aspectRatio,\n      height = _ref4.height,\n      width = _ref4.width;\n    var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'contain';\n    var isValidWidth = isPositiveNumber(width);\n    var isValidHeight = isPositiveNumber(height);\n    if (isValidWidth && isValidHeight) {\n      var adjustedWidth = height * aspectRatio;\n      if (type === 'contain' && adjustedWidth > width || type === 'cover' && adjustedWidth < width) {\n        height = width / aspectRatio;\n      } else {\n        width = height * aspectRatio;\n      }\n    } else if (isValidWidth) {\n      height = width / aspectRatio;\n    } else if (isValidHeight) {\n      width = height * aspectRatio;\n    }\n    return {\n      width: width,\n      height: height\n    };\n  }\n\n  /**\n   * Get the new sizes of a rectangle after rotated.\n   * @param {Object} data - The original sizes.\n   * @returns {Object} The result sizes.\n   */\n  function getRotatedSizes(_ref5) {\n    var width = _ref5.width,\n      height = _ref5.height,\n      degree = _ref5.degree;\n    degree = Math.abs(degree) % 180;\n    if (degree === 90) {\n      return {\n        width: height,\n        height: width\n      };\n    }\n    var arc = degree % 90 * Math.PI / 180;\n    var sinArc = Math.sin(arc);\n    var cosArc = Math.cos(arc);\n    var newWidth = width * cosArc + height * sinArc;\n    var newHeight = width * sinArc + height * cosArc;\n    return degree > 90 ? {\n      width: newHeight,\n      height: newWidth\n    } : {\n      width: newWidth,\n      height: newHeight\n    };\n  }\n\n  /**\n   * Get a canvas which drew the given image.\n   * @param {HTMLImageElement} image - The image for drawing.\n   * @param {Object} imageData - The image data.\n   * @param {Object} canvasData - The canvas data.\n   * @param {Object} options - The options.\n   * @returns {HTMLCanvasElement} The result canvas.\n   */\n  function getSourceCanvas(image, _ref6, _ref7, _ref8) {\n    var imageAspectRatio = _ref6.aspectRatio,\n      imageNaturalWidth = _ref6.naturalWidth,\n      imageNaturalHeight = _ref6.naturalHeight,\n      _ref6$rotate = _ref6.rotate,\n      rotate = _ref6$rotate === void 0 ? 0 : _ref6$rotate,\n      _ref6$scaleX = _ref6.scaleX,\n      scaleX = _ref6$scaleX === void 0 ? 1 : _ref6$scaleX,\n      _ref6$scaleY = _ref6.scaleY,\n      scaleY = _ref6$scaleY === void 0 ? 1 : _ref6$scaleY;\n    var aspectRatio = _ref7.aspectRatio,\n      naturalWidth = _ref7.naturalWidth,\n      naturalHeight = _ref7.naturalHeight;\n    var _ref8$fillColor = _ref8.fillColor,\n      fillColor = _ref8$fillColor === void 0 ? 'transparent' : _ref8$fillColor,\n      _ref8$imageSmoothingE = _ref8.imageSmoothingEnabled,\n      imageSmoothingEnabled = _ref8$imageSmoothingE === void 0 ? true : _ref8$imageSmoothingE,\n      _ref8$imageSmoothingQ = _ref8.imageSmoothingQuality,\n      imageSmoothingQuality = _ref8$imageSmoothingQ === void 0 ? 'low' : _ref8$imageSmoothingQ,\n      _ref8$maxWidth = _ref8.maxWidth,\n      maxWidth = _ref8$maxWidth === void 0 ? Infinity : _ref8$maxWidth,\n      _ref8$maxHeight = _ref8.maxHeight,\n      maxHeight = _ref8$maxHeight === void 0 ? Infinity : _ref8$maxHeight,\n      _ref8$minWidth = _ref8.minWidth,\n      minWidth = _ref8$minWidth === void 0 ? 0 : _ref8$minWidth,\n      _ref8$minHeight = _ref8.minHeight,\n      minHeight = _ref8$minHeight === void 0 ? 0 : _ref8$minHeight;\n    var canvas = document.createElement('canvas');\n    var context = canvas.getContext('2d');\n    var maxSizes = getAdjustedSizes({\n      aspectRatio: aspectRatio,\n      width: maxWidth,\n      height: maxHeight\n    });\n    var minSizes = getAdjustedSizes({\n      aspectRatio: aspectRatio,\n      width: minWidth,\n      height: minHeight\n    }, 'cover');\n    var width = Math.min(maxSizes.width, Math.max(minSizes.width, naturalWidth));\n    var height = Math.min(maxSizes.height, Math.max(minSizes.height, naturalHeight));\n\n    // Note: should always use image's natural sizes for drawing as\n    // imageData.naturalWidth === canvasData.naturalHeight when rotate % 180 === 90\n    var destMaxSizes = getAdjustedSizes({\n      aspectRatio: imageAspectRatio,\n      width: maxWidth,\n      height: maxHeight\n    });\n    var destMinSizes = getAdjustedSizes({\n      aspectRatio: imageAspectRatio,\n      width: minWidth,\n      height: minHeight\n    }, 'cover');\n    var destWidth = Math.min(destMaxSizes.width, Math.max(destMinSizes.width, imageNaturalWidth));\n    var destHeight = Math.min(destMaxSizes.height, Math.max(destMinSizes.height, imageNaturalHeight));\n    var params = [-destWidth / 2, -destHeight / 2, destWidth, destHeight];\n    canvas.width = normalizeDecimalNumber(width);\n    canvas.height = normalizeDecimalNumber(height);\n    context.fillStyle = fillColor;\n    context.fillRect(0, 0, width, height);\n    context.save();\n    context.translate(width / 2, height / 2);\n    context.rotate(rotate * Math.PI / 180);\n    context.scale(scaleX, scaleY);\n    context.imageSmoothingEnabled = imageSmoothingEnabled;\n    context.imageSmoothingQuality = imageSmoothingQuality;\n    context.drawImage.apply(context, [image].concat(_toConsumableArray(params.map(function (param) {\n      return Math.floor(normalizeDecimalNumber(param));\n    }))));\n    context.restore();\n    return canvas;\n  }\n  var fromCharCode = String.fromCharCode;\n\n  /**\n   * Get string from char code in data view.\n   * @param {DataView} dataView - The data view for read.\n   * @param {number} start - The start index.\n   * @param {number} length - The read length.\n   * @returns {string} The read result.\n   */\n  function getStringFromCharCode(dataView, start, length) {\n    var str = '';\n    length += start;\n    for (var i = start; i < length; i += 1) {\n      str += fromCharCode(dataView.getUint8(i));\n    }\n    return str;\n  }\n  var REGEXP_DATA_URL_HEAD = /^data:.*,/;\n\n  /**\n   * Transform Data URL to array buffer.\n   * @param {string} dataURL - The Data URL to transform.\n   * @returns {ArrayBuffer} The result array buffer.\n   */\n  function dataURLToArrayBuffer(dataURL) {\n    var base64 = dataURL.replace(REGEXP_DATA_URL_HEAD, '');\n    var binary = atob(base64);\n    var arrayBuffer = new ArrayBuffer(binary.length);\n    var uint8 = new Uint8Array(arrayBuffer);\n    forEach(uint8, function (value, i) {\n      uint8[i] = binary.charCodeAt(i);\n    });\n    return arrayBuffer;\n  }\n\n  /**\n   * Transform array buffer to Data URL.\n   * @param {ArrayBuffer} arrayBuffer - The array buffer to transform.\n   * @param {string} mimeType - The mime type of the Data URL.\n   * @returns {string} The result Data URL.\n   */\n  function arrayBufferToDataURL(arrayBuffer, mimeType) {\n    var chunks = [];\n\n    // Chunk Typed Array for better performance (#435)\n    var chunkSize = 8192;\n    var uint8 = new Uint8Array(arrayBuffer);\n    while (uint8.length > 0) {\n      // XXX: Babel's `toConsumableArray` helper will throw error in IE or Safari 9\n      // eslint-disable-next-line prefer-spread\n      chunks.push(fromCharCode.apply(null, toArray(uint8.subarray(0, chunkSize))));\n      uint8 = uint8.subarray(chunkSize);\n    }\n    return \"data:\".concat(mimeType, \";base64,\").concat(btoa(chunks.join('')));\n  }\n\n  /**\n   * Get orientation value from given array buffer.\n   * @param {ArrayBuffer} arrayBuffer - The array buffer to read.\n   * @returns {number} The read orientation value.\n   */\n  function resetAndGetOrientation(arrayBuffer) {\n    var dataView = new DataView(arrayBuffer);\n    var orientation;\n\n    // Ignores range error when the image does not have correct Exif information\n    try {\n      var littleEndian;\n      var app1Start;\n      var ifdStart;\n\n      // Only handle JPEG image (start by 0xFFD8)\n      if (dataView.getUint8(0) === 0xFF && dataView.getUint8(1) === 0xD8) {\n        var length = dataView.byteLength;\n        var offset = 2;\n        while (offset + 1 < length) {\n          if (dataView.getUint8(offset) === 0xFF && dataView.getUint8(offset + 1) === 0xE1) {\n            app1Start = offset;\n            break;\n          }\n          offset += 1;\n        }\n      }\n      if (app1Start) {\n        var exifIDCode = app1Start + 4;\n        var tiffOffset = app1Start + 10;\n        if (getStringFromCharCode(dataView, exifIDCode, 4) === 'Exif') {\n          var endianness = dataView.getUint16(tiffOffset);\n          littleEndian = endianness === 0x4949;\n          if (littleEndian || endianness === 0x4D4D /* bigEndian */) {\n            if (dataView.getUint16(tiffOffset + 2, littleEndian) === 0x002A) {\n              var firstIFDOffset = dataView.getUint32(tiffOffset + 4, littleEndian);\n              if (firstIFDOffset >= 0x00000008) {\n                ifdStart = tiffOffset + firstIFDOffset;\n              }\n            }\n          }\n        }\n      }\n      if (ifdStart) {\n        var _length = dataView.getUint16(ifdStart, littleEndian);\n        var _offset;\n        var i;\n        for (i = 0; i < _length; i += 1) {\n          _offset = ifdStart + i * 12 + 2;\n          if (dataView.getUint16(_offset, littleEndian) === 0x0112 /* Orientation */) {\n            // 8 is the offset of the current tag's value\n            _offset += 8;\n\n            // Get the original orientation value\n            orientation = dataView.getUint16(_offset, littleEndian);\n\n            // Override the orientation with its default value\n            dataView.setUint16(_offset, 1, littleEndian);\n            break;\n          }\n        }\n      }\n    } catch (error) {\n      orientation = 1;\n    }\n    return orientation;\n  }\n\n  /**\n   * Parse Exif Orientation value.\n   * @param {number} orientation - The orientation to parse.\n   * @returns {Object} The parsed result.\n   */\n  function parseOrientation(orientation) {\n    var rotate = 0;\n    var scaleX = 1;\n    var scaleY = 1;\n    switch (orientation) {\n      // Flip horizontal\n      case 2:\n        scaleX = -1;\n        break;\n\n      // Rotate left 180\u00B0\n      case 3:\n        rotate = -180;\n        break;\n\n      // Flip vertical\n      case 4:\n        scaleY = -1;\n        break;\n\n      // Flip vertical and rotate right 90\u00B0\n      case 5:\n        rotate = 90;\n        scaleY = -1;\n        break;\n\n      // Rotate right 90\u00B0\n      case 6:\n        rotate = 90;\n        break;\n\n      // Flip horizontal and rotate right 90\u00B0\n      case 7:\n        rotate = 90;\n        scaleX = -1;\n        break;\n\n      // Rotate left 90\u00B0\n      case 8:\n        rotate = -90;\n        break;\n    }\n    return {\n      rotate: rotate,\n      scaleX: scaleX,\n      scaleY: scaleY\n    };\n  }\n\n  var render = {\n    render: function render() {\n      this.initContainer();\n      this.initCanvas();\n      this.initCropBox();\n      this.renderCanvas();\n      if (this.cropped) {\n        this.renderCropBox();\n      }\n    },\n    initContainer: function initContainer() {\n      var element = this.element,\n        options = this.options,\n        container = this.container,\n        cropper = this.cropper;\n      var minWidth = Number(options.minContainerWidth);\n      var minHeight = Number(options.minContainerHeight);\n      addClass(cropper, CLASS_HIDDEN);\n      removeClass(element, CLASS_HIDDEN);\n      var containerData = {\n        width: Math.max(container.offsetWidth, minWidth >= 0 ? minWidth : MIN_CONTAINER_WIDTH),\n        height: Math.max(container.offsetHeight, minHeight >= 0 ? minHeight : MIN_CONTAINER_HEIGHT)\n      };\n      this.containerData = containerData;\n      setStyle(cropper, {\n        width: containerData.width,\n        height: containerData.height\n      });\n      addClass(element, CLASS_HIDDEN);\n      removeClass(cropper, CLASS_HIDDEN);\n    },\n    // Canvas (image wrapper)\n    initCanvas: function initCanvas() {\n      var containerData = this.containerData,\n        imageData = this.imageData;\n      var viewMode = this.options.viewMode;\n      var rotated = Math.abs(imageData.rotate) % 180 === 90;\n      var naturalWidth = rotated ? imageData.naturalHeight : imageData.naturalWidth;\n      var naturalHeight = rotated ? imageData.naturalWidth : imageData.naturalHeight;\n      var aspectRatio = naturalWidth / naturalHeight;\n      var canvasWidth = containerData.width;\n      var canvasHeight = containerData.height;\n      if (containerData.height * aspectRatio > containerData.width) {\n        if (viewMode === 3) {\n          canvasWidth = containerData.height * aspectRatio;\n        } else {\n          canvasHeight = containerData.width / aspectRatio;\n        }\n      } else if (viewMode === 3) {\n        canvasHeight = containerData.width / aspectRatio;\n      } else {\n        canvasWidth = containerData.height * aspectRatio;\n      }\n      var canvasData = {\n        aspectRatio: aspectRatio,\n        naturalWidth: naturalWidth,\n        naturalHeight: naturalHeight,\n        width: canvasWidth,\n        height: canvasHeight\n      };\n      this.canvasData = canvasData;\n      this.limited = viewMode === 1 || viewMode === 2;\n      this.limitCanvas(true, true);\n      canvasData.width = Math.min(Math.max(canvasData.width, canvasData.minWidth), canvasData.maxWidth);\n      canvasData.height = Math.min(Math.max(canvasData.height, canvasData.minHeight), canvasData.maxHeight);\n      canvasData.left = (containerData.width - canvasData.width) / 2;\n      canvasData.top = (containerData.height - canvasData.height) / 2;\n      canvasData.oldLeft = canvasData.left;\n      canvasData.oldTop = canvasData.top;\n      this.initialCanvasData = assign({}, canvasData);\n    },\n    limitCanvas: function limitCanvas(sizeLimited, positionLimited) {\n      var options = this.options,\n        containerData = this.containerData,\n        canvasData = this.canvasData,\n        cropBoxData = this.cropBoxData;\n      var viewMode = options.viewMode;\n      var aspectRatio = canvasData.aspectRatio;\n      var cropped = this.cropped && cropBoxData;\n      if (sizeLimited) {\n        var minCanvasWidth = Number(options.minCanvasWidth) || 0;\n        var minCanvasHeight = Number(options.minCanvasHeight) || 0;\n        if (viewMode > 1) {\n          minCanvasWidth = Math.max(minCanvasWidth, containerData.width);\n          minCanvasHeight = Math.max(minCanvasHeight, containerData.height);\n          if (viewMode === 3) {\n            if (minCanvasHeight * aspectRatio > minCanvasWidth) {\n              minCanvasWidth = minCanvasHeight * aspectRatio;\n            } else {\n              minCanvasHeight = minCanvasWidth / aspectRatio;\n            }\n          }\n        } else if (viewMode > 0) {\n          if (minCanvasWidth) {\n            minCanvasWidth = Math.max(minCanvasWidth, cropped ? cropBoxData.width : 0);\n          } else if (minCanvasHeight) {\n            minCanvasHeight = Math.max(minCanvasHeight, cropped ? cropBoxData.height : 0);\n          } else if (cropped) {\n            minCanvasWidth = cropBoxData.width;\n            minCanvasHeight = cropBoxData.height;\n            if (minCanvasHeight * aspectRatio > minCanvasWidth) {\n              minCanvasWidth = minCanvasHeight * aspectRatio;\n            } else {\n              minCanvasHeight = minCanvasWidth / aspectRatio;\n            }\n          }\n        }\n        var _getAdjustedSizes = getAdjustedSizes({\n          aspectRatio: aspectRatio,\n          width: minCanvasWidth,\n          height: minCanvasHeight\n        });\n        minCanvasWidth = _getAdjustedSizes.width;\n        minCanvasHeight = _getAdjustedSizes.height;\n        canvasData.minWidth = minCanvasWidth;\n        canvasData.minHeight = minCanvasHeight;\n        canvasData.maxWidth = Infinity;\n        canvasData.maxHeight = Infinity;\n      }\n      if (positionLimited) {\n        if (viewMode > (cropped ? 0 : 1)) {\n          var newCanvasLeft = containerData.width - canvasData.width;\n          var newCanvasTop = containerData.height - canvasData.height;\n          canvasData.minLeft = Math.min(0, newCanvasLeft);\n          canvasData.minTop = Math.min(0, newCanvasTop);\n          canvasData.maxLeft = Math.max(0, newCanvasLeft);\n          canvasData.maxTop = Math.max(0, newCanvasTop);\n          if (cropped && this.limited) {\n            canvasData.minLeft = Math.min(cropBoxData.left, cropBoxData.left + (cropBoxData.width - canvasData.width));\n            canvasData.minTop = Math.min(cropBoxData.top, cropBoxData.top + (cropBoxData.height - canvasData.height));\n            canvasData.maxLeft = cropBoxData.left;\n            canvasData.maxTop = cropBoxData.top;\n            if (viewMode === 2) {\n              if (canvasData.width >= containerData.width) {\n                canvasData.minLeft = Math.min(0, newCanvasLeft);\n                canvasData.maxLeft = Math.max(0, newCanvasLeft);\n              }\n              if (canvasData.height >= containerData.height) {\n                canvasData.minTop = Math.min(0, newCanvasTop);\n                canvasData.maxTop = Math.max(0, newCanvasTop);\n              }\n            }\n          }\n        } else {\n          canvasData.minLeft = -canvasData.width;\n          canvasData.minTop = -canvasData.height;\n          canvasData.maxLeft = containerData.width;\n          canvasData.maxTop = containerData.height;\n        }\n      }\n    },\n    renderCanvas: function renderCanvas(changed, transformed) {\n      var canvasData = this.canvasData,\n        imageData = this.imageData;\n      if (transformed) {\n        var _getRotatedSizes = getRotatedSizes({\n            width: imageData.naturalWidth * Math.abs(imageData.scaleX || 1),\n            height: imageData.naturalHeight * Math.abs(imageData.scaleY || 1),\n            degree: imageData.rotate || 0\n          }),\n          naturalWidth = _getRotatedSizes.width,\n          naturalHeight = _getRotatedSizes.height;\n        var width = canvasData.width * (naturalWidth / canvasData.naturalWidth);\n        var height = canvasData.height * (naturalHeight / canvasData.naturalHeight);\n        canvasData.left -= (width - canvasData.width) / 2;\n        canvasData.top -= (height - canvasData.height) / 2;\n        canvasData.width = width;\n        canvasData.height = height;\n        canvasData.aspectRatio = naturalWidth / naturalHeight;\n        canvasData.naturalWidth = naturalWidth;\n        canvasData.naturalHeight = naturalHeight;\n        this.limitCanvas(true, false);\n      }\n      if (canvasData.width > canvasData.maxWidth || canvasData.width < canvasData.minWidth) {\n        canvasData.left = canvasData.oldLeft;\n      }\n      if (canvasData.height > canvasData.maxHeight || canvasData.height < canvasData.minHeight) {\n        canvasData.top = canvasData.oldTop;\n      }\n      canvasData.width = Math.min(Math.max(canvasData.width, canvasData.minWidth), canvasData.maxWidth);\n      canvasData.height = Math.min(Math.max(canvasData.height, canvasData.minHeight), canvasData.maxHeight);\n      this.limitCanvas(false, true);\n      canvasData.left = Math.min(Math.max(canvasData.left, canvasData.minLeft), canvasData.maxLeft);\n      canvasData.top = Math.min(Math.max(canvasData.top, canvasData.minTop), canvasData.maxTop);\n      canvasData.oldLeft = canvasData.left;\n      canvasData.oldTop = canvasData.top;\n      setStyle(this.canvas, assign({\n        width: canvasData.width,\n        height: canvasData.height\n      }, getTransforms({\n        translateX: canvasData.left,\n        translateY: canvasData.top\n      })));\n      this.renderImage(changed);\n      if (this.cropped && this.limited) {\n        this.limitCropBox(true, true);\n      }\n    },\n    renderImage: function renderImage(changed) {\n      var canvasData = this.canvasData,\n        imageData = this.imageData;\n      var width = imageData.naturalWidth * (canvasData.width / canvasData.naturalWidth);\n      var height = imageData.naturalHeight * (canvasData.height / canvasData.naturalHeight);\n      assign(imageData, {\n        width: width,\n        height: height,\n        left: (canvasData.width - width) / 2,\n        top: (canvasData.height - height) / 2\n      });\n      setStyle(this.image, assign({\n        width: imageData.width,\n        height: imageData.height\n      }, getTransforms(assign({\n        translateX: imageData.left,\n        translateY: imageData.top\n      }, imageData))));\n      if (changed) {\n        this.output();\n      }\n    },\n    initCropBox: function initCropBox() {\n      var options = this.options,\n        canvasData = this.canvasData;\n      var aspectRatio = options.aspectRatio || options.initialAspectRatio;\n      var autoCropArea = Number(options.autoCropArea) || 0.8;\n      var cropBoxData = {\n        width: canvasData.width,\n        height: canvasData.height\n      };\n      if (aspectRatio) {\n        if (canvasData.height * aspectRatio > canvasData.width) {\n          cropBoxData.height = cropBoxData.width / aspectRatio;\n        } else {\n          cropBoxData.width = cropBoxData.height * aspectRatio;\n        }\n      }\n      this.cropBoxData = cropBoxData;\n      this.limitCropBox(true, true);\n\n      // Initialize auto crop area\n      cropBoxData.width = Math.min(Math.max(cropBoxData.width, cropBoxData.minWidth), cropBoxData.maxWidth);\n      cropBoxData.height = Math.min(Math.max(cropBoxData.height, cropBoxData.minHeight), cropBoxData.maxHeight);\n\n      // The width/height of auto crop area must large than \"minWidth/Height\"\n      cropBoxData.width = Math.max(cropBoxData.minWidth, cropBoxData.width * autoCropArea);\n      cropBoxData.height = Math.max(cropBoxData.minHeight, cropBoxData.height * autoCropArea);\n      cropBoxData.left = canvasData.left + (canvasData.width - cropBoxData.width) / 2;\n      cropBoxData.top = canvasData.top + (canvasData.height - cropBoxData.height) / 2;\n      cropBoxData.oldLeft = cropBoxData.left;\n      cropBoxData.oldTop = cropBoxData.top;\n      this.initialCropBoxData = assign({}, cropBoxData);\n    },\n    limitCropBox: function limitCropBox(sizeLimited, positionLimited) {\n      var options = this.options,\n        containerData = this.containerData,\n        canvasData = this.canvasData,\n        cropBoxData = this.cropBoxData,\n        limited = this.limited;\n      var aspectRatio = options.aspectRatio;\n      if (sizeLimited) {\n        var minCropBoxWidth = Number(options.minCropBoxWidth) || 0;\n        var minCropBoxHeight = Number(options.minCropBoxHeight) || 0;\n        var maxCropBoxWidth = limited ? Math.min(containerData.width, canvasData.width, canvasData.width + canvasData.left, containerData.width - canvasData.left) : containerData.width;\n        var maxCropBoxHeight = limited ? Math.min(containerData.height, canvasData.height, canvasData.height + canvasData.top, containerData.height - canvasData.top) : containerData.height;\n\n        // The min/maxCropBoxWidth/Height must be less than container's width/height\n        minCropBoxWidth = Math.min(minCropBoxWidth, containerData.width);\n        minCropBoxHeight = Math.min(minCropBoxHeight, containerData.height);\n        if (aspectRatio) {\n          if (minCropBoxWidth && minCropBoxHeight) {\n            if (minCropBoxHeight * aspectRatio > minCropBoxWidth) {\n              minCropBoxHeight = minCropBoxWidth / aspectRatio;\n            } else {\n              minCropBoxWidth = minCropBoxHeight * aspectRatio;\n            }\n          } else if (minCropBoxWidth) {\n            minCropBoxHeight = minCropBoxWidth / aspectRatio;\n          } else if (minCropBoxHeight) {\n            minCropBoxWidth = minCropBoxHeight * aspectRatio;\n          }\n          if (maxCropBoxHeight * aspectRatio > maxCropBoxWidth) {\n            maxCropBoxHeight = maxCropBoxWidth / aspectRatio;\n          } else {\n            maxCropBoxWidth = maxCropBoxHeight * aspectRatio;\n          }\n        }\n\n        // The minWidth/Height must be less than maxWidth/Height\n        cropBoxData.minWidth = Math.min(minCropBoxWidth, maxCropBoxWidth);\n        cropBoxData.minHeight = Math.min(minCropBoxHeight, maxCropBoxHeight);\n        cropBoxData.maxWidth = maxCropBoxWidth;\n        cropBoxData.maxHeight = maxCropBoxHeight;\n      }\n      if (positionLimited) {\n        if (limited) {\n          cropBoxData.minLeft = Math.max(0, canvasData.left);\n          cropBoxData.minTop = Math.max(0, canvasData.top);\n          cropBoxData.maxLeft = Math.min(containerData.width, canvasData.left + canvasData.width) - cropBoxData.width;\n          cropBoxData.maxTop = Math.min(containerData.height, canvasData.top + canvasData.height) - cropBoxData.height;\n        } else {\n          cropBoxData.minLeft = 0;\n          cropBoxData.minTop = 0;\n          cropBoxData.maxLeft = containerData.width - cropBoxData.width;\n          cropBoxData.maxTop = containerData.height - cropBoxData.height;\n        }\n      }\n    },\n    renderCropBox: function renderCropBox() {\n      var options = this.options,\n        containerData = this.containerData,\n        cropBoxData = this.cropBoxData;\n      if (cropBoxData.width > cropBoxData.maxWidth || cropBoxData.width < cropBoxData.minWidth) {\n        cropBoxData.left = cropBoxData.oldLeft;\n      }\n      if (cropBoxData.height > cropBoxData.maxHeight || cropBoxData.height < cropBoxData.minHeight) {\n        cropBoxData.top = cropBoxData.oldTop;\n      }\n      cropBoxData.width = Math.min(Math.max(cropBoxData.width, cropBoxData.minWidth), cropBoxData.maxWidth);\n      cropBoxData.height = Math.min(Math.max(cropBoxData.height, cropBoxData.minHeight), cropBoxData.maxHeight);\n      this.limitCropBox(false, true);\n      cropBoxData.left = Math.min(Math.max(cropBoxData.left, cropBoxData.minLeft), cropBoxData.maxLeft);\n      cropBoxData.top = Math.min(Math.max(cropBoxData.top, cropBoxData.minTop), cropBoxData.maxTop);\n      cropBoxData.oldLeft = cropBoxData.left;\n      cropBoxData.oldTop = cropBoxData.top;\n      if (options.movable && options.cropBoxMovable) {\n        // Turn to move the canvas when the crop box is equal to the container\n        setData(this.face, DATA_ACTION, cropBoxData.width >= containerData.width && cropBoxData.height >= containerData.height ? ACTION_MOVE : ACTION_ALL);\n      }\n      setStyle(this.cropBox, assign({\n        width: cropBoxData.width,\n        height: cropBoxData.height\n      }, getTransforms({\n        translateX: cropBoxData.left,\n        translateY: cropBoxData.top\n      })));\n      if (this.cropped && this.limited) {\n        this.limitCanvas(true, true);\n      }\n      if (!this.disabled) {\n        this.output();\n      }\n    },\n    output: function output() {\n      this.preview();\n      dispatchEvent(this.element, EVENT_CROP, this.getData());\n    }\n  };\n\n  var preview = {\n    initPreview: function initPreview() {\n      var element = this.element,\n        crossOrigin = this.crossOrigin;\n      var preview = this.options.preview;\n      var url = crossOrigin ? this.crossOriginUrl : this.url;\n      var alt = element.alt || 'The image to preview';\n      var image = document.createElement('img');\n      if (crossOrigin) {\n        image.crossOrigin = crossOrigin;\n      }\n      image.src = url;\n      image.alt = alt;\n      this.viewBox.appendChild(image);\n      this.viewBoxImage = image;\n      if (!preview) {\n        return;\n      }\n      var previews = preview;\n      if (typeof preview === 'string') {\n        previews = element.ownerDocument.querySelectorAll(preview);\n      } else if (preview.querySelector) {\n        previews = [preview];\n      }\n      this.previews = previews;\n      forEach(previews, function (el) {\n        var img = document.createElement('img');\n\n        // Save the original size for recover\n        setData(el, DATA_PREVIEW, {\n          width: el.offsetWidth,\n          height: el.offsetHeight,\n          html: el.innerHTML\n        });\n        if (crossOrigin) {\n          img.crossOrigin = crossOrigin;\n        }\n        img.src = url;\n        img.alt = alt;\n\n        /**\n         * Override img element styles\n         * Add `display:block` to avoid margin top issue\n         * Add `height:auto` to override `height` attribute on IE8\n         * (Occur only when margin-top <= -height)\n         */\n        img.style.cssText = 'display:block;' + 'width:100%;' + 'height:auto;' + 'min-width:0!important;' + 'min-height:0!important;' + 'max-width:none!important;' + 'max-height:none!important;' + 'image-orientation:0deg!important;\"';\n        el.innerHTML = '';\n        el.appendChild(img);\n      });\n    },\n    resetPreview: function resetPreview() {\n      forEach(this.previews, function (element) {\n        var data = getData(element, DATA_PREVIEW);\n        setStyle(element, {\n          width: data.width,\n          height: data.height\n        });\n        element.innerHTML = data.html;\n        removeData(element, DATA_PREVIEW);\n      });\n    },\n    preview: function preview() {\n      var imageData = this.imageData,\n        canvasData = this.canvasData,\n        cropBoxData = this.cropBoxData;\n      var cropBoxWidth = cropBoxData.width,\n        cropBoxHeight = cropBoxData.height;\n      var width = imageData.width,\n        height = imageData.height;\n      var left = cropBoxData.left - canvasData.left - imageData.left;\n      var top = cropBoxData.top - canvasData.top - imageData.top;\n      if (!this.cropped || this.disabled) {\n        return;\n      }\n      setStyle(this.viewBoxImage, assign({\n        width: width,\n        height: height\n      }, getTransforms(assign({\n        translateX: -left,\n        translateY: -top\n      }, imageData))));\n      forEach(this.previews, function (element) {\n        var data = getData(element, DATA_PREVIEW);\n        var originalWidth = data.width;\n        var originalHeight = data.height;\n        var newWidth = originalWidth;\n        var newHeight = originalHeight;\n        var ratio = 1;\n        if (cropBoxWidth) {\n          ratio = originalWidth / cropBoxWidth;\n          newHeight = cropBoxHeight * ratio;\n        }\n        if (cropBoxHeight && newHeight > originalHeight) {\n          ratio = originalHeight / cropBoxHeight;\n          newWidth = cropBoxWidth * ratio;\n          newHeight = originalHeight;\n        }\n        setStyle(element, {\n          width: newWidth,\n          height: newHeight\n        });\n        setStyle(element.getElementsByTagName('img')[0], assign({\n          width: width * ratio,\n          height: height * ratio\n        }, getTransforms(assign({\n          translateX: -left * ratio,\n          translateY: -top * ratio\n        }, imageData))));\n      });\n    }\n  };\n\n  var events = {\n    bind: function bind() {\n      var element = this.element,\n        options = this.options,\n        cropper = this.cropper;\n      if (isFunction(options.cropstart)) {\n        addListener(element, EVENT_CROP_START, options.cropstart);\n      }\n      if (isFunction(options.cropmove)) {\n        addListener(element, EVENT_CROP_MOVE, options.cropmove);\n      }\n      if (isFunction(options.cropend)) {\n        addListener(element, EVENT_CROP_END, options.cropend);\n      }\n      if (isFunction(options.crop)) {\n        addListener(element, EVENT_CROP, options.crop);\n      }\n      if (isFunction(options.zoom)) {\n        addListener(element, EVENT_ZOOM, options.zoom);\n      }\n      addListener(cropper, EVENT_POINTER_DOWN, this.onCropStart = this.cropStart.bind(this));\n      if (options.zoomable && options.zoomOnWheel) {\n        addListener(cropper, EVENT_WHEEL, this.onWheel = this.wheel.bind(this), {\n          passive: false,\n          capture: true\n        });\n      }\n      if (options.toggleDragModeOnDblclick) {\n        addListener(cropper, EVENT_DBLCLICK, this.onDblclick = this.dblclick.bind(this));\n      }\n      addListener(element.ownerDocument, EVENT_POINTER_MOVE, this.onCropMove = this.cropMove.bind(this));\n      addListener(element.ownerDocument, EVENT_POINTER_UP, this.onCropEnd = this.cropEnd.bind(this));\n      if (options.responsive) {\n        addListener(window, EVENT_RESIZE, this.onResize = this.resize.bind(this));\n      }\n    },\n    unbind: function unbind() {\n      var element = this.element,\n        options = this.options,\n        cropper = this.cropper;\n      if (isFunction(options.cropstart)) {\n        removeListener(element, EVENT_CROP_START, options.cropstart);\n      }\n      if (isFunction(options.cropmove)) {\n        removeListener(element, EVENT_CROP_MOVE, options.cropmove);\n      }\n      if (isFunction(options.cropend)) {\n        removeListener(element, EVENT_CROP_END, options.cropend);\n      }\n      if (isFunction(options.crop)) {\n        removeListener(element, EVENT_CROP, options.crop);\n      }\n      if (isFunction(options.zoom)) {\n        removeListener(element, EVENT_ZOOM, options.zoom);\n      }\n      removeListener(cropper, EVENT_POINTER_DOWN, this.onCropStart);\n      if (options.zoomable && options.zoomOnWheel) {\n        removeListener(cropper, EVENT_WHEEL, this.onWheel, {\n          passive: false,\n          capture: true\n        });\n      }\n      if (options.toggleDragModeOnDblclick) {\n        removeListener(cropper, EVENT_DBLCLICK, this.onDblclick);\n      }\n      removeListener(element.ownerDocument, EVENT_POINTER_MOVE, this.onCropMove);\n      removeListener(element.ownerDocument, EVENT_POINTER_UP, this.onCropEnd);\n      if (options.responsive) {\n        removeListener(window, EVENT_RESIZE, this.onResize);\n      }\n    }\n  };\n\n  var handlers = {\n    resize: function resize() {\n      if (this.disabled) {\n        return;\n      }\n      var options = this.options,\n        container = this.container,\n        containerData = this.containerData;\n      var ratioX = container.offsetWidth / containerData.width;\n      var ratioY = container.offsetHeight / containerData.height;\n      var ratio = Math.abs(ratioX - 1) > Math.abs(ratioY - 1) ? ratioX : ratioY;\n\n      // Resize when width changed or height changed\n      if (ratio !== 1) {\n        var canvasData;\n        var cropBoxData;\n        if (options.restore) {\n          canvasData = this.getCanvasData();\n          cropBoxData = this.getCropBoxData();\n        }\n        this.render();\n        if (options.restore) {\n          this.setCanvasData(forEach(canvasData, function (n, i) {\n            canvasData[i] = n * ratio;\n          }));\n          this.setCropBoxData(forEach(cropBoxData, function (n, i) {\n            cropBoxData[i] = n * ratio;\n          }));\n        }\n      }\n    },\n    dblclick: function dblclick() {\n      if (this.disabled || this.options.dragMode === DRAG_MODE_NONE) {\n        return;\n      }\n      this.setDragMode(hasClass(this.dragBox, CLASS_CROP) ? DRAG_MODE_MOVE : DRAG_MODE_CROP);\n    },\n    wheel: function wheel(event) {\n      var _this = this;\n      var ratio = Number(this.options.wheelZoomRatio) || 0.1;\n      var delta = 1;\n      if (this.disabled) {\n        return;\n      }\n      event.preventDefault();\n\n      // Limit wheel speed to prevent zoom too fast (#21)\n      if (this.wheeling) {\n        return;\n      }\n      this.wheeling = true;\n      setTimeout(function () {\n        _this.wheeling = false;\n      }, 50);\n      if (event.deltaY) {\n        delta = event.deltaY > 0 ? 1 : -1;\n      } else if (event.wheelDelta) {\n        delta = -event.wheelDelta / 120;\n      } else if (event.detail) {\n        delta = event.detail > 0 ? 1 : -1;\n      }\n      this.zoom(-delta * ratio, event);\n    },\n    cropStart: function cropStart(event) {\n      var buttons = event.buttons,\n        button = event.button;\n      if (this.disabled\n\n      // Handle mouse event and pointer event and ignore touch event\n      || (event.type === 'mousedown' || event.type === 'pointerdown' && event.pointerType === 'mouse') && (\n      // No primary button (Usually the left button)\n      isNumber(buttons) && buttons !== 1 || isNumber(button) && button !== 0\n\n      // Open context menu\n      || event.ctrlKey)) {\n        return;\n      }\n      var options = this.options,\n        pointers = this.pointers;\n      var action;\n      if (event.changedTouches) {\n        // Handle touch event\n        forEach(event.changedTouches, function (touch) {\n          pointers[touch.identifier] = getPointer(touch);\n        });\n      } else {\n        // Handle mouse event and pointer event\n        pointers[event.pointerId || 0] = getPointer(event);\n      }\n      if (Object.keys(pointers).length > 1 && options.zoomable && options.zoomOnTouch) {\n        action = ACTION_ZOOM;\n      } else {\n        action = getData(event.target, DATA_ACTION);\n      }\n      if (!REGEXP_ACTIONS.test(action)) {\n        return;\n      }\n      if (dispatchEvent(this.element, EVENT_CROP_START, {\n        originalEvent: event,\n        action: action\n      }) === false) {\n        return;\n      }\n\n      // This line is required for preventing page zooming in iOS browsers\n      event.preventDefault();\n      this.action = action;\n      this.cropping = false;\n      if (action === ACTION_CROP) {\n        this.cropping = true;\n        addClass(this.dragBox, CLASS_MODAL);\n      }\n    },\n    cropMove: function cropMove(event) {\n      var action = this.action;\n      if (this.disabled || !action) {\n        return;\n      }\n      var pointers = this.pointers;\n      event.preventDefault();\n      if (dispatchEvent(this.element, EVENT_CROP_MOVE, {\n        originalEvent: event,\n        action: action\n      }) === false) {\n        return;\n      }\n      if (event.changedTouches) {\n        forEach(event.changedTouches, function (touch) {\n          // The first parameter should not be undefined (#432)\n          assign(pointers[touch.identifier] || {}, getPointer(touch, true));\n        });\n      } else {\n        assign(pointers[event.pointerId || 0] || {}, getPointer(event, true));\n      }\n      this.change(event);\n    },\n    cropEnd: function cropEnd(event) {\n      if (this.disabled) {\n        return;\n      }\n      var action = this.action,\n        pointers = this.pointers;\n      if (event.changedTouches) {\n        forEach(event.changedTouches, function (touch) {\n          delete pointers[touch.identifier];\n        });\n      } else {\n        delete pointers[event.pointerId || 0];\n      }\n      if (!action) {\n        return;\n      }\n      event.preventDefault();\n      if (!Object.keys(pointers).length) {\n        this.action = '';\n      }\n      if (this.cropping) {\n        this.cropping = false;\n        toggleClass(this.dragBox, CLASS_MODAL, this.cropped && this.options.modal);\n      }\n      dispatchEvent(this.element, EVENT_CROP_END, {\n        originalEvent: event,\n        action: action\n      });\n    }\n  };\n\n  var change = {\n    change: function change(event) {\n      var options = this.options,\n        canvasData = this.canvasData,\n        containerData = this.containerData,\n        cropBoxData = this.cropBoxData,\n        pointers = this.pointers;\n      var action = this.action;\n      var aspectRatio = options.aspectRatio;\n      var left = cropBoxData.left,\n        top = cropBoxData.top,\n        width = cropBoxData.width,\n        height = cropBoxData.height;\n      var right = left + width;\n      var bottom = top + height;\n      var minLeft = 0;\n      var minTop = 0;\n      var maxWidth = containerData.width;\n      var maxHeight = containerData.height;\n      var renderable = true;\n      var offset;\n\n      // Locking aspect ratio in \"free mode\" by holding shift key\n      if (!aspectRatio && event.shiftKey) {\n        aspectRatio = width && height ? width / height : 1;\n      }\n      if (this.limited) {\n        minLeft = cropBoxData.minLeft;\n        minTop = cropBoxData.minTop;\n        maxWidth = minLeft + Math.min(containerData.width, canvasData.width, canvasData.left + canvasData.width);\n        maxHeight = minTop + Math.min(containerData.height, canvasData.height, canvasData.top + canvasData.height);\n      }\n      var pointer = pointers[Object.keys(pointers)[0]];\n      var range = {\n        x: pointer.endX - pointer.startX,\n        y: pointer.endY - pointer.startY\n      };\n      var check = function check(side) {\n        switch (side) {\n          case ACTION_EAST:\n            if (right + range.x > maxWidth) {\n              range.x = maxWidth - right;\n            }\n            break;\n          case ACTION_WEST:\n            if (left + range.x < minLeft) {\n              range.x = minLeft - left;\n            }\n            break;\n          case ACTION_NORTH:\n            if (top + range.y < minTop) {\n              range.y = minTop - top;\n            }\n            break;\n          case ACTION_SOUTH:\n            if (bottom + range.y > maxHeight) {\n              range.y = maxHeight - bottom;\n            }\n            break;\n        }\n      };\n      switch (action) {\n        // Move crop box\n        case ACTION_ALL:\n          left += range.x;\n          top += range.y;\n          break;\n\n        // Resize crop box\n        case ACTION_EAST:\n          if (range.x >= 0 && (right >= maxWidth || aspectRatio && (top <= minTop || bottom >= maxHeight))) {\n            renderable = false;\n            break;\n          }\n          check(ACTION_EAST);\n          width += range.x;\n          if (width < 0) {\n            action = ACTION_WEST;\n            width = -width;\n            left -= width;\n          }\n          if (aspectRatio) {\n            height = width / aspectRatio;\n            top += (cropBoxData.height - height) / 2;\n          }\n          break;\n        case ACTION_NORTH:\n          if (range.y <= 0 && (top <= minTop || aspectRatio && (left <= minLeft || right >= maxWidth))) {\n            renderable = false;\n            break;\n          }\n          check(ACTION_NORTH);\n          height -= range.y;\n          top += range.y;\n          if (height < 0) {\n            action = ACTION_SOUTH;\n            height = -height;\n            top -= height;\n          }\n          if (aspectRatio) {\n            width = height * aspectRatio;\n            left += (cropBoxData.width - width) / 2;\n          }\n          break;\n        case ACTION_WEST:\n          if (range.x <= 0 && (left <= minLeft || aspectRatio && (top <= minTop || bottom >= maxHeight))) {\n            renderable = false;\n            break;\n          }\n          check(ACTION_WEST);\n          width -= range.x;\n          left += range.x;\n          if (width < 0) {\n            action = ACTION_EAST;\n            width = -width;\n            left -= width;\n          }\n          if (aspectRatio) {\n            height = width / aspectRatio;\n            top += (cropBoxData.height - height) / 2;\n          }\n          break;\n        case ACTION_SOUTH:\n          if (range.y >= 0 && (bottom >= maxHeight || aspectRatio && (left <= minLeft || right >= maxWidth))) {\n            renderable = false;\n            break;\n          }\n          check(ACTION_SOUTH);\n          height += range.y;\n          if (height < 0) {\n            action = ACTION_NORTH;\n            height = -height;\n            top -= height;\n          }\n          if (aspectRatio) {\n            width = height * aspectRatio;\n            left += (cropBoxData.width - width) / 2;\n          }\n          break;\n        case ACTION_NORTH_EAST:\n          if (aspectRatio) {\n            if (range.y <= 0 && (top <= minTop || right >= maxWidth)) {\n              renderable = false;\n              break;\n            }\n            check(ACTION_NORTH);\n            height -= range.y;\n            top += range.y;\n            width = height * aspectRatio;\n          } else {\n            check(ACTION_NORTH);\n            check(ACTION_EAST);\n            if (range.x >= 0) {\n              if (right < maxWidth) {\n                width += range.x;\n              } else if (range.y <= 0 && top <= minTop) {\n                renderable = false;\n              }\n            } else {\n              width += range.x;\n            }\n            if (range.y <= 0) {\n              if (top > minTop) {\n                height -= range.y;\n                top += range.y;\n              }\n            } else {\n              height -= range.y;\n              top += range.y;\n            }\n          }\n          if (width < 0 && height < 0) {\n            action = ACTION_SOUTH_WEST;\n            height = -height;\n            width = -width;\n            top -= height;\n            left -= width;\n          } else if (width < 0) {\n            action = ACTION_NORTH_WEST;\n            width = -width;\n            left -= width;\n          } else if (height < 0) {\n            action = ACTION_SOUTH_EAST;\n            height = -height;\n            top -= height;\n          }\n          break;\n        case ACTION_NORTH_WEST:\n          if (aspectRatio) {\n            if (range.y <= 0 && (top <= minTop || left <= minLeft)) {\n              renderable = false;\n              break;\n            }\n            check(ACTION_NORTH);\n            height -= range.y;\n            top += range.y;\n            width = height * aspectRatio;\n            left += cropBoxData.width - width;\n          } else {\n            check(ACTION_NORTH);\n            check(ACTION_WEST);\n            if (range.x <= 0) {\n              if (left > minLeft) {\n                width -= range.x;\n                left += range.x;\n              } else if (range.y <= 0 && top <= minTop) {\n                renderable = false;\n              }\n            } else {\n              width -= range.x;\n              left += range.x;\n            }\n            if (range.y <= 0) {\n              if (top > minTop) {\n                height -= range.y;\n                top += range.y;\n              }\n            } else {\n              height -= range.y;\n              top += range.y;\n            }\n          }\n          if (width < 0 && height < 0) {\n            action = ACTION_SOUTH_EAST;\n            height = -height;\n            width = -width;\n            top -= height;\n            left -= width;\n          } else if (width < 0) {\n            action = ACTION_NORTH_EAST;\n            width = -width;\n            left -= width;\n          } else if (height < 0) {\n            action = ACTION_SOUTH_WEST;\n            height = -height;\n            top -= height;\n          }\n          break;\n        case ACTION_SOUTH_WEST:\n          if (aspectRatio) {\n            if (range.x <= 0 && (left <= minLeft || bottom >= maxHeight)) {\n              renderable = false;\n              break;\n            }\n            check(ACTION_WEST);\n            width -= range.x;\n            left += range.x;\n            height = width / aspectRatio;\n          } else {\n            check(ACTION_SOUTH);\n            check(ACTION_WEST);\n            if (range.x <= 0) {\n              if (left > minLeft) {\n                width -= range.x;\n                left += range.x;\n              } else if (range.y >= 0 && bottom >= maxHeight) {\n                renderable = false;\n              }\n            } else {\n              width -= range.x;\n              left += range.x;\n            }\n            if (range.y >= 0) {\n              if (bottom < maxHeight) {\n                height += range.y;\n              }\n            } else {\n              height += range.y;\n            }\n          }\n          if (width < 0 && height < 0) {\n            action = ACTION_NORTH_EAST;\n            height = -height;\n            width = -width;\n            top -= height;\n            left -= width;\n          } else if (width < 0) {\n            action = ACTION_SOUTH_EAST;\n            width = -width;\n            left -= width;\n          } else if (height < 0) {\n            action = ACTION_NORTH_WEST;\n            height = -height;\n            top -= height;\n          }\n          break;\n        case ACTION_SOUTH_EAST:\n          if (aspectRatio) {\n            if (range.x >= 0 && (right >= maxWidth || bottom >= maxHeight)) {\n              renderable = false;\n              break;\n            }\n            check(ACTION_EAST);\n            width += range.x;\n            height = width / aspectRatio;\n          } else {\n            check(ACTION_SOUTH);\n            check(ACTION_EAST);\n            if (range.x >= 0) {\n              if (right < maxWidth) {\n                width += range.x;\n              } else if (range.y >= 0 && bottom >= maxHeight) {\n                renderable = false;\n              }\n            } else {\n              width += range.x;\n            }\n            if (range.y >= 0) {\n              if (bottom < maxHeight) {\n                height += range.y;\n              }\n            } else {\n              height += range.y;\n            }\n          }\n          if (width < 0 && height < 0) {\n            action = ACTION_NORTH_WEST;\n            height = -height;\n            width = -width;\n            top -= height;\n            left -= width;\n          } else if (width < 0) {\n            action = ACTION_SOUTH_WEST;\n            width = -width;\n            left -= width;\n          } else if (height < 0) {\n            action = ACTION_NORTH_EAST;\n            height = -height;\n            top -= height;\n          }\n          break;\n\n        // Move canvas\n        case ACTION_MOVE:\n          this.move(range.x, range.y);\n          renderable = false;\n          break;\n\n        // Zoom canvas\n        case ACTION_ZOOM:\n          this.zoom(getMaxZoomRatio(pointers), event);\n          renderable = false;\n          break;\n\n        // Create crop box\n        case ACTION_CROP:\n          if (!range.x || !range.y) {\n            renderable = false;\n            break;\n          }\n          offset = getOffset(this.cropper);\n          left = pointer.startX - offset.left;\n          top = pointer.startY - offset.top;\n          width = cropBoxData.minWidth;\n          height = cropBoxData.minHeight;\n          if (range.x > 0) {\n            action = range.y > 0 ? ACTION_SOUTH_EAST : ACTION_NORTH_EAST;\n          } else if (range.x < 0) {\n            left -= width;\n            action = range.y > 0 ? ACTION_SOUTH_WEST : ACTION_NORTH_WEST;\n          }\n          if (range.y < 0) {\n            top -= height;\n          }\n\n          // Show the crop box if is hidden\n          if (!this.cropped) {\n            removeClass(this.cropBox, CLASS_HIDDEN);\n            this.cropped = true;\n            if (this.limited) {\n              this.limitCropBox(true, true);\n            }\n          }\n          break;\n      }\n      if (renderable) {\n        cropBoxData.width = width;\n        cropBoxData.height = height;\n        cropBoxData.left = left;\n        cropBoxData.top = top;\n        this.action = action;\n        this.renderCropBox();\n      }\n\n      // Override\n      forEach(pointers, function (p) {\n        p.startX = p.endX;\n        p.startY = p.endY;\n      });\n    }\n  };\n\n  var methods = {\n    // Show the crop box manually\n    crop: function crop() {\n      if (this.ready && !this.cropped && !this.disabled) {\n        this.cropped = true;\n        this.limitCropBox(true, true);\n        if (this.options.modal) {\n          addClass(this.dragBox, CLASS_MODAL);\n        }\n        removeClass(this.cropBox, CLASS_HIDDEN);\n        this.setCropBoxData(this.initialCropBoxData);\n      }\n      return this;\n    },\n    // Reset the image and crop box to their initial states\n    reset: function reset() {\n      if (this.ready && !this.disabled) {\n        this.imageData = assign({}, this.initialImageData);\n        this.canvasData = assign({}, this.initialCanvasData);\n        this.cropBoxData = assign({}, this.initialCropBoxData);\n        this.renderCanvas();\n        if (this.cropped) {\n          this.renderCropBox();\n        }\n      }\n      return this;\n    },\n    // Clear the crop box\n    clear: function clear() {\n      if (this.cropped && !this.disabled) {\n        assign(this.cropBoxData, {\n          left: 0,\n          top: 0,\n          width: 0,\n          height: 0\n        });\n        this.cropped = false;\n        this.renderCropBox();\n        this.limitCanvas(true, true);\n\n        // Render canvas after crop box rendered\n        this.renderCanvas();\n        removeClass(this.dragBox, CLASS_MODAL);\n        addClass(this.cropBox, CLASS_HIDDEN);\n      }\n      return this;\n    },\n    /**\n     * Replace the image's src and rebuild the cropper\n     * @param {string} url - The new URL.\n     * @param {boolean} [hasSameSize] - Indicate if the new image has the same size as the old one.\n     * @returns {Cropper} this\n     */\n    replace: function replace(url) {\n      var hasSameSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      if (!this.disabled && url) {\n        if (this.isImg) {\n          this.element.src = url;\n        }\n        if (hasSameSize) {\n          this.url = url;\n          this.image.src = url;\n          if (this.ready) {\n            this.viewBoxImage.src = url;\n            forEach(this.previews, function (element) {\n              element.getElementsByTagName('img')[0].src = url;\n            });\n          }\n        } else {\n          if (this.isImg) {\n            this.replaced = true;\n          }\n          this.options.data = null;\n          this.uncreate();\n          this.load(url);\n        }\n      }\n      return this;\n    },\n    // Enable (unfreeze) the cropper\n    enable: function enable() {\n      if (this.ready && this.disabled) {\n        this.disabled = false;\n        removeClass(this.cropper, CLASS_DISABLED);\n      }\n      return this;\n    },\n    // Disable (freeze) the cropper\n    disable: function disable() {\n      if (this.ready && !this.disabled) {\n        this.disabled = true;\n        addClass(this.cropper, CLASS_DISABLED);\n      }\n      return this;\n    },\n    /**\n     * Destroy the cropper and remove the instance from the image\n     * @returns {Cropper} this\n     */\n    destroy: function destroy() {\n      var element = this.element;\n      if (!element[NAMESPACE]) {\n        return this;\n      }\n      element[NAMESPACE] = undefined;\n      if (this.isImg && this.replaced) {\n        element.src = this.originalUrl;\n      }\n      this.uncreate();\n      return this;\n    },\n    /**\n     * Move the canvas with relative offsets\n     * @param {number} offsetX - The relative offset distance on the x-axis.\n     * @param {number} [offsetY=offsetX] - The relative offset distance on the y-axis.\n     * @returns {Cropper} this\n     */\n    move: function move(offsetX) {\n      var offsetY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : offsetX;\n      var _this$canvasData = this.canvasData,\n        left = _this$canvasData.left,\n        top = _this$canvasData.top;\n      return this.moveTo(isUndefined(offsetX) ? offsetX : left + Number(offsetX), isUndefined(offsetY) ? offsetY : top + Number(offsetY));\n    },\n    /**\n     * Move the canvas to an absolute point\n     * @param {number} x - The x-axis coordinate.\n     * @param {number} [y=x] - The y-axis coordinate.\n     * @returns {Cropper} this\n     */\n    moveTo: function moveTo(x) {\n      var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : x;\n      var canvasData = this.canvasData;\n      var changed = false;\n      x = Number(x);\n      y = Number(y);\n      if (this.ready && !this.disabled && this.options.movable) {\n        if (isNumber(x)) {\n          canvasData.left = x;\n          changed = true;\n        }\n        if (isNumber(y)) {\n          canvasData.top = y;\n          changed = true;\n        }\n        if (changed) {\n          this.renderCanvas(true);\n        }\n      }\n      return this;\n    },\n    /**\n     * Zoom the canvas with a relative ratio\n     * @param {number} ratio - The target ratio.\n     * @param {Event} _originalEvent - The original event if any.\n     * @returns {Cropper} this\n     */\n    zoom: function zoom(ratio, _originalEvent) {\n      var canvasData = this.canvasData;\n      ratio = Number(ratio);\n      if (ratio < 0) {\n        ratio = 1 / (1 - ratio);\n      } else {\n        ratio = 1 + ratio;\n      }\n      return this.zoomTo(canvasData.width * ratio / canvasData.naturalWidth, null, _originalEvent);\n    },\n    /**\n     * Zoom the canvas to an absolute ratio\n     * @param {number} ratio - The target ratio.\n     * @param {Object} pivot - The zoom pivot point coordinate.\n     * @param {Event} _originalEvent - The original event if any.\n     * @returns {Cropper} this\n     */\n    zoomTo: function zoomTo(ratio, pivot, _originalEvent) {\n      var options = this.options,\n        canvasData = this.canvasData;\n      var width = canvasData.width,\n        height = canvasData.height,\n        naturalWidth = canvasData.naturalWidth,\n        naturalHeight = canvasData.naturalHeight;\n      ratio = Number(ratio);\n      if (ratio >= 0 && this.ready && !this.disabled && options.zoomable) {\n        var newWidth = naturalWidth * ratio;\n        var newHeight = naturalHeight * ratio;\n        if (dispatchEvent(this.element, EVENT_ZOOM, {\n          ratio: ratio,\n          oldRatio: width / naturalWidth,\n          originalEvent: _originalEvent\n        }) === false) {\n          return this;\n        }\n        if (_originalEvent) {\n          var pointers = this.pointers;\n          var offset = getOffset(this.cropper);\n          var center = pointers && Object.keys(pointers).length ? getPointersCenter(pointers) : {\n            pageX: _originalEvent.pageX,\n            pageY: _originalEvent.pageY\n          };\n\n          // Zoom from the triggering point of the event\n          canvasData.left -= (newWidth - width) * ((center.pageX - offset.left - canvasData.left) / width);\n          canvasData.top -= (newHeight - height) * ((center.pageY - offset.top - canvasData.top) / height);\n        } else if (isPlainObject(pivot) && isNumber(pivot.x) && isNumber(pivot.y)) {\n          canvasData.left -= (newWidth - width) * ((pivot.x - canvasData.left) / width);\n          canvasData.top -= (newHeight - height) * ((pivot.y - canvasData.top) / height);\n        } else {\n          // Zoom from the center of the canvas\n          canvasData.left -= (newWidth - width) / 2;\n          canvasData.top -= (newHeight - height) / 2;\n        }\n        canvasData.width = newWidth;\n        canvasData.height = newHeight;\n        this.renderCanvas(true);\n      }\n      return this;\n    },\n    /**\n     * Rotate the canvas with a relative degree\n     * @param {number} degree - The rotate degree.\n     * @returns {Cropper} this\n     */\n    rotate: function rotate(degree) {\n      return this.rotateTo((this.imageData.rotate || 0) + Number(degree));\n    },\n    /**\n     * Rotate the canvas to an absolute degree\n     * @param {number} degree - The rotate degree.\n     * @returns {Cropper} this\n     */\n    rotateTo: function rotateTo(degree) {\n      degree = Number(degree);\n      if (isNumber(degree) && this.ready && !this.disabled && this.options.rotatable) {\n        this.imageData.rotate = degree % 360;\n        this.renderCanvas(true, true);\n      }\n      return this;\n    },\n    /**\n     * Scale the image on the x-axis.\n     * @param {number} scaleX - The scale ratio on the x-axis.\n     * @returns {Cropper} this\n     */\n    scaleX: function scaleX(_scaleX) {\n      var scaleY = this.imageData.scaleY;\n      return this.scale(_scaleX, isNumber(scaleY) ? scaleY : 1);\n    },\n    /**\n     * Scale the image on the y-axis.\n     * @param {number} scaleY - The scale ratio on the y-axis.\n     * @returns {Cropper} this\n     */\n    scaleY: function scaleY(_scaleY) {\n      var scaleX = this.imageData.scaleX;\n      return this.scale(isNumber(scaleX) ? scaleX : 1, _scaleY);\n    },\n    /**\n     * Scale the image\n     * @param {number} scaleX - The scale ratio on the x-axis.\n     * @param {number} [scaleY=scaleX] - The scale ratio on the y-axis.\n     * @returns {Cropper} this\n     */\n    scale: function scale(scaleX) {\n      var scaleY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : scaleX;\n      var imageData = this.imageData;\n      var transformed = false;\n      scaleX = Number(scaleX);\n      scaleY = Number(scaleY);\n      if (this.ready && !this.disabled && this.options.scalable) {\n        if (isNumber(scaleX)) {\n          imageData.scaleX = scaleX;\n          transformed = true;\n        }\n        if (isNumber(scaleY)) {\n          imageData.scaleY = scaleY;\n          transformed = true;\n        }\n        if (transformed) {\n          this.renderCanvas(true, true);\n        }\n      }\n      return this;\n    },\n    /**\n     * Get the cropped area position and size data (base on the original image)\n     * @param {boolean} [rounded=false] - Indicate if round the data values or not.\n     * @returns {Object} The result cropped data.\n     */\n    getData: function getData() {\n      var rounded = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n      var options = this.options,\n        imageData = this.imageData,\n        canvasData = this.canvasData,\n        cropBoxData = this.cropBoxData;\n      var data;\n      if (this.ready && this.cropped) {\n        data = {\n          x: cropBoxData.left - canvasData.left,\n          y: cropBoxData.top - canvasData.top,\n          width: cropBoxData.width,\n          height: cropBoxData.height\n        };\n        var ratio = imageData.width / imageData.naturalWidth;\n        forEach(data, function (n, i) {\n          data[i] = n / ratio;\n        });\n        if (rounded) {\n          // In case rounding off leads to extra 1px in right or bottom border\n          // we should round the top-left corner and the dimension (#343).\n          var bottom = Math.round(data.y + data.height);\n          var right = Math.round(data.x + data.width);\n          data.x = Math.round(data.x);\n          data.y = Math.round(data.y);\n          data.width = right - data.x;\n          data.height = bottom - data.y;\n        }\n      } else {\n        data = {\n          x: 0,\n          y: 0,\n          width: 0,\n          height: 0\n        };\n      }\n      if (options.rotatable) {\n        data.rotate = imageData.rotate || 0;\n      }\n      if (options.scalable) {\n        data.scaleX = imageData.scaleX || 1;\n        data.scaleY = imageData.scaleY || 1;\n      }\n      return data;\n    },\n    /**\n     * Set the cropped area position and size with new data\n     * @param {Object} data - The new data.\n     * @returns {Cropper} this\n     */\n    setData: function setData(data) {\n      var options = this.options,\n        imageData = this.imageData,\n        canvasData = this.canvasData;\n      var cropBoxData = {};\n      if (this.ready && !this.disabled && isPlainObject(data)) {\n        var transformed = false;\n        if (options.rotatable) {\n          if (isNumber(data.rotate) && data.rotate !== imageData.rotate) {\n            imageData.rotate = data.rotate;\n            transformed = true;\n          }\n        }\n        if (options.scalable) {\n          if (isNumber(data.scaleX) && data.scaleX !== imageData.scaleX) {\n            imageData.scaleX = data.scaleX;\n            transformed = true;\n          }\n          if (isNumber(data.scaleY) && data.scaleY !== imageData.scaleY) {\n            imageData.scaleY = data.scaleY;\n            transformed = true;\n          }\n        }\n        if (transformed) {\n          this.renderCanvas(true, true);\n        }\n        var ratio = imageData.width / imageData.naturalWidth;\n        if (isNumber(data.x)) {\n          cropBoxData.left = data.x * ratio + canvasData.left;\n        }\n        if (isNumber(data.y)) {\n          cropBoxData.top = data.y * ratio + canvasData.top;\n        }\n        if (isNumber(data.width)) {\n          cropBoxData.width = data.width * ratio;\n        }\n        if (isNumber(data.height)) {\n          cropBoxData.height = data.height * ratio;\n        }\n        this.setCropBoxData(cropBoxData);\n      }\n      return this;\n    },\n    /**\n     * Get the container size data.\n     * @returns {Object} The result container data.\n     */\n    getContainerData: function getContainerData() {\n      return this.ready ? assign({}, this.containerData) : {};\n    },\n    /**\n     * Get the image position and size data.\n     * @returns {Object} The result image data.\n     */\n    getImageData: function getImageData() {\n      return this.sized ? assign({}, this.imageData) : {};\n    },\n    /**\n     * Get the canvas position and size data.\n     * @returns {Object} The result canvas data.\n     */\n    getCanvasData: function getCanvasData() {\n      var canvasData = this.canvasData;\n      var data = {};\n      if (this.ready) {\n        forEach(['left', 'top', 'width', 'height', 'naturalWidth', 'naturalHeight'], function (n) {\n          data[n] = canvasData[n];\n        });\n      }\n      return data;\n    },\n    /**\n     * Set the canvas position and size with new data.\n     * @param {Object} data - The new canvas data.\n     * @returns {Cropper} this\n     */\n    setCanvasData: function setCanvasData(data) {\n      var canvasData = this.canvasData;\n      var aspectRatio = canvasData.aspectRatio;\n      if (this.ready && !this.disabled && isPlainObject(data)) {\n        if (isNumber(data.left)) {\n          canvasData.left = data.left;\n        }\n        if (isNumber(data.top)) {\n          canvasData.top = data.top;\n        }\n        if (isNumber(data.width)) {\n          canvasData.width = data.width;\n          canvasData.height = data.width / aspectRatio;\n        } else if (isNumber(data.height)) {\n          canvasData.height = data.height;\n          canvasData.width = data.height * aspectRatio;\n        }\n        this.renderCanvas(true);\n      }\n      return this;\n    },\n    /**\n     * Get the crop box position and size data.\n     * @returns {Object} The result crop box data.\n     */\n    getCropBoxData: function getCropBoxData() {\n      var cropBoxData = this.cropBoxData;\n      var data;\n      if (this.ready && this.cropped) {\n        data = {\n          left: cropBoxData.left,\n          top: cropBoxData.top,\n          width: cropBoxData.width,\n          height: cropBoxData.height\n        };\n      }\n      return data || {};\n    },\n    /**\n     * Set the crop box position and size with new data.\n     * @param {Object} data - The new crop box data.\n     * @returns {Cropper} this\n     */\n    setCropBoxData: function setCropBoxData(data) {\n      var cropBoxData = this.cropBoxData;\n      var aspectRatio = this.options.aspectRatio;\n      var widthChanged;\n      var heightChanged;\n      if (this.ready && this.cropped && !this.disabled && isPlainObject(data)) {\n        if (isNumber(data.left)) {\n          cropBoxData.left = data.left;\n        }\n        if (isNumber(data.top)) {\n          cropBoxData.top = data.top;\n        }\n        if (isNumber(data.width) && data.width !== cropBoxData.width) {\n          widthChanged = true;\n          cropBoxData.width = data.width;\n        }\n        if (isNumber(data.height) && data.height !== cropBoxData.height) {\n          heightChanged = true;\n          cropBoxData.height = data.height;\n        }\n        if (aspectRatio) {\n          if (widthChanged) {\n            cropBoxData.height = cropBoxData.width / aspectRatio;\n          } else if (heightChanged) {\n            cropBoxData.width = cropBoxData.height * aspectRatio;\n          }\n        }\n        this.renderCropBox();\n      }\n      return this;\n    },\n    /**\n     * Get a canvas drawn the cropped image.\n     * @param {Object} [options={}] - The config options.\n     * @returns {HTMLCanvasElement} - The result canvas.\n     */\n    getCroppedCanvas: function getCroppedCanvas() {\n      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      if (!this.ready || !window.HTMLCanvasElement) {\n        return null;\n      }\n      var canvasData = this.canvasData;\n      var source = getSourceCanvas(this.image, this.imageData, canvasData, options);\n\n      // Returns the source canvas if it is not cropped.\n      if (!this.cropped) {\n        return source;\n      }\n      var _this$getData = this.getData(),\n        initialX = _this$getData.x,\n        initialY = _this$getData.y,\n        initialWidth = _this$getData.width,\n        initialHeight = _this$getData.height;\n      var ratio = source.width / Math.floor(canvasData.naturalWidth);\n      if (ratio !== 1) {\n        initialX *= ratio;\n        initialY *= ratio;\n        initialWidth *= ratio;\n        initialHeight *= ratio;\n      }\n      var aspectRatio = initialWidth / initialHeight;\n      var maxSizes = getAdjustedSizes({\n        aspectRatio: aspectRatio,\n        width: options.maxWidth || Infinity,\n        height: options.maxHeight || Infinity\n      });\n      var minSizes = getAdjustedSizes({\n        aspectRatio: aspectRatio,\n        width: options.minWidth || 0,\n        height: options.minHeight || 0\n      }, 'cover');\n      var _getAdjustedSizes = getAdjustedSizes({\n          aspectRatio: aspectRatio,\n          width: options.width || (ratio !== 1 ? source.width : initialWidth),\n          height: options.height || (ratio !== 1 ? source.height : initialHeight)\n        }),\n        width = _getAdjustedSizes.width,\n        height = _getAdjustedSizes.height;\n      width = Math.min(maxSizes.width, Math.max(minSizes.width, width));\n      height = Math.min(maxSizes.height, Math.max(minSizes.height, height));\n      var canvas = document.createElement('canvas');\n      var context = canvas.getContext('2d');\n      canvas.width = normalizeDecimalNumber(width);\n      canvas.height = normalizeDecimalNumber(height);\n      context.fillStyle = options.fillColor || 'transparent';\n      context.fillRect(0, 0, width, height);\n      var _options$imageSmoothi = options.imageSmoothingEnabled,\n        imageSmoothingEnabled = _options$imageSmoothi === void 0 ? true : _options$imageSmoothi,\n        imageSmoothingQuality = options.imageSmoothingQuality;\n      context.imageSmoothingEnabled = imageSmoothingEnabled;\n      if (imageSmoothingQuality) {\n        context.imageSmoothingQuality = imageSmoothingQuality;\n      }\n\n      // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage\n      var sourceWidth = source.width;\n      var sourceHeight = source.height;\n\n      // Source canvas parameters\n      var srcX = initialX;\n      var srcY = initialY;\n      var srcWidth;\n      var srcHeight;\n\n      // Destination canvas parameters\n      var dstX;\n      var dstY;\n      var dstWidth;\n      var dstHeight;\n      if (srcX <= -initialWidth || srcX > sourceWidth) {\n        srcX = 0;\n        srcWidth = 0;\n        dstX = 0;\n        dstWidth = 0;\n      } else if (srcX <= 0) {\n        dstX = -srcX;\n        srcX = 0;\n        srcWidth = Math.min(sourceWidth, initialWidth + srcX);\n        dstWidth = srcWidth;\n      } else if (srcX <= sourceWidth) {\n        dstX = 0;\n        srcWidth = Math.min(initialWidth, sourceWidth - srcX);\n        dstWidth = srcWidth;\n      }\n      if (srcWidth <= 0 || srcY <= -initialHeight || srcY > sourceHeight) {\n        srcY = 0;\n        srcHeight = 0;\n        dstY = 0;\n        dstHeight = 0;\n      } else if (srcY <= 0) {\n        dstY = -srcY;\n        srcY = 0;\n        srcHeight = Math.min(sourceHeight, initialHeight + srcY);\n        dstHeight = srcHeight;\n      } else if (srcY <= sourceHeight) {\n        dstY = 0;\n        srcHeight = Math.min(initialHeight, sourceHeight - srcY);\n        dstHeight = srcHeight;\n      }\n      var params = [srcX, srcY, srcWidth, srcHeight];\n\n      // Avoid \"IndexSizeError\"\n      if (dstWidth > 0 && dstHeight > 0) {\n        var scale = width / initialWidth;\n        params.push(dstX * scale, dstY * scale, dstWidth * scale, dstHeight * scale);\n      }\n\n      // All the numerical parameters should be integer for `drawImage`\n      // https://github.com/fengyuanchen/cropper/issues/476\n      context.drawImage.apply(context, [source].concat(_toConsumableArray(params.map(function (param) {\n        return Math.floor(normalizeDecimalNumber(param));\n      }))));\n      return canvas;\n    },\n    /**\n     * Change the aspect ratio of the crop box.\n     * @param {number} aspectRatio - The new aspect ratio.\n     * @returns {Cropper} this\n     */\n    setAspectRatio: function setAspectRatio(aspectRatio) {\n      var options = this.options;\n      if (!this.disabled && !isUndefined(aspectRatio)) {\n        // 0 -> NaN\n        options.aspectRatio = Math.max(0, aspectRatio) || NaN;\n        if (this.ready) {\n          this.initCropBox();\n          if (this.cropped) {\n            this.renderCropBox();\n          }\n        }\n      }\n      return this;\n    },\n    /**\n     * Change the drag mode.\n     * @param {string} mode - The new drag mode.\n     * @returns {Cropper} this\n     */\n    setDragMode: function setDragMode(mode) {\n      var options = this.options,\n        dragBox = this.dragBox,\n        face = this.face;\n      if (this.ready && !this.disabled) {\n        var croppable = mode === DRAG_MODE_CROP;\n        var movable = options.movable && mode === DRAG_MODE_MOVE;\n        mode = croppable || movable ? mode : DRAG_MODE_NONE;\n        options.dragMode = mode;\n        setData(dragBox, DATA_ACTION, mode);\n        toggleClass(dragBox, CLASS_CROP, croppable);\n        toggleClass(dragBox, CLASS_MOVE, movable);\n        if (!options.cropBoxMovable) {\n          // Sync drag mode to crop box when it is not movable\n          setData(face, DATA_ACTION, mode);\n          toggleClass(face, CLASS_CROP, croppable);\n          toggleClass(face, CLASS_MOVE, movable);\n        }\n      }\n      return this;\n    }\n  };\n\n  var AnotherCropper = WINDOW.Cropper;\n  var Cropper = /*#__PURE__*/function () {\n    /**\n     * Create a new Cropper.\n     * @param {Element} element - The target element for cropping.\n     * @param {Object} [options={}] - The configuration options.\n     */\n    function Cropper(element) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      _classCallCheck(this, Cropper);\n      if (!element || !REGEXP_TAG_NAME.test(element.tagName)) {\n        throw new Error('The first argument is required and must be an <img> or <canvas> element.');\n      }\n      this.element = element;\n      this.options = assign({}, DEFAULTS, isPlainObject(options) && options);\n      this.cropped = false;\n      this.disabled = false;\n      this.pointers = {};\n      this.ready = false;\n      this.reloading = false;\n      this.replaced = false;\n      this.sized = false;\n      this.sizing = false;\n      this.init();\n    }\n    _createClass(Cropper, [{\n      key: \"init\",\n      value: function init() {\n        var element = this.element;\n        var tagName = element.tagName.toLowerCase();\n        var url;\n        if (element[NAMESPACE]) {\n          return;\n        }\n        element[NAMESPACE] = this;\n        if (tagName === 'img') {\n          this.isImg = true;\n\n          // e.g.: \"img/picture.jpg\"\n          url = element.getAttribute('src') || '';\n          this.originalUrl = url;\n\n          // Stop when it's a blank image\n          if (!url) {\n            return;\n          }\n\n          // e.g.: \"https://example.com/img/picture.jpg\"\n          url = element.src;\n        } else if (tagName === 'canvas' && window.HTMLCanvasElement) {\n          url = element.toDataURL();\n        }\n        this.load(url);\n      }\n    }, {\n      key: \"load\",\n      value: function load(url) {\n        var _this = this;\n        if (!url) {\n          return;\n        }\n        this.url = url;\n        this.imageData = {};\n        var element = this.element,\n          options = this.options;\n        if (!options.rotatable && !options.scalable) {\n          options.checkOrientation = false;\n        }\n\n        // Only IE10+ supports Typed Arrays\n        if (!options.checkOrientation || !window.ArrayBuffer) {\n          this.clone();\n          return;\n        }\n\n        // Detect the mime type of the image directly if it is a Data URL\n        if (REGEXP_DATA_URL.test(url)) {\n          // Read ArrayBuffer from Data URL of JPEG images directly for better performance\n          if (REGEXP_DATA_URL_JPEG.test(url)) {\n            this.read(dataURLToArrayBuffer(url));\n          } else {\n            // Only a JPEG image may contains Exif Orientation information,\n            // the rest types of Data URLs are not necessary to check orientation at all.\n            this.clone();\n          }\n          return;\n        }\n\n        // 1. Detect the mime type of the image by a XMLHttpRequest.\n        // 2. Load the image as ArrayBuffer for reading orientation if its a JPEG image.\n        var xhr = new XMLHttpRequest();\n        var clone = this.clone.bind(this);\n        this.reloading = true;\n        this.xhr = xhr;\n\n        // 1. Cross origin requests are only supported for protocol schemes:\n        // http, https, data, chrome, chrome-extension.\n        // 2. Access to XMLHttpRequest from a Data URL will be blocked by CORS policy\n        // in some browsers as IE11 and Safari.\n        xhr.onabort = clone;\n        xhr.onerror = clone;\n        xhr.ontimeout = clone;\n        xhr.onprogress = function () {\n          // Abort the request directly if it not a JPEG image for better performance\n          if (xhr.getResponseHeader('content-type') !== MIME_TYPE_JPEG) {\n            xhr.abort();\n          }\n        };\n        xhr.onload = function () {\n          _this.read(xhr.response);\n        };\n        xhr.onloadend = function () {\n          _this.reloading = false;\n          _this.xhr = null;\n        };\n\n        // Bust cache when there is a \"crossOrigin\" property to avoid browser cache error\n        if (options.checkCrossOrigin && isCrossOriginURL(url) && element.crossOrigin) {\n          url = addTimestamp(url);\n        }\n\n        // The third parameter is required for avoiding side-effect (#682)\n        xhr.open('GET', url, true);\n        xhr.responseType = 'arraybuffer';\n        xhr.withCredentials = element.crossOrigin === 'use-credentials';\n        xhr.send();\n      }\n    }, {\n      key: \"read\",\n      value: function read(arrayBuffer) {\n        var options = this.options,\n          imageData = this.imageData;\n\n        // Reset the orientation value to its default value 1\n        // as some iOS browsers will render image with its orientation\n        var orientation = resetAndGetOrientation(arrayBuffer);\n        var rotate = 0;\n        var scaleX = 1;\n        var scaleY = 1;\n        if (orientation > 1) {\n          // Generate a new URL which has the default orientation value\n          this.url = arrayBufferToDataURL(arrayBuffer, MIME_TYPE_JPEG);\n          var _parseOrientation = parseOrientation(orientation);\n          rotate = _parseOrientation.rotate;\n          scaleX = _parseOrientation.scaleX;\n          scaleY = _parseOrientation.scaleY;\n        }\n        if (options.rotatable) {\n          imageData.rotate = rotate;\n        }\n        if (options.scalable) {\n          imageData.scaleX = scaleX;\n          imageData.scaleY = scaleY;\n        }\n        this.clone();\n      }\n    }, {\n      key: \"clone\",\n      value: function clone() {\n        var element = this.element,\n          url = this.url;\n        var crossOrigin = element.crossOrigin;\n        var crossOriginUrl = url;\n        if (this.options.checkCrossOrigin && isCrossOriginURL(url)) {\n          if (!crossOrigin) {\n            crossOrigin = 'anonymous';\n          }\n\n          // Bust cache when there is not a \"crossOrigin\" property (#519)\n          crossOriginUrl = addTimestamp(url);\n        }\n        this.crossOrigin = crossOrigin;\n        this.crossOriginUrl = crossOriginUrl;\n        var image = document.createElement('img');\n        if (crossOrigin) {\n          image.crossOrigin = crossOrigin;\n        }\n        image.src = crossOriginUrl || url;\n        image.alt = element.alt || 'The image to crop';\n        this.image = image;\n        image.onload = this.start.bind(this);\n        image.onerror = this.stop.bind(this);\n        addClass(image, CLASS_HIDE);\n        element.parentNode.insertBefore(image, element.nextSibling);\n      }\n    }, {\n      key: \"start\",\n      value: function start() {\n        var _this2 = this;\n        var image = this.image;\n        image.onload = null;\n        image.onerror = null;\n        this.sizing = true;\n\n        // Match all browsers that use WebKit as the layout engine in iOS devices,\n        // such as Safari for iOS, Chrome for iOS, and in-app browsers.\n        var isIOSWebKit = WINDOW.navigator && /(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(WINDOW.navigator.userAgent);\n        var done = function done(naturalWidth, naturalHeight) {\n          assign(_this2.imageData, {\n            naturalWidth: naturalWidth,\n            naturalHeight: naturalHeight,\n            aspectRatio: naturalWidth / naturalHeight\n          });\n          _this2.initialImageData = assign({}, _this2.imageData);\n          _this2.sizing = false;\n          _this2.sized = true;\n          _this2.build();\n        };\n\n        // Most modern browsers (excepts iOS WebKit)\n        if (image.naturalWidth && !isIOSWebKit) {\n          done(image.naturalWidth, image.naturalHeight);\n          return;\n        }\n        var sizingImage = document.createElement('img');\n        var body = document.body || document.documentElement;\n        this.sizingImage = sizingImage;\n        sizingImage.onload = function () {\n          done(sizingImage.width, sizingImage.height);\n          if (!isIOSWebKit) {\n            body.removeChild(sizingImage);\n          }\n        };\n        sizingImage.src = image.src;\n\n        // iOS WebKit will convert the image automatically\n        // with its orientation once append it into DOM (#279)\n        if (!isIOSWebKit) {\n          sizingImage.style.cssText = 'left:0;' + 'max-height:none!important;' + 'max-width:none!important;' + 'min-height:0!important;' + 'min-width:0!important;' + 'opacity:0;' + 'position:absolute;' + 'top:0;' + 'z-index:-1;';\n          body.appendChild(sizingImage);\n        }\n      }\n    }, {\n      key: \"stop\",\n      value: function stop() {\n        var image = this.image;\n        image.onload = null;\n        image.onerror = null;\n        image.parentNode.removeChild(image);\n        this.image = null;\n      }\n    }, {\n      key: \"build\",\n      value: function build() {\n        if (!this.sized || this.ready) {\n          return;\n        }\n        var element = this.element,\n          options = this.options,\n          image = this.image;\n\n        // Create cropper elements\n        var container = element.parentNode;\n        var template = document.createElement('div');\n        template.innerHTML = TEMPLATE;\n        var cropper = template.querySelector(\".\".concat(NAMESPACE, \"-container\"));\n        var canvas = cropper.querySelector(\".\".concat(NAMESPACE, \"-canvas\"));\n        var dragBox = cropper.querySelector(\".\".concat(NAMESPACE, \"-drag-box\"));\n        var cropBox = cropper.querySelector(\".\".concat(NAMESPACE, \"-crop-box\"));\n        var face = cropBox.querySelector(\".\".concat(NAMESPACE, \"-face\"));\n        this.container = container;\n        this.cropper = cropper;\n        this.canvas = canvas;\n        this.dragBox = dragBox;\n        this.cropBox = cropBox;\n        this.viewBox = cropper.querySelector(\".\".concat(NAMESPACE, \"-view-box\"));\n        this.face = face;\n        canvas.appendChild(image);\n\n        // Hide the original image\n        addClass(element, CLASS_HIDDEN);\n\n        // Inserts the cropper after to the current image\n        container.insertBefore(cropper, element.nextSibling);\n\n        // Show the hidden image\n        removeClass(image, CLASS_HIDE);\n        this.initPreview();\n        this.bind();\n        options.initialAspectRatio = Math.max(0, options.initialAspectRatio) || NaN;\n        options.aspectRatio = Math.max(0, options.aspectRatio) || NaN;\n        options.viewMode = Math.max(0, Math.min(3, Math.round(options.viewMode))) || 0;\n        addClass(cropBox, CLASS_HIDDEN);\n        if (!options.guides) {\n          addClass(cropBox.getElementsByClassName(\"\".concat(NAMESPACE, \"-dashed\")), CLASS_HIDDEN);\n        }\n        if (!options.center) {\n          addClass(cropBox.getElementsByClassName(\"\".concat(NAMESPACE, \"-center\")), CLASS_HIDDEN);\n        }\n        if (options.background) {\n          addClass(cropper, \"\".concat(NAMESPACE, \"-bg\"));\n        }\n        if (!options.highlight) {\n          addClass(face, CLASS_INVISIBLE);\n        }\n        if (options.cropBoxMovable) {\n          addClass(face, CLASS_MOVE);\n          setData(face, DATA_ACTION, ACTION_ALL);\n        }\n        if (!options.cropBoxResizable) {\n          addClass(cropBox.getElementsByClassName(\"\".concat(NAMESPACE, \"-line\")), CLASS_HIDDEN);\n          addClass(cropBox.getElementsByClassName(\"\".concat(NAMESPACE, \"-point\")), CLASS_HIDDEN);\n        }\n        this.render();\n        this.ready = true;\n        this.setDragMode(options.dragMode);\n        if (options.autoCrop) {\n          this.crop();\n        }\n        this.setData(options.data);\n        if (isFunction(options.ready)) {\n          addListener(element, EVENT_READY, options.ready, {\n            once: true\n          });\n        }\n        dispatchEvent(element, EVENT_READY);\n      }\n    }, {\n      key: \"unbuild\",\n      value: function unbuild() {\n        if (!this.ready) {\n          return;\n        }\n        this.ready = false;\n        this.unbind();\n        this.resetPreview();\n        var parentNode = this.cropper.parentNode;\n        if (parentNode) {\n          parentNode.removeChild(this.cropper);\n        }\n        removeClass(this.element, CLASS_HIDDEN);\n      }\n    }, {\n      key: \"uncreate\",\n      value: function uncreate() {\n        if (this.ready) {\n          this.unbuild();\n          this.ready = false;\n          this.cropped = false;\n        } else if (this.sizing) {\n          this.sizingImage.onload = null;\n          this.sizing = false;\n          this.sized = false;\n        } else if (this.reloading) {\n          this.xhr.onabort = null;\n          this.xhr.abort();\n        } else if (this.image) {\n          this.stop();\n        }\n      }\n\n      /**\n       * Get the no conflict cropper class.\n       * @returns {Cropper} The cropper class.\n       */\n    }], [{\n      key: \"noConflict\",\n      value: function noConflict() {\n        window.Cropper = AnotherCropper;\n        return Cropper;\n      }\n\n      /**\n       * Change the default options.\n       * @param {Object} options - The new default options.\n       */\n    }, {\n      key: \"setDefaults\",\n      value: function setDefaults(options) {\n        assign(DEFAULTS, isPlainObject(options) && options);\n      }\n    }]);\n    return Cropper;\n  }();\n  assign(Cropper.prototype, render, preview, events, handlers, change, methods);\n\n  return Cropper;\n\n}));\n", "if (!Array.prototype.find) {\n    Array.prototype.find = function(predicate) {\n        if (this === null) {\n            throw new TypeError('Array.prototype.find called on null or undefined')\n        }\n        if (typeof predicate !== 'function') {\n            throw new TypeError('predicate must be a function')\n        }\n        var list = Object(this)\n        var length = list.length >>> 0\n        var thisArg = arguments[1]\n        var value\n\n        for (var i = 0; i < length; i++) {\n            value = list[i]\n            if (predicate.call(thisArg, value, i, list)) {\n                return value\n            }\n        }\n        return undefined\n    }\n}\n\nif (window && typeof window.CustomEvent !== \"function\") {\n  function CustomEvent(event, params) {\n    params = params || {\n      bubbles: false,\n      cancelable: false,\n      detail: undefined\n    }\n    var evt = document.createEvent('CustomEvent')\n    evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail)\n    return evt\n  }\n\n if (typeof window.Event !== 'undefined') {\n   CustomEvent.prototype = window.Event.prototype\n }\n\n  window.CustomEvent = CustomEvent\n}", "class TributeEvents {\n  constructor(tribute) {\n    this.tribute = tribute;\n    this.tribute.events = this;\n  }\n\n  static keys() {\n    return [\n      {\n        key: 9,\n        value: \"TAB\"\n      },\n      {\n        key: 8,\n        value: \"DELETE\"\n      },\n      {\n        key: 13,\n        value: \"ENTER\"\n      },\n      {\n        key: 27,\n        value: \"ESCAPE\"\n      },\n      {\n        key: 32,\n        value: \"SPACE\"\n      },\n      {\n        key: 38,\n        value: \"UP\"\n      },\n      {\n        key: 40,\n        value: \"DOWN\"\n      }\n    ];\n  }\n\n  bind(element) {\n    element.boundKeydown = this.keydown.bind(element, this);\n    element.boundKeyup = this.keyup.bind(element, this);\n    element.boundInput = this.input.bind(element, this);\n\n    element.addEventListener(\"keydown\", element.boundKeydown, false);\n    element.addEventListener(\"keyup\", element.boundKeyup, false);\n    element.addEventListener(\"input\", element.boundInput, false);\n  }\n\n  unbind(element) {\n    element.removeEventListener(\"keydown\", element.boundKeydown, false);\n    element.removeEventListener(\"keyup\", element.boundKeyup, false);\n    element.removeEventListener(\"input\", element.boundInput, false);\n\n    delete element.boundKeydown;\n    delete element.boundKeyup;\n    delete element.boundInput;\n  }\n\n  keydown(instance, event) {\n    if (instance.shouldDeactivate(event)) {\n      instance.tribute.isActive = false;\n      instance.tribute.hideMenu();\n    }\n\n    let element = this;\n    instance.commandEvent = false;\n\n    TributeEvents.keys().forEach(o => {\n      if (o.key === event.keyCode) {\n        instance.commandEvent = true;\n        instance.callbacks()[o.value.toLowerCase()](event, element);\n      }\n    });\n  }\n\n  input(instance, event) {\n    instance.inputEvent = true;\n    instance.keyup.call(this, instance, event);\n  }\n\n  click(instance, event) {\n    let tribute = instance.tribute;\n    if (tribute.menu && tribute.menu.contains(event.target)) {\n      let li = event.target;\n      event.preventDefault();\n      event.stopPropagation();\n      while (li.nodeName.toLowerCase() !== \"li\") {\n        li = li.parentNode;\n        if (!li || li === tribute.menu) {\n          throw new Error(\"cannot find the <li> container for the click\");\n        }\n      }\n      tribute.selectItemAtIndex(li.getAttribute(\"data-index\"), event);\n      tribute.hideMenu();\n\n      // TODO: should fire with externalTrigger and target is outside of menu\n    } else if (tribute.current.element && !tribute.current.externalTrigger) {\n      tribute.current.externalTrigger = false;\n      setTimeout(() => tribute.hideMenu());\n    }\n  }\n\n  keyup(instance, event) {\n    if (instance.inputEvent) {\n      instance.inputEvent = false;\n    }\n    instance.updateSelection(this);\n\n    if (event.keyCode === 27) return;\n\n    if (!instance.tribute.allowSpaces && instance.tribute.hasTrailingSpace) {\n      instance.tribute.hasTrailingSpace = false;\n      instance.commandEvent = true;\n      instance.callbacks()[\"space\"](event, this);\n      return;\n    }\n\n    if (!instance.tribute.isActive) {\n      if (instance.tribute.autocompleteMode) {\n        instance.callbacks().triggerChar(event, this, \"\");\n      } else {\n        let keyCode = instance.getKeyCode(instance, this, event);\n\n        if (isNaN(keyCode) || !keyCode) return;\n\n        let trigger = instance.tribute.triggers().find(trigger => {\n          return trigger.charCodeAt(0) === keyCode;\n        });\n\n        if (typeof trigger !== \"undefined\") {\n          instance.callbacks().triggerChar(event, this, trigger);\n        }\n      }\n    }\n\n    if (\n      instance.tribute.current.mentionText.length <\n      instance.tribute.current.collection.menuShowMinLength\n    ) {\n      return;\n    }\n\n    if (\n      ((instance.tribute.current.trigger ||\n        instance.tribute.autocompleteMode) &&\n        instance.commandEvent === false) ||\n      (instance.tribute.isActive && event.keyCode === 8)\n    ) {\n      instance.tribute.showMenuFor(this, true);\n    }\n  }\n\n  shouldDeactivate(event) {\n    if (!this.tribute.isActive) return false;\n\n    if (this.tribute.current.mentionText.length === 0) {\n      let eventKeyPressed = false;\n      TributeEvents.keys().forEach(o => {\n        if (event.keyCode === o.key) eventKeyPressed = true;\n      });\n\n      return !eventKeyPressed;\n    }\n\n    return false;\n  }\n\n  getKeyCode(instance, el, event) {\n    let char;\n    let tribute = instance.tribute;\n    let info = tribute.range.getTriggerInfo(\n      false,\n      tribute.hasTrailingSpace,\n      true,\n      tribute.allowSpaces,\n      tribute.autocompleteMode\n    );\n\n    if (info) {\n      return info.mentionTriggerChar.charCodeAt(0);\n    } else {\n      return false;\n    }\n  }\n\n  updateSelection(el) {\n    this.tribute.current.element = el;\n    let info = this.tribute.range.getTriggerInfo(\n      false,\n      this.tribute.hasTrailingSpace,\n      true,\n      this.tribute.allowSpaces,\n      this.tribute.autocompleteMode\n    );\n\n    if (info) {\n      this.tribute.current.selectedPath = info.mentionSelectedPath;\n      this.tribute.current.mentionText = info.mentionText;\n      this.tribute.current.selectedOffset = info.mentionSelectedOffset;\n    }\n  }\n\n  callbacks() {\n    return {\n      triggerChar: (e, el, trigger) => {\n        let tribute = this.tribute;\n        tribute.current.trigger = trigger;\n\n        let collectionItem = tribute.collection.find(item => {\n          return item.trigger === trigger;\n        });\n\n        tribute.current.collection = collectionItem;\n\n        if (\n          tribute.current.mentionText.length >=\n            tribute.current.collection.menuShowMinLength &&\n          tribute.inputEvent\n        ) {\n          tribute.showMenuFor(el, true);\n        }\n      },\n      enter: (e, el) => {\n        // choose selection\n        if (this.tribute.isActive && this.tribute.current.filteredItems) {\n          e.preventDefault();\n          e.stopPropagation();\n          setTimeout(() => {\n            this.tribute.selectItemAtIndex(this.tribute.menuSelected, e);\n            this.tribute.hideMenu();\n          }, 0);\n        }\n      },\n      escape: (e, el) => {\n        if (this.tribute.isActive) {\n          e.preventDefault();\n          e.stopPropagation();\n          this.tribute.isActive = false;\n          this.tribute.hideMenu();\n        }\n      },\n      tab: (e, el) => {\n        // choose first match\n        this.callbacks().enter(e, el);\n      },\n      space: (e, el) => {\n        if (this.tribute.isActive) {\n          if (this.tribute.spaceSelectsMatch) {\n            this.callbacks().enter(e, el);\n          } else if (!this.tribute.allowSpaces) {\n            e.stopPropagation();\n            setTimeout(() => {\n              this.tribute.hideMenu();\n              this.tribute.isActive = false;\n            }, 0);\n          }\n        }\n      },\n      up: (e, el) => {\n        // navigate up ul\n        if (this.tribute.isActive && this.tribute.current.filteredItems) {\n          e.preventDefault();\n          e.stopPropagation();\n          let count = this.tribute.current.filteredItems.length,\n            selected = this.tribute.menuSelected;\n\n          if (count > selected && selected > 0) {\n            this.tribute.menuSelected--;\n            this.setActiveLi();\n          } else if (selected === 0) {\n            this.tribute.menuSelected = count - 1;\n            this.setActiveLi();\n            this.tribute.menu.scrollTop = this.tribute.menu.scrollHeight;\n          }\n        }\n      },\n      down: (e, el) => {\n        // navigate down ul\n        if (this.tribute.isActive && this.tribute.current.filteredItems) {\n          e.preventDefault();\n          e.stopPropagation();\n          let count = this.tribute.current.filteredItems.length - 1,\n            selected = this.tribute.menuSelected;\n\n          if (count > selected) {\n            this.tribute.menuSelected++;\n            this.setActiveLi();\n          } else if (count === selected) {\n            this.tribute.menuSelected = 0;\n            this.setActiveLi();\n            this.tribute.menu.scrollTop = 0;\n          }\n        }\n      },\n      delete: (e, el) => {\n        if (\n          this.tribute.isActive &&\n          this.tribute.current.mentionText.length < 1\n        ) {\n          this.tribute.hideMenu();\n        } else if (this.tribute.isActive) {\n          this.tribute.showMenuFor(el);\n        }\n      }\n    };\n  }\n\n  setActiveLi(index) {\n    let lis = this.tribute.menu.querySelectorAll(\"li\"),\n      length = lis.length >>> 0;\n\n    if (index) this.tribute.menuSelected = parseInt(index);\n\n    for (let i = 0; i < length; i++) {\n      let li = lis[i];\n      if (i === this.tribute.menuSelected) {\n        li.classList.add(this.tribute.current.collection.selectClass);\n\n        let liClientRect = li.getBoundingClientRect();\n        let menuClientRect = this.tribute.menu.getBoundingClientRect();\n\n        if (liClientRect.bottom > menuClientRect.bottom) {\n          let scrollDistance = liClientRect.bottom - menuClientRect.bottom;\n          this.tribute.menu.scrollTop += scrollDistance;\n        } else if (liClientRect.top < menuClientRect.top) {\n          let scrollDistance = menuClientRect.top - liClientRect.top;\n          this.tribute.menu.scrollTop -= scrollDistance;\n        }\n      } else {\n        li.classList.remove(this.tribute.current.collection.selectClass);\n      }\n    }\n  }\n\n  getFullHeight(elem, includeMargin) {\n    let height = elem.getBoundingClientRect().height;\n\n    if (includeMargin) {\n      let style = elem.currentStyle || window.getComputedStyle(elem);\n      return (\n        height + parseFloat(style.marginTop) + parseFloat(style.marginBottom)\n      );\n    }\n\n    return height;\n  }\n}\n\nexport default TributeEvents;\n", "class TributeMenuEvents {\n  constructor(tribute) {\n    this.tribute = tribute;\n    this.tribute.menuEvents = this;\n    this.menu = this.tribute.menu;\n  }\n\n  bind(menu) {\n    this.menuClickEvent = this.tribute.events.click.bind(null, this);\n    this.menuContainerScrollEvent = this.debounce(\n      () => {\n        if (this.tribute.isActive) {\n          this.tribute.showMenuFor(this.tribute.current.element, false);\n        }\n      },\n      300,\n      false\n    );\n    this.windowResizeEvent = this.debounce(\n      () => {\n        if (this.tribute.isActive) {\n          this.tribute.range.positionMenuAtCaret(true);\n        }\n      },\n      300,\n      false\n    );\n\n    // fixes IE11 issues with mousedown\n    this.tribute.range\n      .getDocument()\n      .addEventListener(\"MSPointerDown\", this.menuClickEvent, false);\n    this.tribute.range\n      .getDocument()\n      .addEventListener(\"mousedown\", this.menuClickEvent, false);\n    window.addEventListener(\"resize\", this.windowResizeEvent);\n\n    if (this.menuContainer) {\n      this.menuContainer.addEventListener(\n        \"scroll\",\n        this.menuContainerScrollEvent,\n        false\n      );\n    } else {\n      window.addEventListener(\"scroll\", this.menuContainerScrollEvent);\n    }\n  }\n\n  unbind(menu) {\n    this.tribute.range\n      .getDocument()\n      .removeEventListener(\"mousedown\", this.menuClickEvent, false);\n    this.tribute.range\n      .getDocument()\n      .removeEventListener(\"MSPointerDown\", this.menuClickEvent, false);\n    window.removeEventListener(\"resize\", this.windowResizeEvent);\n\n    if (this.menuContainer) {\n      this.menuContainer.removeEventListener(\n        \"scroll\",\n        this.menuContainerScrollEvent,\n        false\n      );\n    } else {\n      window.removeEventListener(\"scroll\", this.menuContainerScrollEvent);\n    }\n  }\n\n  debounce(func, wait, immediate) {\n    var timeout;\n    return () => {\n      var context = this,\n        args = arguments;\n      var later = () => {\n        timeout = null;\n        if (!immediate) func.apply(context, args);\n      };\n      var callNow = immediate && !timeout;\n      clearTimeout(timeout);\n      timeout = setTimeout(later, wait);\n      if (callNow) func.apply(context, args);\n    };\n  }\n}\n\nexport default TributeMenuEvents;\n", "// Thanks to https://github.com/jeff-collins/ment.io\nimport \"./utils\";\n\nclass TributeRange {\n    constructor(tribute) {\n        this.tribute = tribute\n        this.tribute.range = this\n    }\n\n    getDocument() {\n        let iframe\n        if (this.tribute.current.collection) {\n            iframe = this.tribute.current.collection.iframe\n        }\n\n        if (!iframe) {\n            return document\n        }\n\n        return iframe.contentWindow.document\n    }\n\n    positionMenuAtCaret(scrollTo) {\n        let context = this.tribute.current,\n            coordinates\n\n        let info = this.getTriggerInfo(false, this.tribute.hasTrailingSpace, true, this.tribute.allowSpaces, this.tribute.autocompleteMode)\n\n        if (typeof info !== 'undefined') {\n\n            if(!this.tribute.positionMenu){\n                this.tribute.menu.style.cssText = `display: block;`\n                return\n            }\n\n            if (!this.isContentEditable(context.element)) {\n                coordinates = this.getTextAreaOrInputUnderlinePosition(this.tribute.current.element,\n                    info.mentionPosition)\n            }\n            else {\n                coordinates = this.getContentEditableCaretPosition(info.mentionPosition)\n            }\n\n            this.tribute.menu.style.cssText = `top: ${coordinates.top}px;\n                                     left: ${coordinates.left}px;\n                                     right: ${coordinates.right}px;\n                                     bottom: ${coordinates.bottom}px;\n                                     position: absolute;\n                                     display: block;`\n\n            if (coordinates.left === 'auto') {\n                this.tribute.menu.style.left = 'auto'\n            }\n\n            if (coordinates.top === 'auto') {\n                this.tribute.menu.style.top = 'auto'\n            }\n\n            if (scrollTo) this.scrollIntoView()\n\n            window.setTimeout(() => {\n                let menuDimensions = {\n                   width: this.tribute.menu.offsetWidth,\n                   height: this.tribute.menu.offsetHeight\n                }\n                let menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions)\n\n                let menuIsOffScreenHorizontally = window.innerWidth > menuDimensions.width && (menuIsOffScreen.left || menuIsOffScreen.right)\n                let menuIsOffScreenVertically = window.innerHeight > menuDimensions.height && (menuIsOffScreen.top || menuIsOffScreen.bottom)\n                if (menuIsOffScreenHorizontally || menuIsOffScreenVertically) {\n                    this.tribute.menu.style.cssText = 'display: none'\n                    this.positionMenuAtCaret(scrollTo)\n                }\n            }, 0)\n\n        } else {\n            this.tribute.menu.style.cssText = 'display: none'\n        }\n    }\n\n    get menuContainerIsBody() {\n        return this.tribute.menuContainer === document.body || !this.tribute.menuContainer;\n    }\n\n\n    selectElement(targetElement, path, offset) {\n        let range\n        let elem = targetElement\n\n        if (path) {\n            for (var i = 0; i < path.length; i++) {\n                elem = elem.childNodes[path[i]]\n                if (elem === undefined) {\n                    return\n                }\n                while (elem.length < offset) {\n                    offset -= elem.length\n                    elem = elem.nextSibling\n                }\n                if (elem.childNodes.length === 0 && !elem.length) {\n                    elem = elem.previousSibling\n                }\n            }\n        }\n        let sel = this.getWindowSelection()\n\n        range = this.getDocument().createRange()\n        range.setStart(elem, offset)\n        range.setEnd(elem, offset)\n        range.collapse(true)\n\n        try {\n            sel.removeAllRanges()\n        } catch (error) {}\n\n        sel.addRange(range)\n        targetElement.focus()\n    }\n\n    replaceTriggerText(text, requireLeadingSpace, hasTrailingSpace, originalEvent, item) {\n        let info = this.getTriggerInfo(true, hasTrailingSpace, requireLeadingSpace, this.tribute.allowSpaces, this.tribute.autocompleteMode)\n\n        if (info !== undefined) {\n            let context = this.tribute.current\n            let replaceEvent = new CustomEvent('tribute-replaced', {\n                detail: {\n                    item: item,\n                    instance: context,\n                    context: info,\n                    event: originalEvent,\n                }\n            })\n\n            if (!this.isContentEditable(context.element)) {\n                let myField = this.tribute.current.element\n                let textSuffix = typeof this.tribute.replaceTextSuffix == 'string'\n                    ? this.tribute.replaceTextSuffix\n                    : ' '\n                text += textSuffix\n                let startPos = info.mentionPosition\n                let endPos = info.mentionPosition + info.mentionText.length + textSuffix.length\n                if (!this.tribute.autocompleteMode) {\n                    endPos += info.mentionTriggerChar.length - 1\n                }\n                myField.value = myField.value.substring(0, startPos) + text +\n                    myField.value.substring(endPos, myField.value.length)\n                myField.selectionStart = startPos + text.length\n                myField.selectionEnd = startPos + text.length\n            } else {\n                // add a space to the end of the pasted text\n                let textSuffix = typeof this.tribute.replaceTextSuffix == 'string'\n                    ? this.tribute.replaceTextSuffix\n                    : '\\xA0'\n                text += textSuffix\n                let endPos = info.mentionPosition + info.mentionText.length\n                if (!this.tribute.autocompleteMode) {\n                    endPos += info.mentionTriggerChar.length\n                }\n                this.pasteHtml(text, info.mentionPosition, endPos)\n            }\n\n            context.element.dispatchEvent(new CustomEvent('input', { bubbles: true }))\n            context.element.dispatchEvent(replaceEvent)\n        }\n    }\n\n    pasteHtml(html, startPos, endPos) {\n        let range, sel\n        sel = this.getWindowSelection()\n        range = this.getDocument().createRange()\n        range.setStart(sel.anchorNode, startPos)\n        range.setEnd(sel.anchorNode, endPos)\n        range.deleteContents()\n\n        let el = this.getDocument().createElement('div')\n        el.innerHTML = html\n        let frag = this.getDocument().createDocumentFragment(),\n            node, lastNode\n        while ((node = el.firstChild)) {\n            lastNode = frag.appendChild(node)\n        }\n        range.insertNode(frag)\n\n        // Preserve the selection\n        if (lastNode) {\n            range = range.cloneRange()\n            range.setStartAfter(lastNode)\n            range.collapse(true)\n            sel.removeAllRanges()\n            sel.addRange(range)\n        }\n    }\n\n    getWindowSelection() {\n        if (this.tribute.collection.iframe) {\n            return this.tribute.collection.iframe.contentWindow.getSelection()\n        }\n\n        return window.getSelection()\n    }\n\n    getNodePositionInParent(element) {\n        if (element.parentNode === null) {\n            return 0\n        }\n\n        for (var i = 0; i < element.parentNode.childNodes.length; i++) {\n            let node = element.parentNode.childNodes[i]\n\n            if (node === element) {\n                return i\n            }\n        }\n    }\n\n    getContentEditableSelectedPath(ctx) {\n        let sel = this.getWindowSelection()\n        let selected = sel.anchorNode\n        let path = []\n        let offset\n\n        if (selected != null) {\n            let i\n            let ce = selected.contentEditable\n            while (selected !== null && ce !== 'true') {\n                i = this.getNodePositionInParent(selected)\n                path.push(i)\n                selected = selected.parentNode\n                if (selected !== null) {\n                    ce = selected.contentEditable\n                }\n            }\n            path.reverse()\n\n            // getRangeAt may not exist, need alternative\n            offset = sel.getRangeAt(0).startOffset\n\n            return {\n                selected: selected,\n                path: path,\n                offset: offset\n            }\n        }\n    }\n\n    getTextPrecedingCurrentSelection() {\n        let context = this.tribute.current,\n            text = ''\n\n        if (!this.isContentEditable(context.element)) {\n            let textComponent = this.tribute.current.element;\n            if (textComponent) {\n                let startPos = textComponent.selectionStart\n                if (textComponent.value && startPos >= 0) {\n                    text = textComponent.value.substring(0, startPos)\n                }\n            }\n\n        } else {\n            let selectedElem = this.getWindowSelection().anchorNode\n\n            if (selectedElem != null) {\n                let workingNodeContent = selectedElem.textContent\n                let selectStartOffset = this.getWindowSelection().getRangeAt(0).startOffset\n\n                if (workingNodeContent && selectStartOffset >= 0) {\n                    text = workingNodeContent.substring(0, selectStartOffset)\n                }\n            }\n        }\n\n        return text\n    }\n\n    getLastWordInText(text) {\n        text = text.replace(/\\u00A0/g, ' '); // https://stackoverflow.com/questions/29850407/how-do-i-replace-unicode-character-u00a0-with-a-space-in-javascript\n        let wordsArray = text.split(/\\s+/);\n        let worldsCount = wordsArray.length - 1\n        return wordsArray[worldsCount].trim()\n    }\n\n    getTriggerInfo(menuAlreadyActive, hasTrailingSpace, requireLeadingSpace, allowSpaces, isAutocomplete) {\n        let ctx = this.tribute.current\n        let selected, path, offset\n\n        if (!this.isContentEditable(ctx.element)) {\n            selected = this.tribute.current.element\n        } else {\n            let selectionInfo = this.getContentEditableSelectedPath(ctx)\n\n            if (selectionInfo) {\n                selected = selectionInfo.selected\n                path = selectionInfo.path\n                offset = selectionInfo.offset\n            }\n        }\n\n        let effectiveRange = this.getTextPrecedingCurrentSelection()\n        let lastWordOfEffectiveRange = this.getLastWordInText(effectiveRange)\n\n        if (isAutocomplete) {\n            return {\n                mentionPosition: effectiveRange.length - lastWordOfEffectiveRange.length,\n                mentionText: lastWordOfEffectiveRange,\n                mentionSelectedElement: selected,\n                mentionSelectedPath: path,\n                mentionSelectedOffset: offset\n            }\n        }\n\n        if (effectiveRange !== undefined && effectiveRange !== null) {\n            let mostRecentTriggerCharPos = -1\n            let triggerChar\n\n            this.tribute.collection.forEach(config => {\n                let c = config.trigger\n                let idx = config.requireLeadingSpace ?\n                    this.lastIndexWithLeadingSpace(effectiveRange, c) :\n                    effectiveRange.lastIndexOf(c)\n\n                if (idx > mostRecentTriggerCharPos) {\n                    mostRecentTriggerCharPos = idx\n                    triggerChar = c\n                    requireLeadingSpace = config.requireLeadingSpace\n                }\n            })\n\n            if (mostRecentTriggerCharPos >= 0 &&\n                (\n                    mostRecentTriggerCharPos === 0 ||\n                    !requireLeadingSpace ||\n                    /[\\xA0\\s]/g.test(\n                        effectiveRange.substring(\n                            mostRecentTriggerCharPos - 1,\n                            mostRecentTriggerCharPos)\n                    )\n                )\n            ) {\n                let currentTriggerSnippet = effectiveRange.substring(mostRecentTriggerCharPos + triggerChar.length,\n                    effectiveRange.length)\n\n                triggerChar = effectiveRange.substring(mostRecentTriggerCharPos, mostRecentTriggerCharPos + triggerChar.length)\n                let firstSnippetChar = currentTriggerSnippet.substring(0, 1)\n                let leadingSpace = currentTriggerSnippet.length > 0 &&\n                    (\n                        firstSnippetChar === ' ' ||\n                        firstSnippetChar === '\\xA0'\n                    )\n                if (hasTrailingSpace) {\n                    currentTriggerSnippet = currentTriggerSnippet.trim()\n                }\n\n                let regex = allowSpaces ? /[^\\S ]/g : /[\\xA0\\s]/g;\n\n                this.tribute.hasTrailingSpace = regex.test(currentTriggerSnippet);\n\n                if (!leadingSpace && (menuAlreadyActive || !(regex.test(currentTriggerSnippet)))) {\n                    return {\n                        mentionPosition: mostRecentTriggerCharPos,\n                        mentionText: currentTriggerSnippet,\n                        mentionSelectedElement: selected,\n                        mentionSelectedPath: path,\n                        mentionSelectedOffset: offset,\n                        mentionTriggerChar: triggerChar\n                    }\n                }\n            }\n        }\n    }\n\n    lastIndexWithLeadingSpace (str, trigger) {\n        let reversedStr = str.split('').reverse().join('')\n        let index = -1\n\n        for (let cidx = 0, len = str.length; cidx < len; cidx++) {\n            let firstChar = cidx === str.length - 1\n            let leadingSpace = /\\s/.test(reversedStr[cidx + 1])\n\n            let match = true\n            for (let triggerIdx = trigger.length - 1; triggerIdx >= 0; triggerIdx--) {\n              if (trigger[triggerIdx] !== reversedStr[cidx-triggerIdx]) {\n                match = false\n                break\n              }\n            }\n\n            if (match && (firstChar || leadingSpace)) {\n                index = str.length - 1 - cidx\n                break\n            }\n        }\n\n        return index\n    }\n\n    isContentEditable(element) {\n        return element.nodeName !== 'INPUT' && element.nodeName !== 'TEXTAREA'\n    }\n\n    isMenuOffScreen(coordinates, menuDimensions) {\n        let windowWidth = window.innerWidth\n        let windowHeight = window.innerHeight\n        let doc = document.documentElement\n        let windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0)\n        let windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0)\n\n        let menuTop = typeof coordinates.top === 'number' ? coordinates.top : windowTop + windowHeight - coordinates.bottom - menuDimensions.height\n        let menuRight = typeof coordinates.right === 'number' ? coordinates.right : coordinates.left + menuDimensions.width\n        let menuBottom = typeof coordinates.bottom === 'number' ? coordinates.bottom : coordinates.top + menuDimensions.height\n        let menuLeft = typeof coordinates.left === 'number' ? coordinates.left : windowLeft + windowWidth - coordinates.right - menuDimensions.width\n\n        return {\n            top: menuTop < Math.floor(windowTop),\n            right: menuRight > Math.ceil(windowLeft + windowWidth),\n            bottom: menuBottom > Math.ceil(windowTop + windowHeight),\n            left: menuLeft < Math.floor(windowLeft)\n        }\n    }\n\n    getMenuDimensions() {\n        // Width of the menu depends of its contents and position\n        // We must check what its width would be without any obstruction\n        // This way, we can achieve good positioning for flipping the menu\n        let dimensions = {\n            width: null,\n            height: null\n        }\n\n        this.tribute.menu.style.cssText = `top: 0px;\n                                 left: 0px;\n                                 position: fixed;\n                                 display: block;\n                                 visibility; hidden;`\n       dimensions.width = this.tribute.menu.offsetWidth\n       dimensions.height = this.tribute.menu.offsetHeight\n\n       this.tribute.menu.style.cssText = `display: none;`\n\n       return dimensions\n    }\n\n    getTextAreaOrInputUnderlinePosition(element, position, flipped) {\n        let properties = ['direction', 'boxSizing', 'width', 'height', 'overflowX',\n            'overflowY', 'borderTopWidth', 'borderRightWidth',\n            'borderBottomWidth', 'borderLeftWidth', 'paddingTop',\n            'paddingRight', 'paddingBottom', 'paddingLeft',\n            'fontStyle', 'fontVariant', 'fontWeight', 'fontStretch',\n            'fontSize', 'fontSizeAdjust', 'lineHeight', 'fontFamily',\n            'textAlign', 'textTransform', 'textIndent',\n            'textDecoration', 'letterSpacing', 'wordSpacing'\n        ]\n\n        let isFirefox = (window.mozInnerScreenX !== null)\n\n        let div = this.getDocument().createElement('div')\n        div.id = 'input-textarea-caret-position-mirror-div'\n        this.getDocument().body.appendChild(div)\n\n        let style = div.style\n        let computed = window.getComputedStyle ? getComputedStyle(element) : element.currentStyle\n\n        style.whiteSpace = 'pre-wrap'\n        if (element.nodeName !== 'INPUT') {\n            style.wordWrap = 'break-word'\n        }\n\n        // position off-screen\n        style.position = 'absolute'\n        style.visibility = 'hidden'\n\n        // transfer the element's properties to the div\n        properties.forEach(prop => {\n            style[prop] = computed[prop]\n        })\n\n        if (isFirefox) {\n            style.width = `${(parseInt(computed.width) - 2)}px`\n            if (element.scrollHeight > parseInt(computed.height))\n                style.overflowY = 'scroll'\n        } else {\n            style.overflow = 'hidden'\n        }\n\n        div.textContent = element.value.substring(0, position)\n\n        if (element.nodeName === 'INPUT') {\n            div.textContent = div.textContent.replace(/\\s/g, ' ')\n        }\n\n        let span = this.getDocument().createElement('span')\n        span.textContent = element.value.substring(position) || '.'\n        div.appendChild(span)\n\n        let rect = element.getBoundingClientRect()\n        let doc = document.documentElement\n        let windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0)\n        let windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0)\n\n        let top = 0;\n        let left = 0;\n        if (this.menuContainerIsBody) {\n          top = rect.top;\n          left = rect.left;\n        }\n\n        let coordinates = {\n            top: top + windowTop + span.offsetTop + parseInt(computed.borderTopWidth) + parseInt(computed.fontSize) - element.scrollTop,\n            left: left + windowLeft + span.offsetLeft + parseInt(computed.borderLeftWidth)\n        }\n\n        let windowWidth = window.innerWidth\n        let windowHeight = window.innerHeight\n\n        let menuDimensions = this.getMenuDimensions()\n        let menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions)\n\n        if (menuIsOffScreen.right) {\n            coordinates.right = windowWidth - coordinates.left\n            coordinates.left = 'auto'\n        }\n\n        let parentHeight = this.tribute.menuContainer\n            ? this.tribute.menuContainer.offsetHeight\n            : this.getDocument().body.offsetHeight\n\n        if (menuIsOffScreen.bottom) {\n            let parentRect = this.tribute.menuContainer\n                ? this.tribute.menuContainer.getBoundingClientRect()\n                : this.getDocument().body.getBoundingClientRect()\n            let scrollStillAvailable = parentHeight - (windowHeight - parentRect.top)\n\n            coordinates.bottom = scrollStillAvailable + (windowHeight - rect.top - span.offsetTop)\n            coordinates.top = 'auto'\n        }\n\n        menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions)\n        if (menuIsOffScreen.left) {\n            coordinates.left = windowWidth > menuDimensions.width\n                ? windowLeft + windowWidth - menuDimensions.width\n                : windowLeft\n            delete coordinates.right\n        }\n        if (menuIsOffScreen.top) {\n            coordinates.top = windowHeight > menuDimensions.height\n                ? windowTop + windowHeight - menuDimensions.height\n                : windowTop\n            delete coordinates.bottom\n        }\n\n        this.getDocument().body.removeChild(div)\n        return coordinates\n    }\n\n    getContentEditableCaretPosition(selectedNodePosition) {\n        let range\n        let sel = this.getWindowSelection()\n\n        range = this.getDocument().createRange()\n        range.setStart(sel.anchorNode, selectedNodePosition)\n        range.setEnd(sel.anchorNode, selectedNodePosition)\n\n        range.collapse(false)\n\n        let rect = range.getBoundingClientRect()\n        let doc = document.documentElement\n        let windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0)\n        let windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0)\n\n        let left = rect.left\n        let top = rect.top\n\n        let coordinates = {\n            left: left + windowLeft,\n            top: top + rect.height + windowTop\n        }\n        let windowWidth = window.innerWidth\n        let windowHeight = window.innerHeight\n\n        let menuDimensions = this.getMenuDimensions()\n        let menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions)\n\n        if (menuIsOffScreen.right) {\n            coordinates.left = 'auto'\n            coordinates.right = windowWidth - rect.left - windowLeft\n        }\n\n        let parentHeight = this.tribute.menuContainer\n            ? this.tribute.menuContainer.offsetHeight\n            : this.getDocument().body.offsetHeight\n\n        if (menuIsOffScreen.bottom) {\n            let parentRect = this.tribute.menuContainer\n                ? this.tribute.menuContainer.getBoundingClientRect()\n                : this.getDocument().body.getBoundingClientRect()\n            let scrollStillAvailable = parentHeight - (windowHeight - parentRect.top)\n\n            coordinates.top = 'auto'\n            coordinates.bottom = scrollStillAvailable + (windowHeight - rect.top)\n        }\n\n        menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions)\n        if (menuIsOffScreen.left) {\n            coordinates.left = windowWidth > menuDimensions.width\n                ? windowLeft + windowWidth - menuDimensions.width\n                : windowLeft\n            delete coordinates.right\n        }\n        if (menuIsOffScreen.top) {\n            coordinates.top = windowHeight > menuDimensions.height\n                ? windowTop + windowHeight - menuDimensions.height\n                : windowTop\n            delete coordinates.bottom\n        }\n\n        if (!this.menuContainerIsBody) {\n            coordinates.left = coordinates.left ? coordinates.left - this.tribute.menuContainer.offsetLeft : coordinates.left\n            coordinates.top = coordinates.top ? coordinates.top - this.tribute.menuContainer.offsetTop : coordinates.top\n        }\n\n        return coordinates\n    }\n\n    scrollIntoView(elem) {\n        let reasonableBuffer = 20,\n            clientRect\n        let maxScrollDisplacement = 100\n        let e = this.menu\n\n        if (typeof e === 'undefined') return;\n\n        while (clientRect === undefined || clientRect.height === 0) {\n            clientRect = e.getBoundingClientRect()\n\n            if (clientRect.height === 0) {\n                e = e.childNodes[0]\n                if (e === undefined || !e.getBoundingClientRect) {\n                    return\n                }\n            }\n        }\n\n        let elemTop = clientRect.top\n        let elemBottom = elemTop + clientRect.height\n\n        if (elemTop < 0) {\n            window.scrollTo(0, window.pageYOffset + clientRect.top - reasonableBuffer)\n        } else if (elemBottom > window.innerHeight) {\n            let maxY = window.pageYOffset + clientRect.top - reasonableBuffer\n\n            if (maxY - window.pageYOffset > maxScrollDisplacement) {\n                maxY = window.pageYOffset + maxScrollDisplacement\n            }\n\n            let targetY = window.pageYOffset - (window.innerHeight - elemBottom)\n\n            if (targetY > maxY) {\n                targetY = maxY\n            }\n\n            window.scrollTo(0, targetY)\n        }\n    }\n}\n\n\nexport default TributeRange;\n", "// Thanks to https://github.com/mattyork/fuzzy\nclass TributeSearch {\n    constructor(tribute) {\n        this.tribute = tribute\n        this.tribute.search = this\n    }\n\n    simpleFilter(pattern, array) {\n        return array.filter(string => {\n            return this.test(pattern, string)\n        })\n    }\n\n    test(pattern, string) {\n        return this.match(pattern, string) !== null\n    }\n\n    match(pattern, string, opts) {\n        opts = opts || {}\n        let patternIdx = 0,\n            result = [],\n            len = string.length,\n            totalScore = 0,\n            currScore = 0,\n            pre = opts.pre || '',\n            post = opts.post || '',\n            compareString = opts.caseSensitive && string || string.toLowerCase(),\n            ch, compareChar\n\n        if (opts.skip) {\n            return {rendered: string, score: 0}\n        }\n\n        pattern = opts.caseSensitive && pattern || pattern.toLowerCase()\n\n        let patternCache = this.traverse(compareString, pattern, 0, 0, [])\n        if (!patternCache) {\n            return null\n        }\n        return {\n            rendered: this.render(string, patternCache.cache, pre, post),\n            score: patternCache.score\n        }\n    }\n\n    traverse(string, pattern, stringIndex, patternIndex, patternCache) {\n        // if the pattern search at end\n        if (pattern.length === patternIndex) {\n\n            // calculate score and copy the cache containing the indices where it's found\n            return {\n                score: this.calculateScore(patternCache),\n                cache: patternCache.slice()\n            }\n        }\n\n        // if string at end or remaining pattern > remaining string\n        if (string.length === stringIndex || pattern.length - patternIndex > string.length - stringIndex) {\n            return undefined\n        }\n\n        let c = pattern[patternIndex]\n        let index = string.indexOf(c, stringIndex)\n        let best, temp\n\n        while (index > -1) {\n            patternCache.push(index)\n            temp = this.traverse(string, pattern, index + 1, patternIndex + 1, patternCache)\n            patternCache.pop()\n\n            // if downstream traversal failed, return best answer so far\n            if (!temp) {\n                return best\n            }\n\n            if (!best || best.score < temp.score) {\n                best = temp\n            }\n\n            index = string.indexOf(c, index + 1)\n        }\n\n        return best\n    }\n\n    calculateScore(patternCache) {\n        let score = 0\n        let temp = 1\n\n        patternCache.forEach((index, i) => {\n            if (i > 0) {\n                if (patternCache[i - 1] + 1 === index) {\n                    temp += temp + 1\n                }\n                else {\n                    temp = 1\n                }\n            }\n\n            score += temp\n        })\n\n        return score\n    }\n\n    render(string, indices, pre, post) {\n        var rendered = string.substring(0, indices[0])\n\n        indices.forEach((index, i) => {\n            rendered += pre + string[index] + post +\n                string.substring(index + 1, (indices[i + 1]) ? indices[i + 1] : string.length)\n        })\n\n        return rendered\n    }\n\n    filter(pattern, arr, opts) {\n        opts = opts || {}\n        return arr\n            .reduce((prev, element, idx, arr) => {\n                let str = element\n\n                if (opts.extract) {\n                    str = opts.extract(element)\n\n                    if (!str) { // take care of undefineds / nulls / etc.\n                        str = ''\n                    }\n                }\n\n                let rendered = this.match(pattern, str, opts)\n\n                if (rendered != null) {\n                    prev[prev.length] = {\n                        string: rendered.rendered,\n                        score: rendered.score,\n                        index: idx,\n                        original: element\n                    }\n                }\n\n                return prev\n            }, [])\n\n        .sort((a, b) => {\n            let compare = b.score - a.score\n            if (compare) return compare\n            return a.index - b.index\n        })\n    }\n}\n\nexport default TributeSearch;\n", "import \"./utils\";\nimport TributeEvents from \"./TributeEvents\";\nimport TributeMenuEvents from \"./TributeMenuEvents\";\nimport TributeRange from \"./TributeRange\";\nimport TributeSearch from \"./TributeSearch\";\n\nclass Tribute {\n  constructor({\n    values = null,\n    iframe = null,\n    selectClass = \"highlight\",\n    containerClass = \"tribute-container\",\n    itemClass = \"\",\n    trigger = \"@\",\n    autocompleteMode = false,\n    selectTemplate = null,\n    menuItemTemplate = null,\n    lookup = \"key\",\n    fillAttr = \"value\",\n    collection = null,\n    menuContainer = null,\n    noMatchTemplate = null,\n    requireLeadingSpace = true,\n    allowSpaces = false,\n    replaceTextSuffix = null,\n    positionMenu = true,\n    spaceSelectsMatch = false,\n    searchOpts = {},\n    menuItemLimit = null,\n    menuShowMinLength = 0\n  }) {\n    this.autocompleteMode = autocompleteMode;\n    this.menuSelected = 0;\n    this.current = {};\n    this.inputEvent = false;\n    this.isActive = false;\n    this.menuContainer = menuContainer;\n    this.allowSpaces = allowSpaces;\n    this.replaceTextSuffix = replaceTextSuffix;\n    this.positionMenu = positionMenu;\n    this.hasTrailingSpace = false;\n    this.spaceSelectsMatch = spaceSelectsMatch;\n\n    if (this.autocompleteMode) {\n      trigger = \"\";\n      allowSpaces = false;\n    }\n\n    if (values) {\n      this.collection = [\n        {\n          // symbol that starts the lookup\n          trigger: trigger,\n\n          // is it wrapped in an iframe\n          iframe: iframe,\n\n          // class applied to selected item\n          selectClass: selectClass,\n\n          // class applied to the Container\n          containerClass: containerClass,\n\n          // class applied to each item\n          itemClass: itemClass,\n\n          // function called on select that retuns the content to insert\n          selectTemplate: (\n            selectTemplate || Tribute.defaultSelectTemplate\n          ).bind(this),\n\n          // function called that returns content for an item\n          menuItemTemplate: (\n            menuItemTemplate || Tribute.defaultMenuItemTemplate\n          ).bind(this),\n\n          // function called when menu is empty, disables hiding of menu.\n          noMatchTemplate: (t => {\n            if (typeof t === \"string\") {\n              if (t.trim() === \"\") return null;\n              return t;\n            }\n            if (typeof t === \"function\") {\n              return t.bind(this);\n            }\n\n            return (\n              noMatchTemplate ||\n              function() {\n                return \"<li>No Match Found!</li>\";\n              }.bind(this)\n            );\n          })(noMatchTemplate),\n\n          // column to search against in the object\n          lookup: lookup,\n\n          // column that contains the content to insert by default\n          fillAttr: fillAttr,\n\n          // array of objects or a function returning an array of objects\n          values: values,\n\n          requireLeadingSpace: requireLeadingSpace,\n\n          searchOpts: searchOpts,\n\n          menuItemLimit: menuItemLimit,\n\n          menuShowMinLength: menuShowMinLength\n        }\n      ];\n    } else if (collection) {\n      if (this.autocompleteMode)\n        console.warn(\n          \"Tribute in autocomplete mode does not work for collections\"\n        );\n      this.collection = collection.map(item => {\n        return {\n          trigger: item.trigger || trigger,\n          iframe: item.iframe || iframe,\n          selectClass: item.selectClass || selectClass,\n          containerClass: item.containerClass || containerClass,\n          itemClass: item.itemClass || itemClass,\n          selectTemplate: (\n            item.selectTemplate || Tribute.defaultSelectTemplate\n          ).bind(this),\n          menuItemTemplate: (\n            item.menuItemTemplate || Tribute.defaultMenuItemTemplate\n          ).bind(this),\n          // function called when menu is empty, disables hiding of menu.\n          noMatchTemplate: (t => {\n            if (typeof t === \"string\") {\n              if (t.trim() === \"\") return null;\n              return t;\n            }\n            if (typeof t === \"function\") {\n              return t.bind(this);\n            }\n\n            return (\n              noMatchTemplate ||\n              function() {\n                return \"<li>No Match Found!</li>\";\n              }.bind(this)\n            );\n          })(noMatchTemplate),\n          lookup: item.lookup || lookup,\n          fillAttr: item.fillAttr || fillAttr,\n          values: item.values,\n          requireLeadingSpace: item.requireLeadingSpace,\n          searchOpts: item.searchOpts || searchOpts,\n          menuItemLimit: item.menuItemLimit || menuItemLimit,\n          menuShowMinLength: item.menuShowMinLength || menuShowMinLength\n        };\n      });\n    } else {\n      throw new Error(\"[Tribute] No collection specified.\");\n    }\n\n    new TributeRange(this);\n    new TributeEvents(this);\n    new TributeMenuEvents(this);\n    new TributeSearch(this);\n  }\n\n  get isActive() {\n    return this._isActive;\n  }\n\n  set isActive(val) {\n    if (this._isActive != val) {\n      this._isActive = val;\n      if (this.current.element) {\n        let noMatchEvent = new CustomEvent(`tribute-active-${val}`);\n        this.current.element.dispatchEvent(noMatchEvent);\n      }\n    }\n  }\n\n  static defaultSelectTemplate(item) {\n    if (typeof item === \"undefined\")\n      return `${this.current.collection.trigger}${this.current.mentionText}`;\n    if (this.range.isContentEditable(this.current.element)) {\n      return (\n        '<span class=\"tribute-mention\">' +\n        (this.current.collection.trigger +\n          item.original[this.current.collection.fillAttr]) +\n        \"</span>\"\n      );\n    }\n\n    return (\n      this.current.collection.trigger +\n      item.original[this.current.collection.fillAttr]\n    );\n  }\n\n  static defaultMenuItemTemplate(matchItem) {\n    return matchItem.string;\n  }\n\n  static inputTypes() {\n    return [\"TEXTAREA\", \"INPUT\"];\n  }\n\n  triggers() {\n    return this.collection.map(config => {\n      return config.trigger;\n    });\n  }\n\n  attach(el) {\n    if (!el) {\n      throw new Error(\"[Tribute] Must pass in a DOM node or NodeList.\");\n    }\n\n    // Check if it is a jQuery collection\n    if (typeof jQuery !== \"undefined\" && el instanceof jQuery) {\n      el = el.get();\n    }\n\n    // Is el an Array/Array-like object?\n    if (\n      el.constructor === NodeList ||\n      el.constructor === HTMLCollection ||\n      el.constructor === Array\n    ) {\n      let length = el.length;\n      for (var i = 0; i < length; ++i) {\n        this._attach(el[i]);\n      }\n    } else {\n      this._attach(el);\n    }\n  }\n\n  _attach(el) {\n    if (el.hasAttribute(\"data-tribute\")) {\n      console.warn(\"Tribute was already bound to \" + el.nodeName);\n    }\n\n    this.ensureEditable(el);\n    this.events.bind(el);\n    el.setAttribute(\"data-tribute\", true);\n  }\n\n  ensureEditable(element) {\n    if (Tribute.inputTypes().indexOf(element.nodeName) === -1) {\n      if (element.contentEditable) {\n        element.contentEditable = true;\n      } else {\n        throw new Error(\"[Tribute] Cannot bind to \" + element.nodeName);\n      }\n    }\n  }\n\n  createMenu(containerClass) {\n    let wrapper = this.range.getDocument().createElement(\"div\"),\n      ul = this.range.getDocument().createElement(\"ul\");\n    wrapper.className = containerClass;\n    wrapper.appendChild(ul);\n\n    if (this.menuContainer) {\n      return this.menuContainer.appendChild(wrapper);\n    }\n\n    return this.range.getDocument().body.appendChild(wrapper);\n  }\n\n  showMenuFor(element, scrollTo) {\n    // Only proceed if menu isn't already shown for the current element & mentionText\n    if (\n      this.isActive &&\n      this.current.element === element &&\n      this.current.mentionText === this.currentMentionTextSnapshot\n    ) {\n      return;\n    }\n    this.currentMentionTextSnapshot = this.current.mentionText;\n\n    // create the menu if it doesn't exist.\n    if (!this.menu) {\n      this.menu = this.createMenu(this.current.collection.containerClass);\n      element.tributeMenu = this.menu;\n      this.menuEvents.bind(this.menu);\n    }\n\n    this.isActive = true;\n    this.menuSelected = 0;\n\n    if (!this.current.mentionText) {\n      this.current.mentionText = \"\";\n    }\n\n    const processValues = values => {\n      // Tribute may not be active any more by the time the value callback returns\n      if (!this.isActive) {\n        return;\n      }\n\n      let items = this.search.filter(this.current.mentionText, values, {\n        pre: this.current.collection.searchOpts.pre || \"<span>\",\n        post: this.current.collection.searchOpts.post || \"</span>\",\n        skip: this.current.collection.searchOpts.skip,\n        extract: el => {\n          if (typeof this.current.collection.lookup === \"string\") {\n            return el[this.current.collection.lookup];\n          } else if (typeof this.current.collection.lookup === \"function\") {\n            return this.current.collection.lookup(el, this.current.mentionText);\n          } else {\n            throw new Error(\n              \"Invalid lookup attribute, lookup must be string or function.\"\n            );\n          }\n        }\n      });\n\n      if (this.current.collection.menuItemLimit) {\n        items = items.slice(0, this.current.collection.menuItemLimit);\n      }\n\n      this.current.filteredItems = items;\n\n      let ul = this.menu.querySelector(\"ul\");\n\n      this.range.positionMenuAtCaret(scrollTo);\n\n      if (!items.length) {\n        let noMatchEvent = new CustomEvent(\"tribute-no-match\", {\n          detail: this.menu\n        });\n        this.current.element.dispatchEvent(noMatchEvent);\n        if (\n          (typeof this.current.collection.noMatchTemplate === \"function\" &&\n            !this.current.collection.noMatchTemplate()) ||\n          !this.current.collection.noMatchTemplate\n        ) {\n          this.hideMenu();\n        } else {\n          typeof this.current.collection.noMatchTemplate === \"function\"\n            ? (ul.innerHTML = this.current.collection.noMatchTemplate())\n            : (ul.innerHTML = this.current.collection.noMatchTemplate);\n        }\n\n        return;\n      }\n\n      ul.innerHTML = \"\";\n      let fragment = this.range.getDocument().createDocumentFragment();\n\n      items.forEach((item, index) => {\n        let li = this.range.getDocument().createElement(\"li\");\n        li.setAttribute(\"data-index\", index);\n        li.className = this.current.collection.itemClass;\n        li.addEventListener(\"mousemove\", e => {\n          let [li, index] = this._findLiTarget(e.target);\n          if (e.movementY !== 0) {\n            this.events.setActiveLi(index);\n          }\n        });\n        if (this.menuSelected === index) {\n          li.classList.add(this.current.collection.selectClass);\n        }\n        li.innerHTML = this.current.collection.menuItemTemplate(item);\n        fragment.appendChild(li);\n      });\n      ul.appendChild(fragment);\n    };\n\n    if (typeof this.current.collection.values === \"function\") {\n      this.current.collection.values(this.current.mentionText, processValues);\n    } else {\n      processValues(this.current.collection.values);\n    }\n  }\n\n  _findLiTarget(el) {\n    if (!el) return [];\n    const index = el.getAttribute(\"data-index\");\n    return !index ? this._findLiTarget(el.parentNode) : [el, index];\n  }\n\n  showMenuForCollection(element, collectionIndex) {\n    if (element !== document.activeElement) {\n      this.placeCaretAtEnd(element);\n    }\n\n    this.current.collection = this.collection[collectionIndex || 0];\n    this.current.externalTrigger = true;\n    this.current.element = element;\n\n    if (element.isContentEditable)\n      this.insertTextAtCursor(this.current.collection.trigger);\n    else this.insertAtCaret(element, this.current.collection.trigger);\n\n    this.showMenuFor(element);\n  }\n\n  // TODO: make sure this works for inputs/textareas\n  placeCaretAtEnd(el) {\n    el.focus();\n    if (\n      typeof window.getSelection != \"undefined\" &&\n      typeof document.createRange != \"undefined\"\n    ) {\n      var range = document.createRange();\n      range.selectNodeContents(el);\n      range.collapse(false);\n      var sel = window.getSelection();\n      sel.removeAllRanges();\n      sel.addRange(range);\n    } else if (typeof document.body.createTextRange != \"undefined\") {\n      var textRange = document.body.createTextRange();\n      textRange.moveToElementText(el);\n      textRange.collapse(false);\n      textRange.select();\n    }\n  }\n\n  // for contenteditable\n  insertTextAtCursor(text) {\n    var sel, range, html;\n    sel = window.getSelection();\n    range = sel.getRangeAt(0);\n    range.deleteContents();\n    var textNode = document.createTextNode(text);\n    range.insertNode(textNode);\n    range.selectNodeContents(textNode);\n    range.collapse(false);\n    sel.removeAllRanges();\n    sel.addRange(range);\n  }\n\n  // for regular inputs\n  insertAtCaret(textarea, text) {\n    var scrollPos = textarea.scrollTop;\n    var caretPos = textarea.selectionStart;\n\n    var front = textarea.value.substring(0, caretPos);\n    var back = textarea.value.substring(\n      textarea.selectionEnd,\n      textarea.value.length\n    );\n    textarea.value = front + text + back;\n    caretPos = caretPos + text.length;\n    textarea.selectionStart = caretPos;\n    textarea.selectionEnd = caretPos;\n    textarea.focus();\n    textarea.scrollTop = scrollPos;\n  }\n\n  hideMenu() {\n    if (this.menu) {\n      this.menu.style.cssText = \"display: none;\";\n      this.isActive = false;\n      this.menuSelected = 0;\n      this.current = {};\n    }\n  }\n\n  selectItemAtIndex(index, originalEvent) {\n    index = parseInt(index);\n    if (typeof index !== \"number\" || isNaN(index)) return;\n    let item = this.current.filteredItems[index];\n    let content = this.current.collection.selectTemplate(item);\n    if (content !== null) this.replaceText(content, originalEvent, item);\n  }\n\n  replaceText(content, originalEvent, item) {\n    this.range.replaceTriggerText(content, true, true, originalEvent, item);\n  }\n\n  _append(collection, newValues, replace) {\n    if (typeof collection.values === \"function\") {\n      throw new Error(\"Unable to append to values, as it is a function.\");\n    } else if (!replace) {\n      collection.values = collection.values.concat(newValues);\n    } else {\n      collection.values = newValues;\n    }\n  }\n\n  append(collectionIndex, newValues, replace) {\n    let index = parseInt(collectionIndex);\n    if (typeof index !== \"number\")\n      throw new Error(\"please provide an index for the collection to update.\");\n\n    let collection = this.collection[index];\n\n    this._append(collection, newValues, replace);\n  }\n\n  appendCurrent(newValues, replace) {\n    if (this.isActive) {\n      this._append(this.current.collection, newValues, replace);\n    } else {\n      throw new Error(\n        \"No active state. Please use append instead and pass an index.\"\n      );\n    }\n  }\n\n  detach(el) {\n    if (!el) {\n      throw new Error(\"[Tribute] Must pass in a DOM node or NodeList.\");\n    }\n\n    // Check if it is a jQuery collection\n    if (typeof jQuery !== \"undefined\" && el instanceof jQuery) {\n      el = el.get();\n    }\n\n    // Is el an Array/Array-like object?\n    if (\n      el.constructor === NodeList ||\n      el.constructor === HTMLCollection ||\n      el.constructor === Array\n    ) {\n      let length = el.length;\n      for (var i = 0; i < length; ++i) {\n        this._detach(el[i]);\n      }\n    } else {\n      this._detach(el);\n    }\n  }\n\n  _detach(el) {\n    this.events.unbind(el);\n    if (el.tributeMenu) {\n      this.menuEvents.unbind(el.tributeMenu);\n    }\n\n    setTimeout(() => {\n      el.removeAttribute(\"data-tribute\");\n      this.isActive = false;\n      if (el.tributeMenu) {\n        el.tributeMenu.remove();\n      }\n    });\n  }\n}\n\nexport default Tribute;\n", "/**\n * MicroEvent - to make any js object an event emitter\n *\n * - pure javascript - server compatible, browser compatible\n * - dont rely on the browser doms\n * - super simple - you get it immediatly, no mistery, no magic involved\n *\n * @author Jerome Etienne (https://github.com/jeromeetienne)\n */\n\ntype TCallback = (...args:any) => any;\n\n/**\n * Execute callback for each event in space separated list of event names\n *\n */\nfunction forEvents(events:string,callback:(event:string)=>any){\n\tevents.split(/\\s+/).forEach((event) =>{\n\t\tcallback(event);\n\t});\n}\n\nexport default class MicroEvent{\n\n\tpublic _events: {[key:string]:TCallback[]};\n\n\tconstructor(){\n\t\tthis._events = {};\n\t}\n\n\ton(events:string, fct:TCallback){\n\t\tforEvents(events,(event) => {\n\t\t\tconst event_array = this._events[event] || [];\n\t\t\tevent_array.push(fct);\n\t\t\tthis._events[event] = event_array;\n\t\t});\n\t}\n\n\toff(events:string, fct:TCallback){\n\t\tvar n = arguments.length;\n\t\tif( n === 0 ){\n\t\t\tthis._events = {};\n\t\t\treturn;\n\t\t}\n\n\t\tforEvents(events,(event) => {\n\n\t\t\tif (n === 1){\n\t\t\t\tdelete this._events[event];\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst event_array = this._events[event];\n\t\t\tif( event_array === undefined ) return;\n\n\t\t\tevent_array.splice(event_array.indexOf(fct), 1);\n\t\t\tthis._events[event] = event_array;\n\t\t});\n\t}\n\n\ttrigger(events:string, ...args:any){\n\t\tvar self = this;\n\n\t\tforEvents(events,(event) => {\n\t\t\tconst event_array = self._events[event];\n\t\t\tif( event_array === undefined ) return;\n\t\t\tevent_array.forEach(fct => {\n\t\t\t\tfct.apply(self, args );\n\t\t\t});\n\n\t\t});\n\t}\n};\n", "/**\n * microplugin.js\n * Copyright (c) 2013 Brian Reavis & contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n * @author Brian Reavis <brian@thirdroute.com>\n */\n\ntype TSettings = {\n\t[key:string]:any\n}\n\ntype TPlugins = {\n\tnames: string[],\n\tsettings: TSettings,\n\trequested: {[key:string]:boolean},\n\tloaded: {[key:string]:any}\n};\n\nexport type TPluginItem = {name:string,options:{}};\nexport type TPluginHash = {[key:string]:{}};\n\n\n\n\nexport default function MicroPlugin(Interface: any ){\n\n\tInterface.plugins = {};\n\n\treturn class extends Interface{\n\n\t\tpublic plugins:TPlugins = {\n\t\t\tnames     : [],\n\t\t\tsettings  : {},\n\t\t\trequested : {},\n\t\t\tloaded    : {}\n\t\t};\n\n\t\t/**\n\t\t * Registers a plugin.\n\t\t *\n\t\t * @param {function} fn\n\t\t */\n\t\tstatic define(name:string, fn:(this:any,settings:TSettings)=>any){\n\t\t\tInterface.plugins[name] = {\n\t\t\t\t'name' : name,\n\t\t\t\t'fn'   : fn\n\t\t\t};\n\t\t}\n\n\n\t\t/**\n\t\t * Initializes the listed plugins (with options).\n\t\t * Acceptable formats:\n\t\t *\n\t\t * List (without options):\n\t\t *   ['a', 'b', 'c']\n\t\t *\n\t\t * List (with options):\n\t\t *   [{'name': 'a', options: {}}, {'name': 'b', options: {}}]\n\t\t *\n\t\t * Hash (with options):\n\t\t *   {'a': { ... }, 'b': { ... }, 'c': { ... }}\n\t\t *\n\t\t * @param {array|object} plugins\n\t\t */\n\t\tinitializePlugins(plugins:string[]|TPluginItem[]|TPluginHash) {\n\t\t\tvar key, name;\n\t\t\tconst self  = this;\n\t\t\tconst queue:string[] = [];\n\n\t\t\tif (Array.isArray(plugins)) {\n\t\t\t\tplugins.forEach((plugin:string|TPluginItem)=>{\n\t\t\t\t\tif (typeof plugin === 'string') {\n\t\t\t\t\t\tqueue.push(plugin);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.plugins.settings[plugin.name] = plugin.options;\n\t\t\t\t\t\tqueue.push(plugin.name);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else if (plugins) {\n\t\t\t\tfor (key in plugins) {\n\t\t\t\t\tif (plugins.hasOwnProperty(key)) {\n\t\t\t\t\t\tself.plugins.settings[key] = plugins[key];\n\t\t\t\t\t\tqueue.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\twhile( name = queue.shift() ){\n\t\t\t\tself.require(name);\n\t\t\t}\n\t\t}\n\n\t\tloadPlugin(name:string) {\n\t\t\tvar self    = this;\n\t\t\tvar plugins = self.plugins;\n\t\t\tvar plugin  = Interface.plugins[name];\n\n\t\t\tif (!Interface.plugins.hasOwnProperty(name)) {\n\t\t\t\tthrow new Error('Unable to find \"' +  name + '\" plugin');\n\t\t\t}\n\n\t\t\tplugins.requested[name] = true;\n\t\t\tplugins.loaded[name] = plugin.fn.apply(self, [self.plugins.settings[name] || {}]);\n\t\t\tplugins.names.push(name);\n\t\t}\n\n\t\t/**\n\t\t * Initializes a plugin.\n\t\t *\n\t\t */\n\t\trequire(name:string) {\n\t\t\tvar self = this;\n\t\t\tvar plugins = self.plugins;\n\n\t\t\tif (!self.plugins.loaded.hasOwnProperty(name)) {\n\t\t\t\tif (plugins.requested[name]) {\n\t\t\t\t\tthrow new Error('Plugin has circular dependency (\"' + name + '\")');\n\t\t\t\t}\n\t\t\t\tself.loadPlugin(name);\n\t\t\t}\n\n\t\t\treturn plugins.loaded[name];\n\t\t}\n\n\t};\n\n}\n", "/*! @orchidjs/unicode-variants | https://github.com/orchidjs/unicode-variants | Apache License (v2) */\n/**\n * Convert array of strings to a regular expression\n *\tex ['ab','a'] => (?:ab|a)\n * \tex ['a','b'] => [ab]\n * @param {string[]} chars\n * @return {string}\n */\nconst arrayToPattern = chars => {\n  chars = chars.filter(Boolean);\n\n  if (chars.length < 2) {\n    return chars[0] || '';\n  }\n\n  return maxValueLength(chars) == 1 ? '[' + chars.join('') + ']' : '(?:' + chars.join('|') + ')';\n};\n/**\n * @param {string[]} array\n * @return {string}\n */\n\nconst sequencePattern = array => {\n  if (!hasDuplicates(array)) {\n    return array.join('');\n  }\n\n  let pattern = '';\n  let prev_char_count = 0;\n\n  const prev_pattern = () => {\n    if (prev_char_count > 1) {\n      pattern += '{' + prev_char_count + '}';\n    }\n  };\n\n  array.forEach((char, i) => {\n    if (char === array[i - 1]) {\n      prev_char_count++;\n      return;\n    }\n\n    prev_pattern();\n    pattern += char;\n    prev_char_count = 1;\n  });\n  prev_pattern();\n  return pattern;\n};\n/**\n * Convert array of strings to a regular expression\n *\tex ['ab','a'] => (?:ab|a)\n * \tex ['a','b'] => [ab]\n * @param {Set<string>} chars\n * @return {string}\n */\n\nconst setToPattern = chars => {\n  let array = toArray(chars);\n  return arrayToPattern(array);\n};\n/**\n *\n * https://stackoverflow.com/questions/7376598/in-javascript-how-do-i-check-if-an-array-has-duplicate-values\n * @param {any[]} array\n */\n\nconst hasDuplicates = array => {\n  return new Set(array).size !== array.length;\n};\n/**\n * https://stackoverflow.com/questions/63006601/why-does-u-throw-an-invalid-escape-error\n * @param {string} str\n * @return {string}\n */\n\nconst escape_regex = str => {\n  return (str + '').replace(/([\\$\\(\\)\\*\\+\\.\\?\\[\\]\\^\\{\\|\\}\\\\])/gu, '\\\\$1');\n};\n/**\n * Return the max length of array values\n * @param {string[]} array\n *\n */\n\nconst maxValueLength = array => {\n  return array.reduce((longest, value) => Math.max(longest, unicodeLength(value)), 0);\n};\n/**\n * @param {string} str\n */\n\nconst unicodeLength = str => {\n  return toArray(str).length;\n};\n/**\n * @param {any} p\n * @return {any[]}\n */\n\nconst toArray = p => Array.from(p);\n\nexport { arrayToPattern, escape_regex, hasDuplicates, maxValueLength, sequencePattern, setToPattern, toArray, unicodeLength };\n//# sourceMappingURL=regex.js.map\n", "/*! @orchidjs/unicode-variants | https://github.com/orchidjs/unicode-variants | Apache License (v2) */\n/**\n * Get all possible combinations of substrings that add up to the given string\n * https://stackoverflow.com/questions/30169587/find-all-the-combination-of-substrings-that-add-up-to-the-given-string\n * @param {string} input\n * @return {string[][]}\n */\nconst allSubstrings = input => {\n  if (input.length === 1) return [[input]];\n  /** @type {string[][]} */\n\n  let result = [];\n  const start = input.substring(1);\n  const suba = allSubstrings(start);\n  suba.forEach(function (subresult) {\n    let tmp = subresult.slice(0);\n    tmp[0] = input.charAt(0) + tmp[0];\n    result.push(tmp);\n    tmp = subresult.slice(0);\n    tmp.unshift(input.charAt(0));\n    result.push(tmp);\n  });\n  return result;\n};\n\nexport { allSubstrings };\n//# sourceMappingURL=strings.js.map\n", "/*! @orchidjs/unicode-variants | https://github.com/orchidjs/unicode-variants | Apache License (v2) */\nimport { toArray, setToPattern, escape_regex, arrayToPattern, sequencePattern } from './regex.js';\nexport { escape_regex } from './regex.js';\nimport { allSubstrings } from './strings.js';\n\n/**\n * @typedef {{[key:string]:string}} TUnicodeMap\n * @typedef {{[key:string]:Set<string>}} TUnicodeSets\n * @typedef {[[number,number]]} TCodePoints\n * @typedef {{folded:string,composed:string,code_point:number}} TCodePointObj\n * @typedef {{start:number,end:number,length:number,substr:string}} TSequencePart\n */\n/** @type {TCodePoints} */\n\nconst code_points = [[0, 65535]];\nconst accent_pat = '[\\u0300-\\u036F\\u{b7}\\u{2be}\\u{2bc}]';\n/** @type {TUnicodeMap} */\n\nlet unicode_map;\n/** @type {RegExp} */\n\nlet multi_char_reg;\nconst max_char_length = 3;\n/** @type {TUnicodeMap} */\n\nconst latin_convert = {};\n/** @type {TUnicodeMap} */\n\nconst latin_condensed = {\n  '/': '⁄∕',\n  '0': '߀',\n  \"a\": \"ⱥɐɑ\",\n  \"aa\": \"ꜳ\",\n  \"ae\": \"æǽǣ\",\n  \"ao\": \"ꜵ\",\n  \"au\": \"ꜷ\",\n  \"av\": \"ꜹꜻ\",\n  \"ay\": \"ꜽ\",\n  \"b\": \"ƀɓƃ\",\n  \"c\": \"ꜿƈȼↄ\",\n  \"d\": \"đɗɖᴅƌꮷԁɦ\",\n  \"e\": \"ɛǝᴇɇ\",\n  \"f\": \"ꝼƒ\",\n  \"g\": \"ǥɠꞡᵹꝿɢ\",\n  \"h\": \"ħⱨⱶɥ\",\n  \"i\": \"ɨı\",\n  \"j\": \"ɉȷ\",\n  \"k\": \"ƙⱪꝁꝃꝅꞣ\",\n  \"l\": \"łƚɫⱡꝉꝇꞁɭ\",\n  \"m\": \"ɱɯϻ\",\n  \"n\": \"ꞥƞɲꞑᴎлԉ\",\n  \"o\": \"øǿɔɵꝋꝍᴑ\",\n  \"oe\": \"œ\",\n  \"oi\": \"ƣ\",\n  \"oo\": \"ꝏ\",\n  \"ou\": \"ȣ\",\n  \"p\": \"ƥᵽꝑꝓꝕρ\",\n  \"q\": \"ꝗꝙɋ\",\n  \"r\": \"ɍɽꝛꞧꞃ\",\n  \"s\": \"ßȿꞩꞅʂ\",\n  \"t\": \"ŧƭʈⱦꞇ\",\n  \"th\": \"þ\",\n  \"tz\": \"ꜩ\",\n  \"u\": \"ʉ\",\n  \"v\": \"ʋꝟʌ\",\n  \"vy\": \"ꝡ\",\n  \"w\": \"ⱳ\",\n  \"y\": \"ƴɏỿ\",\n  \"z\": \"ƶȥɀⱬꝣ\",\n  \"hv\": \"ƕ\"\n};\n\nfor (let latin in latin_condensed) {\n  let unicode = latin_condensed[latin] || '';\n\n  for (let i = 0; i < unicode.length; i++) {\n    let char = unicode.substring(i, i + 1);\n    latin_convert[char] = latin;\n  }\n}\n\nconst convert_pat = new RegExp(Object.keys(latin_convert).join('|') + '|' + accent_pat, 'gu');\n/**\n * Initialize the unicode_map from the give code point ranges\n *\n * @param {TCodePoints=} _code_points\n */\n\nconst initialize = _code_points => {\n  if (unicode_map !== undefined) return;\n  unicode_map = generateMap(_code_points || code_points);\n};\n/**\n * Helper method for normalize a string\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize\n * @param {string} str\n * @param {string} form\n */\n\nconst normalize = (str, form = 'NFKD') => str.normalize(form);\n/**\n * Remove accents without reordering string\n * calling str.normalize('NFKD') on \\u{594}\\u{595}\\u{596} becomes \\u{596}\\u{594}\\u{595}\n * via https://github.com/krisk/Fuse/issues/133#issuecomment-318692703\n * @param {string} str\n * @return {string}\n */\n\nconst asciifold = str => {\n  return toArray(str).reduce(\n  /**\n   * @param {string} result\n   * @param {string} char\n   */\n  (result, char) => {\n    return result + _asciifold(char);\n  }, '');\n};\n/**\n * @param {string} str\n * @return {string}\n */\n\nconst _asciifold = str => {\n  str = normalize(str).toLowerCase().replace(convert_pat, (\n  /** @type {string} */\n  char) => {\n    return latin_convert[char] || '';\n  }); //return str;\n\n  return normalize(str, 'NFC');\n};\n/**\n * Generate a list of unicode variants from the list of code points\n * @param {TCodePoints} code_points\n * @yield {TCodePointObj}\n */\n\nfunction* generator(code_points) {\n  for (const [code_point_min, code_point_max] of code_points) {\n    for (let i = code_point_min; i <= code_point_max; i++) {\n      let composed = String.fromCharCode(i);\n      let folded = asciifold(composed);\n\n      if (folded == composed.toLowerCase()) {\n        continue;\n      } // skip when folded is a string longer than 3 characters long\n      // bc the resulting regex patterns will be long\n      // eg:\n      // folded صلى الله عليه وسلم length 18 code point 65018\n      // folded جل جلاله length 8 code point 65019\n\n\n      if (folded.length > max_char_length) {\n        continue;\n      }\n\n      if (folded.length == 0) {\n        continue;\n      }\n\n      yield {\n        folded: folded,\n        composed: composed,\n        code_point: i\n      };\n    }\n  }\n}\n/**\n * Generate a unicode map from the list of code points\n * @param {TCodePoints} code_points\n * @return {TUnicodeSets}\n */\n\nconst generateSets = code_points => {\n  /** @type {{[key:string]:Set<string>}} */\n  const unicode_sets = {};\n  /**\n   * @param {string} folded\n   * @param {string} to_add\n   */\n\n  const addMatching = (folded, to_add) => {\n    /** @type {Set<string>} */\n    const folded_set = unicode_sets[folded] || new Set();\n    const patt = new RegExp('^' + setToPattern(folded_set) + '$', 'iu');\n\n    if (to_add.match(patt)) {\n      return;\n    }\n\n    folded_set.add(escape_regex(to_add));\n    unicode_sets[folded] = folded_set;\n  };\n\n  for (let value of generator(code_points)) {\n    addMatching(value.folded, value.folded);\n    addMatching(value.folded, value.composed);\n  }\n\n  return unicode_sets;\n};\n/**\n * Generate a unicode map from the list of code points\n * ae => (?:(?:ae|Æ|Ǽ|Ǣ)|(?:A|Ⓐ|Ａ...)(?:E|ɛ|Ⓔ...))\n *\n * @param {TCodePoints} code_points\n * @return {TUnicodeMap}\n */\n\nconst generateMap = code_points => {\n  /** @type {TUnicodeSets} */\n  const unicode_sets = generateSets(code_points);\n  /** @type {TUnicodeMap} */\n\n  const unicode_map = {};\n  /** @type {string[]} */\n\n  let multi_char = [];\n\n  for (let folded in unicode_sets) {\n    let set = unicode_sets[folded];\n\n    if (set) {\n      unicode_map[folded] = setToPattern(set);\n    }\n\n    if (folded.length > 1) {\n      multi_char.push(escape_regex(folded));\n    }\n  }\n\n  multi_char.sort((a, b) => b.length - a.length);\n  const multi_char_patt = arrayToPattern(multi_char);\n  multi_char_reg = new RegExp('^' + multi_char_patt, 'u');\n  return unicode_map;\n};\n/**\n * Map each element of an array from it's folded value to all possible unicode matches\n * @param {string[]} strings\n * @param {number} min_replacement\n * @return {string}\n */\n\nconst mapSequence = (strings, min_replacement = 1) => {\n  let chars_replaced = 0;\n  strings = strings.map(str => {\n    if (unicode_map[str]) {\n      chars_replaced += str.length;\n    }\n\n    return unicode_map[str] || str;\n  });\n\n  if (chars_replaced >= min_replacement) {\n    return sequencePattern(strings);\n  }\n\n  return '';\n};\n/**\n * Convert a short string and split it into all possible patterns\n * Keep a pattern only if min_replacement is met\n *\n * 'abc'\n * \t\t=> [['abc'],['ab','c'],['a','bc'],['a','b','c']]\n *\t\t=> ['abc-pattern','ab-c-pattern'...]\n *\n *\n * @param {string} str\n * @param {number} min_replacement\n * @return {string}\n */\n\nconst substringsToPattern = (str, min_replacement = 1) => {\n  min_replacement = Math.max(min_replacement, str.length - 1);\n  return arrayToPattern(allSubstrings(str).map(sub_pat => {\n    return mapSequence(sub_pat, min_replacement);\n  }));\n};\n/**\n * Convert an array of sequences into a pattern\n * [{start:0,end:3,length:3,substr:'iii'}...] => (?:iii...)\n *\n * @param {Sequence[]} sequences\n * @param {boolean} all\n */\n\nconst sequencesToPattern = (sequences, all = true) => {\n  let min_replacement = sequences.length > 1 ? 1 : 0;\n  return arrayToPattern(sequences.map(sequence => {\n    let seq = [];\n    const len = all ? sequence.length() : sequence.length() - 1;\n\n    for (let j = 0; j < len; j++) {\n      seq.push(substringsToPattern(sequence.substrs[j] || '', min_replacement));\n    }\n\n    return sequencePattern(seq);\n  }));\n};\n/**\n * Return true if the sequence is already in the sequences\n * @param {Sequence} needle_seq\n * @param {Sequence[]} sequences\n */\n\n\nconst inSequences = (needle_seq, sequences) => {\n  for (const seq of sequences) {\n    if (seq.start != needle_seq.start || seq.end != needle_seq.end) {\n      continue;\n    }\n\n    if (seq.substrs.join('') !== needle_seq.substrs.join('')) {\n      continue;\n    }\n\n    let needle_parts = needle_seq.parts;\n    /**\n     * @param {TSequencePart} part\n     */\n\n    const filter = part => {\n      for (const needle_part of needle_parts) {\n        if (needle_part.start === part.start && needle_part.substr === part.substr) {\n          return false;\n        }\n\n        if (part.length == 1 || needle_part.length == 1) {\n          continue;\n        } // check for overlapping parts\n        // a = ['::=','==']\n        // b = ['::','===']\n        // a = ['r','sm']\n        // b = ['rs','m']\n\n\n        if (part.start < needle_part.start && part.end > needle_part.start) {\n          return true;\n        }\n\n        if (needle_part.start < part.start && needle_part.end > part.start) {\n          return true;\n        }\n      }\n\n      return false;\n    };\n\n    let filtered = seq.parts.filter(filter);\n\n    if (filtered.length > 0) {\n      continue;\n    }\n\n    return true;\n  }\n\n  return false;\n};\n\nclass Sequence {\n  constructor() {\n    /** @type {TSequencePart[]} */\n    this.parts = [];\n    /** @type {string[]} */\n\n    this.substrs = [];\n    this.start = 0;\n    this.end = 0;\n  }\n  /**\n   * @param {TSequencePart|undefined} part\n   */\n\n\n  add(part) {\n    if (part) {\n      this.parts.push(part);\n      this.substrs.push(part.substr);\n      this.start = Math.min(part.start, this.start);\n      this.end = Math.max(part.end, this.end);\n    }\n  }\n\n  last() {\n    return this.parts[this.parts.length - 1];\n  }\n\n  length() {\n    return this.parts.length;\n  }\n  /**\n   * @param {number} position\n   * @param {TSequencePart} last_piece\n   */\n\n\n  clone(position, last_piece) {\n    let clone = new Sequence();\n    let parts = JSON.parse(JSON.stringify(this.parts));\n    let last_part = parts.pop();\n\n    for (const part of parts) {\n      clone.add(part);\n    }\n\n    let last_substr = last_piece.substr.substring(0, position - last_part.start);\n    let clone_last_len = last_substr.length;\n    clone.add({\n      start: last_part.start,\n      end: last_part.start + clone_last_len,\n      length: clone_last_len,\n      substr: last_substr\n    });\n    return clone;\n  }\n\n}\n/**\n * Expand a regular expression pattern to include unicode variants\n * \teg /a/ becomes /aⓐａẚàáâầấẫẩãāăằắẵẳȧǡäǟảåǻǎȁȃạậặḁąⱥɐɑAⒶＡÀÁÂẦẤẪẨÃĀĂẰẮẴẲȦǠÄǞẢÅǺǍȀȂẠẬẶḀĄȺⱯ/\n *\n * Issue:\n *  ﺊﺋ [ 'ﺊ = \\\\u{fe8a}', 'ﺋ = \\\\u{fe8b}' ]\n *\tbecomes:\tئئ [ 'ي = \\\\u{64a}', 'ٔ = \\\\u{654}', 'ي = \\\\u{64a}', 'ٔ = \\\\u{654}' ]\n *\n *\tİĲ = IIJ = ⅡJ\n *\n * \t1/2/4\n *\n * @param {string} str\n * @return {string|undefined}\n */\n\n\nconst getPattern = str => {\n  initialize();\n  str = asciifold(str);\n  let pattern = '';\n  let sequences = [new Sequence()];\n\n  for (let i = 0; i < str.length; i++) {\n    let substr = str.substring(i);\n    let match = substr.match(multi_char_reg);\n    const char = str.substring(i, i + 1);\n    const match_str = match ? match[0] : null; // loop through sequences\n    // add either the char or multi_match\n\n    let overlapping = [];\n    let added_types = new Set();\n\n    for (const sequence of sequences) {\n      const last_piece = sequence.last();\n\n      if (!last_piece || last_piece.length == 1 || last_piece.end <= i) {\n        // if we have a multi match\n        if (match_str) {\n          const len = match_str.length;\n          sequence.add({\n            start: i,\n            end: i + len,\n            length: len,\n            substr: match_str\n          });\n          added_types.add('1');\n        } else {\n          sequence.add({\n            start: i,\n            end: i + 1,\n            length: 1,\n            substr: char\n          });\n          added_types.add('2');\n        }\n      } else if (match_str) {\n        let clone = sequence.clone(i, last_piece);\n        const len = match_str.length;\n        clone.add({\n          start: i,\n          end: i + len,\n          length: len,\n          substr: match_str\n        });\n        overlapping.push(clone);\n      } else {\n        // don't add char\n        // adding would create invalid patterns: 234 => [2,34,4]\n        added_types.add('3');\n      }\n    } // if we have overlapping\n\n\n    if (overlapping.length > 0) {\n      // ['ii','iii'] before ['i','i','iii']\n      overlapping = overlapping.sort((a, b) => {\n        return a.length() - b.length();\n      });\n\n      for (let clone of overlapping) {\n        // don't add if we already have an equivalent sequence\n        if (inSequences(clone, sequences)) {\n          continue;\n        }\n\n        sequences.push(clone);\n      }\n\n      continue;\n    } // if we haven't done anything unique\n    // clean up the patterns\n    // helps keep patterns smaller\n    // if str = 'r₨㎧aarss', pattern will be 446 instead of 655\n\n\n    if (i > 0 && added_types.size == 1 && !added_types.has('3')) {\n      pattern += sequencesToPattern(sequences, false);\n      let new_seq = new Sequence();\n      const old_seq = sequences[0];\n\n      if (old_seq) {\n        new_seq.add(old_seq.last());\n      }\n\n      sequences = [new_seq];\n    }\n  }\n\n  pattern += sequencesToPattern(sequences, true);\n  return pattern;\n};\n\nexport { _asciifold, asciifold, code_points, generateMap, generateSets, generator, getPattern, initialize, mapSequence, normalize, substringsToPattern, unicode_map };\n//# sourceMappingURL=index.js.map\n", "/*! sifter.js | https://github.com/orchidjs/sifter.js | Apache License (v2) */\nimport { asciifold } from '@orchidjs/unicode-variants';\n\n/**\n * A property getter resolving dot-notation\n * @param  {Object}  obj     The root object to fetch property on\n * @param  {String}  name    The optionally dotted property name to fetch\n * @return {Object}          The resolved property value\n */\nconst getAttr = (obj, name) => {\n  if (!obj) return;\n  return obj[name];\n};\n/**\n * A property getter resolving dot-notation\n * @param  {Object}  obj     The root object to fetch property on\n * @param  {String}  name    The optionally dotted property name to fetch\n * @return {Object}          The resolved property value\n */\n\nconst getAttrNesting = (obj, name) => {\n  if (!obj) return;\n  var part,\n      names = name.split(\".\");\n\n  while ((part = names.shift()) && (obj = obj[part]));\n\n  return obj;\n};\n/**\n * Calculates how close of a match the\n * given value is against a search token.\n *\n */\n\nconst scoreValue = (value, token, weight) => {\n  var score, pos;\n  if (!value) return 0;\n  value = value + '';\n  if (token.regex == null) return 0;\n  pos = value.search(token.regex);\n  if (pos === -1) return 0;\n  score = token.string.length / value.length;\n  if (pos === 0) score += 0.5;\n  return score * weight;\n};\n/**\n * Cast object property to an array if it exists and has a value\n *\n */\n\nconst propToArray = (obj, key) => {\n  var value = obj[key];\n  if (typeof value == 'function') return value;\n\n  if (value && !Array.isArray(value)) {\n    obj[key] = [value];\n  }\n};\n/**\n * Iterates over arrays and hashes.\n *\n * ```\n * iterate(this.items, function(item, id) {\n *    // invoked for each item\n * });\n * ```\n *\n */\n\nconst iterate = (object, callback) => {\n  if (Array.isArray(object)) {\n    object.forEach(callback);\n  } else {\n    for (var key in object) {\n      if (object.hasOwnProperty(key)) {\n        callback(object[key], key);\n      }\n    }\n  }\n};\nconst cmp = (a, b) => {\n  if (typeof a === 'number' && typeof b === 'number') {\n    return a > b ? 1 : a < b ? -1 : 0;\n  }\n\n  a = asciifold(a + '').toLowerCase();\n  b = asciifold(b + '').toLowerCase();\n  if (a > b) return 1;\n  if (b > a) return -1;\n  return 0;\n};\n\nexport { cmp, getAttr, getAttrNesting, iterate, propToArray, scoreValue };\n//# sourceMappingURL=utils.js.map\n", "/*! sifter.js | https://github.com/orchidjs/sifter.js | Apache License (v2) */\nimport { iterate, cmp, propToArray, getAttrNesting, getAttr, scoreValue } from './utils.js';\nexport { cmp, getAttr, getAttrNesting, iterate, propToArray, scoreValue } from './utils.js';\nimport { escape_regex, getPattern } from '@orchidjs/unicode-variants';\nexport { getPattern } from '@orchidjs/unicode-variants';\n\n/**\n * sifter.js\n * Copyright (c) 2013–2020 Brian Reavis & contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n * @author Brian Reavis <brian@thirdroute.com>\n */\n\nclass Sifter {\n  // []|{};\n\n  /**\n   * Textually searches arrays and hashes of objects\n   * by property (or multiple properties). Designed\n   * specifically for autocomplete.\n   *\n   */\n  constructor(items, settings) {\n    this.items = void 0;\n    this.settings = void 0;\n    this.items = items;\n    this.settings = settings || {\n      diacritics: true\n    };\n  }\n\n  /**\n   * Splits a search string into an array of individual\n   * regexps to be used to match results.\n   *\n   */\n  tokenize(query, respect_word_boundaries, weights) {\n    if (!query || !query.length) return [];\n    const tokens = [];\n    const words = query.split(/\\s+/);\n    var field_regex;\n\n    if (weights) {\n      field_regex = new RegExp('^(' + Object.keys(weights).map(escape_regex).join('|') + ')\\:(.*)$');\n    }\n\n    words.forEach(word => {\n      let field_match;\n      let field = null;\n      let regex = null; // look for \"field:query\" tokens\n\n      if (field_regex && (field_match = word.match(field_regex))) {\n        field = field_match[1];\n        word = field_match[2];\n      }\n\n      if (word.length > 0) {\n        if (this.settings.diacritics) {\n          regex = getPattern(word) || null;\n        } else {\n          regex = escape_regex(word);\n        }\n\n        if (regex && respect_word_boundaries) regex = \"\\\\b\" + regex;\n      }\n\n      tokens.push({\n        string: word,\n        regex: regex ? new RegExp(regex, 'iu') : null,\n        field: field\n      });\n    });\n    return tokens;\n  }\n\n  /**\n   * Returns a function to be used to score individual results.\n   *\n   * Good matches will have a higher score than poor matches.\n   * If an item is not a match, 0 will be returned by the function.\n   *\n   * @returns {T.ScoreFn}\n   */\n  getScoreFunction(query, options) {\n    var search = this.prepareSearch(query, options);\n    return this._getScoreFunction(search);\n  }\n  /**\n   * @returns {T.ScoreFn}\n   *\n   */\n\n\n  _getScoreFunction(search) {\n    const tokens = search.tokens,\n          token_count = tokens.length;\n\n    if (!token_count) {\n      return function () {\n        return 0;\n      };\n    }\n\n    const fields = search.options.fields,\n          weights = search.weights,\n          field_count = fields.length,\n          getAttrFn = search.getAttrFn;\n\n    if (!field_count) {\n      return function () {\n        return 1;\n      };\n    }\n    /**\n     * Calculates the score of an object\n     * against the search query.\n     *\n     */\n\n\n    const scoreObject = function () {\n      if (field_count === 1) {\n        return function (token, data) {\n          const field = fields[0].field;\n          return scoreValue(getAttrFn(data, field), token, weights[field] || 1);\n        };\n      }\n\n      return function (token, data) {\n        var sum = 0; // is the token specific to a field?\n\n        if (token.field) {\n          const value = getAttrFn(data, token.field);\n\n          if (!token.regex && value) {\n            sum += 1 / field_count;\n          } else {\n            sum += scoreValue(value, token, 1);\n          }\n        } else {\n          iterate(weights, (weight, field) => {\n            sum += scoreValue(getAttrFn(data, field), token, weight);\n          });\n        }\n\n        return sum / field_count;\n      };\n    }();\n\n    if (token_count === 1) {\n      return function (data) {\n        return scoreObject(tokens[0], data);\n      };\n    }\n\n    if (search.options.conjunction === 'and') {\n      return function (data) {\n        var score,\n            sum = 0;\n\n        for (let token of tokens) {\n          score = scoreObject(token, data);\n          if (score <= 0) return 0;\n          sum += score;\n        }\n\n        return sum / token_count;\n      };\n    } else {\n      return function (data) {\n        var sum = 0;\n        iterate(tokens, token => {\n          sum += scoreObject(token, data);\n        });\n        return sum / token_count;\n      };\n    }\n  }\n\n  /**\n   * Returns a function that can be used to compare two\n   * results, for sorting purposes. If no sorting should\n   * be performed, `null` will be returned.\n   *\n   * @return function(a,b)\n   */\n  getSortFunction(query, options) {\n    var search = this.prepareSearch(query, options);\n    return this._getSortFunction(search);\n  }\n\n  _getSortFunction(search) {\n    var implicit_score,\n        sort_flds = [];\n    const self = this,\n          options = search.options,\n          sort = !search.query && options.sort_empty ? options.sort_empty : options.sort;\n\n    if (typeof sort == 'function') {\n      return sort.bind(this);\n    }\n    /**\n     * Fetches the specified sort field value\n     * from a search result item.\n     *\n     */\n\n\n    const get_field = function get_field(name, result) {\n      if (name === '$score') return result.score;\n      return search.getAttrFn(self.items[result.id], name);\n    }; // parse options\n\n\n    if (sort) {\n      for (let s of sort) {\n        if (search.query || s.field !== '$score') {\n          sort_flds.push(s);\n        }\n      }\n    } // the \"$score\" field is implied to be the primary\n    // sort field, unless it's manually specified\n\n\n    if (search.query) {\n      implicit_score = true;\n\n      for (let fld of sort_flds) {\n        if (fld.field === '$score') {\n          implicit_score = false;\n          break;\n        }\n      }\n\n      if (implicit_score) {\n        sort_flds.unshift({\n          field: '$score',\n          direction: 'desc'\n        });\n      } // without a search.query, all items will have the same score\n\n    } else {\n      sort_flds = sort_flds.filter(fld => fld.field !== '$score');\n    } // build function\n\n\n    const sort_flds_count = sort_flds.length;\n\n    if (!sort_flds_count) {\n      return null;\n    }\n\n    return function (a, b) {\n      var result, field;\n\n      for (let sort_fld of sort_flds) {\n        field = sort_fld.field;\n        let multiplier = sort_fld.direction === 'desc' ? -1 : 1;\n        result = multiplier * cmp(get_field(field, a), get_field(field, b));\n        if (result) return result;\n      }\n\n      return 0;\n    };\n  }\n\n  /**\n   * Parses a search query and returns an object\n   * with tokens and fields ready to be populated\n   * with results.\n   *\n   */\n  prepareSearch(query, optsUser) {\n    const weights = {};\n    var options = Object.assign({}, optsUser);\n    propToArray(options, 'sort');\n    propToArray(options, 'sort_empty'); // convert fields to new format\n\n    if (options.fields) {\n      propToArray(options, 'fields');\n      const fields = [];\n      options.fields.forEach(field => {\n        if (typeof field == 'string') {\n          field = {\n            field: field,\n            weight: 1\n          };\n        }\n\n        fields.push(field);\n        weights[field.field] = 'weight' in field ? field.weight : 1;\n      });\n      options.fields = fields;\n    }\n\n    return {\n      options: options,\n      query: query.toLowerCase().trim(),\n      tokens: this.tokenize(query, options.respect_word_boundaries, weights),\n      total: 0,\n      items: [],\n      weights: weights,\n      getAttrFn: options.nesting ? getAttrNesting : getAttr\n    };\n  }\n\n  /**\n   * Searches through all items and returns a sorted array of matches.\n   *\n   */\n  search(query, options) {\n    var self = this,\n        score,\n        search;\n    search = this.prepareSearch(query, options);\n    options = search.options;\n    query = search.query; // generate result scoring function\n\n    const fn_score = options.score || self._getScoreFunction(search); // perform search and sort\n\n\n    if (query.length) {\n      iterate(self.items, (item, id) => {\n        score = fn_score(item);\n\n        if (options.filter === false || score > 0) {\n          search.items.push({\n            'score': score,\n            'id': id\n          });\n        }\n      });\n    } else {\n      iterate(self.items, (_, id) => {\n        search.items.push({\n          'score': 1,\n          'id': id\n        });\n      });\n    }\n\n    const fn_sort = self._getSortFunction(search);\n\n    if (fn_sort) search.items.sort(fn_sort); // apply limits\n\n    search.total = search.items.length;\n\n    if (typeof options.limit === 'number') {\n      search.items = search.items.slice(0, options.limit);\n    }\n\n    return search;\n  }\n\n}\n\nexport { Sifter };\n//# sourceMappingURL=sifter.js.map\n", "\nimport { asciifold } from '@orchidjs/unicode-variants';\nimport * as T from './types';\n\n\n/**\n * A property getter resolving dot-notation\n * @param  {Object}  obj     The root object to fetch property on\n * @param  {String}  name    The optionally dotted property name to fetch\n * @return {Object}          The resolved property value\n */\nexport const getAttr = (obj:{[key:string]:any}, name:string ) => {\n    if (!obj ) return;\n    return obj[name];\n};\n\n/**\n * A property getter resolving dot-notation\n * @param  {Object}  obj     The root object to fetch property on\n * @param  {String}  name    The optionally dotted property name to fetch\n * @return {Object}          The resolved property value\n */\nexport const getAttrNesting = (obj:{[key:string]:any}, name:string ) => {\n    if (!obj ) return;\n    var part, names = name.split(\".\");\n\twhile( (part = names.shift()) && (obj = obj[part]));\n    return obj;\n};\n\n/**\n * Calculates how close of a match the\n * given value is against a search token.\n *\n */\nexport const scoreValue = (value:string, token:T.Token, weight:number ):number => {\n\tvar score, pos;\n\n\tif (!value) return 0;\n\n\tvalue = value + '';\n\tif( token.regex == null ) return 0;\n\tpos = value.search(token.regex);\n\tif (pos === -1) return 0;\n\n\tscore = token.string.length / value.length;\n\tif (pos === 0) score += 0.5;\n\n\treturn score * weight;\n};\n\n\n/**\n * Cast object property to an array if it exists and has a value\n *\n */\nexport const propToArray = (obj:{[key:string]:any}, key:string) => {\n\tvar value = obj[key];\n\n\tif( typeof value == 'function' ) return value;\n\n\tif( value && !Array.isArray(value) ){\n\t\tobj[key] = [value];\n\t}\n}\n\n\n/**\n * Iterates over arrays and hashes.\n *\n * ```\n * iterate(this.items, function(item, id) {\n *    // invoked for each item\n * });\n * ```\n *\n */\nexport const iterate = (object:[]|{[key:string]:any}, callback:(value:any,key:any)=>any) => {\n\n\tif ( Array.isArray(object)) {\n\t\tobject.forEach(callback);\n\n\t}else{\n\n\t\tfor (var key in object) {\n\t\t\tif (object.hasOwnProperty(key)) {\n\t\t\t\tcallback(object[key], key);\n\t\t\t}\n\t\t}\n\t}\n};\n\n\n\nexport const cmp = (a:number|string, b:number|string) => {\n\tif (typeof a === 'number' && typeof b === 'number') {\n\t\treturn a > b ? 1 : (a < b ? -1 : 0);\n\t}\n\ta = asciifold(a + '').toLowerCase();\n\tb = asciifold(b + '').toLowerCase();\n\tif (a > b) return 1;\n\tif (b > a) return -1;\n\treturn 0;\n};\n", "\nimport { iterate } from '@orchidjs/sifter/lib/utils';\n\n/**\n * Return a dom element from either a dom query string, jQuery object, a dom element or html string\n * https://stackoverflow.com/questions/494143/creating-a-new-dom-element-from-an-html-string-using-built-in-dom-methods-or-pro/35385518#35385518\n *\n * param query should be {}\n */\nexport const getDom = ( query:any ):HTMLElement => {\n\n\tif( query.jquery ){\n\t\treturn query[0];\n\t}\n\n\tif( query instanceof HTMLElement ){\n\t\treturn query;\n\t}\n\n\tif( isHtmlString(query) ){\n\t\tvar tpl = document.createElement('template');\n\t\ttpl.innerHTML = query.trim(); // Never return a text node of whitespace as the result\n\t\treturn tpl.content.firstChild as HTMLElement;\n\t}\n\n\treturn document.querySelector(query);\n};\n\nexport const isHtmlString = (arg:any): boolean => {\n\tif( typeof arg === 'string' && arg.indexOf('<') > -1 ){\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport const escapeQuery = (query:string):string => {\n\treturn query.replace(/['\"\\\\]/g, '\\\\$&');\n}\n\n/**\n * Dispatch an event\n *\n */\nexport const triggerEvent = ( dom_el:HTMLElement, event_name:string ):void => {\n\tvar event = document.createEvent('HTMLEvents');\n\tevent.initEvent(event_name, true, false);\n\tdom_el.dispatchEvent(event)\n};\n\n/**\n * Apply CSS rules to a dom element\n *\n */\nexport const applyCSS = ( dom_el:HTMLElement, css:{ [key: string]: string|number }):void => {\n\tObject.assign(dom_el.style, css);\n}\n\n\n/**\n * Add css classes\n *\n */\nexport const addClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n\tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map( cls => {\n\t\t\tel.classList.add( cls );\n\t\t});\n\t});\n}\n\n/**\n * Remove css classes\n *\n */\n export const removeClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n \tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map(cls => {\n\t \t\tel.classList.remove( cls );\n\t\t});\n \t});\n }\n\n\n/**\n * Return arguments\n *\n */\nexport const classesArray = (args:string[]|string[][]):string[] => {\n\tvar classes:string[] = [];\n\titerate( args, (_classes) =>{\n\t\tif( typeof _classes === 'string' ){\n\t\t\t_classes = _classes.trim().split(/[\\11\\12\\14\\15\\40]/);\n\t\t}\n\t\tif( Array.isArray(_classes) ){\n\t\t\tclasses = classes.concat(_classes);\n\t\t}\n\t});\n\n\treturn classes.filter(Boolean);\n}\n\n\n/**\n * Create an array from arg if it's not already an array\n *\n */\nexport const castAsArray = (arg:any):Array<any> => {\n\tif( !Array.isArray(arg) ){\n \t\targ = [arg];\n \t}\n\treturn arg;\n}\n\n\n/**\n * Get the closest node to the evt.target matching the selector\n * Stops at wrapper\n *\n */\nexport const parentMatch = ( target:null|HTMLElement, selector:string, wrapper?:HTMLElement ):HTMLElement|void => {\n\n\tif( wrapper && !wrapper.contains(target) ){\n\t\treturn;\n\t}\n\n\twhile( target && target.matches ){\n\n\t\tif( target.matches(selector) ){\n\t\t\treturn target;\n\t\t}\n\n\t\ttarget = target.parentNode as HTMLElement;\n\t}\n}\n\n\n/**\n * Get the first or last item from an array\n *\n * > 0 - right (last)\n * <= 0 - left (first)\n *\n */\nexport const getTail = ( list:Array<any>|NodeList, direction:number=0 ):any => {\n\n\tif( direction > 0 ){\n\t\treturn list[list.length-1];\n\t}\n\n\treturn list[0];\n}\n\n/**\n * Return true if an object is empty\n *\n */\nexport const isEmptyObject = (obj:object):boolean => {\n\treturn (Object.keys(obj).length === 0);\n}\n\n\n/**\n * Get the index of an element amongst sibling nodes of the same type\n *\n */\nexport const nodeIndex = ( el:null|Element, amongst?:string ):number => {\n\tif (!el) return -1;\n\n\tamongst = amongst || el.nodeName;\n\n\tvar i = 0;\n\twhile( el = el.previousElementSibling ){\n\n\t\tif( el.matches(amongst) ){\n\t\t\ti++;\n\t\t}\n\t}\n\treturn i;\n}\n\n\n/**\n * Set attributes of an element\n *\n */\nexport const setAttr = (el:Element,attrs:{ [key: string]: null|string|number }) => {\n\titerate( attrs,(val,attr) => {\n\t\tif( val == null ){\n\t\t\tel.removeAttribute(attr as string);\n\t\t}else{\n\t\t\tel.setAttribute(attr as string, ''+val);\n\t\t}\n\t});\n}\n\n\n/**\n * Replace a node\n */\nexport const replaceNode = ( existing:Node, replacement:Node ) => {\n\tif( existing.parentNode ) existing.parentNode.replaceChild(replacement, existing);\n}\n", "/**\n * highlight v3 | MIT license | Johann Burkard <jb@eaio.com>\n * Highlights arbitrary terms in a node.\n *\n * - Modified by Marshal <beatgates@gmail.com> 2011-6-24 (added regex)\n * - Modified by Brian Reavis <brian@thirdroute.com> 2012-8-27 (cleanup)\n */\n\nimport {replaceNode} from '../vanilla';\n\n\nexport const highlight = (element:HTMLElement, regex:string|RegExp) => {\n\n\tif( regex === null ) return;\n\n\t// convet string to regex\n\tif( typeof regex === 'string' ){\n\n\t\tif( !regex.length ) return;\n\t\tregex = new RegExp(regex, 'i');\n\t}\n\n\n\t// Wrap matching part of text node with highlighting <span>, e.g.\n\t// Soccer  ->  <span class=\"highlight\">Soc</span>cer  for regex = /soc/i\n\tconst highlightText = ( node:Text ):number => {\n\n\t\tvar match = node.data.match(regex);\n\t\tif( match && node.data.length > 0 ){\n\t\t\tvar spannode\t\t= document.createElement('span');\n\t\t\tspannode.className\t= 'highlight';\n\t\t\tvar middlebit\t\t= node.splitText(match.index as number);\n\n\t\t\tmiddlebit.splitText(match[0]!.length);\n\t\t\tvar middleclone\t\t= middlebit.cloneNode(true);\n\n\t\t\tspannode.appendChild(middleclone);\n\t\t\treplaceNode(middlebit, spannode);\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn 0;\n\t};\n\n\t// Recurse element node, looking for child text nodes to highlight, unless element\n\t// is childless, <script>, <style>, or already highlighted: <span class=\"hightlight\">\n\tconst highlightChildren = ( node:Element ):void => {\n\t\tif( node.nodeType === 1 && node.childNodes && !/(script|style)/i.test(node.tagName) && ( node.className !== 'highlight' || node.tagName !== 'SPAN' ) ){\n\t\t\tArray.from(node.childNodes).forEach(element => {\n\t\t\t\thighlightRecursive(element);\n\t\t\t});\n\t\t}\n\t};\n\n\n\tconst highlightRecursive = ( node:Node|Element ):number => {\n\n\t\tif( node.nodeType === 3 ){\n\t\t\treturn highlightText(node as Text);\n\t\t}\n\n\t\thighlightChildren(node as Element);\n\n\t\treturn 0;\n\t};\n\n\thighlightRecursive( element );\n};\n\n/**\n * removeHighlight fn copied from highlight v5 and\n * edited to remove with(), pass js strict mode, and use without jquery\n */\nexport const removeHighlight = (el:HTMLElement) => {\n\tvar elements = el.querySelectorAll(\"span.highlight\");\n\tArray.prototype.forEach.call(elements, function(el:HTMLElement){\n\t\tvar parent = el.parentNode as Node;\n\t\tparent.replaceChild(el.firstChild as Node, el);\n\t\tparent.normalize();\n\t});\n};\n", "export const KEY_A\t\t\t\t= 65;\nexport const KEY_RETURN\t\t\t= 13;\nexport const KEY_ESC\t\t\t= 27;\nexport const KEY_LEFT\t\t\t= 37;\nexport const KEY_UP\t\t\t\t= 38;\nexport const KEY_RIGHT\t\t\t= 39;\nexport const KEY_DOWN\t\t\t= 40;\nexport const KEY_BACKSPACE\t\t= 8;\nexport const KEY_DELETE\t\t\t= 46;\nexport const KEY_TAB\t\t\t= 9;\n\nexport const IS_MAC      \t\t= typeof navigator === 'undefined' ? false : /Mac/.test(navigator.userAgent);\nexport const KEY_SHORTCUT\t\t= IS_MAC ? 'metaKey' : 'ctrlKey'; // ctrl key or apple key for ma\n", "\nexport default {\n\toptions: [],\n\toptgroups: [],\n\n\tplugins: [],\n\tdelimiter: ',',\n\tsplitOn: null, // regexp or string for splitting up values from a paste command\n\tpersist: true,\n\tdiacritics: true,\n\tcreate: null,\n\tcreateOnBlur: false,\n\tcreateFilter: null,\n\thighlight: true,\n\topenOnFocus: true,\n\tshouldOpen: null,\n\tmaxOptions: 50,\n\tmaxItems: null,\n\thideSelected: null,\n\tduplicates: false,\n\taddPrecedence: false,\n\tselectOnTab: false,\n\tpreload: null,\n\tallowEmptyOption: false,\n\t//closeAfterSelect: false,\n\n\tloadThrottle: 300,\n\tloadingClass: 'loading',\n\n\tdataAttr: null, //'data-data',\n\toptgroupField: 'optgroup',\n\tvalueField: 'value',\n\tlabelField: 'text',\n\tdisabledField: 'disabled',\n\toptgroupLabelField: 'label',\n\toptgroupValueField: 'value',\n\tlockOptgroupOrder: false,\n\n\tsortField: '$order',\n\tsearchField: ['text'],\n\tsearchConjunction: 'and',\n\n\tmode: null,\n\twrapperClass: 'ts-wrapper',\n\tcontrolClass: 'ts-control',\n\tdropdownClass: 'ts-dropdown',\n\tdropdownContentClass: 'ts-dropdown-content',\n\titemClass: 'item',\n\toptionClass: 'option',\n\n\tdropdownParent: null,\n\tcontrolInput: '<input type=\"text\" autocomplete=\"off\" size=\"1\" />',\n\n\tcopyClassesToDropdown: false,\n\n\tplaceholder: null,\n\thidePlaceholder: null,\n\n\tshouldLoad: function(query:string):boolean{\n\t\treturn query.length > 0;\n\t},\n\n\t/*\n\tload                 : null, // function(query, callback) { ... }\n\tscore                : null, // function(search) { ... }\n\tonInitialize         : null, // function() { ... }\n\tonChange             : null, // function(value) { ... }\n\tonItemAdd            : null, // function(value, $item) { ... }\n\tonItemRemove         : null, // function(value) { ... }\n\tonClear              : null, // function() { ... }\n\tonOptionAdd          : null, // function(value, data) { ... }\n\tonOptionRemove       : null, // function(value) { ... }\n\tonOptionClear        : null, // function() { ... }\n\tonOptionGroupAdd     : null, // function(id, data) { ... }\n\tonOptionGroupRemove  : null, // function(id) { ... }\n\tonOptionGroupClear   : null, // function() { ... }\n\tonDropdownOpen       : null, // function(dropdown) { ... }\n\tonDropdownClose      : null, // function(dropdown) { ... }\n\tonType               : null, // function(str) { ... }\n\tonDelete             : null, // function(values) { ... }\n\t*/\n\n\trender: {\n\t\t/*\n\t\titem: null,\n\t\toptgroup: null,\n\t\toptgroup_header: null,\n\t\toption: null,\n\t\toption_create: null\n\t\t*/\n\t}\n};\n", "\nimport TomSelect from './tom-select';\nimport { TomLoadCallback } from './types/index';\n\n\n/**\n * Converts a scalar to its best string representation\n * for hash keys and HTML attribute values.\n *\n * Transformations:\n *   'str'     -> 'str'\n *   null      -> ''\n *   undefined -> ''\n *   true      -> '1'\n *   false     -> '0'\n *   0         -> '0'\n *   1         -> '1'\n *\n */\nexport const hash_key = (value:undefined|null|boolean|string|number):string|null => {\n\tif (typeof value === 'undefined' || value === null) return null;\n\treturn get_hash(value);\n};\n\nexport const get_hash = (value:boolean|string|number):string => {\n\tif (typeof value === 'boolean') return value ? '1' : '0';\n\treturn value + '';\n};\n\n/**\n * Escapes a string for use within HTML.\n *\n */\nexport const escape_html = (str:string):string => {\n\treturn (str + '')\n\t\t.replace(/&/g, '&amp;')\n\t\t.replace(/</g, '&lt;')\n\t\t.replace(/>/g, '&gt;')\n\t\t.replace(/\"/g, '&quot;');\n};\n\n\n/**\n * Debounce the user provided load function\n *\n */\nexport const loadDebounce = (fn:(value:string,callback:TomLoadCallback) => void,delay:number) => {\n\tvar timeout: null|ReturnType<typeof setTimeout>;\n\treturn function(this:TomSelect, value:string,callback:TomLoadCallback) {\n\t\tvar self = this;\n\n\t\tif( timeout ){\n\t\t\tself.loading = Math.max(self.loading - 1, 0);\n\t\t\tclearTimeout(timeout);\n\t\t}\n\t\ttimeout = setTimeout(function() {\n\t\t\ttimeout = null;\n\t\t\tself.loadedSearches[value] = true;\n\t\t\tfn.call(self, value, callback);\n\n\t\t}, delay);\n\t};\n};\n\n\n/**\n * Debounce all fired events types listed in `types`\n * while executing the provided `fn`.\n *\n */\nexport const debounce_events = ( self:TomSelect, types:string[], fn:() => void ) => {\n\tvar type:string;\n\tvar trigger = self.trigger;\n\tvar event_args:{ [key: string]: any } = {};\n\n\t// override trigger method\n\tself.trigger = function(){\n\t\tvar type = arguments[0];\n\t\tif (types.indexOf(type) !== -1) {\n\t\t\tevent_args[type] = arguments;\n\t\t} else {\n\t\t\treturn trigger.apply(self, arguments);\n\t\t}\n\t};\n\n\t// invoke provided function\n\tfn.apply(self, []);\n\tself.trigger = trigger;\n\n\t// trigger queued events\n\tfor( type of types ){\n\t\tif( type in event_args ){\n\t\t\ttrigger.apply(self, event_args[type]);\n\t\t}\n\t}\n};\n\n\n/**\n * Determines the current selection within a text input control.\n * Returns an object containing:\n *   - start\n *   - length\n *\n */\nexport const getSelection = (input:HTMLInputElement):{ start: number; length: number } => {\n\treturn {\n\t\tstart\t: input.selectionStart || 0,\n\t\tlength\t: (input.selectionEnd||0) - (input.selectionStart||0),\n\t};\n};\n\n\n/**\n * Prevent default\n *\n */\nexport const preventDefault = (evt?:Event, stop:boolean=false):void => {\n\tif( evt ){\n\t\tevt.preventDefault();\n\t\tif( stop ){\n\t\t\tevt.stopPropagation();\n\t\t}\n\t}\n}\n\n\n/**\n * Add event helper\n *\n */\nexport const addEvent = (target:EventTarget, type:string, callback:EventListenerOrEventListenerObject, options?:object):void => {\n\ttarget.addEventListener(type,callback,options);\n};\n\n\n/**\n * Return true if the requested key is down\n * Will return false if more than one control character is pressed ( when [ctrl+shift+a] != [ctrl+a] )\n * The current evt may not always set ( eg calling advanceSelection() )\n *\n */\nexport const isKeyDown = ( key_name:keyof (KeyboardEvent|MouseEvent), evt?:KeyboardEvent|MouseEvent ) => {\n\n\tif( !evt ){\n\t\treturn false;\n\t}\n\n\tif( !evt[key_name] ){\n\t\treturn false;\n\t}\n\n\tvar count = (evt.altKey?1:0) + (evt.ctrlKey?1:0) + (evt.shiftKey?1:0) + (evt.metaKey?1:0);\n\n\tif( count === 1 ){\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\n\n/**\n * Get the id of an element\n * If the id attribute is not set, set the attribute with the given id\n *\n */\nexport const getId = (el:Element,id:string) => {\n\tconst existing_id = el.getAttribute('id');\n\tif( existing_id ){\n\t\treturn existing_id;\n\t}\n\n\tel.setAttribute('id',id);\n\treturn id;\n};\n\n\n/**\n * Returns a string with backslashes added before characters that need to be escaped.\n */\nexport const addSlashes = (str:string):string => {\n\treturn str.replace(/[\\\\\"']/g, '\\\\$&');\n};\n\n/**\n *\n */\nexport const append = ( parent:Element|DocumentFragment, node: string|Node|null|undefined ):void =>{\n\tif( node ) parent.append(node);\n};\n", "import defaults from './defaults';\nimport { hash_key } from './utils';\nimport { TomOption, TomSettings, RecursivePartial } from './types/index';\nimport { iterate } from '@orchidjs/sifter/lib/utils';\nimport { TomInput } from './types/index';\n\n\nexport default function getSettings( input:TomInput, settings_user:RecursivePartial<TomSettings>):TomSettings{\n\tvar settings:TomSettings\t= Object.assign({}, defaults, settings_user);\n\n\tvar attr_data\t\t\t\t= settings.dataAttr;\n\tvar field_label\t\t\t\t= settings.labelField;\n\tvar field_value\t\t\t\t= settings.valueField;\n\tvar field_disabled\t\t\t= settings.disabledField;\n\tvar field_optgroup\t\t\t= settings.optgroupField;\n\tvar field_optgroup_label\t= settings.optgroupLabelField;\n\tvar field_optgroup_value\t= settings.optgroupValueField;\n\n\tvar tag_name\t\t\t\t= input.tagName.toLowerCase();\n\tvar placeholder\t\t\t\t= input.getAttribute('placeholder') || input.getAttribute('data-placeholder');\n\n\tif (!placeholder && !settings.allowEmptyOption) {\n\t\tlet option\t\t= input.querySelector('option[value=\"\"]');\n\t\tif( option ){\n\t\t\tplaceholder = option.textContent;\n\t\t}\n\n\t}\n\n\tvar settings_element:{\n\t\tplaceholder\t: null|string,\n\t\toptions\t\t: TomOption[],\n\t\toptgroups\t: TomOption[],\n\t\titems\t\t: string[],\n\t\tmaxItems\t: null|number,\n\t} = {\n\t\tplaceholder\t: placeholder,\n\t\toptions\t\t: [],\n\t\toptgroups\t: [],\n\t\titems\t\t: [],\n\t\tmaxItems\t: null,\n\t};\n\n\n\t/**\n\t * Initialize from a <select> element.\n\t *\n\t */\n\tvar init_select = () => {\n\t\tvar tagName;\n\t\tvar options = settings_element.options;\n\t\tvar optionsMap:{[key:string]:any} = {};\n\t\tvar group_count = 1;\n\n\t\tvar readData = (el:HTMLElement):TomOption => {\n\n\t\t\tvar data\t= Object.assign({},el.dataset); // get plain object from DOMStringMap\n\t\t\tvar json\t= attr_data && data[attr_data];\n\n\t\t\tif( typeof json === 'string' && json.length ){\n\t\t\t\tdata = Object.assign(data,JSON.parse(json));\n\t\t\t}\n\n\t\t\treturn data;\n\t\t};\n\n\t\tvar addOption = (option:HTMLOptionElement, group?:string) => {\n\n\t\t\tvar value = hash_key(option.value);\n\t\t\tif ( value == null ) return;\n\t\t\tif ( !value && !settings.allowEmptyOption) return;\n\n\t\t\t// if the option already exists, it's probably been\n\t\t\t// duplicated in another optgroup. in this case, push\n\t\t\t// the current group to the \"optgroup\" property on the\n\t\t\t// existing option so that it's rendered in both places.\n\t\t\tif (optionsMap.hasOwnProperty(value)) {\n\t\t\t\tif (group) {\n\t\t\t\t\tvar arr = optionsMap[value][field_optgroup];\n\t\t\t\t\tif (!arr) {\n\t\t\t\t\t\toptionsMap[value][field_optgroup] = group;\n\t\t\t\t\t} else if (!Array.isArray(arr)) {\n\t\t\t\t\t\toptionsMap[value][field_optgroup] = [arr, group];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tarr.push(group);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}else{\n\n\t\t\t\tvar option_data             = readData(option);\n\t\t\t\toption_data[field_label]    = option_data[field_label] || option.textContent;\n\t\t\t\toption_data[field_value]    = option_data[field_value] || value;\n\t\t\t\toption_data[field_disabled] = option_data[field_disabled] || option.disabled;\n\t\t\t\toption_data[field_optgroup] = option_data[field_optgroup] || group;\n\t\t\t\toption_data.$option\t\t\t= option;\n\n\t\t\t\toptionsMap[value] = option_data;\n\t\t\t\toptions.push(option_data);\n\t\t\t}\n\n\t\t\tif( option.selected ){\n\t\t\t\tsettings_element.items.push(value);\n\t\t\t}\n\t\t};\n\n\t\tvar addGroup = ( optgroup:HTMLOptGroupElement ) => {\n\t\t\tvar id:string, optgroup_data\n\n\t\t\toptgroup_data\t\t\t\t\t\t\t= readData(optgroup);\n\t\t\toptgroup_data[field_optgroup_label]\t\t= optgroup_data[field_optgroup_label] || optgroup.getAttribute('label') || '';\n\t\t\toptgroup_data[field_optgroup_value]\t\t= optgroup_data[field_optgroup_value] || group_count++;\n\t\t\toptgroup_data[field_disabled]\t\t\t= optgroup_data[field_disabled] || optgroup.disabled;\n\t\t\tsettings_element.optgroups.push(optgroup_data);\n\n\t\t\tid = optgroup_data[field_optgroup_value];\n\n\t\t\titerate(optgroup.children, (option)=>{\n\t\t\t\taddOption(option as HTMLOptionElement, id);\n\t\t\t});\n\n\t\t};\n\n\t\tsettings_element.maxItems = input.hasAttribute('multiple') ? null : 1;\n\n\t\titerate(input.children,(child)=>{\n\t\t\ttagName = child.tagName.toLowerCase();\n\t\t\tif (tagName === 'optgroup') {\n\t\t\t\taddGroup(child as HTMLOptGroupElement);\n\t\t\t} else if (tagName === 'option') {\n\t\t\t\taddOption(child as HTMLOptionElement);\n\t\t\t}\n\t\t});\n\n\t};\n\n\n\t/**\n\t * Initialize from a <input type=\"text\"> element.\n\t *\n\t */\n\tvar init_textbox = () => {\n\t\tconst data_raw = input.getAttribute(attr_data);\n\n\t\tif (!data_raw) {\n\t\t\tvar value = input.value.trim() || '';\n\t\t\tif (!settings.allowEmptyOption && !value.length) return;\n\t\t\tconst values = value.split(settings.delimiter);\n\n\t\t\titerate( values, (value) => {\n\t\t\t\tconst option:TomOption = {};\n\t\t\t\toption[field_label] = value;\n\t\t\t\toption[field_value] = value;\n\t\t\t\tsettings_element.options.push(option);\n\t\t\t});\n\t\t\tsettings_element.items = values;\n\t\t} else {\n\t\t\tsettings_element.options = JSON.parse(data_raw);\n\t\t\titerate( settings_element.options, (opt) => {\n\t\t\t\tsettings_element.items.push(opt[field_value]);\n\t\t\t});\n\t\t}\n\t};\n\n\n\tif (tag_name === 'select') {\n\t\tinit_select();\n\t} else {\n\t\tinit_textbox();\n\t}\n\n\treturn Object.assign( {}, defaults, settings_element, settings_user) as TomSettings;\n};\n", "\nimport MicroEvent from './contrib/microevent';\nimport MicroPlugin from './contrib/microplugin';\nimport { Sifter, iterate } from '@orchidjs/sifter';\nimport { escape_regex } from '@orchidjs/unicode-variants';\nimport { TomInput, TomArgObject, TomOption, TomOptions, TomCreateFilter, TomCreateCallback, TomItem, TomSettings, TomTemplateNames, TomClearFilter, RecursivePartial } from './types/index';\nimport {highlight, removeHighlight} from './contrib/highlight';\nimport * as constants from './constants';\nimport getSettings from './getSettings';\nimport {\n\thash_key,\n\tget_hash,\n\tescape_html,\n\tdebounce_events,\n\tgetSelection,\n\tpreventDefault,\n\taddEvent,\n\tloadDebounce,\n\tisKeyDown,\n\tgetId,\n\taddSlashes,\n\tappend\n} from './utils';\n\nimport {\n\tgetDom,\n\tisHtmlString,\n\tescapeQuery,\n\ttriggerEvent,\n\tapplyCSS,\n\taddClasses,\n\tremoveClasses,\n\tparentMatch,\n\tgetTail,\n\tisEmptyObject,\n\tnodeIndex,\n\tsetAttr,\n\treplaceNode\n} from './vanilla';\n\nvar instance_i = 0;\n\nexport default class TomSelect extends MicroPlugin(MicroEvent){\n\n\tpublic control_input\t\t\t: HTMLInputElement;\n\tpublic wrapper\t\t\t\t\t: HTMLElement;\n\tpublic dropdown\t\t\t\t\t: HTMLElement;\n\tpublic control\t\t\t\t\t: HTMLElement;\n\tpublic dropdown_content\t\t\t: HTMLElement;\n\tpublic focus_node\t\t\t\t: HTMLElement;\n\n\tpublic order\t\t\t\t\t: number = 0;\n\tpublic settings\t\t\t\t\t: TomSettings;\n\tpublic input\t\t\t\t\t: TomInput;\n\tpublic tabIndex\t\t\t\t\t: number;\n\tpublic is_select_tag\t\t\t: boolean;\n\tpublic rtl\t\t\t\t\t\t: boolean;\n\tprivate inputId\t\t\t\t\t: string;\n\n\tprivate _destroy\t\t\t\t!: () => void;\n\tpublic sifter\t\t\t\t\t: Sifter;\n\n\n\tpublic isOpen\t\t\t\t\t: boolean = false;\n\tpublic isDisabled\t\t\t\t: boolean = false;\n\tpublic isRequired\t\t\t\t: boolean;\n\tpublic isInvalid\t\t\t\t: boolean = false; // @deprecated 1.8\n\tpublic isValid\t\t\t\t\t: boolean = true;\n\tpublic isLocked\t\t\t\t\t: boolean = false;\n\tpublic isFocused\t\t\t\t: boolean = false;\n\tpublic isInputHidden\t\t\t: boolean = false;\n\tpublic isSetup\t\t\t\t\t: boolean = false;\n\tpublic ignoreFocus\t\t\t\t: boolean = false;\n\tpublic ignoreHover\t\t\t\t: boolean = false;\n\tpublic hasOptions\t\t\t\t: boolean = false;\n\tpublic currentResults\t\t\t?: ReturnType<Sifter['search']>;\n\tpublic lastValue\t\t\t\t: string = '';\n\tpublic caretPos\t\t\t\t\t: number = 0;\n\tpublic loading\t\t\t\t\t: number = 0;\n\tpublic loadedSearches\t\t\t: { [key: string]: boolean } = {};\n\n\tpublic activeOption\t\t\t\t: null|HTMLElement = null;\n\tpublic activeItems\t\t\t\t: TomItem[] = [];\n\n\tpublic optgroups\t\t\t\t: TomOptions = {};\n\tpublic options\t\t\t\t\t: TomOptions = {};\n\tpublic userOptions\t\t\t\t: {[key:string]:boolean} = {};\n\tpublic items\t\t\t\t\t: string[] = [];\n\n\n\n\tconstructor( input_arg: string|TomInput, user_settings:RecursivePartial<TomSettings> ){\n\t\tsuper();\n\n\t\tinstance_i++;\n\n\t\tvar dir;\n\t\tvar input\t\t\t\t= getDom( input_arg ) as TomInput;\n\n\t\tif( input.tomselect ){\n\t\t\tthrow new Error('Tom Select already initialized on this element');\n\t\t}\n\n\n\t\tinput.tomselect\t\t\t= this;\n\n\n\t\t// detect rtl environment\n\t\tvar computedStyle\t\t= window.getComputedStyle && window.getComputedStyle(input, null);\n\t\tdir\t\t\t\t\t\t= computedStyle.getPropertyValue('direction');\n\n\t\t// setup default state\n\t\tconst settings\t\t\t= getSettings( input, user_settings );\n\t\tthis.settings\t\t\t= settings;\n\t\tthis.input\t\t\t\t= input;\n\t\tthis.tabIndex\t\t\t= input.tabIndex || 0;\n\t\tthis.is_select_tag\t\t= input.tagName.toLowerCase() === 'select';\n\t\tthis.rtl\t\t\t\t= /rtl/i.test(dir);\n\t\tthis.inputId\t\t\t= getId(input, 'tomselect-'+instance_i);\n\t\tthis.isRequired\t\t\t= input.required;\n\n\n\t\t// search system\n\t\tthis.sifter = new Sifter(this.options, {diacritics: settings.diacritics});\n\n\t\t// option-dependent defaults\n\t\tsettings.mode = settings.mode || (settings.maxItems === 1 ? 'single' : 'multi');\n\t\tif (typeof settings.hideSelected !== 'boolean') {\n\t\t\tsettings.hideSelected = settings.mode === 'multi';\n\t\t}\n\n\t\tif( typeof settings.hidePlaceholder !== 'boolean' ){\n\t\t\tsettings.hidePlaceholder = settings.mode !== 'multi';\n\t\t}\n\n\t\t// set up createFilter callback\n\t\tvar filter = settings.createFilter;\n\t\tif( typeof filter !== 'function' ){\n\n\t\t\tif( typeof filter === 'string' ){\n\t\t\t\tfilter = new RegExp(filter);\n\t\t\t}\n\n\t\t\tif( filter instanceof RegExp ){\n\t\t\t\tsettings.createFilter = (input) => (filter as RegExp).test(input);\n\t\t\t}else{\n\t\t\t\tsettings.createFilter = (value) => {\n\t\t\t\t\treturn this.settings.duplicates || !this.options[value];\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\n\t\tthis.initializePlugins(settings.plugins);\n\t\tthis.setupCallbacks();\n\t\tthis.setupTemplates();\n\n\n\t\t// Create all elements\n\t\tconst wrapper\t\t\t= getDom('<div>');\n\t\tconst control\t\t\t= getDom('<div>');\n\t\tconst dropdown\t\t\t= this._render('dropdown');\n\t\tconst dropdown_content\t= getDom(`<div role=\"listbox\" tabindex=\"-1\">`);\n\n\t\tconst classes\t\t\t= this.input.getAttribute('class') || '';\n\t\tconst inputMode\t\t\t= settings.mode;\n\n\t\tvar control_input: HTMLInputElement;\n\n\n\t\taddClasses( wrapper, settings.wrapperClass, classes, inputMode);\n\n\n\t\taddClasses(control,settings.controlClass);\n\t\tappend( wrapper, control );\n\n\n\t\taddClasses(dropdown, settings.dropdownClass, inputMode);\n\t\tif( settings.copyClassesToDropdown ){\n\t\t\taddClasses( dropdown, classes);\n\t\t}\n\n\n\t\taddClasses(dropdown_content, settings.dropdownContentClass);\n\t\tappend( dropdown, dropdown_content );\n\n\t\tgetDom( settings.dropdownParent || wrapper ).appendChild( dropdown );\n\n\n\t\t// default controlInput\n\t\tif( isHtmlString(settings.controlInput) ){\n\t\t\tcontrol_input\t\t= getDom(settings.controlInput ) as HTMLInputElement;\n\n\t\t\t// set attributes\n\t\t\tvar attrs = ['autocorrect','autocapitalize','autocomplete'];\n\t\t\titerate(attrs,(attr:string) => {\n\t\t\t\tif( input.getAttribute(attr) ){\n\t\t\t\t\tsetAttr(control_input,{[attr]:input.getAttribute(attr)});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tcontrol_input.tabIndex = -1;\n\t\t\tcontrol.appendChild( control_input );\n\t\t\tthis.focus_node\t\t= control_input;\n\n\t\t// dom element\n\t\t}else if( settings.controlInput ){\n\t\t\tcontrol_input\t\t= getDom( settings.controlInput ) as HTMLInputElement;\n\t\t\tthis.focus_node\t\t= control_input;\n\n\t\t}else{\n\t\t\tcontrol_input\t\t= getDom('<input/>') as HTMLInputElement;\n\t\t\tthis.focus_node\t\t= control;\n\t\t}\n\n\t\tthis.wrapper\t\t\t= wrapper;\n\t\tthis.dropdown\t\t\t= dropdown;\n\t\tthis.dropdown_content\t= dropdown_content;\n\t\tthis.control \t\t\t= control;\n\t\tthis.control_input\t\t= control_input;\n\n\t\tthis.setup();\n\t}\n\n\t/**\n\t * set up event bindings.\n\t *\n\t */\n\tsetup(){\n\n\t\tconst self = this;\n\t\tconst settings\t\t\t\t= self.settings;\n\t\tconst control_input\t\t\t= self.control_input;\n\t\tconst dropdown\t\t\t\t= self.dropdown;\n\t\tconst dropdown_content\t\t= self.dropdown_content;\n\t\tconst wrapper\t\t\t\t= self.wrapper;\n\t\tconst control\t\t\t\t= self.control;\n\t\tconst input\t\t\t\t\t= self.input;\n\t\tconst focus_node\t\t\t= self.focus_node;\n\t\tconst passive_event\t\t\t= { passive: true };\n\t\tconst listboxId\t\t\t\t= self.inputId +'-ts-dropdown';\n\n\n\t\tsetAttr(dropdown_content,{\n\t\t\tid: listboxId\n\t\t});\n\n\t\tsetAttr(focus_node,{\n\t\t\trole:'combobox',\n\t\t\t'aria-haspopup':'listbox',\n\t\t\t'aria-expanded':'false',\n\t\t\t'aria-controls':listboxId\n\t\t});\n\n\t\tconst control_id\t= getId(focus_node,self.inputId + '-ts-control');\n\t\tconst query\t\t\t= \"label[for='\"+escapeQuery(self.inputId)+\"']\";\n\t\tconst label\t\t\t= document.querySelector(query);\n\t\tconst label_click\t= self.focus.bind(self);\n\t\tif( label ){\n\t\t\taddEvent(label,'click', label_click );\n\t\t\tsetAttr(label,{for:control_id});\n\t\t\tconst label_id = getId(label,self.inputId+'-ts-label');\n\t\t\tsetAttr(focus_node,{'aria-labelledby':label_id});\n\t\t\tsetAttr(dropdown_content,{'aria-labelledby':label_id});\n\t\t}\n\n\t\twrapper.style.width = input.style.width;\n\n\t\tif (self.plugins.names.length) {\n\t\t\tconst classes_plugins = 'plugin-' + self.plugins.names.join(' plugin-');\n\t\t\taddClasses( [wrapper,dropdown], classes_plugins);\n\t\t}\n\n\t\tif ((settings.maxItems === null || settings.maxItems > 1) && self.is_select_tag ){\n\t\t\tsetAttr(input,{multiple:'multiple'});\n\t\t}\n\n\t\tif (settings.placeholder) {\n\t\t\tsetAttr(control_input,{placeholder:settings.placeholder});\n\t\t}\n\n\t\t// if splitOn was not passed in, construct it from the delimiter to allow pasting universally\n\t\tif (!settings.splitOn && settings.delimiter) {\n\t\t\tsettings.splitOn = new RegExp('\\\\s*' + escape_regex(settings.delimiter) + '+\\\\s*');\n\t\t}\n\n\t\t// debounce user defined load() if loadThrottle > 0\n\t\t// after initializePlugins() so plugins can create/modify user defined loaders\n\t\tif( settings.load && settings.loadThrottle ){\n\t\t\tsettings.load = loadDebounce(settings.load,settings.loadThrottle)\n\t\t}\n\n\t\tself.control_input.type\t= input.type;\n\n\t\taddEvent(dropdown,'mousemove', () => {\n\t\t\tself.ignoreHover = false;\n\t\t});\n\n\t\taddEvent(dropdown,'mouseenter', (e) => {\n\n\t\t\tvar target_match = parentMatch(e.target as HTMLElement, '[data-selectable]', dropdown);\n\t\t\tif( target_match ) self.onOptionHover( e as MouseEvent, target_match );\n\n\t\t}, {capture:true});\n\n\t\t// clicking on an option should select it\n\t\taddEvent(dropdown,'click',(evt) => {\n\t\t\tconst option = parentMatch(evt.target as HTMLElement, '[data-selectable]');\n\t\t\tif( option ){\n\t\t\t\tself.onOptionSelect( evt as MouseEvent, option );\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t}\n\t\t});\n\n\t\taddEvent(control,'click', (evt) => {\n\n\t\t\tvar target_match = parentMatch( evt.target as HTMLElement, '[data-ts-item]', control);\n\t\t\tif( target_match && self.onItemSelect(evt as MouseEvent, target_match as TomItem) ){\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// retain focus (see control_input mousedown)\n\t\t\tif( control_input.value != '' ){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tself.onClick();\n\t\t\tpreventDefault(evt,true);\n\t\t});\n\n\n\t\t// keydown on focus_node for arrow_down/arrow_up\n\t\taddEvent(focus_node,'keydown',\t\t(e) => self.onKeyDown(e as KeyboardEvent) );\n\n\t\t// keypress and input/keyup\n\t\taddEvent(control_input,'keypress',\t(e) => self.onKeyPress(e as KeyboardEvent) );\n\t\taddEvent(control_input,'input',\t\t(e) => self.onInput(e as KeyboardEvent) );\n\t\taddEvent(focus_node,'blur', \t\t(e) => self.onBlur(e as FocusEvent) );\n\t\taddEvent(focus_node,'focus',\t\t(e) => self.onFocus(e as MouseEvent) );\n\t\taddEvent(control_input,'paste',\t\t(e) => self.onPaste(e as MouseEvent) );\n\n\n\t\tconst doc_mousedown = (evt:Event) => {\n\n\t\t\t// blur if target is outside of this instance\n\t\t\t// dropdown is not always inside wrapper\n\t\t\tconst target = evt.composedPath()[0];\n\t\t\tif( !wrapper.contains(target as HTMLElement) && !dropdown.contains(target as HTMLElement) ){\n\t\t\t\tif (self.isFocused) {\n\t\t\t\t\tself.blur();\n\t\t\t\t}\n\t\t\t\tself.inputState();\n\t\t\t\treturn;\n\t\t\t}\n\n\n\t\t\t// retain focus by preventing native handling. if the\n\t\t\t// event target is the input it should not be modified.\n\t\t\t// otherwise, text selection within the input won't work.\n\t\t\t// Fixes bug #212 which is no covered by tests\n\t\t\tif( target == control_input && self.isOpen ){\n\t\t\t\tevt.stopPropagation();\n\n\t\t\t// clicking anywhere in the control should not blur the control_input (which would close the dropdown)\n\t\t\t}else{\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t}\n\n\t\t};\n\n\t\tconst win_scroll = () => {\n\t\t\tif (self.isOpen) {\n\t\t\t\tself.positionDropdown();\n\t\t\t}\n\t\t};\n\n\n\t\taddEvent(document,'mousedown', doc_mousedown);\n\t\taddEvent(window,'scroll', win_scroll, passive_event);\n\t\taddEvent(window,'resize', win_scroll, passive_event);\n\n\t\tthis._destroy = () => {\n\t\t\tdocument.removeEventListener('mousedown',doc_mousedown);\n\t\t\twindow.removeEventListener('scroll',win_scroll);\n\t\t\twindow.removeEventListener('resize',win_scroll);\n\t\t\tif( label ) label.removeEventListener('click',label_click);\n\t\t};\n\n\t\t// store original html and tab index so that they can be\n\t\t// restored when the destroy() method is called.\n\t\tthis.revertSettings = {\n\t\t\tinnerHTML : input.innerHTML,\n\t\t\ttabIndex : input.tabIndex\n\t\t};\n\n\n\t\tinput.tabIndex = -1;\n\t\tinput.insertAdjacentElement('afterend', self.wrapper);\n\n\t\tself.sync(false);\n\t\tsettings.items = [];\n\t\tdelete settings.optgroups;\n\t\tdelete settings.options;\n\n\t\taddEvent(input,'invalid', () => {\n\t\t\tif( self.isValid ){\n\t\t\t\tself.isValid = false;\n\t\t\t\tself.isInvalid = true;\n\t\t\t\tself.refreshState();\n\t\t\t}\n\t\t});\n\n\t\tself.updateOriginalInput();\n\t\tself.refreshItems();\n\t\tself.close(false);\n\t\tself.inputState();\n\t\tself.isSetup = true;\n\n\t\tif( input.disabled ){\n\t\t\tself.disable();\n\t\t}else{\n\t\t\tself.enable(); //sets tabIndex\n\t\t}\n\n\t\tself.on('change', this.onChange);\n\n\t\taddClasses(input,'tomselected','ts-hidden-accessible');\n\t\tself.trigger('initialize');\n\n\t\t// preload options\n\t\tif (settings.preload === true) {\n\t\t\tself.preload();\n\t\t}\n\n\t}\n\n\n\t/**\n\t * Register options and optgroups\n\t *\n\t */\n\tsetupOptions(options:TomOption[] = [], optgroups:TomOption[] = []){\n\n\t\t// build options table\n\t\tthis.addOptions(options);\n\n\n\t\t// build optgroup table\n\t\titerate( optgroups, (optgroup:TomOption) => {\n\t\t\tthis.registerOptionGroup(optgroup);\n\t\t});\n\t}\n\n\t/**\n\t * Sets up default rendering functions.\n\t */\n\tsetupTemplates() {\n\t\tvar self = this;\n\t\tvar field_label = self.settings.labelField;\n\t\tvar field_optgroup = self.settings.optgroupLabelField;\n\n\t\tvar templates = {\n\t\t\t'optgroup': (data:TomOption) => {\n\t\t\t\tlet optgroup = document.createElement('div');\n\t\t\t\toptgroup.className = 'optgroup';\n\t\t\t\toptgroup.appendChild(data.options);\n\t\t\t\treturn optgroup;\n\n\t\t\t},\n\t\t\t'optgroup_header': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '<div class=\"optgroup-header\">' + escape(data[field_optgroup]) + '</div>';\n\t\t\t},\n\t\t\t'option': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '<div>' + escape(data[field_label]) + '</div>';\n\t\t\t},\n\t\t\t'item': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '<div>' + escape(data[field_label]) + '</div>';\n\t\t\t},\n\t\t\t'option_create': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '<div class=\"create\">Add <strong>' + escape(data.input) + '</strong>&hellip;</div>';\n\t\t\t},\n\t\t\t'no_results':() => {\n\t\t\t\treturn '<div class=\"no-results\">No results found</div>';\n\t\t\t},\n\t\t\t'loading':() => {\n\t\t\t\treturn '<div class=\"spinner\"></div>';\n\t\t\t},\n\t\t\t'not_loading':() => {},\n\t\t\t'dropdown':() => {\n\t\t\t\treturn '<div></div>';\n\t\t\t}\n\t\t};\n\n\n\t\tself.settings.render = Object.assign({}, templates, self.settings.render);\n\t}\n\n\t/**\n\t * Maps fired events to callbacks provided\n\t * in the settings used when creating the control.\n\t */\n\tsetupCallbacks() {\n\t\tvar key, fn;\n\t\tvar callbacks:{[key:string]:string} = {\n\t\t\t'initialize'      : 'onInitialize',\n\t\t\t'change'          : 'onChange',\n\t\t\t'item_add'        : 'onItemAdd',\n\t\t\t'item_remove'     : 'onItemRemove',\n\t\t\t'item_select'     : 'onItemSelect',\n\t\t\t'clear'           : 'onClear',\n\t\t\t'option_add'      : 'onOptionAdd',\n\t\t\t'option_remove'   : 'onOptionRemove',\n\t\t\t'option_clear'    : 'onOptionClear',\n\t\t\t'optgroup_add'    : 'onOptionGroupAdd',\n\t\t\t'optgroup_remove' : 'onOptionGroupRemove',\n\t\t\t'optgroup_clear'  : 'onOptionGroupClear',\n\t\t\t'dropdown_open'   : 'onDropdownOpen',\n\t\t\t'dropdown_close'  : 'onDropdownClose',\n\t\t\t'type'            : 'onType',\n\t\t\t'load'            : 'onLoad',\n\t\t\t'focus'           : 'onFocus',\n\t\t\t'blur'            : 'onBlur'\n\t\t};\n\n\t\tfor (key in callbacks) {\n\n\t\t\tfn = this.settings[callbacks[key] as (keyof TomSettings)];\n\t\t\tif (fn) this.on(key, fn);\n\n\t\t}\n\t}\n\n\t/**\n\t * Sync the Tom Select instance with the original input or select\n\t *\n\t */\n\tsync(get_settings:boolean=true):void{\n\t\tconst self\t\t= this;\n\t\tconst settings\t= get_settings ? getSettings( self.input, {delimiter:self.settings.delimiter} as RecursivePartial<TomSettings> ) : self.settings;\n\n\t\tself.setupOptions(settings.options,settings.optgroups);\n\n\t\tself.setValue(settings.items||[],true); // silent prevents recursion\n\n\t\tself.lastQuery = null; // so updated options will be displayed in dropdown\n\t}\n\n\t/**\n\t * Triggered when the main control element\n\t * has a click event.\n\t *\n\t */\n\tonClick():void {\n\t\tvar self = this;\n\n\t\tif( self.activeItems.length > 0 ){\n\t\t\tself.clearActiveItems();\n\t\t\tself.focus();\n\t\t\treturn;\n\t\t}\n\n\t\tif( self.isFocused && self.isOpen ){\n\t\t\tself.blur();\n\t\t} else {\n\t\t\tself.focus();\n\t\t}\n\t}\n\n\t/**\n\t * @deprecated v1.7\n\t *\n\t */\n\tonMouseDown():void {}\n\n\t/**\n\t * Triggered when the value of the control has been changed.\n\t * This should propagate the event to the original DOM\n\t * input / select element.\n\t */\n\tonChange() {\n\t\ttriggerEvent(this.input, 'input');\n\t\ttriggerEvent(this.input, 'change');\n\t}\n\n\t/**\n\t * Triggered on <input> paste.\n\t *\n\t */\n\tonPaste(e:MouseEvent|KeyboardEvent):void {\n\t\tvar self = this;\n\n\t\tif( self.isInputHidden || self.isLocked ){\n\t\t\tpreventDefault(e);\n\t\t\treturn;\n\t\t}\n\n\t\t// If a regex or string is included, this will split the pasted\n\t\t// input and create Items for each separate value\n\t\tif( !self.settings.splitOn ){\n\t\t\treturn;\n\t\t}\n\n\t\t// Wait for pasted text to be recognized in value\n\t\tsetTimeout(() => {\n\t\t\tvar pastedText = self.inputValue();\n\t\t\tif( !pastedText.match(self.settings.splitOn)){\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tvar splitInput = pastedText.trim().split(self.settings.splitOn);\n\t\t\titerate( splitInput, (piece:string) => {\n\n\t\t\t\tconst hash = hash_key(piece);\n\t\t\t\tif( hash ){\n\t\t\t\t\tif( this.options[piece] ){\n\t\t\t\t\t\tself.addItem(piece);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tself.createItem(piece);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}, 0);\n\n\t}\n\n\t/**\n\t * Triggered on <input> keypress.\n\t *\n\t */\n\tonKeyPress(e:KeyboardEvent):void {\n\t\tvar self = this;\n\t\tif(self.isLocked){\n\t\t\tpreventDefault(e);\n\t\t\treturn;\n\t\t}\n\t\tvar character = String.fromCharCode(e.keyCode || e.which);\n\t\tif (self.settings.create && self.settings.mode === 'multi' && character === self.settings.delimiter) {\n\t\t\tself.createItem();\n\t\t\tpreventDefault(e);\n\t\t\treturn;\n\t\t}\n\t}\n\n\t/**\n\t * Triggered on <input> keydown.\n\t *\n\t */\n\tonKeyDown(e:KeyboardEvent):void {\n\t\tvar self = this;\n\n\t\tself.ignoreHover = true;\n\n\t\tif (self.isLocked) {\n\t\t\tif (e.keyCode !== constants.KEY_TAB) {\n\t\t\t\tpreventDefault(e);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tswitch (e.keyCode) {\n\n\t\t\t// ctrl+A: select all\n\t\t\tcase constants.KEY_A:\n\t\t\t\tif( isKeyDown(constants.KEY_SHORTCUT,e) ){\n\t\t\t\t\tif( self.control_input.value == '' ){\n\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t\tself.selectAll();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t// esc: close dropdown\n\t\t\tcase constants.KEY_ESC:\n\t\t\t\tif (self.isOpen) {\n\t\t\t\t\tpreventDefault(e,true);\n\t\t\t\t\tself.close();\n\t\t\t\t}\n\t\t\t\tself.clearActiveItems();\n\t\t\t\treturn;\n\n\t\t\t// down: open dropdown or move selection down\n\t\t\tcase constants.KEY_DOWN:\n\t\t\t\tif (!self.isOpen && self.hasOptions) {\n\t\t\t\t\tself.open();\n\t\t\t\t} else if (self.activeOption) {\n\t\t\t\t\tlet next = self.getAdjacent(self.activeOption, 1);\n\t\t\t\t\tif (next) self.setActiveOption(next);\n\t\t\t\t}\n\t\t\t\tpreventDefault(e);\n\t\t\t\treturn;\n\n\t\t\t// up: move selection up\n\t\t\tcase constants.KEY_UP:\n\t\t\t\tif (self.activeOption) {\n\t\t\t\t\tlet prev = self.getAdjacent(self.activeOption, -1);\n\t\t\t\t\tif (prev) self.setActiveOption(prev);\n\t\t\t\t}\n\t\t\t\tpreventDefault(e);\n\t\t\t\treturn;\n\n\t\t\t// return: select active option\n\t\t\tcase constants.KEY_RETURN:\n\t\t\t\tif( self.canSelect(self.activeOption) ){\n\t\t\t\t\tself.onOptionSelect(e,self.activeOption!);\n\t\t\t\t\tpreventDefault(e);\n\n\t\t\t\t// if the option_create=null, the dropdown might be closed\n\t\t\t\t}else if (self.settings.create && self.createItem()) {\n\t\t\t\t\tpreventDefault(e);\n\n\t\t\t\t// don't submit form when searching for a value\n\t\t\t\t}else if( document.activeElement == self.control_input && self.isOpen ){\n\t\t\t\t\tpreventDefault(e);\n\t\t\t\t}\n\n\t\t\t\treturn;\n\n\t\t\t// left: modifiy item selection to the left\n\t\t\tcase constants.KEY_LEFT:\n\t\t\t\tself.advanceSelection(-1, e);\n\t\t\t\treturn;\n\n\t\t\t// right: modifiy item selection to the right\n\t\t\tcase constants.KEY_RIGHT:\n\t\t\t\tself.advanceSelection(1, e);\n\t\t\t\treturn;\n\n\t\t\t// tab: select active option and/or create item\n\t\t\tcase constants.KEY_TAB:\n\n\t\t\t\tif( self.settings.selectOnTab ){\n\t\t\t\t\tif( self.canSelect(self.activeOption) ){\n\t\t\t\t\t\tself.onOptionSelect(e,self.activeOption!);\n\n\t\t\t\t\t\t// prevent default [tab] behaviour of jump to the next field\n\t\t\t\t\t\t// if select isFull, then the dropdown won't be open and [tab] will work normally\n\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t}\n\t\t\t\t\tif (self.settings.create && self.createItem()) {\n\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn;\n\n\t\t\t// delete|backspace: delete items\n\t\t\tcase constants.KEY_BACKSPACE:\n\t\t\tcase constants.KEY_DELETE:\n\t\t\t\tself.deleteSelection(e);\n\t\t\t\treturn;\n\t\t}\n\n\t\t// don't enter text in the control_input when active items are selected\n\t\tif( self.isInputHidden && !isKeyDown(constants.KEY_SHORTCUT,e) ){\n\t\t\tpreventDefault(e);\n\t\t}\n\t}\n\n\t/**\n\t * Triggered on <input> keyup.\n\t *\n\t */\n\tonInput(e:MouseEvent|KeyboardEvent):void {\n\t\tvar self = this;\n\n\t\tif( self.isLocked ){\n\t\t\treturn;\n\t\t}\n\n\t\tvar value = self.inputValue();\n\t\tif (self.lastValue !== value) {\n\t\t\tself.lastValue = value;\n\n\t\t\tif( self.settings.shouldLoad.call(self,value) ){\n\t\t\t\tself.load(value);\n\t\t\t}\n\n\t\t\tself.refreshOptions();\n\t\t\tself.trigger('type', value);\n\t\t}\n\t}\n\n\t/**\n\t * Triggered when the user rolls over\n\t * an option in the autocomplete dropdown menu.\n\t *\n\t */\n\tonOptionHover( evt:MouseEvent|KeyboardEvent, option:HTMLElement ):void{\n\t\tif( this.ignoreHover ) return;\n\t\tthis.setActiveOption(option, false);\n\t}\n\n\t/**\n\t * Triggered on <input> focus.\n\t *\n\t */\n\tonFocus(e?:MouseEvent|KeyboardEvent):void {\n\t\tvar self = this;\n\t\tvar wasFocused = self.isFocused;\n\n\t\tif (self.isDisabled) {\n\t\t\tself.blur();\n\t\t\tpreventDefault(e);\n\t\t\treturn;\n\t\t}\n\n\t\tif (self.ignoreFocus) return;\n\t\tself.isFocused = true;\n\t\tif( self.settings.preload === 'focus' ) self.preload();\n\n\t\tif (!wasFocused) self.trigger('focus');\n\n\t\tif (!self.activeItems.length) {\n\t\t\tself.showInput();\n\t\t\tself.refreshOptions(!!self.settings.openOnFocus);\n\t\t}\n\n\t\tself.refreshState();\n\t}\n\n\t/**\n\t * Triggered on <input> blur.\n\t *\n\t */\n\tonBlur(e?:FocusEvent):void {\n\n\t\tif( document.hasFocus() === false ) return;\n\n\t\tvar self = this;\n\t\tif (!self.isFocused) return;\n\t\tself.isFocused = false;\n\t\tself.ignoreFocus = false;\n\n\t\tvar deactivate = () => {\n\t\t\tself.close();\n\t\t\tself.setActiveItem();\n\t\t\tself.setCaret(self.items.length);\n\t\t\tself.trigger('blur');\n\t\t};\n\n\t\tif (self.settings.create && self.settings.createOnBlur) {\n\t\t\tself.createItem(null, deactivate);\n\t\t} else {\n\t\t\tdeactivate();\n\t\t}\n\t}\n\n\n\t/**\n\t * Triggered when the user clicks on an option\n\t * in the autocomplete dropdown menu.\n\t *\n\t */\n\tonOptionSelect( evt:MouseEvent|KeyboardEvent, option:HTMLElement ){\n\t\tvar value, self = this;\n\n\n\t\t// should not be possible to trigger a option under a disabled optgroup\n\t\tif( option.parentElement && option.parentElement.matches('[data-disabled]') ){\n\t\t\treturn;\n\t\t}\n\n\n\t\tif( option.classList.contains('create') ){\n\t\t\tself.createItem(null, () => {\n\t\t\t\tif (self.settings.closeAfterSelect) {\n\t\t\t\t\tself.close();\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tvalue = option.dataset.value;\n\t\t\tif (typeof value !== 'undefined') {\n\t\t\t\tself.lastQuery = null;\n\t\t\t\tself.addItem(value);\n\t\t\t\tif (self.settings.closeAfterSelect) {\n\t\t\t\t\tself.close();\n\t\t\t\t}\n\n\t\t\t\tif( !self.settings.hideSelected && evt.type && /click/.test(evt.type) ){\n\t\t\t\t\tself.setActiveOption(option);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Return true if the given option can be selected\n\t *\n\t */\n\tcanSelect(option:HTMLElement|null):boolean{\n\n\t\tif( this.isOpen && option && this.dropdown_content.contains(option) ) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Triggered when the user clicks on an item\n\t * that has been selected.\n\t *\n\t */\n\tonItemSelect( evt?:MouseEvent, item?:TomItem ):boolean{\n\t\tvar self = this;\n\n\t\tif( !self.isLocked && self.settings.mode === 'multi' ){\n\t\t\tpreventDefault(evt);\n\t\t\tself.setActiveItem(item, evt);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Determines whether or not to invoke\n\t * the user-provided option provider / loader\n\t *\n\t * Note, there is a subtle difference between\n\t * this.canLoad() and this.settings.shouldLoad();\n\t *\n\t *\t- settings.shouldLoad() is a user-input validator.\n\t *\tWhen false is returned, the not_loading template\n\t *\twill be added to the dropdown\n\t *\n\t *\t- canLoad() is lower level validator that checks\n\t * \tthe Tom Select instance. There is no inherent user\n\t *\tfeedback when canLoad returns false\n\t *\n\t */\n\tcanLoad(value:string):boolean{\n\n\t\tif( !this.settings.load ) return false;\n\t\tif( this.loadedSearches.hasOwnProperty(value) ) return false;\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Invokes the user-provided option provider / loader.\n\t *\n\t */\n\tload(value:string):void {\n\t\tconst self = this;\n\n\t\tif( !self.canLoad(value) ) return;\n\n\t\taddClasses(self.wrapper,self.settings.loadingClass);\n\t\tself.loading++;\n\n\t\tconst callback = self.loadCallback.bind(self);\n\t\tself.settings.load.call(self, value, callback);\n\t}\n\n\t/**\n\t * Invoked by the user-provided option provider\n\t *\n\t */\n\tloadCallback( options:TomOption[], optgroups:TomOption[] ):void{\n\t\tconst self = this;\n\t\tself.loading = Math.max(self.loading - 1, 0);\n\t\tself.lastQuery = null;\n\n\t\tself.clearActiveOption(); // when new results load, focus should be on first option\n\t\tself.setupOptions(options,optgroups);\n\n\t\tself.refreshOptions(self.isFocused && !self.isInputHidden);\n\n\t\tif (!self.loading) {\n\t\t\tremoveClasses(self.wrapper,self.settings.loadingClass);\n\t\t}\n\n\t\tself.trigger('load', options, optgroups);\n\t}\n\n\tpreload():void{\n\t\tvar classList = this.wrapper.classList;\n\t\tif( classList.contains('preloaded') ) return;\n\t\tclassList.add('preloaded');\n\t\tthis.load('');\n\t}\n\n\n\t/**\n\t * Sets the input field of the control to the specified value.\n\t *\n\t */\n\tsetTextboxValue(value:string = '') {\n\t\tvar input = this.control_input;\n\t\tvar changed = input.value !== value;\n\t\tif (changed) {\n\t\t\tinput.value = value;\n\t\t\ttriggerEvent(input,'update');\n\t\t\tthis.lastValue = value;\n\t\t}\n\t}\n\n\t/**\n\t * Returns the value of the control. If multiple items\n\t * can be selected (e.g. <select multiple>), this returns\n\t * an array. If only one item can be selected, this\n\t * returns a string.\n\t *\n\t */\n\tgetValue():string|string[] {\n\n\t\tif( this.is_select_tag && this.input.hasAttribute('multiple')) {\n\t\t\treturn this.items;\n\t\t}\n\n\t\treturn this.items.join(this.settings.delimiter);\n\t}\n\n\t/**\n\t * Resets the selected items to the given value.\n\t *\n\t */\n\tsetValue( value:string|string[], silent?:boolean ):void{\n\t\tvar events = silent ? [] : ['change'];\n\n\t\tdebounce_events(this, events,() => {\n\t\t\tthis.clear(silent);\n\t\t\tthis.addItems(value, silent);\n\t\t});\n\t}\n\n\n\t/**\n\t * Resets the number of max items to the given value\n\t *\n\t */\n\tsetMaxItems(value:null|number){\n\t\tif(value === 0) value = null; //reset to unlimited items.\n\t\tthis.settings.maxItems = value;\n\t\tthis.refreshState();\n\t}\n\n\t/**\n\t * Sets the selected item.\n\t *\n\t */\n\tsetActiveItem( item?:TomItem, e?:MouseEvent|KeyboardEvent ){\n\t\tvar self = this;\n\t\tvar eventName;\n\t\tvar i, begin, end, swap;\n\t\tvar last;\n\n\t\tif (self.settings.mode === 'single') return;\n\n\t\t// clear the active selection\n\t\tif( !item ){\n\t\t\tself.clearActiveItems();\n\t\t\tif (self.isFocused) {\n\t\t\t\tself.showInput();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// modify selection\n\t\teventName = e && e.type.toLowerCase();\n\n\t\tif (eventName === 'click' && isKeyDown('shiftKey',e) && self.activeItems.length) {\n\t\t\tlast\t= self.getLastActive();\n\t\t\tbegin\t= Array.prototype.indexOf.call(self.control.children, last);\n\t\t\tend\t\t= Array.prototype.indexOf.call(self.control.children, item);\n\n\t\t\tif (begin > end) {\n\t\t\t\tswap  = begin;\n\t\t\t\tbegin = end;\n\t\t\t\tend   = swap;\n\t\t\t}\n\t\t\tfor (i = begin; i <= end; i++) {\n\t\t\t\titem = self.control.children[i] as TomItem;\n\t\t\t\tif (self.activeItems.indexOf(item) === -1) {\n\t\t\t\t\tself.setActiveItemClass(item);\n\t\t\t\t}\n\t\t\t}\n\t\t\tpreventDefault(e);\n\t\t} else if ((eventName === 'click' && isKeyDown(constants.KEY_SHORTCUT,e) ) || (eventName === 'keydown' && isKeyDown('shiftKey',e))) {\n\t\t\tif( item.classList.contains('active') ){\n\t\t\t\tself.removeActiveItem( item );\n\t\t\t} else {\n\t\t\t\tself.setActiveItemClass(item);\n\t\t\t}\n\t\t} else {\n\t\t\tself.clearActiveItems();\n\t\t\tself.setActiveItemClass(item);\n\t\t}\n\n\t\t// ensure control has focus\n\t\tself.hideInput();\n\t\tif (!self.isFocused) {\n\t\t\tself.focus();\n\t\t}\n\t}\n\n\t/**\n\t * Set the active and last-active classes\n\t *\n\t */\n\tsetActiveItemClass( item:TomItem ){\n\t\tconst self = this;\n\t\tconst last_active = self.control.querySelector('.last-active');\n\t\tif( last_active ) removeClasses(last_active as HTMLElement,'last-active');\n\n\t\taddClasses(item,'active last-active');\n\t\tself.trigger('item_select', item);\n\t\tif( self.activeItems.indexOf(item) == -1 ){\n\t\t\tself.activeItems.push( item );\n\t\t}\n\t}\n\n\t/**\n\t * Remove active item\n\t *\n\t */\n\tremoveActiveItem( item:TomItem ){\n\t\tvar idx = this.activeItems.indexOf(item);\n\t\tthis.activeItems.splice(idx, 1);\n\t\tremoveClasses(item,'active');\n\t}\n\n\t/**\n\t * Clears all the active items\n\t *\n\t */\n\tclearActiveItems(){\n\t\tremoveClasses(this.activeItems,'active');\n\t\tthis.activeItems = [];\n\t}\n\n\t/**\n\t * Sets the selected item in the dropdown menu\n\t * of available options.\n\t *\n\t */\n\tsetActiveOption( option:null|HTMLElement,scroll:boolean=true ):void{\n\n\t\tif( option === this.activeOption ){\n\t\t\treturn;\n\t\t}\n\n\t\tthis.clearActiveOption();\n\t\tif( !option ) return;\n\n\t\tthis.activeOption = option;\n\t\tsetAttr(this.focus_node,{'aria-activedescendant':option.getAttribute('id')});\n\t\tsetAttr(option,{'aria-selected':'true'});\n\t\taddClasses(option,'active');\n\t\tif( scroll ) this.scrollToOption(option);\n\t}\n\n\t/**\n\t * Sets the dropdown_content scrollTop to display the option\n\t *\n\t */\n\tscrollToOption( option:null|HTMLElement, behavior?:string ):void{\n\n\t\tif( !option ) return;\n\n\t\tconst content\t\t= this.dropdown_content;\n\t\tconst height_menu\t= content.clientHeight;\n\t\tconst scrollTop\t\t= content.scrollTop || 0;\n\t\tconst height_item\t= option.offsetHeight;\n\t\tconst y\t\t\t\t= option.getBoundingClientRect().top - content.getBoundingClientRect().top + scrollTop;\n\n\t\tif (y + height_item > height_menu + scrollTop) {\n\t\t\tthis.scroll(y - height_menu + height_item, behavior);\n\n\t\t} else if (y < scrollTop) {\n\t\t\tthis.scroll(y, behavior);\n\t\t}\n\t}\n\n\t/**\n\t * Scroll the dropdown to the given position\n\t *\n\t */\n\tscroll( scrollTop:number, behavior?:string ):void{\n\t\tconst content = this.dropdown_content;\n\t\tif( behavior ){\n\t\t\tcontent.style.scrollBehavior = behavior;\n\t\t}\n\t\tcontent.scrollTop = scrollTop;\n\t\tcontent.style.scrollBehavior = '';\n\t}\n\n\t/**\n\t * Clears the active option\n\t *\n\t */\n\tclearActiveOption(){\n\t\tif( this.activeOption ){\n\t\t\tremoveClasses(this.activeOption,'active');\n\t\t\tsetAttr(this.activeOption,{'aria-selected':null});\n\t\t}\n\t\tthis.activeOption = null;\n\t\tsetAttr(this.focus_node,{'aria-activedescendant':null});\n\t}\n\n\n\t/**\n\t * Selects all items (CTRL + A).\n\t */\n\tselectAll() {\n\t\tconst self = this;\n\n\t\tif (self.settings.mode === 'single') return;\n\n\t\tconst activeItems = self.controlChildren();\n\n\t\tif( !activeItems.length ) return;\n\n\t\tself.hideInput();\n\t\tself.close();\n\n\t\tself.activeItems = activeItems;\n\t\titerate( activeItems, (item:TomItem) => {\n\t\t\tself.setActiveItemClass(item);\n\t\t});\n\n\t}\n\n\t/**\n\t * Determines if the control_input should be in a hidden or visible state\n\t *\n\t */\n\tinputState(){\n\t\tvar self = this;\n\n\t\tif( !self.control.contains(self.control_input) ) return;\n\n\t\tsetAttr(self.control_input,{placeholder:self.settings.placeholder});\n\n\t\tif( self.activeItems.length > 0 || (!self.isFocused && self.settings.hidePlaceholder && self.items.length > 0) ){\n\t\t\tself.setTextboxValue();\n\t\t\tself.isInputHidden = true;\n\n\t\t}else{\n\n\t\t\tif( self.settings.hidePlaceholder && self.items.length > 0 ){\n\t\t\t\tsetAttr(self.control_input,{placeholder:''});\n\t\t\t}\n\t\t\tself.isInputHidden = false;\n\t\t}\n\n\t\tself.wrapper.classList.toggle('input-hidden', self.isInputHidden );\n\t}\n\n\t/**\n\t * Hides the input element out of view, while\n\t * retaining its focus.\n\t * @deprecated 1.3\n\t */\n\thideInput() {\n\t\tthis.inputState();\n\t}\n\n\t/**\n\t * Restores input visibility.\n\t * @deprecated 1.3\n\t */\n\tshowInput() {\n\t\tthis.inputState();\n\t}\n\n\t/**\n\t * Get the input value\n\t */\n\tinputValue(){\n\t\treturn this.control_input.value.trim();\n\t}\n\n\t/**\n\t * Gives the control focus.\n\t */\n\tfocus() {\n\t\tvar self = this;\n\t\tif (self.isDisabled) return;\n\n\t\tself.ignoreFocus = true;\n\n\t\tif( self.control_input.offsetWidth ){\n\t\t\tself.control_input.focus();\n\t\t}else{\n\t\t\tself.focus_node.focus();\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tself.ignoreFocus = false;\n\t\t\tself.onFocus();\n\t\t}, 0);\n\t}\n\n\t/**\n\t * Forces the control out of focus.\n\t *\n\t */\n\tblur():void {\n\t\tthis.focus_node.blur();\n\t\tthis.onBlur();\n\t}\n\n\t/**\n\t * Returns a function that scores an object\n\t * to show how good of a match it is to the\n\t * provided query.\n\t *\n\t * @return {function}\n\t */\n\tgetScoreFunction(query:string) {\n\t\treturn this.sifter.getScoreFunction(query, this.getSearchOptions());\n\t}\n\n\t/**\n\t * Returns search options for sifter (the system\n\t * for scoring and sorting results).\n\t *\n\t * @see https://github.com/orchidjs/sifter.js\n\t * @return {object}\n\t */\n\tgetSearchOptions() {\n\t\tvar settings = this.settings;\n\t\tvar sort = settings.sortField;\n\t\tif (typeof settings.sortField === 'string') {\n\t\t\tsort = [{field: settings.sortField}];\n\t\t}\n\n\t\treturn {\n\t\t\tfields      : settings.searchField,\n\t\t\tconjunction : settings.searchConjunction,\n\t\t\tsort        : sort,\n\t\t\tnesting     : settings.nesting\n\t\t};\n\t}\n\n\t/**\n\t * Searches through available options and returns\n\t * a sorted array of matches.\n\t *\n\t */\n\tsearch(query:string) : ReturnType<Sifter['search']>{\n\t\tvar result, calculateScore;\n\t\tvar self     = this;\n\t\tvar options  = this.getSearchOptions();\n\n\t\t// validate user-provided result scoring function\n\t\tif ( self.settings.score ){\n\t\t\tcalculateScore = self.settings.score.call(self,query);\n\t\t\tif (typeof calculateScore !== 'function') {\n\t\t\t\tthrow new Error('Tom Select \"score\" setting must be a function that returns a function');\n\t\t\t}\n\t\t}\n\n\t\t// perform search\n\t\tif (query !== self.lastQuery) {\n\t\t\tself.lastQuery\t\t\t= query;\n\t\t\tresult\t\t\t\t\t= self.sifter.search(query, Object.assign(options, {score: calculateScore}));\n\t\t\tself.currentResults\t\t= result;\n\t\t} else {\n\t\t\tresult\t\t\t\t\t= Object.assign( {}, self.currentResults);\n\t\t}\n\n\t\t// filter out selected items\n\t\tif( self.settings.hideSelected ){\n\t\t\tresult.items = result.items.filter((item) => {\n\t\t\t\tlet hashed = hash_key(item.id);\n\t\t\t\treturn !(hashed && self.items.indexOf(hashed) !== -1 );\n\t\t\t});\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Refreshes the list of available options shown\n\t * in the autocomplete dropdown menu.\n\t *\n\t */\n\trefreshOptions( triggerDropdown:boolean = true ){\n\t\tvar i, j, k, n, optgroup, optgroups, html:DocumentFragment, has_create_option, active_group;\n\t\tvar create;\n\t\tconst groups: {[key:string]:DocumentFragment} = {};\n\n\t\tconst groups_order:string[]\t= [];\n\t\tvar self\t\t\t\t\t= this;\n\t\tvar query\t\t\t\t\t= self.inputValue();\n\t\tconst same_query\t\t\t= query === self.lastQuery || (query == '' && self.lastQuery == null);\n\t\tvar results\t\t\t\t\t= self.search(query);\n\t\tvar active_option\t\t\t= null;\n\t\tvar show_dropdown\t\t\t= self.settings.shouldOpen || false;\n\t\tvar dropdown_content\t\t= self.dropdown_content;\n\n\n\t\tif( same_query ){\n\t\t\tactive_option\t\t\t= self.activeOption;\n\n\t\t\tif( active_option ){\n\t\t\t\tactive_group = active_option.closest('[data-group]') as HTMLElement;\n\t\t\t}\n\t\t}\n\n\t\t// build markup\n\t\tn = results.items.length;\n\t\tif (typeof self.settings.maxOptions === 'number') {\n\t\t\tn = Math.min(n, self.settings.maxOptions);\n\t\t}\n\n\t\tif( n > 0 ){\n\t\t\tshow_dropdown = true;\n\t\t}\n\n\t\t// render and group available options individually\n\t\tfor (i = 0; i < n; i++) {\n\n\t\t\t// get option dom element\n\t\t\tlet item\t\t\t= results.items[i];\n\t\t\tif( !item ) continue;\n\n\t\t\tlet opt_value\t\t= item.id;\n\t\t\tlet option\t\t\t= self.options[opt_value];\n\n\t\t\tif( option === undefined ) continue;\n\n\t\t\tlet opt_hash\t\t= get_hash(opt_value);\n\t\t\tlet option_el\t\t= self.getOption(opt_hash,true) as HTMLElement;\n\n\t\t\t// toggle 'selected' class\n\t\t\tif( !self.settings.hideSelected ){\n\t\t\t\toption_el.classList.toggle('selected', self.items.includes(opt_hash) );\n\t\t\t}\n\n\t\t\toptgroup    = option[self.settings.optgroupField] || '';\n\t\t\toptgroups   = Array.isArray(optgroup) ? optgroup : [optgroup];\n\n\t\t\tfor (j = 0, k = optgroups && optgroups.length; j < k; j++) {\n\t\t\t\toptgroup = optgroups[j];\n\t\t\t\tif (!self.optgroups.hasOwnProperty(optgroup)) {\n\t\t\t\t\toptgroup = '';\n\t\t\t\t}\n\n\t\t\t\tlet group_fragment = groups[optgroup];\n\t\t\t\tif( group_fragment === undefined ){\n\t\t\t\t\tgroup_fragment = document.createDocumentFragment();\n\t\t\t\t\tgroups_order.push(optgroup);\n\t\t\t\t}\n\n\t\t\t\t// nodes can only have one parent, so if the option is in mutple groups, we need a clone\n\t\t\t\tif( j > 0 ){\n\t\t\t\t\toption_el = option_el.cloneNode(true) as HTMLElement;\n\t\t\t\t\tsetAttr(option_el,{id: option.$id+'-clone-'+j,'aria-selected':null});\n\t\t\t\t\toption_el.classList.add('ts-cloned');\n\t\t\t\t\tremoveClasses(option_el,'active');\n\n\n\t\t\t\t\t// make sure we keep the activeOption in the same group\n\t\t\t\t\tif( self.activeOption && self.activeOption.dataset.value == opt_value ){\n\t\t\t\t\t\tif( active_group && active_group.dataset.group === optgroup.toString() ){\n\t\t\t\t\t\t\tactive_option = option_el;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tgroup_fragment.appendChild(option_el);\n\t\t\t\tgroups[optgroup] = group_fragment;\n\t\t\t}\n\t\t}\n\n\t\t// sort optgroups\n\t\tif( self.settings.lockOptgroupOrder ){\n\t\t\tgroups_order.sort((a, b) => {\n\t\t\t\tconst grp_a\t\t= self.optgroups[a];\n\t\t\t\tconst grp_b\t\t= self.optgroups[b];\n\t\t\t\tconst a_order\t= grp_a && grp_a.$order || 0;\n\t\t\t\tconst b_order\t= grp_b && grp_b.$order || 0;\n\t\t\t\treturn a_order - b_order;\n\t\t\t});\n\t\t}\n\n\t\t// render optgroup headers & join groups\n\t\thtml = document.createDocumentFragment();\n\t\titerate( groups_order, (optgroup:string) => {\n\n\t\t\tlet group_fragment = groups[optgroup];\n\n\t\t\tif( !group_fragment || !group_fragment.children.length ) return;\n\n\t\t\tlet group_heading = self.optgroups[optgroup];\n\n\t\t\tif( group_heading !== undefined ){\n\n\t\t\t\tlet group_options = document.createDocumentFragment();\n\t\t\t\tlet header = self.render('optgroup_header', group_heading);\n\t\t\t\tappend( group_options, header );\n\t\t\t\tappend( group_options, group_fragment );\n\n\t\t\t\tlet group_html = self.render('optgroup', {group:group_heading,options:group_options} );\n\n\t\t\t\tappend( html, group_html );\n\n\t\t\t} else {\n\t\t\t\tappend( html, group_fragment );\n\t\t\t}\n\t\t});\n\n\t\tdropdown_content.innerHTML = '';\n\t\tappend( dropdown_content, html );\n\n\t\t// highlight matching terms inline\n\t\tif (self.settings.highlight) {\n\t\t\tremoveHighlight( dropdown_content );\n\t\t\tif (results.query.length && results.tokens.length) {\n\t\t\t\titerate( results.tokens, (tok) => {\n\t\t\t\t\thighlight( dropdown_content, tok.regex);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// helper method for adding templates to dropdown\n\t\tvar add_template = (template:TomTemplateNames) => {\n\t\t\tlet content = self.render(template,{input:query});\n\t\t\tif( content ){\n\t\t\t\tshow_dropdown = true;\n\t\t\t\tdropdown_content.insertBefore(content, dropdown_content.firstChild);\n\t\t\t}\n\t\t\treturn content;\n\t\t};\n\n\n\t\t// add loading message\n\t\tif( self.loading ){\n\t\t\tadd_template('loading');\n\n\t\t// invalid query\n\t\t}else if( !self.settings.shouldLoad.call(self,query) ){\n\t\t\tadd_template('not_loading');\n\n\t\t// add no_results message\n\t\t}else if( results.items.length === 0 ){\n\t\t\tadd_template('no_results');\n\n\t\t}\n\n\n\n\t\t// add create option\n\t\thas_create_option = self.canCreate(query);\n\t\tif (has_create_option) {\n\t\t\tcreate = add_template('option_create');\n\t\t}\n\n\n\t\t// activate\n\t\tself.hasOptions = results.items.length > 0 || has_create_option;\n\t\tif( show_dropdown ){\n\n\t\t\tif (results.items.length > 0) {\n\n\t\t\t\tif( !active_option && self.settings.mode === 'single' && self.items[0] != undefined ){\n\t\t\t\t\tactive_option = self.getOption(self.items[0]);\n\t\t\t\t}\n\n\t\t\t\tif( !dropdown_content.contains(active_option)  ){\n\n\t\t\t\t\tlet active_index = 0;\n\t\t\t\t\tif( create && !self.settings.addPrecedence ){\n\t\t\t\t\t\tactive_index = 1;\n\t\t\t\t\t}\n\t\t\t\t\tactive_option = self.selectable()[active_index] as HTMLElement;\n\t\t\t\t}\n\n\t\t\t}else if( create ){\n\t\t\t\tactive_option = create;\n\t\t\t}\n\n\t\t\tif( triggerDropdown && !self.isOpen ){\n\t\t\t\tself.open();\n\t\t\t\tself.scrollToOption(active_option,'auto');\n\t\t\t}\n\t\t\tself.setActiveOption(active_option);\n\n\t\t}else{\n\t\t\tself.clearActiveOption();\n\t\t\tif( triggerDropdown && self.isOpen ){\n\t\t\t\tself.close(false); // if create_option=null, we want the dropdown to close but not reset the textbox value\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Return list of selectable options\n\t *\n\t */\n\tselectable():NodeList{\n\t\treturn this.dropdown_content.querySelectorAll('[data-selectable]');\n\t}\n\n\n\n\t/**\n\t * Adds an available option. If it already exists,\n\t * nothing will happen. Note: this does not refresh\n\t * the options list dropdown (use `refreshOptions`\n\t * for that).\n\t *\n\t * Usage:\n\t *\n\t *   this.addOption(data)\n\t *\n\t */\n\taddOption( data:TomOption, user_created = false ):false|string {\n\t\tconst self = this;\n\n\t\t// @deprecated 1.7.7\n\t\t// use addOptions( array, user_created ) for adding multiple options\n\t\tif( Array.isArray(data) ){\n\t\t\tself.addOptions( data, user_created);\n\t\t\treturn false;\n\t\t}\n\n\t\tconst key = hash_key(data[self.settings.valueField]);\n\t\tif( key === null || self.options.hasOwnProperty(key) ){\n\t\t\treturn false;\n\t\t}\n\n\t\tdata.$order\t\t\t= data.$order || ++self.order;\n\t\tdata.$id\t\t\t= self.inputId + '-opt-' + data.$order;\n\t\tself.options[key]\t= data;\n\t\tself.lastQuery\t\t= null;\n\n\t\tif( user_created ){\n\t\t\tself.userOptions[key] = user_created;\n\t\t\tself.trigger('option_add', key, data);\n\t\t}\n\n\t\treturn key;\n\t}\n\n\t/**\n\t * Add multiple options\n\t *\n\t */\n\taddOptions( data:TomOption[], user_created = false ):void{\n\t\titerate( data, (dat:TomOption) => {\n\t\t\tthis.addOption(dat, user_created);\n\t\t});\n\t}\n\n\t/**\n\t * @deprecated 1.7.7\n\t */\n\tregisterOption( data:TomOption ):false|string {\n\t\treturn this.addOption(data);\n\t}\n\n\t/**\n\t * Registers an option group to the pool of option groups.\n\t *\n\t * @return {boolean|string}\n\t */\n\tregisterOptionGroup(data:TomOption) {\n\t\tvar key = hash_key(data[this.settings.optgroupValueField]);\n\n\t\tif ( key === null ) return false;\n\n\t\tdata.$order = data.$order || ++this.order;\n\t\tthis.optgroups[key] = data;\n\t\treturn key;\n\t}\n\n\t/**\n\t * Registers a new optgroup for options\n\t * to be bucketed into.\n\t *\n\t */\n\taddOptionGroup(id:string, data:TomOption) {\n\t\tvar hashed_id;\n\t\tdata[this.settings.optgroupValueField] = id;\n\n\t\tif( hashed_id = this.registerOptionGroup(data) ){\n\t\t\tthis.trigger('optgroup_add', hashed_id, data);\n\t\t}\n\t}\n\n\t/**\n\t * Removes an existing option group.\n\t *\n\t */\n\tremoveOptionGroup(id:string) {\n\t\tif (this.optgroups.hasOwnProperty(id)) {\n\t\t\tdelete this.optgroups[id];\n\t\t\tthis.clearCache();\n\t\t\tthis.trigger('optgroup_remove', id);\n\t\t}\n\t}\n\n\t/**\n\t * Clears all existing option groups.\n\t */\n\tclearOptionGroups() {\n\t\tthis.optgroups = {};\n\t\tthis.clearCache();\n\t\tthis.trigger('optgroup_clear');\n\t}\n\n\t/**\n\t * Updates an option available for selection. If\n\t * it is visible in the selected items or options\n\t * dropdown, it will be re-rendered automatically.\n\t *\n\t */\n\tupdateOption(value:string, data:TomOption) {\n\t\tconst self = this;\n\t\tvar item_new;\n\t\tvar index_item;\n\n\t\tconst value_old\t\t= hash_key(value);\n\t\tconst value_new\t\t= hash_key(data[self.settings.valueField]);\n\n\t\t// sanity checks\n\t\tif( value_old === null ) return;\n\n\t\tconst data_old\t\t= self.options[value_old];\n\n\t\tif( data_old == undefined ) return;\n\t\tif( typeof value_new !== 'string' ) throw new Error('Value must be set in option data');\n\n\n\t\tconst option\t\t= self.getOption(value_old);\n\t\tconst item\t\t\t= self.getItem(value_old);\n\n\n\t\tdata.$order = data.$order || data_old.$order;\n\t\tdelete self.options[value_old];\n\n\t\t// invalidate render cache\n\t\t// don't remove existing node yet, we'll remove it after replacing it\n\t\tself.uncacheValue(value_new);\n\n\t\tself.options[value_new] = data;\n\n\t\t// update the option if it's in the dropdown\n\t\tif( option ){\n\t\t\tif( self.dropdown_content.contains(option) ){\n\n\t\t\t\tconst option_new\t= self._render('option', data);\n\t\t\t\treplaceNode(option, option_new);\n\n\t\t\t\tif( self.activeOption === option ){\n\t\t\t\t\tself.setActiveOption(option_new);\n\t\t\t\t}\n\t\t\t}\n\t\t\toption.remove();\n\t\t}\n\n\t\t// update the item if we have one\n\t\tif( item ){\n\t\t\tindex_item = self.items.indexOf(value_old);\n\t\t\tif (index_item !== -1) {\n\t\t\t\tself.items.splice(index_item, 1, value_new);\n\t\t\t}\n\n\t\t\titem_new\t= self._render('item', data);\n\n\t\t\tif( item.classList.contains('active') ) addClasses(item_new,'active');\n\n\t\t\treplaceNode( item, item_new);\n\t\t}\n\n\t\t// invalidate last query because we might have updated the sortField\n\t\tself.lastQuery = null;\n\t}\n\n\t/**\n\t * Removes a single option.\n\t *\n\t */\n\tremoveOption(value:string, silent?:boolean):void {\n\t\tconst self = this;\n\t\tvalue = get_hash(value);\n\n\t\tself.uncacheValue(value);\n\n\t\tdelete self.userOptions[value];\n\t\tdelete self.options[value];\n\t\tself.lastQuery = null;\n\t\tself.trigger('option_remove', value);\n\t\tself.removeItem(value, silent);\n\t}\n\n\t/**\n\t * Clears all options.\n\t */\n\tclearOptions(filter?:TomClearFilter ) {\n\n\t\tconst boundFilter = (filter || this.clearFilter).bind(this);\n\n\t\tthis.loadedSearches\t\t= {};\n\t\tthis.userOptions\t\t= {};\n\t\tthis.clearCache();\n\n\t\tconst selected:TomOptions\t= {};\n\t\titerate(this.options,(option:TomOption,key:string)=>{\n\t\t\tif( boundFilter(option,key as string) ){\n\t\t\t\tselected[key] = option;\n\t\t\t}\n\t\t});\n\n\t\tthis.options = this.sifter.items = selected;\n\t\tthis.lastQuery = null;\n\t\tthis.trigger('option_clear');\n\t}\n\n\t/**\n\t * Used by clearOptions() to decide whether or not an option should be removed\n\t * Return true to keep an option, false to remove\n\t *\n\t */\n\tclearFilter(option:TomOption,value:string){\n\t\tif( this.items.indexOf(value) >= 0 ){\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Returns the dom element of the option\n\t * matching the given value.\n\t *\n\t */\n\tgetOption(value:undefined|null|boolean|string|number, create:boolean=false):null|HTMLElement {\n\n\t\tconst hashed = hash_key(value);\n\t\tif( hashed === null ) return null;\n\n\t\tconst option = this.options[hashed];\n\t\tif( option != undefined ){\n\n\t\t\tif( option.$div ){\n\t\t\t\treturn option.$div;\n\t\t\t}\n\n\t\t\tif( create ){\n\t\t\t\treturn this._render('option', option);\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Returns the dom element of the next or previous dom element of the same type\n\t * Note: adjacent options may not be adjacent DOM elements (optgroups)\n\t *\n\t */\n\tgetAdjacent( option:null|HTMLElement, direction:number, type:string = 'option' ) : HTMLElement|null{\n\t\tvar self = this, all;\n\n\t\tif( !option ){\n\t\t\treturn null;\n\t\t}\n\n\t\tif( type == 'item' ){\n\t\t\tall\t\t\t= self.controlChildren();\n\t\t}else{\n\t\t\tall\t\t\t= self.dropdown_content.querySelectorAll('[data-selectable]');\n\t\t}\n\n\t\tfor( let i = 0; i < all.length; i++ ){\n\t\t\tif( all[i] != option ){\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif( direction > 0 ){\n\t\t\t\treturn all[i+1] as HTMLElement;\n\t\t\t}\n\n\t\t\treturn all[i-1] as HTMLElement;\n\t\t}\n\t\treturn null;\n\t}\n\n\n\t/**\n\t * Returns the dom element of the item\n\t * matching the given value.\n\t *\n\t */\n\tgetItem(item:string|TomItem|null):null|TomItem {\n\n\t\tif( typeof item == 'object' ){\n\t\t\treturn item;\n\t\t}\n\n\t\tvar value = hash_key(item);\n\t\treturn value !== null\n\t\t\t? this.control.querySelector(`[data-value=\"${addSlashes(value)}\"]`)\n\t\t\t: null;\n\t}\n\n\t/**\n\t * \"Selects\" multiple items at once. Adds them to the list\n\t * at the current caret position.\n\t *\n\t */\n\taddItems( values:string|string[], silent?:boolean ):void{\n\t\tvar self = this;\n\n\t\tvar items = Array.isArray(values) ? values : [values];\n\t\titems = items.filter(x => self.items.indexOf(x) === -1);\n\t\tconst last_item = items[items.length - 1];\n\t\titems.forEach(item => {\n\t\t\tself.isPending = (item !== last_item);\n\t\t\tself.addItem(item, silent);\n\t\t});\n\t}\n\n\t/**\n\t * \"Selects\" an item. Adds it to the list\n\t * at the current caret position.\n\t *\n\t */\n\taddItem( value:string, silent?:boolean ):void{\n\t\tvar events = silent ? [] : ['change','dropdown_close'];\n\n\t\tdebounce_events(this, events, () => {\n\t\t\tvar item, wasFull;\n\t\t\tconst self = this;\n\t\t \tconst inputMode = self.settings.mode;\n\t\t\tconst hashed = hash_key(value);\n\n\t\t\tif( hashed && self.items.indexOf(hashed) !== -1 ){\n\n\t\t\t\tif( inputMode === 'single' ){\n\t\t\t\t\tself.close();\n\t\t\t\t}\n\n\t\t\t\tif( inputMode === 'single' || !self.settings.duplicates ){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (hashed === null || !self.options.hasOwnProperty(hashed)) return;\n\t\t\tif (inputMode === 'single') self.clear(silent);\n\t\t\tif (inputMode === 'multi' && self.isFull()) return;\n\n\t\t\titem = self._render('item', self.options[hashed]);\n\n\t\t\tif( self.control.contains(item) ){ // duplicates\n\t\t\t\titem = item.cloneNode(true) as HTMLElement;\n\t\t\t}\n\n\t\t\twasFull = self.isFull();\n\t\t\tself.items.splice(self.caretPos, 0, hashed);\n\t\t\tself.insertAtCaret(item);\n\n\t\t\tif (self.isSetup) {\n\n\t\t\t\t// update menu / remove the option (if this is not one item being added as part of series)\n\t\t\t\tif( !self.isPending && self.settings.hideSelected ){\n\t\t\t\t\tlet option = self.getOption(hashed);\n\t\t\t\t\tlet next = self.getAdjacent(option, 1);\n\t\t\t\t\tif( next ){\n\t\t\t\t\t\tself.setActiveOption(next);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// refreshOptions after setActiveOption(),\n\t\t\t\t// otherwise setActiveOption() will be called by refreshOptions() with the wrong value\n\t\t\t\tif( !self.isPending && !self.settings.closeAfterSelect ){\n\t\t\t\t\tself.refreshOptions(self.isFocused && inputMode !== 'single');\n\t\t\t\t}\n\n\t\t\t\t// hide the menu if the maximum number of items have been selected or no options are left\n\t\t\t\tif( self.settings.closeAfterSelect != false && self.isFull() ){\n\t\t\t\t\tself.close();\n\t\t\t\t} else if (!self.isPending) {\n\t\t\t\t\tself.positionDropdown();\n\t\t\t\t}\n\n\t\t\t\tself.trigger('item_add', hashed, item);\n\n\t\t\t\tif (!self.isPending) {\n\t\t\t\t\tself.updateOriginalInput({silent: silent});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!self.isPending || (!wasFull && self.isFull())) {\n\t\t\t\tself.inputState();\n\t\t\t\tself.refreshState();\n\t\t\t}\n\n\t\t});\n\t}\n\n\t/**\n\t * Removes the selected item matching\n\t * the provided value.\n\t *\n\t */\n\tremoveItem( item:string|TomItem|null=null, silent?:boolean ){\n\t\tconst self\t\t= this;\n\t\titem\t\t\t= self.getItem(item);\n\n\t\tif( !item ) return;\n\n\t\tvar i,idx;\n\t\tconst value\t= item.dataset.value;\n\t\ti = nodeIndex(item);\n\n\t\titem.remove();\n\t\tif( item.classList.contains('active') ){\n\t\t\tidx = self.activeItems.indexOf(item);\n\t\t\tself.activeItems.splice(idx, 1);\n\t\t\tremoveClasses(item,'active');\n\t\t}\n\n\t\tself.items.splice(i, 1);\n\t\tself.lastQuery = null;\n\t\tif (!self.settings.persist && self.userOptions.hasOwnProperty(value)) {\n\t\t\tself.removeOption(value, silent);\n\t\t}\n\n\t\tif (i < self.caretPos) {\n\t\t\tself.setCaret(self.caretPos - 1);\n\t\t}\n\n\t\tself.updateOriginalInput({silent: silent});\n\t\tself.refreshState();\n\t\tself.positionDropdown();\n\t\tself.trigger('item_remove', value, item);\n\n\t}\n\n\t/**\n\t * Invokes the `create` method provided in the\n\t * TomSelect options that should provide the data\n\t * for the new item, given the user input.\n\t *\n\t * Once this completes, it will be added\n\t * to the item list.\n\t *\n\t */\n\tcreateItem( input:null|string=null, callback:TomCreateCallback = ()=>{} ):boolean{\n\n\t\t// triggerDropdown parameter @deprecated 2.1.1\n\t\tif( arguments.length === 3 ){\n\t\t\tcallback = arguments[2];\n\t\t}\n\t\tif( typeof callback != 'function' ){\n\t\t\tcallback = () => {};\n\t\t}\n\n\t\tvar self  = this;\n\t\tvar caret = self.caretPos;\n\t\tvar output;\n\t\tinput = input || self.inputValue();\n\n\t\tif (!self.canCreate(input)) {\n\t\t\tcallback();\n\t\t\treturn false;\n\t\t}\n\n\t\tself.lock();\n\n\t\tvar created = false;\n\t\tvar create = (data?:boolean|TomOption) => {\n\t\t\tself.unlock();\n\n\t\t\tif (!data || typeof data !== 'object') return callback();\n\t\t\tvar value = hash_key(data[self.settings.valueField]);\n\t\t\tif( typeof value !== 'string' ){\n\t\t\t\treturn callback();\n\t\t\t}\n\n\t\t\tself.setTextboxValue();\n\t\t\tself.addOption(data,true);\n\t\t\tself.setCaret(caret);\n\t\t\tself.addItem(value);\n\t\t\tcallback(data);\n\t\t\tcreated = true;\n\t\t};\n\n\t\tif( typeof self.settings.create === 'function' ){\n\t\t\toutput = self.settings.create.call(this, input, create);\n\t\t}else{\n\t\t\toutput = {\n\t\t\t\t[self.settings.labelField]: input,\n\t\t\t\t[self.settings.valueField]: input,\n\t\t\t};\n\t\t}\n\n\t\tif( !created ){\n\t\t\tcreate(output);\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Re-renders the selected item lists.\n\t */\n\trefreshItems() {\n\t\tvar self = this;\n\t\tself.lastQuery = null;\n\n\t\tif (self.isSetup) {\n\t\t\tself.addItems(self.items);\n\t\t}\n\n\t\tself.updateOriginalInput();\n\t\tself.refreshState();\n\t}\n\n\t/**\n\t * Updates all state-dependent attributes\n\t * and CSS classes.\n\t */\n\trefreshState() {\n\t\tconst self     = this;\n\n\t\tself.refreshValidityState();\n\n\t\tconst isFull\t= self.isFull();\n\t\tconst isLocked\t= self.isLocked;\n\n\t\tself.wrapper.classList.toggle('rtl',self.rtl);\n\n\n\t\tconst wrap_classList = self.wrapper.classList;\n\n\t\twrap_classList.toggle('focus', self.isFocused)\n\t\twrap_classList.toggle('disabled', self.isDisabled)\n\t\twrap_classList.toggle('required', self.isRequired)\n\t\twrap_classList.toggle('invalid', !self.isValid)\n\t\twrap_classList.toggle('locked', isLocked)\n\t\twrap_classList.toggle('full', isFull)\n\t\twrap_classList.toggle('input-active', self.isFocused && !self.isInputHidden)\n\t\twrap_classList.toggle('dropdown-active', self.isOpen)\n\t\twrap_classList.toggle('has-options', isEmptyObject(self.options) )\n\t\twrap_classList.toggle('has-items', self.items.length > 0);\n\n\t}\n\n\n\t/**\n\t * Update the `required` attribute of both input and control input.\n\t *\n\t * The `required` property needs to be activated on the control input\n\t * for the error to be displayed at the right place. `required` also\n\t * needs to be temporarily deactivated on the input since the input is\n\t * hidden and can't show errors.\n\t */\n\trefreshValidityState() {\n\t\tvar self = this;\n\n\t\tif( !self.input.validity ){\n\t\t\treturn;\n\t\t}\n\n\t\tself.isValid = self.input.validity.valid;\n\t\tself.isInvalid = !self.isValid;\n\t}\n\n\t/**\n\t * Determines whether or not more items can be added\n\t * to the control without exceeding the user-defined maximum.\n\t *\n\t * @returns {boolean}\n\t */\n\tisFull() {\n\t\treturn this.settings.maxItems !== null && this.items.length >= this.settings.maxItems;\n\t}\n\n\t/**\n\t * Refreshes the original <select> or <input>\n\t * element to reflect the current state.\n\t *\n\t */\n\tupdateOriginalInput( opts:TomArgObject = {} ){\n\t\tconst self = this;\n\t\tvar option, label;\n\n\t\tconst empty_option = self.input.querySelector('option[value=\"\"]') as HTMLOptionElement;\n\n\t\tif( self.is_select_tag ){\n\n\t\t\tconst selected:HTMLOptionElement[]\t\t= [];\n\t\t\tconst has_selected:number\t\t\t\t= self.input.querySelectorAll('option:checked').length;\n\n\t\t\tfunction AddSelected(option_el:HTMLOptionElement|null, value:string, label:string):HTMLOptionElement{\n\n\t\t\t\tif( !option_el ){\n\t\t\t\t\toption_el = getDom('<option value=\"' + escape_html(value) + '\">' + escape_html(label) + '</option>') as HTMLOptionElement;\n\t\t\t\t}\n\n\t\t\t\t// don't move empty option from top of list\n\t\t\t\t// fixes bug in firefox https://bugzilla.mozilla.org/show_bug.cgi?id=1725293\n\t\t\t\tif( option_el != empty_option ){\n\t\t\t\t\tself.input.append(option_el);\n\t\t\t\t}\n\n\t\t\t\tselected.push(option_el);\n\n\t\t\t\t// marking empty option as selected can break validation\n\t\t\t\t// fixes https://github.com/orchidjs/tom-select/issues/303\n\t\t\t\tif( option_el != empty_option || has_selected > 0 ){\n\t\t\t\t\toption_el.selected = true;\n\t\t\t\t}\n\n\t\t\t\treturn option_el;\n\t\t\t}\n\n\t\t\t// unselect all selected options\n\t\t\tself.input.querySelectorAll('option:checked').forEach((option_el:Element) => {\n\t\t\t\t(<HTMLOptionElement>option_el).selected = false;\n\t\t\t});\n\n\n\t\t\t// nothing selected?\n\t\t\tif( self.items.length == 0 && self.settings.mode == 'single' ){\n\n\t\t\t\tAddSelected(empty_option, \"\", \"\");\n\n\t\t\t// order selected <option> tags for values in self.items\n\t\t\t}else{\n\n\t\t\t\tself.items.forEach((value)=>{\n\t\t\t\t\toption\t\t\t= self.options[value]!;\n\t\t\t\t\tlabel\t\t\t= option[self.settings.labelField] || '';\n\n\t\t\t\t\tif( selected.includes(option.$option) ){\n\t\t\t\t\t\tconst reuse_opt = self.input.querySelector(`option[value=\"${addSlashes(value)}\"]:not(:checked)`) as HTMLOptionElement;\n\t\t\t\t\t\tAddSelected(reuse_opt, value, label);\n\t\t\t\t\t}else{\n\t\t\t\t\t\toption.$option\t= AddSelected(option.$option, value, label);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t}\n\n\t\t} else {\n\t\t\tself.input.value = self.getValue() as string;\n\t\t}\n\n\t\tif (self.isSetup) {\n\t\t\tif (!opts.silent) {\n\t\t\t\tself.trigger('change', self.getValue() );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Shows the autocomplete dropdown containing\n\t * the available options.\n\t */\n\topen() {\n\t\tvar self = this;\n\n\t\tif (self.isLocked || self.isOpen || (self.settings.mode === 'multi' && self.isFull())) return;\n\t\tself.isOpen = true;\n\t\tsetAttr(self.focus_node,{'aria-expanded': 'true'});\n\t\tself.refreshState();\n\t\tapplyCSS(self.dropdown,{visibility: 'hidden', display: 'block'});\n\t\tself.positionDropdown();\n\t\tapplyCSS(self.dropdown,{visibility: 'visible', display: 'block'});\n\t\tself.focus();\n\t\tself.trigger('dropdown_open', self.dropdown);\n\t}\n\n\t/**\n\t * Closes the autocomplete dropdown menu.\n\t */\n\tclose(setTextboxValue=true) {\n\t\tvar self = this;\n\t\tvar trigger = self.isOpen;\n\n\t\tif( setTextboxValue ){\n\n\t\t\t// before blur() to prevent form onchange event\n\t\t\tself.setTextboxValue();\n\n\t\t\tif (self.settings.mode === 'single' && self.items.length) {\n\t\t\t\tself.hideInput();\n\t\t\t}\n\t\t}\n\n\t\tself.isOpen = false;\n\t\tsetAttr(self.focus_node,{'aria-expanded': 'false'});\n\t\tapplyCSS(self.dropdown,{display: 'none'});\n\t\tif( self.settings.hideSelected ){\n\t\t\tself.clearActiveOption();\n\t\t}\n\t\tself.refreshState();\n\n\t\tif (trigger) self.trigger('dropdown_close', self.dropdown);\n\t}\n\n\t/**\n\t * Calculates and applies the appropriate\n\t * position of the dropdown if dropdownParent = 'body'.\n\t * Otherwise, position is determined by css\n\t */\n\tpositionDropdown(){\n\n\t\tif( this.settings.dropdownParent !== 'body' ){\n\t\t\treturn;\n\t\t}\n\n\t\tvar context\t\t\t= this.control;\n\t\tvar rect\t\t\t= context.getBoundingClientRect();\n\t\tvar top\t\t\t\t= context.offsetHeight + rect.top  + window.scrollY;\n\t\tvar left\t\t\t= rect.left + window.scrollX;\n\n\n\t\tapplyCSS(this.dropdown,{\n\t\t\twidth : rect.width + 'px',\n\t\t\ttop   : top + 'px',\n\t\t\tleft  : left + 'px'\n\t\t});\n\n\t}\n\n\t/**\n\t * Resets / clears all selected items\n\t * from the control.\n\t *\n\t */\n\tclear(silent?:boolean) {\n\t\tvar self = this;\n\n\t\tif (!self.items.length) return;\n\n\t\tvar items = self.controlChildren();\n\t\titerate(items,(item:TomItem)=>{\n\t\t\tself.removeItem(item,true);\n\t\t});\n\n\t\tself.showInput();\n\t\tif( !silent ) self.updateOriginalInput();\n\t\tself.trigger('clear');\n\t}\n\n\t/**\n\t * A helper method for inserting an element\n\t * at the current caret position.\n\t *\n\t */\n\tinsertAtCaret(el:HTMLElement) {\n\t\tconst self\t\t= this;\n\t\tconst caret\t\t= self.caretPos;\n\t\tconst target\t= self.control;\n\n\t\ttarget.insertBefore(el, target.children[caret] || null);\n\t\tself.setCaret(caret + 1);\n\t}\n\n\t/**\n\t * Removes the current selected item(s).\n\t *\n\t */\n\tdeleteSelection(e:KeyboardEvent):boolean {\n\t\tvar direction, selection, caret, tail;\n\t\tvar self = this;\n\n\t\tdirection = (e && e.keyCode === constants.KEY_BACKSPACE) ? -1 : 1;\n\t\tselection = getSelection(self.control_input);\n\n\n\t\t// determine items that will be removed\n\t\tconst rm_items:TomItem[]\t= [];\n\n\t\tif (self.activeItems.length) {\n\n\t\t\ttail = getTail(self.activeItems, direction);\n\t\t\tcaret = nodeIndex(tail);\n\n\t\t\tif (direction > 0) { caret++; }\n\n\t\t\titerate(self.activeItems, (item:TomItem) => rm_items.push(item) );\n\n\t\t} else if ((self.isFocused || self.settings.mode === 'single') && self.items.length) {\n\t\t\tconst items = self.controlChildren();\n\t\t\tlet rm_item;\n\t\t\tif( direction < 0 && selection.start === 0 && selection.length === 0 ){\n\t\t\t\trm_item = items[self.caretPos - 1];\n\n\t\t\t}else if( direction > 0 && selection.start === self.inputValue().length ){\n\t\t\t\trm_item = items[self.caretPos];\n\t\t\t}\n\n\t\t\tif( rm_item !== undefined ){\n\t\t\t\trm_items.push( rm_item );\n\t\t\t}\n\t\t}\n\n\t\tif( !self.shouldDelete(rm_items,e) ){\n\t\t\treturn false;\n\t\t}\n\n\t\tpreventDefault(e,true);\n\n\t\t// perform removal\n\t\tif (typeof caret !== 'undefined') {\n\t\t\tself.setCaret(caret);\n\t\t}\n\n\t\twhile( rm_items.length ){\n\t\t\tself.removeItem(rm_items.pop());\n\t\t}\n\n\t\tself.showInput();\n\t\tself.positionDropdown();\n\t\tself.refreshOptions(false);\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Return true if the items should be deleted\n\t */\n\tshouldDelete(items:TomItem[],evt:MouseEvent|KeyboardEvent){\n\n\t\tconst values = items.map(item => item.dataset.value);\n\n\t\t// allow the callback to abort\n\t\tif( !values.length || (typeof this.settings.onDelete === 'function' && this.settings.onDelete(values,evt) === false) ){\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Selects the previous / next item (depending on the `direction` argument).\n\t *\n\t * > 0 - right\n\t * < 0 - left\n\t *\n\t */\n\tadvanceSelection(direction:number, e?:MouseEvent|KeyboardEvent) {\n\t\tvar last_active, adjacent, self = this;\n\n\t\tif (self.rtl) direction *= -1;\n\t\tif( self.inputValue().length ) return;\n\n\n\t\t// add or remove to active items\n\t\tif( isKeyDown(constants.KEY_SHORTCUT,e) || isKeyDown('shiftKey',e) ){\n\n\t\t\tlast_active\t\t\t= self.getLastActive(direction);\n\t\t\tif( last_active ){\n\n\t\t\t\tif( !last_active.classList.contains('active') ){\n\t\t\t\t\tadjacent\t\t\t= last_active;\n\t\t\t\t}else{\n\t\t\t\t\tadjacent\t\t\t= self.getAdjacent(last_active,direction,'item');\n\t\t\t\t}\n\n\t\t\t// if no active item, get items adjacent to the control input\n\t\t\t}else if( direction > 0 ){\n\t\t\t\tadjacent\t\t\t= self.control_input.nextElementSibling;\n\t\t\t}else{\n\t\t\t\tadjacent\t\t\t= self.control_input.previousElementSibling;\n\t\t\t}\n\n\n\t\t\tif( adjacent ){\n\t\t\t\tif( adjacent.classList.contains('active') ){\n\t\t\t\t\tself.removeActiveItem(last_active);\n\t\t\t\t}\n\t\t\t\tself.setActiveItemClass(adjacent); // mark as last_active !! after removeActiveItem() on last_active\n\t\t\t}\n\n\t\t// move caret to the left or right\n\t\t}else{\n\t\t\tself.moveCaret(direction);\n\t\t}\n\t}\n\n\tmoveCaret(direction:number){}\n\n\t/**\n\t * Get the last active item\n\t *\n\t */\n\tgetLastActive(direction?:number){\n\n\t\tlet last_active = this.control.querySelector('.last-active');\n\t\tif( last_active ){\n\t\t\treturn last_active;\n\t\t}\n\n\n\t\tvar result = this.control.querySelectorAll('.active');\n\t\tif( result ){\n\t\t\treturn getTail(result,direction);\n\t\t}\n\t}\n\n\n\t/**\n\t * Moves the caret to the specified index.\n\t *\n\t * The input must be moved by leaving it in place and moving the\n\t * siblings, due to the fact that focus cannot be restored once lost\n\t * on mobile webkit devices\n\t *\n\t */\n\tsetCaret(new_pos:number) {\n\t\tthis.caretPos = this.items.length;\n\t}\n\n\t/**\n\t * Return list of item dom elements\n\t *\n\t */\n\tcontrolChildren():TomItem[]{\n\t\treturn Array.from( this.control.querySelectorAll('[data-ts-item]') ) as TomItem[];\n\t}\n\n\t/**\n\t * Disables user input on the control. Used while\n\t * items are being asynchronously created.\n\t */\n\tlock() {\n\t\tthis.isLocked = true;\n\t\tthis.refreshState();\n\t}\n\n\t/**\n\t * Re-enables user input on the control.\n\t */\n\tunlock() {\n\t\tthis.isLocked = false;\n\t\tthis.refreshState();\n\t}\n\n\t/**\n\t * Disables user input on the control completely.\n\t * While disabled, it cannot receive focus.\n\t */\n\tdisable() {\n\t\tvar self = this;\n\t\tself.input.disabled\t\t\t\t= true;\n\t\tself.control_input.disabled\t\t= true;\n\t\tself.focus_node.tabIndex\t\t= -1;\n\t\tself.isDisabled\t\t\t\t\t= true;\n\t\tthis.close();\n\t\tself.lock();\n\t}\n\n\t/**\n\t * Enables the control so that it can respond\n\t * to focus and user input.\n\t */\n\tenable() {\n\t\tvar self = this;\n\t\tself.input.disabled\t\t\t\t= false;\n\t\tself.control_input.disabled\t\t= false;\n\t\tself.focus_node.tabIndex\t\t= self.tabIndex;\n\t\tself.isDisabled\t\t\t\t\t= false;\n\t\tself.unlock();\n\t}\n\n\t/**\n\t * Completely destroys the control and\n\t * unbinds all event listeners so that it can\n\t * be garbage collected.\n\t */\n\tdestroy() {\n\t\tvar self = this;\n\t\tvar revertSettings = self.revertSettings;\n\n\t\tself.trigger('destroy');\n\t\tself.off();\n\t\tself.wrapper.remove();\n\t\tself.dropdown.remove();\n\n\t\tself.input.innerHTML = revertSettings.innerHTML;\n\t\tself.input.tabIndex = revertSettings.tabIndex;\n\n\t\tremoveClasses(self.input,'tomselected','ts-hidden-accessible');\n\n\t\tself._destroy();\n\n\t\tdelete self.input.tomselect;\n\t}\n\n\t/**\n\t * A helper method for rendering \"item\" and\n\t * \"option\" templates, given the data.\n\t *\n\t */\n\trender( templateName:TomTemplateNames, data?:any ):null|HTMLElement{\n\t\tvar id, html;\n\t\tconst self = this;\n\n\t\tif( typeof this.settings.render[templateName] !== 'function' ){\n\t\t\treturn null;\n\t\t}\n\n\t\t// render markup\n\t\thtml = self.settings.render[templateName].call(this, data, escape_html);\n\n\t\tif( !html ){\n\t\t\treturn null;\n\t\t}\n\n\t\thtml = getDom( html );\n\n\t\t// add mandatory attributes\n\t\tif (templateName === 'option' || templateName === 'option_create') {\n\n\t\t\tif( data[self.settings.disabledField] ){\n\t\t\t\tsetAttr(html,{'aria-disabled':'true'});\n\t\t\t}else{\n\t\t\t\tsetAttr(html,{'data-selectable': ''});\n\t\t\t}\n\n\t\t}else if (templateName === 'optgroup') {\n\t\t\tid = data.group[self.settings.optgroupValueField];\n\t\t\tsetAttr(html,{'data-group': id});\n\t\t\tif(data.group[self.settings.disabledField]) {\n\t\t\t\tsetAttr(html,{'data-disabled': ''});\n\t\t\t}\n\t\t}\n\n\t\tif (templateName === 'option' || templateName === 'item') {\n\t\t\tconst value\t= get_hash(data[self.settings.valueField]);\n\t\t\tsetAttr(html,{'data-value': value });\n\n\n\t\t\t// make sure we have some classes if a template is overwritten\n\t\t\tif( templateName === 'item' ){\n\t\t\t\taddClasses(html,self.settings.itemClass);\n\t\t\t\tsetAttr(html,{'data-ts-item':''});\n\t\t\t}else{\n\t\t\t\taddClasses(html,self.settings.optionClass);\n\t\t\t\tsetAttr(html,{\n\t\t\t\t\trole:'option',\n\t\t\t\t\tid:data.$id\n\t\t\t\t});\n\n\t\t\t\t// update cache\n\t\t\t\tdata.$div = html;\n\t\t\t\tself.options[value] = data;\n\t\t\t}\n\n\n\t\t}\n\n\t\treturn html;\n\n\t}\n\n\n\t/**\n\t * Type guarded rendering\n\t *\n\t */\n\t_render( templateName:TomTemplateNames, data?:any ):HTMLElement{\n\t\tconst html = this.render(templateName, data);\n\n\t\tif( html == null ){\n\t\t\tthrow 'HTMLElement expected';\n\t\t}\n\t\treturn html;\n\t}\n\n\n\t/**\n\t * Clears the render cache for a template. If\n\t * no template is given, clears all render\n\t * caches.\n\t *\n\t */\n\tclearCache():void{\n\n\t\titerate(this.options, (option:TomOption)=>{\n\t\t\tif( option.$div ){\n\t\t\t\toption.$div.remove();\n\t\t\t\tdelete option.$div;\n\t\t\t}\n\t\t});\n\n\t}\n\n\t/**\n\t * Removes a value from item and option caches\n\t *\n\t */\n\tuncacheValue(value:string){\n\n\t\tconst option_el\t\t\t= this.getOption(value);\n\t\tif( option_el ) option_el.remove();\n\n\t}\n\n\t/**\n\t * Determines whether or not to display the\n\t * create item prompt, given a user input.\n\t *\n\t */\n\tcanCreate( input:string ):boolean {\n\t\treturn this.settings.create && (input.length > 0) && (this.settings.createFilter as TomCreateFilter ).call(this, input);\n\t}\n\n\n\t/**\n\t * Wraps this.`method` so that `new_fn` can be invoked 'before', 'after', or 'instead' of the original method\n\t *\n\t * this.hook('instead','onKeyDown',function( arg1, arg2 ...){\n\t *\n\t * });\n\t */\n\thook( when:string, method:string, new_fn:any ){\n\t\tvar self = this;\n\t\tvar orig_method = self[method];\n\n\n\t\tself[method] = function(){\n\t\t\tvar result, result_new;\n\n\t\t\tif( when === 'after' ){\n\t\t\t\tresult = orig_method.apply(self, arguments);\n\t\t\t}\n\n\t\t\tresult_new = new_fn.apply(self, arguments );\n\n\t\t\tif( when === 'instead' ){\n\t\t\t\treturn result_new;\n\t\t\t}\n\n\t\t\tif( when === 'before' ){\n\t\t\t\tresult = orig_method.apply(self, arguments);\n\t\t\t}\n\n\t\t\treturn result;\n\t\t};\n\n\t}\n\n};\n", "/**\n * Plugin: \"change_listener\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { addEvent } from '../../utils';\n\nexport default function(this:TomSelect) {\n\taddEvent(this.input,'change',()=>{\n\t\tthis.sync();\n\t});\n};\n", "/**\n * Plugin: \"restore_on_backspace\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { preventDefault, hash_key } from '../../utils';\nimport { getDom } from '../../vanilla';\n\n\nexport default function(this:TomSelect) {\n\tvar self = this;\n\tvar orig_onOptionSelect = self.onOptionSelect;\n\n\tself.settings.hideSelected = false;\n\n\n\t// update the checkbox for an option\n\tvar UpdateCheckbox = function(option:HTMLElement){\n\t\tsetTimeout(()=>{\n\t\t\tvar checkbox = option.querySelector('input');\n\t\t\tif( checkbox instanceof HTMLInputElement ){\n\t\t\t\tif( option.classList.contains('selected') ){\n\t\t\t\t\tcheckbox.checked = true;\n\t\t\t\t}else{\n\t\t\t\t\tcheckbox.checked = false;\n\t\t\t\t}\n\t\t\t}\n\t\t},1);\n\t};\n\n\t// add checkbox to option template\n\tself.hook('after','setupTemplates',() => {\n\n\t\tvar orig_render_option = self.settings.render.option;\n\n\t\tself.settings.render.option = (data, escape_html) => {\n\t\t\tvar rendered = getDom(orig_render_option.call(self, data, escape_html));\n\t\t\tvar checkbox = document.createElement('input');\n\t\t\tcheckbox.addEventListener('click',function(evt){\n\t\t\t\tpreventDefault(evt);\n\t\t\t});\n\n\t\t\tcheckbox.type = 'checkbox';\n\t\t\tconst hashed = hash_key(data[self.settings.valueField]);\n\n\n\t\t\tif( hashed && self.items.indexOf(hashed) > -1 ){\n\t\t\t\tcheckbox.checked = true;\n\t\t\t}\n\n\t\t\trendered.prepend(checkbox);\n\t\t\treturn rendered;\n\t\t};\n\t});\n\n\t// uncheck when item removed\n\tself.on('item_remove',(value:string) => {\n\t\tvar option = self.getOption(value);\n\n\t\tif( option ){ // if dropdown hasn't been opened yet, the option won't exist\n\t\t\toption.classList.remove('selected'); // selected class won't be removed yet\n\t\t\tUpdateCheckbox(option);\n\t\t}\n\t});\n\n\t// check when item added\n\tself.on('item_add',(value:string) => {\n\t\tvar option = self.getOption(value);\n\n\t\tif( option ){ // if dropdown hasn't been opened yet, the option won't exist\n\t\t\tUpdateCheckbox(option);\n\t\t}\n\t});\n\n\n\t// remove items when selected option is clicked\n\tself.hook('instead','onOptionSelect',( evt:KeyboardEvent, option:HTMLElement )=>{\n\n\t\tif( option.classList.contains('selected') ){\n\t\t\toption.classList.remove('selected')\n\t\t\tself.removeItem(option.dataset.value);\n\t\t\tself.refreshOptions();\n\t\t\tpreventDefault(evt,true);\n\t\t\treturn;\n        }\n\n\t\torig_onOptionSelect.call(self, evt, option);\n\n\t\tUpdateCheckbox(option);\n\t});\n\n};\n", "/**\n * Plugin: \"dropdown_header\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { getDom } from '../../vanilla';\nimport { CBOptions } from './types';\n\nexport default function(this:TomSelect, userOptions:CBOptions) {\n\tconst self = this;\n\n\tconst options = Object.assign({\n\t\tclassName: 'clear-button',\n\t\ttitle: 'Clear All',\n\t\thtml: (data:CBOptions) => {\n\t\t\treturn `<div class=\"${data.className}\" title=\"${data.title}\">&#10799;</div>`;\n\t\t}\n\t}, userOptions);\n\n\tself.on('initialize',()=>{\n\t\tvar button = getDom(options.html(options));\n\t\tbutton.addEventListener('click',(evt)=>{\n\n\t\t\tif( self.isDisabled ){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tself.clear();\n\n\t\t\tif( self.settings.mode === 'single' && self.settings.allowEmptyOption ){\n\t\t\t\tself.addItem('');\n\t\t\t}\n\n\t\t\tevt.preventDefault();\n\t\t\tevt.stopPropagation();\n\t\t});\n\t\tself.control.appendChild(button);\n\t});\n\n};\n", "/**\n * Plugin: \"drag_drop\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\n\nexport default function(this:TomSelect) {\n\tvar self = this;\n\tif (!$.fn.sortable) throw new Error('The \"drag_drop\" plugin requires jQuery UI \"sortable\".');\n\tif (self.settings.mode !== 'multi') return;\n\n\tvar orig_lock\t\t= self.lock;\n\tvar orig_unlock\t\t= self.unlock;\n\n\tself.hook('instead','lock',()=>{\n\t\tvar sortable = $(self.control).data('sortable');\n\t\tif (sortable) sortable.disable();\n\t\treturn orig_lock.call(self);\n\t});\n\n\tself.hook('instead','unlock',()=>{\n\t\tvar sortable = $(self.control).data('sortable');\n\t\tif (sortable) sortable.enable();\n\t\treturn orig_unlock.call(self);\n\t});\n\n\tself.on('initialize',()=>{\n\t\tvar $control = $(self.control).sortable({\n\t\t\titems: '[data-value]',\n\t\t\tforcePlaceholderSize: true,\n\t\t\tdisabled: self.isLocked,\n\t\t\tstart: (e, ui) => {\n\t\t\t\tui.placeholder.css('width', ui.helper.css('width'));\n\t\t\t\t$control.css({overflow: 'visible'});\n\t\t\t},\n\t\t\tstop: ()=>{\n\t\t\t\t$control.css({overflow: 'hidden'});\n\n\t\t\t\tvar values:string[] = [];\n\t\t\t\t$control.children('[data-value]').each(function(this:HTMLElement){\n\t\t\t\t\tif( this.dataset.value ) values.push(this.dataset.value);\n\t\t\t\t});\n\n\t\t\t\tself.setValue(values);\n\t\t\t}\n\t\t});\n\n\t});\n\n};\n", "/**\n * Plugin: \"dropdown_header\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { getDom } from '../../vanilla';\nimport { preventDefault } from '../../utils';\nimport { DHOptions } from './types';\n\nexport default function(this:TomSelect, userOptions:DHOptions) {\n\tconst self = this;\n\n\tconst options = Object.assign({\n\t\ttitle         : 'Untitled',\n\t\theaderClass   : 'dropdown-header',\n\t\ttitleRowClass : 'dropdown-header-title',\n\t\tlabelClass    : 'dropdown-header-label',\n\t\tcloseClass    : 'dropdown-header-close',\n\n\t\thtml: (data:DHOptions) => {\n\t\t\treturn (\n\t\t\t\t'<div class=\"' + data.headerClass + '\">' +\n\t\t\t\t\t'<div class=\"' + data.titleRowClass + '\">' +\n\t\t\t\t\t\t'<span class=\"' + data.labelClass + '\">' + data.title + '</span>' +\n\t\t\t\t\t\t'<a class=\"' + data.closeClass + '\">&times;</a>' +\n\t\t\t\t\t'</div>' +\n\t\t\t\t'</div>'\n\t\t\t);\n\t\t}\n\t}, userOptions);\n\n\tself.on('initialize',()=>{\n\t\tvar header = getDom(options.html(options));\n\n\t\tvar close_link = header.querySelector('.'+options.closeClass);\n\t\tif( close_link ){\n\t\t\tclose_link.addEventListener('click',(evt)=>{\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t\tself.close();\n\t\t\t});\n\t\t}\n\n\t\tself.dropdown.insertBefore(header, self.dropdown.firstChild);\n\t});\n\n};\n", "/**\n * Plugin: \"dropdown_input\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { nodeIndex, removeClasses } from '../../vanilla';\n\n\nexport default function(this:TomSelect) {\n\tvar self = this;\n\n\t/**\n\t * Moves the caret to the specified index.\n\t *\n\t * The input must be moved by leaving it in place and moving the\n\t * siblings, due to the fact that focus cannot be restored once lost\n\t * on mobile webkit devices\n\t *\n\t */\n\tself.hook('instead','setCaret',(new_pos:number) => {\n\n\t\tif( self.settings.mode === 'single' || !self.control.contains(self.control_input) ) {\n\t\t\tnew_pos = self.items.length;\n\t\t} else {\n\t\t\tnew_pos = Math.max(0, Math.min(self.items.length, new_pos));\n\n\t\t\tif( new_pos != self.caretPos && !self.isPending ){\n\n\t\t\t\tself.controlChildren().forEach((child,j) => {\n\t\t\t\t\tif( j < new_pos ){\n\t\t\t\t\t\tself.control_input.insertAdjacentElement('beforebegin', child );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.control.appendChild( child );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tself.caretPos = new_pos;\n\t});\n\n\tself.hook('instead','moveCaret',(direction:number) => {\n\n\t\tif( !self.isFocused ) return;\n\n\t\t// move caret before or after selected items\n\t\tconst last_active\t\t= self.getLastActive(direction);\n\t\tif( last_active ){\n\t\t\tconst idx = nodeIndex(last_active);\n\t\t\tself.setCaret(direction > 0 ? idx + 1: idx);\n\t\t\tself.setActiveItem();\n\t\t\tremoveClasses(last_active as HTMLElement,'last-active');\n\n\t\t// move caret left or right of current position\n\t\t}else{\n\t\t\tself.setCaret(self.caretPos + direction);\n\n\t\t}\n\n\t});\n\n};\n", "/**\n * Plugin: \"dropdown_input\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport * as constants from '../../constants';\nimport { getDom, addClasses } from '../../vanilla';\nimport { addEvent, preventDefault } from '../../utils';\n\n\nexport default function(this:TomSelect) {\n\tconst self = this;\n\n\tself.settings.shouldOpen = true; // make sure the input is shown even if there are no options to display in the dropdown\n\n\tself.hook('before','setup',()=>{\n\t\tself.focus_node\t\t= self.control;\n\n\t\taddClasses( self.control_input, 'dropdown-input');\n\n\t \tconst div = getDom('<div class=\"dropdown-input-wrap\">');\n\t\tdiv.append(self.control_input);\n\t\tself.dropdown.insertBefore(div, self.dropdown.firstChild);\n\n\t\t// set a placeholder in the select control\n\t\tconst placeholder = getDom('<input class=\"items-placeholder\" tabindex=\"-1\" />') as HTMLInputElement;\n\t\tplaceholder.placeholder = self.settings.placeholder ||'';\n\t\tself.control.append(placeholder);\n\n\t});\n\n\n\tself.on('initialize',()=>{\n\n\t\t// set tabIndex on control to -1, otherwise [shift+tab] will put focus right back on control_input\n\t\tself.control_input.addEventListener('keydown',(evt:KeyboardEvent) =>{\n\t\t//addEvent(self.control_input,'keydown' as const,(evt:KeyboardEvent) =>{\n\t\t\tswitch( evt.keyCode ){\n\t\t\t\tcase constants.KEY_ESC:\n\t\t\t\t\tif (self.isOpen) {\n\t\t\t\t\t\tpreventDefault(evt,true);\n\t\t\t\t\t\tself.close();\n\t\t\t\t\t}\n\t\t\t\t\tself.clearActiveItems();\n\t\t\t\treturn;\n\t\t\t\tcase constants.KEY_TAB:\n\t\t\t\t\tself.focus_node.tabIndex = -1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\treturn self.onKeyDown.call(self,evt);\n\t\t});\n\n\t\tself.on('blur',()=>{\n\t\t\tself.focus_node.tabIndex = self.isDisabled ? -1 : self.tabIndex;\n\t\t});\n\n\n\t\t// give the control_input focus when the dropdown is open\n\t\tself.on('dropdown_open',() =>{\n\t\t\tself.control_input.focus();\n\t\t});\n\n\t\t// prevent onBlur from closing when focus is on the control_input\n\t\tconst orig_onBlur = self.onBlur;\n\t\tself.hook('instead','onBlur',(evt?:FocusEvent)=>{\n\t\t\tif( evt && evt.relatedTarget == self.control_input ) return;\n\t\t\treturn orig_onBlur.call(self);\n\t\t});\n\n\t\taddEvent(self.control_input,'blur', () => self.onBlur() );\n\n\t\t// return focus to control to allow further keyboard input\n\t\tself.hook('before','close',() =>{\n\n\t\t\tif( !self.isOpen ) return;\n\t\t\tself.focus_node.focus({preventScroll: true});\n\t\t});\n\n\t});\n\n};\n", "/**\n * Plugin: \"input_autogrow\" (Tom Select)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { addEvent } from '../../utils';\n\nexport default function(this:TomSelect) {\n\tvar self\t\t\t\t\t= this;\n\n\tself.on('initialize',()=>{\n\n\n\t\tvar test_input\t\t\t\t= document.createElement('span');\n\t\tvar control\t\t\t\t\t= self.control_input;\n\t\ttest_input.style.cssText\t= 'position:absolute; top:-99999px; left:-99999px; width:auto; padding:0; white-space:pre; ';\n\n\t\tself.wrapper.appendChild(test_input);\n\n\n\t\tvar transfer_styles\t\t\t= [ 'letterSpacing', 'fontSize', 'fontFamily', 'fontWeight', 'textTransform' ];\n\n\t\tfor( const style_name of transfer_styles ){\n\t\t\t// @ts-ignore TS7015 https://stackoverflow.com/a/50506154/697576\n\t\t\ttest_input.style[style_name] = control.style[style_name];\n\t\t}\n\n\n\t\t/**\n\t\t * Set the control width\n\t\t *\n\t\t */\n\t\tvar resize = ()=>{\n\t\t\ttest_input.textContent\t= control.value;\n\t\t\tcontrol.style.width\t\t= test_input.clientWidth+'px';\n\t\t};\n\n\t\tresize();\n\t\tself.on('update item_add item_remove',resize);\n\t\taddEvent(control,'input', resize );\n\t\taddEvent(control,'keyup', resize );\n\t\taddEvent(control,'blur', resize );\n\t\taddEvent(control,'update', resize );\n\t});\n\n};\n", "/**\n * Plugin: \"input_autogrow\" (Tom Select)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\n\nexport default function(this:TomSelect) {\n\tvar self = this;\n\tvar orig_deleteSelection = self.deleteSelection;\n\n\tthis.hook('instead','deleteSelection',(evt:KeyboardEvent) => {\n\n\t\tif( self.activeItems.length ){\n\t\t\treturn orig_deleteSelection.call(self, evt);\n\t\t}\n\n\t\treturn false;\n\t});\n\n};\n", "/**\n * Plugin: \"no_active_items\" (Tom Select)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\n\nexport default function(this:TomSelect) {\n\tthis.hook('instead','setActiveItem',() => {});\n\tthis.hook('instead','selectAll',() => {});\n};\n", "/**\n * Plugin: \"optgroup_columns\" (Tom Select.js)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport * as constants from '../../constants';\nimport { parentMatch, nodeIndex } from '../../vanilla';\n\nexport default function(this:TomSelect) {\n\tvar self = this;\n\n\tvar orig_keydown = self.onKeyDown;\n\n\tself.hook('instead','onKeyDown',(evt:KeyboardEvent)=>{\n\t\tvar index, option, options, optgroup;\n\n\t\tif( !self.isOpen || !(evt.keyCode === constants.KEY_LEFT || evt.keyCode === constants.KEY_RIGHT)) {\n\t\t\treturn orig_keydown.call(self,evt);\n\t\t}\n\n\t\tself.ignoreHover\t= true;\n\t\toptgroup\t\t\t= parentMatch(self.activeOption,'[data-group]');\n\t\tindex\t\t\t\t= nodeIndex(self.activeOption,'[data-selectable]');\n\n\t\tif( !optgroup ){\n\t\t\treturn;\n\t\t}\n\n\t\tif( evt.keyCode === constants.KEY_LEFT ){\n\t\t\toptgroup = optgroup.previousSibling;\n\t\t} else {\n\t\t\toptgroup = optgroup.nextSibling;\n\t\t}\n\n\t\tif( !optgroup ){\n\t\t\treturn;\n\t\t}\n\n\t\toptions\t\t\t\t= (<HTMLOptGroupElement>optgroup).querySelectorAll('[data-selectable]');\n\t\toption\t\t\t\t= options[ Math.min(options.length - 1, index) ] as HTMLElement;\n\n\t\tif( option ){\n\t\t\tself.setActiveOption(option);\n\t\t}\n\n\t});\n\n};\n", "/**\n * Plugin: \"remove_button\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { getDom } from '../../vanilla';\nimport { escape_html, preventDefault, addEvent } from '../../utils';\nimport { TomOption, TomItem } from '../../types/index';\nimport { RBOptions } from './types';\n\nexport default function(this:TomSelect, userOptions:RBOptions) {\n\n\tconst options = Object.assign({\n\t\t\tlabel     : '&times;',\n\t\t\ttitle     : 'Remove',\n\t\t\tclassName : 'remove',\n\t\t\tappend    : true\n\t\t}, userOptions);\n\n\n\t//options.className = 'remove-single';\n\tvar self\t\t\t= this;\n\n\t// override the render method to add remove button to each item\n\tif( !options.append ){\n\t\treturn;\n\t}\n\n\tvar html = '<a href=\"javascript:void(0)\" class=\"' + options.className + '\" tabindex=\"-1\" title=\"' + escape_html(options.title) + '\">' + options.label + '</a>';\n\n\tself.hook('after','setupTemplates',() => {\n\n\t\tvar orig_render_item = self.settings.render.item;\n\n\t\tself.settings.render.item = (data:TomOption, escape:typeof escape_html) => {\n\n\t\t\tvar item = getDom(orig_render_item.call(self, data, escape)) as TomItem;\n\n\t\t\tvar close_button = getDom(html);\n\t\t\titem.appendChild(close_button);\n\n\t\t\taddEvent(close_button,'mousedown',(evt) => {\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t});\n\n\t\t\taddEvent(close_button,'click',(evt) => {\n\n\t\t\t\t// propagating will trigger the dropdown to show for single mode\n\t\t\t\tpreventDefault(evt,true);\n\n\t\t\t\tif( self.isLocked ) return;\n\t\t\t\tif( !self.shouldDelete([item],evt as MouseEvent) ) return;\n\n\t\t\t\tself.removeItem(item);\n\t\t\t\tself.refreshOptions(false);\n\t\t\t\tself.inputState();\n\t\t\t});\n\n\t\t\treturn item;\n\t\t};\n\n\t});\n\n\n};\n", "/**\n * Plugin: \"restore_on_backspace\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\nimport TomSelect from '../../tom-select';\nimport { TomOption } from '../../types/index';\n\ntype TPluginOptions = {\n\ttext?:(option:TomOption)=>string,\n};\n\nexport default function(this:TomSelect, userOptions:TPluginOptions) {\n\tconst self = this;\n\n\tconst options = Object.assign({\n\t\ttext: (option:TomOption) => {\n\t\t\treturn option[self.settings.labelField];\n\t\t}\n\t},userOptions);\n\n\tself.on('item_remove',function(value:string){\n\t\tif( !self.isFocused ){\n\t\t\treturn;\n\t\t}\n\n\t\tif( self.control_input.value.trim() === '' ){\n\t\t\tvar option = self.options[value];\n\t\t\tif( option ){\n\t\t\t\tself.setTextboxValue(options.text.call(self, option));\n\t\t\t}\n\t\t}\n\t});\n\n};\n", "/**\n * Plugin: \"restore_on_backspace\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { TomOption } from '../../types/index';\nimport { addClasses } from '../../vanilla';\n\nexport default function(this:TomSelect) {\n\tconst self\t\t\t\t\t\t\t= this;\n\tconst orig_canLoad\t\t\t\t\t= self.canLoad;\n\tconst orig_clearActiveOption\t\t= self.clearActiveOption;\n\tconst orig_loadCallback\t\t\t\t= self.loadCallback;\n\n\tvar pagination:{[key:string]:any}\t= {};\n\tvar dropdown_content:HTMLElement;\n\tvar loading_more\t\t\t\t\t= false;\n\tvar load_more_opt:HTMLElement;\n\tvar default_values: string[]\t\t= [];\n\n\tif( !self.settings.shouldLoadMore ){\n\n\t\t// return true if additional results should be loaded\n\t\tself.settings.shouldLoadMore = ():boolean=>{\n\n\t\t\tconst scroll_percent = dropdown_content.clientHeight / (dropdown_content.scrollHeight - dropdown_content.scrollTop);\n\t\t\tif( scroll_percent > 0.9 ){\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif( self.activeOption ){\n\t\t\t\tvar selectable\t= self.selectable();\n\t\t\t\tvar index\t\t= Array.from(selectable).indexOf(self.activeOption);\n\t\t\t\tif( index >= (selectable.length-2) ){\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\t}\n\n\n\tif( !self.settings.firstUrl ){\n\t\tthrow 'virtual_scroll plugin requires a firstUrl() method';\n\t}\n\n\n\t// in order for virtual scrolling to work,\n\t// options need to be ordered the same way they're returned from the remote data source\n\tself.settings.sortField\t\t\t= [{field:'$order'},{field:'$score'}];\n\n\n\t// can we load more results for given query?\n\tconst canLoadMore = (query:string):boolean => {\n\n\t\tif( typeof self.settings.maxOptions === 'number' && dropdown_content.children.length >= self.settings.maxOptions ){\n\t\t\treturn false;\n\t\t}\n\n\t\tif( (query in pagination) && pagination[query] ){\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tconst clearFilter = (option:TomOption, value:string):boolean => {\n\t\tif( self.items.indexOf(value) >= 0 || default_values.indexOf(value) >= 0 ){\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t};\n\n\n\t// set the next url that will be\n\tself.setNextUrl = (value:string,next_url:any):void => {\n\t\tpagination[value] = next_url;\n\t};\n\n\t// getUrl() to be used in settings.load()\n\tself.getUrl = (query:string):any =>{\n\n\t\tif( query in pagination ){\n\t\t\tconst next_url = pagination[query];\n\t\t\tpagination[query] = false;\n\t\t\treturn next_url;\n\t\t}\n\n\t\t// if the user goes back to a previous query\n\t\t// we need to load the first page again\n\t\tpagination = {};\n\n\t\treturn self.settings.firstUrl.call(self,query);\n\t};\n\n\n\t// don't clear the active option (and cause unwanted dropdown scroll)\n\t// while loading more results\n\tself.hook('instead','clearActiveOption',()=>{\n\n\t\tif( loading_more ){\n\t\t\treturn;\n\t\t}\n\n\t\treturn orig_clearActiveOption.call(self);\n\t});\n\n\t// override the canLoad method\n\tself.hook('instead','canLoad',(query:string)=>{\n\n\t\t// first time the query has been seen\n\t\tif( !(query in pagination) ){\n\t\t\treturn orig_canLoad.call(self,query);\n\t\t}\n\n\t\treturn canLoadMore(query);\n\t});\n\n\n\t// wrap the load\n\tself.hook('instead','loadCallback',( options:TomOption[], optgroups:TomOption[])=>{\n\n\t\tif( !loading_more ){\n\t\t\tself.clearOptions(clearFilter);\n\t\t}else if( load_more_opt ){\n\t\t\tconst first_option = options[0];\n\t\t\tif( first_option !== undefined ){\n\t\t\t\tload_more_opt.dataset.value\t\t= first_option[self.settings.valueField];\n\t\t\t}\n\t\t}\n\n\t\torig_loadCallback.call( self, options, optgroups);\n\n\t\tloading_more = false;\n\t});\n\n\n\t// add templates to dropdown\n\t//\tloading_more if we have another url in the queue\n\t//\tno_more_results if we don't have another url in the queue\n\tself.hook('after','refreshOptions',()=>{\n\n\t\tconst query\t\t= self.lastValue;\n\t\tvar option;\n\n\t\tif( canLoadMore(query) ){\n\n\t\t\toption = self.render('loading_more',{query:query});\n\t\t\tif( option ){\n\t\t\t\toption.setAttribute('data-selectable',''); // so that navigating dropdown with [down] keypresses can navigate to this node\n\t\t\t\tload_more_opt = option;\n\t\t\t}\n\n\t\t}else if( (query in pagination) && !dropdown_content.querySelector('.no-results') ){\n\t\t\toption = self.render('no_more_results',{query:query});\n\t\t}\n\n\t\tif( option ){\n\t\t\taddClasses(option,self.settings.optionClass);\n\t\t\tdropdown_content.append( option );\n\t\t}\n\n\t});\n\n\n\t// add scroll listener and default templates\n\tself.on('initialize',()=>{\n\t\tdefault_values = Object.keys(self.options);\n\t\tdropdown_content = self.dropdown_content;\n\n\t\t// default templates\n\t\tself.settings.render = Object.assign({}, {\n\t\t\tloading_more:() => {\n\t\t\t\treturn `<div class=\"loading-more-results\">Loading more results ... </div>`;\n\t\t\t},\n\t\t\tno_more_results:() =>{\n\t\t\t\treturn `<div class=\"no-more-results\">No more results</div>`;\n\t\t\t}\n\t\t},self.settings.render);\n\n\n\t\t// watch dropdown content scroll position\n\t\tdropdown_content.addEventListener('scroll',()=>{\n\n\t\t\tif( !self.settings.shouldLoadMore.call(self) ){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// !important: this will get checked again in load() but we still need to check here otherwise loading_more will be set to true\n\t\t\tif( !canLoadMore(self.lastValue) ){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// don't call load() too much\n\t\t\tif( loading_more ) return;\n\n\n\t\t\tloading_more = true;\n\t\t\tself.load.call(self,self.lastValue);\n\t\t});\n\t});\n\n};\n", "import TomSelect from './tom-select';\n\nimport change_listener from './plugins/change_listener/plugin';\nimport checkbox_options from './plugins/checkbox_options/plugin';\nimport clear_button from './plugins/clear_button/plugin';\nimport drag_drop from './plugins/drag_drop/plugin';\nimport dropdown_header from './plugins/dropdown_header/plugin';\nimport caret_position from './plugins/caret_position/plugin';\nimport dropdown_input from './plugins/dropdown_input/plugin';\nimport input_autogrow from './plugins/input_autogrow/plugin';\nimport no_backspace_delete from './plugins/no_backspace_delete/plugin';\nimport no_active_items from './plugins/no_active_items/plugin';\nimport optgroup_columns from './plugins/optgroup_columns/plugin';\nimport remove_button from './plugins/remove_button/plugin';\nimport restore_on_backspace from './plugins/restore_on_backspace/plugin';\nimport virtual_scroll from './plugins/virtual_scroll/plugin';\n\nTomSelect.define('change_listener', change_listener);\nTomSelect.define('checkbox_options', checkbox_options);\nTomSelect.define('clear_button', clear_button);\nTomSelect.define('drag_drop', drag_drop);\nTomSelect.define('dropdown_header', dropdown_header);\nTomSelect.define('caret_position', caret_position);\nTomSelect.define('dropdown_input', dropdown_input);\nTomSelect.define('input_autogrow', input_autogrow);\nTomSelect.define('no_backspace_delete', no_backspace_delete);\nTomSelect.define('no_active_items', no_active_items);\nTomSelect.define('optgroup_columns', optgroup_columns);\nTomSelect.define('remove_button', remove_button);\nTomSelect.define('restore_on_backspace', restore_on_backspace);\nTomSelect.define('virtual_scroll', virtual_scroll);\n\nexport default TomSelect;\n", "document.addEventListener(\"turbo:load\", () => {\n    const advancedSearchButton = document.getElementById(\"advanced-search-button\");\n    const advancedSearchSection = document.getElementById(\"advanced-search-section\");\n\n\n    advancedSearchButton?.addEventListener(\"click\", () => {\n        if (advancedSearchSection.style.display === \"none\") {\n            advancedSearchSection.style.display = \"block\";\n        } else {\n            advancedSearchSection.style.display = \"none\";\n        }\n    });\n})", "// Custom TailwindCSS modals for confirm dialogs\n//\n// Example usage:\n//\n//   <%= button_to \"Delete\", my_path, method: :delete, form: {\n//     data: {\n//       turbo_confirm: \"Are you sure?\",\n//       turbo_confirm_description: \"This will delete your record. Enter the record name to confirm.\",\n//       turbo_confirm_text: \"record name\"\n//     }\n//   } %>\n\nfunction insertConfirmModal(message, element, button) {\n  let confirmInput = \"\"\n\n  // button is nil if using link_to with data-turbo-confirm\n  let confirmText = button?.dataset?.turboConfirmText || element.dataset.turboConfirmText\n  let description = button?.dataset?.turboConfirmDescription || element.dataset.turboConfirmDescription || \"\"\n  if (confirmText) {\n    confirmInput = `<input type=\"text\" class=\"mt-4 form-control\" data-behavior=\"confirm-text\" />`\n  }\n\n  let content = `\n    <div id=\"confirm-modal\" class=\"z-50 animated fadeIn fixed top-0 left-0 w-full h-full table\" style=\"background-color: rgba(0, 0, 0, 0.8);\">\n      <div class=\"table-cell align-middle\">\n\n        <div class=\"bg-white mx-auto rounded shadow p-8 max-w-sm\">\n          <h4>${message}</h4>\n          ${description}\n\n          ${confirmInput}\n\n          <div class=\"flex justify-end items-center flex-wrap mt-6\">\n            <button data-behavior=\"cancel\" class=\"btn btn-light-gray mr-2 rounded-sm\">Cancel</button>\n            <button data-behavior=\"commit\" class=\"btn bg-pink-600 focus:outline-none rounded-sm text-white hover:bg-pink-700\">Confirm</button>\n          </div>\n        </div>\n      </div>\n    </div>\n  `\n\n  document.body.insertAdjacentHTML('beforeend', content)\n  document.activeElement.blur()\n  let modal = document.getElementById(\"confirm-modal\")\n\n  // Disable commit button until the value matches confirmText\n  if (confirmText) {\n    let commitButton = modal.querySelector(\"[data-behavior='commit']\")\n    commitButton.disabled = true\n    modal.querySelector(\"input[data-behavior='confirm-text']\").addEventListener(\"input\", (event) => {\n      commitButton.disabled = (event.target.value != confirmText)\n    })\n  }\n\n  return modal\n}\n\nTurbo.setConfirmMethod((message, element, button) => {\n  let dialog = insertConfirmModal(message, element, button)\n\n  return new Promise((resolve, reject) => {\n    dialog.querySelector(\"[data-behavior='cancel']\").addEventListener(\"click\", (event) => {\n      dialog.remove()\n      resolve(false)\n    }, { once: true })\n    dialog.querySelector(\"[data-behavior='commit']\").addEventListener(\"click\", (event) => {\n      dialog.remove()\n      resolve(true)\n    }, { once: true })\n  })\n})\n", "addEventListener(\"direct-upload:initialize\", event => {\n  const { target, detail } = event\n  const { id, file } = detail\n  target.insertAdjacentHTML(\"beforebegin\", `\n    <div id=\"direct-upload-${id}\" class=\"direct-upload direct-upload--pending\">\n      <div id=\"direct-upload-progress-${id}\" class=\"direct-upload__progress\" style=\"width: 0%\"></div>\n      <span class=\"direct-upload__filename\">${file.name}</span>\n    </div>\n  `)\n})\n\naddEventListener(\"direct-upload:start\", event => {\n  const { id } = event.detail\n  const element = document.getElementById(`direct-upload-${id}`)\n  element.classList.remove(\"direct-upload--pending\")\n})\n\naddEventListener(\"direct-upload:progress\", event => {\n  const { id, progress } = event.detail\n  const progressElement = document.getElementById(`direct-upload-progress-${id}`)\n  progressElement.style.width = `${progress}%`\n})\n\naddEventListener(\"direct-upload:error\", event => {\n  event.preventDefault()\n  const { id, error } = event.detail\n  const element = document.getElementById(`direct-upload-${id}`)\n  element.classList.add(\"direct-upload--error\")\n  element.setAttribute(\"title\", error)\n})\n\naddEventListener(\"direct-upload:end\", event => {\n  const { id } = event.detail\n  const element = document.getElementById(`direct-upload-${id}`)\n  element.classList.add(\"direct-upload--complete\")\n})\n", "// Lazily loads elements with a data-src attribute.\n// This is useful for speeding up initial page rendering.\n//\n// <img data-src=\"/assets/img.png\" />\n// <iframe data-src=\"https://youtube.com\"></iframe>\n\ndocument.addEventListener(\"turbo:load\", () => {\n  document.querySelectorAll('[data-src]').forEach((element) =>{\n    element.setAttribute('src', element.getAttribute('data-src'))\n  })\n})\n", "(function (root) {/*global exports, Intl*/\n/**\n * This script gives you the zone info key representing your device's time zone setting.\n *\n * @name jsTimezoneDetect\n * @version 1.0.6\n * @author Jon Nylander\n * @license MIT License - https://bitbucket.org/pellepim/jstimezonedetect/src/default/LICENCE.txt\n *\n * For usage and examples, visit:\n * http://pellepim.bitbucket.org/jstz/\n *\n * Copyright (c) Jon Nylander\n */\n\n\n/**\n * Namespace to hold all the code for timezone detection.\n */\nvar jstz = (function () {\n    'use strict';\n    var HEMISPHERE_SOUTH = 's',\n\n        consts = {\n            DAY: 86400000,\n            HOUR: 3600000,\n            MINUTE: 60000,\n            SECOND: 1000,\n            BASELINE_YEAR: 2014,\n            MAX_SCORE: 864000000, // 10 days\n            AMBIGUITIES: {\n                'America/Denver':       ['America/Mazatlan'],\n                'Europe/London':        ['Africa/Casablanca'],\n                'America/Chicago':      ['America/Mexico_City'],\n                'America/Asuncion':     ['America/Campo_Grande', 'America/Santiago'],\n                'America/Montevideo':   ['America/Sao_Paulo', 'America/Santiago'],\n                // Europe/Minsk should not be in this list... but Windows.\n                'Asia/Beirut':          ['Asia/Amman', 'Asia/Jerusalem', 'Europe/Helsinki', 'Asia/Damascus', 'Africa/Cairo', 'Asia/Gaza', 'Europe/Minsk'],\n                'Pacific/Auckland':     ['Pacific/Fiji'],\n                'America/Los_Angeles':  ['America/Santa_Isabel'],\n                'America/New_York':     ['America/Havana'],\n                'America/Halifax':      ['America/Goose_Bay'],\n                'America/Godthab':      ['America/Miquelon'],\n                'Asia/Dubai':           ['Asia/Yerevan'],\n                'Asia/Jakarta':         ['Asia/Krasnoyarsk'],\n                'Asia/Shanghai':        ['Asia/Irkutsk', 'Australia/Perth'],\n                'Australia/Sydney':     ['Australia/Lord_Howe'],\n                'Asia/Tokyo':           ['Asia/Yakutsk'],\n                'Asia/Dhaka':           ['Asia/Omsk'],\n                // In the real world Yerevan is not ambigous for Baku... but Windows.\n                'Asia/Baku':            ['Asia/Yerevan'],\n                'Australia/Brisbane':   ['Asia/Vladivostok'],\n                'Pacific/Noumea':       ['Asia/Vladivostok'],\n                'Pacific/Majuro':       ['Asia/Kamchatka', 'Pacific/Fiji'],\n                'Pacific/Tongatapu':    ['Pacific/Apia'],\n                'Asia/Baghdad':         ['Europe/Minsk', 'Europe/Moscow'],\n                'Asia/Karachi':         ['Asia/Yekaterinburg'],\n                'Africa/Johannesburg':  ['Asia/Gaza', 'Africa/Cairo']\n            }\n        },\n\n        /**\n         * Gets the offset in minutes from UTC for a certain date.\n         * @param {Date} date\n         * @returns {Number}\n         */\n        get_date_offset = function get_date_offset(date) {\n            var offset = -date.getTimezoneOffset();\n            return (offset !== null ? offset : 0);\n        },\n\n        /**\n         * This function does some basic calculations to create information about\n         * the user's timezone. It uses REFERENCE_YEAR as a solid year for which\n         * the script has been tested rather than depend on the year set by the\n         * client device.\n         *\n         * Returns a key that can be used to do lookups in jstz.olson.timezones.\n         * eg: \"720,1,2\".\n         *\n         * @returns {String}\n         */\n        lookup_key = function lookup_key() {\n            var january_offset = get_date_offset(new Date(consts.BASELINE_YEAR, 0, 2)),\n                june_offset = get_date_offset(new Date(consts.BASELINE_YEAR, 5, 2)),\n                diff = january_offset - june_offset;\n\n            if (diff < 0) {\n                return january_offset + \",1\";\n            } else if (diff > 0) {\n                return june_offset + \",1,\" + HEMISPHERE_SOUTH;\n            }\n\n            return january_offset + \",0\";\n        },\n\n\n        /**\n         * Tries to get the time zone key directly from the operating system for those\n         * environments that support the ECMAScript Internationalization API.\n         */\n        get_from_internationalization_api = function get_from_internationalization_api() {\n            var format, timezone;\n            if (typeof Intl === \"undefined\" || typeof Intl.DateTimeFormat === \"undefined\") {\n                return;\n            }\n            format = Intl.DateTimeFormat();\n            if (typeof format === \"undefined\" || typeof format.resolvedOptions === \"undefined\") {\n                return;\n            }\n            timezone = format.resolvedOptions().timeZone;\n            if (timezone && (timezone.indexOf(\"/\") > -1 || timezone === 'UTC') && timezone.indexOf(\"Etc\") != 0) {\n                return timezone;\n            }\n        },\n\n        /**\n         * Starting point for getting all the DST rules for a specific year\n         * for the current timezone (as described by the client system).\n         *\n         * Returns an object with start and end attributes, or false if no\n         * DST rules were found for the year.\n         *\n         * @param year\n         * @returns {Object} || {Boolean}\n         */\n        dst_dates = function dst_dates(year) {\n            var yearstart = new Date(year, 0, 1, 0, 0, 1, 0).getTime();\n            var yearend = new Date(year, 12, 31, 23, 59, 59).getTime();\n            var current = yearstart;\n            var offset = (new Date(current)).getTimezoneOffset();\n            var dst_start = null;\n            var dst_end = null;\n\n            while (current < yearend - 86400000) {\n                var dateToCheck = new Date(current);\n                var dateToCheckOffset = dateToCheck.getTimezoneOffset();\n\n                if (dateToCheckOffset !== offset) {\n                    if (dateToCheckOffset < offset) {\n                        dst_start = dateToCheck;\n                    }\n                    if (dateToCheckOffset > offset) {\n                        dst_end = dateToCheck;\n                    }\n                    offset = dateToCheckOffset;\n                }\n\n                current += 86400000;\n            }\n\n            if (dst_start && dst_end) {\n                return {\n                    s: find_dst_fold(dst_start).getTime(),\n                    e: find_dst_fold(dst_end).getTime()\n                };\n            }\n\n            return false;\n        },\n\n        /**\n         * Probably completely unnecessary function that recursively finds the\n         * exact (to the second) time when a DST rule was changed.\n         *\n         * @param a_date - The candidate Date.\n         * @param padding - integer specifying the padding to allow around the candidate\n         *                  date for finding the fold.\n         * @param iterator - integer specifying how many milliseconds to iterate while\n         *                   searching for the fold.\n         *\n         * @returns {Date}\n         */\n        find_dst_fold = function find_dst_fold(a_date, padding, iterator) {\n            if (typeof padding === 'undefined') {\n                padding = consts.DAY;\n                iterator = consts.HOUR;\n            }\n\n            var date_start = new Date(a_date.getTime() - padding).getTime();\n            var date_end = a_date.getTime() + padding;\n            var offset = new Date(date_start).getTimezoneOffset();\n\n            var current = date_start;\n\n            var dst_change = null;\n            while (current < date_end - iterator) {\n                var dateToCheck = new Date(current);\n                var dateToCheckOffset = dateToCheck.getTimezoneOffset();\n\n                if (dateToCheckOffset !== offset) {\n                    dst_change = dateToCheck;\n                    break;\n                }\n                current += iterator;\n            }\n\n            if (padding === consts.DAY) {\n                return find_dst_fold(dst_change, consts.HOUR, consts.MINUTE);\n            }\n\n            if (padding === consts.HOUR) {\n                return find_dst_fold(dst_change, consts.MINUTE, consts.SECOND);\n            }\n\n            return dst_change;\n        },\n\n        windows7_adaptations = function windows7_adaptions(rule_list, preliminary_timezone, score, sample) {\n            if (score !== 'N/A') {\n                return score;\n            }\n            if (preliminary_timezone === 'Asia/Beirut') {\n                if (sample.name === 'Africa/Cairo') {\n                    if (rule_list[6].s === 1398376800000 && rule_list[6].e === 1411678800000) {\n                        return 0;\n                    }\n                }\n                if (sample.name === 'Asia/Jerusalem') {\n                    if (rule_list[6].s === 1395964800000 && rule_list[6].e === 1411858800000) {\n                        return 0;\n                }\n            }\n            } else if (preliminary_timezone === 'America/Santiago') {\n                if (sample.name === 'America/Asuncion') {\n                    if (rule_list[6].s === 1412481600000 && rule_list[6].e === 1397358000000) {\n                        return 0;\n                    }\n                }\n                if (sample.name === 'America/Campo_Grande') {\n                    if (rule_list[6].s === 1413691200000 && rule_list[6].e === 1392519600000) {\n                        return 0;\n                    }\n                }\n            } else if (preliminary_timezone === 'America/Montevideo') {\n                if (sample.name === 'America/Sao_Paulo') {\n                    if (rule_list[6].s === 1413687600000 && rule_list[6].e === 1392516000000) {\n                        return 0;\n                    }\n                }\n            } else if (preliminary_timezone === 'Pacific/Auckland') {\n                if (sample.name === 'Pacific/Fiji') {\n                    if (rule_list[6].s === 1414245600000 && rule_list[6].e === 1396101600000) {\n                        return 0;\n                    }\n                }\n            }\n\n            return score;\n        },\n\n        /**\n         * Takes the DST rules for the current timezone, and proceeds to find matches\n         * in the jstz.olson.dst_rules.zones array.\n         *\n         * Compares samples to the current timezone on a scoring basis.\n         *\n         * Candidates are ruled immediately if either the candidate or the current zone\n         * has a DST rule where the other does not.\n         *\n         * Candidates are ruled out immediately if the current zone has a rule that is\n         * outside the DST scope of the candidate.\n         *\n         * Candidates are included for scoring if the current zones rules fall within the\n         * span of the samples rules.\n         *\n         * Low score is best, the score is calculated by summing up the differences in DST\n         * rules and if the consts.MAX_SCORE is overreached the candidate is ruled out.\n         *\n         * Yah follow? :)\n         *\n         * @param rule_list\n         * @param preliminary_timezone\n         * @returns {*}\n         */\n        best_dst_match = function best_dst_match(rule_list, preliminary_timezone) {\n            var score_sample = function score_sample(sample) {\n                var score = 0;\n\n                for (var j = 0; j < rule_list.length; j++) {\n\n                    // Both sample and current time zone report DST during the year.\n                    if (!!sample.rules[j] && !!rule_list[j]) {\n\n                        // The current time zone's DST rules are inside the sample's. Include.\n                        if (rule_list[j].s >= sample.rules[j].s && rule_list[j].e <= sample.rules[j].e) {\n                            score = 0;\n                            score += Math.abs(rule_list[j].s - sample.rules[j].s);\n                            score += Math.abs(sample.rules[j].e - rule_list[j].e);\n\n                        // The current time zone's DST rules are outside the sample's. Discard.\n                        } else {\n                            score = 'N/A';\n                            break;\n                        }\n\n                        // The max score has been reached. Discard.\n                        if (score > consts.MAX_SCORE) {\n                            score = 'N/A';\n                            break;\n                        }\n                    }\n                }\n\n                score = windows7_adaptations(rule_list, preliminary_timezone, score, sample);\n\n                return score;\n            };\n            var scoreboard = {};\n            var dst_zones = jstz.olson.dst_rules.zones;\n            var dst_zones_length = dst_zones.length;\n            var ambiguities = consts.AMBIGUITIES[preliminary_timezone];\n\n            for (var i = 0; i < dst_zones_length; i++) {\n                var sample = dst_zones[i];\n                var score = score_sample(dst_zones[i]);\n\n                if (score !== 'N/A') {\n                    scoreboard[sample.name] = score;\n                }\n            }\n\n            for (var tz in scoreboard) {\n                if (scoreboard.hasOwnProperty(tz)) {\n                    for (var j = 0; j < ambiguities.length; j++) {\n                        if (ambiguities[j] === tz) {\n                        return tz;\n                        }\n                    }\n                }\n            }\n\n            return preliminary_timezone;\n        },\n\n        /**\n         * Takes the preliminary_timezone as detected by lookup_key().\n         *\n         * Builds up the current timezones DST rules for the years defined\n         * in the jstz.olson.dst_rules.years array.\n         *\n         * If there are no DST occurences for those years, immediately returns\n         * the preliminary timezone. Otherwise proceeds and tries to solve\n         * ambiguities.\n         *\n         * @param preliminary_timezone\n         * @returns {String} timezone_name\n         */\n        get_by_dst = function get_by_dst(preliminary_timezone) {\n            var get_rules = function get_rules() {\n                var rule_list = [];\n                for (var i = 0; i < jstz.olson.dst_rules.years.length; i++) {\n                    var year_rules = dst_dates(jstz.olson.dst_rules.years[i]);\n                    rule_list.push(year_rules);\n                }\n                return rule_list;\n            };\n            var check_has_dst = function check_has_dst(rules) {\n                for (var i = 0; i < rules.length; i++) {\n                    if (rules[i] !== false) {\n                        return true;\n                    }\n                }\n                return false;\n            };\n            var rules = get_rules();\n            var has_dst = check_has_dst(rules);\n\n            if (has_dst) {\n                return best_dst_match(rules, preliminary_timezone);\n            }\n\n            return preliminary_timezone;\n        },\n\n        /**\n         * Uses get_timezone_info() to formulate a key to use in the olson.timezones dictionary.\n         *\n         * Returns an object with one function \".name()\"\n         *\n         * @returns Object\n         */\n        determine = function determine() {\n            var preliminary_tz = get_from_internationalization_api();\n\n            if (!preliminary_tz) {\n                preliminary_tz = jstz.olson.timezones[lookup_key()];\n\n                if (typeof consts.AMBIGUITIES[preliminary_tz] !== 'undefined') {\n                    preliminary_tz = get_by_dst(preliminary_tz);\n                }\n            }\n\n            return {\n                name: function () {\n                    return preliminary_tz;\n                },\n                stdTimezoneOffset : function () {\n                    // negative to match what (new Date).getTimezoneOffset() will return\n                    return -lookup_key().split(',')[0];\n                },\n                timezoneOffset : function () {\n                    // negative to match what (new Date).getTimezoneOffset() will return\n                    return -get_date_offset(new Date())\n                }\n            };\n        };\n\n    return {\n        determine: determine\n    };\n}());\n\n\njstz.olson = jstz.olson || {};\n\n/**\n * The keys in this dictionary are comma separated as such:\n *\n * First the offset compared to UTC time in minutes.\n *\n * Then a flag which is 0 if the timezone does not take daylight savings into account and 1 if it\n * does.\n *\n * Thirdly an optional 's' signifies that the timezone is in the southern hemisphere,\n * only interesting for timezones with DST.\n *\n * The mapped arrays is used for constructing the jstz.TimeZone object from within\n * jstz.determine();\n */\njstz.olson.timezones = {\n    '-720,0': 'Etc/GMT+12',\n    '-660,0': 'Pacific/Pago_Pago',\n    '-660,1,s': 'Pacific/Apia', // Why? Because windows... cry!\n    '-600,1': 'America/Adak',\n    '-600,0': 'Pacific/Honolulu',\n    '-570,0': 'Pacific/Marquesas',\n    '-540,0': 'Pacific/Gambier',\n    '-540,1': 'America/Anchorage',\n    '-480,1': 'America/Los_Angeles',\n    '-480,0': 'Pacific/Pitcairn',\n    '-420,0': 'America/Phoenix',\n    '-420,1': 'America/Denver',\n    '-360,0': 'America/Guatemala',\n    '-360,1': 'America/Chicago',\n    '-360,1,s': 'Pacific/Easter',\n    '-300,0': 'America/Bogota',\n    '-300,1': 'America/New_York',\n    '-270,0': 'America/Caracas',\n    '-240,1': 'America/Halifax',\n    '-240,0': 'America/Santo_Domingo',\n    '-240,1,s': 'America/Asuncion',\n    '-210,1': 'America/St_Johns',\n    '-180,1': 'America/Godthab',\n    '-180,0': 'America/Argentina/Buenos_Aires',\n    '-180,1,s': 'America/Montevideo',\n    '-120,0': 'America/Noronha',\n    '-120,1': 'America/Noronha',\n    '-60,1': 'Atlantic/Azores',\n    '-60,0': 'Atlantic/Cape_Verde',\n    '0,0': 'UTC',\n    '0,1': 'Europe/London',\n    '60,1': 'Europe/Berlin',\n    '60,0': 'Africa/Lagos',\n    '60,1,s': 'Africa/Windhoek',\n    '120,1': 'Asia/Beirut',\n    '120,0': 'Africa/Johannesburg',\n    '180,0': 'Asia/Baghdad',\n    '180,1': 'Europe/Moscow',\n    '210,1': 'Asia/Tehran',\n    '240,0': 'Asia/Dubai',\n    '240,1': 'Asia/Baku',\n    '270,0': 'Asia/Kabul',\n    '300,1': 'Asia/Yekaterinburg',\n    '300,0': 'Asia/Karachi',\n    '330,0': 'Asia/Kolkata',\n    '345,0': 'Asia/Kathmandu',\n    '360,0': 'Asia/Dhaka',\n    '360,1': 'Asia/Omsk',\n    '390,0': 'Asia/Rangoon',\n    '420,1': 'Asia/Krasnoyarsk',\n    '420,0': 'Asia/Jakarta',\n    '480,0': 'Asia/Shanghai',\n    '480,1': 'Asia/Irkutsk',\n    '525,0': 'Australia/Eucla',\n    '525,1,s': 'Australia/Eucla',\n    '540,1': 'Asia/Yakutsk',\n    '540,0': 'Asia/Tokyo',\n    '570,0': 'Australia/Darwin',\n    '570,1,s': 'Australia/Adelaide',\n    '600,0': 'Australia/Brisbane',\n    '600,1': 'Asia/Vladivostok',\n    '600,1,s': 'Australia/Sydney',\n    '630,1,s': 'Australia/Lord_Howe',\n    '660,1': 'Asia/Kamchatka',\n    '660,0': 'Pacific/Noumea',\n    '690,0': 'Pacific/Norfolk',\n    '720,1,s': 'Pacific/Auckland',\n    '720,0': 'Pacific/Majuro',\n    '765,1,s': 'Pacific/Chatham',\n    '780,0': 'Pacific/Tongatapu',\n    '780,1,s': 'Pacific/Apia',\n    '840,0': 'Pacific/Kiritimati'\n};\n\n/* Build time: 2015-11-02 13:01:00Z Build by invoking python utilities/dst.py generate */\njstz.olson.dst_rules = {\n    \"years\": [\n        2008,\n        2009,\n        2010,\n        2011,\n        2012,\n        2013,\n        2014\n    ],\n    \"zones\": [\n        {\n            \"name\": \"Africa/Cairo\",\n            \"rules\": [\n                {\n                    \"e\": 1219957200000,\n                    \"s\": 1209074400000\n                },\n                {\n                    \"e\": 1250802000000,\n                    \"s\": 1240524000000\n                },\n                {\n                    \"e\": 1285880400000,\n                    \"s\": 1284069600000\n                },\n                false,\n                false,\n                false,\n                {\n                    \"e\": 1411678800000,\n                    \"s\": 1406844000000\n                }\n            ]\n        },\n        {\n            \"name\": \"Africa/Casablanca\",\n            \"rules\": [\n                {\n                    \"e\": 1220223600000,\n                    \"s\": 1212278400000\n                },\n                {\n                    \"e\": 1250809200000,\n                    \"s\": 1243814400000\n                },\n                {\n                    \"e\": 1281222000000,\n                    \"s\": 1272758400000\n                },\n                {\n                    \"e\": 1312066800000,\n                    \"s\": 1301788800000\n                },\n                {\n                    \"e\": 1348970400000,\n                    \"s\": 1345428000000\n                },\n                {\n                    \"e\": 1382839200000,\n                    \"s\": 1376100000000\n                },\n                {\n                    \"e\": 1414288800000,\n                    \"s\": 1406944800000\n                }\n            ]\n        },\n        {\n            \"name\": \"America/Asuncion\",\n            \"rules\": [\n                {\n                    \"e\": 1205031600000,\n                    \"s\": 1224388800000\n                },\n                {\n                    \"e\": 1236481200000,\n                    \"s\": 1255838400000\n                },\n                {\n                    \"e\": 1270954800000,\n                    \"s\": 1286078400000\n                },\n                {\n                    \"e\": 1302404400000,\n                    \"s\": 1317528000000\n                },\n                {\n                    \"e\": 1333854000000,\n                    \"s\": 1349582400000\n                },\n                {\n                    \"e\": 1364094000000,\n                    \"s\": 1381032000000\n                },\n                {\n                    \"e\": 1395543600000,\n                    \"s\": 1412481600000\n                }\n            ]\n        },\n        {\n            \"name\": \"America/Campo_Grande\",\n            \"rules\": [\n                {\n                    \"e\": 1203217200000,\n                    \"s\": 1224388800000\n                },\n                {\n                    \"e\": 1234666800000,\n                    \"s\": 1255838400000\n                },\n                {\n                    \"e\": 1266721200000,\n                    \"s\": 1287288000000\n                },\n                {\n                    \"e\": 1298170800000,\n                    \"s\": 1318737600000\n                },\n                {\n                    \"e\": 1330225200000,\n                    \"s\": 1350792000000\n                },\n                {\n                    \"e\": 1361070000000,\n                    \"s\": 1382241600000\n                },\n                {\n                    \"e\": 1392519600000,\n                    \"s\": 1413691200000\n                }\n            ]\n        },\n        {\n            \"name\": \"America/Goose_Bay\",\n            \"rules\": [\n                {\n                    \"e\": 1225594860000,\n                    \"s\": 1205035260000\n                },\n                {\n                    \"e\": 1257044460000,\n                    \"s\": 1236484860000\n                },\n                {\n                    \"e\": 1289098860000,\n                    \"s\": 1268539260000\n                },\n                {\n                    \"e\": 1320555600000,\n                    \"s\": 1299988860000\n                },\n                {\n                    \"e\": 1352005200000,\n                    \"s\": 1331445600000\n                },\n                {\n                    \"e\": 1383454800000,\n                    \"s\": 1362895200000\n                },\n                {\n                    \"e\": 1414904400000,\n                    \"s\": 1394344800000\n                }\n            ]\n        },\n        {\n            \"name\": \"America/Havana\",\n            \"rules\": [\n                {\n                    \"e\": 1224997200000,\n                    \"s\": 1205643600000\n                },\n                {\n                    \"e\": 1256446800000,\n                    \"s\": 1236488400000\n                },\n                {\n                    \"e\": 1288501200000,\n                    \"s\": 1268542800000\n                },\n                {\n                    \"e\": 1321160400000,\n                    \"s\": 1300597200000\n                },\n                {\n                    \"e\": 1352005200000,\n                    \"s\": 1333256400000\n                },\n                {\n                    \"e\": 1383454800000,\n                    \"s\": 1362891600000\n                },\n                {\n                    \"e\": 1414904400000,\n                    \"s\": 1394341200000\n                }\n            ]\n        },\n        {\n            \"name\": \"America/Mazatlan\",\n            \"rules\": [\n                {\n                    \"e\": 1225008000000,\n                    \"s\": 1207472400000\n                },\n                {\n                    \"e\": 1256457600000,\n                    \"s\": 1238922000000\n                },\n                {\n                    \"e\": 1288512000000,\n                    \"s\": 1270371600000\n                },\n                {\n                    \"e\": 1319961600000,\n                    \"s\": 1301821200000\n                },\n                {\n                    \"e\": 1351411200000,\n                    \"s\": 1333270800000\n                },\n                {\n                    \"e\": 1382860800000,\n                    \"s\": 1365325200000\n                },\n                {\n                    \"e\": 1414310400000,\n                    \"s\": 1396774800000\n                }\n            ]\n        },\n        {\n            \"name\": \"America/Mexico_City\",\n            \"rules\": [\n                {\n                    \"e\": 1225004400000,\n                    \"s\": 1207468800000\n                },\n                {\n                    \"e\": 1256454000000,\n                    \"s\": 1238918400000\n                },\n                {\n                    \"e\": 1288508400000,\n                    \"s\": 1270368000000\n                },\n                {\n                    \"e\": 1319958000000,\n                    \"s\": 1301817600000\n                },\n                {\n                    \"e\": 1351407600000,\n                    \"s\": 1333267200000\n                },\n                {\n                    \"e\": 1382857200000,\n                    \"s\": 1365321600000\n                },\n                {\n                    \"e\": 1414306800000,\n                    \"s\": 1396771200000\n                }\n            ]\n        },\n        {\n            \"name\": \"America/Miquelon\",\n            \"rules\": [\n                {\n                    \"e\": 1225598400000,\n                    \"s\": 1205038800000\n                },\n                {\n                    \"e\": 1257048000000,\n                    \"s\": 1236488400000\n                },\n                {\n                    \"e\": 1289102400000,\n                    \"s\": 1268542800000\n                },\n                {\n                    \"e\": 1320552000000,\n                    \"s\": 1299992400000\n                },\n                {\n                    \"e\": 1352001600000,\n                    \"s\": 1331442000000\n                },\n                {\n                    \"e\": 1383451200000,\n                    \"s\": 1362891600000\n                },\n                {\n                    \"e\": 1414900800000,\n                    \"s\": 1394341200000\n                }\n            ]\n        },\n        {\n            \"name\": \"America/Santa_Isabel\",\n            \"rules\": [\n                {\n                    \"e\": 1225011600000,\n                    \"s\": 1207476000000\n                },\n                {\n                    \"e\": 1256461200000,\n                    \"s\": 1238925600000\n                },\n                {\n                    \"e\": 1288515600000,\n                    \"s\": 1270375200000\n                },\n                {\n                    \"e\": 1319965200000,\n                    \"s\": 1301824800000\n                },\n                {\n                    \"e\": 1351414800000,\n                    \"s\": 1333274400000\n                },\n                {\n                    \"e\": 1382864400000,\n                    \"s\": 1365328800000\n                },\n                {\n                    \"e\": 1414314000000,\n                    \"s\": 1396778400000\n                }\n            ]\n        },\n        {\n            \"name\": \"America/Santiago\",\n            \"rules\": [\n                {\n                    \"e\": 1206846000000,\n                    \"s\": 1223784000000\n                },\n                {\n                    \"e\": 1237086000000,\n                    \"s\": 1255233600000\n                },\n                {\n                    \"e\": 1270350000000,\n                    \"s\": 1286683200000\n                },\n                {\n                    \"e\": 1304823600000,\n                    \"s\": 1313899200000\n                },\n                {\n                    \"e\": 1335668400000,\n                    \"s\": 1346558400000\n                },\n                {\n                    \"e\": 1367118000000,\n                    \"s\": 1378612800000\n                },\n                {\n                    \"e\": 1398567600000,\n                    \"s\": 1410062400000\n                }\n            ]\n        },\n        {\n            \"name\": \"America/Sao_Paulo\",\n            \"rules\": [\n                {\n                    \"e\": 1203213600000,\n                    \"s\": 1224385200000\n                },\n                {\n                    \"e\": 1234663200000,\n                    \"s\": 1255834800000\n                },\n                {\n                    \"e\": 1266717600000,\n                    \"s\": 1287284400000\n                },\n                {\n                    \"e\": 1298167200000,\n                    \"s\": 1318734000000\n                },\n                {\n                    \"e\": 1330221600000,\n                    \"s\": 1350788400000\n                },\n                {\n                    \"e\": 1361066400000,\n                    \"s\": 1382238000000\n                },\n                {\n                    \"e\": 1392516000000,\n                    \"s\": 1413687600000\n                }\n            ]\n        },\n        {\n            \"name\": \"Asia/Amman\",\n            \"rules\": [\n                {\n                    \"e\": 1225404000000,\n                    \"s\": 1206655200000\n                },\n                {\n                    \"e\": 1256853600000,\n                    \"s\": 1238104800000\n                },\n                {\n                    \"e\": 1288303200000,\n                    \"s\": 1269554400000\n                },\n                {\n                    \"e\": 1319752800000,\n                    \"s\": 1301608800000\n                },\n                false,\n                false,\n                {\n                    \"e\": 1414706400000,\n                    \"s\": 1395957600000\n                }\n            ]\n        },\n        {\n            \"name\": \"Asia/Damascus\",\n            \"rules\": [\n                {\n                    \"e\": 1225486800000,\n                    \"s\": 1207260000000\n                },\n                {\n                    \"e\": 1256850000000,\n                    \"s\": 1238104800000\n                },\n                {\n                    \"e\": 1288299600000,\n                    \"s\": 1270159200000\n                },\n                {\n                    \"e\": 1319749200000,\n                    \"s\": 1301608800000\n                },\n                {\n                    \"e\": 1351198800000,\n                    \"s\": 1333058400000\n                },\n                {\n                    \"e\": 1382648400000,\n                    \"s\": 1364508000000\n                },\n                {\n                    \"e\": 1414702800000,\n                    \"s\": 1395957600000\n                }\n            ]\n        },\n        {\n            \"name\": \"Asia/Dubai\",\n            \"rules\": [\n                false,\n                false,\n                false,\n                false,\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Asia/Gaza\",\n            \"rules\": [\n                {\n                    \"e\": 1219957200000,\n                    \"s\": 1206655200000\n                },\n                {\n                    \"e\": 1252015200000,\n                    \"s\": 1238104800000\n                },\n                {\n                    \"e\": 1281474000000,\n                    \"s\": 1269640860000\n                },\n                {\n                    \"e\": 1312146000000,\n                    \"s\": 1301608860000\n                },\n                {\n                    \"e\": 1348178400000,\n                    \"s\": 1333058400000\n                },\n                {\n                    \"e\": 1380229200000,\n                    \"s\": 1364508000000\n                },\n                {\n                    \"e\": 1414098000000,\n                    \"s\": 1395957600000\n                }\n            ]\n        },\n        {\n            \"name\": \"Asia/Irkutsk\",\n            \"rules\": [\n                {\n                    \"e\": 1224957600000,\n                    \"s\": 1206813600000\n                },\n                {\n                    \"e\": 1256407200000,\n                    \"s\": 1238263200000\n                },\n                {\n                    \"e\": 1288461600000,\n                    \"s\": 1269712800000\n                },\n                false,\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Asia/Jerusalem\",\n            \"rules\": [\n                {\n                    \"e\": 1223161200000,\n                    \"s\": 1206662400000\n                },\n                {\n                    \"e\": 1254006000000,\n                    \"s\": 1238112000000\n                },\n                {\n                    \"e\": 1284246000000,\n                    \"s\": 1269561600000\n                },\n                {\n                    \"e\": 1317510000000,\n                    \"s\": 1301616000000\n                },\n                {\n                    \"e\": 1348354800000,\n                    \"s\": 1333065600000\n                },\n                {\n                    \"e\": 1382828400000,\n                    \"s\": 1364515200000\n                },\n                {\n                    \"e\": 1414278000000,\n                    \"s\": 1395964800000\n                }\n            ]\n        },\n        {\n            \"name\": \"Asia/Kamchatka\",\n            \"rules\": [\n                {\n                    \"e\": 1224943200000,\n                    \"s\": 1206799200000\n                },\n                {\n                    \"e\": 1256392800000,\n                    \"s\": 1238248800000\n                },\n                {\n                    \"e\": 1288450800000,\n                    \"s\": 1269698400000\n                },\n                false,\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Asia/Krasnoyarsk\",\n            \"rules\": [\n                {\n                    \"e\": 1224961200000,\n                    \"s\": 1206817200000\n                },\n                {\n                    \"e\": 1256410800000,\n                    \"s\": 1238266800000\n                },\n                {\n                    \"e\": 1288465200000,\n                    \"s\": 1269716400000\n                },\n                false,\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Asia/Omsk\",\n            \"rules\": [\n                {\n                    \"e\": 1224964800000,\n                    \"s\": 1206820800000\n                },\n                {\n                    \"e\": 1256414400000,\n                    \"s\": 1238270400000\n                },\n                {\n                    \"e\": 1288468800000,\n                    \"s\": 1269720000000\n                },\n                false,\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Asia/Vladivostok\",\n            \"rules\": [\n                {\n                    \"e\": 1224950400000,\n                    \"s\": 1206806400000\n                },\n                {\n                    \"e\": 1256400000000,\n                    \"s\": 1238256000000\n                },\n                {\n                    \"e\": 1288454400000,\n                    \"s\": 1269705600000\n                },\n                false,\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Asia/Yakutsk\",\n            \"rules\": [\n                {\n                    \"e\": 1224954000000,\n                    \"s\": 1206810000000\n                },\n                {\n                    \"e\": 1256403600000,\n                    \"s\": 1238259600000\n                },\n                {\n                    \"e\": 1288458000000,\n                    \"s\": 1269709200000\n                },\n                false,\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Asia/Yekaterinburg\",\n            \"rules\": [\n                {\n                    \"e\": 1224968400000,\n                    \"s\": 1206824400000\n                },\n                {\n                    \"e\": 1256418000000,\n                    \"s\": 1238274000000\n                },\n                {\n                    \"e\": 1288472400000,\n                    \"s\": 1269723600000\n                },\n                false,\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Asia/Yerevan\",\n            \"rules\": [\n                {\n                    \"e\": 1224972000000,\n                    \"s\": 1206828000000\n                },\n                {\n                    \"e\": 1256421600000,\n                    \"s\": 1238277600000\n                },\n                {\n                    \"e\": 1288476000000,\n                    \"s\": 1269727200000\n                },\n                {\n                    \"e\": 1319925600000,\n                    \"s\": 1301176800000\n                },\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Australia/Lord_Howe\",\n            \"rules\": [\n                {\n                    \"e\": 1207407600000,\n                    \"s\": 1223134200000\n                },\n                {\n                    \"e\": 1238857200000,\n                    \"s\": 1254583800000\n                },\n                {\n                    \"e\": 1270306800000,\n                    \"s\": 1286033400000\n                },\n                {\n                    \"e\": 1301756400000,\n                    \"s\": 1317483000000\n                },\n                {\n                    \"e\": 1333206000000,\n                    \"s\": 1349537400000\n                },\n                {\n                    \"e\": 1365260400000,\n                    \"s\": 1380987000000\n                },\n                {\n                    \"e\": 1396710000000,\n                    \"s\": 1412436600000\n                }\n            ]\n        },\n        {\n            \"name\": \"Australia/Perth\",\n            \"rules\": [\n                {\n                    \"e\": 1206813600000,\n                    \"s\": 1224957600000\n                },\n                false,\n                false,\n                false,\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Europe/Helsinki\",\n            \"rules\": [\n                {\n                    \"e\": 1224982800000,\n                    \"s\": 1206838800000\n                },\n                {\n                    \"e\": 1256432400000,\n                    \"s\": 1238288400000\n                },\n                {\n                    \"e\": 1288486800000,\n                    \"s\": 1269738000000\n                },\n                {\n                    \"e\": 1319936400000,\n                    \"s\": 1301187600000\n                },\n                {\n                    \"e\": 1351386000000,\n                    \"s\": 1332637200000\n                },\n                {\n                    \"e\": 1382835600000,\n                    \"s\": 1364691600000\n                },\n                {\n                    \"e\": 1414285200000,\n                    \"s\": 1396141200000\n                }\n            ]\n        },\n        {\n            \"name\": \"Europe/Minsk\",\n            \"rules\": [\n                {\n                    \"e\": 1224979200000,\n                    \"s\": 1206835200000\n                },\n                {\n                    \"e\": 1256428800000,\n                    \"s\": 1238284800000\n                },\n                {\n                    \"e\": 1288483200000,\n                    \"s\": 1269734400000\n                },\n                false,\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Europe/Moscow\",\n            \"rules\": [\n                {\n                    \"e\": 1224975600000,\n                    \"s\": 1206831600000\n                },\n                {\n                    \"e\": 1256425200000,\n                    \"s\": 1238281200000\n                },\n                {\n                    \"e\": 1288479600000,\n                    \"s\": 1269730800000\n                },\n                false,\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Pacific/Apia\",\n            \"rules\": [\n                false,\n                false,\n                false,\n                {\n                    \"e\": 1301752800000,\n                    \"s\": 1316872800000\n                },\n                {\n                    \"e\": 1333202400000,\n                    \"s\": 1348927200000\n                },\n                {\n                    \"e\": 1365256800000,\n                    \"s\": 1380376800000\n                },\n                {\n                    \"e\": 1396706400000,\n                    \"s\": 1411826400000\n                }\n            ]\n        },\n        {\n            \"name\": \"Pacific/Fiji\",\n            \"rules\": [\n                false,\n                false,\n                {\n                    \"e\": 1269698400000,\n                    \"s\": 1287842400000\n                },\n                {\n                    \"e\": 1327154400000,\n                    \"s\": 1319292000000\n                },\n                {\n                    \"e\": 1358604000000,\n                    \"s\": 1350741600000\n                },\n                {\n                    \"e\": 1390050000000,\n                    \"s\": 1382796000000\n                },\n                {\n                    \"e\": 1421503200000,\n                    \"s\": 1414850400000\n                }\n            ]\n        },\n        {\n            \"name\": \"Europe/London\",\n            \"rules\": [\n                {\n                    \"e\": 1224982800000,\n                    \"s\": 1206838800000\n                },\n                {\n                    \"e\": 1256432400000,\n                    \"s\": 1238288400000\n                },\n                {\n                    \"e\": 1288486800000,\n                    \"s\": 1269738000000\n                },\n                {\n                    \"e\": 1319936400000,\n                    \"s\": 1301187600000\n                },\n                {\n                    \"e\": 1351386000000,\n                    \"s\": 1332637200000\n                },\n                {\n                    \"e\": 1382835600000,\n                    \"s\": 1364691600000\n                },\n                {\n                    \"e\": 1414285200000,\n                    \"s\": 1396141200000\n                }\n            ]\n        }\n    ]\n};\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\n    module.exports = jstz;\n} else if ((typeof define !== 'undefined' && define !== null) && (define.amd != null)) {\n    define([], function() {\n        return jstz;\n    });\n} else {\n    if (typeof root === 'undefined') {\n        window.jstz = jstz;\n    } else {\n        root.jstz = jstz;\n    }\n}\n}());\n", "module.exports = require('./dist/jstz.js');\n", "(function(global, factory) {\n  typeof exports === \"object\" && typeof module !== \"undefined\" ? factory(exports) : typeof define === \"function\" && define.amd ? define([ \"exports\" ], factory) : (global = typeof globalThis !== \"undefined\" ? globalThis : global || self, \n  factory(global.ActiveStorage = {}));\n})(this, (function(exports) {\n  \"use strict\";\n  var sparkMd5 = {\n    exports: {}\n  };\n  (function(module, exports) {\n    (function(factory) {\n      {\n        module.exports = factory();\n      }\n    })((function(undefined$1) {\n      var hex_chr = [ \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\" ];\n      function md5cycle(x, k) {\n        var a = x[0], b = x[1], c = x[2], d = x[3];\n        a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n        a = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n        d = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n        c = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n        b = (b << 22 | b >>> 10) + c | 0;\n        a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n        a = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n        d = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n        c = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n        b = (b << 22 | b >>> 10) + c | 0;\n        a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n        a = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n        d = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[10] - 42063 | 0;\n        c = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n        b = (b << 22 | b >>> 10) + c | 0;\n        a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n        a = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n        d = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n        c = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n        b = (b << 22 | b >>> 10) + c | 0;\n        a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n        a = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n        d = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n        c = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n        b = (b << 20 | b >>> 12) + c | 0;\n        a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n        a = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n        d = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n        c = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n        b = (b << 20 | b >>> 12) + c | 0;\n        a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n        a = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n        d = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n        c = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n        b = (b << 20 | b >>> 12) + c | 0;\n        a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n        a = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n        d = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n        c = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n        b = (b << 20 | b >>> 12) + c | 0;\n        a += (b ^ c ^ d) + k[5] - 378558 | 0;\n        a = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n        d = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n        c = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n        b = (b << 23 | b >>> 9) + c | 0;\n        a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n        a = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n        d = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n        c = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n        b = (b << 23 | b >>> 9) + c | 0;\n        a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n        a = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n        d = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n        c = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n        b = (b << 23 | b >>> 9) + c | 0;\n        a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n        a = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n        d = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n        c = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n        b = (b << 23 | b >>> 9) + c | 0;\n        a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n        a = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n        d = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n        c = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n        b = (b << 21 | b >>> 11) + c | 0;\n        a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n        a = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n        d = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n        c = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n        b = (b << 21 | b >>> 11) + c | 0;\n        a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n        a = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n        d = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n        c = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n        b = (b << 21 | b >>> 11) + c | 0;\n        a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n        a = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n        d = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n        c = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n        b = (b << 21 | b >>> 11) + c | 0;\n        x[0] = a + x[0] | 0;\n        x[1] = b + x[1] | 0;\n        x[2] = c + x[2] | 0;\n        x[3] = d + x[3] | 0;\n      }\n      function md5blk(s) {\n        var md5blks = [], i;\n        for (i = 0; i < 64; i += 4) {\n          md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n        }\n        return md5blks;\n      }\n      function md5blk_array(a) {\n        var md5blks = [], i;\n        for (i = 0; i < 64; i += 4) {\n          md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n        }\n        return md5blks;\n      }\n      function md51(s) {\n        var n = s.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n        for (i = 64; i <= n; i += 64) {\n          md5cycle(state, md5blk(s.substring(i - 64, i)));\n        }\n        s = s.substring(i - 64);\n        length = s.length;\n        tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n        for (i = 0; i < length; i += 1) {\n          tail[i >> 2] |= s.charCodeAt(i) << (i % 4 << 3);\n        }\n        tail[i >> 2] |= 128 << (i % 4 << 3);\n        if (i > 55) {\n          md5cycle(state, tail);\n          for (i = 0; i < 16; i += 1) {\n            tail[i] = 0;\n          }\n        }\n        tmp = n * 8;\n        tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n        lo = parseInt(tmp[2], 16);\n        hi = parseInt(tmp[1], 16) || 0;\n        tail[14] = lo;\n        tail[15] = hi;\n        md5cycle(state, tail);\n        return state;\n      }\n      function md51_array(a) {\n        var n = a.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n        for (i = 64; i <= n; i += 64) {\n          md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n        }\n        a = i - 64 < n ? a.subarray(i - 64) : new Uint8Array(0);\n        length = a.length;\n        tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n        for (i = 0; i < length; i += 1) {\n          tail[i >> 2] |= a[i] << (i % 4 << 3);\n        }\n        tail[i >> 2] |= 128 << (i % 4 << 3);\n        if (i > 55) {\n          md5cycle(state, tail);\n          for (i = 0; i < 16; i += 1) {\n            tail[i] = 0;\n          }\n        }\n        tmp = n * 8;\n        tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n        lo = parseInt(tmp[2], 16);\n        hi = parseInt(tmp[1], 16) || 0;\n        tail[14] = lo;\n        tail[15] = hi;\n        md5cycle(state, tail);\n        return state;\n      }\n      function rhex(n) {\n        var s = \"\", j;\n        for (j = 0; j < 4; j += 1) {\n          s += hex_chr[n >> j * 8 + 4 & 15] + hex_chr[n >> j * 8 & 15];\n        }\n        return s;\n      }\n      function hex(x) {\n        var i;\n        for (i = 0; i < x.length; i += 1) {\n          x[i] = rhex(x[i]);\n        }\n        return x.join(\"\");\n      }\n      if (hex(md51(\"hello\")) !== \"5d41402abc4b2a76b9719d911017c592\") ;\n      if (typeof ArrayBuffer !== \"undefined\" && !ArrayBuffer.prototype.slice) {\n        (function() {\n          function clamp(val, length) {\n            val = val | 0 || 0;\n            if (val < 0) {\n              return Math.max(val + length, 0);\n            }\n            return Math.min(val, length);\n          }\n          ArrayBuffer.prototype.slice = function(from, to) {\n            var length = this.byteLength, begin = clamp(from, length), end = length, num, target, targetArray, sourceArray;\n            if (to !== undefined$1) {\n              end = clamp(to, length);\n            }\n            if (begin > end) {\n              return new ArrayBuffer(0);\n            }\n            num = end - begin;\n            target = new ArrayBuffer(num);\n            targetArray = new Uint8Array(target);\n            sourceArray = new Uint8Array(this, begin, num);\n            targetArray.set(sourceArray);\n            return target;\n          };\n        })();\n      }\n      function toUtf8(str) {\n        if (/[\\u0080-\\uFFFF]/.test(str)) {\n          str = unescape(encodeURIComponent(str));\n        }\n        return str;\n      }\n      function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n        var length = str.length, buff = new ArrayBuffer(length), arr = new Uint8Array(buff), i;\n        for (i = 0; i < length; i += 1) {\n          arr[i] = str.charCodeAt(i);\n        }\n        return returnUInt8Array ? arr : buff;\n      }\n      function arrayBuffer2Utf8Str(buff) {\n        return String.fromCharCode.apply(null, new Uint8Array(buff));\n      }\n      function concatenateArrayBuffers(first, second, returnUInt8Array) {\n        var result = new Uint8Array(first.byteLength + second.byteLength);\n        result.set(new Uint8Array(first));\n        result.set(new Uint8Array(second), first.byteLength);\n        return returnUInt8Array ? result : result.buffer;\n      }\n      function hexToBinaryString(hex) {\n        var bytes = [], length = hex.length, x;\n        for (x = 0; x < length - 1; x += 2) {\n          bytes.push(parseInt(hex.substr(x, 2), 16));\n        }\n        return String.fromCharCode.apply(String, bytes);\n      }\n      function SparkMD5() {\n        this.reset();\n      }\n      SparkMD5.prototype.append = function(str) {\n        this.appendBinary(toUtf8(str));\n        return this;\n      };\n      SparkMD5.prototype.appendBinary = function(contents) {\n        this._buff += contents;\n        this._length += contents.length;\n        var length = this._buff.length, i;\n        for (i = 64; i <= length; i += 64) {\n          md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n        }\n        this._buff = this._buff.substring(i - 64);\n        return this;\n      };\n      SparkMD5.prototype.end = function(raw) {\n        var buff = this._buff, length = buff.length, i, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], ret;\n        for (i = 0; i < length; i += 1) {\n          tail[i >> 2] |= buff.charCodeAt(i) << (i % 4 << 3);\n        }\n        this._finish(tail, length);\n        ret = hex(this._hash);\n        if (raw) {\n          ret = hexToBinaryString(ret);\n        }\n        this.reset();\n        return ret;\n      };\n      SparkMD5.prototype.reset = function() {\n        this._buff = \"\";\n        this._length = 0;\n        this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n        return this;\n      };\n      SparkMD5.prototype.getState = function() {\n        return {\n          buff: this._buff,\n          length: this._length,\n          hash: this._hash.slice()\n        };\n      };\n      SparkMD5.prototype.setState = function(state) {\n        this._buff = state.buff;\n        this._length = state.length;\n        this._hash = state.hash;\n        return this;\n      };\n      SparkMD5.prototype.destroy = function() {\n        delete this._hash;\n        delete this._buff;\n        delete this._length;\n      };\n      SparkMD5.prototype._finish = function(tail, length) {\n        var i = length, tmp, lo, hi;\n        tail[i >> 2] |= 128 << (i % 4 << 3);\n        if (i > 55) {\n          md5cycle(this._hash, tail);\n          for (i = 0; i < 16; i += 1) {\n            tail[i] = 0;\n          }\n        }\n        tmp = this._length * 8;\n        tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n        lo = parseInt(tmp[2], 16);\n        hi = parseInt(tmp[1], 16) || 0;\n        tail[14] = lo;\n        tail[15] = hi;\n        md5cycle(this._hash, tail);\n      };\n      SparkMD5.hash = function(str, raw) {\n        return SparkMD5.hashBinary(toUtf8(str), raw);\n      };\n      SparkMD5.hashBinary = function(content, raw) {\n        var hash = md51(content), ret = hex(hash);\n        return raw ? hexToBinaryString(ret) : ret;\n      };\n      SparkMD5.ArrayBuffer = function() {\n        this.reset();\n      };\n      SparkMD5.ArrayBuffer.prototype.append = function(arr) {\n        var buff = concatenateArrayBuffers(this._buff.buffer, arr, true), length = buff.length, i;\n        this._length += arr.byteLength;\n        for (i = 64; i <= length; i += 64) {\n          md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n        }\n        this._buff = i - 64 < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n        return this;\n      };\n      SparkMD5.ArrayBuffer.prototype.end = function(raw) {\n        var buff = this._buff, length = buff.length, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], i, ret;\n        for (i = 0; i < length; i += 1) {\n          tail[i >> 2] |= buff[i] << (i % 4 << 3);\n        }\n        this._finish(tail, length);\n        ret = hex(this._hash);\n        if (raw) {\n          ret = hexToBinaryString(ret);\n        }\n        this.reset();\n        return ret;\n      };\n      SparkMD5.ArrayBuffer.prototype.reset = function() {\n        this._buff = new Uint8Array(0);\n        this._length = 0;\n        this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n        return this;\n      };\n      SparkMD5.ArrayBuffer.prototype.getState = function() {\n        var state = SparkMD5.prototype.getState.call(this);\n        state.buff = arrayBuffer2Utf8Str(state.buff);\n        return state;\n      };\n      SparkMD5.ArrayBuffer.prototype.setState = function(state) {\n        state.buff = utf8Str2ArrayBuffer(state.buff, true);\n        return SparkMD5.prototype.setState.call(this, state);\n      };\n      SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n      SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n      SparkMD5.ArrayBuffer.hash = function(arr, raw) {\n        var hash = md51_array(new Uint8Array(arr)), ret = hex(hash);\n        return raw ? hexToBinaryString(ret) : ret;\n      };\n      return SparkMD5;\n    }));\n  })(sparkMd5);\n  var SparkMD5 = sparkMd5.exports;\n  const fileSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice;\n  class FileChecksum {\n    static create(file, callback) {\n      const instance = new FileChecksum(file);\n      instance.create(callback);\n    }\n    constructor(file) {\n      this.file = file;\n      this.chunkSize = 2097152;\n      this.chunkCount = Math.ceil(this.file.size / this.chunkSize);\n      this.chunkIndex = 0;\n    }\n    create(callback) {\n      this.callback = callback;\n      this.md5Buffer = new SparkMD5.ArrayBuffer;\n      this.fileReader = new FileReader;\n      this.fileReader.addEventListener(\"load\", (event => this.fileReaderDidLoad(event)));\n      this.fileReader.addEventListener(\"error\", (event => this.fileReaderDidError(event)));\n      this.readNextChunk();\n    }\n    fileReaderDidLoad(event) {\n      this.md5Buffer.append(event.target.result);\n      if (!this.readNextChunk()) {\n        const binaryDigest = this.md5Buffer.end(true);\n        const base64digest = btoa(binaryDigest);\n        this.callback(null, base64digest);\n      }\n    }\n    fileReaderDidError(event) {\n      this.callback(`Error reading ${this.file.name}`);\n    }\n    readNextChunk() {\n      if (this.chunkIndex < this.chunkCount || this.chunkIndex == 0 && this.chunkCount == 0) {\n        const start = this.chunkIndex * this.chunkSize;\n        const end = Math.min(start + this.chunkSize, this.file.size);\n        const bytes = fileSlice.call(this.file, start, end);\n        this.fileReader.readAsArrayBuffer(bytes);\n        this.chunkIndex++;\n        return true;\n      } else {\n        return false;\n      }\n    }\n  }\n  function getMetaValue(name) {\n    const element = findElement(document.head, `meta[name=\"${name}\"]`);\n    if (element) {\n      return element.getAttribute(\"content\");\n    }\n  }\n  function findElements(root, selector) {\n    if (typeof root == \"string\") {\n      selector = root;\n      root = document;\n    }\n    const elements = root.querySelectorAll(selector);\n    return toArray(elements);\n  }\n  function findElement(root, selector) {\n    if (typeof root == \"string\") {\n      selector = root;\n      root = document;\n    }\n    return root.querySelector(selector);\n  }\n  function dispatchEvent(element, type, eventInit = {}) {\n    const {disabled: disabled} = element;\n    const {bubbles: bubbles, cancelable: cancelable, detail: detail} = eventInit;\n    const event = document.createEvent(\"Event\");\n    event.initEvent(type, bubbles || true, cancelable || true);\n    event.detail = detail || {};\n    try {\n      element.disabled = false;\n      element.dispatchEvent(event);\n    } finally {\n      element.disabled = disabled;\n    }\n    return event;\n  }\n  function toArray(value) {\n    if (Array.isArray(value)) {\n      return value;\n    } else if (Array.from) {\n      return Array.from(value);\n    } else {\n      return [].slice.call(value);\n    }\n  }\n  class BlobRecord {\n    constructor(file, checksum, url) {\n      this.file = file;\n      this.attributes = {\n        filename: file.name,\n        content_type: file.type || \"application/octet-stream\",\n        byte_size: file.size,\n        checksum: checksum\n      };\n      this.xhr = new XMLHttpRequest;\n      this.xhr.open(\"POST\", url, true);\n      this.xhr.responseType = \"json\";\n      this.xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n      this.xhr.setRequestHeader(\"Accept\", \"application/json\");\n      this.xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n      const csrfToken = getMetaValue(\"csrf-token\");\n      if (csrfToken != undefined) {\n        this.xhr.setRequestHeader(\"X-CSRF-Token\", csrfToken);\n      }\n      this.xhr.addEventListener(\"load\", (event => this.requestDidLoad(event)));\n      this.xhr.addEventListener(\"error\", (event => this.requestDidError(event)));\n    }\n    get status() {\n      return this.xhr.status;\n    }\n    get response() {\n      const {responseType: responseType, response: response} = this.xhr;\n      if (responseType == \"json\") {\n        return response;\n      } else {\n        return JSON.parse(response);\n      }\n    }\n    create(callback) {\n      this.callback = callback;\n      this.xhr.send(JSON.stringify({\n        blob: this.attributes\n      }));\n    }\n    requestDidLoad(event) {\n      if (this.status >= 200 && this.status < 300) {\n        const {response: response} = this;\n        const {direct_upload: direct_upload} = response;\n        delete response.direct_upload;\n        this.attributes = response;\n        this.directUploadData = direct_upload;\n        this.callback(null, this.toJSON());\n      } else {\n        this.requestDidError(event);\n      }\n    }\n    requestDidError(event) {\n      this.callback(`Error creating Blob for \"${this.file.name}\". Status: ${this.status}`);\n    }\n    toJSON() {\n      const result = {};\n      for (const key in this.attributes) {\n        result[key] = this.attributes[key];\n      }\n      return result;\n    }\n  }\n  class BlobUpload {\n    constructor(blob) {\n      this.blob = blob;\n      this.file = blob.file;\n      const {url: url, headers: headers} = blob.directUploadData;\n      this.xhr = new XMLHttpRequest;\n      this.xhr.open(\"PUT\", url, true);\n      this.xhr.responseType = \"text\";\n      for (const key in headers) {\n        this.xhr.setRequestHeader(key, headers[key]);\n      }\n      this.xhr.addEventListener(\"load\", (event => this.requestDidLoad(event)));\n      this.xhr.addEventListener(\"error\", (event => this.requestDidError(event)));\n    }\n    create(callback) {\n      this.callback = callback;\n      this.xhr.send(this.file.slice());\n    }\n    requestDidLoad(event) {\n      const {status: status, response: response} = this.xhr;\n      if (status >= 200 && status < 300) {\n        this.callback(null, response);\n      } else {\n        this.requestDidError(event);\n      }\n    }\n    requestDidError(event) {\n      this.callback(`Error storing \"${this.file.name}\". Status: ${this.xhr.status}`);\n    }\n  }\n  let id = 0;\n  class DirectUpload {\n    constructor(file, url, delegate) {\n      this.id = ++id;\n      this.file = file;\n      this.url = url;\n      this.delegate = delegate;\n    }\n    create(callback) {\n      FileChecksum.create(this.file, ((error, checksum) => {\n        if (error) {\n          callback(error);\n          return;\n        }\n        const blob = new BlobRecord(this.file, checksum, this.url);\n        notify(this.delegate, \"directUploadWillCreateBlobWithXHR\", blob.xhr);\n        blob.create((error => {\n          if (error) {\n            callback(error);\n          } else {\n            const upload = new BlobUpload(blob);\n            notify(this.delegate, \"directUploadWillStoreFileWithXHR\", upload.xhr);\n            upload.create((error => {\n              if (error) {\n                callback(error);\n              } else {\n                callback(null, blob.toJSON());\n              }\n            }));\n          }\n        }));\n      }));\n    }\n  }\n  function notify(object, methodName, ...messages) {\n    if (object && typeof object[methodName] == \"function\") {\n      return object[methodName](...messages);\n    }\n  }\n  class DirectUploadController {\n    constructor(input, file) {\n      this.input = input;\n      this.file = file;\n      this.directUpload = new DirectUpload(this.file, this.url, this);\n      this.dispatch(\"initialize\");\n    }\n    start(callback) {\n      const hiddenInput = document.createElement(\"input\");\n      hiddenInput.type = \"hidden\";\n      hiddenInput.name = this.input.name;\n      this.input.insertAdjacentElement(\"beforebegin\", hiddenInput);\n      this.dispatch(\"start\");\n      this.directUpload.create(((error, attributes) => {\n        if (error) {\n          hiddenInput.parentNode.removeChild(hiddenInput);\n          this.dispatchError(error);\n        } else {\n          hiddenInput.value = attributes.signed_id;\n        }\n        this.dispatch(\"end\");\n        callback(error);\n      }));\n    }\n    uploadRequestDidProgress(event) {\n      const progress = event.loaded / event.total * 100;\n      if (progress) {\n        this.dispatch(\"progress\", {\n          progress: progress\n        });\n      }\n    }\n    get url() {\n      return this.input.getAttribute(\"data-direct-upload-url\");\n    }\n    dispatch(name, detail = {}) {\n      detail.file = this.file;\n      detail.id = this.directUpload.id;\n      return dispatchEvent(this.input, `direct-upload:${name}`, {\n        detail: detail\n      });\n    }\n    dispatchError(error) {\n      const event = this.dispatch(\"error\", {\n        error: error\n      });\n      if (!event.defaultPrevented) {\n        alert(error);\n      }\n    }\n    directUploadWillCreateBlobWithXHR(xhr) {\n      this.dispatch(\"before-blob-request\", {\n        xhr: xhr\n      });\n    }\n    directUploadWillStoreFileWithXHR(xhr) {\n      this.dispatch(\"before-storage-request\", {\n        xhr: xhr\n      });\n      xhr.upload.addEventListener(\"progress\", (event => this.uploadRequestDidProgress(event)));\n    }\n  }\n  const inputSelector = \"input[type=file][data-direct-upload-url]:not([disabled])\";\n  class DirectUploadsController {\n    constructor(form) {\n      this.form = form;\n      this.inputs = findElements(form, inputSelector).filter((input => input.files.length));\n    }\n    start(callback) {\n      const controllers = this.createDirectUploadControllers();\n      const startNextController = () => {\n        const controller = controllers.shift();\n        if (controller) {\n          controller.start((error => {\n            if (error) {\n              callback(error);\n              this.dispatch(\"end\");\n            } else {\n              startNextController();\n            }\n          }));\n        } else {\n          callback();\n          this.dispatch(\"end\");\n        }\n      };\n      this.dispatch(\"start\");\n      startNextController();\n    }\n    createDirectUploadControllers() {\n      const controllers = [];\n      this.inputs.forEach((input => {\n        toArray(input.files).forEach((file => {\n          const controller = new DirectUploadController(input, file);\n          controllers.push(controller);\n        }));\n      }));\n      return controllers;\n    }\n    dispatch(name, detail = {}) {\n      return dispatchEvent(this.form, `direct-uploads:${name}`, {\n        detail: detail\n      });\n    }\n  }\n  const processingAttribute = \"data-direct-uploads-processing\";\n  const submitButtonsByForm = new WeakMap;\n  let started = false;\n  function start() {\n    if (!started) {\n      started = true;\n      document.addEventListener(\"click\", didClick, true);\n      document.addEventListener(\"submit\", didSubmitForm, true);\n      document.addEventListener(\"ajax:before\", didSubmitRemoteElement);\n    }\n  }\n  function didClick(event) {\n    const {target: target} = event;\n    if ((target.tagName == \"INPUT\" || target.tagName == \"BUTTON\") && target.type == \"submit\" && target.form) {\n      submitButtonsByForm.set(target.form, target);\n    }\n  }\n  function didSubmitForm(event) {\n    handleFormSubmissionEvent(event);\n  }\n  function didSubmitRemoteElement(event) {\n    if (event.target.tagName == \"FORM\") {\n      handleFormSubmissionEvent(event);\n    }\n  }\n  function handleFormSubmissionEvent(event) {\n    const form = event.target;\n    if (form.hasAttribute(processingAttribute)) {\n      event.preventDefault();\n      return;\n    }\n    const controller = new DirectUploadsController(form);\n    const {inputs: inputs} = controller;\n    if (inputs.length) {\n      event.preventDefault();\n      form.setAttribute(processingAttribute, \"\");\n      inputs.forEach(disable);\n      controller.start((error => {\n        form.removeAttribute(processingAttribute);\n        if (error) {\n          inputs.forEach(enable);\n        } else {\n          submitForm(form);\n        }\n      }));\n    }\n  }\n  function submitForm(form) {\n    let button = submitButtonsByForm.get(form) || findElement(form, \"input[type=submit], button[type=submit]\");\n    if (button) {\n      const {disabled: disabled} = button;\n      button.disabled = false;\n      button.focus();\n      button.click();\n      button.disabled = disabled;\n    } else {\n      button = document.createElement(\"input\");\n      button.type = \"submit\";\n      button.style.display = \"none\";\n      form.appendChild(button);\n      button.click();\n      form.removeChild(button);\n    }\n    submitButtonsByForm.delete(form);\n  }\n  function disable(input) {\n    input.disabled = true;\n  }\n  function enable(input) {\n    input.disabled = false;\n  }\n  function autostart() {\n    if (window.ActiveStorage) {\n      start();\n    }\n  }\n  setTimeout(autostart, 1);\n  exports.DirectUpload = DirectUpload;\n  exports.start = start;\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n}));\n", "(function(){var t=this;(function(){(function(){var t=[].slice;this.LocalTime={config:{},run:function(){return this.getController().processElements()},process:function(){var e,n,r,a;for(n=1<=arguments.length?t.call(arguments,0):[],r=0,a=n.length;r<a;r++)e=n[r],this.getController().processElement(e);return n.length},getController:function(){return null!=this.controller?this.controller:this.controller=new e.Controller}}}).call(this)}).call(t);var e=t.LocalTime;(function(){(function(){e.config.i18n={en:{date:{dayNames:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],abbrDayNames:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],monthNames:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],abbrMonthNames:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],yesterday:\"yesterday\",today:\"today\",tomorrow:\"tomorrow\",on:\"on {date}\",formats:{\"default\":\"%b %e, %Y\",thisYear:\"%b %e\"}},time:{am:\"am\",pm:\"pm\",singular:\"a {time}\",singularAn:\"an {time}\",elapsed:\"{time} ago\",second:\"second\",seconds:\"seconds\",minute:\"minute\",minutes:\"minutes\",hour:\"hour\",hours:\"hours\",formats:{\"default\":\"%l:%M%P\"}},datetime:{at:\"{date} at {time}\",formats:{\"default\":\"%B %e, %Y at %l:%M%P %Z\"}}}}}).call(this),function(){e.config.locale=\"en\",e.config.defaultLocale=\"en\"}.call(this),function(){e.config.timerInterval=6e4}.call(this),function(){var t,n,r;r=!isNaN(Date.parse(\"2011-01-01T12:00:00-05:00\")),e.parseDate=function(t){return t=t.toString(),r||(t=n(t)),new Date(Date.parse(t))},t=/^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})(Z|[-+]?[\\d:]+)$/,n=function(e){var n,r,a,i,o,s,u,c,l;if(a=e.match(t))return a[0],c=a[1],o=a[2],n=a[3],r=a[4],i=a[5],u=a[6],l=a[7],\"Z\"!==l&&(s=l.replace(\":\",\"\")),c+\"/\"+o+\"/\"+n+\" \"+r+\":\"+i+\":\"+u+\" GMT\"+[s]}}.call(this),function(){e.elementMatchesSelector=function(){var t,e,n,r,a,i;return t=document.documentElement,e=null!=(n=null!=(r=null!=(a=null!=(i=t.matches)?i:t.matchesSelector)?a:t.webkitMatchesSelector)?r:t.mozMatchesSelector)?n:t.msMatchesSelector,function(t,n){if((null!=t?t.nodeType:void 0)===Node.ELEMENT_NODE)return e.call(t,n)}}()}.call(this),function(){var t,n,r;t=e.config,r=t.i18n,e.getI18nValue=function(a,i){var o,s;return null==a&&(a=\"\"),o=(null!=i?i:{locale:t.locale}).locale,s=n(r[o],a),null!=s?s:o!==t.defaultLocale?e.getI18nValue(a,{locale:t.defaultLocale}):void 0},e.translate=function(t,n,r){var a,i,o;null==n&&(n={}),o=e.getI18nValue(t,r);for(a in n)i=n[a],o=o.replace(\"{\"+a+\"}\",i);return o},n=function(t,e){var n,r,a,i,o;for(o=t,i=e.split(\".\"),n=0,a=i.length;n<a;n++){if(r=i[n],null==o[r])return null;o=o[r]}return o}}.call(this),function(){var t,n,r,a,i;t=e.getI18nValue,i=e.translate,e.strftime=a=function(e,o){var s,u,c,l,d,h,f;return u=e.getDay(),s=e.getDate(),d=e.getMonth(),f=e.getFullYear(),c=e.getHours(),l=e.getMinutes(),h=e.getSeconds(),o.replace(/%(-?)([%aAbBcdeHIlmMpPSwyYZ])/g,function(o,m,p){switch(p){case\"%\":return\"%\";case\"a\":return t(\"date.abbrDayNames\")[u];case\"A\":return t(\"date.dayNames\")[u];case\"b\":return t(\"date.abbrMonthNames\")[d];case\"B\":return t(\"date.monthNames\")[d];case\"c\":return e.toString();case\"d\":return n(s,m);case\"e\":return s;case\"H\":return n(c,m);case\"I\":return n(a(e,\"%l\"),m);case\"l\":return 0===c||12===c?12:(c+12)%12;case\"m\":return n(d+1,m);case\"M\":return n(l,m);case\"p\":return i(\"time.\"+(c>11?\"pm\":\"am\")).toUpperCase();case\"P\":return i(\"time.\"+(c>11?\"pm\":\"am\"));case\"S\":return n(h,m);case\"w\":return u;case\"y\":return n(f%100,m);case\"Y\":return f;case\"Z\":return r(e)}})},n=function(t,e){switch(e){case\"-\":return t;default:return(\"0\"+t).slice(-2)}},r=function(t){var e,n,r,a,i;return i=t.toString(),(e=null!=(n=i.match(/\\(([\\w\\s]+)\\)$/))?n[1]:void 0)?/\\s/.test(e)?e.match(/\\b(\\w)/g).join(\"\"):e:(e=null!=(r=i.match(/(\\w{3,4})\\s\\d{4}$/))?r[1]:void 0)?e:(e=null!=(a=i.match(/(UTC[\\+\\-]\\d+)/))?a[1]:void 0)?e:\"\"}}.call(this),function(){e.CalendarDate=function(){function t(t,e,n){this.date=new Date(Date.UTC(t,e-1)),this.date.setUTCDate(n),this.year=this.date.getUTCFullYear(),this.month=this.date.getUTCMonth()+1,this.day=this.date.getUTCDate(),this.value=this.date.getTime()}return t.fromDate=function(t){return new this(t.getFullYear(),t.getMonth()+1,t.getDate())},t.today=function(){return this.fromDate(new Date)},t.prototype.equals=function(t){return(null!=t?t.value:void 0)===this.value},t.prototype.is=function(t){return this.equals(t)},t.prototype.isToday=function(){return this.is(this.constructor.today())},t.prototype.occursOnSameYearAs=function(t){return this.year===(null!=t?t.year:void 0)},t.prototype.occursThisYear=function(){return this.occursOnSameYearAs(this.constructor.today())},t.prototype.daysSince=function(t){if(t)return(this.date-t.date)/864e5},t.prototype.daysPassed=function(){return this.constructor.today().daysSince(this)},t}()}.call(this),function(){var t,n,r;n=e.strftime,r=e.translate,t=e.getI18nValue,e.RelativeTime=function(){function a(t){this.date=t,this.calendarDate=e.CalendarDate.fromDate(this.date)}return a.prototype.toString=function(){var t,e;return(e=this.toTimeElapsedString())?r(\"time.elapsed\",{time:e}):(t=this.toWeekdayString())?(e=this.toTimeString(),r(\"datetime.at\",{date:t,time:e})):r(\"date.on\",{date:this.toDateString()})},a.prototype.toTimeOrDateString=function(){return this.calendarDate.isToday()?this.toTimeString():this.toDateString()},a.prototype.toTimeElapsedString=function(){var t,e,n,a,i;return n=(new Date).getTime()-this.date.getTime(),a=Math.round(n/1e3),e=Math.round(a/60),t=Math.round(e/60),n<0?null:a<10?(i=r(\"time.second\"),r(\"time.singular\",{time:i})):a<45?a+\" \"+r(\"time.seconds\"):a<90?(i=r(\"time.minute\"),r(\"time.singular\",{time:i})):e<45?e+\" \"+r(\"time.minutes\"):e<90?(i=r(\"time.hour\"),r(\"time.singularAn\",{time:i})):t<24?t+\" \"+r(\"time.hours\"):\"\"},a.prototype.toWeekdayString=function(){switch(this.calendarDate.daysPassed()){case 0:return r(\"date.today\");case 1:return r(\"date.yesterday\");case-1:return r(\"date.tomorrow\");case 2:case 3:case 4:case 5:case 6:return n(this.date,\"%A\");default:return\"\"}},a.prototype.toDateString=function(){var e;return e=t(this.calendarDate.occursThisYear()?\"date.formats.thisYear\":\"date.formats.default\"),n(this.date,e)},a.prototype.toTimeString=function(){return n(this.date,t(\"time.formats.default\"))},a}()}.call(this),function(){var t,n=function(t,e){return function(){return t.apply(e,arguments)}};t=e.elementMatchesSelector,e.PageObserver=function(){function e(t,e){this.selector=t,this.callback=e,this.processInsertion=n(this.processInsertion,this),this.processMutations=n(this.processMutations,this)}return e.prototype.start=function(){if(!this.started)return this.observeWithMutationObserver()||this.observeWithMutationEvent(),this.started=!0},e.prototype.observeWithMutationObserver=function(){var t;if(\"undefined\"!=typeof MutationObserver&&null!==MutationObserver)return t=new MutationObserver(this.processMutations),t.observe(document.documentElement,{childList:!0,subtree:!0}),!0},e.prototype.observeWithMutationEvent=function(){return addEventListener(\"DOMNodeInserted\",this.processInsertion,!1),!0},e.prototype.findSignificantElements=function(e){var n;return n=[],(null!=e?e.nodeType:void 0)===Node.ELEMENT_NODE&&(t(e,this.selector)&&n.push(e),n.push.apply(n,e.querySelectorAll(this.selector))),n},e.prototype.processMutations=function(t){var e,n,r,a,i,o,s,u;for(e=[],n=0,a=t.length;n<a;n++)switch(o=t[n],o.type){case\"childList\":for(u=o.addedNodes,r=0,i=u.length;r<i;r++)s=u[r],e.push.apply(e,this.findSignificantElements(s))}return this.notify(e)},e.prototype.processInsertion=function(t){var e;return e=this.findSignificantElements(t.target),this.notify(e)},e.prototype.notify=function(t){if(null!=t?t.length:void 0)return\"function\"==typeof this.callback?this.callback(t):void 0},e}()}.call(this),function(){var t,n,r,a,i=function(t,e){return function(){return t.apply(e,arguments)}};r=e.parseDate,a=e.strftime,n=e.getI18nValue,t=e.config,e.Controller=function(){function o(){this.processElements=i(this.processElements,this),this.pageObserver=new e.PageObserver(s,this.processElements)}var s,u,c;return s=\"time[data-local]:not([data-localized])\",o.prototype.start=function(){if(!this.started)return this.processElements(),this.startTimer(),this.pageObserver.start(),this.started=!0},o.prototype.startTimer=function(){var e;if(e=t.timerInterval)return null!=this.timer?this.timer:this.timer=setInterval(this.processElements,e)},o.prototype.processElements=function(t){var e,n,r;for(null==t&&(t=document.querySelectorAll(s)),n=0,r=t.length;n<r;n++)e=t[n],this.processElement(e);return t.length},o.prototype.processElement=function(t){var e,i,o,s,l,d;if(i=t.getAttribute(\"datetime\"),o=t.getAttribute(\"data-format\"),s=t.getAttribute(\"data-local\"),l=r(i),!isNaN(l))return t.hasAttribute(\"title\")||(d=a(l,n(\"datetime.formats.default\")),t.setAttribute(\"title\",d)),t.textContent=e=function(){switch(s){case\"time\":return u(t),a(l,o);case\"date\":return u(t),c(l).toDateString();case\"time-ago\":return c(l).toString();case\"time-or-date\":return c(l).toTimeOrDateString();case\"weekday\":return c(l).toWeekdayString();case\"weekday-or-date\":return c(l).toWeekdayString()||c(l).toDateString()}}(),t.hasAttribute(\"aria-label\")?void 0:t.setAttribute(\"aria-label\",e)},u=function(t){return t.setAttribute(\"data-localized\",\"\")},c=function(t){return new e.RelativeTime(t)},o}()}.call(this),function(){var t,n,r,a;a=!1,t=function(){return document.attachEvent?\"complete\"===document.readyState:\"loading\"!==document.readyState},n=function(t){var e;return null!=(e=\"function\"==typeof requestAnimationFrame?requestAnimationFrame(t):void 0)?e:setTimeout(t,17)},r=function(){var t;return t=e.getController(),t.start()},e.start=function(){if(!a)return a=!0,\"undefined\"!=typeof MutationObserver&&null!==MutationObserver||t()?r():n(r)},window.LocalTime===e&&e.start()}.call(this)}).call(this),\"object\"==typeof module&&module.exports?module.exports=e:\"function\"==typeof define&&define.amd&&define(e)}).call(this);", "/* eslint no-console:0 */\n\n// Rails functionality\nimport Rails from \"@rails/ujs\"\nimport \"@hotwired/turbo-rails\"\n\n// Make accessible for Electron and Mobile adapters\nwindow.Rails = Rails\n\nrequire(\"@rails/activestorage\").start()\nimport \"@rails/actiontext\"\n\n// ActionCable Channels\nimport \"./channels\"\n\nimport \"./src/reorder_steps\";\n\n// Stimulus controllers\nimport \"./controllers\"\n\n// Jumpstart Pro & other Functionality\nimport \"./src/**/*\"\nrequire(\"local-time\").start()\n\n// Start Rails UJS\nRails.start()\n", "/*\nTurbo 7.2.5\nCopyright \u00A9 2023 37signals LLC\n */\n(function () {\n    if (window.Reflect === undefined ||\n        window.customElements === undefined ||\n        window.customElements.polyfillWrapFlushCallback) {\n        return;\n    }\n    const BuiltInHTMLElement = HTMLElement;\n    const wrapperForTheName = {\n        HTMLElement: function HTMLElement() {\n            return Reflect.construct(BuiltInHTMLElement, [], this.constructor);\n        },\n    };\n    window.HTMLElement = wrapperForTheName[\"HTMLElement\"];\n    HTMLElement.prototype = BuiltInHTMLElement.prototype;\n    HTMLElement.prototype.constructor = HTMLElement;\n    Object.setPrototypeOf(HTMLElement, BuiltInHTMLElement);\n})();\n\n/**\n * The MIT License (MIT)\n * \n * Copyright (c) 2019 Javan Makhmali\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\n * all 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\n * THE SOFTWARE.\n */\n\n(function(prototype) {\n  if (typeof prototype.requestSubmit == \"function\") return\n\n  prototype.requestSubmit = function(submitter) {\n    if (submitter) {\n      validateSubmitter(submitter, this);\n      submitter.click();\n    } else {\n      submitter = document.createElement(\"input\");\n      submitter.type = \"submit\";\n      submitter.hidden = true;\n      this.appendChild(submitter);\n      submitter.click();\n      this.removeChild(submitter);\n    }\n  };\n\n  function validateSubmitter(submitter, form) {\n    submitter instanceof HTMLElement || raise(TypeError, \"parameter 1 is not of type 'HTMLElement'\");\n    submitter.type == \"submit\" || raise(TypeError, \"The specified element is not a submit button\");\n    submitter.form == form || raise(DOMException, \"The specified element is not owned by this form element\", \"NotFoundError\");\n  }\n\n  function raise(errorConstructor, message, name) {\n    throw new errorConstructor(\"Failed to execute 'requestSubmit' on 'HTMLFormElement': \" + message + \".\", name)\n  }\n})(HTMLFormElement.prototype);\n\nconst submittersByForm = new WeakMap();\nfunction findSubmitterFromClickTarget(target) {\n    const element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null;\n    const candidate = element ? element.closest(\"input, button\") : null;\n    return (candidate === null || candidate === void 0 ? void 0 : candidate.type) == \"submit\" ? candidate : null;\n}\nfunction clickCaptured(event) {\n    const submitter = findSubmitterFromClickTarget(event.target);\n    if (submitter && submitter.form) {\n        submittersByForm.set(submitter.form, submitter);\n    }\n}\n(function () {\n    if (\"submitter\" in Event.prototype)\n        return;\n    let prototype;\n    if (\"SubmitEvent\" in window && /Apple Computer/.test(navigator.vendor)) {\n        prototype = window.SubmitEvent.prototype;\n    }\n    else if (\"SubmitEvent\" in window) {\n        return;\n    }\n    else {\n        prototype = window.Event.prototype;\n    }\n    addEventListener(\"click\", clickCaptured, true);\n    Object.defineProperty(prototype, \"submitter\", {\n        get() {\n            if (this.type == \"submit\" && this.target instanceof HTMLFormElement) {\n                return submittersByForm.get(this.target);\n            }\n        },\n    });\n})();\n\nvar FrameLoadingStyle;\n(function (FrameLoadingStyle) {\n    FrameLoadingStyle[\"eager\"] = \"eager\";\n    FrameLoadingStyle[\"lazy\"] = \"lazy\";\n})(FrameLoadingStyle || (FrameLoadingStyle = {}));\nclass FrameElement extends HTMLElement {\n    constructor() {\n        super();\n        this.loaded = Promise.resolve();\n        this.delegate = new FrameElement.delegateConstructor(this);\n    }\n    static get observedAttributes() {\n        return [\"disabled\", \"complete\", \"loading\", \"src\"];\n    }\n    connectedCallback() {\n        this.delegate.connect();\n    }\n    disconnectedCallback() {\n        this.delegate.disconnect();\n    }\n    reload() {\n        return this.delegate.sourceURLReloaded();\n    }\n    attributeChangedCallback(name) {\n        if (name == \"loading\") {\n            this.delegate.loadingStyleChanged();\n        }\n        else if (name == \"complete\") {\n            this.delegate.completeChanged();\n        }\n        else if (name == \"src\") {\n            this.delegate.sourceURLChanged();\n        }\n        else {\n            this.delegate.disabledChanged();\n        }\n    }\n    get src() {\n        return this.getAttribute(\"src\");\n    }\n    set src(value) {\n        if (value) {\n            this.setAttribute(\"src\", value);\n        }\n        else {\n            this.removeAttribute(\"src\");\n        }\n    }\n    get loading() {\n        return frameLoadingStyleFromString(this.getAttribute(\"loading\") || \"\");\n    }\n    set loading(value) {\n        if (value) {\n            this.setAttribute(\"loading\", value);\n        }\n        else {\n            this.removeAttribute(\"loading\");\n        }\n    }\n    get disabled() {\n        return this.hasAttribute(\"disabled\");\n    }\n    set disabled(value) {\n        if (value) {\n            this.setAttribute(\"disabled\", \"\");\n        }\n        else {\n            this.removeAttribute(\"disabled\");\n        }\n    }\n    get autoscroll() {\n        return this.hasAttribute(\"autoscroll\");\n    }\n    set autoscroll(value) {\n        if (value) {\n            this.setAttribute(\"autoscroll\", \"\");\n        }\n        else {\n            this.removeAttribute(\"autoscroll\");\n        }\n    }\n    get complete() {\n        return !this.delegate.isLoading;\n    }\n    get isActive() {\n        return this.ownerDocument === document && !this.isPreview;\n    }\n    get isPreview() {\n        var _a, _b;\n        return (_b = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.documentElement) === null || _b === void 0 ? void 0 : _b.hasAttribute(\"data-turbo-preview\");\n    }\n}\nfunction frameLoadingStyleFromString(style) {\n    switch (style.toLowerCase()) {\n        case \"lazy\":\n            return FrameLoadingStyle.lazy;\n        default:\n            return FrameLoadingStyle.eager;\n    }\n}\n\nfunction expandURL(locatable) {\n    return new URL(locatable.toString(), document.baseURI);\n}\nfunction getAnchor(url) {\n    let anchorMatch;\n    if (url.hash) {\n        return url.hash.slice(1);\n    }\n    else if ((anchorMatch = url.href.match(/#(.*)$/))) {\n        return anchorMatch[1];\n    }\n}\nfunction getAction(form, submitter) {\n    const action = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formaction\")) || form.getAttribute(\"action\") || form.action;\n    return expandURL(action);\n}\nfunction getExtension(url) {\n    return (getLastPathComponent(url).match(/\\.[^.]*$/) || [])[0] || \"\";\n}\nfunction isHTML(url) {\n    return !!getExtension(url).match(/^(?:|\\.(?:htm|html|xhtml|php))$/);\n}\nfunction isPrefixedBy(baseURL, url) {\n    const prefix = getPrefix(url);\n    return baseURL.href === expandURL(prefix).href || baseURL.href.startsWith(prefix);\n}\nfunction locationIsVisitable(location, rootLocation) {\n    return isPrefixedBy(location, rootLocation) && isHTML(location);\n}\nfunction getRequestURL(url) {\n    const anchor = getAnchor(url);\n    return anchor != null ? url.href.slice(0, -(anchor.length + 1)) : url.href;\n}\nfunction toCacheKey(url) {\n    return getRequestURL(url);\n}\nfunction urlsAreEqual(left, right) {\n    return expandURL(left).href == expandURL(right).href;\n}\nfunction getPathComponents(url) {\n    return url.pathname.split(\"/\").slice(1);\n}\nfunction getLastPathComponent(url) {\n    return getPathComponents(url).slice(-1)[0];\n}\nfunction getPrefix(url) {\n    return addTrailingSlash(url.origin + url.pathname);\n}\nfunction addTrailingSlash(value) {\n    return value.endsWith(\"/\") ? value : value + \"/\";\n}\n\nclass FetchResponse {\n    constructor(response) {\n        this.response = response;\n    }\n    get succeeded() {\n        return this.response.ok;\n    }\n    get failed() {\n        return !this.succeeded;\n    }\n    get clientError() {\n        return this.statusCode >= 400 && this.statusCode <= 499;\n    }\n    get serverError() {\n        return this.statusCode >= 500 && this.statusCode <= 599;\n    }\n    get redirected() {\n        return this.response.redirected;\n    }\n    get location() {\n        return expandURL(this.response.url);\n    }\n    get isHTML() {\n        return this.contentType && this.contentType.match(/^(?:text\\/([^\\s;,]+\\b)?html|application\\/xhtml\\+xml)\\b/);\n    }\n    get statusCode() {\n        return this.response.status;\n    }\n    get contentType() {\n        return this.header(\"Content-Type\");\n    }\n    get responseText() {\n        return this.response.clone().text();\n    }\n    get responseHTML() {\n        if (this.isHTML) {\n            return this.response.clone().text();\n        }\n        else {\n            return Promise.resolve(undefined);\n        }\n    }\n    header(name) {\n        return this.response.headers.get(name);\n    }\n}\n\nfunction activateScriptElement(element) {\n    if (element.getAttribute(\"data-turbo-eval\") == \"false\") {\n        return element;\n    }\n    else {\n        const createdScriptElement = document.createElement(\"script\");\n        const cspNonce = getMetaContent(\"csp-nonce\");\n        if (cspNonce) {\n            createdScriptElement.nonce = cspNonce;\n        }\n        createdScriptElement.textContent = element.textContent;\n        createdScriptElement.async = false;\n        copyElementAttributes(createdScriptElement, element);\n        return createdScriptElement;\n    }\n}\nfunction copyElementAttributes(destinationElement, sourceElement) {\n    for (const { name, value } of sourceElement.attributes) {\n        destinationElement.setAttribute(name, value);\n    }\n}\nfunction createDocumentFragment(html) {\n    const template = document.createElement(\"template\");\n    template.innerHTML = html;\n    return template.content;\n}\nfunction dispatch(eventName, { target, cancelable, detail } = {}) {\n    const event = new CustomEvent(eventName, {\n        cancelable,\n        bubbles: true,\n        composed: true,\n        detail,\n    });\n    if (target && target.isConnected) {\n        target.dispatchEvent(event);\n    }\n    else {\n        document.documentElement.dispatchEvent(event);\n    }\n    return event;\n}\nfunction nextAnimationFrame() {\n    return new Promise((resolve) => requestAnimationFrame(() => resolve()));\n}\nfunction nextEventLoopTick() {\n    return new Promise((resolve) => setTimeout(() => resolve(), 0));\n}\nfunction nextMicrotask() {\n    return Promise.resolve();\n}\nfunction parseHTMLDocument(html = \"\") {\n    return new DOMParser().parseFromString(html, \"text/html\");\n}\nfunction unindent(strings, ...values) {\n    const lines = interpolate(strings, values).replace(/^\\n/, \"\").split(\"\\n\");\n    const match = lines[0].match(/^\\s+/);\n    const indent = match ? match[0].length : 0;\n    return lines.map((line) => line.slice(indent)).join(\"\\n\");\n}\nfunction interpolate(strings, values) {\n    return strings.reduce((result, string, i) => {\n        const value = values[i] == undefined ? \"\" : values[i];\n        return result + string + value;\n    }, \"\");\n}\nfunction uuid() {\n    return Array.from({ length: 36 })\n        .map((_, i) => {\n        if (i == 8 || i == 13 || i == 18 || i == 23) {\n            return \"-\";\n        }\n        else if (i == 14) {\n            return \"4\";\n        }\n        else if (i == 19) {\n            return (Math.floor(Math.random() * 4) + 8).toString(16);\n        }\n        else {\n            return Math.floor(Math.random() * 15).toString(16);\n        }\n    })\n        .join(\"\");\n}\nfunction getAttribute(attributeName, ...elements) {\n    for (const value of elements.map((element) => element === null || element === void 0 ? void 0 : element.getAttribute(attributeName))) {\n        if (typeof value == \"string\")\n            return value;\n    }\n    return null;\n}\nfunction hasAttribute(attributeName, ...elements) {\n    return elements.some((element) => element && element.hasAttribute(attributeName));\n}\nfunction markAsBusy(...elements) {\n    for (const element of elements) {\n        if (element.localName == \"turbo-frame\") {\n            element.setAttribute(\"busy\", \"\");\n        }\n        element.setAttribute(\"aria-busy\", \"true\");\n    }\n}\nfunction clearBusyState(...elements) {\n    for (const element of elements) {\n        if (element.localName == \"turbo-frame\") {\n            element.removeAttribute(\"busy\");\n        }\n        element.removeAttribute(\"aria-busy\");\n    }\n}\nfunction waitForLoad(element, timeoutInMilliseconds = 2000) {\n    return new Promise((resolve) => {\n        const onComplete = () => {\n            element.removeEventListener(\"error\", onComplete);\n            element.removeEventListener(\"load\", onComplete);\n            resolve();\n        };\n        element.addEventListener(\"load\", onComplete, { once: true });\n        element.addEventListener(\"error\", onComplete, { once: true });\n        setTimeout(resolve, timeoutInMilliseconds);\n    });\n}\nfunction getHistoryMethodForAction(action) {\n    switch (action) {\n        case \"replace\":\n            return history.replaceState;\n        case \"advance\":\n        case \"restore\":\n            return history.pushState;\n    }\n}\nfunction isAction(action) {\n    return action == \"advance\" || action == \"replace\" || action == \"restore\";\n}\nfunction getVisitAction(...elements) {\n    const action = getAttribute(\"data-turbo-action\", ...elements);\n    return isAction(action) ? action : null;\n}\nfunction getMetaElement(name) {\n    return document.querySelector(`meta[name=\"${name}\"]`);\n}\nfunction getMetaContent(name) {\n    const element = getMetaElement(name);\n    return element && element.content;\n}\nfunction setMetaContent(name, content) {\n    let element = getMetaElement(name);\n    if (!element) {\n        element = document.createElement(\"meta\");\n        element.setAttribute(\"name\", name);\n        document.head.appendChild(element);\n    }\n    element.setAttribute(\"content\", content);\n    return element;\n}\nfunction findClosestRecursively(element, selector) {\n    var _a;\n    if (element instanceof Element) {\n        return (element.closest(selector) ||\n            findClosestRecursively(element.assignedSlot || ((_a = element.getRootNode()) === null || _a === void 0 ? void 0 : _a.host), selector));\n    }\n}\n\nvar FetchMethod;\n(function (FetchMethod) {\n    FetchMethod[FetchMethod[\"get\"] = 0] = \"get\";\n    FetchMethod[FetchMethod[\"post\"] = 1] = \"post\";\n    FetchMethod[FetchMethod[\"put\"] = 2] = \"put\";\n    FetchMethod[FetchMethod[\"patch\"] = 3] = \"patch\";\n    FetchMethod[FetchMethod[\"delete\"] = 4] = \"delete\";\n})(FetchMethod || (FetchMethod = {}));\nfunction fetchMethodFromString(method) {\n    switch (method.toLowerCase()) {\n        case \"get\":\n            return FetchMethod.get;\n        case \"post\":\n            return FetchMethod.post;\n        case \"put\":\n            return FetchMethod.put;\n        case \"patch\":\n            return FetchMethod.patch;\n        case \"delete\":\n            return FetchMethod.delete;\n    }\n}\nclass FetchRequest {\n    constructor(delegate, method, location, body = new URLSearchParams(), target = null) {\n        this.abortController = new AbortController();\n        this.resolveRequestPromise = (_value) => { };\n        this.delegate = delegate;\n        this.method = method;\n        this.headers = this.defaultHeaders;\n        this.body = body;\n        this.url = location;\n        this.target = target;\n    }\n    get location() {\n        return this.url;\n    }\n    get params() {\n        return this.url.searchParams;\n    }\n    get entries() {\n        return this.body ? Array.from(this.body.entries()) : [];\n    }\n    cancel() {\n        this.abortController.abort();\n    }\n    async perform() {\n        const { fetchOptions } = this;\n        this.delegate.prepareRequest(this);\n        await this.allowRequestToBeIntercepted(fetchOptions);\n        try {\n            this.delegate.requestStarted(this);\n            const response = await fetch(this.url.href, fetchOptions);\n            return await this.receive(response);\n        }\n        catch (error) {\n            if (error.name !== \"AbortError\") {\n                if (this.willDelegateErrorHandling(error)) {\n                    this.delegate.requestErrored(this, error);\n                }\n                throw error;\n            }\n        }\n        finally {\n            this.delegate.requestFinished(this);\n        }\n    }\n    async receive(response) {\n        const fetchResponse = new FetchResponse(response);\n        const event = dispatch(\"turbo:before-fetch-response\", {\n            cancelable: true,\n            detail: { fetchResponse },\n            target: this.target,\n        });\n        if (event.defaultPrevented) {\n            this.delegate.requestPreventedHandlingResponse(this, fetchResponse);\n        }\n        else if (fetchResponse.succeeded) {\n            this.delegate.requestSucceededWithResponse(this, fetchResponse);\n        }\n        else {\n            this.delegate.requestFailedWithResponse(this, fetchResponse);\n        }\n        return fetchResponse;\n    }\n    get fetchOptions() {\n        var _a;\n        return {\n            method: FetchMethod[this.method].toUpperCase(),\n            credentials: \"same-origin\",\n            headers: this.headers,\n            redirect: \"follow\",\n            body: this.isIdempotent ? null : this.body,\n            signal: this.abortSignal,\n            referrer: (_a = this.delegate.referrer) === null || _a === void 0 ? void 0 : _a.href,\n        };\n    }\n    get defaultHeaders() {\n        return {\n            Accept: \"text/html, application/xhtml+xml\",\n        };\n    }\n    get isIdempotent() {\n        return this.method == FetchMethod.get;\n    }\n    get abortSignal() {\n        return this.abortController.signal;\n    }\n    acceptResponseType(mimeType) {\n        this.headers[\"Accept\"] = [mimeType, this.headers[\"Accept\"]].join(\", \");\n    }\n    async allowRequestToBeIntercepted(fetchOptions) {\n        const requestInterception = new Promise((resolve) => (this.resolveRequestPromise = resolve));\n        const event = dispatch(\"turbo:before-fetch-request\", {\n            cancelable: true,\n            detail: {\n                fetchOptions,\n                url: this.url,\n                resume: this.resolveRequestPromise,\n            },\n            target: this.target,\n        });\n        if (event.defaultPrevented)\n            await requestInterception;\n    }\n    willDelegateErrorHandling(error) {\n        const event = dispatch(\"turbo:fetch-request-error\", {\n            target: this.target,\n            cancelable: true,\n            detail: { request: this, error: error },\n        });\n        return !event.defaultPrevented;\n    }\n}\n\nclass AppearanceObserver {\n    constructor(delegate, element) {\n        this.started = false;\n        this.intersect = (entries) => {\n            const lastEntry = entries.slice(-1)[0];\n            if (lastEntry === null || lastEntry === void 0 ? void 0 : lastEntry.isIntersecting) {\n                this.delegate.elementAppearedInViewport(this.element);\n            }\n        };\n        this.delegate = delegate;\n        this.element = element;\n        this.intersectionObserver = new IntersectionObserver(this.intersect);\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.intersectionObserver.observe(this.element);\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.started = false;\n            this.intersectionObserver.unobserve(this.element);\n        }\n    }\n}\n\nclass StreamMessage {\n    constructor(fragment) {\n        this.fragment = importStreamElements(fragment);\n    }\n    static wrap(message) {\n        if (typeof message == \"string\") {\n            return new this(createDocumentFragment(message));\n        }\n        else {\n            return message;\n        }\n    }\n}\nStreamMessage.contentType = \"text/vnd.turbo-stream.html\";\nfunction importStreamElements(fragment) {\n    for (const element of fragment.querySelectorAll(\"turbo-stream\")) {\n        const streamElement = document.importNode(element, true);\n        for (const inertScriptElement of streamElement.templateElement.content.querySelectorAll(\"script\")) {\n            inertScriptElement.replaceWith(activateScriptElement(inertScriptElement));\n        }\n        element.replaceWith(streamElement);\n    }\n    return fragment;\n}\n\nvar FormSubmissionState;\n(function (FormSubmissionState) {\n    FormSubmissionState[FormSubmissionState[\"initialized\"] = 0] = \"initialized\";\n    FormSubmissionState[FormSubmissionState[\"requesting\"] = 1] = \"requesting\";\n    FormSubmissionState[FormSubmissionState[\"waiting\"] = 2] = \"waiting\";\n    FormSubmissionState[FormSubmissionState[\"receiving\"] = 3] = \"receiving\";\n    FormSubmissionState[FormSubmissionState[\"stopping\"] = 4] = \"stopping\";\n    FormSubmissionState[FormSubmissionState[\"stopped\"] = 5] = \"stopped\";\n})(FormSubmissionState || (FormSubmissionState = {}));\nvar FormEnctype;\n(function (FormEnctype) {\n    FormEnctype[\"urlEncoded\"] = \"application/x-www-form-urlencoded\";\n    FormEnctype[\"multipart\"] = \"multipart/form-data\";\n    FormEnctype[\"plain\"] = \"text/plain\";\n})(FormEnctype || (FormEnctype = {}));\nfunction formEnctypeFromString(encoding) {\n    switch (encoding.toLowerCase()) {\n        case FormEnctype.multipart:\n            return FormEnctype.multipart;\n        case FormEnctype.plain:\n            return FormEnctype.plain;\n        default:\n            return FormEnctype.urlEncoded;\n    }\n}\nclass FormSubmission {\n    constructor(delegate, formElement, submitter, mustRedirect = false) {\n        this.state = FormSubmissionState.initialized;\n        this.delegate = delegate;\n        this.formElement = formElement;\n        this.submitter = submitter;\n        this.formData = buildFormData(formElement, submitter);\n        this.location = expandURL(this.action);\n        if (this.method == FetchMethod.get) {\n            mergeFormDataEntries(this.location, [...this.body.entries()]);\n        }\n        this.fetchRequest = new FetchRequest(this, this.method, this.location, this.body, this.formElement);\n        this.mustRedirect = mustRedirect;\n    }\n    static confirmMethod(message, _element, _submitter) {\n        return Promise.resolve(confirm(message));\n    }\n    get method() {\n        var _a;\n        const method = ((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute(\"formmethod\")) || this.formElement.getAttribute(\"method\") || \"\";\n        return fetchMethodFromString(method.toLowerCase()) || FetchMethod.get;\n    }\n    get action() {\n        var _a;\n        const formElementAction = typeof this.formElement.action === \"string\" ? this.formElement.action : null;\n        if ((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.hasAttribute(\"formaction\")) {\n            return this.submitter.getAttribute(\"formaction\") || \"\";\n        }\n        else {\n            return this.formElement.getAttribute(\"action\") || formElementAction || \"\";\n        }\n    }\n    get body() {\n        if (this.enctype == FormEnctype.urlEncoded || this.method == FetchMethod.get) {\n            return new URLSearchParams(this.stringFormData);\n        }\n        else {\n            return this.formData;\n        }\n    }\n    get enctype() {\n        var _a;\n        return formEnctypeFromString(((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute(\"formenctype\")) || this.formElement.enctype);\n    }\n    get isIdempotent() {\n        return this.fetchRequest.isIdempotent;\n    }\n    get stringFormData() {\n        return [...this.formData].reduce((entries, [name, value]) => {\n            return entries.concat(typeof value == \"string\" ? [[name, value]] : []);\n        }, []);\n    }\n    async start() {\n        const { initialized, requesting } = FormSubmissionState;\n        const confirmationMessage = getAttribute(\"data-turbo-confirm\", this.submitter, this.formElement);\n        if (typeof confirmationMessage === \"string\") {\n            const answer = await FormSubmission.confirmMethod(confirmationMessage, this.formElement, this.submitter);\n            if (!answer) {\n                return;\n            }\n        }\n        if (this.state == initialized) {\n            this.state = requesting;\n            return this.fetchRequest.perform();\n        }\n    }\n    stop() {\n        const { stopping, stopped } = FormSubmissionState;\n        if (this.state != stopping && this.state != stopped) {\n            this.state = stopping;\n            this.fetchRequest.cancel();\n            return true;\n        }\n    }\n    prepareRequest(request) {\n        if (!request.isIdempotent) {\n            const token = getCookieValue(getMetaContent(\"csrf-param\")) || getMetaContent(\"csrf-token\");\n            if (token) {\n                request.headers[\"X-CSRF-Token\"] = token;\n            }\n        }\n        if (this.requestAcceptsTurboStreamResponse(request)) {\n            request.acceptResponseType(StreamMessage.contentType);\n        }\n    }\n    requestStarted(_request) {\n        var _a;\n        this.state = FormSubmissionState.waiting;\n        (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.setAttribute(\"disabled\", \"\");\n        dispatch(\"turbo:submit-start\", {\n            target: this.formElement,\n            detail: { formSubmission: this },\n        });\n        this.delegate.formSubmissionStarted(this);\n    }\n    requestPreventedHandlingResponse(request, response) {\n        this.result = { success: response.succeeded, fetchResponse: response };\n    }\n    requestSucceededWithResponse(request, response) {\n        if (response.clientError || response.serverError) {\n            this.delegate.formSubmissionFailedWithResponse(this, response);\n        }\n        else if (this.requestMustRedirect(request) && responseSucceededWithoutRedirect(response)) {\n            const error = new Error(\"Form responses must redirect to another location\");\n            this.delegate.formSubmissionErrored(this, error);\n        }\n        else {\n            this.state = FormSubmissionState.receiving;\n            this.result = { success: true, fetchResponse: response };\n            this.delegate.formSubmissionSucceededWithResponse(this, response);\n        }\n    }\n    requestFailedWithResponse(request, response) {\n        this.result = { success: false, fetchResponse: response };\n        this.delegate.formSubmissionFailedWithResponse(this, response);\n    }\n    requestErrored(request, error) {\n        this.result = { success: false, error };\n        this.delegate.formSubmissionErrored(this, error);\n    }\n    requestFinished(_request) {\n        var _a;\n        this.state = FormSubmissionState.stopped;\n        (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.removeAttribute(\"disabled\");\n        dispatch(\"turbo:submit-end\", {\n            target: this.formElement,\n            detail: Object.assign({ formSubmission: this }, this.result),\n        });\n        this.delegate.formSubmissionFinished(this);\n    }\n    requestMustRedirect(request) {\n        return !request.isIdempotent && this.mustRedirect;\n    }\n    requestAcceptsTurboStreamResponse(request) {\n        return !request.isIdempotent || hasAttribute(\"data-turbo-stream\", this.submitter, this.formElement);\n    }\n}\nfunction buildFormData(formElement, submitter) {\n    const formData = new FormData(formElement);\n    const name = submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"name\");\n    const value = submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"value\");\n    if (name) {\n        formData.append(name, value || \"\");\n    }\n    return formData;\n}\nfunction getCookieValue(cookieName) {\n    if (cookieName != null) {\n        const cookies = document.cookie ? document.cookie.split(\"; \") : [];\n        const cookie = cookies.find((cookie) => cookie.startsWith(cookieName));\n        if (cookie) {\n            const value = cookie.split(\"=\").slice(1).join(\"=\");\n            return value ? decodeURIComponent(value) : undefined;\n        }\n    }\n}\nfunction responseSucceededWithoutRedirect(response) {\n    return response.statusCode == 200 && !response.redirected;\n}\nfunction mergeFormDataEntries(url, entries) {\n    const searchParams = new URLSearchParams();\n    for (const [name, value] of entries) {\n        if (value instanceof File)\n            continue;\n        searchParams.append(name, value);\n    }\n    url.search = searchParams.toString();\n    return url;\n}\n\nclass Snapshot {\n    constructor(element) {\n        this.element = element;\n    }\n    get activeElement() {\n        return this.element.ownerDocument.activeElement;\n    }\n    get children() {\n        return [...this.element.children];\n    }\n    hasAnchor(anchor) {\n        return this.getElementForAnchor(anchor) != null;\n    }\n    getElementForAnchor(anchor) {\n        return anchor ? this.element.querySelector(`[id='${anchor}'], a[name='${anchor}']`) : null;\n    }\n    get isConnected() {\n        return this.element.isConnected;\n    }\n    get firstAutofocusableElement() {\n        const inertDisabledOrHidden = \"[inert], :disabled, [hidden], details:not([open]), dialog:not([open])\";\n        for (const element of this.element.querySelectorAll(\"[autofocus]\")) {\n            if (element.closest(inertDisabledOrHidden) == null)\n                return element;\n            else\n                continue;\n        }\n        return null;\n    }\n    get permanentElements() {\n        return queryPermanentElementsAll(this.element);\n    }\n    getPermanentElementById(id) {\n        return getPermanentElementById(this.element, id);\n    }\n    getPermanentElementMapForSnapshot(snapshot) {\n        const permanentElementMap = {};\n        for (const currentPermanentElement of this.permanentElements) {\n            const { id } = currentPermanentElement;\n            const newPermanentElement = snapshot.getPermanentElementById(id);\n            if (newPermanentElement) {\n                permanentElementMap[id] = [currentPermanentElement, newPermanentElement];\n            }\n        }\n        return permanentElementMap;\n    }\n}\nfunction getPermanentElementById(node, id) {\n    return node.querySelector(`#${id}[data-turbo-permanent]`);\n}\nfunction queryPermanentElementsAll(node) {\n    return node.querySelectorAll(\"[id][data-turbo-permanent]\");\n}\n\nclass FormSubmitObserver {\n    constructor(delegate, eventTarget) {\n        this.started = false;\n        this.submitCaptured = () => {\n            this.eventTarget.removeEventListener(\"submit\", this.submitBubbled, false);\n            this.eventTarget.addEventListener(\"submit\", this.submitBubbled, false);\n        };\n        this.submitBubbled = ((event) => {\n            if (!event.defaultPrevented) {\n                const form = event.target instanceof HTMLFormElement ? event.target : undefined;\n                const submitter = event.submitter || undefined;\n                if (form &&\n                    submissionDoesNotDismissDialog(form, submitter) &&\n                    submissionDoesNotTargetIFrame(form, submitter) &&\n                    this.delegate.willSubmitForm(form, submitter)) {\n                    event.preventDefault();\n                    event.stopImmediatePropagation();\n                    this.delegate.formSubmitted(form, submitter);\n                }\n            }\n        });\n        this.delegate = delegate;\n        this.eventTarget = eventTarget;\n    }\n    start() {\n        if (!this.started) {\n            this.eventTarget.addEventListener(\"submit\", this.submitCaptured, true);\n            this.started = true;\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.eventTarget.removeEventListener(\"submit\", this.submitCaptured, true);\n            this.started = false;\n        }\n    }\n}\nfunction submissionDoesNotDismissDialog(form, submitter) {\n    const method = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formmethod\")) || form.getAttribute(\"method\");\n    return method != \"dialog\";\n}\nfunction submissionDoesNotTargetIFrame(form, submitter) {\n    if ((submitter === null || submitter === void 0 ? void 0 : submitter.hasAttribute(\"formtarget\")) || form.hasAttribute(\"target\")) {\n        const target = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formtarget\")) || form.target;\n        for (const element of document.getElementsByName(target)) {\n            if (element instanceof HTMLIFrameElement)\n                return false;\n        }\n        return true;\n    }\n    else {\n        return true;\n    }\n}\n\nclass View {\n    constructor(delegate, element) {\n        this.resolveRenderPromise = (_value) => { };\n        this.resolveInterceptionPromise = (_value) => { };\n        this.delegate = delegate;\n        this.element = element;\n    }\n    scrollToAnchor(anchor) {\n        const element = this.snapshot.getElementForAnchor(anchor);\n        if (element) {\n            this.scrollToElement(element);\n            this.focusElement(element);\n        }\n        else {\n            this.scrollToPosition({ x: 0, y: 0 });\n        }\n    }\n    scrollToAnchorFromLocation(location) {\n        this.scrollToAnchor(getAnchor(location));\n    }\n    scrollToElement(element) {\n        element.scrollIntoView();\n    }\n    focusElement(element) {\n        if (element instanceof HTMLElement) {\n            if (element.hasAttribute(\"tabindex\")) {\n                element.focus();\n            }\n            else {\n                element.setAttribute(\"tabindex\", \"-1\");\n                element.focus();\n                element.removeAttribute(\"tabindex\");\n            }\n        }\n    }\n    scrollToPosition({ x, y }) {\n        this.scrollRoot.scrollTo(x, y);\n    }\n    scrollToTop() {\n        this.scrollToPosition({ x: 0, y: 0 });\n    }\n    get scrollRoot() {\n        return window;\n    }\n    async render(renderer) {\n        const { isPreview, shouldRender, newSnapshot: snapshot } = renderer;\n        if (shouldRender) {\n            try {\n                this.renderPromise = new Promise((resolve) => (this.resolveRenderPromise = resolve));\n                this.renderer = renderer;\n                await this.prepareToRenderSnapshot(renderer);\n                const renderInterception = new Promise((resolve) => (this.resolveInterceptionPromise = resolve));\n                const options = { resume: this.resolveInterceptionPromise, render: this.renderer.renderElement };\n                const immediateRender = this.delegate.allowsImmediateRender(snapshot, options);\n                if (!immediateRender)\n                    await renderInterception;\n                await this.renderSnapshot(renderer);\n                this.delegate.viewRenderedSnapshot(snapshot, isPreview);\n                this.delegate.preloadOnLoadLinksForView(this.element);\n                this.finishRenderingSnapshot(renderer);\n            }\n            finally {\n                delete this.renderer;\n                this.resolveRenderPromise(undefined);\n                delete this.renderPromise;\n            }\n        }\n        else {\n            this.invalidate(renderer.reloadReason);\n        }\n    }\n    invalidate(reason) {\n        this.delegate.viewInvalidated(reason);\n    }\n    async prepareToRenderSnapshot(renderer) {\n        this.markAsPreview(renderer.isPreview);\n        await renderer.prepareToRender();\n    }\n    markAsPreview(isPreview) {\n        if (isPreview) {\n            this.element.setAttribute(\"data-turbo-preview\", \"\");\n        }\n        else {\n            this.element.removeAttribute(\"data-turbo-preview\");\n        }\n    }\n    async renderSnapshot(renderer) {\n        await renderer.render();\n    }\n    finishRenderingSnapshot(renderer) {\n        renderer.finishRendering();\n    }\n}\n\nclass FrameView extends View {\n    invalidate() {\n        this.element.innerHTML = \"\";\n    }\n    get snapshot() {\n        return new Snapshot(this.element);\n    }\n}\n\nclass LinkInterceptor {\n    constructor(delegate, element) {\n        this.clickBubbled = (event) => {\n            if (this.respondsToEventTarget(event.target)) {\n                this.clickEvent = event;\n            }\n            else {\n                delete this.clickEvent;\n            }\n        };\n        this.linkClicked = ((event) => {\n            if (this.clickEvent && this.respondsToEventTarget(event.target) && event.target instanceof Element) {\n                if (this.delegate.shouldInterceptLinkClick(event.target, event.detail.url, event.detail.originalEvent)) {\n                    this.clickEvent.preventDefault();\n                    event.preventDefault();\n                    this.delegate.linkClickIntercepted(event.target, event.detail.url, event.detail.originalEvent);\n                }\n            }\n            delete this.clickEvent;\n        });\n        this.willVisit = ((_event) => {\n            delete this.clickEvent;\n        });\n        this.delegate = delegate;\n        this.element = element;\n    }\n    start() {\n        this.element.addEventListener(\"click\", this.clickBubbled);\n        document.addEventListener(\"turbo:click\", this.linkClicked);\n        document.addEventListener(\"turbo:before-visit\", this.willVisit);\n    }\n    stop() {\n        this.element.removeEventListener(\"click\", this.clickBubbled);\n        document.removeEventListener(\"turbo:click\", this.linkClicked);\n        document.removeEventListener(\"turbo:before-visit\", this.willVisit);\n    }\n    respondsToEventTarget(target) {\n        const element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null;\n        return element && element.closest(\"turbo-frame, html\") == this.element;\n    }\n}\n\nclass LinkClickObserver {\n    constructor(delegate, eventTarget) {\n        this.started = false;\n        this.clickCaptured = () => {\n            this.eventTarget.removeEventListener(\"click\", this.clickBubbled, false);\n            this.eventTarget.addEventListener(\"click\", this.clickBubbled, false);\n        };\n        this.clickBubbled = (event) => {\n            if (event instanceof MouseEvent && this.clickEventIsSignificant(event)) {\n                const target = (event.composedPath && event.composedPath()[0]) || event.target;\n                const link = this.findLinkFromClickTarget(target);\n                if (link && doesNotTargetIFrame(link)) {\n                    const location = this.getLocationForLink(link);\n                    if (this.delegate.willFollowLinkToLocation(link, location, event)) {\n                        event.preventDefault();\n                        this.delegate.followedLinkToLocation(link, location);\n                    }\n                }\n            }\n        };\n        this.delegate = delegate;\n        this.eventTarget = eventTarget;\n    }\n    start() {\n        if (!this.started) {\n            this.eventTarget.addEventListener(\"click\", this.clickCaptured, true);\n            this.started = true;\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.eventTarget.removeEventListener(\"click\", this.clickCaptured, true);\n            this.started = false;\n        }\n    }\n    clickEventIsSignificant(event) {\n        return !((event.target && event.target.isContentEditable) ||\n            event.defaultPrevented ||\n            event.which > 1 ||\n            event.altKey ||\n            event.ctrlKey ||\n            event.metaKey ||\n            event.shiftKey);\n    }\n    findLinkFromClickTarget(target) {\n        return findClosestRecursively(target, \"a[href]:not([target^=_]):not([download])\");\n    }\n    getLocationForLink(link) {\n        return expandURL(link.getAttribute(\"href\") || \"\");\n    }\n}\nfunction doesNotTargetIFrame(anchor) {\n    if (anchor.hasAttribute(\"target\")) {\n        for (const element of document.getElementsByName(anchor.target)) {\n            if (element instanceof HTMLIFrameElement)\n                return false;\n        }\n        return true;\n    }\n    else {\n        return true;\n    }\n}\n\nclass FormLinkClickObserver {\n    constructor(delegate, element) {\n        this.delegate = delegate;\n        this.linkInterceptor = new LinkClickObserver(this, element);\n    }\n    start() {\n        this.linkInterceptor.start();\n    }\n    stop() {\n        this.linkInterceptor.stop();\n    }\n    willFollowLinkToLocation(link, location, originalEvent) {\n        return (this.delegate.willSubmitFormLinkToLocation(link, location, originalEvent) &&\n            link.hasAttribute(\"data-turbo-method\"));\n    }\n    followedLinkToLocation(link, location) {\n        const form = document.createElement(\"form\");\n        const type = \"hidden\";\n        for (const [name, value] of location.searchParams) {\n            form.append(Object.assign(document.createElement(\"input\"), { type, name, value }));\n        }\n        const action = Object.assign(location, { search: \"\" });\n        form.setAttribute(\"data-turbo\", \"true\");\n        form.setAttribute(\"action\", action.href);\n        form.setAttribute(\"hidden\", \"\");\n        const method = link.getAttribute(\"data-turbo-method\");\n        if (method)\n            form.setAttribute(\"method\", method);\n        const turboFrame = link.getAttribute(\"data-turbo-frame\");\n        if (turboFrame)\n            form.setAttribute(\"data-turbo-frame\", turboFrame);\n        const turboAction = getVisitAction(link);\n        if (turboAction)\n            form.setAttribute(\"data-turbo-action\", turboAction);\n        const turboConfirm = link.getAttribute(\"data-turbo-confirm\");\n        if (turboConfirm)\n            form.setAttribute(\"data-turbo-confirm\", turboConfirm);\n        const turboStream = link.hasAttribute(\"data-turbo-stream\");\n        if (turboStream)\n            form.setAttribute(\"data-turbo-stream\", \"\");\n        this.delegate.submittedFormLinkToLocation(link, location, form);\n        document.body.appendChild(form);\n        form.addEventListener(\"turbo:submit-end\", () => form.remove(), { once: true });\n        requestAnimationFrame(() => form.requestSubmit());\n    }\n}\n\nclass Bardo {\n    constructor(delegate, permanentElementMap) {\n        this.delegate = delegate;\n        this.permanentElementMap = permanentElementMap;\n    }\n    static async preservingPermanentElements(delegate, permanentElementMap, callback) {\n        const bardo = new this(delegate, permanentElementMap);\n        bardo.enter();\n        await callback();\n        bardo.leave();\n    }\n    enter() {\n        for (const id in this.permanentElementMap) {\n            const [currentPermanentElement, newPermanentElement] = this.permanentElementMap[id];\n            this.delegate.enteringBardo(currentPermanentElement, newPermanentElement);\n            this.replaceNewPermanentElementWithPlaceholder(newPermanentElement);\n        }\n    }\n    leave() {\n        for (const id in this.permanentElementMap) {\n            const [currentPermanentElement] = this.permanentElementMap[id];\n            this.replaceCurrentPermanentElementWithClone(currentPermanentElement);\n            this.replacePlaceholderWithPermanentElement(currentPermanentElement);\n            this.delegate.leavingBardo(currentPermanentElement);\n        }\n    }\n    replaceNewPermanentElementWithPlaceholder(permanentElement) {\n        const placeholder = createPlaceholderForPermanentElement(permanentElement);\n        permanentElement.replaceWith(placeholder);\n    }\n    replaceCurrentPermanentElementWithClone(permanentElement) {\n        const clone = permanentElement.cloneNode(true);\n        permanentElement.replaceWith(clone);\n    }\n    replacePlaceholderWithPermanentElement(permanentElement) {\n        const placeholder = this.getPlaceholderById(permanentElement.id);\n        placeholder === null || placeholder === void 0 ? void 0 : placeholder.replaceWith(permanentElement);\n    }\n    getPlaceholderById(id) {\n        return this.placeholders.find((element) => element.content == id);\n    }\n    get placeholders() {\n        return [...document.querySelectorAll(\"meta[name=turbo-permanent-placeholder][content]\")];\n    }\n}\nfunction createPlaceholderForPermanentElement(permanentElement) {\n    const element = document.createElement(\"meta\");\n    element.setAttribute(\"name\", \"turbo-permanent-placeholder\");\n    element.setAttribute(\"content\", permanentElement.id);\n    return element;\n}\n\nclass Renderer {\n    constructor(currentSnapshot, newSnapshot, renderElement, isPreview, willRender = true) {\n        this.activeElement = null;\n        this.currentSnapshot = currentSnapshot;\n        this.newSnapshot = newSnapshot;\n        this.isPreview = isPreview;\n        this.willRender = willRender;\n        this.renderElement = renderElement;\n        this.promise = new Promise((resolve, reject) => (this.resolvingFunctions = { resolve, reject }));\n    }\n    get shouldRender() {\n        return true;\n    }\n    get reloadReason() {\n        return;\n    }\n    prepareToRender() {\n        return;\n    }\n    finishRendering() {\n        if (this.resolvingFunctions) {\n            this.resolvingFunctions.resolve();\n            delete this.resolvingFunctions;\n        }\n    }\n    async preservingPermanentElements(callback) {\n        await Bardo.preservingPermanentElements(this, this.permanentElementMap, callback);\n    }\n    focusFirstAutofocusableElement() {\n        const element = this.connectedSnapshot.firstAutofocusableElement;\n        if (elementIsFocusable(element)) {\n            element.focus();\n        }\n    }\n    enteringBardo(currentPermanentElement) {\n        if (this.activeElement)\n            return;\n        if (currentPermanentElement.contains(this.currentSnapshot.activeElement)) {\n            this.activeElement = this.currentSnapshot.activeElement;\n        }\n    }\n    leavingBardo(currentPermanentElement) {\n        if (currentPermanentElement.contains(this.activeElement) && this.activeElement instanceof HTMLElement) {\n            this.activeElement.focus();\n            this.activeElement = null;\n        }\n    }\n    get connectedSnapshot() {\n        return this.newSnapshot.isConnected ? this.newSnapshot : this.currentSnapshot;\n    }\n    get currentElement() {\n        return this.currentSnapshot.element;\n    }\n    get newElement() {\n        return this.newSnapshot.element;\n    }\n    get permanentElementMap() {\n        return this.currentSnapshot.getPermanentElementMapForSnapshot(this.newSnapshot);\n    }\n}\nfunction elementIsFocusable(element) {\n    return element && typeof element.focus == \"function\";\n}\n\nclass FrameRenderer extends Renderer {\n    constructor(delegate, currentSnapshot, newSnapshot, renderElement, isPreview, willRender = true) {\n        super(currentSnapshot, newSnapshot, renderElement, isPreview, willRender);\n        this.delegate = delegate;\n    }\n    static renderElement(currentElement, newElement) {\n        var _a;\n        const destinationRange = document.createRange();\n        destinationRange.selectNodeContents(currentElement);\n        destinationRange.deleteContents();\n        const frameElement = newElement;\n        const sourceRange = (_a = frameElement.ownerDocument) === null || _a === void 0 ? void 0 : _a.createRange();\n        if (sourceRange) {\n            sourceRange.selectNodeContents(frameElement);\n            currentElement.appendChild(sourceRange.extractContents());\n        }\n    }\n    get shouldRender() {\n        return true;\n    }\n    async render() {\n        await nextAnimationFrame();\n        this.preservingPermanentElements(() => {\n            this.loadFrameElement();\n        });\n        this.scrollFrameIntoView();\n        await nextAnimationFrame();\n        this.focusFirstAutofocusableElement();\n        await nextAnimationFrame();\n        this.activateScriptElements();\n    }\n    loadFrameElement() {\n        this.delegate.willRenderFrame(this.currentElement, this.newElement);\n        this.renderElement(this.currentElement, this.newElement);\n    }\n    scrollFrameIntoView() {\n        if (this.currentElement.autoscroll || this.newElement.autoscroll) {\n            const element = this.currentElement.firstElementChild;\n            const block = readScrollLogicalPosition(this.currentElement.getAttribute(\"data-autoscroll-block\"), \"end\");\n            const behavior = readScrollBehavior(this.currentElement.getAttribute(\"data-autoscroll-behavior\"), \"auto\");\n            if (element) {\n                element.scrollIntoView({ block, behavior });\n                return true;\n            }\n        }\n        return false;\n    }\n    activateScriptElements() {\n        for (const inertScriptElement of this.newScriptElements) {\n            const activatedScriptElement = activateScriptElement(inertScriptElement);\n            inertScriptElement.replaceWith(activatedScriptElement);\n        }\n    }\n    get newScriptElements() {\n        return this.currentElement.querySelectorAll(\"script\");\n    }\n}\nfunction readScrollLogicalPosition(value, defaultValue) {\n    if (value == \"end\" || value == \"start\" || value == \"center\" || value == \"nearest\") {\n        return value;\n    }\n    else {\n        return defaultValue;\n    }\n}\nfunction readScrollBehavior(value, defaultValue) {\n    if (value == \"auto\" || value == \"smooth\") {\n        return value;\n    }\n    else {\n        return defaultValue;\n    }\n}\n\nclass ProgressBar {\n    constructor() {\n        this.hiding = false;\n        this.value = 0;\n        this.visible = false;\n        this.trickle = () => {\n            this.setValue(this.value + Math.random() / 100);\n        };\n        this.stylesheetElement = this.createStylesheetElement();\n        this.progressElement = this.createProgressElement();\n        this.installStylesheetElement();\n        this.setValue(0);\n    }\n    static get defaultCSS() {\n        return unindent `\n      .turbo-progress-bar {\n        position: fixed;\n        display: block;\n        top: 0;\n        left: 0;\n        height: 3px;\n        background: #0076ff;\n        z-index: 2147483647;\n        transition:\n          width ${ProgressBar.animationDuration}ms ease-out,\n          opacity ${ProgressBar.animationDuration / 2}ms ${ProgressBar.animationDuration / 2}ms ease-in;\n        transform: translate3d(0, 0, 0);\n      }\n    `;\n    }\n    show() {\n        if (!this.visible) {\n            this.visible = true;\n            this.installProgressElement();\n            this.startTrickling();\n        }\n    }\n    hide() {\n        if (this.visible && !this.hiding) {\n            this.hiding = true;\n            this.fadeProgressElement(() => {\n                this.uninstallProgressElement();\n                this.stopTrickling();\n                this.visible = false;\n                this.hiding = false;\n            });\n        }\n    }\n    setValue(value) {\n        this.value = value;\n        this.refresh();\n    }\n    installStylesheetElement() {\n        document.head.insertBefore(this.stylesheetElement, document.head.firstChild);\n    }\n    installProgressElement() {\n        this.progressElement.style.width = \"0\";\n        this.progressElement.style.opacity = \"1\";\n        document.documentElement.insertBefore(this.progressElement, document.body);\n        this.refresh();\n    }\n    fadeProgressElement(callback) {\n        this.progressElement.style.opacity = \"0\";\n        setTimeout(callback, ProgressBar.animationDuration * 1.5);\n    }\n    uninstallProgressElement() {\n        if (this.progressElement.parentNode) {\n            document.documentElement.removeChild(this.progressElement);\n        }\n    }\n    startTrickling() {\n        if (!this.trickleInterval) {\n            this.trickleInterval = window.setInterval(this.trickle, ProgressBar.animationDuration);\n        }\n    }\n    stopTrickling() {\n        window.clearInterval(this.trickleInterval);\n        delete this.trickleInterval;\n    }\n    refresh() {\n        requestAnimationFrame(() => {\n            this.progressElement.style.width = `${10 + this.value * 90}%`;\n        });\n    }\n    createStylesheetElement() {\n        const element = document.createElement(\"style\");\n        element.type = \"text/css\";\n        element.textContent = ProgressBar.defaultCSS;\n        if (this.cspNonce) {\n            element.nonce = this.cspNonce;\n        }\n        return element;\n    }\n    createProgressElement() {\n        const element = document.createElement(\"div\");\n        element.className = \"turbo-progress-bar\";\n        return element;\n    }\n    get cspNonce() {\n        return getMetaContent(\"csp-nonce\");\n    }\n}\nProgressBar.animationDuration = 300;\n\nclass HeadSnapshot extends Snapshot {\n    constructor() {\n        super(...arguments);\n        this.detailsByOuterHTML = this.children\n            .filter((element) => !elementIsNoscript(element))\n            .map((element) => elementWithoutNonce(element))\n            .reduce((result, element) => {\n            const { outerHTML } = element;\n            const details = outerHTML in result\n                ? result[outerHTML]\n                : {\n                    type: elementType(element),\n                    tracked: elementIsTracked(element),\n                    elements: [],\n                };\n            return Object.assign(Object.assign({}, result), { [outerHTML]: Object.assign(Object.assign({}, details), { elements: [...details.elements, element] }) });\n        }, {});\n    }\n    get trackedElementSignature() {\n        return Object.keys(this.detailsByOuterHTML)\n            .filter((outerHTML) => this.detailsByOuterHTML[outerHTML].tracked)\n            .join(\"\");\n    }\n    getScriptElementsNotInSnapshot(snapshot) {\n        return this.getElementsMatchingTypeNotInSnapshot(\"script\", snapshot);\n    }\n    getStylesheetElementsNotInSnapshot(snapshot) {\n        return this.getElementsMatchingTypeNotInSnapshot(\"stylesheet\", snapshot);\n    }\n    getElementsMatchingTypeNotInSnapshot(matchedType, snapshot) {\n        return Object.keys(this.detailsByOuterHTML)\n            .filter((outerHTML) => !(outerHTML in snapshot.detailsByOuterHTML))\n            .map((outerHTML) => this.detailsByOuterHTML[outerHTML])\n            .filter(({ type }) => type == matchedType)\n            .map(({ elements: [element] }) => element);\n    }\n    get provisionalElements() {\n        return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n            const { type, tracked, elements } = this.detailsByOuterHTML[outerHTML];\n            if (type == null && !tracked) {\n                return [...result, ...elements];\n            }\n            else if (elements.length > 1) {\n                return [...result, ...elements.slice(1)];\n            }\n            else {\n                return result;\n            }\n        }, []);\n    }\n    getMetaValue(name) {\n        const element = this.findMetaElementByName(name);\n        return element ? element.getAttribute(\"content\") : null;\n    }\n    findMetaElementByName(name) {\n        return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n            const { elements: [element], } = this.detailsByOuterHTML[outerHTML];\n            return elementIsMetaElementWithName(element, name) ? element : result;\n        }, undefined);\n    }\n}\nfunction elementType(element) {\n    if (elementIsScript(element)) {\n        return \"script\";\n    }\n    else if (elementIsStylesheet(element)) {\n        return \"stylesheet\";\n    }\n}\nfunction elementIsTracked(element) {\n    return element.getAttribute(\"data-turbo-track\") == \"reload\";\n}\nfunction elementIsScript(element) {\n    const tagName = element.localName;\n    return tagName == \"script\";\n}\nfunction elementIsNoscript(element) {\n    const tagName = element.localName;\n    return tagName == \"noscript\";\n}\nfunction elementIsStylesheet(element) {\n    const tagName = element.localName;\n    return tagName == \"style\" || (tagName == \"link\" && element.getAttribute(\"rel\") == \"stylesheet\");\n}\nfunction elementIsMetaElementWithName(element, name) {\n    const tagName = element.localName;\n    return tagName == \"meta\" && element.getAttribute(\"name\") == name;\n}\nfunction elementWithoutNonce(element) {\n    if (element.hasAttribute(\"nonce\")) {\n        element.setAttribute(\"nonce\", \"\");\n    }\n    return element;\n}\n\nclass PageSnapshot extends Snapshot {\n    constructor(element, headSnapshot) {\n        super(element);\n        this.headSnapshot = headSnapshot;\n    }\n    static fromHTMLString(html = \"\") {\n        return this.fromDocument(parseHTMLDocument(html));\n    }\n    static fromElement(element) {\n        return this.fromDocument(element.ownerDocument);\n    }\n    static fromDocument({ head, body }) {\n        return new this(body, new HeadSnapshot(head));\n    }\n    clone() {\n        const clonedElement = this.element.cloneNode(true);\n        const selectElements = this.element.querySelectorAll(\"select\");\n        const clonedSelectElements = clonedElement.querySelectorAll(\"select\");\n        for (const [index, source] of selectElements.entries()) {\n            const clone = clonedSelectElements[index];\n            for (const option of clone.selectedOptions)\n                option.selected = false;\n            for (const option of source.selectedOptions)\n                clone.options[option.index].selected = true;\n        }\n        for (const clonedPasswordInput of clonedElement.querySelectorAll('input[type=\"password\"]')) {\n            clonedPasswordInput.value = \"\";\n        }\n        return new PageSnapshot(clonedElement, this.headSnapshot);\n    }\n    get headElement() {\n        return this.headSnapshot.element;\n    }\n    get rootLocation() {\n        var _a;\n        const root = (_a = this.getSetting(\"root\")) !== null && _a !== void 0 ? _a : \"/\";\n        return expandURL(root);\n    }\n    get cacheControlValue() {\n        return this.getSetting(\"cache-control\");\n    }\n    get isPreviewable() {\n        return this.cacheControlValue != \"no-preview\";\n    }\n    get isCacheable() {\n        return this.cacheControlValue != \"no-cache\";\n    }\n    get isVisitable() {\n        return this.getSetting(\"visit-control\") != \"reload\";\n    }\n    getSetting(name) {\n        return this.headSnapshot.getMetaValue(`turbo-${name}`);\n    }\n}\n\nvar TimingMetric;\n(function (TimingMetric) {\n    TimingMetric[\"visitStart\"] = \"visitStart\";\n    TimingMetric[\"requestStart\"] = \"requestStart\";\n    TimingMetric[\"requestEnd\"] = \"requestEnd\";\n    TimingMetric[\"visitEnd\"] = \"visitEnd\";\n})(TimingMetric || (TimingMetric = {}));\nvar VisitState;\n(function (VisitState) {\n    VisitState[\"initialized\"] = \"initialized\";\n    VisitState[\"started\"] = \"started\";\n    VisitState[\"canceled\"] = \"canceled\";\n    VisitState[\"failed\"] = \"failed\";\n    VisitState[\"completed\"] = \"completed\";\n})(VisitState || (VisitState = {}));\nconst defaultOptions = {\n    action: \"advance\",\n    historyChanged: false,\n    visitCachedSnapshot: () => { },\n    willRender: true,\n    updateHistory: true,\n    shouldCacheSnapshot: true,\n    acceptsStreamResponse: false,\n};\nvar SystemStatusCode;\n(function (SystemStatusCode) {\n    SystemStatusCode[SystemStatusCode[\"networkFailure\"] = 0] = \"networkFailure\";\n    SystemStatusCode[SystemStatusCode[\"timeoutFailure\"] = -1] = \"timeoutFailure\";\n    SystemStatusCode[SystemStatusCode[\"contentTypeMismatch\"] = -2] = \"contentTypeMismatch\";\n})(SystemStatusCode || (SystemStatusCode = {}));\nclass Visit {\n    constructor(delegate, location, restorationIdentifier, options = {}) {\n        this.identifier = uuid();\n        this.timingMetrics = {};\n        this.followedRedirect = false;\n        this.historyChanged = false;\n        this.scrolled = false;\n        this.shouldCacheSnapshot = true;\n        this.acceptsStreamResponse = false;\n        this.snapshotCached = false;\n        this.state = VisitState.initialized;\n        this.delegate = delegate;\n        this.location = location;\n        this.restorationIdentifier = restorationIdentifier || uuid();\n        const { action, historyChanged, referrer, snapshot, snapshotHTML, response, visitCachedSnapshot, willRender, updateHistory, shouldCacheSnapshot, acceptsStreamResponse, } = Object.assign(Object.assign({}, defaultOptions), options);\n        this.action = action;\n        this.historyChanged = historyChanged;\n        this.referrer = referrer;\n        this.snapshot = snapshot;\n        this.snapshotHTML = snapshotHTML;\n        this.response = response;\n        this.isSamePage = this.delegate.locationWithActionIsSamePage(this.location, this.action);\n        this.visitCachedSnapshot = visitCachedSnapshot;\n        this.willRender = willRender;\n        this.updateHistory = updateHistory;\n        this.scrolled = !willRender;\n        this.shouldCacheSnapshot = shouldCacheSnapshot;\n        this.acceptsStreamResponse = acceptsStreamResponse;\n    }\n    get adapter() {\n        return this.delegate.adapter;\n    }\n    get view() {\n        return this.delegate.view;\n    }\n    get history() {\n        return this.delegate.history;\n    }\n    get restorationData() {\n        return this.history.getRestorationDataForIdentifier(this.restorationIdentifier);\n    }\n    get silent() {\n        return this.isSamePage;\n    }\n    start() {\n        if (this.state == VisitState.initialized) {\n            this.recordTimingMetric(TimingMetric.visitStart);\n            this.state = VisitState.started;\n            this.adapter.visitStarted(this);\n            this.delegate.visitStarted(this);\n        }\n    }\n    cancel() {\n        if (this.state == VisitState.started) {\n            if (this.request) {\n                this.request.cancel();\n            }\n            this.cancelRender();\n            this.state = VisitState.canceled;\n        }\n    }\n    complete() {\n        if (this.state == VisitState.started) {\n            this.recordTimingMetric(TimingMetric.visitEnd);\n            this.state = VisitState.completed;\n            this.followRedirect();\n            if (!this.followedRedirect) {\n                this.adapter.visitCompleted(this);\n                this.delegate.visitCompleted(this);\n            }\n        }\n    }\n    fail() {\n        if (this.state == VisitState.started) {\n            this.state = VisitState.failed;\n            this.adapter.visitFailed(this);\n        }\n    }\n    changeHistory() {\n        var _a;\n        if (!this.historyChanged && this.updateHistory) {\n            const actionForHistory = this.location.href === ((_a = this.referrer) === null || _a === void 0 ? void 0 : _a.href) ? \"replace\" : this.action;\n            const method = getHistoryMethodForAction(actionForHistory);\n            this.history.update(method, this.location, this.restorationIdentifier);\n            this.historyChanged = true;\n        }\n    }\n    issueRequest() {\n        if (this.hasPreloadedResponse()) {\n            this.simulateRequest();\n        }\n        else if (this.shouldIssueRequest() && !this.request) {\n            this.request = new FetchRequest(this, FetchMethod.get, this.location);\n            this.request.perform();\n        }\n    }\n    simulateRequest() {\n        if (this.response) {\n            this.startRequest();\n            this.recordResponse();\n            this.finishRequest();\n        }\n    }\n    startRequest() {\n        this.recordTimingMetric(TimingMetric.requestStart);\n        this.adapter.visitRequestStarted(this);\n    }\n    recordResponse(response = this.response) {\n        this.response = response;\n        if (response) {\n            const { statusCode } = response;\n            if (isSuccessful(statusCode)) {\n                this.adapter.visitRequestCompleted(this);\n            }\n            else {\n                this.adapter.visitRequestFailedWithStatusCode(this, statusCode);\n            }\n        }\n    }\n    finishRequest() {\n        this.recordTimingMetric(TimingMetric.requestEnd);\n        this.adapter.visitRequestFinished(this);\n    }\n    loadResponse() {\n        if (this.response) {\n            const { statusCode, responseHTML } = this.response;\n            this.render(async () => {\n                if (this.shouldCacheSnapshot)\n                    this.cacheSnapshot();\n                if (this.view.renderPromise)\n                    await this.view.renderPromise;\n                if (isSuccessful(statusCode) && responseHTML != null) {\n                    await this.view.renderPage(PageSnapshot.fromHTMLString(responseHTML), false, this.willRender, this);\n                    this.performScroll();\n                    this.adapter.visitRendered(this);\n                    this.complete();\n                }\n                else {\n                    await this.view.renderError(PageSnapshot.fromHTMLString(responseHTML), this);\n                    this.adapter.visitRendered(this);\n                    this.fail();\n                }\n            });\n        }\n    }\n    getCachedSnapshot() {\n        const snapshot = this.view.getCachedSnapshotForLocation(this.location) || this.getPreloadedSnapshot();\n        if (snapshot && (!getAnchor(this.location) || snapshot.hasAnchor(getAnchor(this.location)))) {\n            if (this.action == \"restore\" || snapshot.isPreviewable) {\n                return snapshot;\n            }\n        }\n    }\n    getPreloadedSnapshot() {\n        if (this.snapshotHTML) {\n            return PageSnapshot.fromHTMLString(this.snapshotHTML);\n        }\n    }\n    hasCachedSnapshot() {\n        return this.getCachedSnapshot() != null;\n    }\n    loadCachedSnapshot() {\n        const snapshot = this.getCachedSnapshot();\n        if (snapshot) {\n            const isPreview = this.shouldIssueRequest();\n            this.render(async () => {\n                this.cacheSnapshot();\n                if (this.isSamePage) {\n                    this.adapter.visitRendered(this);\n                }\n                else {\n                    if (this.view.renderPromise)\n                        await this.view.renderPromise;\n                    await this.view.renderPage(snapshot, isPreview, this.willRender, this);\n                    this.performScroll();\n                    this.adapter.visitRendered(this);\n                    if (!isPreview) {\n                        this.complete();\n                    }\n                }\n            });\n        }\n    }\n    followRedirect() {\n        var _a;\n        if (this.redirectedToLocation && !this.followedRedirect && ((_a = this.response) === null || _a === void 0 ? void 0 : _a.redirected)) {\n            this.adapter.visitProposedToLocation(this.redirectedToLocation, {\n                action: \"replace\",\n                response: this.response,\n                shouldCacheSnapshot: false,\n                willRender: false,\n            });\n            this.followedRedirect = true;\n        }\n    }\n    goToSamePageAnchor() {\n        if (this.isSamePage) {\n            this.render(async () => {\n                this.cacheSnapshot();\n                this.performScroll();\n                this.changeHistory();\n                this.adapter.visitRendered(this);\n            });\n        }\n    }\n    prepareRequest(request) {\n        if (this.acceptsStreamResponse) {\n            request.acceptResponseType(StreamMessage.contentType);\n        }\n    }\n    requestStarted() {\n        this.startRequest();\n    }\n    requestPreventedHandlingResponse(_request, _response) { }\n    async requestSucceededWithResponse(request, response) {\n        const responseHTML = await response.responseHTML;\n        const { redirected, statusCode } = response;\n        if (responseHTML == undefined) {\n            this.recordResponse({\n                statusCode: SystemStatusCode.contentTypeMismatch,\n                redirected,\n            });\n        }\n        else {\n            this.redirectedToLocation = response.redirected ? response.location : undefined;\n            this.recordResponse({ statusCode: statusCode, responseHTML, redirected });\n        }\n    }\n    async requestFailedWithResponse(request, response) {\n        const responseHTML = await response.responseHTML;\n        const { redirected, statusCode } = response;\n        if (responseHTML == undefined) {\n            this.recordResponse({\n                statusCode: SystemStatusCode.contentTypeMismatch,\n                redirected,\n            });\n        }\n        else {\n            this.recordResponse({ statusCode: statusCode, responseHTML, redirected });\n        }\n    }\n    requestErrored(_request, _error) {\n        this.recordResponse({\n            statusCode: SystemStatusCode.networkFailure,\n            redirected: false,\n        });\n    }\n    requestFinished() {\n        this.finishRequest();\n    }\n    performScroll() {\n        if (!this.scrolled && !this.view.forceReloaded) {\n            if (this.action == \"restore\") {\n                this.scrollToRestoredPosition() || this.scrollToAnchor() || this.view.scrollToTop();\n            }\n            else {\n                this.scrollToAnchor() || this.view.scrollToTop();\n            }\n            if (this.isSamePage) {\n                this.delegate.visitScrolledToSamePageLocation(this.view.lastRenderedLocation, this.location);\n            }\n            this.scrolled = true;\n        }\n    }\n    scrollToRestoredPosition() {\n        const { scrollPosition } = this.restorationData;\n        if (scrollPosition) {\n            this.view.scrollToPosition(scrollPosition);\n            return true;\n        }\n    }\n    scrollToAnchor() {\n        const anchor = getAnchor(this.location);\n        if (anchor != null) {\n            this.view.scrollToAnchor(anchor);\n            return true;\n        }\n    }\n    recordTimingMetric(metric) {\n        this.timingMetrics[metric] = new Date().getTime();\n    }\n    getTimingMetrics() {\n        return Object.assign({}, this.timingMetrics);\n    }\n    getHistoryMethodForAction(action) {\n        switch (action) {\n            case \"replace\":\n                return history.replaceState;\n            case \"advance\":\n            case \"restore\":\n                return history.pushState;\n        }\n    }\n    hasPreloadedResponse() {\n        return typeof this.response == \"object\";\n    }\n    shouldIssueRequest() {\n        if (this.isSamePage) {\n            return false;\n        }\n        else if (this.action == \"restore\") {\n            return !this.hasCachedSnapshot();\n        }\n        else {\n            return this.willRender;\n        }\n    }\n    cacheSnapshot() {\n        if (!this.snapshotCached) {\n            this.view.cacheSnapshot(this.snapshot).then((snapshot) => snapshot && this.visitCachedSnapshot(snapshot));\n            this.snapshotCached = true;\n        }\n    }\n    async render(callback) {\n        this.cancelRender();\n        await new Promise((resolve) => {\n            this.frame = requestAnimationFrame(() => resolve());\n        });\n        await callback();\n        delete this.frame;\n    }\n    cancelRender() {\n        if (this.frame) {\n            cancelAnimationFrame(this.frame);\n            delete this.frame;\n        }\n    }\n}\nfunction isSuccessful(statusCode) {\n    return statusCode >= 200 && statusCode < 300;\n}\n\nclass BrowserAdapter {\n    constructor(session) {\n        this.progressBar = new ProgressBar();\n        this.showProgressBar = () => {\n            this.progressBar.show();\n        };\n        this.session = session;\n    }\n    visitProposedToLocation(location, options) {\n        this.navigator.startVisit(location, (options === null || options === void 0 ? void 0 : options.restorationIdentifier) || uuid(), options);\n    }\n    visitStarted(visit) {\n        this.location = visit.location;\n        visit.loadCachedSnapshot();\n        visit.issueRequest();\n        visit.goToSamePageAnchor();\n    }\n    visitRequestStarted(visit) {\n        this.progressBar.setValue(0);\n        if (visit.hasCachedSnapshot() || visit.action != \"restore\") {\n            this.showVisitProgressBarAfterDelay();\n        }\n        else {\n            this.showProgressBar();\n        }\n    }\n    visitRequestCompleted(visit) {\n        visit.loadResponse();\n    }\n    visitRequestFailedWithStatusCode(visit, statusCode) {\n        switch (statusCode) {\n            case SystemStatusCode.networkFailure:\n            case SystemStatusCode.timeoutFailure:\n            case SystemStatusCode.contentTypeMismatch:\n                return this.reload({\n                    reason: \"request_failed\",\n                    context: {\n                        statusCode,\n                    },\n                });\n            default:\n                return visit.loadResponse();\n        }\n    }\n    visitRequestFinished(_visit) {\n        this.progressBar.setValue(1);\n        this.hideVisitProgressBar();\n    }\n    visitCompleted(_visit) { }\n    pageInvalidated(reason) {\n        this.reload(reason);\n    }\n    visitFailed(_visit) { }\n    visitRendered(_visit) { }\n    formSubmissionStarted(_formSubmission) {\n        this.progressBar.setValue(0);\n        this.showFormProgressBarAfterDelay();\n    }\n    formSubmissionFinished(_formSubmission) {\n        this.progressBar.setValue(1);\n        this.hideFormProgressBar();\n    }\n    showVisitProgressBarAfterDelay() {\n        this.visitProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n    }\n    hideVisitProgressBar() {\n        this.progressBar.hide();\n        if (this.visitProgressBarTimeout != null) {\n            window.clearTimeout(this.visitProgressBarTimeout);\n            delete this.visitProgressBarTimeout;\n        }\n    }\n    showFormProgressBarAfterDelay() {\n        if (this.formProgressBarTimeout == null) {\n            this.formProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n        }\n    }\n    hideFormProgressBar() {\n        this.progressBar.hide();\n        if (this.formProgressBarTimeout != null) {\n            window.clearTimeout(this.formProgressBarTimeout);\n            delete this.formProgressBarTimeout;\n        }\n    }\n    reload(reason) {\n        var _a;\n        dispatch(\"turbo:reload\", { detail: reason });\n        window.location.href = ((_a = this.location) === null || _a === void 0 ? void 0 : _a.toString()) || window.location.href;\n    }\n    get navigator() {\n        return this.session.navigator;\n    }\n}\n\nclass CacheObserver {\n    constructor() {\n        this.started = false;\n        this.removeStaleElements = ((_event) => {\n            const staleElements = [...document.querySelectorAll('[data-turbo-cache=\"false\"]')];\n            for (const element of staleElements) {\n                element.remove();\n            }\n        });\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            addEventListener(\"turbo:before-cache\", this.removeStaleElements, false);\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.started = false;\n            removeEventListener(\"turbo:before-cache\", this.removeStaleElements, false);\n        }\n    }\n}\n\nclass FrameRedirector {\n    constructor(session, element) {\n        this.session = session;\n        this.element = element;\n        this.linkInterceptor = new LinkInterceptor(this, element);\n        this.formSubmitObserver = new FormSubmitObserver(this, element);\n    }\n    start() {\n        this.linkInterceptor.start();\n        this.formSubmitObserver.start();\n    }\n    stop() {\n        this.linkInterceptor.stop();\n        this.formSubmitObserver.stop();\n    }\n    shouldInterceptLinkClick(element, _location, _event) {\n        return this.shouldRedirect(element);\n    }\n    linkClickIntercepted(element, url, event) {\n        const frame = this.findFrameElement(element);\n        if (frame) {\n            frame.delegate.linkClickIntercepted(element, url, event);\n        }\n    }\n    willSubmitForm(element, submitter) {\n        return (element.closest(\"turbo-frame\") == null &&\n            this.shouldSubmit(element, submitter) &&\n            this.shouldRedirect(element, submitter));\n    }\n    formSubmitted(element, submitter) {\n        const frame = this.findFrameElement(element, submitter);\n        if (frame) {\n            frame.delegate.formSubmitted(element, submitter);\n        }\n    }\n    shouldSubmit(form, submitter) {\n        var _a;\n        const action = getAction(form, submitter);\n        const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n        const rootLocation = expandURL((_a = meta === null || meta === void 0 ? void 0 : meta.content) !== null && _a !== void 0 ? _a : \"/\");\n        return this.shouldRedirect(form, submitter) && locationIsVisitable(action, rootLocation);\n    }\n    shouldRedirect(element, submitter) {\n        const isNavigatable = element instanceof HTMLFormElement\n            ? this.session.submissionIsNavigatable(element, submitter)\n            : this.session.elementIsNavigatable(element);\n        if (isNavigatable) {\n            const frame = this.findFrameElement(element, submitter);\n            return frame ? frame != element.closest(\"turbo-frame\") : false;\n        }\n        else {\n            return false;\n        }\n    }\n    findFrameElement(element, submitter) {\n        const id = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"data-turbo-frame\")) || element.getAttribute(\"data-turbo-frame\");\n        if (id && id != \"_top\") {\n            const frame = this.element.querySelector(`#${id}:not([disabled])`);\n            if (frame instanceof FrameElement) {\n                return frame;\n            }\n        }\n    }\n}\n\nclass History {\n    constructor(delegate) {\n        this.restorationIdentifier = uuid();\n        this.restorationData = {};\n        this.started = false;\n        this.pageLoaded = false;\n        this.onPopState = (event) => {\n            if (this.shouldHandlePopState()) {\n                const { turbo } = event.state || {};\n                if (turbo) {\n                    this.location = new URL(window.location.href);\n                    const { restorationIdentifier } = turbo;\n                    this.restorationIdentifier = restorationIdentifier;\n                    this.delegate.historyPoppedToLocationWithRestorationIdentifier(this.location, restorationIdentifier);\n                }\n            }\n        };\n        this.onPageLoad = async (_event) => {\n            await nextMicrotask();\n            this.pageLoaded = true;\n        };\n        this.delegate = delegate;\n    }\n    start() {\n        if (!this.started) {\n            addEventListener(\"popstate\", this.onPopState, false);\n            addEventListener(\"load\", this.onPageLoad, false);\n            this.started = true;\n            this.replace(new URL(window.location.href));\n        }\n    }\n    stop() {\n        if (this.started) {\n            removeEventListener(\"popstate\", this.onPopState, false);\n            removeEventListener(\"load\", this.onPageLoad, false);\n            this.started = false;\n        }\n    }\n    push(location, restorationIdentifier) {\n        this.update(history.pushState, location, restorationIdentifier);\n    }\n    replace(location, restorationIdentifier) {\n        this.update(history.replaceState, location, restorationIdentifier);\n    }\n    update(method, location, restorationIdentifier = uuid()) {\n        const state = { turbo: { restorationIdentifier } };\n        method.call(history, state, \"\", location.href);\n        this.location = location;\n        this.restorationIdentifier = restorationIdentifier;\n    }\n    getRestorationDataForIdentifier(restorationIdentifier) {\n        return this.restorationData[restorationIdentifier] || {};\n    }\n    updateRestorationData(additionalData) {\n        const { restorationIdentifier } = this;\n        const restorationData = this.restorationData[restorationIdentifier];\n        this.restorationData[restorationIdentifier] = Object.assign(Object.assign({}, restorationData), additionalData);\n    }\n    assumeControlOfScrollRestoration() {\n        var _a;\n        if (!this.previousScrollRestoration) {\n            this.previousScrollRestoration = (_a = history.scrollRestoration) !== null && _a !== void 0 ? _a : \"auto\";\n            history.scrollRestoration = \"manual\";\n        }\n    }\n    relinquishControlOfScrollRestoration() {\n        if (this.previousScrollRestoration) {\n            history.scrollRestoration = this.previousScrollRestoration;\n            delete this.previousScrollRestoration;\n        }\n    }\n    shouldHandlePopState() {\n        return this.pageIsLoaded();\n    }\n    pageIsLoaded() {\n        return this.pageLoaded || document.readyState == \"complete\";\n    }\n}\n\nclass Navigator {\n    constructor(delegate) {\n        this.delegate = delegate;\n    }\n    proposeVisit(location, options = {}) {\n        if (this.delegate.allowsVisitingLocationWithAction(location, options.action)) {\n            if (locationIsVisitable(location, this.view.snapshot.rootLocation)) {\n                this.delegate.visitProposedToLocation(location, options);\n            }\n            else {\n                window.location.href = location.toString();\n            }\n        }\n    }\n    startVisit(locatable, restorationIdentifier, options = {}) {\n        this.stop();\n        this.currentVisit = new Visit(this, expandURL(locatable), restorationIdentifier, Object.assign({ referrer: this.location }, options));\n        this.currentVisit.start();\n    }\n    submitForm(form, submitter) {\n        this.stop();\n        this.formSubmission = new FormSubmission(this, form, submitter, true);\n        this.formSubmission.start();\n    }\n    stop() {\n        if (this.formSubmission) {\n            this.formSubmission.stop();\n            delete this.formSubmission;\n        }\n        if (this.currentVisit) {\n            this.currentVisit.cancel();\n            delete this.currentVisit;\n        }\n    }\n    get adapter() {\n        return this.delegate.adapter;\n    }\n    get view() {\n        return this.delegate.view;\n    }\n    get history() {\n        return this.delegate.history;\n    }\n    formSubmissionStarted(formSubmission) {\n        if (typeof this.adapter.formSubmissionStarted === \"function\") {\n            this.adapter.formSubmissionStarted(formSubmission);\n        }\n    }\n    async formSubmissionSucceededWithResponse(formSubmission, fetchResponse) {\n        if (formSubmission == this.formSubmission) {\n            const responseHTML = await fetchResponse.responseHTML;\n            if (responseHTML) {\n                const shouldCacheSnapshot = formSubmission.method == FetchMethod.get;\n                if (!shouldCacheSnapshot) {\n                    this.view.clearSnapshotCache();\n                }\n                const { statusCode, redirected } = fetchResponse;\n                const action = this.getActionForFormSubmission(formSubmission);\n                const visitOptions = {\n                    action,\n                    shouldCacheSnapshot,\n                    response: { statusCode, responseHTML, redirected },\n                };\n                this.proposeVisit(fetchResponse.location, visitOptions);\n            }\n        }\n    }\n    async formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n        const responseHTML = await fetchResponse.responseHTML;\n        if (responseHTML) {\n            const snapshot = PageSnapshot.fromHTMLString(responseHTML);\n            if (fetchResponse.serverError) {\n                await this.view.renderError(snapshot, this.currentVisit);\n            }\n            else {\n                await this.view.renderPage(snapshot, false, true, this.currentVisit);\n            }\n            this.view.scrollToTop();\n            this.view.clearSnapshotCache();\n        }\n    }\n    formSubmissionErrored(formSubmission, error) {\n        console.error(error);\n    }\n    formSubmissionFinished(formSubmission) {\n        if (typeof this.adapter.formSubmissionFinished === \"function\") {\n            this.adapter.formSubmissionFinished(formSubmission);\n        }\n    }\n    visitStarted(visit) {\n        this.delegate.visitStarted(visit);\n    }\n    visitCompleted(visit) {\n        this.delegate.visitCompleted(visit);\n    }\n    locationWithActionIsSamePage(location, action) {\n        const anchor = getAnchor(location);\n        const currentAnchor = getAnchor(this.view.lastRenderedLocation);\n        const isRestorationToTop = action === \"restore\" && typeof anchor === \"undefined\";\n        return (action !== \"replace\" &&\n            getRequestURL(location) === getRequestURL(this.view.lastRenderedLocation) &&\n            (isRestorationToTop || (anchor != null && anchor !== currentAnchor)));\n    }\n    visitScrolledToSamePageLocation(oldURL, newURL) {\n        this.delegate.visitScrolledToSamePageLocation(oldURL, newURL);\n    }\n    get location() {\n        return this.history.location;\n    }\n    get restorationIdentifier() {\n        return this.history.restorationIdentifier;\n    }\n    getActionForFormSubmission({ submitter, formElement }) {\n        return getVisitAction(submitter, formElement) || \"advance\";\n    }\n}\n\nvar PageStage;\n(function (PageStage) {\n    PageStage[PageStage[\"initial\"] = 0] = \"initial\";\n    PageStage[PageStage[\"loading\"] = 1] = \"loading\";\n    PageStage[PageStage[\"interactive\"] = 2] = \"interactive\";\n    PageStage[PageStage[\"complete\"] = 3] = \"complete\";\n})(PageStage || (PageStage = {}));\nclass PageObserver {\n    constructor(delegate) {\n        this.stage = PageStage.initial;\n        this.started = false;\n        this.interpretReadyState = () => {\n            const { readyState } = this;\n            if (readyState == \"interactive\") {\n                this.pageIsInteractive();\n            }\n            else if (readyState == \"complete\") {\n                this.pageIsComplete();\n            }\n        };\n        this.pageWillUnload = () => {\n            this.delegate.pageWillUnload();\n        };\n        this.delegate = delegate;\n    }\n    start() {\n        if (!this.started) {\n            if (this.stage == PageStage.initial) {\n                this.stage = PageStage.loading;\n            }\n            document.addEventListener(\"readystatechange\", this.interpretReadyState, false);\n            addEventListener(\"pagehide\", this.pageWillUnload, false);\n            this.started = true;\n        }\n    }\n    stop() {\n        if (this.started) {\n            document.removeEventListener(\"readystatechange\", this.interpretReadyState, false);\n            removeEventListener(\"pagehide\", this.pageWillUnload, false);\n            this.started = false;\n        }\n    }\n    pageIsInteractive() {\n        if (this.stage == PageStage.loading) {\n            this.stage = PageStage.interactive;\n            this.delegate.pageBecameInteractive();\n        }\n    }\n    pageIsComplete() {\n        this.pageIsInteractive();\n        if (this.stage == PageStage.interactive) {\n            this.stage = PageStage.complete;\n            this.delegate.pageLoaded();\n        }\n    }\n    get readyState() {\n        return document.readyState;\n    }\n}\n\nclass ScrollObserver {\n    constructor(delegate) {\n        this.started = false;\n        this.onScroll = () => {\n            this.updatePosition({ x: window.pageXOffset, y: window.pageYOffset });\n        };\n        this.delegate = delegate;\n    }\n    start() {\n        if (!this.started) {\n            addEventListener(\"scroll\", this.onScroll, false);\n            this.onScroll();\n            this.started = true;\n        }\n    }\n    stop() {\n        if (this.started) {\n            removeEventListener(\"scroll\", this.onScroll, false);\n            this.started = false;\n        }\n    }\n    updatePosition(position) {\n        this.delegate.scrollPositionChanged(position);\n    }\n}\n\nclass StreamMessageRenderer {\n    render({ fragment }) {\n        Bardo.preservingPermanentElements(this, getPermanentElementMapForFragment(fragment), () => document.documentElement.appendChild(fragment));\n    }\n    enteringBardo(currentPermanentElement, newPermanentElement) {\n        newPermanentElement.replaceWith(currentPermanentElement.cloneNode(true));\n    }\n    leavingBardo() { }\n}\nfunction getPermanentElementMapForFragment(fragment) {\n    const permanentElementsInDocument = queryPermanentElementsAll(document.documentElement);\n    const permanentElementMap = {};\n    for (const permanentElementInDocument of permanentElementsInDocument) {\n        const { id } = permanentElementInDocument;\n        for (const streamElement of fragment.querySelectorAll(\"turbo-stream\")) {\n            const elementInStream = getPermanentElementById(streamElement.templateElement.content, id);\n            if (elementInStream) {\n                permanentElementMap[id] = [permanentElementInDocument, elementInStream];\n            }\n        }\n    }\n    return permanentElementMap;\n}\n\nclass StreamObserver {\n    constructor(delegate) {\n        this.sources = new Set();\n        this.started = false;\n        this.inspectFetchResponse = ((event) => {\n            const response = fetchResponseFromEvent(event);\n            if (response && fetchResponseIsStream(response)) {\n                event.preventDefault();\n                this.receiveMessageResponse(response);\n            }\n        });\n        this.receiveMessageEvent = (event) => {\n            if (this.started && typeof event.data == \"string\") {\n                this.receiveMessageHTML(event.data);\n            }\n        };\n        this.delegate = delegate;\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            addEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.started = false;\n            removeEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n        }\n    }\n    connectStreamSource(source) {\n        if (!this.streamSourceIsConnected(source)) {\n            this.sources.add(source);\n            source.addEventListener(\"message\", this.receiveMessageEvent, false);\n        }\n    }\n    disconnectStreamSource(source) {\n        if (this.streamSourceIsConnected(source)) {\n            this.sources.delete(source);\n            source.removeEventListener(\"message\", this.receiveMessageEvent, false);\n        }\n    }\n    streamSourceIsConnected(source) {\n        return this.sources.has(source);\n    }\n    async receiveMessageResponse(response) {\n        const html = await response.responseHTML;\n        if (html) {\n            this.receiveMessageHTML(html);\n        }\n    }\n    receiveMessageHTML(html) {\n        this.delegate.receivedMessageFromStream(StreamMessage.wrap(html));\n    }\n}\nfunction fetchResponseFromEvent(event) {\n    var _a;\n    const fetchResponse = (_a = event.detail) === null || _a === void 0 ? void 0 : _a.fetchResponse;\n    if (fetchResponse instanceof FetchResponse) {\n        return fetchResponse;\n    }\n}\nfunction fetchResponseIsStream(response) {\n    var _a;\n    const contentType = (_a = response.contentType) !== null && _a !== void 0 ? _a : \"\";\n    return contentType.startsWith(StreamMessage.contentType);\n}\n\nclass ErrorRenderer extends Renderer {\n    static renderElement(currentElement, newElement) {\n        const { documentElement, body } = document;\n        documentElement.replaceChild(newElement, body);\n    }\n    async render() {\n        this.replaceHeadAndBody();\n        this.activateScriptElements();\n    }\n    replaceHeadAndBody() {\n        const { documentElement, head } = document;\n        documentElement.replaceChild(this.newHead, head);\n        this.renderElement(this.currentElement, this.newElement);\n    }\n    activateScriptElements() {\n        for (const replaceableElement of this.scriptElements) {\n            const parentNode = replaceableElement.parentNode;\n            if (parentNode) {\n                const element = activateScriptElement(replaceableElement);\n                parentNode.replaceChild(element, replaceableElement);\n            }\n        }\n    }\n    get newHead() {\n        return this.newSnapshot.headSnapshot.element;\n    }\n    get scriptElements() {\n        return document.documentElement.querySelectorAll(\"script\");\n    }\n}\n\nclass PageRenderer extends Renderer {\n    static renderElement(currentElement, newElement) {\n        if (document.body && newElement instanceof HTMLBodyElement) {\n            document.body.replaceWith(newElement);\n        }\n        else {\n            document.documentElement.appendChild(newElement);\n        }\n    }\n    get shouldRender() {\n        return this.newSnapshot.isVisitable && this.trackedElementsAreIdentical;\n    }\n    get reloadReason() {\n        if (!this.newSnapshot.isVisitable) {\n            return {\n                reason: \"turbo_visit_control_is_reload\",\n            };\n        }\n        if (!this.trackedElementsAreIdentical) {\n            return {\n                reason: \"tracked_element_mismatch\",\n            };\n        }\n    }\n    async prepareToRender() {\n        await this.mergeHead();\n    }\n    async render() {\n        if (this.willRender) {\n            await this.replaceBody();\n        }\n    }\n    finishRendering() {\n        super.finishRendering();\n        if (!this.isPreview) {\n            this.focusFirstAutofocusableElement();\n        }\n    }\n    get currentHeadSnapshot() {\n        return this.currentSnapshot.headSnapshot;\n    }\n    get newHeadSnapshot() {\n        return this.newSnapshot.headSnapshot;\n    }\n    get newElement() {\n        return this.newSnapshot.element;\n    }\n    async mergeHead() {\n        const mergedHeadElements = this.mergeProvisionalElements();\n        const newStylesheetElements = this.copyNewHeadStylesheetElements();\n        this.copyNewHeadScriptElements();\n        await mergedHeadElements;\n        await newStylesheetElements;\n    }\n    async replaceBody() {\n        await this.preservingPermanentElements(async () => {\n            this.activateNewBody();\n            await this.assignNewBody();\n        });\n    }\n    get trackedElementsAreIdentical() {\n        return this.currentHeadSnapshot.trackedElementSignature == this.newHeadSnapshot.trackedElementSignature;\n    }\n    async copyNewHeadStylesheetElements() {\n        const loadingElements = [];\n        for (const element of this.newHeadStylesheetElements) {\n            loadingElements.push(waitForLoad(element));\n            document.head.appendChild(element);\n        }\n        await Promise.all(loadingElements);\n    }\n    copyNewHeadScriptElements() {\n        for (const element of this.newHeadScriptElements) {\n            document.head.appendChild(activateScriptElement(element));\n        }\n    }\n    async mergeProvisionalElements() {\n        const newHeadElements = [...this.newHeadProvisionalElements];\n        for (const element of this.currentHeadProvisionalElements) {\n            if (!this.isCurrentElementInElementList(element, newHeadElements)) {\n                document.head.removeChild(element);\n            }\n        }\n        for (const element of newHeadElements) {\n            document.head.appendChild(element);\n        }\n    }\n    isCurrentElementInElementList(element, elementList) {\n        for (const [index, newElement] of elementList.entries()) {\n            if (element.tagName == \"TITLE\") {\n                if (newElement.tagName != \"TITLE\") {\n                    continue;\n                }\n                if (element.innerHTML == newElement.innerHTML) {\n                    elementList.splice(index, 1);\n                    return true;\n                }\n            }\n            if (newElement.isEqualNode(element)) {\n                elementList.splice(index, 1);\n                return true;\n            }\n        }\n        return false;\n    }\n    removeCurrentHeadProvisionalElements() {\n        for (const element of this.currentHeadProvisionalElements) {\n            document.head.removeChild(element);\n        }\n    }\n    copyNewHeadProvisionalElements() {\n        for (const element of this.newHeadProvisionalElements) {\n            document.head.appendChild(element);\n        }\n    }\n    activateNewBody() {\n        document.adoptNode(this.newElement);\n        this.activateNewBodyScriptElements();\n    }\n    activateNewBodyScriptElements() {\n        for (const inertScriptElement of this.newBodyScriptElements) {\n            const activatedScriptElement = activateScriptElement(inertScriptElement);\n            inertScriptElement.replaceWith(activatedScriptElement);\n        }\n    }\n    async assignNewBody() {\n        await this.renderElement(this.currentElement, this.newElement);\n    }\n    get newHeadStylesheetElements() {\n        return this.newHeadSnapshot.getStylesheetElementsNotInSnapshot(this.currentHeadSnapshot);\n    }\n    get newHeadScriptElements() {\n        return this.newHeadSnapshot.getScriptElementsNotInSnapshot(this.currentHeadSnapshot);\n    }\n    get currentHeadProvisionalElements() {\n        return this.currentHeadSnapshot.provisionalElements;\n    }\n    get newHeadProvisionalElements() {\n        return this.newHeadSnapshot.provisionalElements;\n    }\n    get newBodyScriptElements() {\n        return this.newElement.querySelectorAll(\"script\");\n    }\n}\n\nclass SnapshotCache {\n    constructor(size) {\n        this.keys = [];\n        this.snapshots = {};\n        this.size = size;\n    }\n    has(location) {\n        return toCacheKey(location) in this.snapshots;\n    }\n    get(location) {\n        if (this.has(location)) {\n            const snapshot = this.read(location);\n            this.touch(location);\n            return snapshot;\n        }\n    }\n    put(location, snapshot) {\n        this.write(location, snapshot);\n        this.touch(location);\n        return snapshot;\n    }\n    clear() {\n        this.snapshots = {};\n    }\n    read(location) {\n        return this.snapshots[toCacheKey(location)];\n    }\n    write(location, snapshot) {\n        this.snapshots[toCacheKey(location)] = snapshot;\n    }\n    touch(location) {\n        const key = toCacheKey(location);\n        const index = this.keys.indexOf(key);\n        if (index > -1)\n            this.keys.splice(index, 1);\n        this.keys.unshift(key);\n        this.trim();\n    }\n    trim() {\n        for (const key of this.keys.splice(this.size)) {\n            delete this.snapshots[key];\n        }\n    }\n}\n\nclass PageView extends View {\n    constructor() {\n        super(...arguments);\n        this.snapshotCache = new SnapshotCache(10);\n        this.lastRenderedLocation = new URL(location.href);\n        this.forceReloaded = false;\n    }\n    renderPage(snapshot, isPreview = false, willRender = true, visit) {\n        const renderer = new PageRenderer(this.snapshot, snapshot, PageRenderer.renderElement, isPreview, willRender);\n        if (!renderer.shouldRender) {\n            this.forceReloaded = true;\n        }\n        else {\n            visit === null || visit === void 0 ? void 0 : visit.changeHistory();\n        }\n        return this.render(renderer);\n    }\n    renderError(snapshot, visit) {\n        visit === null || visit === void 0 ? void 0 : visit.changeHistory();\n        const renderer = new ErrorRenderer(this.snapshot, snapshot, ErrorRenderer.renderElement, false);\n        return this.render(renderer);\n    }\n    clearSnapshotCache() {\n        this.snapshotCache.clear();\n    }\n    async cacheSnapshot(snapshot = this.snapshot) {\n        if (snapshot.isCacheable) {\n            this.delegate.viewWillCacheSnapshot();\n            const { lastRenderedLocation: location } = this;\n            await nextEventLoopTick();\n            const cachedSnapshot = snapshot.clone();\n            this.snapshotCache.put(location, cachedSnapshot);\n            return cachedSnapshot;\n        }\n    }\n    getCachedSnapshotForLocation(location) {\n        return this.snapshotCache.get(location);\n    }\n    get snapshot() {\n        return PageSnapshot.fromElement(this.element);\n    }\n}\n\nclass Preloader {\n    constructor(delegate) {\n        this.selector = \"a[data-turbo-preload]\";\n        this.delegate = delegate;\n    }\n    get snapshotCache() {\n        return this.delegate.navigator.view.snapshotCache;\n    }\n    start() {\n        if (document.readyState === \"loading\") {\n            return document.addEventListener(\"DOMContentLoaded\", () => {\n                this.preloadOnLoadLinksForView(document.body);\n            });\n        }\n        else {\n            this.preloadOnLoadLinksForView(document.body);\n        }\n    }\n    preloadOnLoadLinksForView(element) {\n        for (const link of element.querySelectorAll(this.selector)) {\n            this.preloadURL(link);\n        }\n    }\n    async preloadURL(link) {\n        const location = new URL(link.href);\n        if (this.snapshotCache.has(location)) {\n            return;\n        }\n        try {\n            const response = await fetch(location.toString(), { headers: { \"VND.PREFETCH\": \"true\", Accept: \"text/html\" } });\n            const responseText = await response.text();\n            const snapshot = PageSnapshot.fromHTMLString(responseText);\n            this.snapshotCache.put(location, snapshot);\n        }\n        catch (_) {\n        }\n    }\n}\n\nclass Session {\n    constructor() {\n        this.navigator = new Navigator(this);\n        this.history = new History(this);\n        this.preloader = new Preloader(this);\n        this.view = new PageView(this, document.documentElement);\n        this.adapter = new BrowserAdapter(this);\n        this.pageObserver = new PageObserver(this);\n        this.cacheObserver = new CacheObserver();\n        this.linkClickObserver = new LinkClickObserver(this, window);\n        this.formSubmitObserver = new FormSubmitObserver(this, document);\n        this.scrollObserver = new ScrollObserver(this);\n        this.streamObserver = new StreamObserver(this);\n        this.formLinkClickObserver = new FormLinkClickObserver(this, document.documentElement);\n        this.frameRedirector = new FrameRedirector(this, document.documentElement);\n        this.streamMessageRenderer = new StreamMessageRenderer();\n        this.drive = true;\n        this.enabled = true;\n        this.progressBarDelay = 500;\n        this.started = false;\n        this.formMode = \"on\";\n    }\n    start() {\n        if (!this.started) {\n            this.pageObserver.start();\n            this.cacheObserver.start();\n            this.formLinkClickObserver.start();\n            this.linkClickObserver.start();\n            this.formSubmitObserver.start();\n            this.scrollObserver.start();\n            this.streamObserver.start();\n            this.frameRedirector.start();\n            this.history.start();\n            this.preloader.start();\n            this.started = true;\n            this.enabled = true;\n        }\n    }\n    disable() {\n        this.enabled = false;\n    }\n    stop() {\n        if (this.started) {\n            this.pageObserver.stop();\n            this.cacheObserver.stop();\n            this.formLinkClickObserver.stop();\n            this.linkClickObserver.stop();\n            this.formSubmitObserver.stop();\n            this.scrollObserver.stop();\n            this.streamObserver.stop();\n            this.frameRedirector.stop();\n            this.history.stop();\n            this.started = false;\n        }\n    }\n    registerAdapter(adapter) {\n        this.adapter = adapter;\n    }\n    visit(location, options = {}) {\n        const frameElement = options.frame ? document.getElementById(options.frame) : null;\n        if (frameElement instanceof FrameElement) {\n            frameElement.src = location.toString();\n            frameElement.loaded;\n        }\n        else {\n            this.navigator.proposeVisit(expandURL(location), options);\n        }\n    }\n    connectStreamSource(source) {\n        this.streamObserver.connectStreamSource(source);\n    }\n    disconnectStreamSource(source) {\n        this.streamObserver.disconnectStreamSource(source);\n    }\n    renderStreamMessage(message) {\n        this.streamMessageRenderer.render(StreamMessage.wrap(message));\n    }\n    clearCache() {\n        this.view.clearSnapshotCache();\n    }\n    setProgressBarDelay(delay) {\n        this.progressBarDelay = delay;\n    }\n    setFormMode(mode) {\n        this.formMode = mode;\n    }\n    get location() {\n        return this.history.location;\n    }\n    get restorationIdentifier() {\n        return this.history.restorationIdentifier;\n    }\n    historyPoppedToLocationWithRestorationIdentifier(location, restorationIdentifier) {\n        if (this.enabled) {\n            this.navigator.startVisit(location, restorationIdentifier, {\n                action: \"restore\",\n                historyChanged: true,\n            });\n        }\n        else {\n            this.adapter.pageInvalidated({\n                reason: \"turbo_disabled\",\n            });\n        }\n    }\n    scrollPositionChanged(position) {\n        this.history.updateRestorationData({ scrollPosition: position });\n    }\n    willSubmitFormLinkToLocation(link, location) {\n        return this.elementIsNavigatable(link) && locationIsVisitable(location, this.snapshot.rootLocation);\n    }\n    submittedFormLinkToLocation() { }\n    willFollowLinkToLocation(link, location, event) {\n        return (this.elementIsNavigatable(link) &&\n            locationIsVisitable(location, this.snapshot.rootLocation) &&\n            this.applicationAllowsFollowingLinkToLocation(link, location, event));\n    }\n    followedLinkToLocation(link, location) {\n        const action = this.getActionForLink(link);\n        const acceptsStreamResponse = link.hasAttribute(\"data-turbo-stream\");\n        this.visit(location.href, { action, acceptsStreamResponse });\n    }\n    allowsVisitingLocationWithAction(location, action) {\n        return this.locationWithActionIsSamePage(location, action) || this.applicationAllowsVisitingLocation(location);\n    }\n    visitProposedToLocation(location, options) {\n        extendURLWithDeprecatedProperties(location);\n        this.adapter.visitProposedToLocation(location, options);\n    }\n    visitStarted(visit) {\n        if (!visit.acceptsStreamResponse) {\n            markAsBusy(document.documentElement);\n        }\n        extendURLWithDeprecatedProperties(visit.location);\n        if (!visit.silent) {\n            this.notifyApplicationAfterVisitingLocation(visit.location, visit.action);\n        }\n    }\n    visitCompleted(visit) {\n        clearBusyState(document.documentElement);\n        this.notifyApplicationAfterPageLoad(visit.getTimingMetrics());\n    }\n    locationWithActionIsSamePage(location, action) {\n        return this.navigator.locationWithActionIsSamePage(location, action);\n    }\n    visitScrolledToSamePageLocation(oldURL, newURL) {\n        this.notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL);\n    }\n    willSubmitForm(form, submitter) {\n        const action = getAction(form, submitter);\n        return (this.submissionIsNavigatable(form, submitter) &&\n            locationIsVisitable(expandURL(action), this.snapshot.rootLocation));\n    }\n    formSubmitted(form, submitter) {\n        this.navigator.submitForm(form, submitter);\n    }\n    pageBecameInteractive() {\n        this.view.lastRenderedLocation = this.location;\n        this.notifyApplicationAfterPageLoad();\n    }\n    pageLoaded() {\n        this.history.assumeControlOfScrollRestoration();\n    }\n    pageWillUnload() {\n        this.history.relinquishControlOfScrollRestoration();\n    }\n    receivedMessageFromStream(message) {\n        this.renderStreamMessage(message);\n    }\n    viewWillCacheSnapshot() {\n        var _a;\n        if (!((_a = this.navigator.currentVisit) === null || _a === void 0 ? void 0 : _a.silent)) {\n            this.notifyApplicationBeforeCachingSnapshot();\n        }\n    }\n    allowsImmediateRender({ element }, options) {\n        const event = this.notifyApplicationBeforeRender(element, options);\n        const { defaultPrevented, detail: { render }, } = event;\n        if (this.view.renderer && render) {\n            this.view.renderer.renderElement = render;\n        }\n        return !defaultPrevented;\n    }\n    viewRenderedSnapshot(_snapshot, _isPreview) {\n        this.view.lastRenderedLocation = this.history.location;\n        this.notifyApplicationAfterRender();\n    }\n    preloadOnLoadLinksForView(element) {\n        this.preloader.preloadOnLoadLinksForView(element);\n    }\n    viewInvalidated(reason) {\n        this.adapter.pageInvalidated(reason);\n    }\n    frameLoaded(frame) {\n        this.notifyApplicationAfterFrameLoad(frame);\n    }\n    frameRendered(fetchResponse, frame) {\n        this.notifyApplicationAfterFrameRender(fetchResponse, frame);\n    }\n    applicationAllowsFollowingLinkToLocation(link, location, ev) {\n        const event = this.notifyApplicationAfterClickingLinkToLocation(link, location, ev);\n        return !event.defaultPrevented;\n    }\n    applicationAllowsVisitingLocation(location) {\n        const event = this.notifyApplicationBeforeVisitingLocation(location);\n        return !event.defaultPrevented;\n    }\n    notifyApplicationAfterClickingLinkToLocation(link, location, event) {\n        return dispatch(\"turbo:click\", {\n            target: link,\n            detail: { url: location.href, originalEvent: event },\n            cancelable: true,\n        });\n    }\n    notifyApplicationBeforeVisitingLocation(location) {\n        return dispatch(\"turbo:before-visit\", {\n            detail: { url: location.href },\n            cancelable: true,\n        });\n    }\n    notifyApplicationAfterVisitingLocation(location, action) {\n        return dispatch(\"turbo:visit\", { detail: { url: location.href, action } });\n    }\n    notifyApplicationBeforeCachingSnapshot() {\n        return dispatch(\"turbo:before-cache\");\n    }\n    notifyApplicationBeforeRender(newBody, options) {\n        return dispatch(\"turbo:before-render\", {\n            detail: Object.assign({ newBody }, options),\n            cancelable: true,\n        });\n    }\n    notifyApplicationAfterRender() {\n        return dispatch(\"turbo:render\");\n    }\n    notifyApplicationAfterPageLoad(timing = {}) {\n        return dispatch(\"turbo:load\", {\n            detail: { url: this.location.href, timing },\n        });\n    }\n    notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL) {\n        dispatchEvent(new HashChangeEvent(\"hashchange\", {\n            oldURL: oldURL.toString(),\n            newURL: newURL.toString(),\n        }));\n    }\n    notifyApplicationAfterFrameLoad(frame) {\n        return dispatch(\"turbo:frame-load\", { target: frame });\n    }\n    notifyApplicationAfterFrameRender(fetchResponse, frame) {\n        return dispatch(\"turbo:frame-render\", {\n            detail: { fetchResponse },\n            target: frame,\n            cancelable: true,\n        });\n    }\n    submissionIsNavigatable(form, submitter) {\n        if (this.formMode == \"off\") {\n            return false;\n        }\n        else {\n            const submitterIsNavigatable = submitter ? this.elementIsNavigatable(submitter) : true;\n            if (this.formMode == \"optin\") {\n                return submitterIsNavigatable && form.closest('[data-turbo=\"true\"]') != null;\n            }\n            else {\n                return submitterIsNavigatable && this.elementIsNavigatable(form);\n            }\n        }\n    }\n    elementIsNavigatable(element) {\n        const container = findClosestRecursively(element, \"[data-turbo]\");\n        const withinFrame = findClosestRecursively(element, \"turbo-frame\");\n        if (this.drive || withinFrame) {\n            if (container) {\n                return container.getAttribute(\"data-turbo\") != \"false\";\n            }\n            else {\n                return true;\n            }\n        }\n        else {\n            if (container) {\n                return container.getAttribute(\"data-turbo\") == \"true\";\n            }\n            else {\n                return false;\n            }\n        }\n    }\n    getActionForLink(link) {\n        return getVisitAction(link) || \"advance\";\n    }\n    get snapshot() {\n        return this.view.snapshot;\n    }\n}\nfunction extendURLWithDeprecatedProperties(url) {\n    Object.defineProperties(url, deprecatedLocationPropertyDescriptors);\n}\nconst deprecatedLocationPropertyDescriptors = {\n    absoluteURL: {\n        get() {\n            return this.toString();\n        },\n    },\n};\n\nclass Cache {\n    constructor(session) {\n        this.session = session;\n    }\n    clear() {\n        this.session.clearCache();\n    }\n    resetCacheControl() {\n        this.setCacheControl(\"\");\n    }\n    exemptPageFromCache() {\n        this.setCacheControl(\"no-cache\");\n    }\n    exemptPageFromPreview() {\n        this.setCacheControl(\"no-preview\");\n    }\n    setCacheControl(value) {\n        setMetaContent(\"turbo-cache-control\", value);\n    }\n}\n\nconst StreamActions = {\n    after() {\n        this.targetElements.forEach((e) => { var _a; return (_a = e.parentElement) === null || _a === void 0 ? void 0 : _a.insertBefore(this.templateContent, e.nextSibling); });\n    },\n    append() {\n        this.removeDuplicateTargetChildren();\n        this.targetElements.forEach((e) => e.append(this.templateContent));\n    },\n    before() {\n        this.targetElements.forEach((e) => { var _a; return (_a = e.parentElement) === null || _a === void 0 ? void 0 : _a.insertBefore(this.templateContent, e); });\n    },\n    prepend() {\n        this.removeDuplicateTargetChildren();\n        this.targetElements.forEach((e) => e.prepend(this.templateContent));\n    },\n    remove() {\n        this.targetElements.forEach((e) => e.remove());\n    },\n    replace() {\n        this.targetElements.forEach((e) => e.replaceWith(this.templateContent));\n    },\n    update() {\n        this.targetElements.forEach((targetElement) => {\n            targetElement.innerHTML = \"\";\n            targetElement.append(this.templateContent);\n        });\n    },\n};\n\nconst session = new Session();\nconst cache = new Cache(session);\nconst { navigator: navigator$1 } = session;\nfunction start() {\n    session.start();\n}\nfunction registerAdapter(adapter) {\n    session.registerAdapter(adapter);\n}\nfunction visit(location, options) {\n    session.visit(location, options);\n}\nfunction connectStreamSource(source) {\n    session.connectStreamSource(source);\n}\nfunction disconnectStreamSource(source) {\n    session.disconnectStreamSource(source);\n}\nfunction renderStreamMessage(message) {\n    session.renderStreamMessage(message);\n}\nfunction clearCache() {\n    console.warn(\"Please replace `Turbo.clearCache()` with `Turbo.cache.clear()`. The top-level function is deprecated and will be removed in a future version of Turbo.`\");\n    session.clearCache();\n}\nfunction setProgressBarDelay(delay) {\n    session.setProgressBarDelay(delay);\n}\nfunction setConfirmMethod(confirmMethod) {\n    FormSubmission.confirmMethod = confirmMethod;\n}\nfunction setFormMode(mode) {\n    session.setFormMode(mode);\n}\n\nvar Turbo = /*#__PURE__*/Object.freeze({\n    __proto__: null,\n    navigator: navigator$1,\n    session: session,\n    cache: cache,\n    PageRenderer: PageRenderer,\n    PageSnapshot: PageSnapshot,\n    FrameRenderer: FrameRenderer,\n    start: start,\n    registerAdapter: registerAdapter,\n    visit: visit,\n    connectStreamSource: connectStreamSource,\n    disconnectStreamSource: disconnectStreamSource,\n    renderStreamMessage: renderStreamMessage,\n    clearCache: clearCache,\n    setProgressBarDelay: setProgressBarDelay,\n    setConfirmMethod: setConfirmMethod,\n    setFormMode: setFormMode,\n    StreamActions: StreamActions\n});\n\nclass FrameController {\n    constructor(element) {\n        this.fetchResponseLoaded = (_fetchResponse) => { };\n        this.currentFetchRequest = null;\n        this.resolveVisitPromise = () => { };\n        this.connected = false;\n        this.hasBeenLoaded = false;\n        this.ignoredAttributes = new Set();\n        this.action = null;\n        this.visitCachedSnapshot = ({ element }) => {\n            const frame = element.querySelector(\"#\" + this.element.id);\n            if (frame && this.previousFrameElement) {\n                frame.replaceChildren(...this.previousFrameElement.children);\n            }\n            delete this.previousFrameElement;\n        };\n        this.element = element;\n        this.view = new FrameView(this, this.element);\n        this.appearanceObserver = new AppearanceObserver(this, this.element);\n        this.formLinkClickObserver = new FormLinkClickObserver(this, this.element);\n        this.linkInterceptor = new LinkInterceptor(this, this.element);\n        this.restorationIdentifier = uuid();\n        this.formSubmitObserver = new FormSubmitObserver(this, this.element);\n    }\n    connect() {\n        if (!this.connected) {\n            this.connected = true;\n            if (this.loadingStyle == FrameLoadingStyle.lazy) {\n                this.appearanceObserver.start();\n            }\n            else {\n                this.loadSourceURL();\n            }\n            this.formLinkClickObserver.start();\n            this.linkInterceptor.start();\n            this.formSubmitObserver.start();\n        }\n    }\n    disconnect() {\n        if (this.connected) {\n            this.connected = false;\n            this.appearanceObserver.stop();\n            this.formLinkClickObserver.stop();\n            this.linkInterceptor.stop();\n            this.formSubmitObserver.stop();\n        }\n    }\n    disabledChanged() {\n        if (this.loadingStyle == FrameLoadingStyle.eager) {\n            this.loadSourceURL();\n        }\n    }\n    sourceURLChanged() {\n        if (this.isIgnoringChangesTo(\"src\"))\n            return;\n        if (this.element.isConnected) {\n            this.complete = false;\n        }\n        if (this.loadingStyle == FrameLoadingStyle.eager || this.hasBeenLoaded) {\n            this.loadSourceURL();\n        }\n    }\n    sourceURLReloaded() {\n        const { src } = this.element;\n        this.ignoringChangesToAttribute(\"complete\", () => {\n            this.element.removeAttribute(\"complete\");\n        });\n        this.element.src = null;\n        this.element.src = src;\n        return this.element.loaded;\n    }\n    completeChanged() {\n        if (this.isIgnoringChangesTo(\"complete\"))\n            return;\n        this.loadSourceURL();\n    }\n    loadingStyleChanged() {\n        if (this.loadingStyle == FrameLoadingStyle.lazy) {\n            this.appearanceObserver.start();\n        }\n        else {\n            this.appearanceObserver.stop();\n            this.loadSourceURL();\n        }\n    }\n    async loadSourceURL() {\n        if (this.enabled && this.isActive && !this.complete && this.sourceURL) {\n            this.element.loaded = this.visit(expandURL(this.sourceURL));\n            this.appearanceObserver.stop();\n            await this.element.loaded;\n            this.hasBeenLoaded = true;\n        }\n    }\n    async loadResponse(fetchResponse) {\n        if (fetchResponse.redirected || (fetchResponse.succeeded && fetchResponse.isHTML)) {\n            this.sourceURL = fetchResponse.response.url;\n        }\n        try {\n            const html = await fetchResponse.responseHTML;\n            if (html) {\n                const { body } = parseHTMLDocument(html);\n                const newFrameElement = await this.extractForeignFrameElement(body);\n                if (newFrameElement) {\n                    const snapshot = new Snapshot(newFrameElement);\n                    const renderer = new FrameRenderer(this, this.view.snapshot, snapshot, FrameRenderer.renderElement, false, false);\n                    if (this.view.renderPromise)\n                        await this.view.renderPromise;\n                    this.changeHistory();\n                    await this.view.render(renderer);\n                    this.complete = true;\n                    session.frameRendered(fetchResponse, this.element);\n                    session.frameLoaded(this.element);\n                    this.fetchResponseLoaded(fetchResponse);\n                }\n                else if (this.willHandleFrameMissingFromResponse(fetchResponse)) {\n                    console.warn(`A matching frame for #${this.element.id} was missing from the response, transforming into full-page Visit.`);\n                    this.visitResponse(fetchResponse.response);\n                }\n            }\n        }\n        catch (error) {\n            console.error(error);\n            this.view.invalidate();\n        }\n        finally {\n            this.fetchResponseLoaded = () => { };\n        }\n    }\n    elementAppearedInViewport(element) {\n        this.proposeVisitIfNavigatedWithAction(element, element);\n        this.loadSourceURL();\n    }\n    willSubmitFormLinkToLocation(link) {\n        return this.shouldInterceptNavigation(link);\n    }\n    submittedFormLinkToLocation(link, _location, form) {\n        const frame = this.findFrameElement(link);\n        if (frame)\n            form.setAttribute(\"data-turbo-frame\", frame.id);\n    }\n    shouldInterceptLinkClick(element, _location, _event) {\n        return this.shouldInterceptNavigation(element);\n    }\n    linkClickIntercepted(element, location) {\n        this.navigateFrame(element, location);\n    }\n    willSubmitForm(element, submitter) {\n        return element.closest(\"turbo-frame\") == this.element && this.shouldInterceptNavigation(element, submitter);\n    }\n    formSubmitted(element, submitter) {\n        if (this.formSubmission) {\n            this.formSubmission.stop();\n        }\n        this.formSubmission = new FormSubmission(this, element, submitter);\n        const { fetchRequest } = this.formSubmission;\n        this.prepareRequest(fetchRequest);\n        this.formSubmission.start();\n    }\n    prepareRequest(request) {\n        var _a;\n        request.headers[\"Turbo-Frame\"] = this.id;\n        if ((_a = this.currentNavigationElement) === null || _a === void 0 ? void 0 : _a.hasAttribute(\"data-turbo-stream\")) {\n            request.acceptResponseType(StreamMessage.contentType);\n        }\n    }\n    requestStarted(_request) {\n        markAsBusy(this.element);\n    }\n    requestPreventedHandlingResponse(_request, _response) {\n        this.resolveVisitPromise();\n    }\n    async requestSucceededWithResponse(request, response) {\n        await this.loadResponse(response);\n        this.resolveVisitPromise();\n    }\n    async requestFailedWithResponse(request, response) {\n        console.error(response);\n        await this.loadResponse(response);\n        this.resolveVisitPromise();\n    }\n    requestErrored(request, error) {\n        console.error(error);\n        this.resolveVisitPromise();\n    }\n    requestFinished(_request) {\n        clearBusyState(this.element);\n    }\n    formSubmissionStarted({ formElement }) {\n        markAsBusy(formElement, this.findFrameElement(formElement));\n    }\n    formSubmissionSucceededWithResponse(formSubmission, response) {\n        const frame = this.findFrameElement(formSubmission.formElement, formSubmission.submitter);\n        frame.delegate.proposeVisitIfNavigatedWithAction(frame, formSubmission.formElement, formSubmission.submitter);\n        frame.delegate.loadResponse(response);\n    }\n    formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n        this.element.delegate.loadResponse(fetchResponse);\n    }\n    formSubmissionErrored(formSubmission, error) {\n        console.error(error);\n    }\n    formSubmissionFinished({ formElement }) {\n        clearBusyState(formElement, this.findFrameElement(formElement));\n    }\n    allowsImmediateRender({ element: newFrame }, options) {\n        const event = dispatch(\"turbo:before-frame-render\", {\n            target: this.element,\n            detail: Object.assign({ newFrame }, options),\n            cancelable: true,\n        });\n        const { defaultPrevented, detail: { render }, } = event;\n        if (this.view.renderer && render) {\n            this.view.renderer.renderElement = render;\n        }\n        return !defaultPrevented;\n    }\n    viewRenderedSnapshot(_snapshot, _isPreview) { }\n    preloadOnLoadLinksForView(element) {\n        session.preloadOnLoadLinksForView(element);\n    }\n    viewInvalidated() { }\n    willRenderFrame(currentElement, _newElement) {\n        this.previousFrameElement = currentElement.cloneNode(true);\n    }\n    async visit(url) {\n        var _a;\n        const request = new FetchRequest(this, FetchMethod.get, url, new URLSearchParams(), this.element);\n        (_a = this.currentFetchRequest) === null || _a === void 0 ? void 0 : _a.cancel();\n        this.currentFetchRequest = request;\n        return new Promise((resolve) => {\n            this.resolveVisitPromise = () => {\n                this.resolveVisitPromise = () => { };\n                this.currentFetchRequest = null;\n                resolve();\n            };\n            request.perform();\n        });\n    }\n    navigateFrame(element, url, submitter) {\n        const frame = this.findFrameElement(element, submitter);\n        frame.delegate.proposeVisitIfNavigatedWithAction(frame, element, submitter);\n        this.withCurrentNavigationElement(element, () => {\n            frame.src = url;\n        });\n    }\n    proposeVisitIfNavigatedWithAction(frame, element, submitter) {\n        this.action = getVisitAction(submitter, element, frame);\n        if (this.action) {\n            const pageSnapshot = PageSnapshot.fromElement(frame).clone();\n            const { visitCachedSnapshot } = frame.delegate;\n            frame.delegate.fetchResponseLoaded = (fetchResponse) => {\n                if (frame.src) {\n                    const { statusCode, redirected } = fetchResponse;\n                    const responseHTML = frame.ownerDocument.documentElement.outerHTML;\n                    const response = { statusCode, redirected, responseHTML };\n                    const options = {\n                        response,\n                        visitCachedSnapshot,\n                        willRender: false,\n                        updateHistory: false,\n                        restorationIdentifier: this.restorationIdentifier,\n                        snapshot: pageSnapshot,\n                    };\n                    if (this.action)\n                        options.action = this.action;\n                    session.visit(frame.src, options);\n                }\n            };\n        }\n    }\n    changeHistory() {\n        if (this.action) {\n            const method = getHistoryMethodForAction(this.action);\n            session.history.update(method, expandURL(this.element.src || \"\"), this.restorationIdentifier);\n        }\n    }\n    willHandleFrameMissingFromResponse(fetchResponse) {\n        this.element.setAttribute(\"complete\", \"\");\n        const response = fetchResponse.response;\n        const visit = async (url, options = {}) => {\n            if (url instanceof Response) {\n                this.visitResponse(url);\n            }\n            else {\n                session.visit(url, options);\n            }\n        };\n        const event = dispatch(\"turbo:frame-missing\", {\n            target: this.element,\n            detail: { response, visit },\n            cancelable: true,\n        });\n        return !event.defaultPrevented;\n    }\n    async visitResponse(response) {\n        const wrapped = new FetchResponse(response);\n        const responseHTML = await wrapped.responseHTML;\n        const { location, redirected, statusCode } = wrapped;\n        return session.visit(location, { response: { redirected, statusCode, responseHTML } });\n    }\n    findFrameElement(element, submitter) {\n        var _a;\n        const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n        return (_a = getFrameElementById(id)) !== null && _a !== void 0 ? _a : this.element;\n    }\n    async extractForeignFrameElement(container) {\n        let element;\n        const id = CSS.escape(this.id);\n        try {\n            element = activateElement(container.querySelector(`turbo-frame#${id}`), this.sourceURL);\n            if (element) {\n                return element;\n            }\n            element = activateElement(container.querySelector(`turbo-frame[src][recurse~=${id}]`), this.sourceURL);\n            if (element) {\n                await element.loaded;\n                return await this.extractForeignFrameElement(element);\n            }\n        }\n        catch (error) {\n            console.error(error);\n            return new FrameElement();\n        }\n        return null;\n    }\n    formActionIsVisitable(form, submitter) {\n        const action = getAction(form, submitter);\n        return locationIsVisitable(expandURL(action), this.rootLocation);\n    }\n    shouldInterceptNavigation(element, submitter) {\n        const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n        if (element instanceof HTMLFormElement && !this.formActionIsVisitable(element, submitter)) {\n            return false;\n        }\n        if (!this.enabled || id == \"_top\") {\n            return false;\n        }\n        if (id) {\n            const frameElement = getFrameElementById(id);\n            if (frameElement) {\n                return !frameElement.disabled;\n            }\n        }\n        if (!session.elementIsNavigatable(element)) {\n            return false;\n        }\n        if (submitter && !session.elementIsNavigatable(submitter)) {\n            return false;\n        }\n        return true;\n    }\n    get id() {\n        return this.element.id;\n    }\n    get enabled() {\n        return !this.element.disabled;\n    }\n    get sourceURL() {\n        if (this.element.src) {\n            return this.element.src;\n        }\n    }\n    set sourceURL(sourceURL) {\n        this.ignoringChangesToAttribute(\"src\", () => {\n            this.element.src = sourceURL !== null && sourceURL !== void 0 ? sourceURL : null;\n        });\n    }\n    get loadingStyle() {\n        return this.element.loading;\n    }\n    get isLoading() {\n        return this.formSubmission !== undefined || this.resolveVisitPromise() !== undefined;\n    }\n    get complete() {\n        return this.element.hasAttribute(\"complete\");\n    }\n    set complete(value) {\n        this.ignoringChangesToAttribute(\"complete\", () => {\n            if (value) {\n                this.element.setAttribute(\"complete\", \"\");\n            }\n            else {\n                this.element.removeAttribute(\"complete\");\n            }\n        });\n    }\n    get isActive() {\n        return this.element.isActive && this.connected;\n    }\n    get rootLocation() {\n        var _a;\n        const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n        const root = (_a = meta === null || meta === void 0 ? void 0 : meta.content) !== null && _a !== void 0 ? _a : \"/\";\n        return expandURL(root);\n    }\n    isIgnoringChangesTo(attributeName) {\n        return this.ignoredAttributes.has(attributeName);\n    }\n    ignoringChangesToAttribute(attributeName, callback) {\n        this.ignoredAttributes.add(attributeName);\n        callback();\n        this.ignoredAttributes.delete(attributeName);\n    }\n    withCurrentNavigationElement(element, callback) {\n        this.currentNavigationElement = element;\n        callback();\n        delete this.currentNavigationElement;\n    }\n}\nfunction getFrameElementById(id) {\n    if (id != null) {\n        const element = document.getElementById(id);\n        if (element instanceof FrameElement) {\n            return element;\n        }\n    }\n}\nfunction activateElement(element, currentURL) {\n    if (element) {\n        const src = element.getAttribute(\"src\");\n        if (src != null && currentURL != null && urlsAreEqual(src, currentURL)) {\n            throw new Error(`Matching <turbo-frame id=\"${element.id}\"> element has a source URL which references itself`);\n        }\n        if (element.ownerDocument !== document) {\n            element = document.importNode(element, true);\n        }\n        if (element instanceof FrameElement) {\n            element.connectedCallback();\n            element.disconnectedCallback();\n            return element;\n        }\n    }\n}\n\nclass StreamElement extends HTMLElement {\n    static async renderElement(newElement) {\n        await newElement.performAction();\n    }\n    async connectedCallback() {\n        try {\n            await this.render();\n        }\n        catch (error) {\n            console.error(error);\n        }\n        finally {\n            this.disconnect();\n        }\n    }\n    async render() {\n        var _a;\n        return ((_a = this.renderPromise) !== null && _a !== void 0 ? _a : (this.renderPromise = (async () => {\n            const event = this.beforeRenderEvent;\n            if (this.dispatchEvent(event)) {\n                await nextAnimationFrame();\n                await event.detail.render(this);\n            }\n        })()));\n    }\n    disconnect() {\n        try {\n            this.remove();\n        }\n        catch (_a) { }\n    }\n    removeDuplicateTargetChildren() {\n        this.duplicateChildren.forEach((c) => c.remove());\n    }\n    get duplicateChildren() {\n        var _a;\n        const existingChildren = this.targetElements.flatMap((e) => [...e.children]).filter((c) => !!c.id);\n        const newChildrenIds = [...(((_a = this.templateContent) === null || _a === void 0 ? void 0 : _a.children) || [])].filter((c) => !!c.id).map((c) => c.id);\n        return existingChildren.filter((c) => newChildrenIds.includes(c.id));\n    }\n    get performAction() {\n        if (this.action) {\n            const actionFunction = StreamActions[this.action];\n            if (actionFunction) {\n                return actionFunction;\n            }\n            this.raise(\"unknown action\");\n        }\n        this.raise(\"action attribute is missing\");\n    }\n    get targetElements() {\n        if (this.target) {\n            return this.targetElementsById;\n        }\n        else if (this.targets) {\n            return this.targetElementsByQuery;\n        }\n        else {\n            this.raise(\"target or targets attribute is missing\");\n        }\n    }\n    get templateContent() {\n        return this.templateElement.content.cloneNode(true);\n    }\n    get templateElement() {\n        if (this.firstElementChild === null) {\n            const template = this.ownerDocument.createElement(\"template\");\n            this.appendChild(template);\n            return template;\n        }\n        else if (this.firstElementChild instanceof HTMLTemplateElement) {\n            return this.firstElementChild;\n        }\n        this.raise(\"first child element must be a <template> element\");\n    }\n    get action() {\n        return this.getAttribute(\"action\");\n    }\n    get target() {\n        return this.getAttribute(\"target\");\n    }\n    get targets() {\n        return this.getAttribute(\"targets\");\n    }\n    raise(message) {\n        throw new Error(`${this.description}: ${message}`);\n    }\n    get description() {\n        var _a, _b;\n        return (_b = ((_a = this.outerHTML.match(/<[^>]+>/)) !== null && _a !== void 0 ? _a : [])[0]) !== null && _b !== void 0 ? _b : \"<turbo-stream>\";\n    }\n    get beforeRenderEvent() {\n        return new CustomEvent(\"turbo:before-stream-render\", {\n            bubbles: true,\n            cancelable: true,\n            detail: { newStream: this, render: StreamElement.renderElement },\n        });\n    }\n    get targetElementsById() {\n        var _a;\n        const element = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.getElementById(this.target);\n        if (element !== null) {\n            return [element];\n        }\n        else {\n            return [];\n        }\n    }\n    get targetElementsByQuery() {\n        var _a;\n        const elements = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.querySelectorAll(this.targets);\n        if (elements.length !== 0) {\n            return Array.prototype.slice.call(elements);\n        }\n        else {\n            return [];\n        }\n    }\n}\n\nclass StreamSourceElement extends HTMLElement {\n    constructor() {\n        super(...arguments);\n        this.streamSource = null;\n    }\n    connectedCallback() {\n        this.streamSource = this.src.match(/^ws{1,2}:/) ? new WebSocket(this.src) : new EventSource(this.src);\n        connectStreamSource(this.streamSource);\n    }\n    disconnectedCallback() {\n        if (this.streamSource) {\n            disconnectStreamSource(this.streamSource);\n        }\n    }\n    get src() {\n        return this.getAttribute(\"src\") || \"\";\n    }\n}\n\nFrameElement.delegateConstructor = FrameController;\nif (customElements.get(\"turbo-frame\") === undefined) {\n    customElements.define(\"turbo-frame\", FrameElement);\n}\nif (customElements.get(\"turbo-stream\") === undefined) {\n    customElements.define(\"turbo-stream\", StreamElement);\n}\nif (customElements.get(\"turbo-stream-source\") === undefined) {\n    customElements.define(\"turbo-stream-source\", StreamSourceElement);\n}\n\n(() => {\n    let element = document.currentScript;\n    if (!element)\n        return;\n    if (element.hasAttribute(\"data-turbo-suppress-warning\"))\n        return;\n    element = element.parentElement;\n    while (element) {\n        if (element == document.body) {\n            return console.warn(unindent `\n        You are loading Turbo from a <script> element inside the <body> element. This is probably not what you meant to do!\n\n        Load your application\u2019s JavaScript bundle inside the <head> element instead. <script> elements in <body> are evaluated with each page change.\n\n        For more information, see: https://turbo.hotwired.dev/handbook/building#working-with-script-elements\n\n        \u2014\u2014\n        Suppress this warning by adding a \"data-turbo-suppress-warning\" attribute to: %s\n      `, element.outerHTML);\n        }\n        element = element.parentElement;\n    }\n})();\n\nwindow.Turbo = Turbo;\nstart();\n\nexport { FrameElement, FrameLoadingStyle, FrameRenderer, PageRenderer, PageSnapshot, StreamActions, StreamElement, StreamSourceElement, cache, clearCache, connectStreamSource, disconnectStreamSource, navigator$1 as navigator, registerAdapter, renderStreamMessage, session, setConfirmMethod, setFormMode, setProgressBarDelay, start, visit };\n", "let consumer\n\nexport async function getConsumer() {\n  return consumer || setConsumer(createConsumer().then(setConsumer))\n}\n\nexport function setConsumer(newConsumer) {\n  return consumer = newConsumer\n}\n\nexport async function createConsumer() {\n  const { createConsumer } = await import(/* webpackChunkName: \"actioncable\" */ \"@rails/actioncable/src\")\n  return createConsumer()\n}\n\nexport async function subscribeTo(channel, mixin) {\n  const { subscriptions } = await getConsumer()\n  return subscriptions.create(channel, mixin)\n}\n", "// Based on https://github.com/nathan7/snakeize\n//\n// This software is released under the MIT license:\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// 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, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\nexport default function walk (obj) {\n    if (!obj || typeof obj !== 'object') return obj;\n    if (obj instanceof Date || obj instanceof RegExp) return obj;\n    if (Array.isArray(obj)) return obj.map(walk);\n    return Object.keys(obj).reduce(function (acc, key) {\n        var camel = key[0].toLowerCase() + key.slice(1).replace(/([A-Z]+)/g, function (m, x) {\n            return '_' + x.toLowerCase();\n        });\n        acc[camel] = walk(obj[key]);\n        return acc;\n    }, {});\n};", "import { connectStreamSource, disconnectStreamSource } from \"@hotwired/turbo\"\nimport { subscribeTo } from \"./cable\"\nimport snakeize from \"./snakeize\"\n\nclass TurboCableStreamSourceElement extends HTMLElement {\n  async connectedCallback() {\n    connectStreamSource(this)\n    this.subscription = await subscribeTo(this.channel, { received: this.dispatchMessageEvent.bind(this) })\n  }\n\n  disconnectedCallback() {\n    disconnectStreamSource(this)\n    if (this.subscription) this.subscription.unsubscribe()\n  }\n\n  dispatchMessageEvent(data) {\n    const event = new MessageEvent(\"message\", { data })\n    return this.dispatchEvent(event)\n  }\n\n  get channel() {\n    const channel = this.getAttribute(\"channel\")\n    const signed_stream_name = this.getAttribute(\"signed-stream-name\")\n    return { channel, signed_stream_name, ...snakeize({ ...this.dataset }) }\n  }\n}\n\n\nif (customElements.get(\"turbo-cable-stream-source\") === undefined) {\n  customElements.define(\"turbo-cable-stream-source\", TurboCableStreamSourceElement)\n}\n", "export function encodeMethodIntoRequestBody(event) {\n  if (event.target instanceof HTMLFormElement) {\n    const { target: form, detail: { fetchOptions } } = event\n\n    form.addEventListener(\"turbo:submit-start\", ({ detail: { formSubmission: { submitter } } }) => {\n      const body = isBodyInit(fetchOptions.body) ? fetchOptions.body : new URLSearchParams()\n      const method = determineFetchMethod(submitter, body, form)\n\n      if (!/get/i.test(method)) {\n        if (/post/i.test(method)) {\n          body.delete(\"_method\")\n        } else {\n          body.set(\"_method\", method)\n        }\n\n        fetchOptions.method = \"post\"\n      }\n    }, { once: true })\n  }\n}\n\nfunction determineFetchMethod(submitter, body, form) {\n  const formMethod = determineFormMethod(submitter)\n  const overrideMethod = body.get(\"_method\")\n  const method = form.getAttribute(\"method\") || \"get\"\n\n  if (typeof formMethod == \"string\") {\n    return formMethod\n  } else if (typeof overrideMethod == \"string\") {\n    return overrideMethod\n  } else {\n    return method\n  }\n}\n\nfunction determineFormMethod(submitter) {\n  if (submitter instanceof HTMLButtonElement || submitter instanceof HTMLInputElement) {\n    if (submitter.hasAttribute(\"formmethod\")) {\n      return submitter.formMethod\n    } else {\n      return null\n    }\n  } else {\n    return null\n  }\n}\n\nfunction isBodyInit(body) {\n  return body instanceof FormData || body instanceof URLSearchParams\n}\n", "import \"./cable_stream_source_element\"\n\nimport * as Turbo from \"@hotwired/turbo\"\nexport { Turbo }\n\nimport * as cable from \"./cable\"\nexport { cable }\n\nimport { encodeMethodIntoRequestBody } from \"./fetch_requests\"\n\naddEventListener(\"turbo:before-fetch-request\", encodeMethodIntoRequestBody)\n", "var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nvar activestorage = {exports: {}};\n\n(function (module, exports) {\n(function(global, factory) {\n  factory(exports) ;\n})(commonjsGlobal, (function(exports) {\n  var sparkMd5 = {\n    exports: {}\n  };\n  (function(module, exports) {\n    (function(factory) {\n      {\n        module.exports = factory();\n      }\n    })((function(undefined$1) {\n      var hex_chr = [ \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\" ];\n      function md5cycle(x, k) {\n        var a = x[0], b = x[1], c = x[2], d = x[3];\n        a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n        a = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n        d = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n        c = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n        b = (b << 22 | b >>> 10) + c | 0;\n        a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n        a = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n        d = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n        c = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n        b = (b << 22 | b >>> 10) + c | 0;\n        a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n        a = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n        d = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[10] - 42063 | 0;\n        c = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n        b = (b << 22 | b >>> 10) + c | 0;\n        a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n        a = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n        d = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n        c = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n        b = (b << 22 | b >>> 10) + c | 0;\n        a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n        a = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n        d = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n        c = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n        b = (b << 20 | b >>> 12) + c | 0;\n        a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n        a = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n        d = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n        c = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n        b = (b << 20 | b >>> 12) + c | 0;\n        a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n        a = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n        d = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n        c = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n        b = (b << 20 | b >>> 12) + c | 0;\n        a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n        a = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n        d = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n        c = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n        b = (b << 20 | b >>> 12) + c | 0;\n        a += (b ^ c ^ d) + k[5] - 378558 | 0;\n        a = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n        d = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n        c = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n        b = (b << 23 | b >>> 9) + c | 0;\n        a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n        a = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n        d = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n        c = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n        b = (b << 23 | b >>> 9) + c | 0;\n        a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n        a = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n        d = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n        c = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n        b = (b << 23 | b >>> 9) + c | 0;\n        a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n        a = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n        d = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n        c = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n        b = (b << 23 | b >>> 9) + c | 0;\n        a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n        a = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n        d = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n        c = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n        b = (b << 21 | b >>> 11) + c | 0;\n        a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n        a = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n        d = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n        c = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n        b = (b << 21 | b >>> 11) + c | 0;\n        a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n        a = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n        d = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n        c = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n        b = (b << 21 | b >>> 11) + c | 0;\n        a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n        a = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n        d = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n        c = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n        b = (b << 21 | b >>> 11) + c | 0;\n        x[0] = a + x[0] | 0;\n        x[1] = b + x[1] | 0;\n        x[2] = c + x[2] | 0;\n        x[3] = d + x[3] | 0;\n      }\n      function md5blk(s) {\n        var md5blks = [], i;\n        for (i = 0; i < 64; i += 4) {\n          md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n        }\n        return md5blks;\n      }\n      function md5blk_array(a) {\n        var md5blks = [], i;\n        for (i = 0; i < 64; i += 4) {\n          md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n        }\n        return md5blks;\n      }\n      function md51(s) {\n        var n = s.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n        for (i = 64; i <= n; i += 64) {\n          md5cycle(state, md5blk(s.substring(i - 64, i)));\n        }\n        s = s.substring(i - 64);\n        length = s.length;\n        tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n        for (i = 0; i < length; i += 1) {\n          tail[i >> 2] |= s.charCodeAt(i) << (i % 4 << 3);\n        }\n        tail[i >> 2] |= 128 << (i % 4 << 3);\n        if (i > 55) {\n          md5cycle(state, tail);\n          for (i = 0; i < 16; i += 1) {\n            tail[i] = 0;\n          }\n        }\n        tmp = n * 8;\n        tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n        lo = parseInt(tmp[2], 16);\n        hi = parseInt(tmp[1], 16) || 0;\n        tail[14] = lo;\n        tail[15] = hi;\n        md5cycle(state, tail);\n        return state;\n      }\n      function md51_array(a) {\n        var n = a.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n        for (i = 64; i <= n; i += 64) {\n          md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n        }\n        a = i - 64 < n ? a.subarray(i - 64) : new Uint8Array(0);\n        length = a.length;\n        tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n        for (i = 0; i < length; i += 1) {\n          tail[i >> 2] |= a[i] << (i % 4 << 3);\n        }\n        tail[i >> 2] |= 128 << (i % 4 << 3);\n        if (i > 55) {\n          md5cycle(state, tail);\n          for (i = 0; i < 16; i += 1) {\n            tail[i] = 0;\n          }\n        }\n        tmp = n * 8;\n        tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n        lo = parseInt(tmp[2], 16);\n        hi = parseInt(tmp[1], 16) || 0;\n        tail[14] = lo;\n        tail[15] = hi;\n        md5cycle(state, tail);\n        return state;\n      }\n      function rhex(n) {\n        var s = \"\", j;\n        for (j = 0; j < 4; j += 1) {\n          s += hex_chr[n >> j * 8 + 4 & 15] + hex_chr[n >> j * 8 & 15];\n        }\n        return s;\n      }\n      function hex(x) {\n        var i;\n        for (i = 0; i < x.length; i += 1) {\n          x[i] = rhex(x[i]);\n        }\n        return x.join(\"\");\n      }\n      if (hex(md51(\"hello\")) !== \"5d41402abc4b2a76b9719d911017c592\") ;\n      if (typeof ArrayBuffer !== \"undefined\" && !ArrayBuffer.prototype.slice) {\n        (function() {\n          function clamp(val, length) {\n            val = val | 0 || 0;\n            if (val < 0) {\n              return Math.max(val + length, 0);\n            }\n            return Math.min(val, length);\n          }\n          ArrayBuffer.prototype.slice = function(from, to) {\n            var length = this.byteLength, begin = clamp(from, length), end = length, num, target, targetArray, sourceArray;\n            if (to !== undefined$1) {\n              end = clamp(to, length);\n            }\n            if (begin > end) {\n              return new ArrayBuffer(0);\n            }\n            num = end - begin;\n            target = new ArrayBuffer(num);\n            targetArray = new Uint8Array(target);\n            sourceArray = new Uint8Array(this, begin, num);\n            targetArray.set(sourceArray);\n            return target;\n          };\n        })();\n      }\n      function toUtf8(str) {\n        if (/[\\u0080-\\uFFFF]/.test(str)) {\n          str = unescape(encodeURIComponent(str));\n        }\n        return str;\n      }\n      function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n        var length = str.length, buff = new ArrayBuffer(length), arr = new Uint8Array(buff), i;\n        for (i = 0; i < length; i += 1) {\n          arr[i] = str.charCodeAt(i);\n        }\n        return returnUInt8Array ? arr : buff;\n      }\n      function arrayBuffer2Utf8Str(buff) {\n        return String.fromCharCode.apply(null, new Uint8Array(buff));\n      }\n      function concatenateArrayBuffers(first, second, returnUInt8Array) {\n        var result = new Uint8Array(first.byteLength + second.byteLength);\n        result.set(new Uint8Array(first));\n        result.set(new Uint8Array(second), first.byteLength);\n        return returnUInt8Array ? result : result.buffer;\n      }\n      function hexToBinaryString(hex) {\n        var bytes = [], length = hex.length, x;\n        for (x = 0; x < length - 1; x += 2) {\n          bytes.push(parseInt(hex.substr(x, 2), 16));\n        }\n        return String.fromCharCode.apply(String, bytes);\n      }\n      function SparkMD5() {\n        this.reset();\n      }\n      SparkMD5.prototype.append = function(str) {\n        this.appendBinary(toUtf8(str));\n        return this;\n      };\n      SparkMD5.prototype.appendBinary = function(contents) {\n        this._buff += contents;\n        this._length += contents.length;\n        var length = this._buff.length, i;\n        for (i = 64; i <= length; i += 64) {\n          md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n        }\n        this._buff = this._buff.substring(i - 64);\n        return this;\n      };\n      SparkMD5.prototype.end = function(raw) {\n        var buff = this._buff, length = buff.length, i, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], ret;\n        for (i = 0; i < length; i += 1) {\n          tail[i >> 2] |= buff.charCodeAt(i) << (i % 4 << 3);\n        }\n        this._finish(tail, length);\n        ret = hex(this._hash);\n        if (raw) {\n          ret = hexToBinaryString(ret);\n        }\n        this.reset();\n        return ret;\n      };\n      SparkMD5.prototype.reset = function() {\n        this._buff = \"\";\n        this._length = 0;\n        this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n        return this;\n      };\n      SparkMD5.prototype.getState = function() {\n        return {\n          buff: this._buff,\n          length: this._length,\n          hash: this._hash.slice()\n        };\n      };\n      SparkMD5.prototype.setState = function(state) {\n        this._buff = state.buff;\n        this._length = state.length;\n        this._hash = state.hash;\n        return this;\n      };\n      SparkMD5.prototype.destroy = function() {\n        delete this._hash;\n        delete this._buff;\n        delete this._length;\n      };\n      SparkMD5.prototype._finish = function(tail, length) {\n        var i = length, tmp, lo, hi;\n        tail[i >> 2] |= 128 << (i % 4 << 3);\n        if (i > 55) {\n          md5cycle(this._hash, tail);\n          for (i = 0; i < 16; i += 1) {\n            tail[i] = 0;\n          }\n        }\n        tmp = this._length * 8;\n        tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n        lo = parseInt(tmp[2], 16);\n        hi = parseInt(tmp[1], 16) || 0;\n        tail[14] = lo;\n        tail[15] = hi;\n        md5cycle(this._hash, tail);\n      };\n      SparkMD5.hash = function(str, raw) {\n        return SparkMD5.hashBinary(toUtf8(str), raw);\n      };\n      SparkMD5.hashBinary = function(content, raw) {\n        var hash = md51(content), ret = hex(hash);\n        return raw ? hexToBinaryString(ret) : ret;\n      };\n      SparkMD5.ArrayBuffer = function() {\n        this.reset();\n      };\n      SparkMD5.ArrayBuffer.prototype.append = function(arr) {\n        var buff = concatenateArrayBuffers(this._buff.buffer, arr, true), length = buff.length, i;\n        this._length += arr.byteLength;\n        for (i = 64; i <= length; i += 64) {\n          md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n        }\n        this._buff = i - 64 < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n        return this;\n      };\n      SparkMD5.ArrayBuffer.prototype.end = function(raw) {\n        var buff = this._buff, length = buff.length, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], i, ret;\n        for (i = 0; i < length; i += 1) {\n          tail[i >> 2] |= buff[i] << (i % 4 << 3);\n        }\n        this._finish(tail, length);\n        ret = hex(this._hash);\n        if (raw) {\n          ret = hexToBinaryString(ret);\n        }\n        this.reset();\n        return ret;\n      };\n      SparkMD5.ArrayBuffer.prototype.reset = function() {\n        this._buff = new Uint8Array(0);\n        this._length = 0;\n        this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n        return this;\n      };\n      SparkMD5.ArrayBuffer.prototype.getState = function() {\n        var state = SparkMD5.prototype.getState.call(this);\n        state.buff = arrayBuffer2Utf8Str(state.buff);\n        return state;\n      };\n      SparkMD5.ArrayBuffer.prototype.setState = function(state) {\n        state.buff = utf8Str2ArrayBuffer(state.buff, true);\n        return SparkMD5.prototype.setState.call(this, state);\n      };\n      SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n      SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n      SparkMD5.ArrayBuffer.hash = function(arr, raw) {\n        var hash = md51_array(new Uint8Array(arr)), ret = hex(hash);\n        return raw ? hexToBinaryString(ret) : ret;\n      };\n      return SparkMD5;\n    }));\n  })(sparkMd5);\n  var SparkMD5 = sparkMd5.exports;\n  const fileSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice;\n  class FileChecksum {\n    static create(file, callback) {\n      const instance = new FileChecksum(file);\n      instance.create(callback);\n    }\n    constructor(file) {\n      this.file = file;\n      this.chunkSize = 2097152;\n      this.chunkCount = Math.ceil(this.file.size / this.chunkSize);\n      this.chunkIndex = 0;\n    }\n    create(callback) {\n      this.callback = callback;\n      this.md5Buffer = new SparkMD5.ArrayBuffer;\n      this.fileReader = new FileReader;\n      this.fileReader.addEventListener(\"load\", (event => this.fileReaderDidLoad(event)));\n      this.fileReader.addEventListener(\"error\", (event => this.fileReaderDidError(event)));\n      this.readNextChunk();\n    }\n    fileReaderDidLoad(event) {\n      this.md5Buffer.append(event.target.result);\n      if (!this.readNextChunk()) {\n        const binaryDigest = this.md5Buffer.end(true);\n        const base64digest = btoa(binaryDigest);\n        this.callback(null, base64digest);\n      }\n    }\n    fileReaderDidError(event) {\n      this.callback(`Error reading ${this.file.name}`);\n    }\n    readNextChunk() {\n      if (this.chunkIndex < this.chunkCount || this.chunkIndex == 0 && this.chunkCount == 0) {\n        const start = this.chunkIndex * this.chunkSize;\n        const end = Math.min(start + this.chunkSize, this.file.size);\n        const bytes = fileSlice.call(this.file, start, end);\n        this.fileReader.readAsArrayBuffer(bytes);\n        this.chunkIndex++;\n        return true;\n      } else {\n        return false;\n      }\n    }\n  }\n  function getMetaValue(name) {\n    const element = findElement(document.head, `meta[name=\"${name}\"]`);\n    if (element) {\n      return element.getAttribute(\"content\");\n    }\n  }\n  function findElements(root, selector) {\n    if (typeof root == \"string\") {\n      selector = root;\n      root = document;\n    }\n    const elements = root.querySelectorAll(selector);\n    return toArray(elements);\n  }\n  function findElement(root, selector) {\n    if (typeof root == \"string\") {\n      selector = root;\n      root = document;\n    }\n    return root.querySelector(selector);\n  }\n  function dispatchEvent(element, type, eventInit = {}) {\n    const {disabled: disabled} = element;\n    const {bubbles: bubbles, cancelable: cancelable, detail: detail} = eventInit;\n    const event = document.createEvent(\"Event\");\n    event.initEvent(type, bubbles || true, cancelable || true);\n    event.detail = detail || {};\n    try {\n      element.disabled = false;\n      element.dispatchEvent(event);\n    } finally {\n      element.disabled = disabled;\n    }\n    return event;\n  }\n  function toArray(value) {\n    if (Array.isArray(value)) {\n      return value;\n    } else if (Array.from) {\n      return Array.from(value);\n    } else {\n      return [].slice.call(value);\n    }\n  }\n  class BlobRecord {\n    constructor(file, checksum, url) {\n      this.file = file;\n      this.attributes = {\n        filename: file.name,\n        content_type: file.type || \"application/octet-stream\",\n        byte_size: file.size,\n        checksum: checksum\n      };\n      this.xhr = new XMLHttpRequest;\n      this.xhr.open(\"POST\", url, true);\n      this.xhr.responseType = \"json\";\n      this.xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n      this.xhr.setRequestHeader(\"Accept\", \"application/json\");\n      this.xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n      const csrfToken = getMetaValue(\"csrf-token\");\n      if (csrfToken != undefined) {\n        this.xhr.setRequestHeader(\"X-CSRF-Token\", csrfToken);\n      }\n      this.xhr.addEventListener(\"load\", (event => this.requestDidLoad(event)));\n      this.xhr.addEventListener(\"error\", (event => this.requestDidError(event)));\n    }\n    get status() {\n      return this.xhr.status;\n    }\n    get response() {\n      const {responseType: responseType, response: response} = this.xhr;\n      if (responseType == \"json\") {\n        return response;\n      } else {\n        return JSON.parse(response);\n      }\n    }\n    create(callback) {\n      this.callback = callback;\n      this.xhr.send(JSON.stringify({\n        blob: this.attributes\n      }));\n    }\n    requestDidLoad(event) {\n      if (this.status >= 200 && this.status < 300) {\n        const {response: response} = this;\n        const {direct_upload: direct_upload} = response;\n        delete response.direct_upload;\n        this.attributes = response;\n        this.directUploadData = direct_upload;\n        this.callback(null, this.toJSON());\n      } else {\n        this.requestDidError(event);\n      }\n    }\n    requestDidError(event) {\n      this.callback(`Error creating Blob for \"${this.file.name}\". Status: ${this.status}`);\n    }\n    toJSON() {\n      const result = {};\n      for (const key in this.attributes) {\n        result[key] = this.attributes[key];\n      }\n      return result;\n    }\n  }\n  class BlobUpload {\n    constructor(blob) {\n      this.blob = blob;\n      this.file = blob.file;\n      const {url: url, headers: headers} = blob.directUploadData;\n      this.xhr = new XMLHttpRequest;\n      this.xhr.open(\"PUT\", url, true);\n      this.xhr.responseType = \"text\";\n      for (const key in headers) {\n        this.xhr.setRequestHeader(key, headers[key]);\n      }\n      this.xhr.addEventListener(\"load\", (event => this.requestDidLoad(event)));\n      this.xhr.addEventListener(\"error\", (event => this.requestDidError(event)));\n    }\n    create(callback) {\n      this.callback = callback;\n      this.xhr.send(this.file.slice());\n    }\n    requestDidLoad(event) {\n      const {status: status, response: response} = this.xhr;\n      if (status >= 200 && status < 300) {\n        this.callback(null, response);\n      } else {\n        this.requestDidError(event);\n      }\n    }\n    requestDidError(event) {\n      this.callback(`Error storing \"${this.file.name}\". Status: ${this.xhr.status}`);\n    }\n  }\n  let id = 0;\n  class DirectUpload {\n    constructor(file, url, delegate) {\n      this.id = ++id;\n      this.file = file;\n      this.url = url;\n      this.delegate = delegate;\n    }\n    create(callback) {\n      FileChecksum.create(this.file, ((error, checksum) => {\n        if (error) {\n          callback(error);\n          return;\n        }\n        const blob = new BlobRecord(this.file, checksum, this.url);\n        notify(this.delegate, \"directUploadWillCreateBlobWithXHR\", blob.xhr);\n        blob.create((error => {\n          if (error) {\n            callback(error);\n          } else {\n            const upload = new BlobUpload(blob);\n            notify(this.delegate, \"directUploadWillStoreFileWithXHR\", upload.xhr);\n            upload.create((error => {\n              if (error) {\n                callback(error);\n              } else {\n                callback(null, blob.toJSON());\n              }\n            }));\n          }\n        }));\n      }));\n    }\n  }\n  function notify(object, methodName, ...messages) {\n    if (object && typeof object[methodName] == \"function\") {\n      return object[methodName](...messages);\n    }\n  }\n  class DirectUploadController {\n    constructor(input, file) {\n      this.input = input;\n      this.file = file;\n      this.directUpload = new DirectUpload(this.file, this.url, this);\n      this.dispatch(\"initialize\");\n    }\n    start(callback) {\n      const hiddenInput = document.createElement(\"input\");\n      hiddenInput.type = \"hidden\";\n      hiddenInput.name = this.input.name;\n      this.input.insertAdjacentElement(\"beforebegin\", hiddenInput);\n      this.dispatch(\"start\");\n      this.directUpload.create(((error, attributes) => {\n        if (error) {\n          hiddenInput.parentNode.removeChild(hiddenInput);\n          this.dispatchError(error);\n        } else {\n          hiddenInput.value = attributes.signed_id;\n        }\n        this.dispatch(\"end\");\n        callback(error);\n      }));\n    }\n    uploadRequestDidProgress(event) {\n      const progress = event.loaded / event.total * 100;\n      if (progress) {\n        this.dispatch(\"progress\", {\n          progress: progress\n        });\n      }\n    }\n    get url() {\n      return this.input.getAttribute(\"data-direct-upload-url\");\n    }\n    dispatch(name, detail = {}) {\n      detail.file = this.file;\n      detail.id = this.directUpload.id;\n      return dispatchEvent(this.input, `direct-upload:${name}`, {\n        detail: detail\n      });\n    }\n    dispatchError(error) {\n      const event = this.dispatch(\"error\", {\n        error: error\n      });\n      if (!event.defaultPrevented) {\n        alert(error);\n      }\n    }\n    directUploadWillCreateBlobWithXHR(xhr) {\n      this.dispatch(\"before-blob-request\", {\n        xhr: xhr\n      });\n    }\n    directUploadWillStoreFileWithXHR(xhr) {\n      this.dispatch(\"before-storage-request\", {\n        xhr: xhr\n      });\n      xhr.upload.addEventListener(\"progress\", (event => this.uploadRequestDidProgress(event)));\n    }\n  }\n  const inputSelector = \"input[type=file][data-direct-upload-url]:not([disabled])\";\n  class DirectUploadsController {\n    constructor(form) {\n      this.form = form;\n      this.inputs = findElements(form, inputSelector).filter((input => input.files.length));\n    }\n    start(callback) {\n      const controllers = this.createDirectUploadControllers();\n      const startNextController = () => {\n        const controller = controllers.shift();\n        if (controller) {\n          controller.start((error => {\n            if (error) {\n              callback(error);\n              this.dispatch(\"end\");\n            } else {\n              startNextController();\n            }\n          }));\n        } else {\n          callback();\n          this.dispatch(\"end\");\n        }\n      };\n      this.dispatch(\"start\");\n      startNextController();\n    }\n    createDirectUploadControllers() {\n      const controllers = [];\n      this.inputs.forEach((input => {\n        toArray(input.files).forEach((file => {\n          const controller = new DirectUploadController(input, file);\n          controllers.push(controller);\n        }));\n      }));\n      return controllers;\n    }\n    dispatch(name, detail = {}) {\n      return dispatchEvent(this.form, `direct-uploads:${name}`, {\n        detail: detail\n      });\n    }\n  }\n  const processingAttribute = \"data-direct-uploads-processing\";\n  const submitButtonsByForm = new WeakMap;\n  let started = false;\n  function start() {\n    if (!started) {\n      started = true;\n      document.addEventListener(\"click\", didClick, true);\n      document.addEventListener(\"submit\", didSubmitForm, true);\n      document.addEventListener(\"ajax:before\", didSubmitRemoteElement);\n    }\n  }\n  function didClick(event) {\n    const {target: target} = event;\n    if ((target.tagName == \"INPUT\" || target.tagName == \"BUTTON\") && target.type == \"submit\" && target.form) {\n      submitButtonsByForm.set(target.form, target);\n    }\n  }\n  function didSubmitForm(event) {\n    handleFormSubmissionEvent(event);\n  }\n  function didSubmitRemoteElement(event) {\n    if (event.target.tagName == \"FORM\") {\n      handleFormSubmissionEvent(event);\n    }\n  }\n  function handleFormSubmissionEvent(event) {\n    const form = event.target;\n    if (form.hasAttribute(processingAttribute)) {\n      event.preventDefault();\n      return;\n    }\n    const controller = new DirectUploadsController(form);\n    const {inputs: inputs} = controller;\n    if (inputs.length) {\n      event.preventDefault();\n      form.setAttribute(processingAttribute, \"\");\n      inputs.forEach(disable);\n      controller.start((error => {\n        form.removeAttribute(processingAttribute);\n        if (error) {\n          inputs.forEach(enable);\n        } else {\n          submitForm(form);\n        }\n      }));\n    }\n  }\n  function submitForm(form) {\n    let button = submitButtonsByForm.get(form) || findElement(form, \"input[type=submit], button[type=submit]\");\n    if (button) {\n      const {disabled: disabled} = button;\n      button.disabled = false;\n      button.focus();\n      button.click();\n      button.disabled = disabled;\n    } else {\n      button = document.createElement(\"input\");\n      button.type = \"submit\";\n      button.style.display = \"none\";\n      form.appendChild(button);\n      button.click();\n      form.removeChild(button);\n    }\n    submitButtonsByForm.delete(form);\n  }\n  function disable(input) {\n    input.disabled = true;\n  }\n  function enable(input) {\n    input.disabled = false;\n  }\n  function autostart() {\n    if (window.ActiveStorage) {\n      start();\n    }\n  }\n  setTimeout(autostart, 1);\n  exports.DirectUpload = DirectUpload;\n  exports.start = start;\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n}));\n}(activestorage, activestorage.exports));\n\nclass AttachmentUpload {\n  constructor(attachment, element) {\n    this.attachment = attachment;\n    this.element = element;\n    this.directUpload = new activestorage.exports.DirectUpload(attachment.file, this.directUploadUrl, this);\n  }\n\n  start() {\n    this.directUpload.create(this.directUploadDidComplete.bind(this));\n  }\n\n  directUploadWillStoreFileWithXHR(xhr) {\n    xhr.upload.addEventListener(\"progress\", event => {\n      const progress = event.loaded / event.total * 100;\n      this.attachment.setUploadProgress(progress);\n    });\n  }\n\n  directUploadDidComplete(error, attributes) {\n    if (error) {\n      throw new Error(`Direct upload failed: ${error}`)\n    }\n\n    this.attachment.setAttributes({\n      sgid: attributes.attachable_sgid,\n      url: this.createBlobUrl(attributes.signed_id, attributes.filename)\n    });\n  }\n\n  createBlobUrl(signedId, filename) {\n    return this.blobUrlTemplate\n      .replace(\":signed_id\", signedId)\n      .replace(\":filename\", encodeURIComponent(filename))\n  }\n\n  get directUploadUrl() {\n    return this.element.dataset.directUploadUrl\n  }\n\n  get blobUrlTemplate() {\n    return this.element.dataset.blobUrlTemplate\n  }\n}\n\naddEventListener(\"trix-attachment-add\", event => {\n  const { attachment, target } = event;\n\n  if (attachment.file) {\n    const upload = new AttachmentUpload(attachment, target);\n    upload.start();\n  }\n});\n", "/*\nStimulus 3.2.1\nCopyright \u00A9 2022 Basecamp, LLC\n */\nclass EventListener {\n    constructor(eventTarget, eventName, eventOptions) {\n        this.eventTarget = eventTarget;\n        this.eventName = eventName;\n        this.eventOptions = eventOptions;\n        this.unorderedBindings = new Set();\n    }\n    connect() {\n        this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n    }\n    disconnect() {\n        this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n    }\n    bindingConnected(binding) {\n        this.unorderedBindings.add(binding);\n    }\n    bindingDisconnected(binding) {\n        this.unorderedBindings.delete(binding);\n    }\n    handleEvent(event) {\n        const extendedEvent = extendEvent(event);\n        for (const binding of this.bindings) {\n            if (extendedEvent.immediatePropagationStopped) {\n                break;\n            }\n            else {\n                binding.handleEvent(extendedEvent);\n            }\n        }\n    }\n    hasBindings() {\n        return this.unorderedBindings.size > 0;\n    }\n    get bindings() {\n        return Array.from(this.unorderedBindings).sort((left, right) => {\n            const leftIndex = left.index, rightIndex = right.index;\n            return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n        });\n    }\n}\nfunction extendEvent(event) {\n    if (\"immediatePropagationStopped\" in event) {\n        return event;\n    }\n    else {\n        const { stopImmediatePropagation } = event;\n        return Object.assign(event, {\n            immediatePropagationStopped: false,\n            stopImmediatePropagation() {\n                this.immediatePropagationStopped = true;\n                stopImmediatePropagation.call(this);\n            },\n        });\n    }\n}\n\nclass Dispatcher {\n    constructor(application) {\n        this.application = application;\n        this.eventListenerMaps = new Map();\n        this.started = false;\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.eventListeners.forEach((eventListener) => eventListener.connect());\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.started = false;\n            this.eventListeners.forEach((eventListener) => eventListener.disconnect());\n        }\n    }\n    get eventListeners() {\n        return Array.from(this.eventListenerMaps.values()).reduce((listeners, map) => listeners.concat(Array.from(map.values())), []);\n    }\n    bindingConnected(binding) {\n        this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n    }\n    bindingDisconnected(binding, clearEventListeners = false) {\n        this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n        if (clearEventListeners)\n            this.clearEventListenersForBinding(binding);\n    }\n    handleError(error, message, detail = {}) {\n        this.application.handleError(error, `Error ${message}`, detail);\n    }\n    clearEventListenersForBinding(binding) {\n        const eventListener = this.fetchEventListenerForBinding(binding);\n        if (!eventListener.hasBindings()) {\n            eventListener.disconnect();\n            this.removeMappedEventListenerFor(binding);\n        }\n    }\n    removeMappedEventListenerFor(binding) {\n        const { eventTarget, eventName, eventOptions } = binding;\n        const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n        const cacheKey = this.cacheKey(eventName, eventOptions);\n        eventListenerMap.delete(cacheKey);\n        if (eventListenerMap.size == 0)\n            this.eventListenerMaps.delete(eventTarget);\n    }\n    fetchEventListenerForBinding(binding) {\n        const { eventTarget, eventName, eventOptions } = binding;\n        return this.fetchEventListener(eventTarget, eventName, eventOptions);\n    }\n    fetchEventListener(eventTarget, eventName, eventOptions) {\n        const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n        const cacheKey = this.cacheKey(eventName, eventOptions);\n        let eventListener = eventListenerMap.get(cacheKey);\n        if (!eventListener) {\n            eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n            eventListenerMap.set(cacheKey, eventListener);\n        }\n        return eventListener;\n    }\n    createEventListener(eventTarget, eventName, eventOptions) {\n        const eventListener = new EventListener(eventTarget, eventName, eventOptions);\n        if (this.started) {\n            eventListener.connect();\n        }\n        return eventListener;\n    }\n    fetchEventListenerMapForEventTarget(eventTarget) {\n        let eventListenerMap = this.eventListenerMaps.get(eventTarget);\n        if (!eventListenerMap) {\n            eventListenerMap = new Map();\n            this.eventListenerMaps.set(eventTarget, eventListenerMap);\n        }\n        return eventListenerMap;\n    }\n    cacheKey(eventName, eventOptions) {\n        const parts = [eventName];\n        Object.keys(eventOptions)\n            .sort()\n            .forEach((key) => {\n            parts.push(`${eventOptions[key] ? \"\" : \"!\"}${key}`);\n        });\n        return parts.join(\":\");\n    }\n}\n\nconst defaultActionDescriptorFilters = {\n    stop({ event, value }) {\n        if (value)\n            event.stopPropagation();\n        return true;\n    },\n    prevent({ event, value }) {\n        if (value)\n            event.preventDefault();\n        return true;\n    },\n    self({ event, value, element }) {\n        if (value) {\n            return element === event.target;\n        }\n        else {\n            return true;\n        }\n    },\n};\nconst descriptorPattern = /^(?:(.+?)(?:\\.(.+?))?(?:@(window|document))?->)?(.+?)(?:#([^:]+?))(?::(.+))?$/;\nfunction parseActionDescriptorString(descriptorString) {\n    const source = descriptorString.trim();\n    const matches = source.match(descriptorPattern) || [];\n    let eventName = matches[1];\n    let keyFilter = matches[2];\n    if (keyFilter && ![\"keydown\", \"keyup\", \"keypress\"].includes(eventName)) {\n        eventName += `.${keyFilter}`;\n        keyFilter = \"\";\n    }\n    return {\n        eventTarget: parseEventTarget(matches[3]),\n        eventName,\n        eventOptions: matches[6] ? parseEventOptions(matches[6]) : {},\n        identifier: matches[4],\n        methodName: matches[5],\n        keyFilter,\n    };\n}\nfunction parseEventTarget(eventTargetName) {\n    if (eventTargetName == \"window\") {\n        return window;\n    }\n    else if (eventTargetName == \"document\") {\n        return document;\n    }\n}\nfunction parseEventOptions(eventOptions) {\n    return eventOptions\n        .split(\":\")\n        .reduce((options, token) => Object.assign(options, { [token.replace(/^!/, \"\")]: !/^!/.test(token) }), {});\n}\nfunction stringifyEventTarget(eventTarget) {\n    if (eventTarget == window) {\n        return \"window\";\n    }\n    else if (eventTarget == document) {\n        return \"document\";\n    }\n}\n\nfunction camelize(value) {\n    return value.replace(/(?:[_-])([a-z0-9])/g, (_, char) => char.toUpperCase());\n}\nfunction namespaceCamelize(value) {\n    return camelize(value.replace(/--/g, \"-\").replace(/__/g, \"_\"));\n}\nfunction capitalize(value) {\n    return value.charAt(0).toUpperCase() + value.slice(1);\n}\nfunction dasherize(value) {\n    return value.replace(/([A-Z])/g, (_, char) => `-${char.toLowerCase()}`);\n}\nfunction tokenize(value) {\n    return value.match(/[^\\s]+/g) || [];\n}\n\nclass Action {\n    constructor(element, index, descriptor, schema) {\n        this.element = element;\n        this.index = index;\n        this.eventTarget = descriptor.eventTarget || element;\n        this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n        this.eventOptions = descriptor.eventOptions || {};\n        this.identifier = descriptor.identifier || error(\"missing identifier\");\n        this.methodName = descriptor.methodName || error(\"missing method name\");\n        this.keyFilter = descriptor.keyFilter || \"\";\n        this.schema = schema;\n    }\n    static forToken(token, schema) {\n        return new this(token.element, token.index, parseActionDescriptorString(token.content), schema);\n    }\n    toString() {\n        const eventFilter = this.keyFilter ? `.${this.keyFilter}` : \"\";\n        const eventTarget = this.eventTargetName ? `@${this.eventTargetName}` : \"\";\n        return `${this.eventName}${eventFilter}${eventTarget}->${this.identifier}#${this.methodName}`;\n    }\n    isFilterTarget(event) {\n        if (!this.keyFilter) {\n            return false;\n        }\n        const filteres = this.keyFilter.split(\"+\");\n        const modifiers = [\"meta\", \"ctrl\", \"alt\", \"shift\"];\n        const [meta, ctrl, alt, shift] = modifiers.map((modifier) => filteres.includes(modifier));\n        if (event.metaKey !== meta || event.ctrlKey !== ctrl || event.altKey !== alt || event.shiftKey !== shift) {\n            return true;\n        }\n        const standardFilter = filteres.filter((key) => !modifiers.includes(key))[0];\n        if (!standardFilter) {\n            return false;\n        }\n        if (!Object.prototype.hasOwnProperty.call(this.keyMappings, standardFilter)) {\n            error(`contains unknown key filter: ${this.keyFilter}`);\n        }\n        return this.keyMappings[standardFilter].toLowerCase() !== event.key.toLowerCase();\n    }\n    get params() {\n        const params = {};\n        const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`, \"i\");\n        for (const { name, value } of Array.from(this.element.attributes)) {\n            const match = name.match(pattern);\n            const key = match && match[1];\n            if (key) {\n                params[camelize(key)] = typecast(value);\n            }\n        }\n        return params;\n    }\n    get eventTargetName() {\n        return stringifyEventTarget(this.eventTarget);\n    }\n    get keyMappings() {\n        return this.schema.keyMappings;\n    }\n}\nconst defaultEventNames = {\n    a: () => \"click\",\n    button: () => \"click\",\n    form: () => \"submit\",\n    details: () => \"toggle\",\n    input: (e) => (e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\"),\n    select: () => \"change\",\n    textarea: () => \"input\",\n};\nfunction getDefaultEventNameForElement(element) {\n    const tagName = element.tagName.toLowerCase();\n    if (tagName in defaultEventNames) {\n        return defaultEventNames[tagName](element);\n    }\n}\nfunction error(message) {\n    throw new Error(message);\n}\nfunction typecast(value) {\n    try {\n        return JSON.parse(value);\n    }\n    catch (o_O) {\n        return value;\n    }\n}\n\nclass Binding {\n    constructor(context, action) {\n        this.context = context;\n        this.action = action;\n    }\n    get index() {\n        return this.action.index;\n    }\n    get eventTarget() {\n        return this.action.eventTarget;\n    }\n    get eventOptions() {\n        return this.action.eventOptions;\n    }\n    get identifier() {\n        return this.context.identifier;\n    }\n    handleEvent(event) {\n        if (this.willBeInvokedByEvent(event) && this.applyEventModifiers(event)) {\n            this.invokeWithEvent(event);\n        }\n    }\n    get eventName() {\n        return this.action.eventName;\n    }\n    get method() {\n        const method = this.controller[this.methodName];\n        if (typeof method == \"function\") {\n            return method;\n        }\n        throw new Error(`Action \"${this.action}\" references undefined method \"${this.methodName}\"`);\n    }\n    applyEventModifiers(event) {\n        const { element } = this.action;\n        const { actionDescriptorFilters } = this.context.application;\n        let passes = true;\n        for (const [name, value] of Object.entries(this.eventOptions)) {\n            if (name in actionDescriptorFilters) {\n                const filter = actionDescriptorFilters[name];\n                passes = passes && filter({ name, value, event, element });\n            }\n            else {\n                continue;\n            }\n        }\n        return passes;\n    }\n    invokeWithEvent(event) {\n        const { target, currentTarget } = event;\n        try {\n            const { params } = this.action;\n            const actionEvent = Object.assign(event, { params });\n            this.method.call(this.controller, actionEvent);\n            this.context.logDebugActivity(this.methodName, { event, target, currentTarget, action: this.methodName });\n        }\n        catch (error) {\n            const { identifier, controller, element, index } = this;\n            const detail = { identifier, controller, element, index, event };\n            this.context.handleError(error, `invoking action \"${this.action}\"`, detail);\n        }\n    }\n    willBeInvokedByEvent(event) {\n        const eventTarget = event.target;\n        if (event instanceof KeyboardEvent && this.action.isFilterTarget(event)) {\n            return false;\n        }\n        if (this.element === eventTarget) {\n            return true;\n        }\n        else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n            return this.scope.containsElement(eventTarget);\n        }\n        else {\n            return this.scope.containsElement(this.action.element);\n        }\n    }\n    get controller() {\n        return this.context.controller;\n    }\n    get methodName() {\n        return this.action.methodName;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get scope() {\n        return this.context.scope;\n    }\n}\n\nclass ElementObserver {\n    constructor(element, delegate) {\n        this.mutationObserverInit = { attributes: true, childList: true, subtree: true };\n        this.element = element;\n        this.started = false;\n        this.delegate = delegate;\n        this.elements = new Set();\n        this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.mutationObserver.observe(this.element, this.mutationObserverInit);\n            this.refresh();\n        }\n    }\n    pause(callback) {\n        if (this.started) {\n            this.mutationObserver.disconnect();\n            this.started = false;\n        }\n        callback();\n        if (!this.started) {\n            this.mutationObserver.observe(this.element, this.mutationObserverInit);\n            this.started = true;\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.mutationObserver.takeRecords();\n            this.mutationObserver.disconnect();\n            this.started = false;\n        }\n    }\n    refresh() {\n        if (this.started) {\n            const matches = new Set(this.matchElementsInTree());\n            for (const element of Array.from(this.elements)) {\n                if (!matches.has(element)) {\n                    this.removeElement(element);\n                }\n            }\n            for (const element of Array.from(matches)) {\n                this.addElement(element);\n            }\n        }\n    }\n    processMutations(mutations) {\n        if (this.started) {\n            for (const mutation of mutations) {\n                this.processMutation(mutation);\n            }\n        }\n    }\n    processMutation(mutation) {\n        if (mutation.type == \"attributes\") {\n            this.processAttributeChange(mutation.target, mutation.attributeName);\n        }\n        else if (mutation.type == \"childList\") {\n            this.processRemovedNodes(mutation.removedNodes);\n            this.processAddedNodes(mutation.addedNodes);\n        }\n    }\n    processAttributeChange(node, attributeName) {\n        const element = node;\n        if (this.elements.has(element)) {\n            if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n                this.delegate.elementAttributeChanged(element, attributeName);\n            }\n            else {\n                this.removeElement(element);\n            }\n        }\n        else if (this.matchElement(element)) {\n            this.addElement(element);\n        }\n    }\n    processRemovedNodes(nodes) {\n        for (const node of Array.from(nodes)) {\n            const element = this.elementFromNode(node);\n            if (element) {\n                this.processTree(element, this.removeElement);\n            }\n        }\n    }\n    processAddedNodes(nodes) {\n        for (const node of Array.from(nodes)) {\n            const element = this.elementFromNode(node);\n            if (element && this.elementIsActive(element)) {\n                this.processTree(element, this.addElement);\n            }\n        }\n    }\n    matchElement(element) {\n        return this.delegate.matchElement(element);\n    }\n    matchElementsInTree(tree = this.element) {\n        return this.delegate.matchElementsInTree(tree);\n    }\n    processTree(tree, processor) {\n        for (const element of this.matchElementsInTree(tree)) {\n            processor.call(this, element);\n        }\n    }\n    elementFromNode(node) {\n        if (node.nodeType == Node.ELEMENT_NODE) {\n            return node;\n        }\n    }\n    elementIsActive(element) {\n        if (element.isConnected != this.element.isConnected) {\n            return false;\n        }\n        else {\n            return this.element.contains(element);\n        }\n    }\n    addElement(element) {\n        if (!this.elements.has(element)) {\n            if (this.elementIsActive(element)) {\n                this.elements.add(element);\n                if (this.delegate.elementMatched) {\n                    this.delegate.elementMatched(element);\n                }\n            }\n        }\n    }\n    removeElement(element) {\n        if (this.elements.has(element)) {\n            this.elements.delete(element);\n            if (this.delegate.elementUnmatched) {\n                this.delegate.elementUnmatched(element);\n            }\n        }\n    }\n}\n\nclass AttributeObserver {\n    constructor(element, attributeName, delegate) {\n        this.attributeName = attributeName;\n        this.delegate = delegate;\n        this.elementObserver = new ElementObserver(element, this);\n    }\n    get element() {\n        return this.elementObserver.element;\n    }\n    get selector() {\n        return `[${this.attributeName}]`;\n    }\n    start() {\n        this.elementObserver.start();\n    }\n    pause(callback) {\n        this.elementObserver.pause(callback);\n    }\n    stop() {\n        this.elementObserver.stop();\n    }\n    refresh() {\n        this.elementObserver.refresh();\n    }\n    get started() {\n        return this.elementObserver.started;\n    }\n    matchElement(element) {\n        return element.hasAttribute(this.attributeName);\n    }\n    matchElementsInTree(tree) {\n        const match = this.matchElement(tree) ? [tree] : [];\n        const matches = Array.from(tree.querySelectorAll(this.selector));\n        return match.concat(matches);\n    }\n    elementMatched(element) {\n        if (this.delegate.elementMatchedAttribute) {\n            this.delegate.elementMatchedAttribute(element, this.attributeName);\n        }\n    }\n    elementUnmatched(element) {\n        if (this.delegate.elementUnmatchedAttribute) {\n            this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n        }\n    }\n    elementAttributeChanged(element, attributeName) {\n        if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n            this.delegate.elementAttributeValueChanged(element, attributeName);\n        }\n    }\n}\n\nfunction add(map, key, value) {\n    fetch(map, key).add(value);\n}\nfunction del(map, key, value) {\n    fetch(map, key).delete(value);\n    prune(map, key);\n}\nfunction fetch(map, key) {\n    let values = map.get(key);\n    if (!values) {\n        values = new Set();\n        map.set(key, values);\n    }\n    return values;\n}\nfunction prune(map, key) {\n    const values = map.get(key);\n    if (values != null && values.size == 0) {\n        map.delete(key);\n    }\n}\n\nclass Multimap {\n    constructor() {\n        this.valuesByKey = new Map();\n    }\n    get keys() {\n        return Array.from(this.valuesByKey.keys());\n    }\n    get values() {\n        const sets = Array.from(this.valuesByKey.values());\n        return sets.reduce((values, set) => values.concat(Array.from(set)), []);\n    }\n    get size() {\n        const sets = Array.from(this.valuesByKey.values());\n        return sets.reduce((size, set) => size + set.size, 0);\n    }\n    add(key, value) {\n        add(this.valuesByKey, key, value);\n    }\n    delete(key, value) {\n        del(this.valuesByKey, key, value);\n    }\n    has(key, value) {\n        const values = this.valuesByKey.get(key);\n        return values != null && values.has(value);\n    }\n    hasKey(key) {\n        return this.valuesByKey.has(key);\n    }\n    hasValue(value) {\n        const sets = Array.from(this.valuesByKey.values());\n        return sets.some((set) => set.has(value));\n    }\n    getValuesForKey(key) {\n        const values = this.valuesByKey.get(key);\n        return values ? Array.from(values) : [];\n    }\n    getKeysForValue(value) {\n        return Array.from(this.valuesByKey)\n            .filter(([_key, values]) => values.has(value))\n            .map(([key, _values]) => key);\n    }\n}\n\nclass IndexedMultimap extends Multimap {\n    constructor() {\n        super();\n        this.keysByValue = new Map();\n    }\n    get values() {\n        return Array.from(this.keysByValue.keys());\n    }\n    add(key, value) {\n        super.add(key, value);\n        add(this.keysByValue, value, key);\n    }\n    delete(key, value) {\n        super.delete(key, value);\n        del(this.keysByValue, value, key);\n    }\n    hasValue(value) {\n        return this.keysByValue.has(value);\n    }\n    getKeysForValue(value) {\n        const set = this.keysByValue.get(value);\n        return set ? Array.from(set) : [];\n    }\n}\n\nclass SelectorObserver {\n    constructor(element, selector, delegate, details = {}) {\n        this.selector = selector;\n        this.details = details;\n        this.elementObserver = new ElementObserver(element, this);\n        this.delegate = delegate;\n        this.matchesByElement = new Multimap();\n    }\n    get started() {\n        return this.elementObserver.started;\n    }\n    start() {\n        this.elementObserver.start();\n    }\n    pause(callback) {\n        this.elementObserver.pause(callback);\n    }\n    stop() {\n        this.elementObserver.stop();\n    }\n    refresh() {\n        this.elementObserver.refresh();\n    }\n    get element() {\n        return this.elementObserver.element;\n    }\n    matchElement(element) {\n        const matches = element.matches(this.selector);\n        if (this.delegate.selectorMatchElement) {\n            return matches && this.delegate.selectorMatchElement(element, this.details);\n        }\n        return matches;\n    }\n    matchElementsInTree(tree) {\n        const match = this.matchElement(tree) ? [tree] : [];\n        const matches = Array.from(tree.querySelectorAll(this.selector)).filter((match) => this.matchElement(match));\n        return match.concat(matches);\n    }\n    elementMatched(element) {\n        this.selectorMatched(element);\n    }\n    elementUnmatched(element) {\n        this.selectorUnmatched(element);\n    }\n    elementAttributeChanged(element, _attributeName) {\n        const matches = this.matchElement(element);\n        const matchedBefore = this.matchesByElement.has(this.selector, element);\n        if (!matches && matchedBefore) {\n            this.selectorUnmatched(element);\n        }\n    }\n    selectorMatched(element) {\n        if (this.delegate.selectorMatched) {\n            this.delegate.selectorMatched(element, this.selector, this.details);\n            this.matchesByElement.add(this.selector, element);\n        }\n    }\n    selectorUnmatched(element) {\n        this.delegate.selectorUnmatched(element, this.selector, this.details);\n        this.matchesByElement.delete(this.selector, element);\n    }\n}\n\nclass StringMapObserver {\n    constructor(element, delegate) {\n        this.element = element;\n        this.delegate = delegate;\n        this.started = false;\n        this.stringMap = new Map();\n        this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.mutationObserver.observe(this.element, { attributes: true, attributeOldValue: true });\n            this.refresh();\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.mutationObserver.takeRecords();\n            this.mutationObserver.disconnect();\n            this.started = false;\n        }\n    }\n    refresh() {\n        if (this.started) {\n            for (const attributeName of this.knownAttributeNames) {\n                this.refreshAttribute(attributeName, null);\n            }\n        }\n    }\n    processMutations(mutations) {\n        if (this.started) {\n            for (const mutation of mutations) {\n                this.processMutation(mutation);\n            }\n        }\n    }\n    processMutation(mutation) {\n        const attributeName = mutation.attributeName;\n        if (attributeName) {\n            this.refreshAttribute(attributeName, mutation.oldValue);\n        }\n    }\n    refreshAttribute(attributeName, oldValue) {\n        const key = this.delegate.getStringMapKeyForAttribute(attributeName);\n        if (key != null) {\n            if (!this.stringMap.has(attributeName)) {\n                this.stringMapKeyAdded(key, attributeName);\n            }\n            const value = this.element.getAttribute(attributeName);\n            if (this.stringMap.get(attributeName) != value) {\n                this.stringMapValueChanged(value, key, oldValue);\n            }\n            if (value == null) {\n                const oldValue = this.stringMap.get(attributeName);\n                this.stringMap.delete(attributeName);\n                if (oldValue)\n                    this.stringMapKeyRemoved(key, attributeName, oldValue);\n            }\n            else {\n                this.stringMap.set(attributeName, value);\n            }\n        }\n    }\n    stringMapKeyAdded(key, attributeName) {\n        if (this.delegate.stringMapKeyAdded) {\n            this.delegate.stringMapKeyAdded(key, attributeName);\n        }\n    }\n    stringMapValueChanged(value, key, oldValue) {\n        if (this.delegate.stringMapValueChanged) {\n            this.delegate.stringMapValueChanged(value, key, oldValue);\n        }\n    }\n    stringMapKeyRemoved(key, attributeName, oldValue) {\n        if (this.delegate.stringMapKeyRemoved) {\n            this.delegate.stringMapKeyRemoved(key, attributeName, oldValue);\n        }\n    }\n    get knownAttributeNames() {\n        return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n    }\n    get currentAttributeNames() {\n        return Array.from(this.element.attributes).map((attribute) => attribute.name);\n    }\n    get recordedAttributeNames() {\n        return Array.from(this.stringMap.keys());\n    }\n}\n\nclass TokenListObserver {\n    constructor(element, attributeName, delegate) {\n        this.attributeObserver = new AttributeObserver(element, attributeName, this);\n        this.delegate = delegate;\n        this.tokensByElement = new Multimap();\n    }\n    get started() {\n        return this.attributeObserver.started;\n    }\n    start() {\n        this.attributeObserver.start();\n    }\n    pause(callback) {\n        this.attributeObserver.pause(callback);\n    }\n    stop() {\n        this.attributeObserver.stop();\n    }\n    refresh() {\n        this.attributeObserver.refresh();\n    }\n    get element() {\n        return this.attributeObserver.element;\n    }\n    get attributeName() {\n        return this.attributeObserver.attributeName;\n    }\n    elementMatchedAttribute(element) {\n        this.tokensMatched(this.readTokensForElement(element));\n    }\n    elementAttributeValueChanged(element) {\n        const [unmatchedTokens, matchedTokens] = this.refreshTokensForElement(element);\n        this.tokensUnmatched(unmatchedTokens);\n        this.tokensMatched(matchedTokens);\n    }\n    elementUnmatchedAttribute(element) {\n        this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n    }\n    tokensMatched(tokens) {\n        tokens.forEach((token) => this.tokenMatched(token));\n    }\n    tokensUnmatched(tokens) {\n        tokens.forEach((token) => this.tokenUnmatched(token));\n    }\n    tokenMatched(token) {\n        this.delegate.tokenMatched(token);\n        this.tokensByElement.add(token.element, token);\n    }\n    tokenUnmatched(token) {\n        this.delegate.tokenUnmatched(token);\n        this.tokensByElement.delete(token.element, token);\n    }\n    refreshTokensForElement(element) {\n        const previousTokens = this.tokensByElement.getValuesForKey(element);\n        const currentTokens = this.readTokensForElement(element);\n        const firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(([previousToken, currentToken]) => !tokensAreEqual(previousToken, currentToken));\n        if (firstDifferingIndex == -1) {\n            return [[], []];\n        }\n        else {\n            return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n        }\n    }\n    readTokensForElement(element) {\n        const attributeName = this.attributeName;\n        const tokenString = element.getAttribute(attributeName) || \"\";\n        return parseTokenString(tokenString, element, attributeName);\n    }\n}\nfunction parseTokenString(tokenString, element, attributeName) {\n    return tokenString\n        .trim()\n        .split(/\\s+/)\n        .filter((content) => content.length)\n        .map((content, index) => ({ element, attributeName, content, index }));\n}\nfunction zip(left, right) {\n    const length = Math.max(left.length, right.length);\n    return Array.from({ length }, (_, index) => [left[index], right[index]]);\n}\nfunction tokensAreEqual(left, right) {\n    return left && right && left.index == right.index && left.content == right.content;\n}\n\nclass ValueListObserver {\n    constructor(element, attributeName, delegate) {\n        this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n        this.delegate = delegate;\n        this.parseResultsByToken = new WeakMap();\n        this.valuesByTokenByElement = new WeakMap();\n    }\n    get started() {\n        return this.tokenListObserver.started;\n    }\n    start() {\n        this.tokenListObserver.start();\n    }\n    stop() {\n        this.tokenListObserver.stop();\n    }\n    refresh() {\n        this.tokenListObserver.refresh();\n    }\n    get element() {\n        return this.tokenListObserver.element;\n    }\n    get attributeName() {\n        return this.tokenListObserver.attributeName;\n    }\n    tokenMatched(token) {\n        const { element } = token;\n        const { value } = this.fetchParseResultForToken(token);\n        if (value) {\n            this.fetchValuesByTokenForElement(element).set(token, value);\n            this.delegate.elementMatchedValue(element, value);\n        }\n    }\n    tokenUnmatched(token) {\n        const { element } = token;\n        const { value } = this.fetchParseResultForToken(token);\n        if (value) {\n            this.fetchValuesByTokenForElement(element).delete(token);\n            this.delegate.elementUnmatchedValue(element, value);\n        }\n    }\n    fetchParseResultForToken(token) {\n        let parseResult = this.parseResultsByToken.get(token);\n        if (!parseResult) {\n            parseResult = this.parseToken(token);\n            this.parseResultsByToken.set(token, parseResult);\n        }\n        return parseResult;\n    }\n    fetchValuesByTokenForElement(element) {\n        let valuesByToken = this.valuesByTokenByElement.get(element);\n        if (!valuesByToken) {\n            valuesByToken = new Map();\n            this.valuesByTokenByElement.set(element, valuesByToken);\n        }\n        return valuesByToken;\n    }\n    parseToken(token) {\n        try {\n            const value = this.delegate.parseValueForToken(token);\n            return { value };\n        }\n        catch (error) {\n            return { error };\n        }\n    }\n}\n\nclass BindingObserver {\n    constructor(context, delegate) {\n        this.context = context;\n        this.delegate = delegate;\n        this.bindingsByAction = new Map();\n    }\n    start() {\n        if (!this.valueListObserver) {\n            this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n            this.valueListObserver.start();\n        }\n    }\n    stop() {\n        if (this.valueListObserver) {\n            this.valueListObserver.stop();\n            delete this.valueListObserver;\n            this.disconnectAllActions();\n        }\n    }\n    get element() {\n        return this.context.element;\n    }\n    get identifier() {\n        return this.context.identifier;\n    }\n    get actionAttribute() {\n        return this.schema.actionAttribute;\n    }\n    get schema() {\n        return this.context.schema;\n    }\n    get bindings() {\n        return Array.from(this.bindingsByAction.values());\n    }\n    connectAction(action) {\n        const binding = new Binding(this.context, action);\n        this.bindingsByAction.set(action, binding);\n        this.delegate.bindingConnected(binding);\n    }\n    disconnectAction(action) {\n        const binding = this.bindingsByAction.get(action);\n        if (binding) {\n            this.bindingsByAction.delete(action);\n            this.delegate.bindingDisconnected(binding);\n        }\n    }\n    disconnectAllActions() {\n        this.bindings.forEach((binding) => this.delegate.bindingDisconnected(binding, true));\n        this.bindingsByAction.clear();\n    }\n    parseValueForToken(token) {\n        const action = Action.forToken(token, this.schema);\n        if (action.identifier == this.identifier) {\n            return action;\n        }\n    }\n    elementMatchedValue(element, action) {\n        this.connectAction(action);\n    }\n    elementUnmatchedValue(element, action) {\n        this.disconnectAction(action);\n    }\n}\n\nclass ValueObserver {\n    constructor(context, receiver) {\n        this.context = context;\n        this.receiver = receiver;\n        this.stringMapObserver = new StringMapObserver(this.element, this);\n        this.valueDescriptorMap = this.controller.valueDescriptorMap;\n    }\n    start() {\n        this.stringMapObserver.start();\n        this.invokeChangedCallbacksForDefaultValues();\n    }\n    stop() {\n        this.stringMapObserver.stop();\n    }\n    get element() {\n        return this.context.element;\n    }\n    get controller() {\n        return this.context.controller;\n    }\n    getStringMapKeyForAttribute(attributeName) {\n        if (attributeName in this.valueDescriptorMap) {\n            return this.valueDescriptorMap[attributeName].name;\n        }\n    }\n    stringMapKeyAdded(key, attributeName) {\n        const descriptor = this.valueDescriptorMap[attributeName];\n        if (!this.hasValue(key)) {\n            this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue));\n        }\n    }\n    stringMapValueChanged(value, name, oldValue) {\n        const descriptor = this.valueDescriptorNameMap[name];\n        if (value === null)\n            return;\n        if (oldValue === null) {\n            oldValue = descriptor.writer(descriptor.defaultValue);\n        }\n        this.invokeChangedCallback(name, value, oldValue);\n    }\n    stringMapKeyRemoved(key, attributeName, oldValue) {\n        const descriptor = this.valueDescriptorNameMap[key];\n        if (this.hasValue(key)) {\n            this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), oldValue);\n        }\n        else {\n            this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue);\n        }\n    }\n    invokeChangedCallbacksForDefaultValues() {\n        for (const { key, name, defaultValue, writer } of this.valueDescriptors) {\n            if (defaultValue != undefined && !this.controller.data.has(key)) {\n                this.invokeChangedCallback(name, writer(defaultValue), undefined);\n            }\n        }\n    }\n    invokeChangedCallback(name, rawValue, rawOldValue) {\n        const changedMethodName = `${name}Changed`;\n        const changedMethod = this.receiver[changedMethodName];\n        if (typeof changedMethod == \"function\") {\n            const descriptor = this.valueDescriptorNameMap[name];\n            try {\n                const value = descriptor.reader(rawValue);\n                let oldValue = rawOldValue;\n                if (rawOldValue) {\n                    oldValue = descriptor.reader(rawOldValue);\n                }\n                changedMethod.call(this.receiver, value, oldValue);\n            }\n            catch (error) {\n                if (error instanceof TypeError) {\n                    error.message = `Stimulus Value \"${this.context.identifier}.${descriptor.name}\" - ${error.message}`;\n                }\n                throw error;\n            }\n        }\n    }\n    get valueDescriptors() {\n        const { valueDescriptorMap } = this;\n        return Object.keys(valueDescriptorMap).map((key) => valueDescriptorMap[key]);\n    }\n    get valueDescriptorNameMap() {\n        const descriptors = {};\n        Object.keys(this.valueDescriptorMap).forEach((key) => {\n            const descriptor = this.valueDescriptorMap[key];\n            descriptors[descriptor.name] = descriptor;\n        });\n        return descriptors;\n    }\n    hasValue(attributeName) {\n        const descriptor = this.valueDescriptorNameMap[attributeName];\n        const hasMethodName = `has${capitalize(descriptor.name)}`;\n        return this.receiver[hasMethodName];\n    }\n}\n\nclass TargetObserver {\n    constructor(context, delegate) {\n        this.context = context;\n        this.delegate = delegate;\n        this.targetsByName = new Multimap();\n    }\n    start() {\n        if (!this.tokenListObserver) {\n            this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this);\n            this.tokenListObserver.start();\n        }\n    }\n    stop() {\n        if (this.tokenListObserver) {\n            this.disconnectAllTargets();\n            this.tokenListObserver.stop();\n            delete this.tokenListObserver;\n        }\n    }\n    tokenMatched({ element, content: name }) {\n        if (this.scope.containsElement(element)) {\n            this.connectTarget(element, name);\n        }\n    }\n    tokenUnmatched({ element, content: name }) {\n        this.disconnectTarget(element, name);\n    }\n    connectTarget(element, name) {\n        var _a;\n        if (!this.targetsByName.has(name, element)) {\n            this.targetsByName.add(name, element);\n            (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetConnected(element, name));\n        }\n    }\n    disconnectTarget(element, name) {\n        var _a;\n        if (this.targetsByName.has(name, element)) {\n            this.targetsByName.delete(name, element);\n            (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetDisconnected(element, name));\n        }\n    }\n    disconnectAllTargets() {\n        for (const name of this.targetsByName.keys) {\n            for (const element of this.targetsByName.getValuesForKey(name)) {\n                this.disconnectTarget(element, name);\n            }\n        }\n    }\n    get attributeName() {\n        return `data-${this.context.identifier}-target`;\n    }\n    get element() {\n        return this.context.element;\n    }\n    get scope() {\n        return this.context.scope;\n    }\n}\n\nfunction readInheritableStaticArrayValues(constructor, propertyName) {\n    const ancestors = getAncestorsForConstructor(constructor);\n    return Array.from(ancestors.reduce((values, constructor) => {\n        getOwnStaticArrayValues(constructor, propertyName).forEach((name) => values.add(name));\n        return values;\n    }, new Set()));\n}\nfunction readInheritableStaticObjectPairs(constructor, propertyName) {\n    const ancestors = getAncestorsForConstructor(constructor);\n    return ancestors.reduce((pairs, constructor) => {\n        pairs.push(...getOwnStaticObjectPairs(constructor, propertyName));\n        return pairs;\n    }, []);\n}\nfunction getAncestorsForConstructor(constructor) {\n    const ancestors = [];\n    while (constructor) {\n        ancestors.push(constructor);\n        constructor = Object.getPrototypeOf(constructor);\n    }\n    return ancestors.reverse();\n}\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n    const definition = constructor[propertyName];\n    return Array.isArray(definition) ? definition : [];\n}\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n    const definition = constructor[propertyName];\n    return definition ? Object.keys(definition).map((key) => [key, definition[key]]) : [];\n}\n\nclass OutletObserver {\n    constructor(context, delegate) {\n        this.context = context;\n        this.delegate = delegate;\n        this.outletsByName = new Multimap();\n        this.outletElementsByName = new Multimap();\n        this.selectorObserverMap = new Map();\n    }\n    start() {\n        if (this.selectorObserverMap.size === 0) {\n            this.outletDefinitions.forEach((outletName) => {\n                const selector = this.selector(outletName);\n                const details = { outletName };\n                if (selector) {\n                    this.selectorObserverMap.set(outletName, new SelectorObserver(document.body, selector, this, details));\n                }\n            });\n            this.selectorObserverMap.forEach((observer) => observer.start());\n        }\n        this.dependentContexts.forEach((context) => context.refresh());\n    }\n    stop() {\n        if (this.selectorObserverMap.size > 0) {\n            this.disconnectAllOutlets();\n            this.selectorObserverMap.forEach((observer) => observer.stop());\n            this.selectorObserverMap.clear();\n        }\n    }\n    refresh() {\n        this.selectorObserverMap.forEach((observer) => observer.refresh());\n    }\n    selectorMatched(element, _selector, { outletName }) {\n        const outlet = this.getOutlet(element, outletName);\n        if (outlet) {\n            this.connectOutlet(outlet, element, outletName);\n        }\n    }\n    selectorUnmatched(element, _selector, { outletName }) {\n        const outlet = this.getOutletFromMap(element, outletName);\n        if (outlet) {\n            this.disconnectOutlet(outlet, element, outletName);\n        }\n    }\n    selectorMatchElement(element, { outletName }) {\n        return (this.hasOutlet(element, outletName) &&\n            element.matches(`[${this.context.application.schema.controllerAttribute}~=${outletName}]`));\n    }\n    connectOutlet(outlet, element, outletName) {\n        var _a;\n        if (!this.outletElementsByName.has(outletName, element)) {\n            this.outletsByName.add(outletName, outlet);\n            this.outletElementsByName.add(outletName, element);\n            (_a = this.selectorObserverMap.get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletConnected(outlet, element, outletName));\n        }\n    }\n    disconnectOutlet(outlet, element, outletName) {\n        var _a;\n        if (this.outletElementsByName.has(outletName, element)) {\n            this.outletsByName.delete(outletName, outlet);\n            this.outletElementsByName.delete(outletName, element);\n            (_a = this.selectorObserverMap\n                .get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletDisconnected(outlet, element, outletName));\n        }\n    }\n    disconnectAllOutlets() {\n        for (const outletName of this.outletElementsByName.keys) {\n            for (const element of this.outletElementsByName.getValuesForKey(outletName)) {\n                for (const outlet of this.outletsByName.getValuesForKey(outletName)) {\n                    this.disconnectOutlet(outlet, element, outletName);\n                }\n            }\n        }\n    }\n    selector(outletName) {\n        return this.scope.outlets.getSelectorForOutletName(outletName);\n    }\n    get outletDependencies() {\n        const dependencies = new Multimap();\n        this.router.modules.forEach((module) => {\n            const constructor = module.definition.controllerConstructor;\n            const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n            outlets.forEach((outlet) => dependencies.add(outlet, module.identifier));\n        });\n        return dependencies;\n    }\n    get outletDefinitions() {\n        return this.outletDependencies.getKeysForValue(this.identifier);\n    }\n    get dependentControllerIdentifiers() {\n        return this.outletDependencies.getValuesForKey(this.identifier);\n    }\n    get dependentContexts() {\n        const identifiers = this.dependentControllerIdentifiers;\n        return this.router.contexts.filter((context) => identifiers.includes(context.identifier));\n    }\n    hasOutlet(element, outletName) {\n        return !!this.getOutlet(element, outletName) || !!this.getOutletFromMap(element, outletName);\n    }\n    getOutlet(element, outletName) {\n        return this.application.getControllerForElementAndIdentifier(element, outletName);\n    }\n    getOutletFromMap(element, outletName) {\n        return this.outletsByName.getValuesForKey(outletName).find((outlet) => outlet.element === element);\n    }\n    get scope() {\n        return this.context.scope;\n    }\n    get identifier() {\n        return this.context.identifier;\n    }\n    get application() {\n        return this.context.application;\n    }\n    get router() {\n        return this.application.router;\n    }\n}\n\nclass Context {\n    constructor(module, scope) {\n        this.logDebugActivity = (functionName, detail = {}) => {\n            const { identifier, controller, element } = this;\n            detail = Object.assign({ identifier, controller, element }, detail);\n            this.application.logDebugActivity(this.identifier, functionName, detail);\n        };\n        this.module = module;\n        this.scope = scope;\n        this.controller = new module.controllerConstructor(this);\n        this.bindingObserver = new BindingObserver(this, this.dispatcher);\n        this.valueObserver = new ValueObserver(this, this.controller);\n        this.targetObserver = new TargetObserver(this, this);\n        this.outletObserver = new OutletObserver(this, this);\n        try {\n            this.controller.initialize();\n            this.logDebugActivity(\"initialize\");\n        }\n        catch (error) {\n            this.handleError(error, \"initializing controller\");\n        }\n    }\n    connect() {\n        this.bindingObserver.start();\n        this.valueObserver.start();\n        this.targetObserver.start();\n        this.outletObserver.start();\n        try {\n            this.controller.connect();\n            this.logDebugActivity(\"connect\");\n        }\n        catch (error) {\n            this.handleError(error, \"connecting controller\");\n        }\n    }\n    refresh() {\n        this.outletObserver.refresh();\n    }\n    disconnect() {\n        try {\n            this.controller.disconnect();\n            this.logDebugActivity(\"disconnect\");\n        }\n        catch (error) {\n            this.handleError(error, \"disconnecting controller\");\n        }\n        this.outletObserver.stop();\n        this.targetObserver.stop();\n        this.valueObserver.stop();\n        this.bindingObserver.stop();\n    }\n    get application() {\n        return this.module.application;\n    }\n    get identifier() {\n        return this.module.identifier;\n    }\n    get schema() {\n        return this.application.schema;\n    }\n    get dispatcher() {\n        return this.application.dispatcher;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get parentElement() {\n        return this.element.parentElement;\n    }\n    handleError(error, message, detail = {}) {\n        const { identifier, controller, element } = this;\n        detail = Object.assign({ identifier, controller, element }, detail);\n        this.application.handleError(error, `Error ${message}`, detail);\n    }\n    targetConnected(element, name) {\n        this.invokeControllerMethod(`${name}TargetConnected`, element);\n    }\n    targetDisconnected(element, name) {\n        this.invokeControllerMethod(`${name}TargetDisconnected`, element);\n    }\n    outletConnected(outlet, element, name) {\n        this.invokeControllerMethod(`${namespaceCamelize(name)}OutletConnected`, outlet, element);\n    }\n    outletDisconnected(outlet, element, name) {\n        this.invokeControllerMethod(`${namespaceCamelize(name)}OutletDisconnected`, outlet, element);\n    }\n    invokeControllerMethod(methodName, ...args) {\n        const controller = this.controller;\n        if (typeof controller[methodName] == \"function\") {\n            controller[methodName](...args);\n        }\n    }\n}\n\nfunction bless(constructor) {\n    return shadow(constructor, getBlessedProperties(constructor));\n}\nfunction shadow(constructor, properties) {\n    const shadowConstructor = extend(constructor);\n    const shadowProperties = getShadowProperties(constructor.prototype, properties);\n    Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n    return shadowConstructor;\n}\nfunction getBlessedProperties(constructor) {\n    const blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n    return blessings.reduce((blessedProperties, blessing) => {\n        const properties = blessing(constructor);\n        for (const key in properties) {\n            const descriptor = blessedProperties[key] || {};\n            blessedProperties[key] = Object.assign(descriptor, properties[key]);\n        }\n        return blessedProperties;\n    }, {});\n}\nfunction getShadowProperties(prototype, properties) {\n    return getOwnKeys(properties).reduce((shadowProperties, key) => {\n        const descriptor = getShadowedDescriptor(prototype, properties, key);\n        if (descriptor) {\n            Object.assign(shadowProperties, { [key]: descriptor });\n        }\n        return shadowProperties;\n    }, {});\n}\nfunction getShadowedDescriptor(prototype, properties, key) {\n    const shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n    const shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n    if (!shadowedByValue) {\n        const descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n        if (shadowingDescriptor) {\n            descriptor.get = shadowingDescriptor.get || descriptor.get;\n            descriptor.set = shadowingDescriptor.set || descriptor.set;\n        }\n        return descriptor;\n    }\n}\nconst getOwnKeys = (() => {\n    if (typeof Object.getOwnPropertySymbols == \"function\") {\n        return (object) => [...Object.getOwnPropertyNames(object), ...Object.getOwnPropertySymbols(object)];\n    }\n    else {\n        return Object.getOwnPropertyNames;\n    }\n})();\nconst extend = (() => {\n    function extendWithReflect(constructor) {\n        function extended() {\n            return Reflect.construct(constructor, arguments, new.target);\n        }\n        extended.prototype = Object.create(constructor.prototype, {\n            constructor: { value: extended },\n        });\n        Reflect.setPrototypeOf(extended, constructor);\n        return extended;\n    }\n    function testReflectExtension() {\n        const a = function () {\n            this.a.call(this);\n        };\n        const b = extendWithReflect(a);\n        b.prototype.a = function () { };\n        return new b();\n    }\n    try {\n        testReflectExtension();\n        return extendWithReflect;\n    }\n    catch (error) {\n        return (constructor) => class extended extends constructor {\n        };\n    }\n})();\n\nfunction blessDefinition(definition) {\n    return {\n        identifier: definition.identifier,\n        controllerConstructor: bless(definition.controllerConstructor),\n    };\n}\n\nclass Module {\n    constructor(application, definition) {\n        this.application = application;\n        this.definition = blessDefinition(definition);\n        this.contextsByScope = new WeakMap();\n        this.connectedContexts = new Set();\n    }\n    get identifier() {\n        return this.definition.identifier;\n    }\n    get controllerConstructor() {\n        return this.definition.controllerConstructor;\n    }\n    get contexts() {\n        return Array.from(this.connectedContexts);\n    }\n    connectContextForScope(scope) {\n        const context = this.fetchContextForScope(scope);\n        this.connectedContexts.add(context);\n        context.connect();\n    }\n    disconnectContextForScope(scope) {\n        const context = this.contextsByScope.get(scope);\n        if (context) {\n            this.connectedContexts.delete(context);\n            context.disconnect();\n        }\n    }\n    fetchContextForScope(scope) {\n        let context = this.contextsByScope.get(scope);\n        if (!context) {\n            context = new Context(this, scope);\n            this.contextsByScope.set(scope, context);\n        }\n        return context;\n    }\n}\n\nclass ClassMap {\n    constructor(scope) {\n        this.scope = scope;\n    }\n    has(name) {\n        return this.data.has(this.getDataKey(name));\n    }\n    get(name) {\n        return this.getAll(name)[0];\n    }\n    getAll(name) {\n        const tokenString = this.data.get(this.getDataKey(name)) || \"\";\n        return tokenize(tokenString);\n    }\n    getAttributeName(name) {\n        return this.data.getAttributeNameForKey(this.getDataKey(name));\n    }\n    getDataKey(name) {\n        return `${name}-class`;\n    }\n    get data() {\n        return this.scope.data;\n    }\n}\n\nclass DataMap {\n    constructor(scope) {\n        this.scope = scope;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get(key) {\n        const name = this.getAttributeNameForKey(key);\n        return this.element.getAttribute(name);\n    }\n    set(key, value) {\n        const name = this.getAttributeNameForKey(key);\n        this.element.setAttribute(name, value);\n        return this.get(key);\n    }\n    has(key) {\n        const name = this.getAttributeNameForKey(key);\n        return this.element.hasAttribute(name);\n    }\n    delete(key) {\n        if (this.has(key)) {\n            const name = this.getAttributeNameForKey(key);\n            this.element.removeAttribute(name);\n            return true;\n        }\n        else {\n            return false;\n        }\n    }\n    getAttributeNameForKey(key) {\n        return `data-${this.identifier}-${dasherize(key)}`;\n    }\n}\n\nclass Guide {\n    constructor(logger) {\n        this.warnedKeysByObject = new WeakMap();\n        this.logger = logger;\n    }\n    warn(object, key, message) {\n        let warnedKeys = this.warnedKeysByObject.get(object);\n        if (!warnedKeys) {\n            warnedKeys = new Set();\n            this.warnedKeysByObject.set(object, warnedKeys);\n        }\n        if (!warnedKeys.has(key)) {\n            warnedKeys.add(key);\n            this.logger.warn(message, object);\n        }\n    }\n}\n\nfunction attributeValueContainsToken(attributeName, token) {\n    return `[${attributeName}~=\"${token}\"]`;\n}\n\nclass TargetSet {\n    constructor(scope) {\n        this.scope = scope;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get schema() {\n        return this.scope.schema;\n    }\n    has(targetName) {\n        return this.find(targetName) != null;\n    }\n    find(...targetNames) {\n        return targetNames.reduce((target, targetName) => target || this.findTarget(targetName) || this.findLegacyTarget(targetName), undefined);\n    }\n    findAll(...targetNames) {\n        return targetNames.reduce((targets, targetName) => [\n            ...targets,\n            ...this.findAllTargets(targetName),\n            ...this.findAllLegacyTargets(targetName),\n        ], []);\n    }\n    findTarget(targetName) {\n        const selector = this.getSelectorForTargetName(targetName);\n        return this.scope.findElement(selector);\n    }\n    findAllTargets(targetName) {\n        const selector = this.getSelectorForTargetName(targetName);\n        return this.scope.findAllElements(selector);\n    }\n    getSelectorForTargetName(targetName) {\n        const attributeName = this.schema.targetAttributeForScope(this.identifier);\n        return attributeValueContainsToken(attributeName, targetName);\n    }\n    findLegacyTarget(targetName) {\n        const selector = this.getLegacySelectorForTargetName(targetName);\n        return this.deprecate(this.scope.findElement(selector), targetName);\n    }\n    findAllLegacyTargets(targetName) {\n        const selector = this.getLegacySelectorForTargetName(targetName);\n        return this.scope.findAllElements(selector).map((element) => this.deprecate(element, targetName));\n    }\n    getLegacySelectorForTargetName(targetName) {\n        const targetDescriptor = `${this.identifier}.${targetName}`;\n        return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n    }\n    deprecate(element, targetName) {\n        if (element) {\n            const { identifier } = this;\n            const attributeName = this.schema.targetAttribute;\n            const revisedAttributeName = this.schema.targetAttributeForScope(identifier);\n            this.guide.warn(element, `target:${targetName}`, `Please replace ${attributeName}=\"${identifier}.${targetName}\" with ${revisedAttributeName}=\"${targetName}\". ` +\n                `The ${attributeName} attribute is deprecated and will be removed in a future version of Stimulus.`);\n        }\n        return element;\n    }\n    get guide() {\n        return this.scope.guide;\n    }\n}\n\nclass OutletSet {\n    constructor(scope, controllerElement) {\n        this.scope = scope;\n        this.controllerElement = controllerElement;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get schema() {\n        return this.scope.schema;\n    }\n    has(outletName) {\n        return this.find(outletName) != null;\n    }\n    find(...outletNames) {\n        return outletNames.reduce((outlet, outletName) => outlet || this.findOutlet(outletName), undefined);\n    }\n    findAll(...outletNames) {\n        return outletNames.reduce((outlets, outletName) => [...outlets, ...this.findAllOutlets(outletName)], []);\n    }\n    getSelectorForOutletName(outletName) {\n        const attributeName = this.schema.outletAttributeForScope(this.identifier, outletName);\n        return this.controllerElement.getAttribute(attributeName);\n    }\n    findOutlet(outletName) {\n        const selector = this.getSelectorForOutletName(outletName);\n        if (selector)\n            return this.findElement(selector, outletName);\n    }\n    findAllOutlets(outletName) {\n        const selector = this.getSelectorForOutletName(outletName);\n        return selector ? this.findAllElements(selector, outletName) : [];\n    }\n    findElement(selector, outletName) {\n        const elements = this.scope.queryElements(selector);\n        return elements.filter((element) => this.matchesElement(element, selector, outletName))[0];\n    }\n    findAllElements(selector, outletName) {\n        const elements = this.scope.queryElements(selector);\n        return elements.filter((element) => this.matchesElement(element, selector, outletName));\n    }\n    matchesElement(element, selector, outletName) {\n        const controllerAttribute = element.getAttribute(this.scope.schema.controllerAttribute) || \"\";\n        return element.matches(selector) && controllerAttribute.split(\" \").includes(outletName);\n    }\n}\n\nclass Scope {\n    constructor(schema, element, identifier, logger) {\n        this.targets = new TargetSet(this);\n        this.classes = new ClassMap(this);\n        this.data = new DataMap(this);\n        this.containsElement = (element) => {\n            return element.closest(this.controllerSelector) === this.element;\n        };\n        this.schema = schema;\n        this.element = element;\n        this.identifier = identifier;\n        this.guide = new Guide(logger);\n        this.outlets = new OutletSet(this.documentScope, element);\n    }\n    findElement(selector) {\n        return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);\n    }\n    findAllElements(selector) {\n        return [\n            ...(this.element.matches(selector) ? [this.element] : []),\n            ...this.queryElements(selector).filter(this.containsElement),\n        ];\n    }\n    queryElements(selector) {\n        return Array.from(this.element.querySelectorAll(selector));\n    }\n    get controllerSelector() {\n        return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n    }\n    get isDocumentScope() {\n        return this.element === document.documentElement;\n    }\n    get documentScope() {\n        return this.isDocumentScope\n            ? this\n            : new Scope(this.schema, document.documentElement, this.identifier, this.guide.logger);\n    }\n}\n\nclass ScopeObserver {\n    constructor(element, schema, delegate) {\n        this.element = element;\n        this.schema = schema;\n        this.delegate = delegate;\n        this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n        this.scopesByIdentifierByElement = new WeakMap();\n        this.scopeReferenceCounts = new WeakMap();\n    }\n    start() {\n        this.valueListObserver.start();\n    }\n    stop() {\n        this.valueListObserver.stop();\n    }\n    get controllerAttribute() {\n        return this.schema.controllerAttribute;\n    }\n    parseValueForToken(token) {\n        const { element, content: identifier } = token;\n        const scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n        let scope = scopesByIdentifier.get(identifier);\n        if (!scope) {\n            scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n            scopesByIdentifier.set(identifier, scope);\n        }\n        return scope;\n    }\n    elementMatchedValue(element, value) {\n        const referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n        this.scopeReferenceCounts.set(value, referenceCount);\n        if (referenceCount == 1) {\n            this.delegate.scopeConnected(value);\n        }\n    }\n    elementUnmatchedValue(element, value) {\n        const referenceCount = this.scopeReferenceCounts.get(value);\n        if (referenceCount) {\n            this.scopeReferenceCounts.set(value, referenceCount - 1);\n            if (referenceCount == 1) {\n                this.delegate.scopeDisconnected(value);\n            }\n        }\n    }\n    fetchScopesByIdentifierForElement(element) {\n        let scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n        if (!scopesByIdentifier) {\n            scopesByIdentifier = new Map();\n            this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n        }\n        return scopesByIdentifier;\n    }\n}\n\nclass Router {\n    constructor(application) {\n        this.application = application;\n        this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n        this.scopesByIdentifier = new Multimap();\n        this.modulesByIdentifier = new Map();\n    }\n    get element() {\n        return this.application.element;\n    }\n    get schema() {\n        return this.application.schema;\n    }\n    get logger() {\n        return this.application.logger;\n    }\n    get controllerAttribute() {\n        return this.schema.controllerAttribute;\n    }\n    get modules() {\n        return Array.from(this.modulesByIdentifier.values());\n    }\n    get contexts() {\n        return this.modules.reduce((contexts, module) => contexts.concat(module.contexts), []);\n    }\n    start() {\n        this.scopeObserver.start();\n    }\n    stop() {\n        this.scopeObserver.stop();\n    }\n    loadDefinition(definition) {\n        this.unloadIdentifier(definition.identifier);\n        const module = new Module(this.application, definition);\n        this.connectModule(module);\n        const afterLoad = definition.controllerConstructor.afterLoad;\n        if (afterLoad) {\n            afterLoad(definition.identifier, this.application);\n        }\n    }\n    unloadIdentifier(identifier) {\n        const module = this.modulesByIdentifier.get(identifier);\n        if (module) {\n            this.disconnectModule(module);\n        }\n    }\n    getContextForElementAndIdentifier(element, identifier) {\n        const module = this.modulesByIdentifier.get(identifier);\n        if (module) {\n            return module.contexts.find((context) => context.element == element);\n        }\n    }\n    handleError(error, message, detail) {\n        this.application.handleError(error, message, detail);\n    }\n    createScopeForElementAndIdentifier(element, identifier) {\n        return new Scope(this.schema, element, identifier, this.logger);\n    }\n    scopeConnected(scope) {\n        this.scopesByIdentifier.add(scope.identifier, scope);\n        const module = this.modulesByIdentifier.get(scope.identifier);\n        if (module) {\n            module.connectContextForScope(scope);\n        }\n    }\n    scopeDisconnected(scope) {\n        this.scopesByIdentifier.delete(scope.identifier, scope);\n        const module = this.modulesByIdentifier.get(scope.identifier);\n        if (module) {\n            module.disconnectContextForScope(scope);\n        }\n    }\n    connectModule(module) {\n        this.modulesByIdentifier.set(module.identifier, module);\n        const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n        scopes.forEach((scope) => module.connectContextForScope(scope));\n    }\n    disconnectModule(module) {\n        this.modulesByIdentifier.delete(module.identifier);\n        const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n        scopes.forEach((scope) => module.disconnectContextForScope(scope));\n    }\n}\n\nconst defaultSchema = {\n    controllerAttribute: \"data-controller\",\n    actionAttribute: \"data-action\",\n    targetAttribute: \"data-target\",\n    targetAttributeForScope: (identifier) => `data-${identifier}-target`,\n    outletAttributeForScope: (identifier, outlet) => `data-${identifier}-${outlet}-outlet`,\n    keyMappings: Object.assign(Object.assign({ enter: \"Enter\", tab: \"Tab\", esc: \"Escape\", space: \" \", up: \"ArrowUp\", down: \"ArrowDown\", left: \"ArrowLeft\", right: \"ArrowRight\", home: \"Home\", end: \"End\" }, objectFromEntries(\"abcdefghijklmnopqrstuvwxyz\".split(\"\").map((c) => [c, c]))), objectFromEntries(\"0123456789\".split(\"\").map((n) => [n, n]))),\n};\nfunction objectFromEntries(array) {\n    return array.reduce((memo, [k, v]) => (Object.assign(Object.assign({}, memo), { [k]: v })), {});\n}\n\nclass Application {\n    constructor(element = document.documentElement, schema = defaultSchema) {\n        this.logger = console;\n        this.debug = false;\n        this.logDebugActivity = (identifier, functionName, detail = {}) => {\n            if (this.debug) {\n                this.logFormattedMessage(identifier, functionName, detail);\n            }\n        };\n        this.element = element;\n        this.schema = schema;\n        this.dispatcher = new Dispatcher(this);\n        this.router = new Router(this);\n        this.actionDescriptorFilters = Object.assign({}, defaultActionDescriptorFilters);\n    }\n    static start(element, schema) {\n        const application = new this(element, schema);\n        application.start();\n        return application;\n    }\n    async start() {\n        await domReady();\n        this.logDebugActivity(\"application\", \"starting\");\n        this.dispatcher.start();\n        this.router.start();\n        this.logDebugActivity(\"application\", \"start\");\n    }\n    stop() {\n        this.logDebugActivity(\"application\", \"stopping\");\n        this.dispatcher.stop();\n        this.router.stop();\n        this.logDebugActivity(\"application\", \"stop\");\n    }\n    register(identifier, controllerConstructor) {\n        this.load({ identifier, controllerConstructor });\n    }\n    registerActionOption(name, filter) {\n        this.actionDescriptorFilters[name] = filter;\n    }\n    load(head, ...rest) {\n        const definitions = Array.isArray(head) ? head : [head, ...rest];\n        definitions.forEach((definition) => {\n            if (definition.controllerConstructor.shouldLoad) {\n                this.router.loadDefinition(definition);\n            }\n        });\n    }\n    unload(head, ...rest) {\n        const identifiers = Array.isArray(head) ? head : [head, ...rest];\n        identifiers.forEach((identifier) => this.router.unloadIdentifier(identifier));\n    }\n    get controllers() {\n        return this.router.contexts.map((context) => context.controller);\n    }\n    getControllerForElementAndIdentifier(element, identifier) {\n        const context = this.router.getContextForElementAndIdentifier(element, identifier);\n        return context ? context.controller : null;\n    }\n    handleError(error, message, detail) {\n        var _a;\n        this.logger.error(`%s\\n\\n%o\\n\\n%o`, message, error, detail);\n        (_a = window.onerror) === null || _a === void 0 ? void 0 : _a.call(window, message, \"\", 0, 0, error);\n    }\n    logFormattedMessage(identifier, functionName, detail = {}) {\n        detail = Object.assign({ application: this }, detail);\n        this.logger.groupCollapsed(`${identifier} #${functionName}`);\n        this.logger.log(\"details:\", Object.assign({}, detail));\n        this.logger.groupEnd();\n    }\n}\nfunction domReady() {\n    return new Promise((resolve) => {\n        if (document.readyState == \"loading\") {\n            document.addEventListener(\"DOMContentLoaded\", () => resolve());\n        }\n        else {\n            resolve();\n        }\n    });\n}\n\nfunction ClassPropertiesBlessing(constructor) {\n    const classes = readInheritableStaticArrayValues(constructor, \"classes\");\n    return classes.reduce((properties, classDefinition) => {\n        return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n    }, {});\n}\nfunction propertiesForClassDefinition(key) {\n    return {\n        [`${key}Class`]: {\n            get() {\n                const { classes } = this;\n                if (classes.has(key)) {\n                    return classes.get(key);\n                }\n                else {\n                    const attribute = classes.getAttributeName(key);\n                    throw new Error(`Missing attribute \"${attribute}\"`);\n                }\n            },\n        },\n        [`${key}Classes`]: {\n            get() {\n                return this.classes.getAll(key);\n            },\n        },\n        [`has${capitalize(key)}Class`]: {\n            get() {\n                return this.classes.has(key);\n            },\n        },\n    };\n}\n\nfunction OutletPropertiesBlessing(constructor) {\n    const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n    return outlets.reduce((properties, outletDefinition) => {\n        return Object.assign(properties, propertiesForOutletDefinition(outletDefinition));\n    }, {});\n}\nfunction propertiesForOutletDefinition(name) {\n    const camelizedName = namespaceCamelize(name);\n    return {\n        [`${camelizedName}Outlet`]: {\n            get() {\n                const outlet = this.outlets.find(name);\n                if (outlet) {\n                    const outletController = this.application.getControllerForElementAndIdentifier(outlet, name);\n                    if (outletController) {\n                        return outletController;\n                    }\n                    else {\n                        throw new Error(`Missing \"data-controller=${name}\" attribute on outlet element for \"${this.identifier}\" controller`);\n                    }\n                }\n                throw new Error(`Missing outlet element \"${name}\" for \"${this.identifier}\" controller`);\n            },\n        },\n        [`${camelizedName}Outlets`]: {\n            get() {\n                const outlets = this.outlets.findAll(name);\n                if (outlets.length > 0) {\n                    return outlets\n                        .map((outlet) => {\n                        const controller = this.application.getControllerForElementAndIdentifier(outlet, name);\n                        if (controller) {\n                            return controller;\n                        }\n                        else {\n                            console.warn(`The provided outlet element is missing the outlet controller \"${name}\" for \"${this.identifier}\"`, outlet);\n                        }\n                    })\n                        .filter((controller) => controller);\n                }\n                return [];\n            },\n        },\n        [`${camelizedName}OutletElement`]: {\n            get() {\n                const outlet = this.outlets.find(name);\n                if (outlet) {\n                    return outlet;\n                }\n                else {\n                    throw new Error(`Missing outlet element \"${name}\" for \"${this.identifier}\" controller`);\n                }\n            },\n        },\n        [`${camelizedName}OutletElements`]: {\n            get() {\n                return this.outlets.findAll(name);\n            },\n        },\n        [`has${capitalize(camelizedName)}Outlet`]: {\n            get() {\n                return this.outlets.has(name);\n            },\n        },\n    };\n}\n\nfunction TargetPropertiesBlessing(constructor) {\n    const targets = readInheritableStaticArrayValues(constructor, \"targets\");\n    return targets.reduce((properties, targetDefinition) => {\n        return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n    }, {});\n}\nfunction propertiesForTargetDefinition(name) {\n    return {\n        [`${name}Target`]: {\n            get() {\n                const target = this.targets.find(name);\n                if (target) {\n                    return target;\n                }\n                else {\n                    throw new Error(`Missing target element \"${name}\" for \"${this.identifier}\" controller`);\n                }\n            },\n        },\n        [`${name}Targets`]: {\n            get() {\n                return this.targets.findAll(name);\n            },\n        },\n        [`has${capitalize(name)}Target`]: {\n            get() {\n                return this.targets.has(name);\n            },\n        },\n    };\n}\n\nfunction ValuePropertiesBlessing(constructor) {\n    const valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n    const propertyDescriptorMap = {\n        valueDescriptorMap: {\n            get() {\n                return valueDefinitionPairs.reduce((result, valueDefinitionPair) => {\n                    const valueDescriptor = parseValueDefinitionPair(valueDefinitionPair, this.identifier);\n                    const attributeName = this.data.getAttributeNameForKey(valueDescriptor.key);\n                    return Object.assign(result, { [attributeName]: valueDescriptor });\n                }, {});\n            },\n        },\n    };\n    return valueDefinitionPairs.reduce((properties, valueDefinitionPair) => {\n        return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n    }, propertyDescriptorMap);\n}\nfunction propertiesForValueDefinitionPair(valueDefinitionPair, controller) {\n    const definition = parseValueDefinitionPair(valueDefinitionPair, controller);\n    const { key, name, reader: read, writer: write } = definition;\n    return {\n        [name]: {\n            get() {\n                const value = this.data.get(key);\n                if (value !== null) {\n                    return read(value);\n                }\n                else {\n                    return definition.defaultValue;\n                }\n            },\n            set(value) {\n                if (value === undefined) {\n                    this.data.delete(key);\n                }\n                else {\n                    this.data.set(key, write(value));\n                }\n            },\n        },\n        [`has${capitalize(name)}`]: {\n            get() {\n                return this.data.has(key) || definition.hasCustomDefaultValue;\n            },\n        },\n    };\n}\nfunction parseValueDefinitionPair([token, typeDefinition], controller) {\n    return valueDescriptorForTokenAndTypeDefinition({\n        controller,\n        token,\n        typeDefinition,\n    });\n}\nfunction parseValueTypeConstant(constant) {\n    switch (constant) {\n        case Array:\n            return \"array\";\n        case Boolean:\n            return \"boolean\";\n        case Number:\n            return \"number\";\n        case Object:\n            return \"object\";\n        case String:\n            return \"string\";\n    }\n}\nfunction parseValueTypeDefault(defaultValue) {\n    switch (typeof defaultValue) {\n        case \"boolean\":\n            return \"boolean\";\n        case \"number\":\n            return \"number\";\n        case \"string\":\n            return \"string\";\n    }\n    if (Array.isArray(defaultValue))\n        return \"array\";\n    if (Object.prototype.toString.call(defaultValue) === \"[object Object]\")\n        return \"object\";\n}\nfunction parseValueTypeObject(payload) {\n    const typeFromObject = parseValueTypeConstant(payload.typeObject.type);\n    if (!typeFromObject)\n        return;\n    const defaultValueType = parseValueTypeDefault(payload.typeObject.default);\n    if (typeFromObject !== defaultValueType) {\n        const propertyPath = payload.controller ? `${payload.controller}.${payload.token}` : payload.token;\n        throw new Error(`The specified default value for the Stimulus Value \"${propertyPath}\" must match the defined type \"${typeFromObject}\". The provided default value of \"${payload.typeObject.default}\" is of type \"${defaultValueType}\".`);\n    }\n    return typeFromObject;\n}\nfunction parseValueTypeDefinition(payload) {\n    const typeFromObject = parseValueTypeObject({\n        controller: payload.controller,\n        token: payload.token,\n        typeObject: payload.typeDefinition,\n    });\n    const typeFromDefaultValue = parseValueTypeDefault(payload.typeDefinition);\n    const typeFromConstant = parseValueTypeConstant(payload.typeDefinition);\n    const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n    if (type)\n        return type;\n    const propertyPath = payload.controller ? `${payload.controller}.${payload.typeDefinition}` : payload.token;\n    throw new Error(`Unknown value type \"${propertyPath}\" for \"${payload.token}\" value`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n    const constant = parseValueTypeConstant(typeDefinition);\n    if (constant)\n        return defaultValuesByType[constant];\n    const defaultValue = typeDefinition.default;\n    if (defaultValue !== undefined)\n        return defaultValue;\n    return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(payload) {\n    const key = `${dasherize(payload.token)}-value`;\n    const type = parseValueTypeDefinition(payload);\n    return {\n        type,\n        key,\n        name: camelize(key),\n        get defaultValue() {\n            return defaultValueForDefinition(payload.typeDefinition);\n        },\n        get hasCustomDefaultValue() {\n            return parseValueTypeDefault(payload.typeDefinition) !== undefined;\n        },\n        reader: readers[type],\n        writer: writers[type] || writers.default,\n    };\n}\nconst defaultValuesByType = {\n    get array() {\n        return [];\n    },\n    boolean: false,\n    number: 0,\n    get object() {\n        return {};\n    },\n    string: \"\",\n};\nconst readers = {\n    array(value) {\n        const array = JSON.parse(value);\n        if (!Array.isArray(array)) {\n            throw new TypeError(`expected value of type \"array\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(array)}\"`);\n        }\n        return array;\n    },\n    boolean(value) {\n        return !(value == \"0\" || String(value).toLowerCase() == \"false\");\n    },\n    number(value) {\n        return Number(value);\n    },\n    object(value) {\n        const object = JSON.parse(value);\n        if (object === null || typeof object != \"object\" || Array.isArray(object)) {\n            throw new TypeError(`expected value of type \"object\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(object)}\"`);\n        }\n        return object;\n    },\n    string(value) {\n        return value;\n    },\n};\nconst writers = {\n    default: writeString,\n    array: writeJSON,\n    object: writeJSON,\n};\nfunction writeJSON(value) {\n    return JSON.stringify(value);\n}\nfunction writeString(value) {\n    return `${value}`;\n}\n\nclass Controller {\n    constructor(context) {\n        this.context = context;\n    }\n    static get shouldLoad() {\n        return true;\n    }\n    static afterLoad(_identifier, _application) {\n        return;\n    }\n    get application() {\n        return this.context.application;\n    }\n    get scope() {\n        return this.context.scope;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get targets() {\n        return this.scope.targets;\n    }\n    get outlets() {\n        return this.scope.outlets;\n    }\n    get classes() {\n        return this.scope.classes;\n    }\n    get data() {\n        return this.scope.data;\n    }\n    initialize() {\n    }\n    connect() {\n    }\n    disconnect() {\n    }\n    dispatch(eventName, { target = this.element, detail = {}, prefix = this.identifier, bubbles = true, cancelable = true } = {}) {\n        const type = prefix ? `${prefix}:${eventName}` : eventName;\n        const event = new CustomEvent(type, { detail, bubbles, cancelable });\n        target.dispatchEvent(event);\n        return event;\n    }\n}\nController.blessings = [\n    ClassPropertiesBlessing,\n    TargetPropertiesBlessing,\n    ValuePropertiesBlessing,\n    OutletPropertiesBlessing,\n];\nController.targets = [];\nController.outlets = [];\nController.values = {};\n\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, SelectorObserver, StringMapObserver, TokenListObserver, ValueListObserver, add, defaultSchema, del, fetch, prune };\n", "import { Application } from \"@hotwired/stimulus\"\n\nconst application = Application.start()\n\n// Configure Stimulus development experience\napplication.debug    = false\nwindow.Stimulus      = application\n\nexport { application }\n\n// custom event listener for button confirm attribute handling\ndocument.addEventListener(\"click\", event => {\n  const element = event.target.closest(\"[data-confirm]\")\n\n  if (element && !confirm(element.dataset.confirm)) {\n    event.preventDefault()\n  }\n})", "import { Controller as e } from \"@hotwired/stimulus\";\nclass t extends e {\n  connect() {\n    this.class = this.hasHiddenClass ? this.hiddenClass : \"hidden\";\n  }\n  toggle() {\n    this.itemTargets.forEach((s) => {\n      s.classList.toggle(this.class);\n    });\n  }\n  show() {\n    this.itemTargets.forEach((s) => {\n      s.classList.remove(this.class);\n    });\n  }\n  hide() {\n    this.itemTargets.forEach((s) => {\n      s.classList.add(this.class);\n    });\n  }\n}\nt.targets = [\"item\"];\nt.classes = [\"hidden\"];\nexport {\n  t as default\n};\n", "// Reconnect ActionCable after switching accounts\n\nimport { Controller } from \"@hotwired/stimulus\"\nimport consumer from \"../channels/consumer\"\n\nexport default class extends Controller {\n  reconnect(event) {\n    if (consumer.connection.isActive()) {\n      consumer.connection.reopen()\n    }\n  }\n}\n", "var adapters = {\n  logger: self.console,\n  WebSocket: self.WebSocket\n};\n\nvar logger = {\n  log(...messages) {\n    if (this.enabled) {\n      messages.push(Date.now());\n      adapters.logger.log(\"[ActionCable]\", ...messages);\n    }\n  }\n};\n\nconst now = () => (new Date).getTime();\n\nconst secondsSince = time => (now() - time) / 1e3;\n\nclass ConnectionMonitor {\n  constructor(connection) {\n    this.visibilityDidChange = this.visibilityDidChange.bind(this);\n    this.connection = connection;\n    this.reconnectAttempts = 0;\n  }\n  start() {\n    if (!this.isRunning()) {\n      this.startedAt = now();\n      delete this.stoppedAt;\n      this.startPolling();\n      addEventListener(\"visibilitychange\", this.visibilityDidChange);\n      logger.log(`ConnectionMonitor started. stale threshold = ${this.constructor.staleThreshold} s`);\n    }\n  }\n  stop() {\n    if (this.isRunning()) {\n      this.stoppedAt = now();\n      this.stopPolling();\n      removeEventListener(\"visibilitychange\", this.visibilityDidChange);\n      logger.log(\"ConnectionMonitor stopped\");\n    }\n  }\n  isRunning() {\n    return this.startedAt && !this.stoppedAt;\n  }\n  recordPing() {\n    this.pingedAt = now();\n  }\n  recordConnect() {\n    this.reconnectAttempts = 0;\n    this.recordPing();\n    delete this.disconnectedAt;\n    logger.log(\"ConnectionMonitor recorded connect\");\n  }\n  recordDisconnect() {\n    this.disconnectedAt = now();\n    logger.log(\"ConnectionMonitor recorded disconnect\");\n  }\n  startPolling() {\n    this.stopPolling();\n    this.poll();\n  }\n  stopPolling() {\n    clearTimeout(this.pollTimeout);\n  }\n  poll() {\n    this.pollTimeout = setTimeout((() => {\n      this.reconnectIfStale();\n      this.poll();\n    }), this.getPollInterval());\n  }\n  getPollInterval() {\n    const {staleThreshold: staleThreshold, reconnectionBackoffRate: reconnectionBackoffRate} = this.constructor;\n    const backoff = Math.pow(1 + reconnectionBackoffRate, Math.min(this.reconnectAttempts, 10));\n    const jitterMax = this.reconnectAttempts === 0 ? 1 : reconnectionBackoffRate;\n    const jitter = jitterMax * Math.random();\n    return staleThreshold * 1e3 * backoff * (1 + jitter);\n  }\n  reconnectIfStale() {\n    if (this.connectionIsStale()) {\n      logger.log(`ConnectionMonitor detected stale connection. reconnectAttempts = ${this.reconnectAttempts}, time stale = ${secondsSince(this.refreshedAt)} s, stale threshold = ${this.constructor.staleThreshold} s`);\n      this.reconnectAttempts++;\n      if (this.disconnectedRecently()) {\n        logger.log(`ConnectionMonitor skipping reopening recent disconnect. time disconnected = ${secondsSince(this.disconnectedAt)} s`);\n      } else {\n        logger.log(\"ConnectionMonitor reopening\");\n        this.connection.reopen();\n      }\n    }\n  }\n  get refreshedAt() {\n    return this.pingedAt ? this.pingedAt : this.startedAt;\n  }\n  connectionIsStale() {\n    return secondsSince(this.refreshedAt) > this.constructor.staleThreshold;\n  }\n  disconnectedRecently() {\n    return this.disconnectedAt && secondsSince(this.disconnectedAt) < this.constructor.staleThreshold;\n  }\n  visibilityDidChange() {\n    if (document.visibilityState === \"visible\") {\n      setTimeout((() => {\n        if (this.connectionIsStale() || !this.connection.isOpen()) {\n          logger.log(`ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = ${document.visibilityState}`);\n          this.connection.reopen();\n        }\n      }), 200);\n    }\n  }\n}\n\nConnectionMonitor.staleThreshold = 6;\n\nConnectionMonitor.reconnectionBackoffRate = .15;\n\nvar INTERNAL = {\n  message_types: {\n    welcome: \"welcome\",\n    disconnect: \"disconnect\",\n    ping: \"ping\",\n    confirmation: \"confirm_subscription\",\n    rejection: \"reject_subscription\"\n  },\n  disconnect_reasons: {\n    unauthorized: \"unauthorized\",\n    invalid_request: \"invalid_request\",\n    server_restart: \"server_restart\"\n  },\n  default_mount_path: \"/cable\",\n  protocols: [ \"actioncable-v1-json\", \"actioncable-unsupported\" ]\n};\n\nconst {message_types: message_types, protocols: protocols} = INTERNAL;\n\nconst supportedProtocols = protocols.slice(0, protocols.length - 1);\n\nconst indexOf = [].indexOf;\n\nclass Connection {\n  constructor(consumer) {\n    this.open = this.open.bind(this);\n    this.consumer = consumer;\n    this.subscriptions = this.consumer.subscriptions;\n    this.monitor = new ConnectionMonitor(this);\n    this.disconnected = true;\n  }\n  send(data) {\n    if (this.isOpen()) {\n      this.webSocket.send(JSON.stringify(data));\n      return true;\n    } else {\n      return false;\n    }\n  }\n  open() {\n    if (this.isActive()) {\n      logger.log(`Attempted to open WebSocket, but existing socket is ${this.getState()}`);\n      return false;\n    } else {\n      logger.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${protocols}`);\n      if (this.webSocket) {\n        this.uninstallEventHandlers();\n      }\n      this.webSocket = new adapters.WebSocket(this.consumer.url, protocols);\n      this.installEventHandlers();\n      this.monitor.start();\n      return true;\n    }\n  }\n  close({allowReconnect: allowReconnect} = {\n    allowReconnect: true\n  }) {\n    if (!allowReconnect) {\n      this.monitor.stop();\n    }\n    if (this.isOpen()) {\n      return this.webSocket.close();\n    }\n  }\n  reopen() {\n    logger.log(`Reopening WebSocket, current state is ${this.getState()}`);\n    if (this.isActive()) {\n      try {\n        return this.close();\n      } catch (error) {\n        logger.log(\"Failed to reopen WebSocket\", error);\n      } finally {\n        logger.log(`Reopening WebSocket in ${this.constructor.reopenDelay}ms`);\n        setTimeout(this.open, this.constructor.reopenDelay);\n      }\n    } else {\n      return this.open();\n    }\n  }\n  getProtocol() {\n    if (this.webSocket) {\n      return this.webSocket.protocol;\n    }\n  }\n  isOpen() {\n    return this.isState(\"open\");\n  }\n  isActive() {\n    return this.isState(\"open\", \"connecting\");\n  }\n  isProtocolSupported() {\n    return indexOf.call(supportedProtocols, this.getProtocol()) >= 0;\n  }\n  isState(...states) {\n    return indexOf.call(states, this.getState()) >= 0;\n  }\n  getState() {\n    if (this.webSocket) {\n      for (let state in adapters.WebSocket) {\n        if (adapters.WebSocket[state] === this.webSocket.readyState) {\n          return state.toLowerCase();\n        }\n      }\n    }\n    return null;\n  }\n  installEventHandlers() {\n    for (let eventName in this.events) {\n      const handler = this.events[eventName].bind(this);\n      this.webSocket[`on${eventName}`] = handler;\n    }\n  }\n  uninstallEventHandlers() {\n    for (let eventName in this.events) {\n      this.webSocket[`on${eventName}`] = function() {};\n    }\n  }\n}\n\nConnection.reopenDelay = 500;\n\nConnection.prototype.events = {\n  message(event) {\n    if (!this.isProtocolSupported()) {\n      return;\n    }\n    const {identifier: identifier, message: message, reason: reason, reconnect: reconnect, type: type} = JSON.parse(event.data);\n    switch (type) {\n     case message_types.welcome:\n      this.monitor.recordConnect();\n      return this.subscriptions.reload();\n\n     case message_types.disconnect:\n      logger.log(`Disconnecting. Reason: ${reason}`);\n      return this.close({\n        allowReconnect: reconnect\n      });\n\n     case message_types.ping:\n      return this.monitor.recordPing();\n\n     case message_types.confirmation:\n      this.subscriptions.confirmSubscription(identifier);\n      return this.subscriptions.notify(identifier, \"connected\");\n\n     case message_types.rejection:\n      return this.subscriptions.reject(identifier);\n\n     default:\n      return this.subscriptions.notify(identifier, \"received\", message);\n    }\n  },\n  open() {\n    logger.log(`WebSocket onopen event, using '${this.getProtocol()}' subprotocol`);\n    this.disconnected = false;\n    if (!this.isProtocolSupported()) {\n      logger.log(\"Protocol is unsupported. Stopping monitor and disconnecting.\");\n      return this.close({\n        allowReconnect: false\n      });\n    }\n  },\n  close(event) {\n    logger.log(\"WebSocket onclose event\");\n    if (this.disconnected) {\n      return;\n    }\n    this.disconnected = true;\n    this.monitor.recordDisconnect();\n    return this.subscriptions.notifyAll(\"disconnected\", {\n      willAttemptReconnect: this.monitor.isRunning()\n    });\n  },\n  error() {\n    logger.log(\"WebSocket onerror event\");\n  }\n};\n\nconst extend = function(object, properties) {\n  if (properties != null) {\n    for (let key in properties) {\n      const value = properties[key];\n      object[key] = value;\n    }\n  }\n  return object;\n};\n\nclass Subscription {\n  constructor(consumer, params = {}, mixin) {\n    this.consumer = consumer;\n    this.identifier = JSON.stringify(params);\n    extend(this, mixin);\n  }\n  perform(action, data = {}) {\n    data.action = action;\n    return this.send(data);\n  }\n  send(data) {\n    return this.consumer.send({\n      command: \"message\",\n      identifier: this.identifier,\n      data: JSON.stringify(data)\n    });\n  }\n  unsubscribe() {\n    return this.consumer.subscriptions.remove(this);\n  }\n}\n\nclass SubscriptionGuarantor {\n  constructor(subscriptions) {\n    this.subscriptions = subscriptions;\n    this.pendingSubscriptions = [];\n  }\n  guarantee(subscription) {\n    if (this.pendingSubscriptions.indexOf(subscription) == -1) {\n      logger.log(`SubscriptionGuarantor guaranteeing ${subscription.identifier}`);\n      this.pendingSubscriptions.push(subscription);\n    } else {\n      logger.log(`SubscriptionGuarantor already guaranteeing ${subscription.identifier}`);\n    }\n    this.startGuaranteeing();\n  }\n  forget(subscription) {\n    logger.log(`SubscriptionGuarantor forgetting ${subscription.identifier}`);\n    this.pendingSubscriptions = this.pendingSubscriptions.filter((s => s !== subscription));\n  }\n  startGuaranteeing() {\n    this.stopGuaranteeing();\n    this.retrySubscribing();\n  }\n  stopGuaranteeing() {\n    clearTimeout(this.retryTimeout);\n  }\n  retrySubscribing() {\n    this.retryTimeout = setTimeout((() => {\n      if (this.subscriptions && typeof this.subscriptions.subscribe === \"function\") {\n        this.pendingSubscriptions.map((subscription => {\n          logger.log(`SubscriptionGuarantor resubscribing ${subscription.identifier}`);\n          this.subscriptions.subscribe(subscription);\n        }));\n      }\n    }), 500);\n  }\n}\n\nclass Subscriptions {\n  constructor(consumer) {\n    this.consumer = consumer;\n    this.guarantor = new SubscriptionGuarantor(this);\n    this.subscriptions = [];\n  }\n  create(channelName, mixin) {\n    const channel = channelName;\n    const params = typeof channel === \"object\" ? channel : {\n      channel: channel\n    };\n    const subscription = new Subscription(this.consumer, params, mixin);\n    return this.add(subscription);\n  }\n  add(subscription) {\n    this.subscriptions.push(subscription);\n    this.consumer.ensureActiveConnection();\n    this.notify(subscription, \"initialized\");\n    this.subscribe(subscription);\n    return subscription;\n  }\n  remove(subscription) {\n    this.forget(subscription);\n    if (!this.findAll(subscription.identifier).length) {\n      this.sendCommand(subscription, \"unsubscribe\");\n    }\n    return subscription;\n  }\n  reject(identifier) {\n    return this.findAll(identifier).map((subscription => {\n      this.forget(subscription);\n      this.notify(subscription, \"rejected\");\n      return subscription;\n    }));\n  }\n  forget(subscription) {\n    this.guarantor.forget(subscription);\n    this.subscriptions = this.subscriptions.filter((s => s !== subscription));\n    return subscription;\n  }\n  findAll(identifier) {\n    return this.subscriptions.filter((s => s.identifier === identifier));\n  }\n  reload() {\n    return this.subscriptions.map((subscription => this.subscribe(subscription)));\n  }\n  notifyAll(callbackName, ...args) {\n    return this.subscriptions.map((subscription => this.notify(subscription, callbackName, ...args)));\n  }\n  notify(subscription, callbackName, ...args) {\n    let subscriptions;\n    if (typeof subscription === \"string\") {\n      subscriptions = this.findAll(subscription);\n    } else {\n      subscriptions = [ subscription ];\n    }\n    return subscriptions.map((subscription => typeof subscription[callbackName] === \"function\" ? subscription[callbackName](...args) : undefined));\n  }\n  subscribe(subscription) {\n    if (this.sendCommand(subscription, \"subscribe\")) {\n      this.guarantor.guarantee(subscription);\n    }\n  }\n  confirmSubscription(identifier) {\n    logger.log(`Subscription confirmed ${identifier}`);\n    this.findAll(identifier).map((subscription => this.guarantor.forget(subscription)));\n  }\n  sendCommand(subscription, command) {\n    const {identifier: identifier} = subscription;\n    return this.consumer.send({\n      command: command,\n      identifier: identifier\n    });\n  }\n}\n\nclass Consumer {\n  constructor(url) {\n    this._url = url;\n    this.subscriptions = new Subscriptions(this);\n    this.connection = new Connection(this);\n  }\n  get url() {\n    return createWebSocketURL(this._url);\n  }\n  send(data) {\n    return this.connection.send(data);\n  }\n  connect() {\n    return this.connection.open();\n  }\n  disconnect() {\n    return this.connection.close({\n      allowReconnect: false\n    });\n  }\n  ensureActiveConnection() {\n    if (!this.connection.isActive()) {\n      return this.connection.open();\n    }\n  }\n}\n\nfunction createWebSocketURL(url) {\n  if (typeof url === \"function\") {\n    url = url();\n  }\n  if (url && !/^wss?:/i.test(url)) {\n    const a = document.createElement(\"a\");\n    a.href = url;\n    a.href = a.href;\n    a.protocol = a.protocol.replace(\"http\", \"ws\");\n    return a.href;\n  } else {\n    return url;\n  }\n}\n\nfunction createConsumer(url = getConfig(\"url\") || INTERNAL.default_mount_path) {\n  return new Consumer(url);\n}\n\nfunction getConfig(name) {\n  const element = document.head.querySelector(`meta[name='action-cable-${name}']`);\n  if (element) {\n    return element.getAttribute(\"content\");\n  }\n}\n\nexport { Connection, ConnectionMonitor, Consumer, INTERNAL, Subscription, SubscriptionGuarantor, Subscriptions, adapters, createConsumer, createWebSocketURL, getConfig, logger };\n", "// Action Cable provides the framework to deal with WebSockets in Rails.\n// You can generate new channels where WebSocket features live using the `rails generate channel` command.\n\nimport { createConsumer } from \"@rails/actioncable\"\n\nexport default createConsumer()\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [ \"dropin\", \"form\" ]\n\n  connect() {\n    braintree.dropin.create({\n      authorization: this.data.get(\"clientToken\"),\n      container: this.dropinTarget,\n      //threeDSecure: true,\n      paypal: {\n        flow: \"vault\"\n      },\n      // Uncomment this to only display PayPal in the Drop-in UI\n      //paymentOptionPriority: ['paypal']\n    },\n      this.clientCreated.bind(this)\n    )\n  }\n\n  clientCreated(error, instance) {\n    if (error) {\n      console.error(\"Error setting up Braintree dropin:\", error)\n      return\n    }\n\n    this.instance = instance\n  }\n\n  submit(event) {\n    event.preventDefault()\n\n    this.instance.requestPaymentMethod(this.paymentMethod.bind(this))\n  }\n\n  paymentMethod(error, payload) {\n    if (error) {\n      console.error(\"Error with payment method:\", error)\n      return\n    }\n\n    this.addHiddenField(\"processor\", \"braintree\")\n    this.addHiddenField(\"payment_method_token\", payload.nonce)\n\n    Rails.fire(this.formTarget, \"submit\")\n  }\n\n  addHiddenField(name, value) {\n    let hiddenInput = document.createElement(\"input\")\n    hiddenInput.setAttribute(\"type\", \"hidden\")\n    hiddenInput.setAttribute(\"name\", name)\n    hiddenInput.setAttribute(\"value\", value)\n    this.formTarget.appendChild(hiddenInput)\n  }\n}\n", "// The BulkController can be used for adding bulk operations to your index views.\n// You can add a Select All checkbox and checkboxes for each record and easily grab\n// the selected records.\n//\n// Usage:\n//\n//   import BulkController from \"controllers/bulk_controller\"\n//\n//   export default class extends BulkController {\n//   }\n\nimport { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n\tstatic targets = [ \"checkbox\", \"selectAll\" ]\n\n  // Toggles all checkboxes based upon what is currently checked\n  toggleSelectAll(event) {\n    (!this.allCheckboxesSelected) ? this.selectAll() : this.unselectAll()\n  }\n\n  // Selects all checkboxes\n  selectAll() {\n    this.selectAllTarget.checked = true\n    this.selectAllTarget.indeterminate = false\n    this.unselected.forEach(target => target.checked = true)\n  }\n\n  // Unselects all checkboxes\n  unselectAll() {\n    this.selectAllTarget.checked = false\n    this.selectAllTarget.indeterminate = false\n    this.selected.forEach(target => target.checked = false)\n  }\n\n  // Keep track of SelectAll state based upon how many checkboxes are selected\n  change(event) {\n    if (this.noCheckboxesSelected) {\n      this.selectAllTarget.checked = false\n      this.selectAllTarget.indeterminate = false\n\n    } else if (this.allCheckboxesSelected) {\n      this.selectAllTarget.checked = true\n      this.selectAllTarget.indeterminate = false\n\n    } else {\n      this.selectAllTarget.indeterminate = true\n    }\n  }\n\n  // Returns true if Select All checkbox is checked\n  get selectedAll() {\n    return this.selectAllTarget.checked\n  }\n\n  // Returns all selected checkboxes\n  get selected() {\n    return this.checkboxTargets.filter(target => target.checked)\n  }\n\n  // Returns all unselected checkboxes\n  get unselected() {\n    return this.checkboxTargets.filter(target => !target.checked)\n  }\n\n  // Returns data-id attributes for all selected checkboxes\n  get selectedIds() {\n    return this.selected.map(target => target.dataset.id)\n  }\n\n  // Returns true if all checkboxes are checked\n  get allCheckboxesSelected() {\n    return this.checkboxTargets.every(target => target.checked)\n  }\n\n  // Returns true if no checkboxes are checked\n  get noCheckboxesSelected() {\n    return this.checkboxTargets.every(target => !target.checked)\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\nimport ClipboardJS from \"clipboard\"\nimport tippy from \"tippy.js\";\n\nexport default class extends Controller {\n  static values = {\n    successMessage: String,\n    errorMessage: String\n  }\n\n  connect() {\n    this.clipboard = new ClipboardJS(this.element)\n    this.clipboard.on(\"success\", (e) => this.tooltip(this.successMessage))\n    this.clipboard.on(\"error\",   (e) => this.tooltip(this.errorMessage))\n  }\n\n  tooltip(message) {\n    tippy(this.element, {\n      content: message,\n      showOnCreate: true,\n      onHidden: (instance) => {\n        instance.destroy()\n      }\n    })\n  }\n\n  get successMessage() {\n    return this.successMessageValue || \"Copied!\"\n  }\n\n  get errorMessage() {\n    return this.errorMessageValue || \"Failed!\"\n  }\n}\n", "export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n  return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n  return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];", "export default function getNodeName(element) {\n  return element ? (element.nodeName || '').toLowerCase() : null;\n}", "export default function getWindow(node) {\n  if (node == null) {\n    return window;\n  }\n\n  if (node.toString() !== '[object Window]') {\n    var ownerDocument = node.ownerDocument;\n    return ownerDocument ? ownerDocument.defaultView || window : window;\n  }\n\n  return node;\n}", "import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n  var OwnElement = getWindow(node).Element;\n  return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n  var OwnElement = getWindow(node).HTMLElement;\n  return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n  // IE 11 has no ShadowRoot\n  if (typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n\n  var OwnElement = getWindow(node).ShadowRoot;\n  return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };", "import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n  var state = _ref.state;\n  Object.keys(state.elements).forEach(function (name) {\n    var style = state.styles[name] || {};\n    var attributes = state.attributes[name] || {};\n    var element = state.elements[name]; // arrow is optional + virtual elements\n\n    if (!isHTMLElement(element) || !getNodeName(element)) {\n      return;\n    } // Flow doesn't support to extend this property, but it's the most\n    // effective way to apply styles to an HTMLElement\n    // $FlowFixMe[cannot-write]\n\n\n    Object.assign(element.style, style);\n    Object.keys(attributes).forEach(function (name) {\n      var value = attributes[name];\n\n      if (value === false) {\n        element.removeAttribute(name);\n      } else {\n        element.setAttribute(name, value === true ? '' : value);\n      }\n    });\n  });\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state;\n  var initialStyles = {\n    popper: {\n      position: state.options.strategy,\n      left: '0',\n      top: '0',\n      margin: '0'\n    },\n    arrow: {\n      position: 'absolute'\n    },\n    reference: {}\n  };\n  Object.assign(state.elements.popper.style, initialStyles.popper);\n  state.styles = initialStyles;\n\n  if (state.elements.arrow) {\n    Object.assign(state.elements.arrow.style, initialStyles.arrow);\n  }\n\n  return function () {\n    Object.keys(state.elements).forEach(function (name) {\n      var element = state.elements[name];\n      var attributes = state.attributes[name] || {};\n      var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n      var style = styleProperties.reduce(function (style, property) {\n        style[property] = '';\n        return style;\n      }, {}); // arrow is optional + virtual elements\n\n      if (!isHTMLElement(element) || !getNodeName(element)) {\n        return;\n      }\n\n      Object.assign(element.style, style);\n      Object.keys(attributes).forEach(function (attribute) {\n        element.removeAttribute(attribute);\n      });\n    });\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'applyStyles',\n  enabled: true,\n  phase: 'write',\n  fn: applyStyles,\n  effect: effect,\n  requires: ['computeStyles']\n};", "import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n  return placement.split('-')[0];\n}", "export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;", "export default function getUAString() {\n  var uaData = navigator.userAgentData;\n\n  if (uaData != null && uaData.brands) {\n    return uaData.brands.map(function (item) {\n      return item.brand + \"/\" + item.version;\n    }).join(' ');\n  }\n\n  return navigator.userAgent;\n}", "import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n  return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}", "import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n\n  var clientRect = element.getBoundingClientRect();\n  var scaleX = 1;\n  var scaleY = 1;\n\n  if (includeScale && isHTMLElement(element)) {\n    scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n    scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n  }\n\n  var _ref = isElement(element) ? getWindow(element) : window,\n      visualViewport = _ref.visualViewport;\n\n  var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n  var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n  var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n  var width = clientRect.width / scaleX;\n  var height = clientRect.height / scaleY;\n  return {\n    width: width,\n    height: height,\n    top: y,\n    right: x + width,\n    bottom: y + height,\n    left: x,\n    x: x,\n    y: y\n  };\n}", "import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n  var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n  // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n  var width = element.offsetWidth;\n  var height = element.offsetHeight;\n\n  if (Math.abs(clientRect.width - width) <= 1) {\n    width = clientRect.width;\n  }\n\n  if (Math.abs(clientRect.height - height) <= 1) {\n    height = clientRect.height;\n  }\n\n  return {\n    x: element.offsetLeft,\n    y: element.offsetTop,\n    width: width,\n    height: height\n  };\n}", "import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n  var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n  if (parent.contains(child)) {\n    return true;\n  } // then fallback to custom implementation with Shadow DOM support\n  else if (rootNode && isShadowRoot(rootNode)) {\n      var next = child;\n\n      do {\n        if (next && parent.isSameNode(next)) {\n          return true;\n        } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n        next = next.parentNode || next.host;\n      } while (next);\n    } // Give up, the result is false\n\n\n  return false;\n}", "import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}", "import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n  return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}", "import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n  // $FlowFixMe[incompatible-return]: assume body is always available\n  return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n  element.document) || window.document).documentElement;\n}", "import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n  if (getNodeName(element) === 'html') {\n    return element;\n  }\n\n  return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n    // $FlowFixMe[incompatible-return]\n    // $FlowFixMe[prop-missing]\n    element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n    element.parentNode || ( // DOM Element detected\n    isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n    // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n    getDocumentElement(element) // fallback\n\n  );\n}", "import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n  if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n  getComputedStyle(element).position === 'fixed') {\n    return null;\n  }\n\n  return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n  var isFirefox = /firefox/i.test(getUAString());\n  var isIE = /Trident/i.test(getUAString());\n\n  if (isIE && isHTMLElement(element)) {\n    // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n    var elementCss = getComputedStyle(element);\n\n    if (elementCss.position === 'fixed') {\n      return null;\n    }\n  }\n\n  var currentNode = getParentNode(element);\n\n  if (isShadowRoot(currentNode)) {\n    currentNode = currentNode.host;\n  }\n\n  while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n    var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n    // create a containing block.\n    // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n    if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n      return currentNode;\n    } else {\n      currentNode = currentNode.parentNode;\n    }\n  }\n\n  return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n  var window = getWindow(element);\n  var offsetParent = getTrueOffsetParent(element);\n\n  while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n    offsetParent = getTrueOffsetParent(offsetParent);\n  }\n\n  if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n    return window;\n  }\n\n  return offsetParent || getContainingBlock(element) || window;\n}", "export default function getMainAxisFromPlacement(placement) {\n  return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}", "import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n  return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n  var v = within(min, value, max);\n  return v > max ? max : v;\n}", "export default function getFreshSideObject() {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0\n  };\n}", "import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n  return Object.assign({}, getFreshSideObject(), paddingObject);\n}", "export default function expandToHashMap(value, keys) {\n  return keys.reduce(function (hashMap, key) {\n    hashMap[key] = value;\n    return hashMap;\n  }, {});\n}", "import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n  padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n    placement: state.placement\n  })) : padding;\n  return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n  var _state$modifiersData$;\n\n  var state = _ref.state,\n      name = _ref.name,\n      options = _ref.options;\n  var arrowElement = state.elements.arrow;\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var basePlacement = getBasePlacement(state.placement);\n  var axis = getMainAxisFromPlacement(basePlacement);\n  var isVertical = [left, right].indexOf(basePlacement) >= 0;\n  var len = isVertical ? 'height' : 'width';\n\n  if (!arrowElement || !popperOffsets) {\n    return;\n  }\n\n  var paddingObject = toPaddingObject(options.padding, state);\n  var arrowRect = getLayoutRect(arrowElement);\n  var minProp = axis === 'y' ? top : left;\n  var maxProp = axis === 'y' ? bottom : right;\n  var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n  var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n  var arrowOffsetParent = getOffsetParent(arrowElement);\n  var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n  var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n  // outside of the popper bounds\n\n  var min = paddingObject[minProp];\n  var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n  var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n  var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n  var axisProp = axis;\n  state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options;\n  var _options$element = options.element,\n      arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n  if (arrowElement == null) {\n    return;\n  } // CSS selector\n\n\n  if (typeof arrowElement === 'string') {\n    arrowElement = state.elements.popper.querySelector(arrowElement);\n\n    if (!arrowElement) {\n      return;\n    }\n  }\n\n  if (process.env.NODE_ENV !== \"production\") {\n    if (!isHTMLElement(arrowElement)) {\n      console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n    }\n  }\n\n  if (!contains(state.elements.popper, arrowElement)) {\n    if (process.env.NODE_ENV !== \"production\") {\n      console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n    }\n\n    return;\n  }\n\n  state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'arrow',\n  enabled: true,\n  phase: 'main',\n  fn: arrow,\n  effect: effect,\n  requires: ['popperOffsets'],\n  requiresIfExists: ['preventOverflow']\n};", "export default function getVariation(placement) {\n  return placement.split('-')[1];\n}", "import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n  top: 'auto',\n  right: 'auto',\n  bottom: 'auto',\n  left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref) {\n  var x = _ref.x,\n      y = _ref.y;\n  var win = window;\n  var dpr = win.devicePixelRatio || 1;\n  return {\n    x: round(x * dpr) / dpr || 0,\n    y: round(y * dpr) / dpr || 0\n  };\n}\n\nexport function mapToStyles(_ref2) {\n  var _Object$assign2;\n\n  var popper = _ref2.popper,\n      popperRect = _ref2.popperRect,\n      placement = _ref2.placement,\n      variation = _ref2.variation,\n      offsets = _ref2.offsets,\n      position = _ref2.position,\n      gpuAcceleration = _ref2.gpuAcceleration,\n      adaptive = _ref2.adaptive,\n      roundOffsets = _ref2.roundOffsets,\n      isFixed = _ref2.isFixed;\n  var _offsets$x = offsets.x,\n      x = _offsets$x === void 0 ? 0 : _offsets$x,\n      _offsets$y = offsets.y,\n      y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n  var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n    x: x,\n    y: y\n  }) : {\n    x: x,\n    y: y\n  };\n\n  x = _ref3.x;\n  y = _ref3.y;\n  var hasX = offsets.hasOwnProperty('x');\n  var hasY = offsets.hasOwnProperty('y');\n  var sideX = left;\n  var sideY = top;\n  var win = window;\n\n  if (adaptive) {\n    var offsetParent = getOffsetParent(popper);\n    var heightProp = 'clientHeight';\n    var widthProp = 'clientWidth';\n\n    if (offsetParent === getWindow(popper)) {\n      offsetParent = getDocumentElement(popper);\n\n      if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n        heightProp = 'scrollHeight';\n        widthProp = 'scrollWidth';\n      }\n    } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n    offsetParent = offsetParent;\n\n    if (placement === top || (placement === left || placement === right) && variation === end) {\n      sideY = bottom;\n      var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n      offsetParent[heightProp];\n      y -= offsetY - popperRect.height;\n      y *= gpuAcceleration ? 1 : -1;\n    }\n\n    if (placement === left || (placement === top || placement === bottom) && variation === end) {\n      sideX = right;\n      var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n      offsetParent[widthProp];\n      x -= offsetX - popperRect.width;\n      x *= gpuAcceleration ? 1 : -1;\n    }\n  }\n\n  var commonStyles = Object.assign({\n    position: position\n  }, adaptive && unsetSides);\n\n  var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n    x: x,\n    y: y\n  }) : {\n    x: x,\n    y: y\n  };\n\n  x = _ref4.x;\n  y = _ref4.y;\n\n  if (gpuAcceleration) {\n    var _Object$assign;\n\n    return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n  }\n\n  return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n  var state = _ref5.state,\n      options = _ref5.options;\n  var _options$gpuAccelerat = options.gpuAcceleration,\n      gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n      _options$adaptive = options.adaptive,\n      adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n      _options$roundOffsets = options.roundOffsets,\n      roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n\n  if (process.env.NODE_ENV !== \"production\") {\n    var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n    if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n      return transitionProperty.indexOf(property) >= 0;\n    })) {\n      console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n    }\n  }\n\n  var commonStyles = {\n    placement: getBasePlacement(state.placement),\n    variation: getVariation(state.placement),\n    popper: state.elements.popper,\n    popperRect: state.rects.popper,\n    gpuAcceleration: gpuAcceleration,\n    isFixed: state.options.strategy === 'fixed'\n  };\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.popperOffsets,\n      position: state.options.strategy,\n      adaptive: adaptive,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  if (state.modifiersData.arrow != null) {\n    state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.arrow,\n      position: 'absolute',\n      adaptive: false,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n    'data-popper-placement': state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'computeStyles',\n  enabled: true,\n  phase: 'beforeWrite',\n  fn: computeStyles,\n  data: {}\n};", "import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n  passive: true\n};\n\nfunction effect(_ref) {\n  var state = _ref.state,\n      instance = _ref.instance,\n      options = _ref.options;\n  var _options$scroll = options.scroll,\n      scroll = _options$scroll === void 0 ? true : _options$scroll,\n      _options$resize = options.resize,\n      resize = _options$resize === void 0 ? true : _options$resize;\n  var window = getWindow(state.elements.popper);\n  var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n  if (scroll) {\n    scrollParents.forEach(function (scrollParent) {\n      scrollParent.addEventListener('scroll', instance.update, passive);\n    });\n  }\n\n  if (resize) {\n    window.addEventListener('resize', instance.update, passive);\n  }\n\n  return function () {\n    if (scroll) {\n      scrollParents.forEach(function (scrollParent) {\n        scrollParent.removeEventListener('scroll', instance.update, passive);\n      });\n    }\n\n    if (resize) {\n      window.removeEventListener('resize', instance.update, passive);\n    }\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'eventListeners',\n  enabled: true,\n  phase: 'write',\n  fn: function fn() {},\n  effect: effect,\n  data: {}\n};", "var hash = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, function (matched) {\n    return hash[matched];\n  });\n}", "var hash = {\n  start: 'end',\n  end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n  return placement.replace(/start|end/g, function (matched) {\n    return hash[matched];\n  });\n}", "import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n  var win = getWindow(node);\n  var scrollLeft = win.pageXOffset;\n  var scrollTop = win.pageYOffset;\n  return {\n    scrollLeft: scrollLeft,\n    scrollTop: scrollTop\n  };\n}", "import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n  // If <html> has a CSS width greater than the viewport, then this will be\n  // incorrect for RTL.\n  // Popper 1 is broken in this case and never had a bug report so let's assume\n  // it's not an issue. I don't think anyone ever specifies width on <html>\n  // anyway.\n  // Browsers where the left scrollbar doesn't cause an issue report `0` for\n  // this (e.g. Edge 2019, IE11, Safari)\n  return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}", "import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n  var win = getWindow(element);\n  var html = getDocumentElement(element);\n  var visualViewport = win.visualViewport;\n  var width = html.clientWidth;\n  var height = html.clientHeight;\n  var x = 0;\n  var y = 0;\n\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    var layoutViewport = isLayoutViewport();\n\n    if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x + getWindowScrollBarX(element),\n    y: y\n  };\n}", "import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n  var _element$ownerDocumen;\n\n  var html = getDocumentElement(element);\n  var winScroll = getWindowScroll(element);\n  var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n  var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n  var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n  var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n  var y = -winScroll.scrollTop;\n\n  if (getComputedStyle(body || html).direction === 'rtl') {\n    x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x,\n    y: y\n  };\n}", "import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n  // Firefox wants us to check `-x` and `-y` variations as well\n  var _getComputedStyle = getComputedStyle(element),\n      overflow = _getComputedStyle.overflow,\n      overflowX = _getComputedStyle.overflowX,\n      overflowY = _getComputedStyle.overflowY;\n\n  return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}", "import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n  if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n    // $FlowFixMe[incompatible-return]: assume body is always available\n    return node.ownerDocument.body;\n  }\n\n  if (isHTMLElement(node) && isScrollParent(node)) {\n    return node;\n  }\n\n  return getScrollParent(getParentNode(node));\n}", "import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n  var _element$ownerDocumen;\n\n  if (list === void 0) {\n    list = [];\n  }\n\n  var scrollParent = getScrollParent(element);\n  var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n  var win = getWindow(scrollParent);\n  var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n  var updatedList = list.concat(target);\n  return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n  updatedList.concat(listScrollParents(getParentNode(target)));\n}", "export default function rectToClientRect(rect) {\n  return Object.assign({}, rect, {\n    left: rect.x,\n    top: rect.y,\n    right: rect.x + rect.width,\n    bottom: rect.y + rect.height\n  });\n}", "import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n  var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n  rect.top = rect.top + element.clientTop;\n  rect.left = rect.left + element.clientLeft;\n  rect.bottom = rect.top + element.clientHeight;\n  rect.right = rect.left + element.clientWidth;\n  rect.width = element.clientWidth;\n  rect.height = element.clientHeight;\n  rect.x = rect.left;\n  rect.y = rect.top;\n  return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n  return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n  var clippingParents = listScrollParents(getParentNode(element));\n  var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n  var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n  if (!isElement(clipperElement)) {\n    return [];\n  } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n  return clippingParents.filter(function (clippingParent) {\n    return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n  });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n  var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n  var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n  var firstClippingParent = clippingParents[0];\n  var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n    var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n  clippingRect.width = clippingRect.right - clippingRect.left;\n  clippingRect.height = clippingRect.bottom - clippingRect.top;\n  clippingRect.x = clippingRect.left;\n  clippingRect.y = clippingRect.top;\n  return clippingRect;\n}", "import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n  var reference = _ref.reference,\n      element = _ref.element,\n      placement = _ref.placement;\n  var basePlacement = placement ? getBasePlacement(placement) : null;\n  var variation = placement ? getVariation(placement) : null;\n  var commonX = reference.x + reference.width / 2 - element.width / 2;\n  var commonY = reference.y + reference.height / 2 - element.height / 2;\n  var offsets;\n\n  switch (basePlacement) {\n    case top:\n      offsets = {\n        x: commonX,\n        y: reference.y - element.height\n      };\n      break;\n\n    case bottom:\n      offsets = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n\n    case right:\n      offsets = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n\n    case left:\n      offsets = {\n        x: reference.x - element.width,\n        y: commonY\n      };\n      break;\n\n    default:\n      offsets = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n\n  var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n  if (mainAxis != null) {\n    var len = mainAxis === 'y' ? 'height' : 'width';\n\n    switch (variation) {\n      case start:\n        offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n        break;\n\n      case end:\n        offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n        break;\n\n      default:\n    }\n  }\n\n  return offsets;\n}", "import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      _options$placement = _options.placement,\n      placement = _options$placement === void 0 ? state.placement : _options$placement,\n      _options$strategy = _options.strategy,\n      strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n      _options$boundary = _options.boundary,\n      boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n      _options$rootBoundary = _options.rootBoundary,\n      rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n      _options$elementConte = _options.elementContext,\n      elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n      _options$altBoundary = _options.altBoundary,\n      altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n      _options$padding = _options.padding,\n      padding = _options$padding === void 0 ? 0 : _options$padding;\n  var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n  var altContext = elementContext === popper ? reference : popper;\n  var popperRect = state.rects.popper;\n  var element = state.elements[altBoundary ? altContext : elementContext];\n  var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n  var referenceClientRect = getBoundingClientRect(state.elements.reference);\n  var popperOffsets = computeOffsets({\n    reference: referenceClientRect,\n    element: popperRect,\n    strategy: 'absolute',\n    placement: placement\n  });\n  var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n  var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n  // 0 or negative = within the clipping rect\n\n  var overflowOffsets = {\n    top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n    bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n    left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n    right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n  };\n  var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n  if (elementContext === popper && offsetData) {\n    var offset = offsetData[placement];\n    Object.keys(overflowOffsets).forEach(function (key) {\n      var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n      var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n      overflowOffsets[key] += offset[axis] * multiply;\n    });\n  }\n\n  return overflowOffsets;\n}", "import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      placement = _options.placement,\n      boundary = _options.boundary,\n      rootBoundary = _options.rootBoundary,\n      padding = _options.padding,\n      flipVariations = _options.flipVariations,\n      _options$allowedAutoP = _options.allowedAutoPlacements,\n      allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n  var variation = getVariation(placement);\n  var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n    return getVariation(placement) === variation;\n  }) : basePlacements;\n  var allowedPlacements = placements.filter(function (placement) {\n    return allowedAutoPlacements.indexOf(placement) >= 0;\n  });\n\n  if (allowedPlacements.length === 0) {\n    allowedPlacements = placements;\n\n    if (process.env.NODE_ENV !== \"production\") {\n      console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n    }\n  } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n  var overflows = allowedPlacements.reduce(function (acc, placement) {\n    acc[placement] = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding\n    })[getBasePlacement(placement)];\n    return acc;\n  }, {});\n  return Object.keys(overflows).sort(function (a, b) {\n    return overflows[a] - overflows[b];\n  });\n}", "import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n  if (getBasePlacement(placement) === auto) {\n    return [];\n  }\n\n  var oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n\n  if (state.modifiersData[name]._skip) {\n    return;\n  }\n\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n      specifiedFallbackPlacements = options.fallbackPlacements,\n      padding = options.padding,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      _options$flipVariatio = options.flipVariations,\n      flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n      allowedAutoPlacements = options.allowedAutoPlacements;\n  var preferredPlacement = state.options.placement;\n  var basePlacement = getBasePlacement(preferredPlacement);\n  var isBasePlacement = basePlacement === preferredPlacement;\n  var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n  var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n    return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding,\n      flipVariations: flipVariations,\n      allowedAutoPlacements: allowedAutoPlacements\n    }) : placement);\n  }, []);\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var checksMap = new Map();\n  var makeFallbackChecks = true;\n  var firstFittingPlacement = placements[0];\n\n  for (var i = 0; i < placements.length; i++) {\n    var placement = placements[i];\n\n    var _basePlacement = getBasePlacement(placement);\n\n    var isStartVariation = getVariation(placement) === start;\n    var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n    var len = isVertical ? 'width' : 'height';\n    var overflow = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      altBoundary: altBoundary,\n      padding: padding\n    });\n    var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n    if (referenceRect[len] > popperRect[len]) {\n      mainVariationSide = getOppositePlacement(mainVariationSide);\n    }\n\n    var altVariationSide = getOppositePlacement(mainVariationSide);\n    var checks = [];\n\n    if (checkMainAxis) {\n      checks.push(overflow[_basePlacement] <= 0);\n    }\n\n    if (checkAltAxis) {\n      checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n    }\n\n    if (checks.every(function (check) {\n      return check;\n    })) {\n      firstFittingPlacement = placement;\n      makeFallbackChecks = false;\n      break;\n    }\n\n    checksMap.set(placement, checks);\n  }\n\n  if (makeFallbackChecks) {\n    // `2` may be desired in some cases \u2013 research later\n    var numberOfChecks = flipVariations ? 3 : 1;\n\n    var _loop = function _loop(_i) {\n      var fittingPlacement = placements.find(function (placement) {\n        var checks = checksMap.get(placement);\n\n        if (checks) {\n          return checks.slice(0, _i).every(function (check) {\n            return check;\n          });\n        }\n      });\n\n      if (fittingPlacement) {\n        firstFittingPlacement = fittingPlacement;\n        return \"break\";\n      }\n    };\n\n    for (var _i = numberOfChecks; _i > 0; _i--) {\n      var _ret = _loop(_i);\n\n      if (_ret === \"break\") break;\n    }\n  }\n\n  if (state.placement !== firstFittingPlacement) {\n    state.modifiersData[name]._skip = true;\n    state.placement = firstFittingPlacement;\n    state.reset = true;\n  }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'flip',\n  enabled: true,\n  phase: 'main',\n  fn: flip,\n  requiresIfExists: ['offset'],\n  data: {\n    _skip: false\n  }\n};", "import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n  if (preventedOffsets === void 0) {\n    preventedOffsets = {\n      x: 0,\n      y: 0\n    };\n  }\n\n  return {\n    top: overflow.top - rect.height - preventedOffsets.y,\n    right: overflow.right - rect.width + preventedOffsets.x,\n    bottom: overflow.bottom - rect.height + preventedOffsets.y,\n    left: overflow.left - rect.width - preventedOffsets.x\n  };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n  return [top, right, bottom, left].some(function (side) {\n    return overflow[side] >= 0;\n  });\n}\n\nfunction hide(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var preventedOffsets = state.modifiersData.preventOverflow;\n  var referenceOverflow = detectOverflow(state, {\n    elementContext: 'reference'\n  });\n  var popperAltOverflow = detectOverflow(state, {\n    altBoundary: true\n  });\n  var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n  var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n  var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n  var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n  state.modifiersData[name] = {\n    referenceClippingOffsets: referenceClippingOffsets,\n    popperEscapeOffsets: popperEscapeOffsets,\n    isReferenceHidden: isReferenceHidden,\n    hasPopperEscaped: hasPopperEscaped\n  };\n  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n    'data-popper-reference-hidden': isReferenceHidden,\n    'data-popper-escaped': hasPopperEscaped\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'hide',\n  enabled: true,\n  phase: 'main',\n  requiresIfExists: ['preventOverflow'],\n  fn: hide\n};", "import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n  var basePlacement = getBasePlacement(placement);\n  var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n  var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n    placement: placement\n  })) : offset,\n      skidding = _ref[0],\n      distance = _ref[1];\n\n  skidding = skidding || 0;\n  distance = (distance || 0) * invertDistance;\n  return [left, right].indexOf(basePlacement) >= 0 ? {\n    x: distance,\n    y: skidding\n  } : {\n    x: skidding,\n    y: distance\n  };\n}\n\nfunction offset(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options,\n      name = _ref2.name;\n  var _options$offset = options.offset,\n      offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n  var data = placements.reduce(function (acc, placement) {\n    acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n    return acc;\n  }, {});\n  var _data$state$placement = data[state.placement],\n      x = _data$state$placement.x,\n      y = _data$state$placement.y;\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.modifiersData.popperOffsets.x += x;\n    state.modifiersData.popperOffsets.y += y;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'offset',\n  enabled: true,\n  phase: 'main',\n  requires: ['popperOffsets'],\n  fn: offset\n};", "import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  // Offsets are the actual position the popper needs to have to be\n  // properly positioned near its reference element\n  // This is the most basic placement, and will be adjusted by\n  // the modifiers in the next step\n  state.modifiersData[name] = computeOffsets({\n    reference: state.rects.reference,\n    element: state.rects.popper,\n    strategy: 'absolute',\n    placement: state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'popperOffsets',\n  enabled: true,\n  phase: 'read',\n  fn: popperOffsets,\n  data: {}\n};", "export default function getAltAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}", "import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      padding = options.padding,\n      _options$tether = options.tether,\n      tether = _options$tether === void 0 ? true : _options$tether,\n      _options$tetherOffset = options.tetherOffset,\n      tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n  var overflow = detectOverflow(state, {\n    boundary: boundary,\n    rootBoundary: rootBoundary,\n    padding: padding,\n    altBoundary: altBoundary\n  });\n  var basePlacement = getBasePlacement(state.placement);\n  var variation = getVariation(state.placement);\n  var isBasePlacement = !variation;\n  var mainAxis = getMainAxisFromPlacement(basePlacement);\n  var altAxis = getAltAxis(mainAxis);\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n    placement: state.placement\n  })) : tetherOffset;\n  var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n    mainAxis: tetherOffsetValue,\n    altAxis: tetherOffsetValue\n  } : Object.assign({\n    mainAxis: 0,\n    altAxis: 0\n  }, tetherOffsetValue);\n  var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n  var data = {\n    x: 0,\n    y: 0\n  };\n\n  if (!popperOffsets) {\n    return;\n  }\n\n  if (checkMainAxis) {\n    var _offsetModifierState$;\n\n    var mainSide = mainAxis === 'y' ? top : left;\n    var altSide = mainAxis === 'y' ? bottom : right;\n    var len = mainAxis === 'y' ? 'height' : 'width';\n    var offset = popperOffsets[mainAxis];\n    var min = offset + overflow[mainSide];\n    var max = offset - overflow[altSide];\n    var additive = tether ? -popperRect[len] / 2 : 0;\n    var minLen = variation === start ? referenceRect[len] : popperRect[len];\n    var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n    // outside the reference bounds\n\n    var arrowElement = state.elements.arrow;\n    var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n      width: 0,\n      height: 0\n    };\n    var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n    var arrowPaddingMin = arrowPaddingObject[mainSide];\n    var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n    // to include its full size in the calculation. If the reference is small\n    // and near the edge of a boundary, the popper can overflow even if the\n    // reference is not overflowing as well (e.g. virtual elements with no\n    // width or height)\n\n    var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n    var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n    var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n    var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n    var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n    var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n    var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n    var tetherMax = offset + maxOffset - offsetModifierValue;\n    var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n    popperOffsets[mainAxis] = preventedOffset;\n    data[mainAxis] = preventedOffset - offset;\n  }\n\n  if (checkAltAxis) {\n    var _offsetModifierState$2;\n\n    var _mainSide = mainAxis === 'x' ? top : left;\n\n    var _altSide = mainAxis === 'x' ? bottom : right;\n\n    var _offset = popperOffsets[altAxis];\n\n    var _len = altAxis === 'y' ? 'height' : 'width';\n\n    var _min = _offset + overflow[_mainSide];\n\n    var _max = _offset - overflow[_altSide];\n\n    var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n    var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n    var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n    var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n    var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n    popperOffsets[altAxis] = _preventedOffset;\n    data[altAxis] = _preventedOffset - _offset;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'preventOverflow',\n  enabled: true,\n  phase: 'main',\n  fn: preventOverflow,\n  requiresIfExists: ['offset']\n};", "export default function getHTMLElementScroll(element) {\n  return {\n    scrollLeft: element.scrollLeft,\n    scrollTop: element.scrollTop\n  };\n}", "import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n  if (node === getWindow(node) || !isHTMLElement(node)) {\n    return getWindowScroll(node);\n  } else {\n    return getHTMLElementScroll(node);\n  }\n}", "import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n  var rect = element.getBoundingClientRect();\n  var scaleX = round(rect.width) / element.offsetWidth || 1;\n  var scaleY = round(rect.height) / element.offsetHeight || 1;\n  return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n\n  var isOffsetParentAnElement = isHTMLElement(offsetParent);\n  var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n  var documentElement = getDocumentElement(offsetParent);\n  var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n  var scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  var offsets = {\n    x: 0,\n    y: 0\n  };\n\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n    isScrollParent(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n\n    if (isHTMLElement(offsetParent)) {\n      offsets = getBoundingClientRect(offsetParent, true);\n      offsets.x += offsetParent.clientLeft;\n      offsets.y += offsetParent.clientTop;\n    } else if (documentElement) {\n      offsets.x = getWindowScrollBarX(documentElement);\n    }\n  }\n\n  return {\n    x: rect.left + scroll.scrollLeft - offsets.x,\n    y: rect.top + scroll.scrollTop - offsets.y,\n    width: rect.width,\n    height: rect.height\n  };\n}", "import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n  var map = new Map();\n  var visited = new Set();\n  var result = [];\n  modifiers.forEach(function (modifier) {\n    map.set(modifier.name, modifier);\n  }); // On visiting object, check for its dependencies and visit them recursively\n\n  function sort(modifier) {\n    visited.add(modifier.name);\n    var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n    requires.forEach(function (dep) {\n      if (!visited.has(dep)) {\n        var depModifier = map.get(dep);\n\n        if (depModifier) {\n          sort(depModifier);\n        }\n      }\n    });\n    result.push(modifier);\n  }\n\n  modifiers.forEach(function (modifier) {\n    if (!visited.has(modifier.name)) {\n      // check for visited object\n      sort(modifier);\n    }\n  });\n  return result;\n}\n\nexport default function orderModifiers(modifiers) {\n  // order based on dependencies\n  var orderedModifiers = order(modifiers); // order based on phase\n\n  return modifierPhases.reduce(function (acc, phase) {\n    return acc.concat(orderedModifiers.filter(function (modifier) {\n      return modifier.phase === phase;\n    }));\n  }, []);\n}", "export default function debounce(fn) {\n  var pending;\n  return function () {\n    if (!pending) {\n      pending = new Promise(function (resolve) {\n        Promise.resolve().then(function () {\n          pending = undefined;\n          resolve(fn());\n        });\n      });\n    }\n\n    return pending;\n  };\n}", "export default function format(str) {\n  for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    args[_key - 1] = arguments[_key];\n  }\n\n  return [].concat(args).reduce(function (p, c) {\n    return p.replace(/%s/, c);\n  }, str);\n}", "import format from \"./format.js\";\nimport { modifierPhases } from \"../enums.js\";\nvar INVALID_MODIFIER_ERROR = 'Popper: modifier \"%s\" provided an invalid %s property, expected %s but got %s';\nvar MISSING_DEPENDENCY_ERROR = 'Popper: modifier \"%s\" requires \"%s\", but \"%s\" modifier is not available';\nvar VALID_PROPERTIES = ['name', 'enabled', 'phase', 'fn', 'effect', 'requires', 'options'];\nexport default function validateModifiers(modifiers) {\n  modifiers.forEach(function (modifier) {\n    [].concat(Object.keys(modifier), VALID_PROPERTIES) // IE11-compatible replacement for `new Set(iterable)`\n    .filter(function (value, index, self) {\n      return self.indexOf(value) === index;\n    }).forEach(function (key) {\n      switch (key) {\n        case 'name':\n          if (typeof modifier.name !== 'string') {\n            console.error(format(INVALID_MODIFIER_ERROR, String(modifier.name), '\"name\"', '\"string\"', \"\\\"\" + String(modifier.name) + \"\\\"\"));\n          }\n\n          break;\n\n        case 'enabled':\n          if (typeof modifier.enabled !== 'boolean') {\n            console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '\"enabled\"', '\"boolean\"', \"\\\"\" + String(modifier.enabled) + \"\\\"\"));\n          }\n\n          break;\n\n        case 'phase':\n          if (modifierPhases.indexOf(modifier.phase) < 0) {\n            console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '\"phase\"', \"either \" + modifierPhases.join(', '), \"\\\"\" + String(modifier.phase) + \"\\\"\"));\n          }\n\n          break;\n\n        case 'fn':\n          if (typeof modifier.fn !== 'function') {\n            console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '\"fn\"', '\"function\"', \"\\\"\" + String(modifier.fn) + \"\\\"\"));\n          }\n\n          break;\n\n        case 'effect':\n          if (modifier.effect != null && typeof modifier.effect !== 'function') {\n            console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '\"effect\"', '\"function\"', \"\\\"\" + String(modifier.fn) + \"\\\"\"));\n          }\n\n          break;\n\n        case 'requires':\n          if (modifier.requires != null && !Array.isArray(modifier.requires)) {\n            console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '\"requires\"', '\"array\"', \"\\\"\" + String(modifier.requires) + \"\\\"\"));\n          }\n\n          break;\n\n        case 'requiresIfExists':\n          if (!Array.isArray(modifier.requiresIfExists)) {\n            console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '\"requiresIfExists\"', '\"array\"', \"\\\"\" + String(modifier.requiresIfExists) + \"\\\"\"));\n          }\n\n          break;\n\n        case 'options':\n        case 'data':\n          break;\n\n        default:\n          console.error(\"PopperJS: an invalid property has been provided to the \\\"\" + modifier.name + \"\\\" modifier, valid properties are \" + VALID_PROPERTIES.map(function (s) {\n            return \"\\\"\" + s + \"\\\"\";\n          }).join(', ') + \"; but \\\"\" + key + \"\\\" was provided.\");\n      }\n\n      modifier.requires && modifier.requires.forEach(function (requirement) {\n        if (modifiers.find(function (mod) {\n          return mod.name === requirement;\n        }) == null) {\n          console.error(format(MISSING_DEPENDENCY_ERROR, String(modifier.name), requirement, requirement));\n        }\n      });\n    });\n  });\n}", "export default function uniqueBy(arr, fn) {\n  var identifiers = new Set();\n  return arr.filter(function (item) {\n    var identifier = fn(item);\n\n    if (!identifiers.has(identifier)) {\n      identifiers.add(identifier);\n      return true;\n    }\n  });\n}", "export default function mergeByName(modifiers) {\n  var merged = modifiers.reduce(function (merged, current) {\n    var existing = merged[current.name];\n    merged[current.name] = existing ? Object.assign({}, existing, current, {\n      options: Object.assign({}, existing.options, current.options),\n      data: Object.assign({}, existing.data, current.data)\n    }) : current;\n    return merged;\n  }, {}); // IE11 does not support Object.values\n\n  return Object.keys(merged).map(function (key) {\n    return merged[key];\n  });\n}", "import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n  placement: 'bottom',\n  modifiers: [],\n  strategy: 'absolute'\n};\n\nfunction areValidElements() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return !args.some(function (element) {\n    return !(element && typeof element.getBoundingClientRect === 'function');\n  });\n}\n\nexport function popperGenerator(generatorOptions) {\n  if (generatorOptions === void 0) {\n    generatorOptions = {};\n  }\n\n  var _generatorOptions = generatorOptions,\n      _generatorOptions$def = _generatorOptions.defaultModifiers,\n      defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n      _generatorOptions$def2 = _generatorOptions.defaultOptions,\n      defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n  return function createPopper(reference, popper, options) {\n    if (options === void 0) {\n      options = defaultOptions;\n    }\n\n    var state = {\n      placement: 'bottom',\n      orderedModifiers: [],\n      options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n      modifiersData: {},\n      elements: {\n        reference: reference,\n        popper: popper\n      },\n      attributes: {},\n      styles: {}\n    };\n    var effectCleanupFns = [];\n    var isDestroyed = false;\n    var instance = {\n      state: state,\n      setOptions: function setOptions(setOptionsAction) {\n        var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n        cleanupModifierEffects();\n        state.options = Object.assign({}, defaultOptions, state.options, options);\n        state.scrollParents = {\n          reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n          popper: listScrollParents(popper)\n        }; // Orders the modifiers based on their dependencies and `phase`\n        // properties\n\n        var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n        state.orderedModifiers = orderedModifiers.filter(function (m) {\n          return m.enabled;\n        }); // Validate the provided modifiers so that the consumer will get warned\n        // if one of the modifiers is invalid for any reason\n\n        if (process.env.NODE_ENV !== \"production\") {\n          var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n            var name = _ref.name;\n            return name;\n          });\n          validateModifiers(modifiers);\n\n          if (getBasePlacement(state.options.placement) === auto) {\n            var flipModifier = state.orderedModifiers.find(function (_ref2) {\n              var name = _ref2.name;\n              return name === 'flip';\n            });\n\n            if (!flipModifier) {\n              console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n            }\n          }\n\n          var _getComputedStyle = getComputedStyle(popper),\n              marginTop = _getComputedStyle.marginTop,\n              marginRight = _getComputedStyle.marginRight,\n              marginBottom = _getComputedStyle.marginBottom,\n              marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n          // cause bugs with positioning, so we'll warn the consumer\n\n\n          if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n            return parseFloat(margin);\n          })) {\n            console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n          }\n        }\n\n        runModifierEffects();\n        return instance.update();\n      },\n      // Sync update \u2013 it will always be executed, even if not necessary. This\n      // is useful for low frequency updates where sync behavior simplifies the\n      // logic.\n      // For high frequency updates (e.g. `resize` and `scroll` events), always\n      // prefer the async Popper#update method\n      forceUpdate: function forceUpdate() {\n        if (isDestroyed) {\n          return;\n        }\n\n        var _state$elements = state.elements,\n            reference = _state$elements.reference,\n            popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n        // anymore\n\n        if (!areValidElements(reference, popper)) {\n          if (process.env.NODE_ENV !== \"production\") {\n            console.error(INVALID_ELEMENT_ERROR);\n          }\n\n          return;\n        } // Store the reference and popper rects to be read by modifiers\n\n\n        state.rects = {\n          reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n          popper: getLayoutRect(popper)\n        }; // Modifiers have the ability to reset the current update cycle. The\n        // most common use case for this is the `flip` modifier changing the\n        // placement, which then needs to re-run all the modifiers, because the\n        // logic was previously ran for the previous placement and is therefore\n        // stale/incorrect\n\n        state.reset = false;\n        state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n        // is filled with the initial data specified by the modifier. This means\n        // it doesn't persist and is fresh on each update.\n        // To ensure persistent data, use `${name}#persistent`\n\n        state.orderedModifiers.forEach(function (modifier) {\n          return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n        });\n        var __debug_loops__ = 0;\n\n        for (var index = 0; index < state.orderedModifiers.length; index++) {\n          if (process.env.NODE_ENV !== \"production\") {\n            __debug_loops__ += 1;\n\n            if (__debug_loops__ > 100) {\n              console.error(INFINITE_LOOP_ERROR);\n              break;\n            }\n          }\n\n          if (state.reset === true) {\n            state.reset = false;\n            index = -1;\n            continue;\n          }\n\n          var _state$orderedModifie = state.orderedModifiers[index],\n              fn = _state$orderedModifie.fn,\n              _state$orderedModifie2 = _state$orderedModifie.options,\n              _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n              name = _state$orderedModifie.name;\n\n          if (typeof fn === 'function') {\n            state = fn({\n              state: state,\n              options: _options,\n              name: name,\n              instance: instance\n            }) || state;\n          }\n        }\n      },\n      // Async and optimistically optimized update \u2013 it will not be executed if\n      // not necessary (debounced to run at most once-per-tick)\n      update: debounce(function () {\n        return new Promise(function (resolve) {\n          instance.forceUpdate();\n          resolve(state);\n        });\n      }),\n      destroy: function destroy() {\n        cleanupModifierEffects();\n        isDestroyed = true;\n      }\n    };\n\n    if (!areValidElements(reference, popper)) {\n      if (process.env.NODE_ENV !== \"production\") {\n        console.error(INVALID_ELEMENT_ERROR);\n      }\n\n      return instance;\n    }\n\n    instance.setOptions(options).then(function (state) {\n      if (!isDestroyed && options.onFirstUpdate) {\n        options.onFirstUpdate(state);\n      }\n    }); // Modifiers have the ability to execute arbitrary code before the first\n    // update cycle runs. They will be executed in the same order as the update\n    // cycle. This is useful when a modifier adds some persistent data that\n    // other modifiers need to use, but the modifier is run after the dependent\n    // one.\n\n    function runModifierEffects() {\n      state.orderedModifiers.forEach(function (_ref3) {\n        var name = _ref3.name,\n            _ref3$options = _ref3.options,\n            options = _ref3$options === void 0 ? {} : _ref3$options,\n            effect = _ref3.effect;\n\n        if (typeof effect === 'function') {\n          var cleanupFn = effect({\n            state: state,\n            name: name,\n            instance: instance,\n            options: options\n          });\n\n          var noopFn = function noopFn() {};\n\n          effectCleanupFns.push(cleanupFn || noopFn);\n        }\n      });\n    }\n\n    function cleanupModifierEffects() {\n      effectCleanupFns.forEach(function (fn) {\n        return fn();\n      });\n      effectCleanupFns = [];\n    }\n\n    return instance;\n  };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };", "import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n  defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";", "export const ROUND_ARROW =\n  '<svg width=\"16\" height=\"6\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M0 6s1.796-.013 4.67-3.615C5.851.9 6.93.006 8 0c1.07-.006 2.148.887 3.343 2.385C14.233 6.005 16 6 16 6H0z\"></svg>';\n\nexport const BOX_CLASS = `__NAMESPACE_PREFIX__-box`;\nexport const CONTENT_CLASS = `__NAMESPACE_PREFIX__-content`;\nexport const BACKDROP_CLASS = `__NAMESPACE_PREFIX__-backdrop`;\nexport const ARROW_CLASS = `__NAMESPACE_PREFIX__-arrow`;\nexport const SVG_ARROW_CLASS = `__NAMESPACE_PREFIX__-svg-arrow`;\n\nexport const TOUCH_OPTIONS = {passive: true, capture: true};\n\nexport const TIPPY_DEFAULT_APPEND_TO = () => document.body;\n", "import {BasePlacement, Placement} from './types';\n\nexport function hasOwnProperty(\n  obj: Record<string, unknown>,\n  key: string\n): boolean {\n  return {}.hasOwnProperty.call(obj, key);\n}\n\nexport function getValueAtIndexOrReturn<T>(\n  value: T | [T | null, T | null],\n  index: number,\n  defaultValue: T | [T, T]\n): T {\n  if (Array.isArray(value)) {\n    const v = value[index];\n    return v == null\n      ? Array.isArray(defaultValue)\n        ? defaultValue[index]\n        : defaultValue\n      : v;\n  }\n\n  return value;\n}\n\nexport function isType(value: any, type: string): boolean {\n  const str = {}.toString.call(value);\n  return str.indexOf('[object') === 0 && str.indexOf(`${type}]`) > -1;\n}\n\nexport function invokeWithArgsOrReturn(value: any, args: any[]): any {\n  return typeof value === 'function' ? value(...args) : value;\n}\n\nexport function debounce<T>(\n  fn: (arg: T) => void,\n  ms: number\n): (arg: T) => void {\n  // Avoid wrapping in `setTimeout` if ms is 0 anyway\n  if (ms === 0) {\n    return fn;\n  }\n\n  let timeout: any;\n\n  return (arg): void => {\n    clearTimeout(timeout);\n    timeout = setTimeout(() => {\n      fn(arg);\n    }, ms);\n  };\n}\n\nexport function removeProperties<T>(obj: T, keys: string[]): Partial<T> {\n  const clone = {...obj};\n  keys.forEach((key) => {\n    delete (clone as any)[key];\n  });\n  return clone;\n}\n\nexport function splitBySpaces(value: string): string[] {\n  return value.split(/\\s+/).filter(Boolean);\n}\n\nexport function normalizeToArray<T>(value: T | T[]): T[] {\n  return ([] as T[]).concat(value);\n}\n\nexport function pushIfUnique<T>(arr: T[], value: T): void {\n  if (arr.indexOf(value) === -1) {\n    arr.push(value);\n  }\n}\n\nexport function appendPxIfNumber(value: string | number): string {\n  return typeof value === 'number' ? `${value}px` : value;\n}\n\nexport function unique<T>(arr: T[]): T[] {\n  return arr.filter((item, index) => arr.indexOf(item) === index);\n}\n\nexport function getNumber(value: string | number): number {\n  return typeof value === 'number' ? value : parseFloat(value);\n}\n\nexport function getBasePlacement(placement: Placement): BasePlacement {\n  return placement.split('-')[0] as BasePlacement;\n}\n\nexport function arrayFrom(value: ArrayLike<any>): any[] {\n  return [].slice.call(value);\n}\n\nexport function removeUndefinedProps(\n  obj: Record<string, unknown>\n): Partial<Record<string, unknown>> {\n  return Object.keys(obj).reduce((acc, key) => {\n    if (obj[key] !== undefined) {\n      (acc as any)[key] = obj[key];\n    }\n\n    return acc;\n  }, {});\n}\n", "import {ReferenceElement, Targets} from './types';\nimport {PopperTreeData} from './types-internal';\nimport {arrayFrom, isType, normalizeToArray, getBasePlacement} from './utils';\n\nexport function div(): HTMLDivElement {\n  return document.createElement('div');\n}\n\nexport function isElement(value: unknown): value is Element | DocumentFragment {\n  return ['Element', 'Fragment'].some((type) => isType(value, type));\n}\n\nexport function isNodeList(value: unknown): value is NodeList {\n  return isType(value, 'NodeList');\n}\n\nexport function isMouseEvent(value: unknown): value is MouseEvent {\n  return isType(value, 'MouseEvent');\n}\n\nexport function isReferenceElement(value: any): value is ReferenceElement {\n  return !!(value && value._tippy && value._tippy.reference === value);\n}\n\nexport function getArrayOfElements(value: Targets): Element[] {\n  if (isElement(value)) {\n    return [value];\n  }\n\n  if (isNodeList(value)) {\n    return arrayFrom(value);\n  }\n\n  if (Array.isArray(value)) {\n    return value;\n  }\n\n  return arrayFrom(document.querySelectorAll(value));\n}\n\nexport function setTransitionDuration(\n  els: (HTMLDivElement | null)[],\n  value: number\n): void {\n  els.forEach((el) => {\n    if (el) {\n      el.style.transitionDuration = `${value}ms`;\n    }\n  });\n}\n\nexport function setVisibilityState(\n  els: (HTMLDivElement | null)[],\n  state: 'visible' | 'hidden'\n): void {\n  els.forEach((el) => {\n    if (el) {\n      el.setAttribute('data-state', state);\n    }\n  });\n}\n\nexport function getOwnerDocument(\n  elementOrElements: Element | Element[]\n): Document {\n  const [element] = normalizeToArray(elementOrElements);\n\n  // Elements created via a <template> have an ownerDocument with no reference to the body\n  return element?.ownerDocument?.body ? element.ownerDocument : document;\n}\n\nexport function isCursorOutsideInteractiveBorder(\n  popperTreeData: PopperTreeData[],\n  event: MouseEvent\n): boolean {\n  const {clientX, clientY} = event;\n\n  return popperTreeData.every(({popperRect, popperState, props}) => {\n    const {interactiveBorder} = props;\n    const basePlacement = getBasePlacement(popperState.placement);\n    const offsetData = popperState.modifiersData.offset;\n\n    if (!offsetData) {\n      return true;\n    }\n\n    const topDistance = basePlacement === 'bottom' ? offsetData.top!.y : 0;\n    const bottomDistance = basePlacement === 'top' ? offsetData.bottom!.y : 0;\n    const leftDistance = basePlacement === 'right' ? offsetData.left!.x : 0;\n    const rightDistance = basePlacement === 'left' ? offsetData.right!.x : 0;\n\n    const exceedsTop =\n      popperRect.top - clientY + topDistance > interactiveBorder;\n    const exceedsBottom =\n      clientY - popperRect.bottom - bottomDistance > interactiveBorder;\n    const exceedsLeft =\n      popperRect.left - clientX + leftDistance > interactiveBorder;\n    const exceedsRight =\n      clientX - popperRect.right - rightDistance > interactiveBorder;\n\n    return exceedsTop || exceedsBottom || exceedsLeft || exceedsRight;\n  });\n}\n\nexport function updateTransitionEndListener(\n  box: HTMLDivElement,\n  action: 'add' | 'remove',\n  listener: (event: TransitionEvent) => void\n): void {\n  const method = `${action}EventListener` as\n    | 'addEventListener'\n    | 'removeEventListener';\n\n  // some browsers apparently support `transition` (unprefixed) but only fire\n  // `webkitTransitionEnd`...\n  ['transitionend', 'webkitTransitionEnd'].forEach((event) => {\n    box[method](event, listener as EventListener);\n  });\n}\n\n/**\n * Compared to xxx.contains, this function works for dom structures with shadow\n * dom\n */\nexport function actualContains(parent: Element, child: Element): boolean {\n  let target = child;\n  while (target) {\n    if (parent.contains(target)) {\n      return true;\n    }\n    target = (target.getRootNode?.() as any)?.host;\n  }\n  return false;\n}\n", "import {TOUCH_OPTIONS} from './constants';\nimport {isReferenceElement} from './dom-utils';\n\nexport const currentInput = {isTouch: false};\nlet lastMouseMoveTime = 0;\n\n/**\n * When a `touchstart` event is fired, it's assumed the user is using touch\n * input. We'll bind a `mousemove` event listener to listen for mouse input in\n * the future. This way, the `isTouch` property is fully dynamic and will handle\n * hybrid devices that use a mix of touch + mouse input.\n */\nexport function onDocumentTouchStart(): void {\n  if (currentInput.isTouch) {\n    return;\n  }\n\n  currentInput.isTouch = true;\n\n  if (window.performance) {\n    document.addEventListener('mousemove', onDocumentMouseMove);\n  }\n}\n\n/**\n * When two `mousemove` event are fired consecutively within 20ms, it's assumed\n * the user is using mouse input again. `mousemove` can fire on touch devices as\n * well, but very rarely that quickly.\n */\nexport function onDocumentMouseMove(): void {\n  const now = performance.now();\n\n  if (now - lastMouseMoveTime < 20) {\n    currentInput.isTouch = false;\n\n    document.removeEventListener('mousemove', onDocumentMouseMove);\n  }\n\n  lastMouseMoveTime = now;\n}\n\n/**\n * When an element is in focus and has a tippy, leaving the tab/window and\n * returning causes it to show again. For mouse users this is unexpected, but\n * for keyboard use it makes sense.\n * TODO: find a better technique to solve this problem\n */\nexport function onWindowBlur(): void {\n  const activeElement = document.activeElement as HTMLElement | null;\n\n  if (isReferenceElement(activeElement)) {\n    const instance = activeElement._tippy!;\n\n    if (activeElement.blur && !instance.state.isVisible) {\n      activeElement.blur();\n    }\n  }\n}\n\nexport default function bindGlobalEventListeners(): void {\n  document.addEventListener('touchstart', onDocumentTouchStart, TOUCH_OPTIONS);\n  window.addEventListener('blur', onWindowBlur);\n}\n", "export const isBrowser =\n  typeof window !== 'undefined' && typeof document !== 'undefined';\n\nexport const isIE11 = isBrowser\n  ? // @ts-ignore\n    !!window.msCrypto\n  : false;\n", "import {Targets} from './types';\n\nexport function createMemoryLeakWarning(method: string): string {\n  const txt = method === 'destroy' ? 'n already-' : ' ';\n\n  return [\n    `${method}() was called on a${txt}destroyed instance. This is a no-op but`,\n    'indicates a potential memory leak.',\n  ].join(' ');\n}\n\nexport function clean(value: string): string {\n  const spacesAndTabs = /[ \\t]{2,}/g;\n  const lineStartWithSpaces = /^[ \\t]*/gm;\n\n  return value\n    .replace(spacesAndTabs, ' ')\n    .replace(lineStartWithSpaces, '')\n    .trim();\n}\n\nfunction getDevMessage(message: string): string {\n  return clean(`\n  %ctippy.js\n\n  %c${clean(message)}\n\n  %c👷‍ This is a development-only message. It will be removed in production.\n  `);\n}\n\nexport function getFormattedMessage(message: string): string[] {\n  return [\n    getDevMessage(message),\n    // title\n    'color: #00C584; font-size: 1.3em; font-weight: bold;',\n    // message\n    'line-height: 1.5',\n    // footer\n    'color: #a6a095;',\n  ];\n}\n\n// Assume warnings and errors never have the same message\nlet visitedMessages: Set<string>;\nif (__DEV__) {\n  resetVisitedMessages();\n}\n\nexport function resetVisitedMessages(): void {\n  visitedMessages = new Set();\n}\n\nexport function warnWhen(condition: boolean, message: string): void {\n  if (condition && !visitedMessages.has(message)) {\n    visitedMessages.add(message);\n    console.warn(...getFormattedMessage(message));\n  }\n}\n\nexport function errorWhen(condition: boolean, message: string): void {\n  if (condition && !visitedMessages.has(message)) {\n    visitedMessages.add(message);\n    console.error(...getFormattedMessage(message));\n  }\n}\n\nexport function validateTargets(targets: Targets): void {\n  const didPassFalsyValue = !targets;\n  const didPassPlainObject =\n    Object.prototype.toString.call(targets) === '[object Object]' &&\n    !(targets as any).addEventListener;\n\n  errorWhen(\n    didPassFalsyValue,\n    [\n      'tippy() was passed',\n      '`' + String(targets) + '`',\n      'as its targets (first) argument. Valid types are: String, Element,',\n      'Element[], or NodeList.',\n    ].join(' ')\n  );\n\n  errorWhen(\n    didPassPlainObject,\n    [\n      'tippy() was passed a plain object which is not supported as an argument',\n      'for virtual positioning. Use props.getReferenceClientRect instead.',\n    ].join(' ')\n  );\n}\n", "import {DefaultProps, Plugin, Props, ReferenceElement, Tippy} from './types';\nimport {\n  hasOwnProperty,\n  removeProperties,\n  invokeWithArgsOrReturn,\n} from './utils';\nimport {warnWhen} from './validation';\nimport {TIPPY_DEFAULT_APPEND_TO} from './constants';\n\nconst pluginProps = {\n  animateFill: false,\n  followCursor: false,\n  inlinePositioning: false,\n  sticky: false,\n};\n\nconst renderProps = {\n  allowHTML: false,\n  animation: 'fade',\n  arrow: true,\n  content: '',\n  inertia: false,\n  maxWidth: 350,\n  role: 'tooltip',\n  theme: '',\n  zIndex: 9999,\n};\n\nexport const defaultProps: DefaultProps = {\n  appendTo: TIPPY_DEFAULT_APPEND_TO,\n  aria: {\n    content: 'auto',\n    expanded: 'auto',\n  },\n  delay: 0,\n  duration: [300, 250],\n  getReferenceClientRect: null,\n  hideOnClick: true,\n  ignoreAttributes: false,\n  interactive: false,\n  interactiveBorder: 2,\n  interactiveDebounce: 0,\n  moveTransition: '',\n  offset: [0, 10],\n  onAfterUpdate() {},\n  onBeforeUpdate() {},\n  onCreate() {},\n  onDestroy() {},\n  onHidden() {},\n  onHide() {},\n  onMount() {},\n  onShow() {},\n  onShown() {},\n  onTrigger() {},\n  onUntrigger() {},\n  onClickOutside() {},\n  placement: 'top',\n  plugins: [],\n  popperOptions: {},\n  render: null,\n  showOnCreate: false,\n  touch: true,\n  trigger: 'mouseenter focus',\n  triggerTarget: null,\n  ...pluginProps,\n  ...renderProps,\n};\n\nconst defaultKeys = Object.keys(defaultProps);\n\nexport const setDefaultProps: Tippy['setDefaultProps'] = (partialProps) => {\n  /* istanbul ignore else */\n  if (__DEV__) {\n    validateProps(partialProps, []);\n  }\n\n  const keys = Object.keys(partialProps) as Array<keyof DefaultProps>;\n  keys.forEach((key) => {\n    (defaultProps as any)[key] = partialProps[key];\n  });\n};\n\nexport function getExtendedPassedProps(\n  passedProps: Partial<Props> & Record<string, unknown>\n): Partial<Props> {\n  const plugins = passedProps.plugins || [];\n  const pluginProps = plugins.reduce<Record<string, unknown>>((acc, plugin) => {\n    const {name, defaultValue} = plugin;\n\n    if (name) {\n      acc[name] =\n        passedProps[name] !== undefined\n          ? passedProps[name]\n          : (defaultProps as any)[name] ?? defaultValue;\n    }\n\n    return acc;\n  }, {});\n\n  return {\n    ...passedProps,\n    ...pluginProps,\n  };\n}\n\nexport function getDataAttributeProps(\n  reference: ReferenceElement,\n  plugins: Plugin[]\n): Record<string, unknown> {\n  const propKeys = plugins\n    ? Object.keys(getExtendedPassedProps({...defaultProps, plugins}))\n    : defaultKeys;\n\n  const props = propKeys.reduce(\n    (acc: Partial<Props> & Record<string, unknown>, key) => {\n      const valueAsString = (\n        reference.getAttribute(`data-tippy-${key}`) || ''\n      ).trim();\n\n      if (!valueAsString) {\n        return acc;\n      }\n\n      if (key === 'content') {\n        acc[key] = valueAsString;\n      } else {\n        try {\n          acc[key] = JSON.parse(valueAsString);\n        } catch (e) {\n          acc[key] = valueAsString;\n        }\n      }\n\n      return acc;\n    },\n    {}\n  );\n\n  return props;\n}\n\nexport function evaluateProps(\n  reference: ReferenceElement,\n  props: Props\n): Props {\n  const out = {\n    ...props,\n    content: invokeWithArgsOrReturn(props.content, [reference]),\n    ...(props.ignoreAttributes\n      ? {}\n      : getDataAttributeProps(reference, props.plugins)),\n  };\n\n  out.aria = {\n    ...defaultProps.aria,\n    ...out.aria,\n  };\n\n  out.aria = {\n    expanded:\n      out.aria.expanded === 'auto' ? props.interactive : out.aria.expanded,\n    content:\n      out.aria.content === 'auto'\n        ? props.interactive\n          ? null\n          : 'describedby'\n        : out.aria.content,\n  };\n\n  return out;\n}\n\nexport function validateProps(\n  partialProps: Partial<Props> = {},\n  plugins: Plugin[] = []\n): void {\n  const keys = Object.keys(partialProps) as Array<keyof Props>;\n  keys.forEach((prop) => {\n    const nonPluginProps = removeProperties(\n      defaultProps,\n      Object.keys(pluginProps)\n    );\n\n    let didPassUnknownProp = !hasOwnProperty(nonPluginProps, prop);\n\n    // Check if the prop exists in `plugins`\n    if (didPassUnknownProp) {\n      didPassUnknownProp =\n        plugins.filter((plugin) => plugin.name === prop).length === 0;\n    }\n\n    warnWhen(\n      didPassUnknownProp,\n      [\n        `\\`${prop}\\``,\n        \"is not a valid prop. You may have spelled it incorrectly, or if it's\",\n        'a plugin, forgot to pass it in an array as props.plugins.',\n        '\\n\\n',\n        'All props: https://atomiks.github.io/tippyjs/v6/all-props/\\n',\n        'Plugins: https://atomiks.github.io/tippyjs/v6/plugins/',\n      ].join(' ')\n    );\n  });\n}\n", "import {\n  ARROW_CLASS,\n  BACKDROP_CLASS,\n  BOX_CLASS,\n  CONTENT_CLASS,\n  SVG_ARROW_CLASS,\n} from './constants';\nimport {div, isElement} from './dom-utils';\nimport {Instance, PopperElement, Props} from './types';\nimport {PopperChildren} from './types-internal';\nimport {arrayFrom} from './utils';\n\n// Firefox extensions don't allow .innerHTML = \"...\" property. This tricks it.\nconst innerHTML = (): 'innerHTML' => 'innerHTML';\n\nfunction dangerouslySetInnerHTML(element: Element, html: string): void {\n  element[innerHTML()] = html;\n}\n\nfunction createArrowElement(value: Props['arrow']): HTMLDivElement {\n  const arrow = div();\n\n  if (value === true) {\n    arrow.className = ARROW_CLASS;\n  } else {\n    arrow.className = SVG_ARROW_CLASS;\n\n    if (isElement(value)) {\n      arrow.appendChild(value);\n    } else {\n      dangerouslySetInnerHTML(arrow, value as string);\n    }\n  }\n\n  return arrow;\n}\n\nexport function setContent(content: HTMLDivElement, props: Props): void {\n  if (isElement(props.content)) {\n    dangerouslySetInnerHTML(content, '');\n    content.appendChild(props.content);\n  } else if (typeof props.content !== 'function') {\n    if (props.allowHTML) {\n      dangerouslySetInnerHTML(content, props.content);\n    } else {\n      content.textContent = props.content;\n    }\n  }\n}\n\nexport function getChildren(popper: PopperElement): PopperChildren {\n  const box = popper.firstElementChild as HTMLDivElement;\n  const boxChildren = arrayFrom(box.children);\n\n  return {\n    box,\n    content: boxChildren.find((node) => node.classList.contains(CONTENT_CLASS)),\n    arrow: boxChildren.find(\n      (node) =>\n        node.classList.contains(ARROW_CLASS) ||\n        node.classList.contains(SVG_ARROW_CLASS)\n    ),\n    backdrop: boxChildren.find((node) =>\n      node.classList.contains(BACKDROP_CLASS)\n    ),\n  };\n}\n\nexport function render(\n  instance: Instance\n): {\n  popper: PopperElement;\n  onUpdate?: (prevProps: Props, nextProps: Props) => void;\n} {\n  const popper = div();\n\n  const box = div();\n  box.className = BOX_CLASS;\n  box.setAttribute('data-state', 'hidden');\n  box.setAttribute('tabindex', '-1');\n\n  const content = div();\n  content.className = CONTENT_CLASS;\n  content.setAttribute('data-state', 'hidden');\n\n  setContent(content, instance.props);\n\n  popper.appendChild(box);\n  box.appendChild(content);\n\n  onUpdate(instance.props, instance.props);\n\n  function onUpdate(prevProps: Props, nextProps: Props): void {\n    const {box, content, arrow} = getChildren(popper);\n\n    if (nextProps.theme) {\n      box.setAttribute('data-theme', nextProps.theme);\n    } else {\n      box.removeAttribute('data-theme');\n    }\n\n    if (typeof nextProps.animation === 'string') {\n      box.setAttribute('data-animation', nextProps.animation);\n    } else {\n      box.removeAttribute('data-animation');\n    }\n\n    if (nextProps.inertia) {\n      box.setAttribute('data-inertia', '');\n    } else {\n      box.removeAttribute('data-inertia');\n    }\n\n    box.style.maxWidth =\n      typeof nextProps.maxWidth === 'number'\n        ? `${nextProps.maxWidth}px`\n        : nextProps.maxWidth;\n\n    if (nextProps.role) {\n      box.setAttribute('role', nextProps.role);\n    } else {\n      box.removeAttribute('role');\n    }\n\n    if (\n      prevProps.content !== nextProps.content ||\n      prevProps.allowHTML !== nextProps.allowHTML\n    ) {\n      setContent(content, instance.props);\n    }\n\n    if (nextProps.arrow) {\n      if (!arrow) {\n        box.appendChild(createArrowElement(nextProps.arrow));\n      } else if (prevProps.arrow !== nextProps.arrow) {\n        box.removeChild(arrow);\n        box.appendChild(createArrowElement(nextProps.arrow));\n      }\n    } else if (arrow) {\n      box.removeChild(arrow!);\n    }\n  }\n\n  return {\n    popper,\n    onUpdate,\n  };\n}\n\n// Runtime check to identify if the render function is the default one; this\n// way we can apply default CSS transitions logic and it can be tree-shaken away\nrender.$$tippy = true;\n", "import {createPopper, StrictModifiers, Modifier} from '@popperjs/core';\nimport {currentInput} from './bindGlobalEventListeners';\nimport {isIE11} from './browser';\nimport {TIPPY_DEFAULT_APPEND_TO, TOUCH_OPTIONS} from './constants';\nimport {\n  actualContains,\n  div,\n  getOwnerDocument,\n  isCursorOutsideInteractiveBorder,\n  isMouseEvent,\n  setTransitionDuration,\n  setVisibilityState,\n  updateTransitionEndListener,\n} from './dom-utils';\nimport {defaultProps, evaluateProps, getExtendedPassedProps} from './props';\nimport {getChildren} from './template';\nimport {\n  Content,\n  Instance,\n  LifecycleHooks,\n  PopperElement,\n  Props,\n  ReferenceElement,\n} from './types';\nimport {ListenerObject, PopperTreeData, PopperChildren} from './types-internal';\nimport {\n  arrayFrom,\n  debounce,\n  getValueAtIndexOrReturn,\n  invokeWithArgsOrReturn,\n  normalizeToArray,\n  pushIfUnique,\n  splitBySpaces,\n  unique,\n  removeUndefinedProps,\n} from './utils';\nimport {createMemoryLeakWarning, errorWhen, warnWhen} from './validation';\n\nlet idCounter = 1;\nlet mouseMoveListeners: ((event: MouseEvent) => void)[] = [];\n\n// Used by `hideAll()`\nexport let mountedInstances: Instance[] = [];\n\nexport default function createTippy(\n  reference: ReferenceElement,\n  passedProps: Partial<Props>\n): Instance {\n  const props = evaluateProps(reference, {\n    ...defaultProps,\n    ...getExtendedPassedProps(removeUndefinedProps(passedProps)),\n  });\n\n  // ===========================================================================\n  // 🔒 Private members\n  // ===========================================================================\n  let showTimeout: any;\n  let hideTimeout: any;\n  let scheduleHideAnimationFrame: number;\n  let isVisibleFromClick = false;\n  let didHideDueToDocumentMouseDown = false;\n  let didTouchMove = false;\n  let ignoreOnFirstUpdate = false;\n  let lastTriggerEvent: Event | undefined;\n  let currentTransitionEndListener: (event: TransitionEvent) => void;\n  let onFirstUpdate: () => void;\n  let listeners: ListenerObject[] = [];\n  let debouncedOnMouseMove = debounce(onMouseMove, props.interactiveDebounce);\n  let currentTarget: Element;\n\n  // ===========================================================================\n  // 🔑 Public members\n  // ===========================================================================\n  const id = idCounter++;\n  const popperInstance = null;\n  const plugins = unique(props.plugins);\n\n  const state = {\n    // Is the instance currently enabled?\n    isEnabled: true,\n    // Is the tippy currently showing and not transitioning out?\n    isVisible: false,\n    // Has the instance been destroyed?\n    isDestroyed: false,\n    // Is the tippy currently mounted to the DOM?\n    isMounted: false,\n    // Has the tippy finished transitioning in?\n    isShown: false,\n  };\n\n  const instance: Instance = {\n    // properties\n    id,\n    reference,\n    popper: div(),\n    popperInstance,\n    props,\n    state,\n    plugins,\n    // methods\n    clearDelayTimeouts,\n    setProps,\n    setContent,\n    show,\n    hide,\n    hideWithInteractivity,\n    enable,\n    disable,\n    unmount,\n    destroy,\n  };\n\n  // TODO: Investigate why this early return causes a TDZ error in the tests —\n  // it doesn't seem to happen in the browser\n  /* istanbul ignore if */\n  if (!props.render) {\n    if (__DEV__) {\n      errorWhen(true, 'render() function has not been supplied.');\n    }\n\n    return instance;\n  }\n\n  // ===========================================================================\n  // Initial mutations\n  // ===========================================================================\n  const {popper, onUpdate} = props.render(instance);\n\n  popper.setAttribute('data-__NAMESPACE_PREFIX__-root', '');\n  popper.id = `__NAMESPACE_PREFIX__-${instance.id}`;\n\n  instance.popper = popper;\n  reference._tippy = instance;\n  popper._tippy = instance;\n\n  const pluginsHooks = plugins.map((plugin) => plugin.fn(instance));\n  const hasAriaExpanded = reference.hasAttribute('aria-expanded');\n\n  addListeners();\n  handleAriaExpandedAttribute();\n  handleStyles();\n\n  invokeHook('onCreate', [instance]);\n\n  if (props.showOnCreate) {\n    scheduleShow();\n  }\n\n  // Prevent a tippy with a delay from hiding if the cursor left then returned\n  // before it started hiding\n  popper.addEventListener('mouseenter', () => {\n    if (instance.props.interactive && instance.state.isVisible) {\n      instance.clearDelayTimeouts();\n    }\n  });\n\n  popper.addEventListener('mouseleave', () => {\n    if (\n      instance.props.interactive &&\n      instance.props.trigger.indexOf('mouseenter') >= 0\n    ) {\n      getDocument().addEventListener('mousemove', debouncedOnMouseMove);\n    }\n  });\n\n  return instance;\n\n  // ===========================================================================\n  // 🔒 Private methods\n  // ===========================================================================\n  function getNormalizedTouchSettings(): [string | boolean, number] {\n    const {touch} = instance.props;\n    return Array.isArray(touch) ? touch : [touch, 0];\n  }\n\n  function getIsCustomTouchBehavior(): boolean {\n    return getNormalizedTouchSettings()[0] === 'hold';\n  }\n\n  function getIsDefaultRenderFn(): boolean {\n    // @ts-ignore\n    return !!instance.props.render?.$$tippy;\n  }\n\n  function getCurrentTarget(): Element {\n    return currentTarget || reference;\n  }\n\n  function getDocument(): Document {\n    const parent = getCurrentTarget().parentNode as Element;\n    return parent ? getOwnerDocument(parent) : document;\n  }\n\n  function getDefaultTemplateChildren(): PopperChildren {\n    return getChildren(popper);\n  }\n\n  function getDelay(isShow: boolean): number {\n    // For touch or keyboard input, force `0` delay for UX reasons\n    // Also if the instance is mounted but not visible (transitioning out),\n    // ignore delay\n    if (\n      (instance.state.isMounted && !instance.state.isVisible) ||\n      currentInput.isTouch ||\n      (lastTriggerEvent && lastTriggerEvent.type === 'focus')\n    ) {\n      return 0;\n    }\n\n    return getValueAtIndexOrReturn(\n      instance.props.delay,\n      isShow ? 0 : 1,\n      defaultProps.delay\n    );\n  }\n\n  function handleStyles(fromHide = false): void {\n    popper.style.pointerEvents =\n      instance.props.interactive && !fromHide ? '' : 'none';\n    popper.style.zIndex = `${instance.props.zIndex}`;\n  }\n\n  function invokeHook(\n    hook: keyof LifecycleHooks,\n    args: [Instance, any?],\n    shouldInvokePropsHook = true\n  ): void {\n    pluginsHooks.forEach((pluginHooks) => {\n      if (pluginHooks[hook]) {\n        pluginHooks[hook]!(...args);\n      }\n    });\n\n    if (shouldInvokePropsHook) {\n      instance.props[hook](...args);\n    }\n  }\n\n  function handleAriaContentAttribute(): void {\n    const {aria} = instance.props;\n\n    if (!aria.content) {\n      return;\n    }\n\n    const attr = `aria-${aria.content}`;\n    const id = popper.id;\n    const nodes = normalizeToArray(instance.props.triggerTarget || reference);\n\n    nodes.forEach((node) => {\n      const currentValue = node.getAttribute(attr);\n\n      if (instance.state.isVisible) {\n        node.setAttribute(attr, currentValue ? `${currentValue} ${id}` : id);\n      } else {\n        const nextValue = currentValue && currentValue.replace(id, '').trim();\n\n        if (nextValue) {\n          node.setAttribute(attr, nextValue);\n        } else {\n          node.removeAttribute(attr);\n        }\n      }\n    });\n  }\n\n  function handleAriaExpandedAttribute(): void {\n    if (hasAriaExpanded || !instance.props.aria.expanded) {\n      return;\n    }\n\n    const nodes = normalizeToArray(instance.props.triggerTarget || reference);\n\n    nodes.forEach((node) => {\n      if (instance.props.interactive) {\n        node.setAttribute(\n          'aria-expanded',\n          instance.state.isVisible && node === getCurrentTarget()\n            ? 'true'\n            : 'false'\n        );\n      } else {\n        node.removeAttribute('aria-expanded');\n      }\n    });\n  }\n\n  function cleanupInteractiveMouseListeners(): void {\n    getDocument().removeEventListener('mousemove', debouncedOnMouseMove);\n    mouseMoveListeners = mouseMoveListeners.filter(\n      (listener) => listener !== debouncedOnMouseMove\n    );\n  }\n\n  function onDocumentPress(event: MouseEvent | TouchEvent): void {\n    // Moved finger to scroll instead of an intentional tap outside\n    if (currentInput.isTouch) {\n      if (didTouchMove || event.type === 'mousedown') {\n        return;\n      }\n    }\n\n    const actualTarget =\n      (event.composedPath && event.composedPath()[0]) || event.target;\n\n    // Clicked on interactive popper\n    if (\n      instance.props.interactive &&\n      actualContains(popper, actualTarget as Element)\n    ) {\n      return;\n    }\n\n    // Clicked on the event listeners target\n    if (\n      normalizeToArray(instance.props.triggerTarget || reference).some((el) =>\n        actualContains(el, actualTarget as Element)\n      )\n    ) {\n      if (currentInput.isTouch) {\n        return;\n      }\n\n      if (\n        instance.state.isVisible &&\n        instance.props.trigger.indexOf('click') >= 0\n      ) {\n        return;\n      }\n    } else {\n      invokeHook('onClickOutside', [instance, event]);\n    }\n\n    if (instance.props.hideOnClick === true) {\n      instance.clearDelayTimeouts();\n      instance.hide();\n\n      // `mousedown` event is fired right before `focus` if pressing the\n      // currentTarget. This lets a tippy with `focus` trigger know that it\n      // should not show\n      didHideDueToDocumentMouseDown = true;\n      setTimeout(() => {\n        didHideDueToDocumentMouseDown = false;\n      });\n\n      // The listener gets added in `scheduleShow()`, but this may be hiding it\n      // before it shows, and hide()'s early bail-out behavior can prevent it\n      // from being cleaned up\n      if (!instance.state.isMounted) {\n        removeDocumentPress();\n      }\n    }\n  }\n\n  function onTouchMove(): void {\n    didTouchMove = true;\n  }\n\n  function onTouchStart(): void {\n    didTouchMove = false;\n  }\n\n  function addDocumentPress(): void {\n    const doc = getDocument();\n    doc.addEventListener('mousedown', onDocumentPress, true);\n    doc.addEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);\n    doc.addEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);\n    doc.addEventListener('touchmove', onTouchMove, TOUCH_OPTIONS);\n  }\n\n  function removeDocumentPress(): void {\n    const doc = getDocument();\n    doc.removeEventListener('mousedown', onDocumentPress, true);\n    doc.removeEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);\n    doc.removeEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);\n    doc.removeEventListener('touchmove', onTouchMove, TOUCH_OPTIONS);\n  }\n\n  function onTransitionedOut(duration: number, callback: () => void): void {\n    onTransitionEnd(duration, () => {\n      if (\n        !instance.state.isVisible &&\n        popper.parentNode &&\n        popper.parentNode.contains(popper)\n      ) {\n        callback();\n      }\n    });\n  }\n\n  function onTransitionedIn(duration: number, callback: () => void): void {\n    onTransitionEnd(duration, callback);\n  }\n\n  function onTransitionEnd(duration: number, callback: () => void): void {\n    const box = getDefaultTemplateChildren().box;\n\n    function listener(event: TransitionEvent): void {\n      if (event.target === box) {\n        updateTransitionEndListener(box, 'remove', listener);\n        callback();\n      }\n    }\n\n    // Make callback synchronous if duration is 0\n    // `transitionend` won't fire otherwise\n    if (duration === 0) {\n      return callback();\n    }\n\n    updateTransitionEndListener(box, 'remove', currentTransitionEndListener);\n    updateTransitionEndListener(box, 'add', listener);\n\n    currentTransitionEndListener = listener;\n  }\n\n  function on(\n    eventType: string,\n    handler: EventListener,\n    options: boolean | Record<string, unknown> = false\n  ): void {\n    const nodes = normalizeToArray(instance.props.triggerTarget || reference);\n    nodes.forEach((node) => {\n      node.addEventListener(eventType, handler, options);\n      listeners.push({node, eventType, handler, options});\n    });\n  }\n\n  function addListeners(): void {\n    if (getIsCustomTouchBehavior()) {\n      on('touchstart', onTrigger, {passive: true});\n      on('touchend', onMouseLeave as EventListener, {passive: true});\n    }\n\n    splitBySpaces(instance.props.trigger).forEach((eventType) => {\n      if (eventType === 'manual') {\n        return;\n      }\n\n      on(eventType, onTrigger);\n\n      switch (eventType) {\n        case 'mouseenter':\n          on('mouseleave', onMouseLeave as EventListener);\n          break;\n        case 'focus':\n          on(isIE11 ? 'focusout' : 'blur', onBlurOrFocusOut as EventListener);\n          break;\n        case 'focusin':\n          on('focusout', onBlurOrFocusOut as EventListener);\n          break;\n      }\n    });\n  }\n\n  function removeListeners(): void {\n    listeners.forEach(({node, eventType, handler, options}: ListenerObject) => {\n      node.removeEventListener(eventType, handler, options);\n    });\n    listeners = [];\n  }\n\n  function onTrigger(event: Event): void {\n    let shouldScheduleClickHide = false;\n\n    if (\n      !instance.state.isEnabled ||\n      isEventListenerStopped(event) ||\n      didHideDueToDocumentMouseDown\n    ) {\n      return;\n    }\n\n    const wasFocused = lastTriggerEvent?.type === 'focus';\n\n    lastTriggerEvent = event;\n    currentTarget = event.currentTarget as Element;\n\n    handleAriaExpandedAttribute();\n\n    if (!instance.state.isVisible && isMouseEvent(event)) {\n      // If scrolling, `mouseenter` events can be fired if the cursor lands\n      // over a new target, but `mousemove` events don't get fired. This\n      // causes interactive tooltips to get stuck open until the cursor is\n      // moved\n      mouseMoveListeners.forEach((listener) => listener(event));\n    }\n\n    // Toggle show/hide when clicking click-triggered tooltips\n    if (\n      event.type === 'click' &&\n      (instance.props.trigger.indexOf('mouseenter') < 0 ||\n        isVisibleFromClick) &&\n      instance.props.hideOnClick !== false &&\n      instance.state.isVisible\n    ) {\n      shouldScheduleClickHide = true;\n    } else {\n      scheduleShow(event);\n    }\n\n    if (event.type === 'click') {\n      isVisibleFromClick = !shouldScheduleClickHide;\n    }\n\n    if (shouldScheduleClickHide && !wasFocused) {\n      scheduleHide(event);\n    }\n  }\n\n  function onMouseMove(event: MouseEvent): void {\n    const target = event.target as Node;\n    const isCursorOverReferenceOrPopper =\n      getCurrentTarget().contains(target) || popper.contains(target);\n\n    if (event.type === 'mousemove' && isCursorOverReferenceOrPopper) {\n      return;\n    }\n\n    const popperTreeData = getNestedPopperTree()\n      .concat(popper)\n      .map((popper) => {\n        const instance = popper._tippy!;\n        const state = instance.popperInstance?.state;\n\n        if (state) {\n          return {\n            popperRect: popper.getBoundingClientRect(),\n            popperState: state,\n            props,\n          };\n        }\n\n        return null;\n      })\n      .filter(Boolean) as PopperTreeData[];\n\n    if (isCursorOutsideInteractiveBorder(popperTreeData, event)) {\n      cleanupInteractiveMouseListeners();\n      scheduleHide(event);\n    }\n  }\n\n  function onMouseLeave(event: MouseEvent): void {\n    const shouldBail =\n      isEventListenerStopped(event) ||\n      (instance.props.trigger.indexOf('click') >= 0 && isVisibleFromClick);\n\n    if (shouldBail) {\n      return;\n    }\n\n    if (instance.props.interactive) {\n      instance.hideWithInteractivity(event);\n      return;\n    }\n\n    scheduleHide(event);\n  }\n\n  function onBlurOrFocusOut(event: FocusEvent): void {\n    if (\n      instance.props.trigger.indexOf('focusin') < 0 &&\n      event.target !== getCurrentTarget()\n    ) {\n      return;\n    }\n\n    // If focus was moved to within the popper\n    if (\n      instance.props.interactive &&\n      event.relatedTarget &&\n      popper.contains(event.relatedTarget as Element)\n    ) {\n      return;\n    }\n\n    scheduleHide(event);\n  }\n\n  function isEventListenerStopped(event: Event): boolean {\n    return currentInput.isTouch\n      ? getIsCustomTouchBehavior() !== event.type.indexOf('touch') >= 0\n      : false;\n  }\n\n  function createPopperInstance(): void {\n    destroyPopperInstance();\n\n    const {\n      popperOptions,\n      placement,\n      offset,\n      getReferenceClientRect,\n      moveTransition,\n    } = instance.props;\n\n    const arrow = getIsDefaultRenderFn() ? getChildren(popper).arrow : null;\n\n    const computedReference = getReferenceClientRect\n      ? {\n          getBoundingClientRect: getReferenceClientRect,\n          contextElement:\n            getReferenceClientRect.contextElement || getCurrentTarget(),\n        }\n      : reference;\n\n    const tippyModifier: Modifier<'$$tippy', Record<string, unknown>> = {\n      name: '$$tippy',\n      enabled: true,\n      phase: 'beforeWrite',\n      requires: ['computeStyles'],\n      fn({state}) {\n        if (getIsDefaultRenderFn()) {\n          const {box} = getDefaultTemplateChildren();\n\n          ['placement', 'reference-hidden', 'escaped'].forEach((attr) => {\n            if (attr === 'placement') {\n              box.setAttribute('data-placement', state.placement);\n            } else {\n              if (state.attributes.popper[`data-popper-${attr}`]) {\n                box.setAttribute(`data-${attr}`, '');\n              } else {\n                box.removeAttribute(`data-${attr}`);\n              }\n            }\n          });\n\n          state.attributes.popper = {};\n        }\n      },\n    };\n\n    type TippyModifier = Modifier<'$$tippy', Record<string, unknown>>;\n    type ExtendedModifiers = StrictModifiers | Partial<TippyModifier>;\n\n    const modifiers: Array<ExtendedModifiers> = [\n      {\n        name: 'offset',\n        options: {\n          offset,\n        },\n      },\n      {\n        name: 'preventOverflow',\n        options: {\n          padding: {\n            top: 2,\n            bottom: 2,\n            left: 5,\n            right: 5,\n          },\n        },\n      },\n      {\n        name: 'flip',\n        options: {\n          padding: 5,\n        },\n      },\n      {\n        name: 'computeStyles',\n        options: {\n          adaptive: !moveTransition,\n        },\n      },\n      tippyModifier,\n    ];\n\n    if (getIsDefaultRenderFn() && arrow) {\n      modifiers.push({\n        name: 'arrow',\n        options: {\n          element: arrow,\n          padding: 3,\n        },\n      });\n    }\n\n    modifiers.push(...(popperOptions?.modifiers || []));\n\n    instance.popperInstance = createPopper<ExtendedModifiers>(\n      computedReference,\n      popper,\n      {\n        ...popperOptions,\n        placement,\n        onFirstUpdate,\n        modifiers,\n      }\n    );\n  }\n\n  function destroyPopperInstance(): void {\n    if (instance.popperInstance) {\n      instance.popperInstance.destroy();\n      instance.popperInstance = null;\n    }\n  }\n\n  function mount(): void {\n    const {appendTo} = instance.props;\n\n    let parentNode: any;\n\n    // By default, we'll append the popper to the triggerTargets's parentNode so\n    // it's directly after the reference element so the elements inside the\n    // tippy can be tabbed to\n    // If there are clipping issues, the user can specify a different appendTo\n    // and ensure focus management is handled correctly manually\n    const node = getCurrentTarget();\n\n    if (\n      (instance.props.interactive && appendTo === TIPPY_DEFAULT_APPEND_TO) ||\n      appendTo === 'parent'\n    ) {\n      parentNode = node.parentNode;\n    } else {\n      parentNode = invokeWithArgsOrReturn(appendTo, [node]);\n    }\n\n    // The popper element needs to exist on the DOM before its position can be\n    // updated as Popper needs to read its dimensions\n    if (!parentNode.contains(popper)) {\n      parentNode.appendChild(popper);\n    }\n\n    instance.state.isMounted = true;\n\n    createPopperInstance();\n\n    /* istanbul ignore else */\n    if (__DEV__) {\n      // Accessibility check\n      warnWhen(\n        instance.props.interactive &&\n          appendTo === defaultProps.appendTo &&\n          node.nextElementSibling !== popper,\n        [\n          'Interactive tippy element may not be accessible via keyboard',\n          'navigation because it is not directly after the reference element',\n          'in the DOM source order.',\n          '\\n\\n',\n          'Using a wrapper <div> or <span> tag around the reference element',\n          'solves this by creating a new parentNode context.',\n          '\\n\\n',\n          'Specifying `appendTo: document.body` silences this warning, but it',\n          'assumes you are using a focus management solution to handle',\n          'keyboard navigation.',\n          '\\n\\n',\n          'See: https://atomiks.github.io/tippyjs/v6/accessibility/#interactivity',\n        ].join(' ')\n      );\n    }\n  }\n\n  function getNestedPopperTree(): PopperElement[] {\n    return arrayFrom(\n      popper.querySelectorAll('[data-__NAMESPACE_PREFIX__-root]')\n    );\n  }\n\n  function scheduleShow(event?: Event): void {\n    instance.clearDelayTimeouts();\n\n    if (event) {\n      invokeHook('onTrigger', [instance, event]);\n    }\n\n    addDocumentPress();\n\n    let delay = getDelay(true);\n    const [touchValue, touchDelay] = getNormalizedTouchSettings();\n\n    if (currentInput.isTouch && touchValue === 'hold' && touchDelay) {\n      delay = touchDelay;\n    }\n\n    if (delay) {\n      showTimeout = setTimeout(() => {\n        instance.show();\n      }, delay);\n    } else {\n      instance.show();\n    }\n  }\n\n  function scheduleHide(event: Event): void {\n    instance.clearDelayTimeouts();\n\n    invokeHook('onUntrigger', [instance, event]);\n\n    if (!instance.state.isVisible) {\n      removeDocumentPress();\n\n      return;\n    }\n\n    // For interactive tippies, scheduleHide is added to a document.body handler\n    // from onMouseLeave so must intercept scheduled hides from mousemove/leave\n    // events when trigger contains mouseenter and click, and the tip is\n    // currently shown as a result of a click.\n    if (\n      instance.props.trigger.indexOf('mouseenter') >= 0 &&\n      instance.props.trigger.indexOf('click') >= 0 &&\n      ['mouseleave', 'mousemove'].indexOf(event.type) >= 0 &&\n      isVisibleFromClick\n    ) {\n      return;\n    }\n\n    const delay = getDelay(false);\n\n    if (delay) {\n      hideTimeout = setTimeout(() => {\n        if (instance.state.isVisible) {\n          instance.hide();\n        }\n      }, delay);\n    } else {\n      // Fixes a `transitionend` problem when it fires 1 frame too\n      // late sometimes, we don't want hide() to be called.\n      scheduleHideAnimationFrame = requestAnimationFrame(() => {\n        instance.hide();\n      });\n    }\n  }\n\n  // ===========================================================================\n  // 🔑 Public methods\n  // ===========================================================================\n  function enable(): void {\n    instance.state.isEnabled = true;\n  }\n\n  function disable(): void {\n    // Disabling the instance should also hide it\n    // https://github.com/atomiks/tippy.js-react/issues/106\n    instance.hide();\n    instance.state.isEnabled = false;\n  }\n\n  function clearDelayTimeouts(): void {\n    clearTimeout(showTimeout);\n    clearTimeout(hideTimeout);\n    cancelAnimationFrame(scheduleHideAnimationFrame);\n  }\n\n  function setProps(partialProps: Partial<Props>): void {\n    /* istanbul ignore else */\n    if (__DEV__) {\n      warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('setProps'));\n    }\n\n    if (instance.state.isDestroyed) {\n      return;\n    }\n\n    invokeHook('onBeforeUpdate', [instance, partialProps]);\n\n    removeListeners();\n\n    const prevProps = instance.props;\n    const nextProps = evaluateProps(reference, {\n      ...prevProps,\n      ...removeUndefinedProps(partialProps),\n      ignoreAttributes: true,\n    });\n\n    instance.props = nextProps;\n\n    addListeners();\n\n    if (prevProps.interactiveDebounce !== nextProps.interactiveDebounce) {\n      cleanupInteractiveMouseListeners();\n      debouncedOnMouseMove = debounce(\n        onMouseMove,\n        nextProps.interactiveDebounce\n      );\n    }\n\n    // Ensure stale aria-expanded attributes are removed\n    if (prevProps.triggerTarget && !nextProps.triggerTarget) {\n      normalizeToArray(prevProps.triggerTarget).forEach((node) => {\n        node.removeAttribute('aria-expanded');\n      });\n    } else if (nextProps.triggerTarget) {\n      reference.removeAttribute('aria-expanded');\n    }\n\n    handleAriaExpandedAttribute();\n    handleStyles();\n\n    if (onUpdate) {\n      onUpdate(prevProps, nextProps);\n    }\n\n    if (instance.popperInstance) {\n      createPopperInstance();\n\n      // Fixes an issue with nested tippies if they are all getting re-rendered,\n      // and the nested ones get re-rendered first.\n      // https://github.com/atomiks/tippyjs-react/issues/177\n      // TODO: find a cleaner / more efficient solution(!)\n      getNestedPopperTree().forEach((nestedPopper) => {\n        // React (and other UI libs likely) requires a rAF wrapper as it flushes\n        // its work in one\n        requestAnimationFrame(nestedPopper._tippy!.popperInstance!.forceUpdate);\n      });\n    }\n\n    invokeHook('onAfterUpdate', [instance, partialProps]);\n  }\n\n  function setContent(content: Content): void {\n    instance.setProps({content});\n  }\n\n  function show(): void {\n    /* istanbul ignore else */\n    if (__DEV__) {\n      warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('show'));\n    }\n\n    // Early bail-out\n    const isAlreadyVisible = instance.state.isVisible;\n    const isDestroyed = instance.state.isDestroyed;\n    const isDisabled = !instance.state.isEnabled;\n    const isTouchAndTouchDisabled =\n      currentInput.isTouch && !instance.props.touch;\n    const duration = getValueAtIndexOrReturn(\n      instance.props.duration,\n      0,\n      defaultProps.duration\n    );\n\n    if (\n      isAlreadyVisible ||\n      isDestroyed ||\n      isDisabled ||\n      isTouchAndTouchDisabled\n    ) {\n      return;\n    }\n\n    // Normalize `disabled` behavior across browsers.\n    // Firefox allows events on disabled elements, but Chrome doesn't.\n    // Using a wrapper element (i.e. <span>) is recommended.\n    if (getCurrentTarget().hasAttribute('disabled')) {\n      return;\n    }\n\n    invokeHook('onShow', [instance], false);\n    if (instance.props.onShow(instance) === false) {\n      return;\n    }\n\n    instance.state.isVisible = true;\n\n    if (getIsDefaultRenderFn()) {\n      popper.style.visibility = 'visible';\n    }\n\n    handleStyles();\n    addDocumentPress();\n\n    if (!instance.state.isMounted) {\n      popper.style.transition = 'none';\n    }\n\n    // If flipping to the opposite side after hiding at least once, the\n    // animation will use the wrong placement without resetting the duration\n    if (getIsDefaultRenderFn()) {\n      const {box, content} = getDefaultTemplateChildren();\n      setTransitionDuration([box, content], 0);\n    }\n\n    onFirstUpdate = (): void => {\n      if (!instance.state.isVisible || ignoreOnFirstUpdate) {\n        return;\n      }\n\n      ignoreOnFirstUpdate = true;\n\n      // reflow\n      void popper.offsetHeight;\n\n      popper.style.transition = instance.props.moveTransition;\n\n      if (getIsDefaultRenderFn() && instance.props.animation) {\n        const {box, content} = getDefaultTemplateChildren();\n        setTransitionDuration([box, content], duration);\n        setVisibilityState([box, content], 'visible');\n      }\n\n      handleAriaContentAttribute();\n      handleAriaExpandedAttribute();\n\n      pushIfUnique(mountedInstances, instance);\n\n      // certain modifiers (e.g. `maxSize`) require a second update after the\n      // popper has been positioned for the first time\n      instance.popperInstance?.forceUpdate();\n\n      invokeHook('onMount', [instance]);\n\n      if (instance.props.animation && getIsDefaultRenderFn()) {\n        onTransitionedIn(duration, () => {\n          instance.state.isShown = true;\n          invokeHook('onShown', [instance]);\n        });\n      }\n    };\n\n    mount();\n  }\n\n  function hide(): void {\n    /* istanbul ignore else */\n    if (__DEV__) {\n      warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('hide'));\n    }\n\n    // Early bail-out\n    const isAlreadyHidden = !instance.state.isVisible;\n    const isDestroyed = instance.state.isDestroyed;\n    const isDisabled = !instance.state.isEnabled;\n    const duration = getValueAtIndexOrReturn(\n      instance.props.duration,\n      1,\n      defaultProps.duration\n    );\n\n    if (isAlreadyHidden || isDestroyed || isDisabled) {\n      return;\n    }\n\n    invokeHook('onHide', [instance], false);\n    if (instance.props.onHide(instance) === false) {\n      return;\n    }\n\n    instance.state.isVisible = false;\n    instance.state.isShown = false;\n    ignoreOnFirstUpdate = false;\n    isVisibleFromClick = false;\n\n    if (getIsDefaultRenderFn()) {\n      popper.style.visibility = 'hidden';\n    }\n\n    cleanupInteractiveMouseListeners();\n    removeDocumentPress();\n    handleStyles(true);\n\n    if (getIsDefaultRenderFn()) {\n      const {box, content} = getDefaultTemplateChildren();\n\n      if (instance.props.animation) {\n        setTransitionDuration([box, content], duration);\n        setVisibilityState([box, content], 'hidden');\n      }\n    }\n\n    handleAriaContentAttribute();\n    handleAriaExpandedAttribute();\n\n    if (instance.props.animation) {\n      if (getIsDefaultRenderFn()) {\n        onTransitionedOut(duration, instance.unmount);\n      }\n    } else {\n      instance.unmount();\n    }\n  }\n\n  function hideWithInteractivity(event: MouseEvent): void {\n    /* istanbul ignore else */\n    if (__DEV__) {\n      warnWhen(\n        instance.state.isDestroyed,\n        createMemoryLeakWarning('hideWithInteractivity')\n      );\n    }\n\n    getDocument().addEventListener('mousemove', debouncedOnMouseMove);\n    pushIfUnique(mouseMoveListeners, debouncedOnMouseMove);\n    debouncedOnMouseMove(event);\n  }\n\n  function unmount(): void {\n    /* istanbul ignore else */\n    if (__DEV__) {\n      warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('unmount'));\n    }\n\n    if (instance.state.isVisible) {\n      instance.hide();\n    }\n\n    if (!instance.state.isMounted) {\n      return;\n    }\n\n    destroyPopperInstance();\n\n    // If a popper is not interactive, it will be appended outside the popper\n    // tree by default. This seems mainly for interactive tippies, but we should\n    // find a workaround if possible\n    getNestedPopperTree().forEach((nestedPopper) => {\n      nestedPopper._tippy!.unmount();\n    });\n\n    if (popper.parentNode) {\n      popper.parentNode.removeChild(popper);\n    }\n\n    mountedInstances = mountedInstances.filter((i) => i !== instance);\n\n    instance.state.isMounted = false;\n    invokeHook('onHidden', [instance]);\n  }\n\n  function destroy(): void {\n    /* istanbul ignore else */\n    if (__DEV__) {\n      warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('destroy'));\n    }\n\n    if (instance.state.isDestroyed) {\n      return;\n    }\n\n    instance.clearDelayTimeouts();\n    instance.unmount();\n\n    removeListeners();\n\n    delete reference._tippy;\n\n    instance.state.isDestroyed = true;\n\n    invokeHook('onDestroy', [instance]);\n  }\n}\n", "import bindGlobalEventListeners, {\n  currentInput,\n} from './bindGlobalEventListeners';\nimport createTippy, {mountedInstances} from './createTippy';\nimport {getArrayOfElements, isElement, isReferenceElement} from './dom-utils';\nimport {defaultProps, setDefaultProps, validateProps} from './props';\nimport {HideAll, HideAllOptions, Instance, Props, Targets} from './types';\nimport {validateTargets, warnWhen} from './validation';\n\nfunction tippy(\n  targets: Targets,\n  optionalProps: Partial<Props> = {}\n): Instance | Instance[] {\n  const plugins = defaultProps.plugins.concat(optionalProps.plugins || []);\n\n  /* istanbul ignore else */\n  if (__DEV__) {\n    validateTargets(targets);\n    validateProps(optionalProps, plugins);\n  }\n\n  bindGlobalEventListeners();\n\n  const passedProps: Partial<Props> = {...optionalProps, plugins};\n\n  const elements = getArrayOfElements(targets);\n\n  /* istanbul ignore else */\n  if (__DEV__) {\n    const isSingleContentElement = isElement(passedProps.content);\n    const isMoreThanOneReferenceElement = elements.length > 1;\n    warnWhen(\n      isSingleContentElement && isMoreThanOneReferenceElement,\n      [\n        'tippy() was passed an Element as the `content` prop, but more than',\n        'one tippy instance was created by this invocation. This means the',\n        'content element will only be appended to the last tippy instance.',\n        '\\n\\n',\n        'Instead, pass the .innerHTML of the element, or use a function that',\n        'returns a cloned version of the element instead.',\n        '\\n\\n',\n        '1) content: element.innerHTML\\n',\n        '2) content: () => element.cloneNode(true)',\n      ].join(' ')\n    );\n  }\n\n  const instances = elements.reduce<Instance[]>(\n    (acc, reference): Instance[] => {\n      const instance = reference && createTippy(reference, passedProps);\n\n      if (instance) {\n        acc.push(instance);\n      }\n\n      return acc;\n    },\n    []\n  );\n\n  return isElement(targets) ? instances[0] : instances;\n}\n\ntippy.defaultProps = defaultProps;\ntippy.setDefaultProps = setDefaultProps;\ntippy.currentInput = currentInput;\n\nexport default tippy;\n\nexport const hideAll: HideAll = ({\n  exclude: excludedReferenceOrInstance,\n  duration,\n}: HideAllOptions = {}) => {\n  mountedInstances.forEach((instance) => {\n    let isExcluded = false;\n\n    if (excludedReferenceOrInstance) {\n      isExcluded = isReferenceElement(excludedReferenceOrInstance)\n        ? instance.reference === excludedReferenceOrInstance\n        : instance.popper === (excludedReferenceOrInstance as Instance).popper;\n    }\n\n    if (!isExcluded) {\n      const originalDuration = instance.props.duration;\n\n      instance.setProps({duration});\n      instance.hide();\n\n      if (!instance.state.isDestroyed) {\n        instance.setProps({duration: originalDuration});\n      }\n    }\n  });\n};\n", "import tippy from '..';\nimport {div} from '../dom-utils';\nimport {\n  CreateSingleton,\n  Plugin,\n  CreateSingletonProps,\n  ReferenceElement,\n  CreateSingletonInstance,\n  Instance,\n  Props,\n} from '../types';\nimport {normalizeToArray, removeProperties} from '../utils';\nimport {errorWhen} from '../validation';\nimport {applyStyles, Modifier} from '@popperjs/core';\n\n// The default `applyStyles` modifier has a cleanup function that gets called\n// every time the popper is destroyed (i.e. a new target), removing the styles\n// and causing transitions to break for singletons when the console is open, but\n// most notably for non-transform styles being used, `gpuAcceleration: false`.\nconst applyStylesModifier: Modifier<'applyStyles', Record<string, unknown>> = {\n  ...applyStyles,\n  effect({state}) {\n    const initialStyles = {\n      popper: {\n        position: state.options.strategy,\n        left: '0',\n        top: '0',\n        margin: '0',\n      },\n      arrow: {\n        position: 'absolute',\n      },\n      reference: {},\n    };\n\n    Object.assign(state.elements.popper.style, initialStyles.popper);\n    state.styles = initialStyles;\n\n    if (state.elements.arrow) {\n      Object.assign(state.elements.arrow.style, initialStyles.arrow);\n    }\n\n    // intentionally return no cleanup function\n    // return () => { ... }\n  },\n};\n\nconst createSingleton: CreateSingleton = (\n  tippyInstances,\n  optionalProps = {}\n) => {\n  /* istanbul ignore else */\n  if (__DEV__) {\n    errorWhen(\n      !Array.isArray(tippyInstances),\n      [\n        'The first argument passed to createSingleton() must be an array of',\n        'tippy instances. The passed value was',\n        String(tippyInstances),\n      ].join(' ')\n    );\n  }\n\n  let individualInstances = tippyInstances;\n  let references: Array<ReferenceElement> = [];\n  let triggerTargets: Array<Element> = [];\n  let currentTarget: Element | null;\n  let overrides = optionalProps.overrides;\n  let interceptSetPropsCleanups: Array<() => void> = [];\n  let shownOnCreate = false;\n\n  function setTriggerTargets(): void {\n    triggerTargets = individualInstances\n      .map((instance) =>\n        normalizeToArray(instance.props.triggerTarget || instance.reference)\n      )\n      .reduce((acc, item) => acc.concat(item), []);\n  }\n\n  function setReferences(): void {\n    references = individualInstances.map((instance) => instance.reference);\n  }\n\n  function enableInstances(isEnabled: boolean): void {\n    individualInstances.forEach((instance) => {\n      if (isEnabled) {\n        instance.enable();\n      } else {\n        instance.disable();\n      }\n    });\n  }\n\n  function interceptSetProps(singleton: Instance): Array<() => void> {\n    return individualInstances.map((instance) => {\n      const originalSetProps = instance.setProps;\n\n      instance.setProps = (props): void => {\n        originalSetProps(props);\n\n        if (instance.reference === currentTarget) {\n          singleton.setProps(props);\n        }\n      };\n\n      return (): void => {\n        instance.setProps = originalSetProps;\n      };\n    });\n  }\n\n  // have to pass singleton, as it maybe undefined on first call\n  function prepareInstance(\n    singleton: Instance,\n    target: ReferenceElement\n  ): void {\n    const index = triggerTargets.indexOf(target);\n\n    // bail-out\n    if (target === currentTarget) {\n      return;\n    }\n\n    currentTarget = target;\n\n    const overrideProps: Partial<Props> = (overrides || [])\n      .concat('content')\n      .reduce((acc, prop) => {\n        (acc as any)[prop] = individualInstances[index].props[prop];\n        return acc;\n      }, {});\n\n    singleton.setProps({\n      ...overrideProps,\n      getReferenceClientRect:\n        typeof overrideProps.getReferenceClientRect === 'function'\n          ? overrideProps.getReferenceClientRect\n          : (): ClientRect => references[index]?.getBoundingClientRect(),\n    });\n  }\n\n  enableInstances(false);\n  setReferences();\n  setTriggerTargets();\n\n  const plugin: Plugin = {\n    fn() {\n      return {\n        onDestroy(): void {\n          enableInstances(true);\n        },\n        onHidden(): void {\n          currentTarget = null;\n        },\n        onClickOutside(instance): void {\n          if (instance.props.showOnCreate && !shownOnCreate) {\n            shownOnCreate = true;\n            currentTarget = null;\n          }\n        },\n        onShow(instance): void {\n          if (instance.props.showOnCreate && !shownOnCreate) {\n            shownOnCreate = true;\n            prepareInstance(instance, references[0]);\n          }\n        },\n        onTrigger(instance, event): void {\n          prepareInstance(instance, event.currentTarget as Element);\n        },\n      };\n    },\n  };\n\n  const singleton = tippy(div(), {\n    ...removeProperties(optionalProps, ['overrides']),\n    plugins: [plugin, ...(optionalProps.plugins || [])],\n    triggerTarget: triggerTargets,\n    popperOptions: {\n      ...optionalProps.popperOptions,\n      modifiers: [\n        ...(optionalProps.popperOptions?.modifiers || []),\n        applyStylesModifier,\n      ],\n    },\n  }) as CreateSingletonInstance<CreateSingletonProps>;\n\n  const originalShow = singleton.show;\n\n  singleton.show = (target?: ReferenceElement | Instance | number): void => {\n    originalShow();\n\n    // first time, showOnCreate or programmatic call with no params\n    // default to showing first instance\n    if (!currentTarget && target == null) {\n      return prepareInstance(singleton, references[0]);\n    }\n\n    // triggered from event (do nothing as prepareInstance already called by onTrigger)\n    // programmatic call with no params when already visible (do nothing again)\n    if (currentTarget && target == null) {\n      return;\n    }\n\n    // target is index of instance\n    if (typeof target === 'number') {\n      return (\n        references[target] && prepareInstance(singleton, references[target])\n      );\n    }\n\n    // target is a child tippy instance\n    if (individualInstances.indexOf(target as Instance) >= 0) {\n      const ref = (target as Instance).reference;\n      return prepareInstance(singleton, ref);\n    }\n\n    // target is a ReferenceElement\n    if (references.indexOf(target as ReferenceElement) >= 0) {\n      return prepareInstance(singleton, target as ReferenceElement);\n    }\n  };\n\n  singleton.showNext = (): void => {\n    const first = references[0];\n    if (!currentTarget) {\n      return singleton.show(0);\n    }\n    const index = references.indexOf(currentTarget);\n    singleton.show(references[index + 1] || first);\n  };\n\n  singleton.showPrevious = (): void => {\n    const last = references[references.length - 1];\n    if (!currentTarget) {\n      return singleton.show(last);\n    }\n    const index = references.indexOf(currentTarget);\n    const target = references[index - 1] || last;\n    singleton.show(target);\n  };\n\n  const originalSetProps = singleton.setProps;\n\n  singleton.setProps = (props): void => {\n    overrides = props.overrides || overrides;\n    originalSetProps(props);\n  };\n\n  singleton.setInstances = (nextInstances): void => {\n    enableInstances(true);\n    interceptSetPropsCleanups.forEach((fn) => fn());\n\n    individualInstances = nextInstances;\n\n    enableInstances(false);\n    setReferences();\n    setTriggerTargets();\n    interceptSetPropsCleanups = interceptSetProps(singleton);\n\n    singleton.setProps({triggerTarget: triggerTargets});\n  };\n\n  interceptSetPropsCleanups = interceptSetProps(singleton);\n\n  return singleton;\n};\n\nexport default createSingleton;\n", "import tippy from '..';\nimport {TOUCH_OPTIONS} from '../constants';\nimport {defaultProps} from '../props';\nimport {Instance, Props, Targets} from '../types';\nimport {ListenerObject} from '../types-internal';\nimport {normalizeToArray, removeProperties} from '../utils';\nimport {errorWhen} from '../validation';\n\nconst BUBBLING_EVENTS_MAP = {\n  mouseover: 'mouseenter',\n  focusin: 'focus',\n  click: 'click',\n};\n\n/**\n * Creates a delegate instance that controls the creation of tippy instances\n * for child elements (`target` CSS selector).\n */\nfunction delegate(\n  targets: Targets,\n  props: Partial<Props> & {target: string}\n): Instance | Instance[] {\n  /* istanbul ignore else */\n  if (__DEV__) {\n    errorWhen(\n      !(props && props.target),\n      [\n        'You must specity a `target` prop indicating a CSS selector string matching',\n        'the target elements that should receive a tippy.',\n      ].join(' ')\n    );\n  }\n\n  let listeners: ListenerObject[] = [];\n  let childTippyInstances: Instance[] = [];\n  let disabled = false;\n\n  const {target} = props;\n\n  const nativeProps = removeProperties(props, ['target']);\n  const parentProps = {...nativeProps, trigger: 'manual', touch: false};\n  const childProps = {\n    touch: defaultProps.touch,\n    ...nativeProps,\n    showOnCreate: true,\n  };\n\n  const returnValue = tippy(targets, parentProps);\n  const normalizedReturnValue = normalizeToArray(returnValue);\n\n  function onTrigger(event: Event): void {\n    if (!event.target || disabled) {\n      return;\n    }\n\n    const targetNode = (event.target as Element).closest(target);\n\n    if (!targetNode) {\n      return;\n    }\n\n    // Get relevant trigger with fallbacks:\n    // 1. Check `data-tippy-trigger` attribute on target node\n    // 2. Fallback to `trigger` passed to `delegate()`\n    // 3. Fallback to `defaultProps.trigger`\n    const trigger =\n      targetNode.getAttribute('data-tippy-trigger') ||\n      props.trigger ||\n      defaultProps.trigger;\n\n    // @ts-ignore\n    if (targetNode._tippy) {\n      return;\n    }\n\n    if (event.type === 'touchstart' && typeof childProps.touch === 'boolean') {\n      return;\n    }\n\n    if (\n      event.type !== 'touchstart' &&\n      trigger.indexOf((BUBBLING_EVENTS_MAP as any)[event.type]) < 0\n    ) {\n      return;\n    }\n\n    const instance = tippy(targetNode, childProps);\n\n    if (instance) {\n      childTippyInstances = childTippyInstances.concat(instance);\n    }\n  }\n\n  function on(\n    node: Element,\n    eventType: string,\n    handler: EventListener,\n    options: boolean | Record<string, unknown> = false\n  ): void {\n    node.addEventListener(eventType, handler, options);\n    listeners.push({node, eventType, handler, options});\n  }\n\n  function addEventListeners(instance: Instance): void {\n    const {reference} = instance;\n\n    on(reference, 'touchstart', onTrigger, TOUCH_OPTIONS);\n    on(reference, 'mouseover', onTrigger);\n    on(reference, 'focusin', onTrigger);\n    on(reference, 'click', onTrigger);\n  }\n\n  function removeEventListeners(): void {\n    listeners.forEach(({node, eventType, handler, options}: ListenerObject) => {\n      node.removeEventListener(eventType, handler, options);\n    });\n    listeners = [];\n  }\n\n  function applyMutations(instance: Instance): void {\n    const originalDestroy = instance.destroy;\n    const originalEnable = instance.enable;\n    const originalDisable = instance.disable;\n\n    instance.destroy = (shouldDestroyChildInstances = true): void => {\n      if (shouldDestroyChildInstances) {\n        childTippyInstances.forEach((instance) => {\n          instance.destroy();\n        });\n      }\n\n      childTippyInstances = [];\n\n      removeEventListeners();\n      originalDestroy();\n    };\n\n    instance.enable = (): void => {\n      originalEnable();\n      childTippyInstances.forEach((instance) => instance.enable());\n      disabled = false;\n    };\n\n    instance.disable = (): void => {\n      originalDisable();\n      childTippyInstances.forEach((instance) => instance.disable());\n      disabled = true;\n    };\n\n    addEventListeners(instance);\n  }\n\n  normalizedReturnValue.forEach(applyMutations);\n\n  return returnValue;\n}\n\nexport default delegate;\n", "import {BACKDROP_CLASS} from '../constants';\nimport {div, setVisibilityState} from '../dom-utils';\nimport {getChildren} from '../template';\nimport {AnimateFill} from '../types';\nimport {errorWhen} from '../validation';\n\nconst animateFill: AnimateFill = {\n  name: 'animateFill',\n  defaultValue: false,\n  fn(instance) {\n    // @ts-ignore\n    if (!instance.props.render?.$$tippy) {\n      if (__DEV__) {\n        errorWhen(\n          instance.props.animateFill,\n          'The `animateFill` plugin requires the default render function.'\n        );\n      }\n\n      return {};\n    }\n\n    const {box, content} = getChildren(instance.popper);\n\n    const backdrop = instance.props.animateFill\n      ? createBackdropElement()\n      : null;\n\n    return {\n      onCreate(): void {\n        if (backdrop) {\n          box.insertBefore(backdrop, box.firstElementChild!);\n          box.setAttribute('data-animatefill', '');\n          box.style.overflow = 'hidden';\n\n          instance.setProps({arrow: false, animation: 'shift-away'});\n        }\n      },\n      onMount(): void {\n        if (backdrop) {\n          const {transitionDuration} = box.style;\n          const duration = Number(transitionDuration.replace('ms', ''));\n\n          // The content should fade in after the backdrop has mostly filled the\n          // tooltip element. `clip-path` is the other alternative but is not\n          // well-supported and is buggy on some devices.\n          content.style.transitionDelay = `${Math.round(duration / 10)}ms`;\n\n          backdrop.style.transitionDuration = transitionDuration;\n          setVisibilityState([backdrop], 'visible');\n        }\n      },\n      onShow(): void {\n        if (backdrop) {\n          backdrop.style.transitionDuration = '0ms';\n        }\n      },\n      onHide(): void {\n        if (backdrop) {\n          setVisibilityState([backdrop], 'hidden');\n        }\n      },\n    };\n  },\n};\n\nexport default animateFill;\n\nfunction createBackdropElement(): HTMLDivElement {\n  const backdrop = div();\n  backdrop.className = BACKDROP_CLASS;\n  setVisibilityState([backdrop], 'hidden');\n  return backdrop;\n}\n", "import {getOwnerDocument, isMouseEvent} from '../dom-utils';\nimport {FollowCursor, Instance} from '../types';\n\nlet mouseCoords = {clientX: 0, clientY: 0};\nlet activeInstances: Array<{instance: Instance; doc: Document}> = [];\n\nfunction storeMouseCoords({clientX, clientY}: MouseEvent): void {\n  mouseCoords = {clientX, clientY};\n}\n\nfunction addMouseCoordsListener(doc: Document): void {\n  doc.addEventListener('mousemove', storeMouseCoords);\n}\n\nfunction removeMouseCoordsListener(doc: Document): void {\n  doc.removeEventListener('mousemove', storeMouseCoords);\n}\n\nconst followCursor: FollowCursor = {\n  name: 'followCursor',\n  defaultValue: false,\n  fn(instance) {\n    const reference = instance.reference;\n    const doc = getOwnerDocument(instance.props.triggerTarget || reference);\n\n    let isInternalUpdate = false;\n    let wasFocusEvent = false;\n    let isUnmounted = true;\n    let prevProps = instance.props;\n\n    function getIsInitialBehavior(): boolean {\n      return (\n        instance.props.followCursor === 'initial' && instance.state.isVisible\n      );\n    }\n\n    function addListener(): void {\n      doc.addEventListener('mousemove', onMouseMove);\n    }\n\n    function removeListener(): void {\n      doc.removeEventListener('mousemove', onMouseMove);\n    }\n\n    function unsetGetReferenceClientRect(): void {\n      isInternalUpdate = true;\n      instance.setProps({getReferenceClientRect: null});\n      isInternalUpdate = false;\n    }\n\n    function onMouseMove(event: MouseEvent): void {\n      // If the instance is interactive, avoid updating the position unless it's\n      // over the reference element\n      const isCursorOverReference = event.target\n        ? reference.contains(event.target as Node)\n        : true;\n      const {followCursor} = instance.props;\n      const {clientX, clientY} = event;\n\n      const rect = reference.getBoundingClientRect();\n      const relativeX = clientX - rect.left;\n      const relativeY = clientY - rect.top;\n\n      if (isCursorOverReference || !instance.props.interactive) {\n        instance.setProps({\n          // @ts-ignore - unneeded DOMRect properties\n          getReferenceClientRect() {\n            const rect = reference.getBoundingClientRect();\n\n            let x = clientX;\n            let y = clientY;\n\n            if (followCursor === 'initial') {\n              x = rect.left + relativeX;\n              y = rect.top + relativeY;\n            }\n\n            const top = followCursor === 'horizontal' ? rect.top : y;\n            const right = followCursor === 'vertical' ? rect.right : x;\n            const bottom = followCursor === 'horizontal' ? rect.bottom : y;\n            const left = followCursor === 'vertical' ? rect.left : x;\n\n            return {\n              width: right - left,\n              height: bottom - top,\n              top,\n              right,\n              bottom,\n              left,\n            };\n          },\n        });\n      }\n    }\n\n    function create(): void {\n      if (instance.props.followCursor) {\n        activeInstances.push({instance, doc});\n        addMouseCoordsListener(doc);\n      }\n    }\n\n    function destroy(): void {\n      activeInstances = activeInstances.filter(\n        (data) => data.instance !== instance\n      );\n\n      if (activeInstances.filter((data) => data.doc === doc).length === 0) {\n        removeMouseCoordsListener(doc);\n      }\n    }\n\n    return {\n      onCreate: create,\n      onDestroy: destroy,\n      onBeforeUpdate(): void {\n        prevProps = instance.props;\n      },\n      onAfterUpdate(_, {followCursor}): void {\n        if (isInternalUpdate) {\n          return;\n        }\n\n        if (\n          followCursor !== undefined &&\n          prevProps.followCursor !== followCursor\n        ) {\n          destroy();\n\n          if (followCursor) {\n            create();\n\n            if (\n              instance.state.isMounted &&\n              !wasFocusEvent &&\n              !getIsInitialBehavior()\n            ) {\n              addListener();\n            }\n          } else {\n            removeListener();\n            unsetGetReferenceClientRect();\n          }\n        }\n      },\n      onMount(): void {\n        if (instance.props.followCursor && !wasFocusEvent) {\n          if (isUnmounted) {\n            onMouseMove(mouseCoords as MouseEvent);\n            isUnmounted = false;\n          }\n\n          if (!getIsInitialBehavior()) {\n            addListener();\n          }\n        }\n      },\n      onTrigger(_, event): void {\n        if (isMouseEvent(event)) {\n          mouseCoords = {clientX: event.clientX, clientY: event.clientY};\n        }\n        wasFocusEvent = event.type === 'focus';\n      },\n      onHidden(): void {\n        if (instance.props.followCursor) {\n          unsetGetReferenceClientRect();\n          removeListener();\n          isUnmounted = true;\n        }\n      },\n    };\n  },\n};\n\nexport default followCursor;\n", "import {Modifier, Placement} from '@popperjs/core';\nimport {isMouseEvent} from '../dom-utils';\nimport {BasePlacement, InlinePositioning, Props} from '../types';\nimport {arrayFrom, getBasePlacement} from '../utils';\n\nfunction getProps(props: Props, modifier: Modifier<any, any>): Partial<Props> {\n  return {\n    popperOptions: {\n      ...props.popperOptions,\n      modifiers: [\n        ...(props.popperOptions?.modifiers || []).filter(\n          ({name}) => name !== modifier.name\n        ),\n        modifier,\n      ],\n    },\n  };\n}\n\nconst inlinePositioning: InlinePositioning = {\n  name: 'inlinePositioning',\n  defaultValue: false,\n  fn(instance) {\n    const {reference} = instance;\n\n    function isEnabled(): boolean {\n      return !!instance.props.inlinePositioning;\n    }\n\n    let placement: Placement;\n    let cursorRectIndex = -1;\n    let isInternalUpdate = false;\n    let triedPlacements: Array<string> = [];\n\n    const modifier: Modifier<\n      'tippyInlinePositioning',\n      Record<string, unknown>\n    > = {\n      name: 'tippyInlinePositioning',\n      enabled: true,\n      phase: 'afterWrite',\n      fn({state}) {\n        if (isEnabled()) {\n          if (triedPlacements.indexOf(state.placement) !== -1) {\n            triedPlacements = [];\n          }\n\n          if (\n            placement !== state.placement &&\n            triedPlacements.indexOf(state.placement) === -1\n          ) {\n            triedPlacements.push(state.placement);\n            instance.setProps({\n              // @ts-ignore - unneeded DOMRect properties\n              getReferenceClientRect: () =>\n                getReferenceClientRect(state.placement),\n            });\n          }\n\n          placement = state.placement;\n        }\n      },\n    };\n\n    function getReferenceClientRect(placement: Placement): Partial<DOMRect> {\n      return getInlineBoundingClientRect(\n        getBasePlacement(placement),\n        reference.getBoundingClientRect(),\n        arrayFrom(reference.getClientRects()),\n        cursorRectIndex\n      );\n    }\n\n    function setInternalProps(partialProps: Partial<Props>): void {\n      isInternalUpdate = true;\n      instance.setProps(partialProps);\n      isInternalUpdate = false;\n    }\n\n    function addModifier(): void {\n      if (!isInternalUpdate) {\n        setInternalProps(getProps(instance.props, modifier));\n      }\n    }\n\n    return {\n      onCreate: addModifier,\n      onAfterUpdate: addModifier,\n      onTrigger(_, event): void {\n        if (isMouseEvent(event)) {\n          const rects = arrayFrom(instance.reference.getClientRects());\n          const cursorRect = rects.find(\n            (rect) =>\n              rect.left - 2 <= event.clientX &&\n              rect.right + 2 >= event.clientX &&\n              rect.top - 2 <= event.clientY &&\n              rect.bottom + 2 >= event.clientY\n          );\n          const index = rects.indexOf(cursorRect);\n          cursorRectIndex = index > -1 ? index : cursorRectIndex;\n        }\n      },\n      onHidden(): void {\n        cursorRectIndex = -1;\n      },\n    };\n  },\n};\n\nexport default inlinePositioning;\n\nexport function getInlineBoundingClientRect(\n  currentBasePlacement: BasePlacement | null,\n  boundingRect: DOMRect,\n  clientRects: DOMRect[],\n  cursorRectIndex: number\n): {\n  top: number;\n  bottom: number;\n  left: number;\n  right: number;\n  width: number;\n  height: number;\n} {\n  // Not an inline element, or placement is not yet known\n  if (clientRects.length < 2 || currentBasePlacement === null) {\n    return boundingRect;\n  }\n\n  // There are two rects and they are disjoined\n  if (\n    clientRects.length === 2 &&\n    cursorRectIndex >= 0 &&\n    clientRects[0].left > clientRects[1].right\n  ) {\n    return clientRects[cursorRectIndex] || boundingRect;\n  }\n\n  switch (currentBasePlacement) {\n    case 'top':\n    case 'bottom': {\n      const firstRect = clientRects[0];\n      const lastRect = clientRects[clientRects.length - 1];\n      const isTop = currentBasePlacement === 'top';\n\n      const top = firstRect.top;\n      const bottom = lastRect.bottom;\n      const left = isTop ? firstRect.left : lastRect.left;\n      const right = isTop ? firstRect.right : lastRect.right;\n      const width = right - left;\n      const height = bottom - top;\n\n      return {top, bottom, left, right, width, height};\n    }\n    case 'left':\n    case 'right': {\n      const minLeft = Math.min(...clientRects.map((rects) => rects.left));\n      const maxRight = Math.max(...clientRects.map((rects) => rects.right));\n      const measureRects = clientRects.filter((rect) =>\n        currentBasePlacement === 'left'\n          ? rect.left === minLeft\n          : rect.right === maxRight\n      );\n\n      const top = measureRects[0].top;\n      const bottom = measureRects[measureRects.length - 1].bottom;\n      const left = minLeft;\n      const right = maxRight;\n      const width = right - left;\n      const height = bottom - top;\n\n      return {top, bottom, left, right, width, height};\n    }\n    default: {\n      return boundingRect;\n    }\n  }\n}\n", "import {VirtualElement} from '@popperjs/core';\nimport {ReferenceElement, Sticky} from '../types';\n\nconst sticky: Sticky = {\n  name: 'sticky',\n  defaultValue: false,\n  fn(instance) {\n    const {reference, popper} = instance;\n\n    function getReference(): ReferenceElement | VirtualElement {\n      return instance.popperInstance\n        ? instance.popperInstance.state.elements.reference\n        : reference;\n    }\n\n    function shouldCheck(value: 'reference' | 'popper'): boolean {\n      return instance.props.sticky === true || instance.props.sticky === value;\n    }\n\n    let prevRefRect: ClientRect | null = null;\n    let prevPopRect: ClientRect | null = null;\n\n    function updatePosition(): void {\n      const currentRefRect = shouldCheck('reference')\n        ? getReference().getBoundingClientRect()\n        : null;\n      const currentPopRect = shouldCheck('popper')\n        ? popper.getBoundingClientRect()\n        : null;\n\n      if (\n        (currentRefRect && areRectsDifferent(prevRefRect, currentRefRect)) ||\n        (currentPopRect && areRectsDifferent(prevPopRect, currentPopRect))\n      ) {\n        if (instance.popperInstance) {\n          instance.popperInstance.update();\n        }\n      }\n\n      prevRefRect = currentRefRect;\n      prevPopRect = currentPopRect;\n\n      if (instance.state.isMounted) {\n        requestAnimationFrame(updatePosition);\n      }\n    }\n\n    return {\n      onMount(): void {\n        if (instance.props.sticky) {\n          updatePosition();\n        }\n      },\n    };\n  },\n};\n\nexport default sticky;\n\nfunction areRectsDifferent(\n  rectA: ClientRect | null,\n  rectB: ClientRect | null\n): boolean {\n  if (rectA && rectB) {\n    return (\n      rectA.top !== rectB.top ||\n      rectA.right !== rectB.right ||\n      rectA.bottom !== rectB.bottom ||\n      rectA.left !== rectB.left\n    );\n  }\n\n  return true;\n}\n", "import tippy from '../src';\nimport {render} from '../src/template';\n\ntippy.setDefaultProps({render});\n\nexport {default, hideAll} from '../src';\nexport {default as createSingleton} from '../src/addons/createSingleton';\nexport {default as delegate} from '../src/addons/delegate';\nexport {default as animateFill} from '../src/plugins/animateFill';\nexport {default as followCursor} from '../src/plugins/followCursor';\nexport {default as inlinePositioning} from '../src/plugins/inlinePositioning';\nexport {default as sticky} from '../src/plugins/sticky';\nexport {ROUND_ARROW as roundArrow} from '../src/constants';\n", "// Customizable command palette for advanced users\n// Opens with cmd+k or ctrl+k by default\n// https://github.com/excid3/ninja-keys\n\nimport { Controller } from \"@hotwired/stimulus\"\nimport \"@gorails/ninja-keys\"\n\nexport default class extends Controller {\n  connect() {\n    this.element.data = [\n      {\n        id: \"Home\",\n        title: \"Home\",\n        hotkey: \"ctrl+H\",\n        icon: '<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"ninja-icon\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6\" /></svg>',\n        handler: () => {\n          Turbo.visit(\"/\")\n        }\n      },\n      {\n        id: \"Accounts\",\n        title: \"Accounts\",\n        hotkey: \"ctrl+A\",\n        icon: '<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"ninja-icon\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z\" /></svg>',\n        handler: () => {\n          Turbo.visit(\"/accounts\")\n        }\n      },\n      {\n        id: \"Profile\",\n        title: \"Profile\",\n        hotkey: \"ctrl+P\",\n        icon: '<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"ninja-icon\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M5.121 17.804A13.937 13.937 0 0112 16c2.5 0 4.847.655 6.879 1.804M15 10a3 3 0 11-6 0 3 3 0 016 0zm6 2a9 9 0 11-18 0 9 9 0 0118 0z\" /></svg>',\n        handler: () => {\n          Turbo.visit(\"/users/edit\")\n        }\n      },\n      {\n        id: \"Notifications\",\n        title: \"Notifications\",\n        hotkey: \"ctrl+N\",\n        icon: '<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"ninja-icon\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9\" /></svg>',\n        handler: () => {\n          Turbo.visit(\"/notifications\")\n        }\n      },\n    ];\n  }\n}\n", "/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nconst NODE_MODE = false;\nconst global = NODE_MODE ? globalThis : window;\n\n/**\n * Whether the current browser supports `adoptedStyleSheets`.\n */\nexport const supportsAdoptingStyleSheets =\n  global.ShadowRoot &&\n  (global.ShadyCSS === undefined || global.ShadyCSS.nativeShadow) &&\n  'adoptedStyleSheets' in Document.prototype &&\n  'replace' in CSSStyleSheet.prototype;\n\n/**\n * A CSSResult or native CSSStyleSheet.\n *\n * In browsers that support constructible CSS style sheets, CSSStyleSheet\n * object can be used for styling along side CSSResult from the `css`\n * template tag.\n */\nexport type CSSResultOrNative = CSSResult | CSSStyleSheet;\n\nexport type CSSResultArray = Array<CSSResultOrNative | CSSResultArray>;\n\n/**\n * A single CSSResult, CSSStyleSheet, or an array or nested arrays of those.\n */\nexport type CSSResultGroup = CSSResultOrNative | CSSResultArray;\n\nconst constructionToken = Symbol();\n\nconst cssTagCache = new WeakMap<TemplateStringsArray, CSSStyleSheet>();\n\n/**\n * A container for a string of CSS text, that may be used to create a CSSStyleSheet.\n *\n * CSSResult is the return value of `css`-tagged template literals and\n * `unsafeCSS()`. In order to ensure that CSSResults are only created via the\n * `css` tag and `unsafeCSS()`, CSSResult cannot be constructed directly.\n */\nexport class CSSResult {\n  // This property needs to remain unminified.\n  ['_$cssResult$'] = true;\n  readonly cssText: string;\n  private _styleSheet?: CSSStyleSheet;\n  private _strings: TemplateStringsArray | undefined;\n\n  private constructor(\n    cssText: string,\n    strings: TemplateStringsArray | undefined,\n    safeToken: symbol\n  ) {\n    if (safeToken !== constructionToken) {\n      throw new Error(\n        'CSSResult is not constructable. Use `unsafeCSS` or `css` instead.'\n      );\n    }\n    this.cssText = cssText;\n    this._strings = strings;\n  }\n\n  // This is a getter so that it's lazy. In practice, this means stylesheets\n  // are not created until the first element instance is made.\n  get styleSheet(): CSSStyleSheet | undefined {\n    // If `supportsAdoptingStyleSheets` is true then we assume CSSStyleSheet is\n    // constructable.\n    let styleSheet = this._styleSheet;\n    const strings = this._strings;\n    if (supportsAdoptingStyleSheets && styleSheet === undefined) {\n      const cacheable = strings !== undefined && strings.length === 1;\n      if (cacheable) {\n        styleSheet = cssTagCache.get(strings);\n      }\n      if (styleSheet === undefined) {\n        (this._styleSheet = styleSheet = new CSSStyleSheet()).replaceSync(\n          this.cssText\n        );\n        if (cacheable) {\n          cssTagCache.set(strings, styleSheet);\n        }\n      }\n    }\n    return styleSheet;\n  }\n\n  toString(): string {\n    return this.cssText;\n  }\n}\n\ntype ConstructableCSSResult = CSSResult & {\n  new (\n    cssText: string,\n    strings: TemplateStringsArray | undefined,\n    safeToken: symbol\n  ): CSSResult;\n};\n\nconst textFromCSSResult = (value: CSSResultGroup | number) => {\n  // This property needs to remain unminified.\n  if ((value as CSSResult)['_$cssResult$'] === true) {\n    return (value as CSSResult).cssText;\n  } else if (typeof value === 'number') {\n    return value;\n  } else {\n    throw new Error(\n      `Value passed to 'css' function must be a 'css' function result: ` +\n        `${value}. Use 'unsafeCSS' to pass non-literal values, but take care ` +\n        `to ensure page security.`\n    );\n  }\n};\n\n/**\n * Wrap a value for interpolation in a {@linkcode css} tagged template literal.\n *\n * This is unsafe because untrusted CSS text can be used to phone home\n * or exfiltrate data to an attacker controlled site. Take care to only use\n * this with trusted input.\n */\nexport const unsafeCSS = (value: unknown) =>\n  new (CSSResult as ConstructableCSSResult)(\n    typeof value === 'string' ? value : String(value),\n    undefined,\n    constructionToken\n  );\n\n/**\n * A template literal tag which can be used with LitElement's\n * {@linkcode LitElement.styles} property to set element styles.\n *\n * For security reasons, only literal string values and number may be used in\n * embedded expressions. To incorporate non-literal values {@linkcode unsafeCSS}\n * may be used inside an expression.\n */\nexport const css = (\n  strings: TemplateStringsArray,\n  ...values: (CSSResultGroup | number)[]\n): CSSResult => {\n  const cssText =\n    strings.length === 1\n      ? strings[0]\n      : values.reduce(\n          (acc, v, idx) => acc + textFromCSSResult(v) + strings[idx + 1],\n          strings[0]\n        );\n  return new (CSSResult as ConstructableCSSResult)(\n    cssText,\n    strings,\n    constructionToken\n  );\n};\n\n/**\n * Applies the given styles to a `shadowRoot`. When Shadow DOM is\n * available but `adoptedStyleSheets` is not, styles are appended to the\n * `shadowRoot` to [mimic spec behavior](https://wicg.github.io/construct-stylesheets/#using-constructed-stylesheets).\n * Note, when shimming is used, any styles that are subsequently placed into\n * the shadowRoot should be placed *before* any shimmed adopted styles. This\n * will match spec behavior that gives adopted sheets precedence over styles in\n * shadowRoot.\n */\nexport const adoptStyles = (\n  renderRoot: ShadowRoot,\n  styles: Array<CSSResultOrNative>\n) => {\n  if (supportsAdoptingStyleSheets) {\n    (renderRoot as ShadowRoot).adoptedStyleSheets = styles.map((s) =>\n      s instanceof CSSStyleSheet ? s : s.styleSheet!\n    );\n  } else {\n    styles.forEach((s) => {\n      const style = document.createElement('style');\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      const nonce = (global as any)['litNonce'];\n      if (nonce !== undefined) {\n        style.setAttribute('nonce', nonce);\n      }\n      style.textContent = (s as CSSResult).cssText;\n      renderRoot.appendChild(style);\n    });\n  }\n};\n\nconst cssResultFromStyleSheet = (sheet: CSSStyleSheet) => {\n  let cssText = '';\n  for (const rule of sheet.cssRules) {\n    cssText += rule.cssText;\n  }\n  return unsafeCSS(cssText);\n};\n\nexport const getCompatibleStyle =\n  supportsAdoptingStyleSheets ||\n  (NODE_MODE && global.CSSStyleSheet === undefined)\n    ? (s: CSSResultOrNative) => s\n    : (s: CSSResultOrNative) =>\n        s instanceof CSSStyleSheet ? cssResultFromStyleSheet(s) : s;\n", "/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/**\n * Use this module if you want to create your own base class extending\n * {@link ReactiveElement}.\n * @packageDocumentation\n */\n\nimport {\n  getCompatibleStyle,\n  adoptStyles,\n  CSSResultGroup,\n  CSSResultOrNative,\n} from './css-tag.js';\nimport type {\n  ReactiveController,\n  ReactiveControllerHost,\n} from './reactive-controller.js';\n\n// In the Node build, this import will be injected by Rollup:\n// import {HTMLElement, customElements} from '@lit-labs/ssr-dom-shim';\n\nexport * from './css-tag.js';\nexport type {\n  ReactiveController,\n  ReactiveControllerHost,\n} from './reactive-controller.js';\n\nconst NODE_MODE = false;\nconst global = NODE_MODE ? globalThis : window;\n\nif (NODE_MODE) {\n  global.customElements ??= customElements;\n}\n\nconst DEV_MODE = true;\n\nlet requestUpdateThenable: (name: string) => {\n  then: (\n    onfulfilled?: (value: boolean) => void,\n    _onrejected?: () => void\n  ) => void;\n};\n\nlet issueWarning: (code: string, warning: string) => void;\n\nconst trustedTypes = (global as unknown as {trustedTypes?: {emptyScript: ''}})\n  .trustedTypes;\n\n// Temporary workaround for https://crbug.com/993268\n// Currently, any attribute starting with \"on\" is considered to be a\n// TrustedScript source. Such boolean attributes must be set to the equivalent\n// trusted emptyScript value.\nconst emptyStringForBooleanAttribute = trustedTypes\n  ? (trustedTypes.emptyScript as unknown as '')\n  : '';\n\nconst polyfillSupport = DEV_MODE\n  ? global.reactiveElementPolyfillSupportDevMode\n  : global.reactiveElementPolyfillSupport;\n\nif (DEV_MODE) {\n  // Ensure warnings are issued only 1x, even if multiple versions of Lit\n  // are loaded.\n  const issuedWarnings: Set<string | undefined> = (global.litIssuedWarnings ??=\n    new Set());\n\n  // Issue a warning, if we haven't already.\n  issueWarning = (code: string, warning: string) => {\n    warning += ` See https://lit.dev/msg/${code} for more information.`;\n    if (!issuedWarnings.has(warning)) {\n      console.warn(warning);\n      issuedWarnings.add(warning);\n    }\n  };\n\n  issueWarning(\n    'dev-mode',\n    `Lit is in dev mode. Not recommended for production!`\n  );\n\n  // Issue polyfill support warning.\n  if (global.ShadyDOM?.inUse && polyfillSupport === undefined) {\n    issueWarning(\n      'polyfill-support-missing',\n      `Shadow DOM is being polyfilled via \\`ShadyDOM\\` but ` +\n        `the \\`polyfill-support\\` module has not been loaded.`\n    );\n  }\n\n  requestUpdateThenable = (name) => ({\n    then: (\n      onfulfilled?: (value: boolean) => void,\n      _onrejected?: () => void\n    ) => {\n      issueWarning(\n        'request-update-promise',\n        `The \\`requestUpdate\\` method should no longer return a Promise but ` +\n          `does so on \\`${name}\\`. Use \\`updateComplete\\` instead.`\n      );\n      if (onfulfilled !== undefined) {\n        onfulfilled(false);\n      }\n    },\n  });\n}\n\n/**\n * Contains types that are part of the unstable debug API.\n *\n * Everything in this API is not stable and may change or be removed in the future,\n * even on patch releases.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace ReactiveUnstable {\n  /**\n   * When Lit is running in dev mode and `window.emitLitDebugLogEvents` is true,\n   * we will emit 'lit-debug' events to window, with live details about the update and render\n   * lifecycle. These can be useful for writing debug tooling and visualizations.\n   *\n   * Please be aware that running with window.emitLitDebugLogEvents has performance overhead,\n   * making certain operations that are normally very cheap (like a no-op render) much slower,\n   * because we must copy data and dispatch events.\n   */\n  // eslint-disable-next-line @typescript-eslint/no-namespace\n  export namespace DebugLog {\n    export type Entry = Update;\n    export interface Update {\n      kind: 'update';\n    }\n  }\n}\n\ninterface DebugLoggingWindow {\n  // Even in dev mode, we generally don't want to emit these events, as that's\n  // another level of cost, so only emit them when DEV_MODE is true _and_ when\n  // window.emitLitDebugEvents is true.\n  emitLitDebugLogEvents?: boolean;\n}\n\n/**\n * Useful for visualizing and logging insights into what the Lit template system is doing.\n *\n * Compiled out of prod mode builds.\n */\nconst debugLogEvent = DEV_MODE\n  ? (event: ReactiveUnstable.DebugLog.Entry) => {\n      const shouldEmit = (global as unknown as DebugLoggingWindow)\n        .emitLitDebugLogEvents;\n      if (!shouldEmit) {\n        return;\n      }\n      global.dispatchEvent(\n        new CustomEvent<ReactiveUnstable.DebugLog.Entry>('lit-debug', {\n          detail: event,\n        })\n      );\n    }\n  : undefined;\n\n/*\n * When using Closure Compiler, JSCompiler_renameProperty(property, object) is\n * replaced at compile time by the munged name for object[property]. We cannot\n * alias this function, so we have to use a small shim that has the same\n * behavior when not compiling.\n */\n/*@__INLINE__*/\nconst JSCompiler_renameProperty = <P extends PropertyKey>(\n  prop: P,\n  _obj: unknown\n): P => prop;\n\n/**\n * Converts property values to and from attribute values.\n */\nexport interface ComplexAttributeConverter<Type = unknown, TypeHint = unknown> {\n  /**\n   * Called to convert an attribute value to a property\n   * value.\n   */\n  fromAttribute?(value: string | null, type?: TypeHint): Type;\n\n  /**\n   * Called to convert a property value to an attribute\n   * value.\n   *\n   * It returns unknown instead of string, to be compatible with\n   * https://github.com/WICG/trusted-types (and similar efforts).\n   */\n  toAttribute?(value: Type, type?: TypeHint): unknown;\n}\n\ntype AttributeConverter<Type = unknown, TypeHint = unknown> =\n  | ComplexAttributeConverter<Type>\n  | ((value: string | null, type?: TypeHint) => Type);\n\n/**\n * Defines options for a property accessor.\n */\nexport interface PropertyDeclaration<Type = unknown, TypeHint = unknown> {\n  /**\n   * When set to `true`, indicates the property is internal private state. The\n   * property should not be set by users. When using TypeScript, this property\n   * should be marked as `private` or `protected`, and it is also a common\n   * practice to use a leading `_` in the name. The property is not added to\n   * `observedAttributes`.\n   */\n  readonly state?: boolean;\n\n  /**\n   * Indicates how and whether the property becomes an observed attribute.\n   * If the value is `false`, the property is not added to `observedAttributes`.\n   * If true or absent, the lowercased property name is observed (e.g. `fooBar`\n   * becomes `foobar`). If a string, the string value is observed (e.g\n   * `attribute: 'foo-bar'`).\n   */\n  readonly attribute?: boolean | string;\n\n  /**\n   * Indicates the type of the property. This is used only as a hint for the\n   * `converter` to determine how to convert the attribute\n   * to/from a property.\n   */\n  readonly type?: TypeHint;\n\n  /**\n   * Indicates how to convert the attribute to/from a property. If this value\n   * is a function, it is used to convert the attribute value a the property\n   * value. If it's an object, it can have keys for `fromAttribute` and\n   * `toAttribute`. If no `toAttribute` function is provided and\n   * `reflect` is set to `true`, the property value is set directly to the\n   * attribute. A default `converter` is used if none is provided; it supports\n   * `Boolean`, `String`, `Number`, `Object`, and `Array`. Note,\n   * when a property changes and the converter is used to update the attribute,\n   * the property is never updated again as a result of the attribute changing,\n   * and vice versa.\n   */\n  readonly converter?: AttributeConverter<Type, TypeHint>;\n\n  /**\n   * Indicates if the property should reflect to an attribute.\n   * If `true`, when the property is set, the attribute is set using the\n   * attribute name determined according to the rules for the `attribute`\n   * property option and the value of the property converted using the rules\n   * from the `converter` property option.\n   */\n  readonly reflect?: boolean;\n\n  /**\n   * A function that indicates if a property should be considered changed when\n   * it is set. The function should take the `newValue` and `oldValue` and\n   * return `true` if an update should be requested.\n   */\n  hasChanged?(value: Type, oldValue: Type): boolean;\n\n  /**\n   * Indicates whether an accessor will be created for this property. By\n   * default, an accessor will be generated for this property that requests an\n   * update when set. If this flag is `true`, no accessor will be created, and\n   * it will be the user's responsibility to call\n   * `this.requestUpdate(propertyName, oldValue)` to request an update when\n   * the property changes.\n   */\n  readonly noAccessor?: boolean;\n}\n\n/**\n * Map of properties to PropertyDeclaration options. For each property an\n * accessor is made, and the property is processed according to the\n * PropertyDeclaration options.\n */\nexport interface PropertyDeclarations {\n  readonly [key: string]: PropertyDeclaration;\n}\n\ntype PropertyDeclarationMap = Map<PropertyKey, PropertyDeclaration>;\n\ntype AttributeMap = Map<string, PropertyKey>;\n\n/**\n * A Map of property keys to values.\n *\n * Takes an optional type parameter T, which when specified as a non-any,\n * non-unknown type, will make the Map more strongly-typed, associating the map\n * keys with their corresponding value type on T.\n *\n * Use `PropertyValues<this>` when overriding ReactiveElement.update() and\n * other lifecycle methods in order to get stronger type-checking on keys\n * and values.\n */\n// This type is conditional so that if the parameter T is not specified, or\n// is `any`, the type will include `Map<PropertyKey, unknown>`. Since T is not\n// given in the uses of PropertyValues in this file, all uses here fallback to\n// meaning `Map<PropertyKey, unknown>`, but if a developer uses\n// `PropertyValues<this>` (or any other value for T) they will get a\n// strongly-typed Map type.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type PropertyValues<T = any> = T extends object\n  ? PropertyValueMap<T>\n  : Map<PropertyKey, unknown>;\n\n/**\n * Do not use, instead prefer {@linkcode PropertyValues}.\n */\n// This type must be exported such that JavaScript generated by the Google\n// Closure Compiler can import a type reference.\nexport interface PropertyValueMap<T> extends Map<PropertyKey, unknown> {\n  get<K extends keyof T>(k: K): T[K];\n  set<K extends keyof T>(key: K, value: T[K]): this;\n  has<K extends keyof T>(k: K): boolean;\n  delete<K extends keyof T>(k: K): boolean;\n}\n\nexport const defaultConverter: ComplexAttributeConverter = {\n  toAttribute(value: unknown, type?: unknown): unknown {\n    switch (type) {\n      case Boolean:\n        value = value ? emptyStringForBooleanAttribute : null;\n        break;\n      case Object:\n      case Array:\n        // if the value is `null` or `undefined` pass this through\n        // to allow removing/no change behavior.\n        value = value == null ? value : JSON.stringify(value);\n        break;\n    }\n    return value;\n  },\n\n  fromAttribute(value: string | null, type?: unknown) {\n    let fromValue: unknown = value;\n    switch (type) {\n      case Boolean:\n        fromValue = value !== null;\n        break;\n      case Number:\n        fromValue = value === null ? null : Number(value);\n        break;\n      case Object:\n      case Array:\n        // Do *not* generate exception when invalid JSON is set as elements\n        // don't normally complain on being mis-configured.\n        // TODO(sorvell): Do generate exception in *dev mode*.\n        try {\n          // Assert to adhere to Bazel's \"must type assert JSON parse\" rule.\n          fromValue = JSON.parse(value!) as unknown;\n        } catch (e) {\n          fromValue = null;\n        }\n        break;\n    }\n    return fromValue;\n  },\n};\n\nexport interface HasChanged {\n  (value: unknown, old: unknown): boolean;\n}\n\n/**\n * Change function that returns true if `value` is different from `oldValue`.\n * This method is used as the default for a property's `hasChanged` function.\n */\nexport const notEqual: HasChanged = (value: unknown, old: unknown): boolean => {\n  // This ensures (old==NaN, value==NaN) always returns false\n  return old !== value && (old === old || value === value);\n};\n\nconst defaultPropertyDeclaration: PropertyDeclaration = {\n  attribute: true,\n  type: String,\n  converter: defaultConverter,\n  reflect: false,\n  hasChanged: notEqual,\n};\n\n/**\n * The Closure JS Compiler doesn't currently have good support for static\n * property semantics where \"this\" is dynamic (e.g.\n * https://github.com/google/closure-compiler/issues/3177 and others) so we use\n * this hack to bypass any rewriting by the compiler.\n */\nconst finalized = 'finalized';\n\n/**\n * A string representing one of the supported dev mode warning categories.\n */\nexport type WarningKind = 'change-in-update' | 'migration';\n\nexport type Initializer = (element: ReactiveElement) => void;\n\n/**\n * Base element class which manages element properties and attributes. When\n * properties change, the `update` method is asynchronously called. This method\n * should be supplied by subclassers to render updates as desired.\n * @noInheritDoc\n */\nexport abstract class ReactiveElement\n  // In the Node build, this `extends` clause will be substituted with\n  // `(globalThis.HTMLElement ?? HTMLElement)`.\n  //\n  // This way, we will first prefer any global `HTMLElement` polyfill that the\n  // user has assigned, and then fall back to the `HTMLElement` shim which has\n  // been imported (see note at the top of this file about how this import is\n  // generated by Rollup). Note that the `HTMLElement` variable has been\n  // shadowed by this import, so it no longer refers to the global.\n  extends HTMLElement\n  implements ReactiveControllerHost\n{\n  // Note: these are patched in only in DEV_MODE.\n  /**\n   * Read or set all the enabled warning categories for this class.\n   *\n   * This property is only used in development builds.\n   *\n   * @nocollapse\n   * @category dev-mode\n   */\n  static enabledWarnings?: WarningKind[];\n\n  /**\n   * Enable the given warning category for this class.\n   *\n   * This method only exists in development builds, so it should be accessed\n   * with a guard like:\n   *\n   * ```ts\n   * // Enable for all ReactiveElement subclasses\n   * ReactiveElement.enableWarning?.('migration');\n   *\n   * // Enable for only MyElement and subclasses\n   * MyElement.enableWarning?.('migration');\n   * ```\n   *\n   * @nocollapse\n   * @category dev-mode\n   */\n  static enableWarning?: (warningKind: WarningKind) => void;\n\n  /**\n   * Disable the given warning category for this class.\n   *\n   * This method only exists in development builds, so it should be accessed\n   * with a guard like:\n   *\n   * ```ts\n   * // Disable for all ReactiveElement subclasses\n   * ReactiveElement.disableWarning?.('migration');\n   *\n   * // Disable for only MyElement and subclasses\n   * MyElement.disableWarning?.('migration');\n   * ```\n   *\n   * @nocollapse\n   * @category dev-mode\n   */\n  static disableWarning?: (warningKind: WarningKind) => void;\n\n  /**\n   * Adds an initializer function to the class that is called during instance\n   * construction.\n   *\n   * This is useful for code that runs against a `ReactiveElement`\n   * subclass, such as a decorator, that needs to do work for each\n   * instance, such as setting up a `ReactiveController`.\n   *\n   * ```ts\n   * const myDecorator = (target: typeof ReactiveElement, key: string) => {\n   *   target.addInitializer((instance: ReactiveElement) => {\n   *     // This is run during construction of the element\n   *     new MyController(instance);\n   *   });\n   * }\n   * ```\n   *\n   * Decorating a field will then cause each instance to run an initializer\n   * that adds a controller:\n   *\n   * ```ts\n   * class MyElement extends LitElement {\n   *   @myDecorator foo;\n   * }\n   * ```\n   *\n   * Initializers are stored per-constructor. Adding an initializer to a\n   * subclass does not add it to a superclass. Since initializers are run in\n   * constructors, initializers will run in order of the class hierarchy,\n   * starting with superclasses and progressing to the instance's class.\n   *\n   * @nocollapse\n   */\n  static addInitializer(initializer: Initializer) {\n    this.finalize();\n    (this._initializers ??= []).push(initializer);\n  }\n\n  static _initializers?: Initializer[];\n\n  /*\n   * Due to closure compiler ES6 compilation bugs, @nocollapse is required on\n   * all static methods and properties with initializers.  Reference:\n   * - https://github.com/google/closure-compiler/issues/1776\n   */\n\n  /**\n   * Maps attribute names to properties; for example `foobar` attribute to\n   * `fooBar` property. Created lazily on user subclasses when finalizing the\n   * class.\n   * @nocollapse\n   */\n  private static __attributeToPropertyMap: AttributeMap;\n\n  /**\n   * Marks class as having finished creating properties.\n   */\n  protected static [finalized] = true;\n\n  /**\n   * Memoized list of all element properties, including any superclass properties.\n   * Created lazily on user subclasses when finalizing the class.\n   * @nocollapse\n   * @category properties\n   */\n  static elementProperties: PropertyDeclarationMap = new Map();\n\n  /**\n   * User-supplied object that maps property names to `PropertyDeclaration`\n   * objects containing options for configuring reactive properties. When\n   * a reactive property is set the element will update and render.\n   *\n   * By default properties are public fields, and as such, they should be\n   * considered as primarily settable by element users, either via attribute or\n   * the property itself.\n   *\n   * Generally, properties that are changed by the element should be private or\n   * protected fields and should use the `state: true` option. Properties\n   * marked as `state` do not reflect from the corresponding attribute\n   *\n   * However, sometimes element code does need to set a public property. This\n   * should typically only be done in response to user interaction, and an event\n   * should be fired informing the user; for example, a checkbox sets its\n   * `checked` property when clicked and fires a `changed` event. Mutating\n   * public properties should typically not be done for non-primitive (object or\n   * array) properties. In other cases when an element needs to manage state, a\n   * private property set with the `state: true` option should be used. When\n   * needed, state properties can be initialized via public properties to\n   * facilitate complex interactions.\n   * @nocollapse\n   * @category properties\n   */\n  static properties: PropertyDeclarations;\n\n  /**\n   * Memoized list of all element styles.\n   * Created lazily on user subclasses when finalizing the class.\n   * @nocollapse\n   * @category styles\n   */\n  static elementStyles: Array<CSSResultOrNative> = [];\n\n  /**\n   * Array of styles to apply to the element. The styles should be defined\n   * using the {@linkcode css} tag function, via constructible stylesheets, or\n   * imported from native CSS module scripts.\n   *\n   * Note on Content Security Policy:\n   *\n   * Element styles are implemented with `<style>` tags when the browser doesn't\n   * support adopted StyleSheets. To use such `<style>` tags with the style-src\n   * CSP directive, the style-src value must either include 'unsafe-inline' or\n   * `nonce-<base64-value>` with `<base64-value>` replaced be a server-generated\n   * nonce.\n   *\n   * To provide a nonce to use on generated `<style>` elements, set\n   * `window.litNonce` to a server-generated nonce in your page's HTML, before\n   * loading application code:\n   *\n   * ```html\n   * <script>\n   *   // Generated and unique per request:\n   *   window.litNonce = 'a1b2c3d4';\n   * </script>\n   * ```\n   * @nocollapse\n   * @category styles\n   */\n  static styles?: CSSResultGroup;\n\n  /**\n   * The set of properties defined by this class that caused an accessor to be\n   * added during `createProperty`.\n   * @nocollapse\n   */\n  private static __reactivePropertyKeys?: Set<PropertyKey>;\n\n  /**\n   * Returns a list of attributes corresponding to the registered properties.\n   * @nocollapse\n   * @category attributes\n   */\n  static get observedAttributes() {\n    // note: piggy backing on this to ensure we're finalized.\n    this.finalize();\n    const attributes: string[] = [];\n    // Use forEach so this works even if for/of loops are compiled to for loops\n    // expecting arrays\n    this.elementProperties.forEach((v, p) => {\n      const attr = this.__attributeNameForProperty(p, v);\n      if (attr !== undefined) {\n        this.__attributeToPropertyMap.set(attr, p);\n        attributes.push(attr);\n      }\n    });\n    return attributes;\n  }\n\n  /**\n   * Creates a property accessor on the element prototype if one does not exist\n   * and stores a {@linkcode PropertyDeclaration} for the property with the\n   * given options. The property setter calls the property's `hasChanged`\n   * property option or uses a strict identity check to determine whether or not\n   * to request an update.\n   *\n   * This method may be overridden to customize properties; however,\n   * when doing so, it's important to call `super.createProperty` to ensure\n   * the property is setup correctly. This method calls\n   * `getPropertyDescriptor` internally to get a descriptor to install.\n   * To customize what properties do when they are get or set, override\n   * `getPropertyDescriptor`. To customize the options for a property,\n   * implement `createProperty` like this:\n   *\n   * ```ts\n   * static createProperty(name, options) {\n   *   options = Object.assign(options, {myOption: true});\n   *   super.createProperty(name, options);\n   * }\n   * ```\n   *\n   * @nocollapse\n   * @category properties\n   */\n  static createProperty(\n    name: PropertyKey,\n    options: PropertyDeclaration = defaultPropertyDeclaration\n  ) {\n    // if this is a state property, force the attribute to false.\n    if (options.state) {\n      // Cast as any since this is readonly.\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      (options as any).attribute = false;\n    }\n    // Note, since this can be called by the `@property` decorator which\n    // is called before `finalize`, we ensure finalization has been kicked off.\n    this.finalize();\n    this.elementProperties.set(name, options);\n    // Do not generate an accessor if the prototype already has one, since\n    // it would be lost otherwise and that would never be the user's intention;\n    // Instead, we expect users to call `requestUpdate` themselves from\n    // user-defined accessors. Note that if the super has an accessor we will\n    // still overwrite it\n    if (!options.noAccessor && !this.prototype.hasOwnProperty(name)) {\n      const key = typeof name === 'symbol' ? Symbol() : `__${name}`;\n      const descriptor = this.getPropertyDescriptor(name, key, options);\n      if (descriptor !== undefined) {\n        Object.defineProperty(this.prototype, name, descriptor);\n        if (DEV_MODE) {\n          // If this class doesn't have its own set, create one and initialize\n          // with the values in the set from the nearest ancestor class, if any.\n          if (!this.hasOwnProperty('__reactivePropertyKeys')) {\n            this.__reactivePropertyKeys = new Set(\n              this.__reactivePropertyKeys ?? []\n            );\n          }\n          this.__reactivePropertyKeys!.add(name);\n        }\n      }\n    }\n  }\n\n  /**\n   * Returns a property descriptor to be defined on the given named property.\n   * If no descriptor is returned, the property will not become an accessor.\n   * For example,\n   *\n   * ```ts\n   * class MyElement extends LitElement {\n   *   static getPropertyDescriptor(name, key, options) {\n   *     const defaultDescriptor =\n   *         super.getPropertyDescriptor(name, key, options);\n   *     const setter = defaultDescriptor.set;\n   *     return {\n   *       get: defaultDescriptor.get,\n   *       set(value) {\n   *         setter.call(this, value);\n   *         // custom action.\n   *       },\n   *       configurable: true,\n   *       enumerable: true\n   *     }\n   *   }\n   * }\n   * ```\n   *\n   * @nocollapse\n   * @category properties\n   */\n  protected static getPropertyDescriptor(\n    name: PropertyKey,\n    key: string | symbol,\n    options: PropertyDeclaration\n  ): PropertyDescriptor | undefined {\n    return {\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      get(): any {\n        return (this as {[key: string]: unknown})[key as string];\n      },\n      set(this: ReactiveElement, value: unknown) {\n        const oldValue = (this as {} as {[key: string]: unknown})[\n          name as string\n        ];\n        (this as {} as {[key: string]: unknown})[key as string] = value;\n        (this as unknown as ReactiveElement).requestUpdate(\n          name,\n          oldValue,\n          options\n        );\n      },\n      configurable: true,\n      enumerable: true,\n    };\n  }\n\n  /**\n   * Returns the property options associated with the given property.\n   * These options are defined with a `PropertyDeclaration` via the `properties`\n   * object or the `@property` decorator and are registered in\n   * `createProperty(...)`.\n   *\n   * Note, this method should be considered \"final\" and not overridden. To\n   * customize the options for a given property, override\n   * {@linkcode createProperty}.\n   *\n   * @nocollapse\n   * @final\n   * @category properties\n   */\n  static getPropertyOptions(name: PropertyKey) {\n    return this.elementProperties.get(name) || defaultPropertyDeclaration;\n  }\n\n  /**\n   * Creates property accessors for registered properties, sets up element\n   * styling, and ensures any superclasses are also finalized. Returns true if\n   * the element was finalized.\n   * @nocollapse\n   */\n  protected static finalize() {\n    if (this.hasOwnProperty(finalized)) {\n      return false;\n    }\n    this[finalized] = true;\n    // finalize any superclasses\n    const superCtor = Object.getPrototypeOf(this) as typeof ReactiveElement;\n    superCtor.finalize();\n    // Create own set of initializers for this class if any exist on the\n    // superclass and copy them down. Note, for a small perf boost, avoid\n    // creating initializers unless needed.\n    if (superCtor._initializers !== undefined) {\n      this._initializers = [...superCtor._initializers];\n    }\n    this.elementProperties = new Map(superCtor.elementProperties);\n    // initialize Map populated in observedAttributes\n    this.__attributeToPropertyMap = new Map();\n    // make any properties\n    // Note, only process \"own\" properties since this element will inherit\n    // any properties defined on the superClass, and finalization ensures\n    // the entire prototype chain is finalized.\n    if (this.hasOwnProperty(JSCompiler_renameProperty('properties', this))) {\n      const props = this.properties;\n      // support symbols in properties (IE11 does not support this)\n      const propKeys = [\n        ...Object.getOwnPropertyNames(props),\n        ...Object.getOwnPropertySymbols(props),\n      ];\n      // This for/of is ok because propKeys is an array\n      for (const p of propKeys) {\n        // note, use of `any` is due to TypeScript lack of support for symbol in\n        // index types\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        this.createProperty(p, (props as any)[p]);\n      }\n    }\n    this.elementStyles = this.finalizeStyles(this.styles);\n    // DEV mode warnings\n    if (DEV_MODE) {\n      const warnRemovedOrRenamed = (name: string, renamed = false) => {\n        if (this.prototype.hasOwnProperty(name)) {\n          issueWarning(\n            renamed ? 'renamed-api' : 'removed-api',\n            `\\`${name}\\` is implemented on class ${this.name}. It ` +\n              `has been ${renamed ? 'renamed' : 'removed'} ` +\n              `in this version of LitElement.`\n          );\n        }\n      };\n      warnRemovedOrRenamed('initialize');\n      warnRemovedOrRenamed('requestUpdateInternal');\n      warnRemovedOrRenamed('_getUpdateComplete', true);\n    }\n    return true;\n  }\n\n  /**\n   * Options used when calling `attachShadow`. Set this property to customize\n   * the options for the shadowRoot; for example, to create a closed\n   * shadowRoot: `{mode: 'closed'}`.\n   *\n   * Note, these options are used in `createRenderRoot`. If this method\n   * is customized, options should be respected if possible.\n   * @nocollapse\n   * @category rendering\n   */\n  static shadowRootOptions: ShadowRootInit = {mode: 'open'};\n\n  /**\n   * Takes the styles the user supplied via the `static styles` property and\n   * returns the array of styles to apply to the element.\n   * Override this method to integrate into a style management system.\n   *\n   * Styles are deduplicated preserving the _last_ instance in the list. This\n   * is a performance optimization to avoid duplicated styles that can occur\n   * especially when composing via subclassing. The last item is kept to try\n   * to preserve the cascade order with the assumption that it's most important\n   * that last added styles override previous styles.\n   *\n   * @nocollapse\n   * @category styles\n   */\n  protected static finalizeStyles(\n    styles?: CSSResultGroup\n  ): Array<CSSResultOrNative> {\n    const elementStyles = [];\n    if (Array.isArray(styles)) {\n      // Dedupe the flattened array in reverse order to preserve the last items.\n      // Casting to Array<unknown> works around TS error that\n      // appears to come from trying to flatten a type CSSResultArray.\n      const set = new Set((styles as Array<unknown>).flat(Infinity).reverse());\n      // Then preserve original order by adding the set items in reverse order.\n      for (const s of set) {\n        elementStyles.unshift(getCompatibleStyle(s as CSSResultOrNative));\n      }\n    } else if (styles !== undefined) {\n      elementStyles.push(getCompatibleStyle(styles));\n    }\n    return elementStyles;\n  }\n\n  /**\n   * Node or ShadowRoot into which element DOM should be rendered. Defaults\n   * to an open shadowRoot.\n   * @category rendering\n   */\n  readonly renderRoot!: HTMLElement | ShadowRoot;\n\n  /**\n   * Returns the property name for the given attribute `name`.\n   * @nocollapse\n   */\n  private static __attributeNameForProperty(\n    name: PropertyKey,\n    options: PropertyDeclaration\n  ) {\n    const attribute = options.attribute;\n    return attribute === false\n      ? undefined\n      : typeof attribute === 'string'\n      ? attribute\n      : typeof name === 'string'\n      ? name.toLowerCase()\n      : undefined;\n  }\n\n  private __instanceProperties?: PropertyValues = new Map();\n  // Initialize to an unresolved Promise so we can make sure the element has\n  // connected before first update.\n  private __updatePromise!: Promise<boolean>;\n\n  /**\n   * True if there is a pending update as a result of calling `requestUpdate()`.\n   * Should only be read.\n   * @category updates\n   */\n  isUpdatePending = false;\n\n  /**\n   * Is set to `true` after the first update. The element code cannot assume\n   * that `renderRoot` exists before the element `hasUpdated`.\n   * @category updates\n   */\n  hasUpdated = false;\n\n  /**\n   * Map with keys for any properties that have changed since the last\n   * update cycle with previous values.\n   *\n   * @internal\n   */\n  _$changedProperties!: PropertyValues;\n\n  /**\n   * Map with keys of properties that should be reflected when updated.\n   */\n  private __reflectingProperties?: Map<PropertyKey, PropertyDeclaration>;\n\n  /**\n   * Name of currently reflecting property\n   */\n  private __reflectingProperty: PropertyKey | null = null;\n\n  /**\n   * Set of controllers.\n   */\n  private __controllers?: ReactiveController[];\n\n  constructor() {\n    super();\n    this._initialize();\n  }\n\n  /**\n   * Internal only override point for customizing work done when elements\n   * are constructed.\n   *\n   * @internal\n   */\n  _initialize() {\n    this.__updatePromise = new Promise<boolean>(\n      (res) => (this.enableUpdating = res)\n    );\n    this._$changedProperties = new Map();\n    this.__saveInstanceProperties();\n    // ensures first update will be caught by an early access of\n    // `updateComplete`\n    this.requestUpdate();\n    (this.constructor as typeof ReactiveElement)._initializers?.forEach((i) =>\n      i(this)\n    );\n  }\n\n  /**\n   * Registers a `ReactiveController` to participate in the element's reactive\n   * update cycle. The element automatically calls into any registered\n   * controllers during its lifecycle callbacks.\n   *\n   * If the element is connected when `addController()` is called, the\n   * controller's `hostConnected()` callback will be immediately called.\n   * @category controllers\n   */\n  addController(controller: ReactiveController) {\n    (this.__controllers ??= []).push(controller);\n    // If a controller is added after the element has been connected,\n    // call hostConnected. Note, re-using existence of `renderRoot` here\n    // (which is set in connectedCallback) to avoid the need to track a\n    // first connected state.\n    if (this.renderRoot !== undefined && this.isConnected) {\n      controller.hostConnected?.();\n    }\n  }\n\n  /**\n   * Removes a `ReactiveController` from the element.\n   * @category controllers\n   */\n  removeController(controller: ReactiveController) {\n    // Note, if the indexOf is -1, the >>> will flip the sign which makes the\n    // splice do nothing.\n    this.__controllers?.splice(this.__controllers.indexOf(controller) >>> 0, 1);\n  }\n\n  /**\n   * Fixes any properties set on the instance before upgrade time.\n   * Otherwise these would shadow the accessor and break these properties.\n   * The properties are stored in a Map which is played back after the\n   * constructor runs. Note, on very old versions of Safari (<=9) or Chrome\n   * (<=41), properties created for native platform properties like (`id` or\n   * `name`) may not have default values set in the element constructor. On\n   * these browsers native properties appear on instances and therefore their\n   * default value will overwrite any element default (e.g. if the element sets\n   * this.id = 'id' in the constructor, the 'id' will become '' since this is\n   * the native platform default).\n   */\n  private __saveInstanceProperties() {\n    // Use forEach so this works even if for/of loops are compiled to for loops\n    // expecting arrays\n    (this.constructor as typeof ReactiveElement).elementProperties.forEach(\n      (_v, p) => {\n        if (this.hasOwnProperty(p)) {\n          this.__instanceProperties!.set(p, this[p as keyof this]);\n          delete this[p as keyof this];\n        }\n      }\n    );\n  }\n\n  /**\n   * Returns the node into which the element should render and by default\n   * creates and returns an open shadowRoot. Implement to customize where the\n   * element's DOM is rendered. For example, to render into the element's\n   * childNodes, return `this`.\n   *\n   * @return Returns a node into which to render.\n   * @category rendering\n   */\n  protected createRenderRoot(): Element | ShadowRoot {\n    const renderRoot =\n      this.shadowRoot ??\n      this.attachShadow(\n        (this.constructor as typeof ReactiveElement).shadowRootOptions\n      );\n    adoptStyles(\n      renderRoot,\n      (this.constructor as typeof ReactiveElement).elementStyles\n    );\n    return renderRoot;\n  }\n\n  /**\n   * On first connection, creates the element's renderRoot, sets up\n   * element styling, and enables updating.\n   * @category lifecycle\n   */\n  connectedCallback() {\n    // create renderRoot before first update.\n    if (this.renderRoot === undefined) {\n      (\n        this as {\n          renderRoot: Element | DocumentFragment;\n        }\n      ).renderRoot = this.createRenderRoot();\n    }\n    this.enableUpdating(true);\n    this.__controllers?.forEach((c) => c.hostConnected?.());\n  }\n\n  /**\n   * Note, this method should be considered final and not overridden. It is\n   * overridden on the element instance with a function that triggers the first\n   * update.\n   * @category updates\n   */\n  protected enableUpdating(_requestedUpdate: boolean) {}\n\n  /**\n   * Allows for `super.disconnectedCallback()` in extensions while\n   * reserving the possibility of making non-breaking feature additions\n   * when disconnecting at some point in the future.\n   * @category lifecycle\n   */\n  disconnectedCallback() {\n    this.__controllers?.forEach((c) => c.hostDisconnected?.());\n  }\n\n  /**\n   * Synchronizes property values when attributes change.\n   *\n   * Specifically, when an attribute is set, the corresponding property is set.\n   * You should rarely need to implement this callback. If this method is\n   * overridden, `super.attributeChangedCallback(name, _old, value)` must be\n   * called.\n   *\n   * See [using the lifecycle callbacks](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_custom_elements#using_the_lifecycle_callbacks)\n   * on MDN for more information about the `attributeChangedCallback`.\n   * @category attributes\n   */\n  attributeChangedCallback(\n    name: string,\n    _old: string | null,\n    value: string | null\n  ) {\n    this._$attributeToProperty(name, value);\n  }\n\n  private __propertyToAttribute(\n    name: PropertyKey,\n    value: unknown,\n    options: PropertyDeclaration = defaultPropertyDeclaration\n  ) {\n    const attr = (\n      this.constructor as typeof ReactiveElement\n    ).__attributeNameForProperty(name, options);\n    if (attr !== undefined && options.reflect === true) {\n      const converter =\n        (options.converter as ComplexAttributeConverter)?.toAttribute !==\n        undefined\n          ? (options.converter as ComplexAttributeConverter)\n          : defaultConverter;\n      const attrValue = converter.toAttribute!(value, options.type);\n      if (\n        DEV_MODE &&\n        (this.constructor as typeof ReactiveElement).enabledWarnings!.indexOf(\n          'migration'\n        ) >= 0 &&\n        attrValue === undefined\n      ) {\n        issueWarning(\n          'undefined-attribute-value',\n          `The attribute value for the ${name as string} property is ` +\n            `undefined on element ${this.localName}. The attribute will be ` +\n            `removed, but in the previous version of \\`ReactiveElement\\`, ` +\n            `the attribute would not have changed.`\n        );\n      }\n      // Track if the property is being reflected to avoid\n      // setting the property again via `attributeChangedCallback`. Note:\n      // 1. this takes advantage of the fact that the callback is synchronous.\n      // 2. will behave incorrectly if multiple attributes are in the reaction\n      // stack at time of calling. However, since we process attributes\n      // in `update` this should not be possible (or an extreme corner case\n      // that we'd like to discover).\n      // mark state reflecting\n      this.__reflectingProperty = name;\n      if (attrValue == null) {\n        this.removeAttribute(attr);\n      } else {\n        this.setAttribute(attr, attrValue as string);\n      }\n      // mark state not reflecting\n      this.__reflectingProperty = null;\n    }\n  }\n\n  /** @internal */\n  _$attributeToProperty(name: string, value: string | null) {\n    const ctor = this.constructor as typeof ReactiveElement;\n    // Note, hint this as an `AttributeMap` so closure clearly understands\n    // the type; it has issues with tracking types through statics\n    const propName = (ctor.__attributeToPropertyMap as AttributeMap).get(name);\n    // Use tracking info to avoid reflecting a property value to an attribute\n    // if it was just set because the attribute changed.\n    if (propName !== undefined && this.__reflectingProperty !== propName) {\n      const options = ctor.getPropertyOptions(propName);\n      const converter =\n        typeof options.converter === 'function'\n          ? {fromAttribute: options.converter}\n          : options.converter?.fromAttribute !== undefined\n          ? options.converter\n          : defaultConverter;\n      // mark state reflecting\n      this.__reflectingProperty = propName;\n      this[propName as keyof this] = converter.fromAttribute!(\n        value,\n        options.type\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      ) as any;\n      // mark state not reflecting\n      this.__reflectingProperty = null;\n    }\n  }\n\n  /**\n   * Requests an update which is processed asynchronously. This should be called\n   * when an element should update based on some state not triggered by setting\n   * a reactive property. In this case, pass no arguments. It should also be\n   * called when manually implementing a property setter. In this case, pass the\n   * property `name` and `oldValue` to ensure that any configured property\n   * options are honored.\n   *\n   * @param name name of requesting property\n   * @param oldValue old value of requesting property\n   * @param options property options to use instead of the previously\n   *     configured options\n   * @category updates\n   */\n  requestUpdate(\n    name?: PropertyKey,\n    oldValue?: unknown,\n    options?: PropertyDeclaration\n  ): void {\n    let shouldRequestUpdate = true;\n    // If we have a property key, perform property update steps.\n    if (name !== undefined) {\n      options =\n        options ||\n        (this.constructor as typeof ReactiveElement).getPropertyOptions(name);\n      const hasChanged = options.hasChanged || notEqual;\n      if (hasChanged(this[name as keyof this], oldValue)) {\n        if (!this._$changedProperties.has(name)) {\n          this._$changedProperties.set(name, oldValue);\n        }\n        // Add to reflecting properties set.\n        // Note, it's important that every change has a chance to add the\n        // property to `_reflectingProperties`. This ensures setting\n        // attribute + property reflects correctly.\n        if (options.reflect === true && this.__reflectingProperty !== name) {\n          if (this.__reflectingProperties === undefined) {\n            this.__reflectingProperties = new Map();\n          }\n          this.__reflectingProperties.set(name, options);\n        }\n      } else {\n        // Abort the request if the property should not be considered changed.\n        shouldRequestUpdate = false;\n      }\n    }\n    if (!this.isUpdatePending && shouldRequestUpdate) {\n      this.__updatePromise = this.__enqueueUpdate();\n    }\n    // Note, since this no longer returns a promise, in dev mode we return a\n    // thenable which warns if it's called.\n    return DEV_MODE\n      ? (requestUpdateThenable(this.localName) as unknown as void)\n      : undefined;\n  }\n\n  /**\n   * Sets up the element to asynchronously update.\n   */\n  private async __enqueueUpdate() {\n    this.isUpdatePending = true;\n    try {\n      // Ensure any previous update has resolved before updating.\n      // This `await` also ensures that property changes are batched.\n      await this.__updatePromise;\n    } catch (e) {\n      // Refire any previous errors async so they do not disrupt the update\n      // cycle. Errors are refired so developers have a chance to observe\n      // them, and this can be done by implementing\n      // `window.onunhandledrejection`.\n      Promise.reject(e);\n    }\n    const result = this.scheduleUpdate();\n    // If `scheduleUpdate` returns a Promise, we await it. This is done to\n    // enable coordinating updates with a scheduler. Note, the result is\n    // checked to avoid delaying an additional microtask unless we need to.\n    if (result != null) {\n      await result;\n    }\n    return !this.isUpdatePending;\n  }\n\n  /**\n   * Schedules an element update. You can override this method to change the\n   * timing of updates by returning a Promise. The update will await the\n   * returned Promise, and you should resolve the Promise to allow the update\n   * to proceed. If this method is overridden, `super.scheduleUpdate()`\n   * must be called.\n   *\n   * For instance, to schedule updates to occur just before the next frame:\n   *\n   * ```ts\n   * override protected async scheduleUpdate(): Promise<unknown> {\n   *   await new Promise((resolve) => requestAnimationFrame(() => resolve()));\n   *   super.scheduleUpdate();\n   * }\n   * ```\n   * @category updates\n   */\n  protected scheduleUpdate(): void | Promise<unknown> {\n    return this.performUpdate();\n  }\n\n  /**\n   * Performs an element update. Note, if an exception is thrown during the\n   * update, `firstUpdated` and `updated` will not be called.\n   *\n   * Call `performUpdate()` to immediately process a pending update. This should\n   * generally not be needed, but it can be done in rare cases when you need to\n   * update synchronously.\n   *\n   * Note: To ensure `performUpdate()` synchronously completes a pending update,\n   * it should not be overridden. In LitElement 2.x it was suggested to override\n   * `performUpdate()` to also customizing update scheduling. Instead, you should now\n   * override `scheduleUpdate()`. For backwards compatibility with LitElement 2.x,\n   * scheduling updates via `performUpdate()` continues to work, but will make\n   * also calling `performUpdate()` to synchronously process updates difficult.\n   *\n   * @category updates\n   */\n  protected performUpdate(): void | Promise<unknown> {\n    // Abort any update if one is not pending when this is called.\n    // This can happen if `performUpdate` is called early to \"flush\"\n    // the update.\n    if (!this.isUpdatePending) {\n      return;\n    }\n    debugLogEvent?.({kind: 'update'});\n    // create renderRoot before first update.\n    if (!this.hasUpdated) {\n      // Produce warning if any class properties are shadowed by class fields\n      if (DEV_MODE) {\n        const shadowedProperties: string[] = [];\n        (\n          this.constructor as typeof ReactiveElement\n        ).__reactivePropertyKeys?.forEach((p) => {\n          if (this.hasOwnProperty(p) && !this.__instanceProperties?.has(p)) {\n            shadowedProperties.push(p as string);\n          }\n        });\n        if (shadowedProperties.length) {\n          throw new Error(\n            `The following properties on element ${this.localName} will not ` +\n              `trigger updates as expected because they are set using class ` +\n              `fields: ${shadowedProperties.join(', ')}. ` +\n              `Native class fields and some compiled output will overwrite ` +\n              `accessors used for detecting changes. See ` +\n              `https://lit.dev/msg/class-field-shadowing ` +\n              `for more information.`\n          );\n        }\n      }\n    }\n    // Mixin instance properties once, if they exist.\n    if (this.__instanceProperties) {\n      // Use forEach so this works even if for/of loops are compiled to for loops\n      // expecting arrays\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      this.__instanceProperties!.forEach((v, p) => ((this as any)[p] = v));\n      this.__instanceProperties = undefined;\n    }\n    let shouldUpdate = false;\n    const changedProperties = this._$changedProperties;\n    try {\n      shouldUpdate = this.shouldUpdate(changedProperties);\n      if (shouldUpdate) {\n        this.willUpdate(changedProperties);\n        this.__controllers?.forEach((c) => c.hostUpdate?.());\n        this.update(changedProperties);\n      } else {\n        this.__markUpdated();\n      }\n    } catch (e) {\n      // Prevent `firstUpdated` and `updated` from running when there's an\n      // update exception.\n      shouldUpdate = false;\n      // Ensure element can accept additional updates after an exception.\n      this.__markUpdated();\n      throw e;\n    }\n    // The update is no longer considered pending and further updates are now allowed.\n    if (shouldUpdate) {\n      this._$didUpdate(changedProperties);\n    }\n  }\n\n  /**\n   * Invoked before `update()` to compute values needed during the update.\n   *\n   * Implement `willUpdate` to compute property values that depend on other\n   * properties and are used in the rest of the update process.\n   *\n   * ```ts\n   * willUpdate(changedProperties) {\n   *   // only need to check changed properties for an expensive computation.\n   *   if (changedProperties.has('firstName') || changedProperties.has('lastName')) {\n   *     this.sha = computeSHA(`${this.firstName} ${this.lastName}`);\n   *   }\n   * }\n   *\n   * render() {\n   *   return html`SHA: ${this.sha}`;\n   * }\n   * ```\n   *\n   * @category updates\n   */\n  protected willUpdate(_changedProperties: PropertyValues): void {}\n\n  // Note, this is an override point for polyfill-support.\n  // @internal\n  _$didUpdate(changedProperties: PropertyValues) {\n    this.__controllers?.forEach((c) => c.hostUpdated?.());\n    if (!this.hasUpdated) {\n      this.hasUpdated = true;\n      this.firstUpdated(changedProperties);\n    }\n    this.updated(changedProperties);\n    if (\n      DEV_MODE &&\n      this.isUpdatePending &&\n      (this.constructor as typeof ReactiveElement).enabledWarnings!.indexOf(\n        'change-in-update'\n      ) >= 0\n    ) {\n      issueWarning(\n        'change-in-update',\n        `Element ${this.localName} scheduled an update ` +\n          `(generally because a property was set) ` +\n          `after an update completed, causing a new update to be scheduled. ` +\n          `This is inefficient and should be avoided unless the next update ` +\n          `can only be scheduled as a side effect of the previous update.`\n      );\n    }\n  }\n\n  private __markUpdated() {\n    this._$changedProperties = new Map();\n    this.isUpdatePending = false;\n  }\n\n  /**\n   * Returns a Promise that resolves when the element has completed updating.\n   * The Promise value is a boolean that is `true` if the element completed the\n   * update without triggering another update. The Promise result is `false` if\n   * a property was set inside `updated()`. If the Promise is rejected, an\n   * exception was thrown during the update.\n   *\n   * To await additional asynchronous work, override the `getUpdateComplete`\n   * method. For example, it is sometimes useful to await a rendered element\n   * before fulfilling this Promise. To do this, first await\n   * `super.getUpdateComplete()`, then any subsequent state.\n   *\n   * @return A promise of a boolean that resolves to true if the update completed\n   *     without triggering another update.\n   * @category updates\n   */\n  get updateComplete(): Promise<boolean> {\n    return this.getUpdateComplete();\n  }\n\n  /**\n   * Override point for the `updateComplete` promise.\n   *\n   * It is not safe to override the `updateComplete` getter directly due to a\n   * limitation in TypeScript which means it is not possible to call a\n   * superclass getter (e.g. `super.updateComplete.then(...)`) when the target\n   * language is ES5 (https://github.com/microsoft/TypeScript/issues/338).\n   * This method should be overridden instead. For example:\n   *\n   * ```ts\n   * class MyElement extends LitElement {\n   *   override async getUpdateComplete() {\n   *     const result = await super.getUpdateComplete();\n   *     await this._myChild.updateComplete;\n   *     return result;\n   *   }\n   * }\n   * ```\n   *\n   * @return A promise of a boolean that resolves to true if the update completed\n   *     without triggering another update.\n   * @category updates\n   */\n  protected getUpdateComplete(): Promise<boolean> {\n    return this.__updatePromise;\n  }\n\n  /**\n   * Controls whether or not `update()` should be called when the element requests\n   * an update. By default, this method always returns `true`, but this can be\n   * customized to control when to update.\n   *\n   * @param _changedProperties Map of changed properties with old values\n   * @category updates\n   */\n  protected shouldUpdate(_changedProperties: PropertyValues): boolean {\n    return true;\n  }\n\n  /**\n   * Updates the element. This method reflects property values to attributes.\n   * It can be overridden to render and keep updated element DOM.\n   * Setting properties inside this method will *not* trigger\n   * another update.\n   *\n   * @param _changedProperties Map of changed properties with old values\n   * @category updates\n   */\n  protected update(_changedProperties: PropertyValues) {\n    if (this.__reflectingProperties !== undefined) {\n      // Use forEach so this works even if for/of loops are compiled to for\n      // loops expecting arrays\n      this.__reflectingProperties.forEach((v, k) =>\n        this.__propertyToAttribute(k, this[k as keyof this], v)\n      );\n      this.__reflectingProperties = undefined;\n    }\n    this.__markUpdated();\n  }\n\n  /**\n   * Invoked whenever the element is updated. Implement to perform\n   * post-updating tasks via DOM APIs, for example, focusing an element.\n   *\n   * Setting properties inside this method will trigger the element to update\n   * again after this update cycle completes.\n   *\n   * @param _changedProperties Map of changed properties with old values\n   * @category updates\n   */\n  protected updated(_changedProperties: PropertyValues) {}\n\n  /**\n   * Invoked when the element is first updated. Implement to perform one time\n   * work on the element after update.\n   *\n   * ```ts\n   * firstUpdated() {\n   *   this.renderRoot.getElementById('my-text-area').focus();\n   * }\n   * ```\n   *\n   * Setting properties inside this method will trigger the element to update\n   * again after this update cycle completes.\n   *\n   * @param _changedProperties Map of changed properties with old values\n   * @category updates\n   */\n  protected firstUpdated(_changedProperties: PropertyValues) {}\n}\n\n// Apply polyfills if available\npolyfillSupport?.({ReactiveElement});\n\n// Dev mode warnings...\nif (DEV_MODE) {\n  // Default warning set.\n  ReactiveElement.enabledWarnings = ['change-in-update'];\n  const ensureOwnWarnings = function (ctor: typeof ReactiveElement) {\n    if (\n      !ctor.hasOwnProperty(JSCompiler_renameProperty('enabledWarnings', ctor))\n    ) {\n      ctor.enabledWarnings = ctor.enabledWarnings!.slice();\n    }\n  };\n  ReactiveElement.enableWarning = function (\n    this: typeof ReactiveElement,\n    warning: WarningKind\n  ) {\n    ensureOwnWarnings(this);\n    if (this.enabledWarnings!.indexOf(warning) < 0) {\n      this.enabledWarnings!.push(warning);\n    }\n  };\n  ReactiveElement.disableWarning = function (\n    this: typeof ReactiveElement,\n    warning: WarningKind\n  ) {\n    ensureOwnWarnings(this);\n    const i = this.enabledWarnings!.indexOf(warning);\n    if (i >= 0) {\n      this.enabledWarnings!.splice(i, 1);\n    }\n  };\n}\n\n// IMPORTANT: do not change the property name or the assignment expression.\n// This line will be used in regexes to search for ReactiveElement usage.\n(global.reactiveElementVersions ??= []).push('1.6.1');\nif (DEV_MODE && global.reactiveElementVersions.length > 1) {\n  issueWarning!(\n    'multiple-versions',\n    `Multiple versions of Lit loaded. Loading multiple versions ` +\n      `is not recommended.`\n  );\n}\n", "/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n// IMPORTANT: these imports must be type-only\nimport type {Directive, DirectiveResult, PartInfo} from './directive.js';\n\nconst DEV_MODE = true;\nconst ENABLE_EXTRA_SECURITY_HOOKS = true;\nconst ENABLE_SHADYDOM_NOPATCH = true;\nconst NODE_MODE = false;\n// Use window for browser builds because IE11 doesn't have globalThis.\nconst global = NODE_MODE ? globalThis : window;\n\n/**\n * Contains types that are part of the unstable debug API.\n *\n * Everything in this API is not stable and may change or be removed in the future,\n * even on patch releases.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace LitUnstable {\n  /**\n   * When Lit is running in dev mode and `window.emitLitDebugLogEvents` is true,\n   * we will emit 'lit-debug' events to window, with live details about the update and render\n   * lifecycle. These can be useful for writing debug tooling and visualizations.\n   *\n   * Please be aware that running with window.emitLitDebugLogEvents has performance overhead,\n   * making certain operations that are normally very cheap (like a no-op render) much slower,\n   * because we must copy data and dispatch events.\n   */\n  // eslint-disable-next-line @typescript-eslint/no-namespace\n  export namespace DebugLog {\n    export type Entry =\n      | TemplatePrep\n      | TemplateInstantiated\n      | TemplateInstantiatedAndUpdated\n      | TemplateUpdating\n      | BeginRender\n      | EndRender\n      | CommitPartEntry\n      | SetPartValue;\n    export interface TemplatePrep {\n      kind: 'template prep';\n      template: Template;\n      strings: TemplateStringsArray;\n      clonableTemplate: HTMLTemplateElement;\n      parts: TemplatePart[];\n    }\n    export interface BeginRender {\n      kind: 'begin render';\n      id: number;\n      value: unknown;\n      container: HTMLElement | DocumentFragment;\n      options: RenderOptions | undefined;\n      part: ChildPart | undefined;\n    }\n    export interface EndRender {\n      kind: 'end render';\n      id: number;\n      value: unknown;\n      container: HTMLElement | DocumentFragment;\n      options: RenderOptions | undefined;\n      part: ChildPart;\n    }\n    export interface TemplateInstantiated {\n      kind: 'template instantiated';\n      template: Template | CompiledTemplate;\n      instance: TemplateInstance;\n      options: RenderOptions | undefined;\n      fragment: Node;\n      parts: Array<Part | undefined>;\n      values: unknown[];\n    }\n    export interface TemplateInstantiatedAndUpdated {\n      kind: 'template instantiated and updated';\n      template: Template | CompiledTemplate;\n      instance: TemplateInstance;\n      options: RenderOptions | undefined;\n      fragment: Node;\n      parts: Array<Part | undefined>;\n      values: unknown[];\n    }\n    export interface TemplateUpdating {\n      kind: 'template updating';\n      template: Template | CompiledTemplate;\n      instance: TemplateInstance;\n      options: RenderOptions | undefined;\n      parts: Array<Part | undefined>;\n      values: unknown[];\n    }\n    export interface SetPartValue {\n      kind: 'set part';\n      part: Part;\n      value: unknown;\n      valueIndex: number;\n      values: unknown[];\n      templateInstance: TemplateInstance;\n    }\n\n    export type CommitPartEntry =\n      | CommitNothingToChildEntry\n      | CommitText\n      | CommitNode\n      | CommitAttribute\n      | CommitProperty\n      | CommitBooleanAttribute\n      | CommitEventListener\n      | CommitToElementBinding;\n\n    export interface CommitNothingToChildEntry {\n      kind: 'commit nothing to child';\n      start: ChildNode;\n      end: ChildNode | null;\n      parent: Disconnectable | undefined;\n      options: RenderOptions | undefined;\n    }\n\n    export interface CommitText {\n      kind: 'commit text';\n      node: Text;\n      value: unknown;\n      options: RenderOptions | undefined;\n    }\n\n    export interface CommitNode {\n      kind: 'commit node';\n      start: Node;\n      parent: Disconnectable | undefined;\n      value: Node;\n      options: RenderOptions | undefined;\n    }\n\n    export interface CommitAttribute {\n      kind: 'commit attribute';\n      element: Element;\n      name: string;\n      value: unknown;\n      options: RenderOptions | undefined;\n    }\n\n    export interface CommitProperty {\n      kind: 'commit property';\n      element: Element;\n      name: string;\n      value: unknown;\n      options: RenderOptions | undefined;\n    }\n\n    export interface CommitBooleanAttribute {\n      kind: 'commit boolean attribute';\n      element: Element;\n      name: string;\n      value: boolean;\n      options: RenderOptions | undefined;\n    }\n\n    export interface CommitEventListener {\n      kind: 'commit event listener';\n      element: Element;\n      name: string;\n      value: unknown;\n      oldListener: unknown;\n      options: RenderOptions | undefined;\n      // True if we're removing the old event listener (e.g. because settings changed, or value is nothing)\n      removeListener: boolean;\n      // True if we're adding a new event listener (e.g. because first render, or settings changed)\n      addListener: boolean;\n    }\n\n    export interface CommitToElementBinding {\n      kind: 'commit to element binding';\n      element: Element;\n      value: unknown;\n      options: RenderOptions | undefined;\n    }\n  }\n}\n\ninterface DebugLoggingWindow {\n  // Even in dev mode, we generally don't want to emit these events, as that's\n  // another level of cost, so only emit them when DEV_MODE is true _and_ when\n  // window.emitLitDebugEvents is true.\n  emitLitDebugLogEvents?: boolean;\n}\n\n/**\n * Useful for visualizing and logging insights into what the Lit template system is doing.\n *\n * Compiled out of prod mode builds.\n */\nconst debugLogEvent = DEV_MODE\n  ? (event: LitUnstable.DebugLog.Entry) => {\n      const shouldEmit = (global as unknown as DebugLoggingWindow)\n        .emitLitDebugLogEvents;\n      if (!shouldEmit) {\n        return;\n      }\n      global.dispatchEvent(\n        new CustomEvent<LitUnstable.DebugLog.Entry>('lit-debug', {\n          detail: event,\n        })\n      );\n    }\n  : undefined;\n// Used for connecting beginRender and endRender events when there are nested\n// renders when errors are thrown preventing an endRender event from being\n// called.\nlet debugLogRenderId = 0;\n\nlet issueWarning: (code: string, warning: string) => void;\n\nif (DEV_MODE) {\n  global.litIssuedWarnings ??= new Set();\n\n  // Issue a warning, if we haven't already.\n  issueWarning = (code: string, warning: string) => {\n    warning += code\n      ? ` See https://lit.dev/msg/${code} for more information.`\n      : '';\n    if (!global.litIssuedWarnings!.has(warning)) {\n      console.warn(warning);\n      global.litIssuedWarnings!.add(warning);\n    }\n  };\n\n  issueWarning(\n    'dev-mode',\n    `Lit is in dev mode. Not recommended for production!`\n  );\n}\n\nconst wrap =\n  ENABLE_SHADYDOM_NOPATCH &&\n  global.ShadyDOM?.inUse &&\n  global.ShadyDOM?.noPatch === true\n    ? global.ShadyDOM!.wrap\n    : (node: Node) => node;\n\nconst trustedTypes = (global as unknown as Partial<Window>).trustedTypes;\n\n/**\n * Our TrustedTypePolicy for HTML which is declared using the html template\n * tag function.\n *\n * That HTML is a developer-authored constant, and is parsed with innerHTML\n * before any untrusted expressions have been mixed in. Therefor it is\n * considered safe by construction.\n */\nconst policy = trustedTypes\n  ? trustedTypes.createPolicy('lit-html', {\n      createHTML: (s) => s,\n    })\n  : undefined;\n\n/**\n * Used to sanitize any value before it is written into the DOM. This can be\n * used to implement a security policy of allowed and disallowed values in\n * order to prevent XSS attacks.\n *\n * One way of using this callback would be to check attributes and properties\n * against a list of high risk fields, and require that values written to such\n * fields be instances of a class which is safe by construction. Closure's Safe\n * HTML Types is one implementation of this technique (\n * https://github.com/google/safe-html-types/blob/master/doc/safehtml-types.md).\n * The TrustedTypes polyfill in API-only mode could also be used as a basis\n * for this technique (https://github.com/WICG/trusted-types).\n *\n * @param node The HTML node (usually either a #text node or an Element) that\n *     is being written to. Note that this is just an exemplar node, the write\n *     may take place against another instance of the same class of node.\n * @param name The name of an attribute or property (for example, 'href').\n * @param type Indicates whether the write that's about to be performed will\n *     be to a property or a node.\n * @return A function that will sanitize this class of writes.\n */\nexport type SanitizerFactory = (\n  node: Node,\n  name: string,\n  type: 'property' | 'attribute'\n) => ValueSanitizer;\n\n/**\n * A function which can sanitize values that will be written to a specific kind\n * of DOM sink.\n *\n * See SanitizerFactory.\n *\n * @param value The value to sanitize. Will be the actual value passed into\n *     the lit-html template literal, so this could be of any type.\n * @return The value to write to the DOM. Usually the same as the input value,\n *     unless sanitization is needed.\n */\nexport type ValueSanitizer = (value: unknown) => unknown;\n\nconst identityFunction: ValueSanitizer = (value: unknown) => value;\nconst noopSanitizer: SanitizerFactory = (\n  _node: Node,\n  _name: string,\n  _type: 'property' | 'attribute'\n) => identityFunction;\n\n/** Sets the global sanitizer factory. */\nconst setSanitizer = (newSanitizer: SanitizerFactory) => {\n  if (!ENABLE_EXTRA_SECURITY_HOOKS) {\n    return;\n  }\n  if (sanitizerFactoryInternal !== noopSanitizer) {\n    throw new Error(\n      `Attempted to overwrite existing lit-html security policy.` +\n        ` setSanitizeDOMValueFactory should be called at most once.`\n    );\n  }\n  sanitizerFactoryInternal = newSanitizer;\n};\n\n/**\n * Only used in internal tests, not a part of the public API.\n */\nconst _testOnlyClearSanitizerFactoryDoNotCallOrElse = () => {\n  sanitizerFactoryInternal = noopSanitizer;\n};\n\nconst createSanitizer: SanitizerFactory = (node, name, type) => {\n  return sanitizerFactoryInternal(node, name, type);\n};\n\n// Added to an attribute name to mark the attribute as bound so we can find\n// it easily.\nconst boundAttributeSuffix = '$lit$';\n\n// This marker is used in many syntactic positions in HTML, so it must be\n// a valid element name and attribute name. We don't support dynamic names (yet)\n// but this at least ensures that the parse tree is closer to the template\n// intention.\nconst marker = `lit$${String(Math.random()).slice(9)}$`;\n\n// String used to tell if a comment is a marker comment\nconst markerMatch = '?' + marker;\n\n// Text used to insert a comment marker node. We use processing instruction\n// syntax because it's slightly smaller, but parses as a comment node.\nconst nodeMarker = `<${markerMatch}>`;\n\nconst d =\n  NODE_MODE && global.document === undefined\n    ? ({\n        createTreeWalker() {\n          return {};\n        },\n      } as unknown as Document)\n    : document;\n\n// Creates a dynamic marker. We never have to search for these in the DOM.\nconst createMarker = (v = '') => d.createComment(v);\n\n// https://tc39.github.io/ecma262/#sec-typeof-operator\ntype Primitive = null | undefined | boolean | number | string | symbol | bigint;\nconst isPrimitive = (value: unknown): value is Primitive =>\n  value === null || (typeof value != 'object' && typeof value != 'function');\nconst isArray = Array.isArray;\nconst isIterable = (value: unknown): value is Iterable<unknown> =>\n  isArray(value) ||\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  typeof (value as any)?.[Symbol.iterator] === 'function';\n\nconst SPACE_CHAR = `[ \\t\\n\\f\\r]`;\nconst ATTR_VALUE_CHAR = `[^ \\t\\n\\f\\r\"'\\`<>=]`;\nconst NAME_CHAR = `[^\\\\s\"'>=/]`;\n\n// These regexes represent the five parsing states that we care about in the\n// Template's HTML scanner. They match the *end* of the state they're named\n// after.\n// Depending on the match, we transition to a new state. If there's no match,\n// we stay in the same state.\n// Note that the regexes are stateful. We utilize lastIndex and sync it\n// across the multiple regexes used. In addition to the five regexes below\n// we also dynamically create a regex to find the matching end tags for raw\n// text elements.\n\n/**\n * End of text is: `<` followed by:\n *   (comment start) or (tag) or (dynamic tag binding)\n */\nconst textEndRegex = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g;\nconst COMMENT_START = 1;\nconst TAG_NAME = 2;\nconst DYNAMIC_TAG_NAME = 3;\n\nconst commentEndRegex = /-->/g;\n/**\n * Comments not started with <!--, like </{, can be ended by a single `>`\n */\nconst comment2EndRegex = />/g;\n\n/**\n * The tagEnd regex matches the end of the \"inside an opening\" tag syntax\n * position. It either matches a `>`, an attribute-like sequence, or the end\n * of the string after a space (attribute-name position ending).\n *\n * See attributes in the HTML spec:\n * https://www.w3.org/TR/html5/syntax.html#elements-attributes\n *\n * \" \\t\\n\\f\\r\" are HTML space characters:\n * https://infra.spec.whatwg.org/#ascii-whitespace\n *\n * So an attribute is:\n *  * The name: any character except a whitespace character, (\"), ('), \">\",\n *    \"=\", or \"/\". Note: this is different from the HTML spec which also excludes control characters.\n *  * Followed by zero or more space characters\n *  * Followed by \"=\"\n *  * Followed by zero or more space characters\n *  * Followed by:\n *    * Any character except space, ('), (\"), \"<\", \">\", \"=\", (`), or\n *    * (\") then any non-(\"), or\n *    * (') then any non-(')\n */\nconst tagEndRegex = new RegExp(\n  `>|${SPACE_CHAR}(?:(${NAME_CHAR}+)(${SPACE_CHAR}*=${SPACE_CHAR}*(?:${ATTR_VALUE_CHAR}|(\"|')|))|$)`,\n  'g'\n);\nconst ENTIRE_MATCH = 0;\nconst ATTRIBUTE_NAME = 1;\nconst SPACES_AND_EQUALS = 2;\nconst QUOTE_CHAR = 3;\n\nconst singleQuoteAttrEndRegex = /'/g;\nconst doubleQuoteAttrEndRegex = /\"/g;\n/**\n * Matches the raw text elements.\n *\n * Comments are not parsed within raw text elements, so we need to search their\n * text content for marker strings.\n */\nconst rawTextElement = /^(?:script|style|textarea|title)$/i;\n\n/** TemplateResult types */\nconst HTML_RESULT = 1;\nconst SVG_RESULT = 2;\n\ntype ResultType = typeof HTML_RESULT | typeof SVG_RESULT;\n\n// TemplatePart types\n// IMPORTANT: these must match the values in PartType\nconst ATTRIBUTE_PART = 1;\nconst CHILD_PART = 2;\nconst PROPERTY_PART = 3;\nconst BOOLEAN_ATTRIBUTE_PART = 4;\nconst EVENT_PART = 5;\nconst ELEMENT_PART = 6;\nconst COMMENT_PART = 7;\n\n/**\n * The return type of the template tag functions, {@linkcode html} and\n * {@linkcode svg}.\n *\n * A `TemplateResult` object holds all the information about a template\n * expression required to render it: the template strings, expression values,\n * and type of template (html or svg).\n *\n * `TemplateResult` objects do not create any DOM on their own. To create or\n * update DOM you need to render the `TemplateResult`. See\n * [Rendering](https://lit.dev/docs/components/rendering) for more information.\n *\n */\nexport type TemplateResult<T extends ResultType = ResultType> = {\n  // This property needs to remain unminified.\n  ['_$litType$']: T;\n  strings: TemplateStringsArray;\n  values: unknown[];\n};\n\nexport type HTMLTemplateResult = TemplateResult<typeof HTML_RESULT>;\n\nexport type SVGTemplateResult = TemplateResult<typeof SVG_RESULT>;\n\nexport interface CompiledTemplateResult {\n  // This is a factory in order to make template initialization lazy\n  // and allow ShadyRenderOptions scope to be passed in.\n  // This property needs to remain unminified.\n  ['_$litType$']: CompiledTemplate;\n  values: unknown[];\n}\n\nexport interface CompiledTemplate extends Omit<Template, 'el'> {\n  // el is overridden to be optional. We initialize it on first render\n  el?: HTMLTemplateElement;\n\n  // The prepared HTML string to create a template element from.\n  h: TrustedHTML;\n}\n\n/**\n * Generates a template literal tag function that returns a TemplateResult with\n * the given result type.\n */\nconst tag =\n  <T extends ResultType>(type: T) =>\n  (strings: TemplateStringsArray, ...values: unknown[]): TemplateResult<T> => {\n    // Warn against templates octal escape sequences\n    // We do this here rather than in render so that the warning is closer to the\n    // template definition.\n    if (DEV_MODE && strings.some((s) => s === undefined)) {\n      console.warn(\n        'Some template strings are undefined.\\n' +\n          'This is probably caused by illegal octal escape sequences.'\n      );\n    }\n    return {\n      // This property needs to remain unminified.\n      ['_$litType$']: type,\n      strings,\n      values,\n    };\n  };\n\n/**\n * Interprets a template literal as an HTML template that can efficiently\n * render to and update a container.\n *\n * ```ts\n * const header = (title: string) => html`<h1>${title}</h1>`;\n * ```\n *\n * The `html` tag returns a description of the DOM to render as a value. It is\n * lazy, meaning no work is done until the template is rendered. When rendering,\n * if a template comes from the same expression as a previously rendered result,\n * it's efficiently updated instead of replaced.\n */\nexport const html = tag(HTML_RESULT);\n\n/**\n * Interprets a template literal as an SVG fragment that can efficiently\n * render to and update a container.\n *\n * ```ts\n * const rect = svg`<rect width=\"10\" height=\"10\"></rect>`;\n *\n * const myImage = html`\n *   <svg viewBox=\"0 0 10 10\" xmlns=\"http://www.w3.org/2000/svg\">\n *     ${rect}\n *   </svg>`;\n * ```\n *\n * The `svg` *tag function* should only be used for SVG fragments, or elements\n * that would be contained **inside** an `<svg>` HTML element. A common error is\n * placing an `<svg>` *element* in a template tagged with the `svg` tag\n * function. The `<svg>` element is an HTML element and should be used within a\n * template tagged with the {@linkcode html} tag function.\n *\n * In LitElement usage, it's invalid to return an SVG fragment from the\n * `render()` method, as the SVG fragment will be contained within the element's\n * shadow root and thus cannot be used within an `<svg>` HTML element.\n */\nexport const svg = tag(SVG_RESULT);\n\n/**\n * A sentinel value that signals that a value was handled by a directive and\n * should not be written to the DOM.\n */\nexport const noChange = Symbol.for('lit-noChange');\n\n/**\n * A sentinel value that signals a ChildPart to fully clear its content.\n *\n * ```ts\n * const button = html`${\n *  user.isAdmin\n *    ? html`<button>DELETE</button>`\n *    : nothing\n * }`;\n * ```\n *\n * Prefer using `nothing` over other falsy values as it provides a consistent\n * behavior between various expression binding contexts.\n *\n * In child expressions, `undefined`, `null`, `''`, and `nothing` all behave the\n * same and render no nodes. In attribute expressions, `nothing` _removes_ the\n * attribute, while `undefined` and `null` will render an empty string. In\n * property expressions `nothing` becomes `undefined`.\n */\nexport const nothing = Symbol.for('lit-nothing');\n\n/**\n * The cache of prepared templates, keyed by the tagged TemplateStringsArray\n * and _not_ accounting for the specific template tag used. This means that\n * template tags cannot be dynamic - the must statically be one of html, svg,\n * or attr. This restriction simplifies the cache lookup, which is on the hot\n * path for rendering.\n */\nconst templateCache = new WeakMap<TemplateStringsArray, Template>();\n\n/**\n * Object specifying options for controlling lit-html rendering. Note that\n * while `render` may be called multiple times on the same `container` (and\n * `renderBefore` reference node) to efficiently update the rendered content,\n * only the options passed in during the first render are respected during\n * the lifetime of renders to that unique `container` + `renderBefore`\n * combination.\n */\nexport interface RenderOptions {\n  /**\n   * An object to use as the `this` value for event listeners. It's often\n   * useful to set this to the host component rendering a template.\n   */\n  host?: object;\n  /**\n   * A DOM node before which to render content in the container.\n   */\n  renderBefore?: ChildNode | null;\n  /**\n   * Node used for cloning the template (`importNode` will be called on this\n   * node). This controls the `ownerDocument` of the rendered DOM, along with\n   * any inherited context. Defaults to the global `document`.\n   */\n  creationScope?: {importNode(node: Node, deep?: boolean): Node};\n  /**\n   * The initial connected state for the top-level part being rendered. If no\n   * `isConnected` option is set, `AsyncDirective`s will be connected by\n   * default. Set to `false` if the initial render occurs in a disconnected tree\n   * and `AsyncDirective`s should see `isConnected === false` for their initial\n   * render. The `part.setConnected()` method must be used subsequent to initial\n   * render to change the connected state of the part.\n   */\n  isConnected?: boolean;\n}\n\nconst walker = d.createTreeWalker(\n  d,\n  129 /* NodeFilter.SHOW_{ELEMENT|COMMENT} */,\n  null,\n  false\n);\n\nlet sanitizerFactoryInternal: SanitizerFactory = noopSanitizer;\n\n//\n// Classes only below here, const variable declarations only above here...\n//\n// Keeping variable declarations and classes together improves minification.\n// Interfaces and type aliases can be interleaved freely.\n//\n\n// Type for classes that have a `_directive` or `_directives[]` field, used by\n// `resolveDirective`\nexport interface DirectiveParent {\n  _$parent?: DirectiveParent;\n  _$isConnected: boolean;\n  __directive?: Directive;\n  __directives?: Array<Directive | undefined>;\n}\n\n/**\n * Returns an HTML string for the given TemplateStringsArray and result type\n * (HTML or SVG), along with the case-sensitive bound attribute names in\n * template order. The HTML contains comment markers denoting the `ChildPart`s\n * and suffixes on bound attributes denoting the `AttributeParts`.\n *\n * @param strings template strings array\n * @param type HTML or SVG\n * @return Array containing `[html, attrNames]` (array returned for terseness,\n *     to avoid object fields since this code is shared with non-minified SSR\n *     code)\n */\nconst getTemplateHtml = (\n  strings: TemplateStringsArray,\n  type: ResultType\n): [TrustedHTML, Array<string | undefined>] => {\n  // Insert makers into the template HTML to represent the position of\n  // bindings. The following code scans the template strings to determine the\n  // syntactic position of the bindings. They can be in text position, where\n  // we insert an HTML comment, attribute value position, where we insert a\n  // sentinel string and re-write the attribute name, or inside a tag where\n  // we insert the sentinel string.\n  const l = strings.length - 1;\n  // Stores the case-sensitive bound attribute names in the order of their\n  // parts. ElementParts are also reflected in this array as undefined\n  // rather than a string, to disambiguate from attribute bindings.\n  const attrNames: Array<string | undefined> = [];\n  let html = type === SVG_RESULT ? '<svg>' : '';\n\n  // When we're inside a raw text tag (not it's text content), the regex\n  // will still be tagRegex so we can find attributes, but will switch to\n  // this regex when the tag ends.\n  let rawTextEndRegex: RegExp | undefined;\n\n  // The current parsing state, represented as a reference to one of the\n  // regexes\n  let regex = textEndRegex;\n\n  for (let i = 0; i < l; i++) {\n    const s = strings[i];\n    // The index of the end of the last attribute name. When this is\n    // positive at end of a string, it means we're in an attribute value\n    // position and need to rewrite the attribute name.\n    // We also use a special value of -2 to indicate that we encountered\n    // the end of a string in attribute name position.\n    let attrNameEndIndex = -1;\n    let attrName: string | undefined;\n    let lastIndex = 0;\n    let match!: RegExpExecArray | null;\n\n    // The conditions in this loop handle the current parse state, and the\n    // assignments to the `regex` variable are the state transitions.\n    while (lastIndex < s.length) {\n      // Make sure we start searching from where we previously left off\n      regex.lastIndex = lastIndex;\n      match = regex.exec(s);\n      if (match === null) {\n        break;\n      }\n      lastIndex = regex.lastIndex;\n      if (regex === textEndRegex) {\n        if (match[COMMENT_START] === '!--') {\n          regex = commentEndRegex;\n        } else if (match[COMMENT_START] !== undefined) {\n          // We started a weird comment, like </{\n          regex = comment2EndRegex;\n        } else if (match[TAG_NAME] !== undefined) {\n          if (rawTextElement.test(match[TAG_NAME])) {\n            // Record if we encounter a raw-text element. We'll switch to\n            // this regex at the end of the tag.\n            rawTextEndRegex = new RegExp(`</${match[TAG_NAME]}`, 'g');\n          }\n          regex = tagEndRegex;\n        } else if (match[DYNAMIC_TAG_NAME] !== undefined) {\n          if (DEV_MODE) {\n            throw new Error(\n              'Bindings in tag names are not supported. Please use static templates instead. ' +\n                'See https://lit.dev/docs/templates/expressions/#static-expressions'\n            );\n          }\n          regex = tagEndRegex;\n        }\n      } else if (regex === tagEndRegex) {\n        if (match[ENTIRE_MATCH] === '>') {\n          // End of a tag. If we had started a raw-text element, use that\n          // regex\n          regex = rawTextEndRegex ?? textEndRegex;\n          // We may be ending an unquoted attribute value, so make sure we\n          // clear any pending attrNameEndIndex\n          attrNameEndIndex = -1;\n        } else if (match[ATTRIBUTE_NAME] === undefined) {\n          // Attribute name position\n          attrNameEndIndex = -2;\n        } else {\n          attrNameEndIndex = regex.lastIndex - match[SPACES_AND_EQUALS].length;\n          attrName = match[ATTRIBUTE_NAME];\n          regex =\n            match[QUOTE_CHAR] === undefined\n              ? tagEndRegex\n              : match[QUOTE_CHAR] === '\"'\n              ? doubleQuoteAttrEndRegex\n              : singleQuoteAttrEndRegex;\n        }\n      } else if (\n        regex === doubleQuoteAttrEndRegex ||\n        regex === singleQuoteAttrEndRegex\n      ) {\n        regex = tagEndRegex;\n      } else if (regex === commentEndRegex || regex === comment2EndRegex) {\n        regex = textEndRegex;\n      } else {\n        // Not one of the five state regexes, so it must be the dynamically\n        // created raw text regex and we're at the close of that element.\n        regex = tagEndRegex;\n        rawTextEndRegex = undefined;\n      }\n    }\n\n    if (DEV_MODE) {\n      // If we have a attrNameEndIndex, which indicates that we should\n      // rewrite the attribute name, assert that we're in a valid attribute\n      // position - either in a tag, or a quoted attribute value.\n      console.assert(\n        attrNameEndIndex === -1 ||\n          regex === tagEndRegex ||\n          regex === singleQuoteAttrEndRegex ||\n          regex === doubleQuoteAttrEndRegex,\n        'unexpected parse state B'\n      );\n    }\n\n    // We have four cases:\n    //  1. We're in text position, and not in a raw text element\n    //     (regex === textEndRegex): insert a comment marker.\n    //  2. We have a non-negative attrNameEndIndex which means we need to\n    //     rewrite the attribute name to add a bound attribute suffix.\n    //  3. We're at the non-first binding in a multi-binding attribute, use a\n    //     plain marker.\n    //  4. We're somewhere else inside the tag. If we're in attribute name\n    //     position (attrNameEndIndex === -2), add a sequential suffix to\n    //     generate a unique attribute name.\n\n    // Detect a binding next to self-closing tag end and insert a space to\n    // separate the marker from the tag end:\n    const end =\n      regex === tagEndRegex && strings[i + 1].startsWith('/>') ? ' ' : '';\n    html +=\n      regex === textEndRegex\n        ? s + nodeMarker\n        : attrNameEndIndex >= 0\n        ? (attrNames.push(attrName!),\n          s.slice(0, attrNameEndIndex) +\n            boundAttributeSuffix +\n            s.slice(attrNameEndIndex)) +\n          marker +\n          end\n        : s +\n          marker +\n          (attrNameEndIndex === -2 ? (attrNames.push(undefined), i) : end);\n  }\n\n  const htmlResult: string | TrustedHTML =\n    html + (strings[l] || '<?>') + (type === SVG_RESULT ? '</svg>' : '');\n\n  // A security check to prevent spoofing of Lit template results.\n  // In the future, we may be able to replace this with Array.isTemplateObject,\n  // though we might need to make that check inside of the html and svg\n  // functions, because precompiled templates don't come in as\n  // TemplateStringArray objects.\n  if (!Array.isArray(strings) || !strings.hasOwnProperty('raw')) {\n    let message = 'invalid template strings array';\n    if (DEV_MODE) {\n      message = `\n          Internal Error: expected template strings to be an array\n          with a 'raw' field. Faking a template strings array by\n          calling html or svg like an ordinary function is effectively\n          the same as calling unsafeHtml and can lead to major security\n          issues, e.g. opening your code up to XSS attacks.\n\n          If you're using the html or svg tagged template functions normally\n          and and still seeing this error, please file a bug at\n          https://github.com/lit/lit/issues/new?template=bug_report.md\n          and include information about your build tooling, if any.\n        `\n        .trim()\n        .replace(/\\n */g, '\\n');\n    }\n    throw new Error(message);\n  }\n  // Returned as an array for terseness\n  return [\n    policy !== undefined\n      ? policy.createHTML(htmlResult)\n      : (htmlResult as unknown as TrustedHTML),\n    attrNames,\n  ];\n};\n\n/** @internal */\nexport type {Template};\nclass Template {\n  /** @internal */\n  el!: HTMLTemplateElement;\n  /** @internal */\n  parts: Array<TemplatePart> = [];\n\n  constructor(\n    // This property needs to remain unminified.\n    {strings, ['_$litType$']: type}: TemplateResult,\n    options?: RenderOptions\n  ) {\n    let node: Node | null;\n    let nodeIndex = 0;\n    let attrNameIndex = 0;\n    const partCount = strings.length - 1;\n    const parts = this.parts;\n\n    // Create template element\n    const [html, attrNames] = getTemplateHtml(strings, type);\n    this.el = Template.createElement(html, options);\n    walker.currentNode = this.el.content;\n\n    // Reparent SVG nodes into template root\n    if (type === SVG_RESULT) {\n      const content = this.el.content;\n      const svgElement = content.firstChild!;\n      svgElement.remove();\n      content.append(...svgElement.childNodes);\n    }\n\n    // Walk the template to find binding markers and create TemplateParts\n    while ((node = walker.nextNode()) !== null && parts.length < partCount) {\n      if (node.nodeType === 1) {\n        if (DEV_MODE) {\n          const tag = (node as Element).localName;\n          // Warn if `textarea` includes an expression and throw if `template`\n          // does since these are not supported. We do this by checking\n          // innerHTML for anything that looks like a marker. This catches\n          // cases like bindings in textarea there markers turn into text nodes.\n          if (\n            /^(?:textarea|template)$/i!.test(tag) &&\n            (node as Element).innerHTML.includes(marker)\n          ) {\n            const m =\n              `Expressions are not supported inside \\`${tag}\\` ` +\n              `elements. See https://lit.dev/msg/expression-in-${tag} for more ` +\n              `information.`;\n            if (tag === 'template') {\n              throw new Error(m);\n            } else issueWarning('', m);\n          }\n        }\n        // TODO (justinfagnani): for attempted dynamic tag names, we don't\n        // increment the bindingIndex, and it'll be off by 1 in the element\n        // and off by two after it.\n        if ((node as Element).hasAttributes()) {\n          // We defer removing bound attributes because on IE we might not be\n          // iterating attributes in their template order, and would sometimes\n          // remove an attribute that we still need to create a part for.\n          const attrsToRemove = [];\n          for (const name of (node as Element).getAttributeNames()) {\n            // `name` is the name of the attribute we're iterating over, but not\n            // _neccessarily_ the name of the attribute we will create a part\n            // for. They can be different in browsers that don't iterate on\n            // attributes in source order. In that case the attrNames array\n            // contains the attribute name we'll process next. We only need the\n            // attribute name here to know if we should process a bound attribute\n            // on this element.\n            if (\n              name.endsWith(boundAttributeSuffix) ||\n              name.startsWith(marker)\n            ) {\n              const realName = attrNames[attrNameIndex++];\n              attrsToRemove.push(name);\n              if (realName !== undefined) {\n                // Lowercase for case-sensitive SVG attributes like viewBox\n                const value = (node as Element).getAttribute(\n                  realName.toLowerCase() + boundAttributeSuffix\n                )!;\n                const statics = value.split(marker);\n                const m = /([.?@])?(.*)/.exec(realName)!;\n                parts.push({\n                  type: ATTRIBUTE_PART,\n                  index: nodeIndex,\n                  name: m[2],\n                  strings: statics,\n                  ctor:\n                    m[1] === '.'\n                      ? PropertyPart\n                      : m[1] === '?'\n                      ? BooleanAttributePart\n                      : m[1] === '@'\n                      ? EventPart\n                      : AttributePart,\n                });\n              } else {\n                parts.push({\n                  type: ELEMENT_PART,\n                  index: nodeIndex,\n                });\n              }\n            }\n          }\n          for (const name of attrsToRemove) {\n            (node as Element).removeAttribute(name);\n          }\n        }\n        // TODO (justinfagnani): benchmark the regex against testing for each\n        // of the 3 raw text element names.\n        if (rawTextElement.test((node as Element).tagName)) {\n          // For raw text elements we need to split the text content on\n          // markers, create a Text node for each segment, and create\n          // a TemplatePart for each marker.\n          const strings = (node as Element).textContent!.split(marker);\n          const lastIndex = strings.length - 1;\n          if (lastIndex > 0) {\n            (node as Element).textContent = trustedTypes\n              ? (trustedTypes.emptyScript as unknown as '')\n              : '';\n            // Generate a new text node for each literal section\n            // These nodes are also used as the markers for node parts\n            // We can't use empty text nodes as markers because they're\n            // normalized when cloning in IE (could simplify when\n            // IE is no longer supported)\n            for (let i = 0; i < lastIndex; i++) {\n              (node as Element).append(strings[i], createMarker());\n              // Walk past the marker node we just added\n              walker.nextNode();\n              parts.push({type: CHILD_PART, index: ++nodeIndex});\n            }\n            // Note because this marker is added after the walker's current\n            // node, it will be walked to in the outer loop (and ignored), so\n            // we don't need to adjust nodeIndex here\n            (node as Element).append(strings[lastIndex], createMarker());\n          }\n        }\n      } else if (node.nodeType === 8) {\n        const data = (node as Comment).data;\n        if (data === markerMatch) {\n          parts.push({type: CHILD_PART, index: nodeIndex});\n        } else {\n          let i = -1;\n          while ((i = (node as Comment).data.indexOf(marker, i + 1)) !== -1) {\n            // Comment node has a binding marker inside, make an inactive part\n            // The binding won't work, but subsequent bindings will\n            parts.push({type: COMMENT_PART, index: nodeIndex});\n            // Move to the end of the match\n            i += marker.length - 1;\n          }\n        }\n      }\n      nodeIndex++;\n    }\n    debugLogEvent?.({\n      kind: 'template prep',\n      template: this,\n      clonableTemplate: this.el,\n      parts: this.parts,\n      strings,\n    });\n  }\n\n  // Overridden via `litHtmlPolyfillSupport` to provide platform support.\n  /** @nocollapse */\n  static createElement(html: TrustedHTML, _options?: RenderOptions) {\n    const el = d.createElement('template');\n    el.innerHTML = html as unknown as string;\n    return el;\n  }\n}\n\nexport interface Disconnectable {\n  _$parent?: Disconnectable;\n  _$disconnectableChildren?: Set<Disconnectable>;\n  // Rather than hold connection state on instances, Disconnectables recursively\n  // fetch the connection state from the RootPart they are connected in via\n  // getters up the Disconnectable tree via _$parent references. This pushes the\n  // cost of tracking the isConnected state to `AsyncDirectives`, and avoids\n  // needing to pass all Disconnectables (parts, template instances, and\n  // directives) their connection state each time it changes, which would be\n  // costly for trees that have no AsyncDirectives.\n  _$isConnected: boolean;\n}\n\nfunction resolveDirective(\n  part: ChildPart | AttributePart | ElementPart,\n  value: unknown,\n  parent: DirectiveParent = part,\n  attributeIndex?: number\n): unknown {\n  // Bail early if the value is explicitly noChange. Note, this means any\n  // nested directive is still attached and is not run.\n  if (value === noChange) {\n    return value;\n  }\n  let currentDirective =\n    attributeIndex !== undefined\n      ? (parent as AttributePart).__directives?.[attributeIndex]\n      : (parent as ChildPart | ElementPart | Directive).__directive;\n  const nextDirectiveConstructor = isPrimitive(value)\n    ? undefined\n    : // This property needs to remain unminified.\n      (value as DirectiveResult)['_$litDirective$'];\n  if (currentDirective?.constructor !== nextDirectiveConstructor) {\n    // This property needs to remain unminified.\n    currentDirective?.['_$notifyDirectiveConnectionChanged']?.(false);\n    if (nextDirectiveConstructor === undefined) {\n      currentDirective = undefined;\n    } else {\n      currentDirective = new nextDirectiveConstructor(part as PartInfo);\n      currentDirective._$initialize(part, parent, attributeIndex);\n    }\n    if (attributeIndex !== undefined) {\n      ((parent as AttributePart).__directives ??= [])[attributeIndex] =\n        currentDirective;\n    } else {\n      (parent as ChildPart | Directive).__directive = currentDirective;\n    }\n  }\n  if (currentDirective !== undefined) {\n    value = resolveDirective(\n      part,\n      currentDirective._$resolve(part, (value as DirectiveResult).values),\n      currentDirective,\n      attributeIndex\n    );\n  }\n  return value;\n}\n\n/**\n * An updateable instance of a Template. Holds references to the Parts used to\n * update the template instance.\n */\nclass TemplateInstance implements Disconnectable {\n  /** @internal */\n  _$template: Template;\n  /** @internal */\n  _parts: Array<Part | undefined> = [];\n\n  /** @internal */\n  _$parent: ChildPart;\n  /** @internal */\n  _$disconnectableChildren?: Set<Disconnectable> = undefined;\n\n  constructor(template: Template, parent: ChildPart) {\n    this._$template = template;\n    this._$parent = parent;\n  }\n\n  // Called by ChildPart parentNode getter\n  get parentNode() {\n    return this._$parent.parentNode;\n  }\n\n  // See comment in Disconnectable interface for why this is a getter\n  get _$isConnected() {\n    return this._$parent._$isConnected;\n  }\n\n  // This method is separate from the constructor because we need to return a\n  // DocumentFragment and we don't want to hold onto it with an instance field.\n  _clone(options: RenderOptions | undefined) {\n    const {\n      el: {content},\n      parts: parts,\n    } = this._$template;\n    const fragment = (options?.creationScope ?? d).importNode(content, true);\n    walker.currentNode = fragment;\n\n    let node = walker.nextNode()!;\n    let nodeIndex = 0;\n    let partIndex = 0;\n    let templatePart = parts[0];\n\n    while (templatePart !== undefined) {\n      if (nodeIndex === templatePart.index) {\n        let part: Part | undefined;\n        if (templatePart.type === CHILD_PART) {\n          part = new ChildPart(\n            node as HTMLElement,\n            node.nextSibling,\n            this,\n            options\n          );\n        } else if (templatePart.type === ATTRIBUTE_PART) {\n          part = new templatePart.ctor(\n            node as HTMLElement,\n            templatePart.name,\n            templatePart.strings,\n            this,\n            options\n          );\n        } else if (templatePart.type === ELEMENT_PART) {\n          part = new ElementPart(node as HTMLElement, this, options);\n        }\n        this._parts.push(part);\n        templatePart = parts[++partIndex];\n      }\n      if (nodeIndex !== templatePart?.index) {\n        node = walker.nextNode()!;\n        nodeIndex++;\n      }\n    }\n    return fragment;\n  }\n\n  _update(values: Array<unknown>) {\n    let i = 0;\n    for (const part of this._parts) {\n      if (part !== undefined) {\n        debugLogEvent?.({\n          kind: 'set part',\n          part,\n          value: values[i],\n          valueIndex: i,\n          values,\n          templateInstance: this,\n        });\n        if ((part as AttributePart).strings !== undefined) {\n          (part as AttributePart)._$setValue(values, part as AttributePart, i);\n          // The number of values the part consumes is part.strings.length - 1\n          // since values are in between template spans. We increment i by 1\n          // later in the loop, so increment it by part.strings.length - 2 here\n          i += (part as AttributePart).strings!.length - 2;\n        } else {\n          part._$setValue(values[i]);\n        }\n      }\n      i++;\n    }\n  }\n}\n\n/*\n * Parts\n */\ntype AttributeTemplatePart = {\n  readonly type: typeof ATTRIBUTE_PART;\n  readonly index: number;\n  readonly name: string;\n  /** @internal */\n  readonly ctor: typeof AttributePart;\n  /** @internal */\n  readonly strings: ReadonlyArray<string>;\n};\ntype NodeTemplatePart = {\n  readonly type: typeof CHILD_PART;\n  readonly index: number;\n};\ntype ElementTemplatePart = {\n  readonly type: typeof ELEMENT_PART;\n  readonly index: number;\n};\ntype CommentTemplatePart = {\n  readonly type: typeof COMMENT_PART;\n  readonly index: number;\n};\n\n/**\n * A TemplatePart represents a dynamic part in a template, before the template\n * is instantiated. When a template is instantiated Parts are created from\n * TemplateParts.\n */\ntype TemplatePart =\n  | NodeTemplatePart\n  | AttributeTemplatePart\n  | ElementTemplatePart\n  | CommentTemplatePart;\n\nexport type Part =\n  | ChildPart\n  | AttributePart\n  | PropertyPart\n  | BooleanAttributePart\n  | ElementPart\n  | EventPart;\n\nexport type {ChildPart};\nclass ChildPart implements Disconnectable {\n  readonly type = CHILD_PART;\n  readonly options: RenderOptions | undefined;\n  _$committedValue: unknown = nothing;\n  /** @internal */\n  __directive?: Directive;\n  /** @internal */\n  _$startNode: ChildNode;\n  /** @internal */\n  _$endNode: ChildNode | null;\n  private _textSanitizer: ValueSanitizer | undefined;\n  /** @internal */\n  _$parent: Disconnectable | undefined;\n  /**\n   * Connection state for RootParts only (i.e. ChildPart without _$parent\n   * returned from top-level `render`). This field is unsed otherwise. The\n   * intention would clearer if we made `RootPart` a subclass of `ChildPart`\n   * with this field (and a different _$isConnected getter), but the subclass\n   * caused a perf regression, possibly due to making call sites polymorphic.\n   * @internal\n   */\n  __isConnected: boolean;\n\n  // See comment in Disconnectable interface for why this is a getter\n  get _$isConnected() {\n    // ChildParts that are not at the root should always be created with a\n    // parent; only RootChildNode's won't, so they return the local isConnected\n    // state\n    return this._$parent?._$isConnected ?? this.__isConnected;\n  }\n\n  // The following fields will be patched onto ChildParts when required by\n  // AsyncDirective\n  /** @internal */\n  _$disconnectableChildren?: Set<Disconnectable> = undefined;\n  /** @internal */\n  _$notifyConnectionChanged?(\n    isConnected: boolean,\n    removeFromParent?: boolean,\n    from?: number\n  ): void;\n  /** @internal */\n  _$reparentDisconnectables?(parent: Disconnectable): void;\n\n  constructor(\n    startNode: ChildNode,\n    endNode: ChildNode | null,\n    parent: TemplateInstance | ChildPart | undefined,\n    options: RenderOptions | undefined\n  ) {\n    this._$startNode = startNode;\n    this._$endNode = endNode;\n    this._$parent = parent;\n    this.options = options;\n    // Note __isConnected is only ever accessed on RootParts (i.e. when there is\n    // no _$parent); the value on a non-root-part is \"don't care\", but checking\n    // for parent would be more code\n    this.__isConnected = options?.isConnected ?? true;\n    if (ENABLE_EXTRA_SECURITY_HOOKS) {\n      // Explicitly initialize for consistent class shape.\n      this._textSanitizer = undefined;\n    }\n  }\n\n  /**\n   * The parent node into which the part renders its content.\n   *\n   * A ChildPart's content consists of a range of adjacent child nodes of\n   * `.parentNode`, possibly bordered by 'marker nodes' (`.startNode` and\n   * `.endNode`).\n   *\n   * - If both `.startNode` and `.endNode` are non-null, then the part's content\n   * consists of all siblings between `.startNode` and `.endNode`, exclusively.\n   *\n   * - If `.startNode` is non-null but `.endNode` is null, then the part's\n   * content consists of all siblings following `.startNode`, up to and\n   * including the last child of `.parentNode`. If `.endNode` is non-null, then\n   * `.startNode` will always be non-null.\n   *\n   * - If both `.endNode` and `.startNode` are null, then the part's content\n   * consists of all child nodes of `.parentNode`.\n   */\n  get parentNode(): Node {\n    let parentNode: Node = wrap(this._$startNode).parentNode!;\n    const parent = this._$parent;\n    if (\n      parent !== undefined &&\n      parentNode.nodeType === 11 /* Node.DOCUMENT_FRAGMENT */\n    ) {\n      // If the parentNode is a DocumentFragment, it may be because the DOM is\n      // still in the cloned fragment during initial render; if so, get the real\n      // parentNode the part will be committed into by asking the parent.\n      parentNode = (parent as ChildPart | TemplateInstance).parentNode;\n    }\n    return parentNode;\n  }\n\n  /**\n   * The part's leading marker node, if any. See `.parentNode` for more\n   * information.\n   */\n  get startNode(): Node | null {\n    return this._$startNode;\n  }\n\n  /**\n   * The part's trailing marker node, if any. See `.parentNode` for more\n   * information.\n   */\n  get endNode(): Node | null {\n    return this._$endNode;\n  }\n\n  _$setValue(value: unknown, directiveParent: DirectiveParent = this): void {\n    if (DEV_MODE && this.parentNode === null) {\n      throw new Error(\n        `This \\`ChildPart\\` has no \\`parentNode\\` and therefore cannot accept a value. This likely means the element containing the part was manipulated in an unsupported way outside of Lit's control such that the part's marker nodes were ejected from DOM. For example, setting the element's \\`innerHTML\\` or \\`textContent\\` can do this.`\n      );\n    }\n    value = resolveDirective(this, value, directiveParent);\n    if (isPrimitive(value)) {\n      // Non-rendering child values. It's important that these do not render\n      // empty text nodes to avoid issues with preventing default <slot>\n      // fallback content.\n      if (value === nothing || value == null || value === '') {\n        if (this._$committedValue !== nothing) {\n          debugLogEvent?.({\n            kind: 'commit nothing to child',\n            start: this._$startNode,\n            end: this._$endNode,\n            parent: this._$parent,\n            options: this.options,\n          });\n          this._$clear();\n        }\n        this._$committedValue = nothing;\n      } else if (value !== this._$committedValue && value !== noChange) {\n        this._commitText(value);\n      }\n      // This property needs to remain unminified.\n    } else if ((value as TemplateResult)['_$litType$'] !== undefined) {\n      this._commitTemplateResult(value as TemplateResult);\n    } else if ((value as Node).nodeType !== undefined) {\n      if (DEV_MODE && this.options?.host === value) {\n        this._commitText(\n          `[probable mistake: rendered a template's host in itself ` +\n            `(commonly caused by writing \\${this} in a template]`\n        );\n        console.warn(\n          `Attempted to render the template host`,\n          value,\n          `inside itself. This is almost always a mistake, and in dev mode `,\n          `we render some warning text. In production however, we'll `,\n          `render it, which will usually result in an error, and sometimes `,\n          `in the element disappearing from the DOM.`\n        );\n        return;\n      }\n      this._commitNode(value as Node);\n    } else if (isIterable(value)) {\n      this._commitIterable(value);\n    } else {\n      // Fallback, will render the string representation\n      this._commitText(value);\n    }\n  }\n\n  private _insert<T extends Node>(node: T, ref = this._$endNode) {\n    return wrap(wrap(this._$startNode).parentNode!).insertBefore(node, ref);\n  }\n\n  private _commitNode(value: Node): void {\n    if (this._$committedValue !== value) {\n      this._$clear();\n      if (\n        ENABLE_EXTRA_SECURITY_HOOKS &&\n        sanitizerFactoryInternal !== noopSanitizer\n      ) {\n        const parentNodeName = this._$startNode.parentNode?.nodeName;\n        if (parentNodeName === 'STYLE' || parentNodeName === 'SCRIPT') {\n          let message = 'Forbidden';\n          if (DEV_MODE) {\n            if (parentNodeName === 'STYLE') {\n              message =\n                `Lit does not support binding inside style nodes. ` +\n                `This is a security risk, as style injection attacks can ` +\n                `exfiltrate data and spoof UIs. ` +\n                `Consider instead using css\\`...\\` literals ` +\n                `to compose styles, and make do dynamic styling with ` +\n                `css custom properties, ::parts, <slot>s, ` +\n                `and by mutating the DOM rather than stylesheets.`;\n            } else {\n              message =\n                `Lit does not support binding inside script nodes. ` +\n                `This is a security risk, as it could allow arbitrary ` +\n                `code execution.`;\n            }\n          }\n          throw new Error(message);\n        }\n      }\n      debugLogEvent?.({\n        kind: 'commit node',\n        start: this._$startNode,\n        parent: this._$parent,\n        value: value,\n        options: this.options,\n      });\n      this._$committedValue = this._insert(value);\n    }\n  }\n\n  private _commitText(value: unknown): void {\n    // If the committed value is a primitive it means we called _commitText on\n    // the previous render, and we know that this._$startNode.nextSibling is a\n    // Text node. We can now just replace the text content (.data) of the node.\n    if (\n      this._$committedValue !== nothing &&\n      isPrimitive(this._$committedValue)\n    ) {\n      const node = wrap(this._$startNode).nextSibling as Text;\n      if (ENABLE_EXTRA_SECURITY_HOOKS) {\n        if (this._textSanitizer === undefined) {\n          this._textSanitizer = createSanitizer(node, 'data', 'property');\n        }\n        value = this._textSanitizer(value);\n      }\n      debugLogEvent?.({\n        kind: 'commit text',\n        node,\n        value,\n        options: this.options,\n      });\n      (node as Text).data = value as string;\n    } else {\n      if (ENABLE_EXTRA_SECURITY_HOOKS) {\n        const textNode = document.createTextNode('');\n        this._commitNode(textNode);\n        // When setting text content, for security purposes it matters a lot\n        // what the parent is. For example, <style> and <script> need to be\n        // handled with care, while <span> does not. So first we need to put a\n        // text node into the document, then we can sanitize its content.\n        if (this._textSanitizer === undefined) {\n          this._textSanitizer = createSanitizer(textNode, 'data', 'property');\n        }\n        value = this._textSanitizer(value);\n        debugLogEvent?.({\n          kind: 'commit text',\n          node: textNode,\n          value,\n          options: this.options,\n        });\n        textNode.data = value as string;\n      } else {\n        this._commitNode(d.createTextNode(value as string));\n        debugLogEvent?.({\n          kind: 'commit text',\n          node: wrap(this._$startNode).nextSibling as Text,\n          value,\n          options: this.options,\n        });\n      }\n    }\n    this._$committedValue = value;\n  }\n\n  private _commitTemplateResult(\n    result: TemplateResult | CompiledTemplateResult\n  ): void {\n    // This property needs to remain unminified.\n    const {values, ['_$litType$']: type} = result;\n    // If $litType$ is a number, result is a plain TemplateResult and we get\n    // the template from the template cache. If not, result is a\n    // CompiledTemplateResult and _$litType$ is a CompiledTemplate and we need\n    // to create the <template> element the first time we see it.\n    const template: Template | CompiledTemplate =\n      typeof type === 'number'\n        ? this._$getTemplate(result as TemplateResult)\n        : (type.el === undefined &&\n            (type.el = Template.createElement(type.h, this.options)),\n          type);\n\n    if ((this._$committedValue as TemplateInstance)?._$template === template) {\n      debugLogEvent?.({\n        kind: 'template updating',\n        template,\n        instance: this._$committedValue as TemplateInstance,\n        parts: (this._$committedValue as TemplateInstance)._parts,\n        options: this.options,\n        values,\n      });\n      (this._$committedValue as TemplateInstance)._update(values);\n    } else {\n      const instance = new TemplateInstance(template as Template, this);\n      const fragment = instance._clone(this.options);\n      debugLogEvent?.({\n        kind: 'template instantiated',\n        template,\n        instance,\n        parts: instance._parts,\n        options: this.options,\n        fragment,\n        values,\n      });\n      instance._update(values);\n      debugLogEvent?.({\n        kind: 'template instantiated and updated',\n        template,\n        instance,\n        parts: instance._parts,\n        options: this.options,\n        fragment,\n        values,\n      });\n      this._commitNode(fragment);\n      this._$committedValue = instance;\n    }\n  }\n\n  // Overridden via `litHtmlPolyfillSupport` to provide platform support.\n  /** @internal */\n  _$getTemplate(result: TemplateResult) {\n    let template = templateCache.get(result.strings);\n    if (template === undefined) {\n      templateCache.set(result.strings, (template = new Template(result)));\n    }\n    return template;\n  }\n\n  private _commitIterable(value: Iterable<unknown>): void {\n    // For an Iterable, we create a new InstancePart per item, then set its\n    // value to the item. This is a little bit of overhead for every item in\n    // an Iterable, but it lets us recurse easily and efficiently update Arrays\n    // of TemplateResults that will be commonly returned from expressions like:\n    // array.map((i) => html`${i}`), by reusing existing TemplateInstances.\n\n    // If value is an array, then the previous render was of an\n    // iterable and value will contain the ChildParts from the previous\n    // render. If value is not an array, clear this part and make a new\n    // array for ChildParts.\n    if (!isArray(this._$committedValue)) {\n      this._$committedValue = [];\n      this._$clear();\n    }\n\n    // Lets us keep track of how many items we stamped so we can clear leftover\n    // items from a previous render\n    const itemParts = this._$committedValue as ChildPart[];\n    let partIndex = 0;\n    let itemPart: ChildPart | undefined;\n\n    for (const item of value) {\n      if (partIndex === itemParts.length) {\n        // If no existing part, create a new one\n        // TODO (justinfagnani): test perf impact of always creating two parts\n        // instead of sharing parts between nodes\n        // https://github.com/lit/lit/issues/1266\n        itemParts.push(\n          (itemPart = new ChildPart(\n            this._insert(createMarker()),\n            this._insert(createMarker()),\n            this,\n            this.options\n          ))\n        );\n      } else {\n        // Reuse an existing part\n        itemPart = itemParts[partIndex];\n      }\n      itemPart._$setValue(item);\n      partIndex++;\n    }\n\n    if (partIndex < itemParts.length) {\n      // itemParts always have end nodes\n      this._$clear(\n        itemPart && wrap(itemPart._$endNode!).nextSibling,\n        partIndex\n      );\n      // Truncate the parts array so _value reflects the current state\n      itemParts.length = partIndex;\n    }\n  }\n\n  /**\n   * Removes the nodes contained within this Part from the DOM.\n   *\n   * @param start Start node to clear from, for clearing a subset of the part's\n   *     DOM (used when truncating iterables)\n   * @param from  When `start` is specified, the index within the iterable from\n   *     which ChildParts are being removed, used for disconnecting directives in\n   *     those Parts.\n   *\n   * @internal\n   */\n  _$clear(\n    start: ChildNode | null = wrap(this._$startNode).nextSibling,\n    from?: number\n  ) {\n    this._$notifyConnectionChanged?.(false, true, from);\n    while (start && start !== this._$endNode) {\n      const n = wrap(start!).nextSibling;\n      (wrap(start!) as Element).remove();\n      start = n;\n    }\n  }\n  /**\n   * Implementation of RootPart's `isConnected`. Note that this metod\n   * should only be called on `RootPart`s (the `ChildPart` returned from a\n   * top-level `render()` call). It has no effect on non-root ChildParts.\n   * @param isConnected Whether to set\n   * @internal\n   */\n  setConnected(isConnected: boolean) {\n    if (this._$parent === undefined) {\n      this.__isConnected = isConnected;\n      this._$notifyConnectionChanged?.(isConnected);\n    } else if (DEV_MODE) {\n      throw new Error(\n        'part.setConnected() may only be called on a ' +\n          'RootPart returned from render().'\n      );\n    }\n  }\n}\n\n/**\n * A top-level `ChildPart` returned from `render` that manages the connected\n * state of `AsyncDirective`s created throughout the tree below it.\n */\nexport interface RootPart extends ChildPart {\n  /**\n   * Sets the connection state for `AsyncDirective`s contained within this root\n   * ChildPart.\n   *\n   * lit-html does not automatically monitor the connectedness of DOM rendered;\n   * as such, it is the responsibility of the caller to `render` to ensure that\n   * `part.setConnected(false)` is called before the part object is potentially\n   * discarded, to ensure that `AsyncDirective`s have a chance to dispose of\n   * any resources being held. If a `RootPart` that was prevously\n   * disconnected is subsequently re-connected (and its `AsyncDirective`s should\n   * re-connect), `setConnected(true)` should be called.\n   *\n   * @param isConnected Whether directives within this tree should be connected\n   * or not\n   */\n  setConnected(isConnected: boolean): void;\n}\n\nexport type {AttributePart};\nclass AttributePart implements Disconnectable {\n  readonly type = ATTRIBUTE_PART as\n    | typeof ATTRIBUTE_PART\n    | typeof PROPERTY_PART\n    | typeof BOOLEAN_ATTRIBUTE_PART\n    | typeof EVENT_PART;\n  readonly element: HTMLElement;\n  readonly name: string;\n  readonly options: RenderOptions | undefined;\n\n  /**\n   * If this attribute part represents an interpolation, this contains the\n   * static strings of the interpolation. For single-value, complete bindings,\n   * this is undefined.\n   */\n  readonly strings?: ReadonlyArray<string>;\n  /** @internal */\n  _$committedValue: unknown | Array<unknown> = nothing;\n  /** @internal */\n  __directives?: Array<Directive | undefined>;\n  /** @internal */\n  _$parent: Disconnectable;\n  /** @internal */\n  _$disconnectableChildren?: Set<Disconnectable> = undefined;\n\n  protected _sanitizer: ValueSanitizer | undefined;\n\n  get tagName() {\n    return this.element.tagName;\n  }\n\n  // See comment in Disconnectable interface for why this is a getter\n  get _$isConnected() {\n    return this._$parent._$isConnected;\n  }\n\n  constructor(\n    element: HTMLElement,\n    name: string,\n    strings: ReadonlyArray<string>,\n    parent: Disconnectable,\n    options: RenderOptions | undefined\n  ) {\n    this.element = element;\n    this.name = name;\n    this._$parent = parent;\n    this.options = options;\n    if (strings.length > 2 || strings[0] !== '' || strings[1] !== '') {\n      this._$committedValue = new Array(strings.length - 1).fill(new String());\n      this.strings = strings;\n    } else {\n      this._$committedValue = nothing;\n    }\n    if (ENABLE_EXTRA_SECURITY_HOOKS) {\n      this._sanitizer = undefined;\n    }\n  }\n\n  /**\n   * Sets the value of this part by resolving the value from possibly multiple\n   * values and static strings and committing it to the DOM.\n   * If this part is single-valued, `this._strings` will be undefined, and the\n   * method will be called with a single value argument. If this part is\n   * multi-value, `this._strings` will be defined, and the method is called\n   * with the value array of the part's owning TemplateInstance, and an offset\n   * into the value array from which the values should be read.\n   * This method is overloaded this way to eliminate short-lived array slices\n   * of the template instance values, and allow a fast-path for single-valued\n   * parts.\n   *\n   * @param value The part value, or an array of values for multi-valued parts\n   * @param valueIndex the index to start reading values from. `undefined` for\n   *   single-valued parts\n   * @param noCommit causes the part to not commit its value to the DOM. Used\n   *   in hydration to prime attribute parts with their first-rendered value,\n   *   but not set the attribute, and in SSR to no-op the DOM operation and\n   *   capture the value for serialization.\n   *\n   * @internal\n   */\n  _$setValue(\n    value: unknown | Array<unknown>,\n    directiveParent: DirectiveParent = this,\n    valueIndex?: number,\n    noCommit?: boolean\n  ) {\n    const strings = this.strings;\n\n    // Whether any of the values has changed, for dirty-checking\n    let change = false;\n\n    if (strings === undefined) {\n      // Single-value binding case\n      value = resolveDirective(this, value, directiveParent, 0);\n      change =\n        !isPrimitive(value) ||\n        (value !== this._$committedValue && value !== noChange);\n      if (change) {\n        this._$committedValue = value;\n      }\n    } else {\n      // Interpolation case\n      const values = value as Array<unknown>;\n      value = strings[0];\n\n      let i, v;\n      for (i = 0; i < strings.length - 1; i++) {\n        v = resolveDirective(this, values[valueIndex! + i], directiveParent, i);\n\n        if (v === noChange) {\n          // If the user-provided value is `noChange`, use the previous value\n          v = (this._$committedValue as Array<unknown>)[i];\n        }\n        change ||=\n          !isPrimitive(v) || v !== (this._$committedValue as Array<unknown>)[i];\n        if (v === nothing) {\n          value = nothing;\n        } else if (value !== nothing) {\n          value += (v ?? '') + strings[i + 1];\n        }\n        // We always record each value, even if one is `nothing`, for future\n        // change detection.\n        (this._$committedValue as Array<unknown>)[i] = v;\n      }\n    }\n    if (change && !noCommit) {\n      this._commitValue(value);\n    }\n  }\n\n  /** @internal */\n  _commitValue(value: unknown) {\n    if (value === nothing) {\n      (wrap(this.element) as Element).removeAttribute(this.name);\n    } else {\n      if (ENABLE_EXTRA_SECURITY_HOOKS) {\n        if (this._sanitizer === undefined) {\n          this._sanitizer = sanitizerFactoryInternal(\n            this.element,\n            this.name,\n            'attribute'\n          );\n        }\n        value = this._sanitizer(value ?? '');\n      }\n      debugLogEvent?.({\n        kind: 'commit attribute',\n        element: this.element,\n        name: this.name,\n        value,\n        options: this.options,\n      });\n      (wrap(this.element) as Element).setAttribute(\n        this.name,\n        (value ?? '') as string\n      );\n    }\n  }\n}\n\nexport type {PropertyPart};\nclass PropertyPart extends AttributePart {\n  override readonly type = PROPERTY_PART;\n\n  /** @internal */\n  override _commitValue(value: unknown) {\n    if (ENABLE_EXTRA_SECURITY_HOOKS) {\n      if (this._sanitizer === undefined) {\n        this._sanitizer = sanitizerFactoryInternal(\n          this.element,\n          this.name,\n          'property'\n        );\n      }\n      value = this._sanitizer(value);\n    }\n    debugLogEvent?.({\n      kind: 'commit property',\n      element: this.element,\n      name: this.name,\n      value,\n      options: this.options,\n    });\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    (this.element as any)[this.name] = value === nothing ? undefined : value;\n  }\n}\n\n// Temporary workaround for https://crbug.com/993268\n// Currently, any attribute starting with \"on\" is considered to be a\n// TrustedScript source. Such boolean attributes must be set to the equivalent\n// trusted emptyScript value.\nconst emptyStringForBooleanAttribute = trustedTypes\n  ? (trustedTypes.emptyScript as unknown as '')\n  : '';\n\nexport type {BooleanAttributePart};\nclass BooleanAttributePart extends AttributePart {\n  override readonly type = BOOLEAN_ATTRIBUTE_PART;\n\n  /** @internal */\n  override _commitValue(value: unknown) {\n    debugLogEvent?.({\n      kind: 'commit boolean attribute',\n      element: this.element,\n      name: this.name,\n      value: !!(value && value !== nothing),\n      options: this.options,\n    });\n    if (value && value !== nothing) {\n      (wrap(this.element) as Element).setAttribute(\n        this.name,\n        emptyStringForBooleanAttribute\n      );\n    } else {\n      (wrap(this.element) as Element).removeAttribute(this.name);\n    }\n  }\n}\n\ntype EventListenerWithOptions = EventListenerOrEventListenerObject &\n  Partial<AddEventListenerOptions>;\n\n/**\n * An AttributePart that manages an event listener via add/removeEventListener.\n *\n * This part works by adding itself as the event listener on an element, then\n * delegating to the value passed to it. This reduces the number of calls to\n * add/removeEventListener if the listener changes frequently, such as when an\n * inline function is used as a listener.\n *\n * Because event options are passed when adding listeners, we must take case\n * to add and remove the part as a listener when the event options change.\n */\nexport type {EventPart};\nclass EventPart extends AttributePart {\n  override readonly type = EVENT_PART;\n\n  constructor(\n    element: HTMLElement,\n    name: string,\n    strings: ReadonlyArray<string>,\n    parent: Disconnectable,\n    options: RenderOptions | undefined\n  ) {\n    super(element, name, strings, parent, options);\n\n    if (DEV_MODE && this.strings !== undefined) {\n      throw new Error(\n        `A \\`<${element.localName}>\\` has a \\`@${name}=...\\` listener with ` +\n          'invalid content. Event listeners in templates must have exactly ' +\n          'one expression and no surrounding text.'\n      );\n    }\n  }\n\n  // EventPart does not use the base _$setValue/_resolveValue implementation\n  // since the dirty checking is more complex\n  /** @internal */\n  override _$setValue(\n    newListener: unknown,\n    directiveParent: DirectiveParent = this\n  ) {\n    newListener =\n      resolveDirective(this, newListener, directiveParent, 0) ?? nothing;\n    if (newListener === noChange) {\n      return;\n    }\n    const oldListener = this._$committedValue;\n\n    // If the new value is nothing or any options change we have to remove the\n    // part as a listener.\n    const shouldRemoveListener =\n      (newListener === nothing && oldListener !== nothing) ||\n      (newListener as EventListenerWithOptions).capture !==\n        (oldListener as EventListenerWithOptions).capture ||\n      (newListener as EventListenerWithOptions).once !==\n        (oldListener as EventListenerWithOptions).once ||\n      (newListener as EventListenerWithOptions).passive !==\n        (oldListener as EventListenerWithOptions).passive;\n\n    // If the new value is not nothing and we removed the listener, we have\n    // to add the part as a listener.\n    const shouldAddListener =\n      newListener !== nothing &&\n      (oldListener === nothing || shouldRemoveListener);\n\n    debugLogEvent?.({\n      kind: 'commit event listener',\n      element: this.element,\n      name: this.name,\n      value: newListener,\n      options: this.options,\n      removeListener: shouldRemoveListener,\n      addListener: shouldAddListener,\n      oldListener,\n    });\n    if (shouldRemoveListener) {\n      this.element.removeEventListener(\n        this.name,\n        this,\n        oldListener as EventListenerWithOptions\n      );\n    }\n    if (shouldAddListener) {\n      // Beware: IE11 and Chrome 41 don't like using the listener as the\n      // options object. Figure out how to deal w/ this in IE11 - maybe\n      // patch addEventListener?\n      this.element.addEventListener(\n        this.name,\n        this,\n        newListener as EventListenerWithOptions\n      );\n    }\n    this._$committedValue = newListener;\n  }\n\n  handleEvent(event: Event) {\n    if (typeof this._$committedValue === 'function') {\n      this._$committedValue.call(this.options?.host ?? this.element, event);\n    } else {\n      (this._$committedValue as EventListenerObject).handleEvent(event);\n    }\n  }\n}\n\nexport type {ElementPart};\nclass ElementPart implements Disconnectable {\n  readonly type = ELEMENT_PART;\n\n  /** @internal */\n  __directive?: Directive;\n\n  // This is to ensure that every Part has a _$committedValue\n  _$committedValue: undefined;\n\n  /** @internal */\n  _$parent!: Disconnectable;\n\n  /** @internal */\n  _$disconnectableChildren?: Set<Disconnectable> = undefined;\n\n  options: RenderOptions | undefined;\n\n  constructor(\n    public element: Element,\n    parent: Disconnectable,\n    options: RenderOptions | undefined\n  ) {\n    this._$parent = parent;\n    this.options = options;\n  }\n\n  // See comment in Disconnectable interface for why this is a getter\n  get _$isConnected() {\n    return this._$parent._$isConnected;\n  }\n\n  _$setValue(value: unknown): void {\n    debugLogEvent?.({\n      kind: 'commit to element binding',\n      element: this.element,\n      value,\n      options: this.options,\n    });\n    resolveDirective(this, value);\n  }\n}\n\n/**\n * END USERS SHOULD NOT RELY ON THIS OBJECT.\n *\n * Private exports for use by other Lit packages, not intended for use by\n * external users.\n *\n * We currently do not make a mangled rollup build of the lit-ssr code. In order\n * to keep a number of (otherwise private) top-level exports  mangled in the\n * client side code, we export a _$LH object containing those members (or\n * helper methods for accessing private fields of those members), and then\n * re-export them for use in lit-ssr. This keeps lit-ssr agnostic to whether the\n * client-side code is being used in `dev` mode or `prod` mode.\n *\n * This has a unique name, to disambiguate it from private exports in\n * lit-element, which re-exports all of lit-html.\n *\n * @private\n */\nexport const _$LH = {\n  // Used in lit-ssr\n  _boundAttributeSuffix: boundAttributeSuffix,\n  _marker: marker,\n  _markerMatch: markerMatch,\n  _HTML_RESULT: HTML_RESULT,\n  _getTemplateHtml: getTemplateHtml,\n  // Used in hydrate\n  _TemplateInstance: TemplateInstance,\n  _isIterable: isIterable,\n  _resolveDirective: resolveDirective,\n  // Used in tests and private-ssr-support\n  _ChildPart: ChildPart,\n  _AttributePart: AttributePart,\n  _BooleanAttributePart: BooleanAttributePart,\n  _EventPart: EventPart,\n  _PropertyPart: PropertyPart,\n  _ElementPart: ElementPart,\n};\n\n// Apply polyfills if available\nconst polyfillSupport = DEV_MODE\n  ? global.litHtmlPolyfillSupportDevMode\n  : global.litHtmlPolyfillSupport;\npolyfillSupport?.(Template, ChildPart);\n\n// IMPORTANT: do not change the property name or the assignment expression.\n// This line will be used in regexes to search for lit-html usage.\n(global.litHtmlVersions ??= []).push('2.6.1');\nif (DEV_MODE && global.litHtmlVersions.length > 1) {\n  issueWarning!(\n    'multiple-versions',\n    `Multiple versions of Lit loaded. ` +\n      `Loading multiple versions is not recommended.`\n  );\n}\n\n/**\n * Renders a value, usually a lit-html TemplateResult, to the container.\n *\n * This example renders the text \"Hello, Zoe!\" inside a paragraph tag, appending\n * it to the container `document.body`.\n *\n * ```js\n * import {html, render} from 'lit';\n *\n * const name = \"Zoe\";\n * render(html`<p>Hello, ${name}!</p>`, document.body);\n * ```\n *\n * @param value Any [renderable\n *   value](https://lit.dev/docs/templates/expressions/#child-expressions),\n *   typically a {@linkcode TemplateResult} created by evaluating a template tag\n *   like {@linkcode html} or {@linkcode svg}.\n * @param container A DOM container to render to. The first render will append\n *   the rendered value to the container, and subsequent renders will\n *   efficiently update the rendered value if the same result type was\n *   previously rendered there.\n * @param options See {@linkcode RenderOptions} for options documentation.\n * @see\n * {@link https://lit.dev/docs/libraries/standalone-templates/#rendering-lit-html-templates| Rendering Lit HTML Templates}\n */\nexport const render = (\n  value: unknown,\n  container: HTMLElement | DocumentFragment,\n  options?: RenderOptions\n): RootPart => {\n  if (DEV_MODE && container == null) {\n    // Give a clearer error message than\n    //     Uncaught TypeError: Cannot read properties of null (reading\n    //     '_$litPart$')\n    // which reads like an internal Lit error.\n    throw new TypeError(`The container to render into may not be ${container}`);\n  }\n  const renderId = DEV_MODE ? debugLogRenderId++ : 0;\n  const partOwnerNode = options?.renderBefore ?? container;\n  // This property needs to remain unminified.\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  let part: ChildPart = (partOwnerNode as any)['_$litPart$'];\n  debugLogEvent?.({\n    kind: 'begin render',\n    id: renderId,\n    value,\n    container,\n    options,\n    part,\n  });\n  if (part === undefined) {\n    const endNode = options?.renderBefore ?? null;\n    // This property needs to remain unminified.\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    (partOwnerNode as any)['_$litPart$'] = part = new ChildPart(\n      container.insertBefore(createMarker(), endNode),\n      endNode,\n      undefined,\n      options ?? {}\n    );\n  }\n  part._$setValue(value);\n  debugLogEvent?.({\n    kind: 'end render',\n    id: renderId,\n    value,\n    container,\n    options,\n    part,\n  });\n  return part as RootPart;\n};\n\nif (ENABLE_EXTRA_SECURITY_HOOKS) {\n  render.setSanitizer = setSanitizer;\n  render.createSanitizer = createSanitizer;\n  if (DEV_MODE) {\n    render._testOnlyClearSanitizerFactoryDoNotCallOrElse =\n      _testOnlyClearSanitizerFactoryDoNotCallOrElse;\n  }\n}\n", "/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/**\n * The main LitElement module, which defines the {@linkcode LitElement} base\n * class and related APIs.\n *\n *  LitElement components can define a template and a set of observed\n * properties. Changing an observed property triggers a re-render of the\n * element.\n *\n *  Import {@linkcode LitElement} and {@linkcode html} from this module to\n * create a component:\n *\n *  ```js\n * import {LitElement, html} from 'lit-element';\n *\n * class MyElement extends LitElement {\n *\n *   // Declare observed properties\n *   static get properties() {\n *     return {\n *       adjective: {}\n *     }\n *   }\n *\n *   constructor() {\n *     this.adjective = 'awesome';\n *   }\n *\n *   // Define the element's template\n *   render() {\n *     return html`<p>your ${adjective} template here</p>`;\n *   }\n * }\n *\n * customElements.define('my-element', MyElement);\n * ```\n *\n * `LitElement` extends {@linkcode ReactiveElement} and adds lit-html\n * templating. The `ReactiveElement` class is provided for users that want to\n * build their own custom element base classes that don't use lit-html.\n *\n * @packageDocumentation\n */\nimport {PropertyValues, ReactiveElement} from '@lit/reactive-element';\nimport {render, RenderOptions, noChange, RootPart} from 'lit-html';\nexport * from '@lit/reactive-element';\nexport * from 'lit-html';\n\nimport {LitUnstable} from 'lit-html';\nimport {ReactiveUnstable} from '@lit/reactive-element';\n\n/**\n * Contains types that are part of the unstable debug API.\n *\n * Everything in this API is not stable and may change or be removed in the future,\n * even on patch releases.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace Unstable {\n  /**\n   * When Lit is running in dev mode and `window.emitLitDebugLogEvents` is true,\n   * we will emit 'lit-debug' events to window, with live details about the update and render\n   * lifecycle. These can be useful for writing debug tooling and visualizations.\n   *\n   * Please be aware that running with window.emitLitDebugLogEvents has performance overhead,\n   * making certain operations that are normally very cheap (like a no-op render) much slower,\n   * because we must copy data and dispatch events.\n   */\n  // eslint-disable-next-line @typescript-eslint/no-namespace\n  export namespace DebugLog {\n    export type Entry =\n      | LitUnstable.DebugLog.Entry\n      | ReactiveUnstable.DebugLog.Entry;\n  }\n}\n\n// For backwards compatibility export ReactiveElement as UpdatingElement. Note,\n// IE transpilation requires exporting like this.\nexport const UpdatingElement = ReactiveElement;\n\nconst DEV_MODE = true;\n\nlet issueWarning: (code: string, warning: string) => void;\n\nif (DEV_MODE) {\n  // Ensure warnings are issued only 1x, even if multiple versions of Lit\n  // are loaded.\n  const issuedWarnings: Set<string | undefined> =\n    (globalThis.litIssuedWarnings ??= new Set());\n\n  // Issue a warning, if we haven't already.\n  issueWarning = (code: string, warning: string) => {\n    warning += ` See https://lit.dev/msg/${code} for more information.`;\n    if (!issuedWarnings.has(warning)) {\n      console.warn(warning);\n      issuedWarnings.add(warning);\n    }\n  };\n}\n\n/**\n * Base element class that manages element properties and attributes, and\n * renders a lit-html template.\n *\n * To define a component, subclass `LitElement` and implement a\n * `render` method to provide the component's template. Define properties\n * using the {@linkcode LitElement.properties properties} property or the\n * {@linkcode property} decorator.\n */\nexport class LitElement extends ReactiveElement {\n  /**\n   * Ensure this class is marked as `finalized` as an optimization ensuring\n   * it will not needlessly try to `finalize`.\n   *\n   * Note this property name is a string to prevent breaking Closure JS Compiler\n   * optimizations. See @lit/reactive-element for more information.\n   */\n  protected static override ['finalized'] = true;\n\n  // This property needs to remain unminified.\n  static ['_$litElement$'] = true;\n\n  /**\n   * @category rendering\n   */\n  readonly renderOptions: RenderOptions = {host: this};\n\n  private __childPart: RootPart | undefined = undefined;\n\n  /**\n   * @category rendering\n   */\n  protected override createRenderRoot() {\n    const renderRoot = super.createRenderRoot();\n    // When adoptedStyleSheets are shimmed, they are inserted into the\n    // shadowRoot by createRenderRoot. Adjust the renderBefore node so that\n    // any styles in Lit content render before adoptedStyleSheets. This is\n    // important so that adoptedStyleSheets have precedence over styles in\n    // the shadowRoot.\n    this.renderOptions.renderBefore ??= renderRoot!.firstChild as ChildNode;\n    return renderRoot;\n  }\n\n  /**\n   * Updates the element. This method reflects property values to attributes\n   * and calls `render` to render DOM via lit-html. Setting properties inside\n   * this method will *not* trigger another update.\n   * @param changedProperties Map of changed properties with old values\n   * @category updates\n   */\n  protected override update(changedProperties: PropertyValues) {\n    // Setting properties in `render` should not trigger an update. Since\n    // updates are allowed after super.update, it's important to call `render`\n    // before that.\n    const value = this.render();\n    if (!this.hasUpdated) {\n      this.renderOptions.isConnected = this.isConnected;\n    }\n    super.update(changedProperties);\n    this.__childPart = render(value, this.renderRoot, this.renderOptions);\n  }\n\n  /**\n   * Invoked when the component is added to the document's DOM.\n   *\n   * In `connectedCallback()` you should setup tasks that should only occur when\n   * the element is connected to the document. The most common of these is\n   * adding event listeners to nodes external to the element, like a keydown\n   * event handler added to the window.\n   *\n   * ```ts\n   * connectedCallback() {\n   *   super.connectedCallback();\n   *   addEventListener('keydown', this._handleKeydown);\n   * }\n   * ```\n   *\n   * Typically, anything done in `connectedCallback()` should be undone when the\n   * element is disconnected, in `disconnectedCallback()`.\n   *\n   * @category lifecycle\n   */\n  override connectedCallback() {\n    super.connectedCallback();\n    this.__childPart?.setConnected(true);\n  }\n\n  /**\n   * Invoked when the component is removed from the document's DOM.\n   *\n   * This callback is the main signal to the element that it may no longer be\n   * used. `disconnectedCallback()` should ensure that nothing is holding a\n   * reference to the element (such as event listeners added to nodes external\n   * to the element), so that it is free to be garbage collected.\n   *\n   * ```ts\n   * disconnectedCallback() {\n   *   super.disconnectedCallback();\n   *   window.removeEventListener('keydown', this._handleKeydown);\n   * }\n   * ```\n   *\n   * An element may be re-connected after being disconnected.\n   *\n   * @category lifecycle\n   */\n  override disconnectedCallback() {\n    super.disconnectedCallback();\n    this.__childPart?.setConnected(false);\n  }\n\n  /**\n   * Invoked on each update to perform rendering tasks. This method may return\n   * any value renderable by lit-html's `ChildPart` - typically a\n   * `TemplateResult`. Setting properties inside this method will *not* trigger\n   * the element to update.\n   * @category rendering\n   */\n  protected render(): unknown {\n    return noChange;\n  }\n}\n\n// Install hydration if available\nglobalThis.litElementHydrateSupport?.({LitElement});\n\n// Apply polyfills if available\nconst polyfillSupport = DEV_MODE\n  ? globalThis.litElementPolyfillSupportDevMode\n  : globalThis.litElementPolyfillSupport;\npolyfillSupport?.({LitElement});\n\n// DEV mode warnings\nif (DEV_MODE) {\n  /* eslint-disable @typescript-eslint/no-explicit-any */\n  // Note, for compatibility with closure compilation, this access\n  // needs to be as a string property index.\n  (LitElement as any)['finalize'] = function (this: typeof LitElement) {\n    const finalized = (ReactiveElement as any).finalize.call(this);\n    if (!finalized) {\n      return false;\n    }\n    const warnRemovedOrRenamed = (obj: any, name: string, renamed = false) => {\n      if (obj.hasOwnProperty(name)) {\n        const ctorName = (typeof obj === 'function' ? obj : obj.constructor)\n          .name;\n        issueWarning(\n          renamed ? 'renamed-api' : 'removed-api',\n          `\\`${name}\\` is implemented on class ${ctorName}. It ` +\n            `has been ${renamed ? 'renamed' : 'removed'} ` +\n            `in this version of LitElement.`\n        );\n      }\n    };\n    warnRemovedOrRenamed(this, 'render');\n    warnRemovedOrRenamed(this, 'getStyles', true);\n    warnRemovedOrRenamed((this as typeof LitElement).prototype, 'adoptStyles');\n    return true;\n  };\n  /* eslint-enable @typescript-eslint/no-explicit-any */\n}\n\n/**\n * END USERS SHOULD NOT RELY ON THIS OBJECT.\n *\n * Private exports for use by other Lit packages, not intended for use by\n * external users.\n *\n * We currently do not make a mangled rollup build of the lit-ssr code. In order\n * to keep a number of (otherwise private) top-level exports  mangled in the\n * client side code, we export a _$LE object containing those members (or\n * helper methods for accessing private fields of those members), and then\n * re-export them for use in lit-ssr. This keeps lit-ssr agnostic to whether the\n * client-side code is being used in `dev` mode or `prod` mode.\n *\n * This has a unique name, to disambiguate it from private exports in\n * lit-html, since this module re-exports all of lit-html.\n *\n * @private\n */\nexport const _$LE = {\n  _$attributeToProperty: (\n    el: LitElement,\n    name: string,\n    value: string | null\n  ) => {\n    // eslint-disable-next-line\n    (el as any)._$attributeToProperty(name, value);\n  },\n  // eslint-disable-next-line\n  _$changedProperties: (el: LitElement) => (el as any)._$changedProperties,\n};\n\n// IMPORTANT: do not change the property name or the assignment expression.\n// This line will be used in regexes to search for LitElement usage.\n(globalThis.litElementVersions ??= []).push('3.2.2');\nif (DEV_MODE && globalThis.litElementVersions.length > 1) {\n  issueWarning!(\n    'multiple-versions',\n    `Multiple versions of Lit loaded. Loading multiple versions ` +\n      `is not recommended.`\n  );\n}\n", "/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/*\n * IMPORTANT: For compatibility with tsickle and the Closure JS compiler, all\n * property decorators (but not class decorators) in this file that have\n * an @ExportDecoratedItems annotation must be defined as a regular function,\n * not an arrow function.\n */\nimport {Constructor, ClassDescriptor} from './base.js';\n\n/**\n * Allow for custom element classes with private constructors\n */\ntype CustomElementClass = Omit<typeof HTMLElement, 'new'>;\n\nconst legacyCustomElement = (tagName: string, clazz: CustomElementClass) => {\n  customElements.define(tagName, clazz as CustomElementConstructor);\n  // Cast as any because TS doesn't recognize the return type as being a\n  // subtype of the decorated class when clazz is typed as\n  // `Constructor<HTMLElement>` for some reason.\n  // `Constructor<HTMLElement>` is helpful to make sure the decorator is\n  // applied to elements however.\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  return clazz as any;\n};\n\nconst standardCustomElement = (\n  tagName: string,\n  descriptor: ClassDescriptor\n) => {\n  const {kind, elements} = descriptor;\n  return {\n    kind,\n    elements,\n    // This callback is called once the class is otherwise fully defined\n    finisher(clazz: Constructor<HTMLElement>) {\n      customElements.define(tagName, clazz);\n    },\n  };\n};\n\n/**\n * Class decorator factory that defines the decorated class as a custom element.\n *\n * ```js\n * @customElement('my-element')\n * class MyElement extends LitElement {\n *   render() {\n *     return html``;\n *   }\n * }\n * ```\n * @category Decorator\n * @param tagName The tag name of the custom element to define.\n */\nexport const customElement =\n  (tagName: string) =>\n  (classOrDescriptor: CustomElementClass | ClassDescriptor) =>\n    typeof classOrDescriptor === 'function'\n      ? legacyCustomElement(tagName, classOrDescriptor)\n      : standardCustomElement(tagName, classOrDescriptor as ClassDescriptor);\n", "/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/*\n * IMPORTANT: For compatibility with tsickle and the Closure JS compiler, all\n * property decorators (but not class decorators) in this file that have\n * an @ExportDecoratedItems annotation must be defined as a regular function,\n * not an arrow function.\n */\nimport {PropertyDeclaration, ReactiveElement} from '../reactive-element.js';\nimport {ClassElement} from './base.js';\n\nconst standardProperty = (\n  options: PropertyDeclaration,\n  element: ClassElement\n) => {\n  // When decorating an accessor, pass it through and add property metadata.\n  // Note, the `hasOwnProperty` check in `createProperty` ensures we don't\n  // stomp over the user's accessor.\n  if (\n    element.kind === 'method' &&\n    element.descriptor &&\n    !('value' in element.descriptor)\n  ) {\n    return {\n      ...element,\n      finisher(clazz: typeof ReactiveElement) {\n        clazz.createProperty(element.key, options);\n      },\n    };\n  } else {\n    // createProperty() takes care of defining the property, but we still\n    // must return some kind of descriptor, so return a descriptor for an\n    // unused prototype field. The finisher calls createProperty().\n    return {\n      kind: 'field',\n      key: Symbol(),\n      placement: 'own',\n      descriptor: {},\n      // store the original key so subsequent decorators have access to it.\n      originalKey: element.key,\n      // When @babel/plugin-proposal-decorators implements initializers,\n      // do this instead of the initializer below. See:\n      // https://github.com/babel/babel/issues/9260 extras: [\n      //   {\n      //     kind: 'initializer',\n      //     placement: 'own',\n      //     initializer: descriptor.initializer,\n      //   }\n      // ],\n      initializer(this: {[key: string]: unknown}) {\n        if (typeof element.initializer === 'function') {\n          this[element.key as string] = element.initializer.call(this);\n        }\n      },\n      finisher(clazz: typeof ReactiveElement) {\n        clazz.createProperty(element.key, options);\n      },\n    };\n  }\n};\n\nconst legacyProperty = (\n  options: PropertyDeclaration,\n  proto: Object,\n  name: PropertyKey\n) => {\n  (proto.constructor as typeof ReactiveElement).createProperty(name, options);\n};\n\n/**\n * A property decorator which creates a reactive property that reflects a\n * corresponding attribute value. When a decorated property is set\n * the element will update and render. A {@linkcode PropertyDeclaration} may\n * optionally be supplied to configure property features.\n *\n * This decorator should only be used for public fields. As public fields,\n * properties should be considered as primarily settable by element users,\n * either via attribute or the property itself.\n *\n * Generally, properties that are changed by the element should be private or\n * protected fields and should use the {@linkcode state} decorator.\n *\n * However, sometimes element code does need to set a public property. This\n * should typically only be done in response to user interaction, and an event\n * should be fired informing the user; for example, a checkbox sets its\n * `checked` property when clicked and fires a `changed` event. Mutating public\n * properties should typically not be done for non-primitive (object or array)\n * properties. In other cases when an element needs to manage state, a private\n * property decorated via the {@linkcode state} decorator should be used. When\n * needed, state properties can be initialized via public properties to\n * facilitate complex interactions.\n *\n * ```ts\n * class MyElement {\n *   @property({ type: Boolean })\n *   clicked = false;\n * }\n * ```\n * @category Decorator\n * @ExportDecoratedItems\n */\nexport function property(options?: PropertyDeclaration) {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  return (protoOrDescriptor: Object | ClassElement, name?: PropertyKey): any =>\n    name !== undefined\n      ? legacyProperty(options!, protoOrDescriptor as Object, name)\n      : standardProperty(options!, protoOrDescriptor as ClassElement);\n}\n", "/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/*\n * IMPORTANT: For compatibility with tsickle and the Closure JS compiler, all\n * property decorators (but not class decorators) in this file that have\n * an @ExportDecoratedItems annotation must be defined as a regular function,\n * not an arrow function.\n */\n\nimport {property} from './property.js';\n\nexport interface InternalPropertyDeclaration<Type = unknown> {\n  /**\n   * A function that indicates if a property should be considered changed when\n   * it is set. The function should take the `newValue` and `oldValue` and\n   * return `true` if an update should be requested.\n   */\n  hasChanged?(value: Type, oldValue: Type): boolean;\n}\n\n/**\n * Declares a private or protected reactive property that still triggers\n * updates to the element when it changes. It does not reflect from the\n * corresponding attribute.\n *\n * Properties declared this way must not be used from HTML or HTML templating\n * systems, they're solely for properties internal to the element. These\n * properties may be renamed by optimization tools like closure compiler.\n * @category Decorator\n */\nexport function state(options?: InternalPropertyDeclaration) {\n  return property({\n    ...options,\n    state: true,\n  });\n}\n", "/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/*\n * IMPORTANT: For compatibility with tsickle and the Closure JS compiler, all\n * property decorators (but not class decorators) in this file that have\n * an @ExportDecoratedItems annotation must be defined as a regular function,\n * not an arrow function.\n */\n\nimport {decorateProperty} from './base.js';\n\nimport type {ReactiveElement} from '../reactive-element.js';\nimport type {QueryAssignedNodesOptions} from './query-assigned-nodes.js';\n\nconst NODE_MODE = false;\nconst global = NODE_MODE ? globalThis : window;\n\n/**\n * A tiny module scoped polyfill for HTMLSlotElement.assignedElements.\n */\nconst slotAssignedElements =\n  global.HTMLSlotElement?.prototype.assignedElements != null\n    ? (slot: HTMLSlotElement, opts?: AssignedNodesOptions) =>\n        slot.assignedElements(opts)\n    : (slot: HTMLSlotElement, opts?: AssignedNodesOptions) =>\n        slot\n          .assignedNodes(opts)\n          .filter(\n            (node): node is Element => node.nodeType === Node.ELEMENT_NODE\n          );\n\n/**\n * Options for the {@linkcode queryAssignedElements} decorator. Extends the\n * options that can be passed into\n * [HTMLSlotElement.assignedElements](https://developer.mozilla.org/en-US/docs/Web/API/HTMLSlotElement/assignedElements).\n */\nexport interface QueryAssignedElementsOptions\n  extends QueryAssignedNodesOptions {\n  /**\n   * CSS selector used to filter the elements returned. For example, a selector\n   * of `\".item\"` will only include elements with the `item` class.\n   */\n  selector?: string;\n}\n\n/**\n * A property decorator that converts a class property into a getter that\n * returns the `assignedElements` of the given `slot`. Provides a declarative\n * way to use\n * [`HTMLSlotElement.assignedElements`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLSlotElement/assignedElements).\n *\n * Can be passed an optional {@linkcode QueryAssignedElementsOptions} object.\n *\n * Example usage:\n * ```ts\n * class MyElement {\n *   @queryAssignedElements({ slot: 'list' })\n *   listItems!: Array<HTMLElement>;\n *   @queryAssignedElements()\n *   unnamedSlotEls!: Array<HTMLElement>;\n *\n *   render() {\n *     return html`\n *       <slot name=\"list\"></slot>\n *       <slot></slot>\n *     `;\n *   }\n * }\n * ```\n *\n * Note, the type of this property should be annotated as `Array<HTMLElement>`.\n *\n * @category Decorator\n */\nexport function queryAssignedElements(options?: QueryAssignedElementsOptions) {\n  const {slot, selector} = options ?? {};\n  return decorateProperty({\n    descriptor: (_name: PropertyKey) => ({\n      get(this: ReactiveElement) {\n        const slotSelector = `slot${slot ? `[name=${slot}]` : ':not([name])'}`;\n        const slotEl =\n          this.renderRoot?.querySelector<HTMLSlotElement>(slotSelector);\n        const elements =\n          slotEl != null ? slotAssignedElements(slotEl, options) : [];\n        if (selector) {\n          return elements.filter((node) => node.matches(selector));\n        }\n        return elements;\n      },\n      enumerable: true,\n      configurable: true,\n    }),\n  });\n}\n", "/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {Disconnectable, Part} from './lit-html.js';\n\nexport {\n  AttributePart,\n  BooleanAttributePart,\n  ChildPart,\n  ElementPart,\n  EventPart,\n  Part,\n  PropertyPart,\n} from './lit-html.js';\n\nexport interface DirectiveClass {\n  new (part: PartInfo): Directive;\n}\n\n/**\n * This utility type extracts the signature of a directive class's render()\n * method so we can use it for the type of the generated directive function.\n */\nexport type DirectiveParameters<C extends Directive> = Parameters<C['render']>;\n\n/**\n * A generated directive function doesn't evaluate the directive, but just\n * returns a DirectiveResult object that captures the arguments.\n */\nexport interface DirectiveResult<C extends DirectiveClass = DirectiveClass> {\n  /**\n   * This property needs to remain unminified.\n   * @internal */\n  ['_$litDirective$']: C;\n  /** @internal */\n  values: DirectiveParameters<InstanceType<C>>;\n}\n\nexport const PartType = {\n  ATTRIBUTE: 1,\n  CHILD: 2,\n  PROPERTY: 3,\n  BOOLEAN_ATTRIBUTE: 4,\n  EVENT: 5,\n  ELEMENT: 6,\n} as const;\n\nexport type PartType = typeof PartType[keyof typeof PartType];\n\nexport interface ChildPartInfo {\n  readonly type: typeof PartType.CHILD;\n}\n\nexport interface AttributePartInfo {\n  readonly type:\n    | typeof PartType.ATTRIBUTE\n    | typeof PartType.PROPERTY\n    | typeof PartType.BOOLEAN_ATTRIBUTE\n    | typeof PartType.EVENT;\n  readonly strings?: ReadonlyArray<string>;\n  readonly name: string;\n  readonly tagName: string;\n}\n\nexport interface ElementPartInfo {\n  readonly type: typeof PartType.ELEMENT;\n}\n\n/**\n * Information about the part a directive is bound to.\n *\n * This is useful for checking that a directive is attached to a valid part,\n * such as with directive that can only be used on attribute bindings.\n */\nexport type PartInfo = ChildPartInfo | AttributePartInfo | ElementPartInfo;\n\n/**\n * Creates a user-facing directive function from a Directive class. This\n * function has the same parameters as the directive's render() method.\n */\nexport const directive =\n  <C extends DirectiveClass>(c: C) =>\n  (...values: DirectiveParameters<InstanceType<C>>): DirectiveResult<C> => ({\n    // This property needs to remain unminified.\n    ['_$litDirective$']: c,\n    values,\n  });\n\n/**\n * Base class for creating custom directives. Users should extend this class,\n * implement `render` and/or `update`, and then pass their subclass to\n * `directive`.\n */\nexport abstract class Directive implements Disconnectable {\n  //@internal\n  __part!: Part;\n  //@internal\n  __attributeIndex: number | undefined;\n  //@internal\n  __directive?: Directive;\n\n  //@internal\n  _$parent!: Disconnectable;\n\n  // These will only exist on the AsyncDirective subclass\n  //@internal\n  _$disconnectableChildren?: Set<Disconnectable>;\n  // This property needs to remain unminified.\n  //@internal\n  ['_$notifyDirectiveConnectionChanged']?(isConnected: boolean): void;\n\n  constructor(_partInfo: PartInfo) {}\n\n  // See comment in Disconnectable interface for why this is a getter\n  get _$isConnected() {\n    return this._$parent._$isConnected;\n  }\n\n  /** @internal */\n  _$initialize(\n    part: Part,\n    parent: Disconnectable,\n    attributeIndex: number | undefined\n  ) {\n    this.__part = part;\n    this._$parent = parent;\n    this.__attributeIndex = attributeIndex;\n  }\n  /** @internal */\n  _$resolve(part: Part, props: Array<unknown>): unknown {\n    return this.update(part, props);\n  }\n\n  abstract render(...props: Array<unknown>): unknown;\n\n  update(_part: Part, props: Array<unknown>): unknown {\n    return this.render(...props);\n  }\n}\n", "/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {_$LH, Part, DirectiveParent, TemplateResult} from './lit-html.js';\nimport {\n  DirectiveResult,\n  DirectiveClass,\n  PartInfo,\n  AttributePartInfo,\n} from './directive.js';\ntype Primitive = null | undefined | boolean | number | string | symbol | bigint;\n\nconst {_ChildPart: ChildPart} = _$LH;\n\ntype ChildPart = InstanceType<typeof ChildPart>;\n\nconst ENABLE_SHADYDOM_NOPATCH = true;\n\nconst wrap =\n  ENABLE_SHADYDOM_NOPATCH &&\n  window.ShadyDOM?.inUse &&\n  window.ShadyDOM?.noPatch === true\n    ? window.ShadyDOM!.wrap\n    : (node: Node) => node;\n\n/**\n * Tests if a value is a primitive value.\n *\n * See https://tc39.github.io/ecma262/#sec-typeof-operator\n */\nexport const isPrimitive = (value: unknown): value is Primitive =>\n  value === null || (typeof value != 'object' && typeof value != 'function');\n\nexport const TemplateResultType = {\n  HTML: 1,\n  SVG: 2,\n} as const;\n\nexport type TemplateResultType =\n  typeof TemplateResultType[keyof typeof TemplateResultType];\n\n/**\n * Tests if a value is a TemplateResult.\n */\nexport const isTemplateResult = (\n  value: unknown,\n  type?: TemplateResultType\n): value is TemplateResult =>\n  type === undefined\n    ? // This property needs to remain unminified.\n      (value as TemplateResult)?.['_$litType$'] !== undefined\n    : (value as TemplateResult)?.['_$litType$'] === type;\n\n/**\n * Tests if a value is a DirectiveResult.\n */\nexport const isDirectiveResult = (value: unknown): value is DirectiveResult =>\n  // This property needs to remain unminified.\n  (value as DirectiveResult)?.['_$litDirective$'] !== undefined;\n\n/**\n * Retrieves the Directive class for a DirectiveResult\n */\nexport const getDirectiveClass = (value: unknown): DirectiveClass | undefined =>\n  // This property needs to remain unminified.\n  (value as DirectiveResult)?.['_$litDirective$'];\n\n/**\n * Tests whether a part has only a single-expression with no strings to\n * interpolate between.\n *\n * Only AttributePart and PropertyPart can have multiple expressions.\n * Multi-expression parts have a `strings` property and single-expression\n * parts do not.\n */\nexport const isSingleExpression = (part: PartInfo) =>\n  (part as AttributePartInfo).strings === undefined;\n\nconst createMarker = () => document.createComment('');\n\n/**\n * Inserts a ChildPart into the given container ChildPart's DOM, either at the\n * end of the container ChildPart, or before the optional `refPart`.\n *\n * This does not add the part to the containerPart's committed value. That must\n * be done by callers.\n *\n * @param containerPart Part within which to add the new ChildPart\n * @param refPart Part before which to add the new ChildPart; when omitted the\n *     part added to the end of the `containerPart`\n * @param part Part to insert, or undefined to create a new part\n */\nexport const insertPart = (\n  containerPart: ChildPart,\n  refPart?: ChildPart,\n  part?: ChildPart\n): ChildPart => {\n  const container = wrap(containerPart._$startNode).parentNode!;\n\n  const refNode =\n    refPart === undefined ? containerPart._$endNode : refPart._$startNode;\n\n  if (part === undefined) {\n    const startNode = wrap(container).insertBefore(createMarker(), refNode);\n    const endNode = wrap(container).insertBefore(createMarker(), refNode);\n    part = new ChildPart(\n      startNode,\n      endNode,\n      containerPart,\n      containerPart.options\n    );\n  } else {\n    const endNode = wrap(part._$endNode!).nextSibling;\n    const oldParent = part._$parent;\n    const parentChanged = oldParent !== containerPart;\n    if (parentChanged) {\n      part._$reparentDisconnectables?.(containerPart);\n      // Note that although `_$reparentDisconnectables` updates the part's\n      // `_$parent` reference after unlinking from its current parent, that\n      // method only exists if Disconnectables are present, so we need to\n      // unconditionally set it here\n      part._$parent = containerPart;\n      // Since the _$isConnected getter is somewhat costly, only\n      // read it once we know the subtree has directives that need\n      // to be notified\n      let newConnectionState;\n      if (\n        part._$notifyConnectionChanged !== undefined &&\n        (newConnectionState = containerPart._$isConnected) !==\n          oldParent!._$isConnected\n      ) {\n        part._$notifyConnectionChanged(newConnectionState);\n      }\n    }\n    if (endNode !== refNode || parentChanged) {\n      let start: Node | null = part._$startNode;\n      while (start !== endNode) {\n        const n: Node | null = wrap(start!).nextSibling;\n        wrap(container).insertBefore(start!, refNode);\n        start = n;\n      }\n    }\n  }\n\n  return part;\n};\n\n/**\n * Sets the value of a Part.\n *\n * Note that this should only be used to set/update the value of user-created\n * parts (i.e. those created using `insertPart`); it should not be used\n * by directives to set the value of the directive's container part. Directives\n * should return a value from `update`/`render` to update their part state.\n *\n * For directives that require setting their part value asynchronously, they\n * should extend `AsyncDirective` and call `this.setValue()`.\n *\n * @param part Part to set\n * @param value Value to set\n * @param index For `AttributePart`s, the index to set\n * @param directiveParent Used internally; should not be set by user\n */\nexport const setChildPartValue = <T extends ChildPart>(\n  part: T,\n  value: unknown,\n  directiveParent: DirectiveParent = part\n): T => {\n  part._$setValue(value, directiveParent);\n  return part;\n};\n\n// A sentinal value that can never appear as a part value except when set by\n// live(). Used to force a dirty-check to fail and cause a re-render.\nconst RESET_VALUE = {};\n\n/**\n * Sets the committed value of a ChildPart directly without triggering the\n * commit stage of the part.\n *\n * This is useful in cases where a directive needs to update the part such\n * that the next update detects a value change or not. When value is omitted,\n * the next update will be guaranteed to be detected as a change.\n *\n * @param part\n * @param value\n */\nexport const setCommittedValue = (part: Part, value: unknown = RESET_VALUE) =>\n  (part._$committedValue = value);\n\n/**\n * Returns the committed value of a ChildPart.\n *\n * The committed value is used for change detection and efficient updates of\n * the part. It can differ from the value set by the template or directive in\n * cases where the template value is transformed before being commited.\n *\n * - `TemplateResult`s are committed as a `TemplateInstance`\n * - Iterables are committed as `Array<ChildPart>`\n * - All other types are committed as the template value or value returned or\n *   set by a directive.\n *\n * @param part\n */\nexport const getCommittedValue = (part: ChildPart) => part._$committedValue;\n\n/**\n * Removes a ChildPart from the DOM, including any of its content.\n *\n * @param part The Part to remove\n */\nexport const removePart = (part: ChildPart) => {\n  part._$notifyConnectionChanged?.(false, true);\n  let start: ChildNode | null = part._$startNode;\n  const end: ChildNode | null = wrap(part._$endNode!).nextSibling;\n  while (start !== end) {\n    const n: ChildNode | null = wrap(start!).nextSibling;\n    (wrap(start!) as ChildNode).remove();\n    start = n;\n  }\n};\n\nexport const clearPart = (part: ChildPart) => {\n  part._$clear();\n};\n", "/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {ChildPart, noChange} from '../lit-html.js';\nimport {directive, Directive, PartInfo, PartType} from '../directive.js';\nimport {\n  insertPart,\n  getCommittedValue,\n  removePart,\n  setCommittedValue,\n  setChildPartValue,\n} from '../directive-helpers.js';\n\nexport type KeyFn<T> = (item: T, index: number) => unknown;\nexport type ItemTemplate<T> = (item: T, index: number) => unknown;\n\n// Helper for generating a map of array item to its index over a subset\n// of an array (used to lazily generate `newKeyToIndexMap` and\n// `oldKeyToIndexMap`)\nconst generateMap = (list: unknown[], start: number, end: number) => {\n  const map = new Map<unknown, number>();\n  for (let i = start; i <= end; i++) {\n    map.set(list[i], i);\n  }\n  return map;\n};\n\nclass RepeatDirective extends Directive {\n  private _itemKeys?: unknown[];\n\n  constructor(partInfo: PartInfo) {\n    super(partInfo);\n    if (partInfo.type !== PartType.CHILD) {\n      throw new Error('repeat() can only be used in text expressions');\n    }\n  }\n\n  private _getValuesAndKeys<T>(\n    items: Iterable<T>,\n    keyFnOrTemplate: KeyFn<T> | ItemTemplate<T>,\n    template?: ItemTemplate<T>\n  ) {\n    let keyFn: KeyFn<T> | undefined;\n    if (template === undefined) {\n      template = keyFnOrTemplate;\n    } else if (keyFnOrTemplate !== undefined) {\n      keyFn = keyFnOrTemplate as KeyFn<T>;\n    }\n    const keys = [];\n    const values = [];\n    let index = 0;\n    for (const item of items) {\n      keys[index] = keyFn ? keyFn(item, index) : index;\n      values[index] = template!(item, index);\n      index++;\n    }\n    return {\n      values,\n      keys,\n    };\n  }\n\n  render<T>(items: Iterable<T>, template: ItemTemplate<T>): Array<unknown>;\n  render<T>(\n    items: Iterable<T>,\n    keyFn: KeyFn<T> | ItemTemplate<T>,\n    template: ItemTemplate<T>\n  ): Array<unknown>;\n  render<T>(\n    items: Iterable<T>,\n    keyFnOrTemplate: KeyFn<T> | ItemTemplate<T>,\n    template?: ItemTemplate<T>\n  ) {\n    return this._getValuesAndKeys(items, keyFnOrTemplate, template).values;\n  }\n\n  override update<T>(\n    containerPart: ChildPart,\n    [items, keyFnOrTemplate, template]: [\n      Iterable<T>,\n      KeyFn<T> | ItemTemplate<T>,\n      ItemTemplate<T>\n    ]\n  ) {\n    // Old part & key lists are retrieved from the last update (which may\n    // be primed by hydration)\n    const oldParts = getCommittedValue(\n      containerPart\n    ) as Array<ChildPart | null>;\n    const {values: newValues, keys: newKeys} = this._getValuesAndKeys(\n      items,\n      keyFnOrTemplate,\n      template\n    );\n\n    // We check that oldParts, the committed value, is an Array as an\n    // indicator that the previous value came from a repeat() call. If\n    // oldParts is not an Array then this is the first render and we return\n    // an array for lit-html's array handling to render, and remember the\n    // keys.\n    if (!Array.isArray(oldParts)) {\n      this._itemKeys = newKeys;\n      return newValues;\n    }\n\n    // In SSR hydration it's possible for oldParts to be an arrray but for us\n    // to not have item keys because the update() hasn't run yet. We set the\n    // keys to an empty array. This will cause all oldKey/newKey comparisons\n    // to fail and execution to fall to the last nested brach below which\n    // reuses the oldPart.\n    const oldKeys = (this._itemKeys ??= []);\n\n    // New part list will be built up as we go (either reused from\n    // old parts or created for new keys in this update). This is\n    // saved in the above cache at the end of the update.\n    const newParts: ChildPart[] = [];\n\n    // Maps from key to index for current and previous update; these\n    // are generated lazily only when needed as a performance\n    // optimization, since they are only required for multiple\n    // non-contiguous changes in the list, which are less common.\n    let newKeyToIndexMap!: Map<unknown, number>;\n    let oldKeyToIndexMap!: Map<unknown, number>;\n\n    // Head and tail pointers to old parts and new values\n    let oldHead = 0;\n    let oldTail = oldParts.length - 1;\n    let newHead = 0;\n    let newTail = newValues.length - 1;\n\n    // Overview of O(n) reconciliation algorithm (general approach\n    // based on ideas found in ivi, vue, snabbdom, etc.):\n    //\n    // * We start with the list of old parts and new values (and\n    //   arrays of their respective keys), head/tail pointers into\n    //   each, and we build up the new list of parts by updating\n    //   (and when needed, moving) old parts or creating new ones.\n    //   The initial scenario might look like this (for brevity of\n    //   the diagrams, the numbers in the array reflect keys\n    //   associated with the old parts or new values, although keys\n    //   and parts/values are actually stored in parallel arrays\n    //   indexed using the same head/tail pointers):\n    //\n    //      oldHead v                 v oldTail\n    //   oldKeys:  [0, 1, 2, 3, 4, 5, 6]\n    //   newParts: [ ,  ,  ,  ,  ,  ,  ]\n    //   newKeys:  [0, 2, 1, 4, 3, 7, 6] <- reflects the user's new\n    //                                      item order\n    //      newHead ^                 ^ newTail\n    //\n    // * Iterate old & new lists from both sides, updating,\n    //   swapping, or removing parts at the head/tail locations\n    //   until neither head nor tail can move.\n    //\n    // * Example below: keys at head pointers match, so update old\n    //   part 0 in-place (no need to move it) and record part 0 in\n    //   the `newParts` list. The last thing we do is advance the\n    //   `oldHead` and `newHead` pointers (will be reflected in the\n    //   next diagram).\n    //\n    //      oldHead v                 v oldTail\n    //   oldKeys:  [0, 1, 2, 3, 4, 5, 6]\n    //   newParts: [0,  ,  ,  ,  ,  ,  ] <- heads matched: update 0\n    //   newKeys:  [0, 2, 1, 4, 3, 7, 6]    and advance both oldHead\n    //                                      & newHead\n    //      newHead ^                 ^ newTail\n    //\n    // * Example below: head pointers don't match, but tail\n    //   pointers do, so update part 6 in place (no need to move\n    //   it), and record part 6 in the `newParts` list. Last,\n    //   advance the `oldTail` and `oldHead` pointers.\n    //\n    //         oldHead v              v oldTail\n    //   oldKeys:  [0, 1, 2, 3, 4, 5, 6]\n    //   newParts: [0,  ,  ,  ,  ,  , 6] <- tails matched: update 6\n    //   newKeys:  [0, 2, 1, 4, 3, 7, 6]    and advance both oldTail\n    //                                      & newTail\n    //         newHead ^              ^ newTail\n    //\n    // * If neither head nor tail match; next check if one of the\n    //   old head/tail items was removed. We first need to generate\n    //   the reverse map of new keys to index (`newKeyToIndexMap`),\n    //   which is done once lazily as a performance optimization,\n    //   since we only hit this case if multiple non-contiguous\n    //   changes were made. Note that for contiguous removal\n    //   anywhere in the list, the head and tails would advance\n    //   from either end and pass each other before we get to this\n    //   case and removals would be handled in the final while loop\n    //   without needing to generate the map.\n    //\n    // * Example below: The key at `oldTail` was removed (no longer\n    //   in the `newKeyToIndexMap`), so remove that part from the\n    //   DOM and advance just the `oldTail` pointer.\n    //\n    //         oldHead v           v oldTail\n    //   oldKeys:  [0, 1, 2, 3, 4, 5, 6]\n    //   newParts: [0,  ,  ,  ,  ,  , 6] <- 5 not in new map: remove\n    //   newKeys:  [0, 2, 1, 4, 3, 7, 6]    5 and advance oldTail\n    //         newHead ^           ^ newTail\n    //\n    // * Once head and tail cannot move, any mismatches are due to\n    //   either new or moved items; if a new key is in the previous\n    //   \"old key to old index\" map, move the old part to the new\n    //   location, otherwise create and insert a new part. Note\n    //   that when moving an old part we null its position in the\n    //   oldParts array if it lies between the head and tail so we\n    //   know to skip it when the pointers get there.\n    //\n    // * Example below: neither head nor tail match, and neither\n    //   were removed; so find the `newHead` key in the\n    //   `oldKeyToIndexMap`, and move that old part's DOM into the\n    //   next head position (before `oldParts[oldHead]`). Last,\n    //   null the part in the `oldPart` array since it was\n    //   somewhere in the remaining oldParts still to be scanned\n    //   (between the head and tail pointers) so that we know to\n    //   skip that old part on future iterations.\n    //\n    //         oldHead v        v oldTail\n    //   oldKeys:  [0, 1, -, 3, 4, 5, 6]\n    //   newParts: [0, 2,  ,  ,  ,  , 6] <- stuck: update & move 2\n    //   newKeys:  [0, 2, 1, 4, 3, 7, 6]    into place and advance\n    //                                      newHead\n    //         newHead ^           ^ newTail\n    //\n    // * Note that for moves/insertions like the one above, a part\n    //   inserted at the head pointer is inserted before the\n    //   current `oldParts[oldHead]`, and a part inserted at the\n    //   tail pointer is inserted before `newParts[newTail+1]`. The\n    //   seeming asymmetry lies in the fact that new parts are\n    //   moved into place outside in, so to the right of the head\n    //   pointer are old parts, and to the right of the tail\n    //   pointer are new parts.\n    //\n    // * We always restart back from the top of the algorithm,\n    //   allowing matching and simple updates in place to\n    //   continue...\n    //\n    // * Example below: the head pointers once again match, so\n    //   simply update part 1 and record it in the `newParts`\n    //   array.  Last, advance both head pointers.\n    //\n    //         oldHead v        v oldTail\n    //   oldKeys:  [0, 1, -, 3, 4, 5, 6]\n    //   newParts: [0, 2, 1,  ,  ,  , 6] <- heads matched: update 1\n    //   newKeys:  [0, 2, 1, 4, 3, 7, 6]    and advance both oldHead\n    //                                      & newHead\n    //            newHead ^        ^ newTail\n    //\n    // * As mentioned above, items that were moved as a result of\n    //   being stuck (the final else clause in the code below) are\n    //   marked with null, so we always advance old pointers over\n    //   these so we're comparing the next actual old value on\n    //   either end.\n    //\n    // * Example below: `oldHead` is null (already placed in\n    //   newParts), so advance `oldHead`.\n    //\n    //            oldHead v     v oldTail\n    //   oldKeys:  [0, 1, -, 3, 4, 5, 6] <- old head already used:\n    //   newParts: [0, 2, 1,  ,  ,  , 6]    advance oldHead\n    //   newKeys:  [0, 2, 1, 4, 3, 7, 6]\n    //               newHead ^     ^ newTail\n    //\n    // * Note it's not critical to mark old parts as null when they\n    //   are moved from head to tail or tail to head, since they\n    //   will be outside the pointer range and never visited again.\n    //\n    // * Example below: Here the old tail key matches the new head\n    //   key, so the part at the `oldTail` position and move its\n    //   DOM to the new head position (before `oldParts[oldHead]`).\n    //   Last, advance `oldTail` and `newHead` pointers.\n    //\n    //               oldHead v  v oldTail\n    //   oldKeys:  [0, 1, -, 3, 4, 5, 6]\n    //   newParts: [0, 2, 1, 4,  ,  , 6] <- old tail matches new\n    //   newKeys:  [0, 2, 1, 4, 3, 7, 6]   head: update & move 4,\n    //                                     advance oldTail & newHead\n    //               newHead ^     ^ newTail\n    //\n    // * Example below: Old and new head keys match, so update the\n    //   old head part in place, and advance the `oldHead` and\n    //   `newHead` pointers.\n    //\n    //               oldHead v oldTail\n    //   oldKeys:  [0, 1, -, 3, 4, 5, 6]\n    //   newParts: [0, 2, 1, 4, 3,   ,6] <- heads match: update 3\n    //   newKeys:  [0, 2, 1, 4, 3, 7, 6]    and advance oldHead &\n    //                                      newHead\n    //                  newHead ^  ^ newTail\n    //\n    // * Once the new or old pointers move past each other then all\n    //   we have left is additions (if old list exhausted) or\n    //   removals (if new list exhausted). Those are handled in the\n    //   final while loops at the end.\n    //\n    // * Example below: `oldHead` exceeded `oldTail`, so we're done\n    //   with the main loop.  Create the remaining part and insert\n    //   it at the new head position, and the update is complete.\n    //\n    //                   (oldHead > oldTail)\n    //   oldKeys:  [0, 1, -, 3, 4, 5, 6]\n    //   newParts: [0, 2, 1, 4, 3, 7 ,6] <- create and insert 7\n    //   newKeys:  [0, 2, 1, 4, 3, 7, 6]\n    //                     newHead ^ newTail\n    //\n    // * Note that the order of the if/else clauses is not\n    //   important to the algorithm, as long as the null checks\n    //   come first (to ensure we're always working on valid old\n    //   parts) and that the final else clause comes last (since\n    //   that's where the expensive moves occur). The order of\n    //   remaining clauses is is just a simple guess at which cases\n    //   will be most common.\n    //\n    // * Note, we could calculate the longest\n    //   increasing subsequence (LIS) of old items in new position,\n    //   and only move those not in the LIS set. However that costs\n    //   O(nlogn) time and adds a bit more code, and only helps\n    //   make rare types of mutations require fewer moves. The\n    //   above handles removes, adds, reversal, swaps, and single\n    //   moves of contiguous items in linear time, in the minimum\n    //   number of moves. As the number of multiple moves where LIS\n    //   might help approaches a random shuffle, the LIS\n    //   optimization becomes less helpful, so it seems not worth\n    //   the code at this point. Could reconsider if a compelling\n    //   case arises.\n\n    while (oldHead <= oldTail && newHead <= newTail) {\n      if (oldParts[oldHead] === null) {\n        // `null` means old part at head has already been used\n        // below; skip\n        oldHead++;\n      } else if (oldParts[oldTail] === null) {\n        // `null` means old part at tail has already been used\n        // below; skip\n        oldTail--;\n      } else if (oldKeys[oldHead] === newKeys[newHead]) {\n        // Old head matches new head; update in place\n        newParts[newHead] = setChildPartValue(\n          oldParts[oldHead]!,\n          newValues[newHead]\n        );\n        oldHead++;\n        newHead++;\n      } else if (oldKeys[oldTail] === newKeys[newTail]) {\n        // Old tail matches new tail; update in place\n        newParts[newTail] = setChildPartValue(\n          oldParts[oldTail]!,\n          newValues[newTail]\n        );\n        oldTail--;\n        newTail--;\n      } else if (oldKeys[oldHead] === newKeys[newTail]) {\n        // Old head matches new tail; update and move to new tail\n        newParts[newTail] = setChildPartValue(\n          oldParts[oldHead]!,\n          newValues[newTail]\n        );\n        insertPart(containerPart, newParts[newTail + 1], oldParts[oldHead]!);\n        oldHead++;\n        newTail--;\n      } else if (oldKeys[oldTail] === newKeys[newHead]) {\n        // Old tail matches new head; update and move to new head\n        newParts[newHead] = setChildPartValue(\n          oldParts[oldTail]!,\n          newValues[newHead]\n        );\n        insertPart(containerPart, oldParts[oldHead]!, oldParts[oldTail]!);\n        oldTail--;\n        newHead++;\n      } else {\n        if (newKeyToIndexMap === undefined) {\n          // Lazily generate key-to-index maps, used for removals &\n          // moves below\n          newKeyToIndexMap = generateMap(newKeys, newHead, newTail);\n          oldKeyToIndexMap = generateMap(oldKeys, oldHead, oldTail);\n        }\n        if (!newKeyToIndexMap.has(oldKeys[oldHead])) {\n          // Old head is no longer in new list; remove\n          removePart(oldParts[oldHead]!);\n          oldHead++;\n        } else if (!newKeyToIndexMap.has(oldKeys[oldTail])) {\n          // Old tail is no longer in new list; remove\n          removePart(oldParts[oldTail]!);\n          oldTail--;\n        } else {\n          // Any mismatches at this point are due to additions or\n          // moves; see if we have an old part we can reuse and move\n          // into place\n          const oldIndex = oldKeyToIndexMap.get(newKeys[newHead]);\n          const oldPart = oldIndex !== undefined ? oldParts[oldIndex] : null;\n          if (oldPart === null) {\n            // No old part for this value; create a new one and\n            // insert it\n            const newPart = insertPart(containerPart, oldParts[oldHead]!);\n            setChildPartValue(newPart, newValues[newHead]);\n            newParts[newHead] = newPart;\n          } else {\n            // Reuse old part\n            newParts[newHead] = setChildPartValue(oldPart, newValues[newHead]);\n            insertPart(containerPart, oldParts[oldHead]!, oldPart);\n            // This marks the old part as having been used, so that\n            // it will be skipped in the first two checks above\n            oldParts[oldIndex as number] = null;\n          }\n          newHead++;\n        }\n      }\n    }\n    // Add parts for any remaining new values\n    while (newHead <= newTail) {\n      // For all remaining additions, we insert before last new\n      // tail, since old pointers are no longer valid\n      const newPart = insertPart(containerPart, newParts[newTail + 1]);\n      setChildPartValue(newPart, newValues[newHead]);\n      newParts[newHead++] = newPart;\n    }\n    // Remove any remaining unused old parts\n    while (oldHead <= oldTail) {\n      const oldPart = oldParts[oldHead++];\n      if (oldPart !== null) {\n        removePart(oldPart);\n      }\n    }\n\n    // Save order of new parts for next round\n    this._itemKeys = newKeys;\n    // Directly set part value, bypassing it's dirty-checking\n    setCommittedValue(containerPart, newParts);\n    return noChange;\n  }\n}\n\nexport interface RepeatDirectiveFn {\n  <T>(\n    items: Iterable<T>,\n    keyFnOrTemplate: KeyFn<T> | ItemTemplate<T>,\n    template?: ItemTemplate<T>\n  ): unknown;\n  <T>(items: Iterable<T>, template: ItemTemplate<T>): unknown;\n  <T>(\n    items: Iterable<T>,\n    keyFn: KeyFn<T> | ItemTemplate<T>,\n    template: ItemTemplate<T>\n  ): unknown;\n}\n\n/**\n * A directive that repeats a series of values (usually `TemplateResults`)\n * generated from an iterable, and updates those items efficiently when the\n * iterable changes based on user-provided `keys` associated with each item.\n *\n * Note that if a `keyFn` is provided, strict key-to-DOM mapping is maintained,\n * meaning previous DOM for a given key is moved into the new position if\n * needed, and DOM will never be reused with values for different keys (new DOM\n * will always be created for new keys). This is generally the most efficient\n * way to use `repeat` since it performs minimum unnecessary work for insertions\n * and removals.\n *\n * The `keyFn` takes two parameters, the item and its index, and returns a unique key value.\n *\n * ```js\n * html`\n *   <ol>\n *     ${repeat(this.items, (item) => item.id, (item, index) => {\n *       return html`<li>${index}: ${item.name}</li>`;\n *     })}\n *   </ol>\n * `\n * ```\n *\n * **Important**: If providing a `keyFn`, keys *must* be unique for all items in a\n * given call to `repeat`. The behavior when two or more items have the same key\n * is undefined.\n *\n * If no `keyFn` is provided, this directive will perform similar to mapping\n * items to values, and DOM will be reused against potentially different items.\n */\nexport const repeat = directive(RepeatDirective) as RepeatDirectiveFn;\n\n/**\n * The type of the class that powers this directive. Necessary for naming the\n * directive's return type.\n */\nexport type {RepeatDirective};\n", "/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {AttributePart, noChange, nothing} from '../lit-html.js';\nimport {\n  directive,\n  Directive,\n  DirectiveParameters,\n  PartInfo,\n  PartType,\n} from '../directive.js';\nimport {isSingleExpression, setCommittedValue} from '../directive-helpers.js';\n\nclass LiveDirective extends Directive {\n  constructor(partInfo: PartInfo) {\n    super(partInfo);\n    if (\n      !(\n        partInfo.type === PartType.PROPERTY ||\n        partInfo.type === PartType.ATTRIBUTE ||\n        partInfo.type === PartType.BOOLEAN_ATTRIBUTE\n      )\n    ) {\n      throw new Error(\n        'The `live` directive is not allowed on child or event bindings'\n      );\n    }\n    if (!isSingleExpression(partInfo)) {\n      throw new Error('`live` bindings can only contain a single expression');\n    }\n  }\n\n  render(value: unknown) {\n    return value;\n  }\n\n  override update(part: AttributePart, [value]: DirectiveParameters<this>) {\n    if (value === noChange || value === nothing) {\n      return value;\n    }\n    const element = part.element;\n    const name = part.name;\n\n    if (part.type === PartType.PROPERTY) {\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      if (value === (element as any)[name]) {\n        return noChange;\n      }\n    } else if (part.type === PartType.BOOLEAN_ATTRIBUTE) {\n      if (!!value === element.hasAttribute(name)) {\n        return noChange;\n      }\n    } else if (part.type === PartType.ATTRIBUTE) {\n      if (element.getAttribute(name) === String(value)) {\n        return noChange;\n      }\n    }\n    // Resets the part's value, causing its dirty-check to fail so that it\n    // always sets the value.\n    setCommittedValue(part);\n    return value;\n  }\n}\n\n/**\n * Checks binding values against live DOM values, instead of previously bound\n * values, when determining whether to update the value.\n *\n * This is useful for cases where the DOM value may change from outside of\n * lit-html, such as with a binding to an `<input>` element's `value` property,\n * a content editable elements text, or to a custom element that changes it's\n * own properties or attributes.\n *\n * In these cases if the DOM value changes, but the value set through lit-html\n * bindings hasn't, lit-html won't know to update the DOM value and will leave\n * it alone. If this is not what you want--if you want to overwrite the DOM\n * value with the bound value no matter what--use the `live()` directive:\n *\n * ```js\n * html`<input .value=${live(x)}>`\n * ```\n *\n * `live()` performs a strict equality check against the live DOM value, and if\n * the new value is equal to the live value, does nothing. This means that\n * `live()` should not be used when the binding will cause a type conversion. If\n * you use `live()` with an attribute binding, make sure that only strings are\n * passed in, or the binding will update every render.\n */\nexport const live = directive(LiveDirective);\n\n/**\n * The type of the class that powers this directive. Necessary for naming the\n * directive's return type.\n */\nexport type {LiveDirective};\n", "/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/**\n * Overview:\n *\n * This module is designed to add support for an async `setValue` API and\n * `disconnected` callback to directives with the least impact on the core\n * runtime or payload when that feature is not used.\n *\n * The strategy is to introduce a `AsyncDirective` subclass of\n * `Directive` that climbs the \"parent\" tree in its constructor to note which\n * branches of lit-html's \"logical tree\" of data structures contain such\n * directives and thus need to be crawled when a subtree is being cleared (or\n * manually disconnected) in order to run the `disconnected` callback.\n *\n * The \"nodes\" of the logical tree include Parts, TemplateInstances (for when a\n * TemplateResult is committed to a value of a ChildPart), and Directives; these\n * all implement a common interface called `DisconnectableChild`. Each has a\n * `_$parent` reference which is set during construction in the core code, and a\n * `_$disconnectableChildren` field which is initially undefined.\n *\n * The sparse tree created by means of the `AsyncDirective` constructor\n * crawling up the `_$parent` tree and placing a `_$disconnectableChildren` Set\n * on each parent that includes each child that contains a\n * `AsyncDirective` directly or transitively via its children. In order to\n * notify connection state changes and disconnect (or reconnect) a tree, the\n * `_$notifyConnectionChanged` API is patched onto ChildParts as a directive\n * climbs the parent tree, which is called by the core when clearing a part if\n * it exists. When called, that method iterates over the sparse tree of\n * Set<DisconnectableChildren> built up by AsyncDirectives, and calls\n * `_$notifyDirectiveConnectionChanged` on any directives that are encountered\n * in that tree, running the required callbacks.\n *\n * A given \"logical tree\" of lit-html data-structures might look like this:\n *\n *  ChildPart(N1) _$dC=[D2,T3]\n *   ._directive\n *     AsyncDirective(D2)\n *   ._value // user value was TemplateResult\n *     TemplateInstance(T3) _$dC=[A4,A6,N10,N12]\n *      ._parts[]\n *        AttributePart(A4) _$dC=[D5]\n *         ._directives[]\n *           AsyncDirective(D5)\n *        AttributePart(A6) _$dC=[D7,D8]\n *         ._directives[]\n *           AsyncDirective(D7)\n *           Directive(D8) _$dC=[D9]\n *            ._directive\n *              AsyncDirective(D9)\n *        ChildPart(N10) _$dC=[D11]\n *         ._directive\n *           AsyncDirective(D11)\n *         ._value\n *           string\n *        ChildPart(N12) _$dC=[D13,N14,N16]\n *         ._directive\n *           AsyncDirective(D13)\n *         ._value // user value was iterable\n *           Array<ChildPart>\n *             ChildPart(N14) _$dC=[D15]\n *              ._value\n *                string\n *             ChildPart(N16) _$dC=[D17,T18]\n *              ._directive\n *                AsyncDirective(D17)\n *              ._value // user value was TemplateResult\n *                TemplateInstance(T18) _$dC=[A19,A21,N25]\n *                 ._parts[]\n *                   AttributePart(A19) _$dC=[D20]\n *                    ._directives[]\n *                      AsyncDirective(D20)\n *                   AttributePart(A21) _$dC=[22,23]\n *                    ._directives[]\n *                      AsyncDirective(D22)\n *                      Directive(D23) _$dC=[D24]\n *                       ._directive\n *                         AsyncDirective(D24)\n *                   ChildPart(N25) _$dC=[D26]\n *                    ._directive\n *                      AsyncDirective(D26)\n *                    ._value\n *                      string\n *\n * Example 1: The directive in ChildPart(N12) updates and returns `nothing`. The\n * ChildPart will _clear() itself, and so we need to disconnect the \"value\" of\n * the ChildPart (but not its directive). In this case, when `_clear()` calls\n * `_$notifyConnectionChanged()`, we don't iterate all of the\n * _$disconnectableChildren, rather we do a value-specific disconnection: i.e.\n * since the _value was an Array<ChildPart> (because an iterable had been\n * committed), we iterate the array of ChildParts (N14, N16) and run\n * `setConnected` on them (which does recurse down the full tree of\n * `_$disconnectableChildren` below it, and also removes N14 and N16 from N12's\n * `_$disconnectableChildren`). Once the values have been disconnected, we then\n * check whether the ChildPart(N12)'s list of `_$disconnectableChildren` is empty\n * (and would remove it from its parent TemplateInstance(T3) if so), but since\n * it would still contain its directive D13, it stays in the disconnectable\n * tree.\n *\n * Example 2: In the course of Example 1, `setConnected` will reach\n * ChildPart(N16); in this case the entire part is being disconnected, so we\n * simply iterate all of N16's `_$disconnectableChildren` (D17,T18) and\n * recursively run `setConnected` on them. Note that we only remove children\n * from `_$disconnectableChildren` for the top-level values being disconnected\n * on a clear; doing this bookkeeping lower in the tree is wasteful since it's\n * all being thrown away.\n *\n * Example 3: If the LitElement containing the entire tree above becomes\n * disconnected, it will run `childPart.setConnected()` (which calls\n * `childPart._$notifyConnectionChanged()` if it exists); in this case, we\n * recursively run `setConnected()` over the entire tree, without removing any\n * children from `_$disconnectableChildren`, since this tree is required to\n * re-connect the tree, which does the same operation, simply passing\n * `isConnected: true` down the tree, signaling which callback to run.\n */\n\nimport {AttributePart, ChildPart, Disconnectable, Part} from './lit-html.js';\nimport {isSingleExpression} from './directive-helpers.js';\nimport {Directive, PartInfo, PartType} from './directive.js';\nexport * from './directive.js';\n\nconst DEV_MODE = true;\n\n/**\n * Recursively walks down the tree of Parts/TemplateInstances/Directives to set\n * the connected state of directives and run `disconnected`/ `reconnected`\n * callbacks.\n *\n * @return True if there were children to disconnect; false otherwise\n */\nconst notifyChildrenConnectedChanged = (\n  parent: Disconnectable,\n  isConnected: boolean\n): boolean => {\n  const children = parent._$disconnectableChildren;\n  if (children === undefined) {\n    return false;\n  }\n  for (const obj of children) {\n    // The existence of `_$notifyDirectiveConnectionChanged` is used as a \"brand\" to\n    // disambiguate AsyncDirectives from other DisconnectableChildren\n    // (as opposed to using an instanceof check to know when to call it); the\n    // redundancy of \"Directive\" in the API name is to avoid conflicting with\n    // `_$notifyConnectionChanged`, which exists `ChildParts` which are also in\n    // this list\n    // Disconnect Directive (and any nested directives contained within)\n    // This property needs to remain unminified.\n    (obj as AsyncDirective)['_$notifyDirectiveConnectionChanged']?.(\n      isConnected,\n      false\n    );\n    // Disconnect Part/TemplateInstance\n    notifyChildrenConnectedChanged(obj, isConnected);\n  }\n  return true;\n};\n\n/**\n * Removes the given child from its parent list of disconnectable children, and\n * if the parent list becomes empty as a result, removes the parent from its\n * parent, and so forth up the tree when that causes subsequent parent lists to\n * become empty.\n */\nconst removeDisconnectableFromParent = (obj: Disconnectable) => {\n  let parent, children;\n  do {\n    if ((parent = obj._$parent) === undefined) {\n      break;\n    }\n    children = parent._$disconnectableChildren!;\n    children.delete(obj);\n    obj = parent;\n  } while (children?.size === 0);\n};\n\nconst addDisconnectableToParent = (obj: Disconnectable) => {\n  // Climb the parent tree, creating a sparse tree of children needing\n  // disconnection\n  for (let parent; (parent = obj._$parent); obj = parent) {\n    let children = parent._$disconnectableChildren;\n    if (children === undefined) {\n      parent._$disconnectableChildren = children = new Set();\n    } else if (children.has(obj)) {\n      // Once we've reached a parent that already contains this child, we\n      // can short-circuit\n      break;\n    }\n    children.add(obj);\n    installDisconnectAPI(parent);\n  }\n};\n\n/**\n * Changes the parent reference of the ChildPart, and updates the sparse tree of\n * Disconnectable children accordingly.\n *\n * Note, this method will be patched onto ChildPart instances and called from\n * the core code when parts are moved between different parents.\n */\nfunction reparentDisconnectables(this: ChildPart, newParent: Disconnectable) {\n  if (this._$disconnectableChildren !== undefined) {\n    removeDisconnectableFromParent(this);\n    this._$parent = newParent;\n    addDisconnectableToParent(this);\n  } else {\n    this._$parent = newParent;\n  }\n}\n\n/**\n * Sets the connected state on any directives contained within the committed\n * value of this part (i.e. within a TemplateInstance or iterable of\n * ChildParts) and runs their `disconnected`/`reconnected`s, as well as within\n * any directives stored on the ChildPart (when `valueOnly` is false).\n *\n * `isClearingValue` should be passed as `true` on a top-level part that is\n * clearing itself, and not as a result of recursively disconnecting directives\n * as part of a `clear` operation higher up the tree. This both ensures that any\n * directive on this ChildPart that produced a value that caused the clear\n * operation is not disconnected, and also serves as a performance optimization\n * to avoid needless bookkeeping when a subtree is going away; when clearing a\n * subtree, only the top-most part need to remove itself from the parent.\n *\n * `fromPartIndex` is passed only in the case of a partial `_clear` running as a\n * result of truncating an iterable.\n *\n * Note, this method will be patched onto ChildPart instances and called from the\n * core code when parts are cleared or the connection state is changed by the\n * user.\n */\nfunction notifyChildPartConnectedChanged(\n  this: ChildPart,\n  isConnected: boolean,\n  isClearingValue = false,\n  fromPartIndex = 0\n) {\n  const value = this._$committedValue;\n  const children = this._$disconnectableChildren;\n  if (children === undefined || children.size === 0) {\n    return;\n  }\n  if (isClearingValue) {\n    if (Array.isArray(value)) {\n      // Iterable case: Any ChildParts created by the iterable should be\n      // disconnected and removed from this ChildPart's disconnectable\n      // children (starting at `fromPartIndex` in the case of truncation)\n      for (let i = fromPartIndex; i < value.length; i++) {\n        notifyChildrenConnectedChanged(value[i], false);\n        removeDisconnectableFromParent(value[i]);\n      }\n    } else if (value != null) {\n      // TemplateInstance case: If the value has disconnectable children (will\n      // only be in the case that it is a TemplateInstance), we disconnect it\n      // and remove it from this ChildPart's disconnectable children\n      notifyChildrenConnectedChanged(value as Disconnectable, false);\n      removeDisconnectableFromParent(value as Disconnectable);\n    }\n  } else {\n    notifyChildrenConnectedChanged(this, isConnected);\n  }\n}\n\n/**\n * Patches disconnection API onto ChildParts.\n */\nconst installDisconnectAPI = (obj: Disconnectable) => {\n  if ((obj as ChildPart).type == PartType.CHILD) {\n    (obj as ChildPart)._$notifyConnectionChanged ??=\n      notifyChildPartConnectedChanged;\n    (obj as ChildPart)._$reparentDisconnectables ??= reparentDisconnectables;\n  }\n};\n\n/**\n * An abstract `Directive` base class whose `disconnected` method will be\n * called when the part containing the directive is cleared as a result of\n * re-rendering, or when the user calls `part.setConnected(false)` on\n * a part that was previously rendered containing the directive (as happens\n * when e.g. a LitElement disconnects from the DOM).\n *\n * If `part.setConnected(true)` is subsequently called on a\n * containing part, the directive's `reconnected` method will be called prior\n * to its next `update`/`render` callbacks. When implementing `disconnected`,\n * `reconnected` should also be implemented to be compatible with reconnection.\n *\n * Note that updates may occur while the directive is disconnected. As such,\n * directives should generally check the `this.isConnected` flag during\n * render/update to determine whether it is safe to subscribe to resources\n * that may prevent garbage collection.\n */\nexport abstract class AsyncDirective extends Directive {\n  // As opposed to other Disconnectables, AsyncDirectives always get notified\n  // when the RootPart connection changes, so the public `isConnected`\n  // is a locally stored variable initialized via its part's getter and synced\n  // via `_$notifyDirectiveConnectionChanged`. This is cheaper than using\n  // the _$isConnected getter, which has to look back up the tree each time.\n  /**\n   * The connection state for this Directive.\n   */\n  isConnected!: boolean;\n\n  // @internal\n  override _$disconnectableChildren?: Set<Disconnectable> = undefined;\n  /**\n   * Initialize the part with internal fields\n   * @param part\n   * @param parent\n   * @param attributeIndex\n   */\n  override _$initialize(\n    part: Part,\n    parent: Disconnectable,\n    attributeIndex: number | undefined\n  ) {\n    super._$initialize(part, parent, attributeIndex);\n    addDisconnectableToParent(this);\n    this.isConnected = part._$isConnected;\n  }\n  // This property needs to remain unminified.\n  /**\n   * Called from the core code when a directive is going away from a part (in\n   * which case `shouldRemoveFromParent` should be true), and from the\n   * `setChildrenConnected` helper function when recursively changing the\n   * connection state of a tree (in which case `shouldRemoveFromParent` should\n   * be false).\n   *\n   * @param isConnected\n   * @param isClearingDirective - True when the directive itself is being\n   *     removed; false when the tree is being disconnected\n   * @internal\n   */\n  override ['_$notifyDirectiveConnectionChanged'](\n    isConnected: boolean,\n    isClearingDirective = true\n  ) {\n    if (isConnected !== this.isConnected) {\n      this.isConnected = isConnected;\n      if (isConnected) {\n        this.reconnected?.();\n      } else {\n        this.disconnected?.();\n      }\n    }\n    if (isClearingDirective) {\n      notifyChildrenConnectedChanged(this, isConnected);\n      removeDisconnectableFromParent(this);\n    }\n  }\n\n  /**\n   * Sets the value of the directive's Part outside the normal `update`/`render`\n   * lifecycle of a directive.\n   *\n   * This method should not be called synchronously from a directive's `update`\n   * or `render`.\n   *\n   * @param directive The directive to update\n   * @param value The value to set\n   */\n  setValue(value: unknown) {\n    if (isSingleExpression(this.__part as unknown as PartInfo)) {\n      this.__part._$setValue(value, this);\n    } else {\n      // this.__attributeIndex will be defined in this case, but\n      // assert it in dev mode\n      if (DEV_MODE && this.__attributeIndex === undefined) {\n        throw new Error(`Expected this.__attributeIndex to be a number`);\n      }\n      const newValues = [...(this.__part._$committedValue as Array<unknown>)];\n      newValues[this.__attributeIndex!] = value;\n      (this.__part as AttributePart)._$setValue(newValues, this, 0);\n    }\n  }\n\n  /**\n   * User callbacks for implementing logic to release any resources/subscriptions\n   * that may have been retained by this directive. Since directives may also be\n   * re-connected, `reconnected` should also be implemented to restore the\n   * working state of the directive prior to the next render.\n   */\n  protected disconnected() {}\n  protected reconnected() {}\n}\n", "/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport {nothing, ElementPart} from '../lit-html.js';\nimport {directive, AsyncDirective} from '../async-directive.js';\n\n/**\n * Creates a new Ref object, which is container for a reference to an element.\n */\nexport const createRef = <T = Element>() => new Ref<T>();\n\n/**\n * An object that holds a ref value.\n */\nclass Ref<T = Element> {\n  /**\n   * The current Element value of the ref, or else `undefined` if the ref is no\n   * longer rendered.\n   */\n  readonly value?: T;\n}\n\nexport type {Ref};\n\ninterface RefInternal {\n  value: Element | undefined;\n}\n\n// When callbacks are used for refs, this map tracks the last value the callback\n// was called with, for ensuring a directive doesn't clear the ref if the ref\n// has already been rendered to a new spot. It is double-keyed on both the\n// context (`options.host`) and the callback, since we auto-bind class methods\n// to `options.host`.\nconst lastElementForContextAndCallback: WeakMap<\n  object,\n  WeakMap<Function, Element | undefined>\n> = new WeakMap();\n\nexport type RefOrCallback = Ref | ((el: Element | undefined) => void);\n\nclass RefDirective extends AsyncDirective {\n  private _element?: Element;\n  private _ref?: RefOrCallback;\n  private _context?: object;\n\n  render(_ref: RefOrCallback) {\n    return nothing;\n  }\n\n  override update(part: ElementPart, [ref]: Parameters<this['render']>) {\n    const refChanged = ref !== this._ref;\n    if (refChanged && this._ref !== undefined) {\n      // The ref passed to the directive has changed;\n      // unset the previous ref's value\n      this._updateRefValue(undefined);\n    }\n    if (refChanged || this._lastElementForRef !== this._element) {\n      // We either got a new ref or this is the first render;\n      // store the ref/element & update the ref value\n      this._ref = ref;\n      this._context = part.options?.host;\n      this._updateRefValue((this._element = part.element));\n    }\n    return nothing;\n  }\n\n  private _updateRefValue(element: Element | undefined) {\n    if (typeof this._ref === 'function') {\n      // If the current ref was called with a previous value, call with\n      // `undefined`; We do this to ensure callbacks are called in a consistent\n      // way regardless of whether a ref might be moving up in the tree (in\n      // which case it would otherwise be called with the new value before the\n      // previous one unsets it) and down in the tree (where it would be unset\n      // before being set). Note that element lookup is keyed by\n      // both the context and the callback, since we allow passing unbound\n      // functions that are called on options.host, and we want to treat\n      // these as unique \"instances\" of a function.\n      const context = this._context ?? globalThis;\n      let lastElementForCallback =\n        lastElementForContextAndCallback.get(context);\n      if (lastElementForCallback === undefined) {\n        lastElementForCallback = new WeakMap();\n        lastElementForContextAndCallback.set(context, lastElementForCallback);\n      }\n      if (lastElementForCallback.get(this._ref) !== undefined) {\n        this._ref.call(this._context, undefined);\n      }\n      lastElementForCallback.set(this._ref, element);\n      // Call the ref with the new element value\n      if (element !== undefined) {\n        this._ref.call(this._context, element);\n      }\n    } else {\n      (this._ref as RefInternal)!.value = element;\n    }\n  }\n\n  private get _lastElementForRef() {\n    return typeof this._ref === 'function'\n      ? lastElementForContextAndCallback\n          .get(this._context ?? globalThis)\n          ?.get(this._ref)\n      : this._ref?.value;\n  }\n\n  override disconnected() {\n    // Only clear the box if our element is still the one in it (i.e. another\n    // directive instance hasn't rendered its element to it before us); that\n    // only happens in the event of the directive being cleared (not via manual\n    // disconnection)\n    if (this._lastElementForRef === this._element) {\n      this._updateRefValue(undefined);\n    }\n  }\n\n  override reconnected() {\n    // If we were manually disconnected, we can safely put our element back in\n    // the box, since no rendering could have occurred to change its state\n    this._updateRefValue(this._element);\n  }\n}\n\n/**\n * Sets the value of a Ref object or calls a ref callback with the element it's\n * bound to.\n *\n * A Ref object acts as a container for a reference to an element. A ref\n * callback is a function that takes an element as its only argument.\n *\n * The ref directive sets the value of the Ref object or calls the ref callback\n * during rendering, if the referenced element changed.\n *\n * Note: If a ref callback is rendered to a different element position or is\n * removed in a subsequent render, it will first be called with `undefined`,\n * followed by another call with the new element it was rendered to (if any).\n *\n * ```js\n * // Using Ref object\n * const inputRef = createRef();\n * render(html`<input ${ref(inputRef)}>`, container);\n * inputRef.value.focus();\n *\n * // Using callback\n * const callback = (inputElement) => inputElement.focus();\n * render(html`<input ${ref(callback)}>`, container);\n * ```\n */\nexport const ref = directive(RefDirective);\n\n/**\n * The type of the class that powers this directive. Necessary for naming the\n * directive's return type.\n */\nexport type {RefDirective};\n", "/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {AttributePart, noChange} from '../lit-html.js';\nimport {\n  directive,\n  Directive,\n  DirectiveParameters,\n  PartInfo,\n  PartType,\n} from '../directive.js';\n\n/**\n * A key-value set of class names to truthy values.\n */\nexport interface ClassInfo {\n  readonly [name: string]: string | boolean | number;\n}\n\nclass ClassMapDirective extends Directive {\n  /**\n   * Stores the ClassInfo object applied to a given AttributePart.\n   * Used to unset existing values when a new ClassInfo object is applied.\n   */\n  private _previousClasses?: Set<string>;\n  private _staticClasses?: Set<string>;\n\n  constructor(partInfo: PartInfo) {\n    super(partInfo);\n    if (\n      partInfo.type !== PartType.ATTRIBUTE ||\n      partInfo.name !== 'class' ||\n      (partInfo.strings?.length as number) > 2\n    ) {\n      throw new Error(\n        '`classMap()` can only be used in the `class` attribute ' +\n          'and must be the only part in the attribute.'\n      );\n    }\n  }\n\n  render(classInfo: ClassInfo) {\n    // Add spaces to ensure separation from static classes\n    return (\n      ' ' +\n      Object.keys(classInfo)\n        .filter((key) => classInfo[key])\n        .join(' ') +\n      ' '\n    );\n  }\n\n  override update(part: AttributePart, [classInfo]: DirectiveParameters<this>) {\n    // Remember dynamic classes on the first render\n    if (this._previousClasses === undefined) {\n      this._previousClasses = new Set();\n      if (part.strings !== undefined) {\n        this._staticClasses = new Set(\n          part.strings\n            .join(' ')\n            .split(/\\s/)\n            .filter((s) => s !== '')\n        );\n      }\n      for (const name in classInfo) {\n        if (classInfo[name] && !this._staticClasses?.has(name)) {\n          this._previousClasses.add(name);\n        }\n      }\n      return this.render(classInfo);\n    }\n\n    const classList = part.element.classList;\n\n    // Remove old classes that no longer apply\n    // We use forEach() instead of for-of so that we don't require down-level\n    // iteration.\n    this._previousClasses.forEach((name) => {\n      if (!(name in classInfo)) {\n        classList.remove(name);\n        this._previousClasses!.delete(name);\n      }\n    });\n\n    // Add or remove classes based on their classMap value\n    for (const name in classInfo) {\n      // We explicitly want a loose truthy check of `value` because it seems\n      // more convenient that '' and 0 are skipped.\n      const value = !!classInfo[name];\n      if (\n        value !== this._previousClasses.has(name) &&\n        !this._staticClasses?.has(name)\n      ) {\n        if (value) {\n          classList.add(name);\n          this._previousClasses.add(name);\n        } else {\n          classList.remove(name);\n          this._previousClasses.delete(name);\n        }\n      }\n    }\n    return noChange;\n  }\n}\n\n/**\n * A directive that applies dynamic CSS classes.\n *\n * This must be used in the `class` attribute and must be the only part used in\n * the attribute. It takes each property in the `classInfo` argument and adds\n * the property name to the element's `classList` if the property value is\n * truthy; if the property value is falsey, the property name is removed from\n * the element's `class`.\n *\n * For example `{foo: bar}` applies the class `foo` if the value of `bar` is\n * truthy.\n *\n * @param classInfo\n */\nexport const classMap = directive(ClassMapDirective);\n\n/**\n * The type of the class that powers this directive. Necessary for naming the\n * directive's return type.\n */\nexport type {ClassMapDirective};\n", "/**! \n * hotkeys-js v3.8.9 \n * A simple micro-library for defining and dispatching keyboard shortcuts. It has no dependencies. \n * \n * Copyright (c) 2022 kenny wong <wowohoo@qq.com> \n * http://jaywcjlove.github.io/hotkeys \n * Licensed under the MIT license \n */\n\nvar isff = typeof navigator !== 'undefined' ? navigator.userAgent.toLowerCase().indexOf('firefox') > 0 : false; // \u7ED1\u5B9A\u4E8B\u4EF6\n\nfunction addEvent(object, event, method) {\n  if (object.addEventListener) {\n    object.addEventListener(event, method, false);\n  } else if (object.attachEvent) {\n    object.attachEvent(\"on\".concat(event), function () {\n      method(window.event);\n    });\n  }\n} // \u4FEE\u9970\u952E\u8F6C\u6362\u6210\u5BF9\u5E94\u7684\u952E\u7801\n\n\nfunction getMods(modifier, key) {\n  var mods = key.slice(0, key.length - 1);\n\n  for (var i = 0; i < mods.length; i++) {\n    mods[i] = modifier[mods[i].toLowerCase()];\n  }\n\n  return mods;\n} // \u5904\u7406\u4F20\u7684key\u5B57\u7B26\u4E32\u8F6C\u6362\u6210\u6570\u7EC4\n\n\nfunction getKeys(key) {\n  if (typeof key !== 'string') key = '';\n  key = key.replace(/\\s/g, ''); // \u5339\u914D\u4EFB\u4F55\u7A7A\u767D\u5B57\u7B26,\u5305\u62EC\u7A7A\u683C\u3001\u5236\u8868\u7B26\u3001\u6362\u9875\u7B26\u7B49\u7B49\n\n  var keys = key.split(','); // \u540C\u65F6\u8BBE\u7F6E\u591A\u4E2A\u5FEB\u6377\u952E\uFF0C\u4EE5','\u5206\u5272\n\n  var index = keys.lastIndexOf(''); // \u5FEB\u6377\u952E\u53EF\u80FD\u5305\u542B','\uFF0C\u9700\u7279\u6B8A\u5904\u7406\n\n  for (; index >= 0;) {\n    keys[index - 1] += ',';\n    keys.splice(index, 1);\n    index = keys.lastIndexOf('');\n  }\n\n  return keys;\n} // \u6BD4\u8F83\u4FEE\u9970\u952E\u7684\u6570\u7EC4\n\n\nfunction compareArray(a1, a2) {\n  var arr1 = a1.length >= a2.length ? a1 : a2;\n  var arr2 = a1.length >= a2.length ? a2 : a1;\n  var isIndex = true;\n\n  for (var i = 0; i < arr1.length; i++) {\n    if (arr2.indexOf(arr1[i]) === -1) isIndex = false;\n  }\n\n  return isIndex;\n}\n\nvar _keyMap = {\n  backspace: 8,\n  tab: 9,\n  clear: 12,\n  enter: 13,\n  return: 13,\n  esc: 27,\n  escape: 27,\n  space: 32,\n  left: 37,\n  up: 38,\n  right: 39,\n  down: 40,\n  del: 46,\n  delete: 46,\n  ins: 45,\n  insert: 45,\n  home: 36,\n  end: 35,\n  pageup: 33,\n  pagedown: 34,\n  capslock: 20,\n  num_0: 96,\n  num_1: 97,\n  num_2: 98,\n  num_3: 99,\n  num_4: 100,\n  num_5: 101,\n  num_6: 102,\n  num_7: 103,\n  num_8: 104,\n  num_9: 105,\n  num_multiply: 106,\n  num_add: 107,\n  num_enter: 108,\n  num_subtract: 109,\n  num_decimal: 110,\n  num_divide: 111,\n  '\u21EA': 20,\n  ',': 188,\n  '.': 190,\n  '/': 191,\n  '`': 192,\n  '-': isff ? 173 : 189,\n  '=': isff ? 61 : 187,\n  ';': isff ? 59 : 186,\n  '\\'': 222,\n  '[': 219,\n  ']': 221,\n  '\\\\': 220\n}; // Modifier Keys\n\nvar _modifier = {\n  // shiftKey\n  '\u21E7': 16,\n  shift: 16,\n  // altKey\n  '\u2325': 18,\n  alt: 18,\n  option: 18,\n  // ctrlKey\n  '\u2303': 17,\n  ctrl: 17,\n  control: 17,\n  // metaKey\n  '\u2318': 91,\n  cmd: 91,\n  command: 91\n};\nvar modifierMap = {\n  16: 'shiftKey',\n  18: 'altKey',\n  17: 'ctrlKey',\n  91: 'metaKey',\n  shiftKey: 16,\n  ctrlKey: 17,\n  altKey: 18,\n  metaKey: 91\n};\nvar _mods = {\n  16: false,\n  18: false,\n  17: false,\n  91: false\n};\nvar _handlers = {}; // F1~F12 special key\n\nfor (var k = 1; k < 20; k++) {\n  _keyMap[\"f\".concat(k)] = 111 + k;\n}\n\nvar _downKeys = []; // \u8BB0\u5F55\u6441\u4E0B\u7684\u7ED1\u5B9A\u952E\n\nvar winListendFocus = false; // window\u662F\u5426\u5DF2\u7ECF\u76D1\u542C\u4E86focus\u4E8B\u4EF6\n\nvar _scope = 'all'; // \u9ED8\u8BA4\u70ED\u952E\u8303\u56F4\n\nvar elementHasBindEvent = []; // \u5DF2\u7ED1\u5B9A\u4E8B\u4EF6\u7684\u8282\u70B9\u8BB0\u5F55\n// \u8FD4\u56DE\u952E\u7801\n\nvar code = function code(x) {\n  return _keyMap[x.toLowerCase()] || _modifier[x.toLowerCase()] || x.toUpperCase().charCodeAt(0);\n}; // \u8BBE\u7F6E\u83B7\u53D6\u5F53\u524D\u8303\u56F4\uFF08\u9ED8\u8BA4\u4E3A'\u6240\u6709'\uFF09\n\n\nfunction setScope(scope) {\n  _scope = scope || 'all';\n} // \u83B7\u53D6\u5F53\u524D\u8303\u56F4\n\n\nfunction getScope() {\n  return _scope || 'all';\n} // \u83B7\u53D6\u6441\u4E0B\u7ED1\u5B9A\u952E\u7684\u952E\u503C\n\n\nfunction getPressedKeyCodes() {\n  return _downKeys.slice(0);\n} // \u8868\u5355\u63A7\u4EF6\u63A7\u4EF6\u5224\u65AD \u8FD4\u56DE Boolean\n// hotkey is effective only when filter return true\n\n\nfunction filter(event) {\n  var target = event.target || event.srcElement;\n  var tagName = target.tagName;\n  var flag = true; // ignore: isContentEditable === 'true', <input> and <textarea> when readOnly state is false, <select>\n\n  if (target.isContentEditable || (tagName === 'INPUT' || tagName === 'TEXTAREA' || tagName === 'SELECT') && !target.readOnly) {\n    flag = false;\n  }\n\n  return flag;\n} // \u5224\u65AD\u6441\u4E0B\u7684\u952E\u662F\u5426\u4E3A\u67D0\u4E2A\u952E\uFF0C\u8FD4\u56DEtrue\u6216\u8005false\n\n\nfunction isPressed(keyCode) {\n  if (typeof keyCode === 'string') {\n    keyCode = code(keyCode); // \u8F6C\u6362\u6210\u952E\u7801\n  }\n\n  return _downKeys.indexOf(keyCode) !== -1;\n} // \u5FAA\u73AF\u5220\u9664handlers\u4E2D\u7684\u6240\u6709 scope(\u8303\u56F4)\n\n\nfunction deleteScope(scope, newScope) {\n  var handlers;\n  var i; // \u6CA1\u6709\u6307\u5B9Ascope\uFF0C\u83B7\u53D6scope\n\n  if (!scope) scope = getScope();\n\n  for (var key in _handlers) {\n    if (Object.prototype.hasOwnProperty.call(_handlers, key)) {\n      handlers = _handlers[key];\n\n      for (i = 0; i < handlers.length;) {\n        if (handlers[i].scope === scope) handlers.splice(i, 1);else i++;\n      }\n    }\n  } // \u5982\u679Cscope\u88AB\u5220\u9664\uFF0C\u5C06scope\u91CD\u7F6E\u4E3Aall\n\n\n  if (getScope() === scope) setScope(newScope || 'all');\n} // \u6E05\u9664\u4FEE\u9970\u952E\n\n\nfunction clearModifier(event) {\n  var key = event.keyCode || event.which || event.charCode;\n\n  var i = _downKeys.indexOf(key); // \u4ECE\u5217\u8868\u4E2D\u6E05\u9664\u6309\u538B\u8FC7\u7684\u952E\n\n\n  if (i >= 0) {\n    _downKeys.splice(i, 1);\n  } // \u7279\u6B8A\u5904\u7406 cmmand \u952E\uFF0C\u5728 cmmand \u7EC4\u5408\u5FEB\u6377\u952E keyup \u53EA\u6267\u884C\u4E00\u6B21\u7684\u95EE\u9898\n\n\n  if (event.key && event.key.toLowerCase() === 'meta') {\n    _downKeys.splice(0, _downKeys.length);\n  } // \u4FEE\u9970\u952E shiftKey altKey ctrlKey (command||metaKey) \u6E05\u9664\n\n\n  if (key === 93 || key === 224) key = 91;\n\n  if (key in _mods) {\n    _mods[key] = false; // \u5C06\u4FEE\u9970\u952E\u91CD\u7F6E\u4E3Afalse\n\n    for (var k in _modifier) {\n      if (_modifier[k] === key) hotkeys[k] = false;\n    }\n  }\n}\n\nfunction unbind(keysInfo) {\n  // unbind(), unbind all keys\n  if (!keysInfo) {\n    Object.keys(_handlers).forEach(function (key) {\n      return delete _handlers[key];\n    });\n  } else if (Array.isArray(keysInfo)) {\n    // support like : unbind([{key: 'ctrl+a', scope: 's1'}, {key: 'ctrl-a', scope: 's2', splitKey: '-'}])\n    keysInfo.forEach(function (info) {\n      if (info.key) eachUnbind(info);\n    });\n  } else if (typeof keysInfo === 'object') {\n    // support like unbind({key: 'ctrl+a, ctrl+b', scope:'abc'})\n    if (keysInfo.key) eachUnbind(keysInfo);\n  } else if (typeof keysInfo === 'string') {\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    // support old method\n    // eslint-disable-line\n    var scope = args[0],\n        method = args[1];\n\n    if (typeof scope === 'function') {\n      method = scope;\n      scope = '';\n    }\n\n    eachUnbind({\n      key: keysInfo,\n      scope: scope,\n      method: method,\n      splitKey: '+'\n    });\n  }\n} // \u89E3\u9664\u7ED1\u5B9A\u67D0\u4E2A\u8303\u56F4\u7684\u5FEB\u6377\u952E\n\n\nvar eachUnbind = function eachUnbind(_ref) {\n  var key = _ref.key,\n      scope = _ref.scope,\n      method = _ref.method,\n      _ref$splitKey = _ref.splitKey,\n      splitKey = _ref$splitKey === void 0 ? '+' : _ref$splitKey;\n  var multipleKeys = getKeys(key);\n  multipleKeys.forEach(function (originKey) {\n    var unbindKeys = originKey.split(splitKey);\n    var len = unbindKeys.length;\n    var lastKey = unbindKeys[len - 1];\n    var keyCode = lastKey === '*' ? '*' : code(lastKey);\n    if (!_handlers[keyCode]) return; // \u5224\u65AD\u662F\u5426\u4F20\u5165\u8303\u56F4\uFF0C\u6CA1\u6709\u5C31\u83B7\u53D6\u8303\u56F4\n\n    if (!scope) scope = getScope();\n    var mods = len > 1 ? getMods(_modifier, unbindKeys) : [];\n    _handlers[keyCode] = _handlers[keyCode].filter(function (record) {\n      // \u901A\u8FC7\u51FD\u6570\u5224\u65AD\uFF0C\u662F\u5426\u89E3\u9664\u7ED1\u5B9A\uFF0C\u51FD\u6570\u76F8\u7B49\u76F4\u63A5\u8FD4\u56DE\n      var isMatchingMethod = method ? record.method === method : true;\n      return !(isMatchingMethod && record.scope === scope && compareArray(record.mods, mods));\n    });\n  });\n}; // \u5BF9\u76D1\u542C\u5BF9\u5E94\u5FEB\u6377\u952E\u7684\u56DE\u8C03\u51FD\u6570\u8FDB\u884C\u5904\u7406\n\n\nfunction eventHandler(event, handler, scope, element) {\n  if (handler.element !== element) {\n    return;\n  }\n\n  var modifiersMatch; // \u770B\u5B83\u662F\u5426\u5728\u5F53\u524D\u8303\u56F4\n\n  if (handler.scope === scope || handler.scope === 'all') {\n    // \u68C0\u67E5\u662F\u5426\u5339\u914D\u4FEE\u9970\u7B26\uFF08\u5982\u679C\u6709\u8FD4\u56DEtrue\uFF09\n    modifiersMatch = handler.mods.length > 0;\n\n    for (var y in _mods) {\n      if (Object.prototype.hasOwnProperty.call(_mods, y)) {\n        if (!_mods[y] && handler.mods.indexOf(+y) > -1 || _mods[y] && handler.mods.indexOf(+y) === -1) {\n          modifiersMatch = false;\n        }\n      }\n    } // \u8C03\u7528\u5904\u7406\u7A0B\u5E8F\uFF0C\u5982\u679C\u662F\u4FEE\u9970\u952E\u4E0D\u505A\u5904\u7406\n\n\n    if (handler.mods.length === 0 && !_mods[16] && !_mods[18] && !_mods[17] && !_mods[91] || modifiersMatch || handler.shortcut === '*') {\n      if (handler.method(event, handler) === false) {\n        if (event.preventDefault) event.preventDefault();else event.returnValue = false;\n        if (event.stopPropagation) event.stopPropagation();\n        if (event.cancelBubble) event.cancelBubble = true;\n      }\n    }\n  }\n} // \u5904\u7406keydown\u4E8B\u4EF6\n\n\nfunction dispatch(event, element) {\n  var asterisk = _handlers['*'];\n  var key = event.keyCode || event.which || event.charCode; // \u8868\u5355\u63A7\u4EF6\u8FC7\u6EE4 \u9ED8\u8BA4\u8868\u5355\u63A7\u4EF6\u4E0D\u89E6\u53D1\u5FEB\u6377\u952E\n\n  if (!hotkeys.filter.call(this, event)) return; // Gecko(Firefox)\u7684command\u952E\u503C224\uFF0C\u5728Webkit(Chrome)\u4E2D\u4FDD\u6301\u4E00\u81F4\n  // Webkit\u5DE6\u53F3 command \u952E\u503C\u4E0D\u4E00\u6837\n\n  if (key === 93 || key === 224) key = 91;\n  /**\n   * Collect bound keys\n   * If an Input Method Editor is processing key input and the event is keydown, return 229.\n   * https://stackoverflow.com/questions/25043934/is-it-ok-to-ignore-keydown-events-with-keycode-229\n   * http://lists.w3.org/Archives/Public/www-dom/2010JulSep/att-0182/keyCode-spec.html\n   */\n\n  if (_downKeys.indexOf(key) === -1 && key !== 229) _downKeys.push(key);\n  /**\n   * Jest test cases are required.\n   * ===============================\n   */\n\n  ['ctrlKey', 'altKey', 'shiftKey', 'metaKey'].forEach(function (keyName) {\n    var keyNum = modifierMap[keyName];\n\n    if (event[keyName] && _downKeys.indexOf(keyNum) === -1) {\n      _downKeys.push(keyNum);\n    } else if (!event[keyName] && _downKeys.indexOf(keyNum) > -1) {\n      _downKeys.splice(_downKeys.indexOf(keyNum), 1);\n    } else if (keyName === 'metaKey' && event[keyName] && _downKeys.length === 3) {\n      /**\n       * Fix if Command is pressed:\n       * ===============================\n       */\n      if (!(event.ctrlKey || event.shiftKey || event.altKey)) {\n        _downKeys = _downKeys.slice(_downKeys.indexOf(keyNum));\n      }\n    }\n  });\n  /**\n   * -------------------------------\n   */\n\n  if (key in _mods) {\n    _mods[key] = true; // \u5C06\u7279\u6B8A\u5B57\u7B26\u7684key\u6CE8\u518C\u5230 hotkeys \u4E0A\n\n    for (var k in _modifier) {\n      if (_modifier[k] === key) hotkeys[k] = true;\n    }\n\n    if (!asterisk) return;\n  } // \u5C06 modifierMap \u91CC\u9762\u7684\u4FEE\u9970\u952E\u7ED1\u5B9A\u5230 event \u4E2D\n\n\n  for (var e in _mods) {\n    if (Object.prototype.hasOwnProperty.call(_mods, e)) {\n      _mods[e] = event[modifierMap[e]];\n    }\n  }\n  /**\n   * https://github.com/jaywcjlove/hotkeys/pull/129\n   * This solves the issue in Firefox on Windows where hotkeys corresponding to special characters would not trigger.\n   * An example of this is ctrl+alt+m on a Swedish keyboard which is used to type \u03BC.\n   * Browser support: https://caniuse.com/#feat=keyboardevent-getmodifierstate\n   */\n\n\n  if (event.getModifierState && !(event.altKey && !event.ctrlKey) && event.getModifierState('AltGraph')) {\n    if (_downKeys.indexOf(17) === -1) {\n      _downKeys.push(17);\n    }\n\n    if (_downKeys.indexOf(18) === -1) {\n      _downKeys.push(18);\n    }\n\n    _mods[17] = true;\n    _mods[18] = true;\n  } // \u83B7\u53D6\u8303\u56F4 \u9ED8\u8BA4\u4E3A `all`\n\n\n  var scope = getScope(); // \u5BF9\u4EFB\u4F55\u5FEB\u6377\u952E\u90FD\u9700\u8981\u505A\u7684\u5904\u7406\n\n  if (asterisk) {\n    for (var i = 0; i < asterisk.length; i++) {\n      if (asterisk[i].scope === scope && (event.type === 'keydown' && asterisk[i].keydown || event.type === 'keyup' && asterisk[i].keyup)) {\n        eventHandler(event, asterisk[i], scope, element);\n      }\n    }\n  } // key \u4E0D\u5728 _handlers \u4E2D\u8FD4\u56DE\n\n\n  if (!(key in _handlers)) return;\n\n  for (var _i = 0; _i < _handlers[key].length; _i++) {\n    if (event.type === 'keydown' && _handlers[key][_i].keydown || event.type === 'keyup' && _handlers[key][_i].keyup) {\n      if (_handlers[key][_i].key) {\n        var record = _handlers[key][_i];\n        var splitKey = record.splitKey;\n        var keyShortcut = record.key.split(splitKey);\n        var _downKeysCurrent = []; // \u8BB0\u5F55\u5F53\u524D\u6309\u952E\u952E\u503C\n\n        for (var a = 0; a < keyShortcut.length; a++) {\n          _downKeysCurrent.push(code(keyShortcut[a]));\n        }\n\n        if (_downKeysCurrent.sort().join('') === _downKeys.sort().join('')) {\n          // \u627E\u5230\u5904\u7406\u5185\u5BB9\n          eventHandler(event, record, scope, element);\n        }\n      }\n    }\n  }\n} // \u5224\u65AD element \u662F\u5426\u5DF2\u7ECF\u7ED1\u5B9A\u4E8B\u4EF6\n\n\nfunction isElementBind(element) {\n  return elementHasBindEvent.indexOf(element) > -1;\n}\n\nfunction hotkeys(key, option, method) {\n  _downKeys = [];\n  var keys = getKeys(key); // \u9700\u8981\u5904\u7406\u7684\u5FEB\u6377\u952E\u5217\u8868\n\n  var mods = [];\n  var scope = 'all'; // scope\u9ED8\u8BA4\u4E3Aall\uFF0C\u6240\u6709\u8303\u56F4\u90FD\u6709\u6548\n\n  var element = document; // \u5FEB\u6377\u952E\u4E8B\u4EF6\u7ED1\u5B9A\u8282\u70B9\n\n  var i = 0;\n  var keyup = false;\n  var keydown = true;\n  var splitKey = '+'; // \u5BF9\u4E3A\u8BBE\u5B9A\u8303\u56F4\u7684\u5224\u65AD\n\n  if (method === undefined && typeof option === 'function') {\n    method = option;\n  }\n\n  if (Object.prototype.toString.call(option) === '[object Object]') {\n    if (option.scope) scope = option.scope; // eslint-disable-line\n\n    if (option.element) element = option.element; // eslint-disable-line\n\n    if (option.keyup) keyup = option.keyup; // eslint-disable-line\n\n    if (option.keydown !== undefined) keydown = option.keydown; // eslint-disable-line\n\n    if (typeof option.splitKey === 'string') splitKey = option.splitKey; // eslint-disable-line\n  }\n\n  if (typeof option === 'string') scope = option; // \u5BF9\u4E8E\u6BCF\u4E2A\u5FEB\u6377\u952E\u8FDB\u884C\u5904\u7406\n\n  for (; i < keys.length; i++) {\n    key = keys[i].split(splitKey); // \u6309\u952E\u5217\u8868\n\n    mods = []; // \u5982\u679C\u662F\u7EC4\u5408\u5FEB\u6377\u952E\u53D6\u5F97\u7EC4\u5408\u5FEB\u6377\u952E\n\n    if (key.length > 1) mods = getMods(_modifier, key); // \u5C06\u975E\u4FEE\u9970\u952E\u8F6C\u5316\u4E3A\u952E\u7801\n\n    key = key[key.length - 1];\n    key = key === '*' ? '*' : code(key); // *\u8868\u793A\u5339\u914D\u6240\u6709\u5FEB\u6377\u952E\n    // \u5224\u65ADkey\u662F\u5426\u5728_handlers\u4E2D\uFF0C\u4E0D\u5728\u5C31\u8D4B\u4E00\u4E2A\u7A7A\u6570\u7EC4\n\n    if (!(key in _handlers)) _handlers[key] = [];\n\n    _handlers[key].push({\n      keyup: keyup,\n      keydown: keydown,\n      scope: scope,\n      mods: mods,\n      shortcut: keys[i],\n      method: method,\n      key: keys[i],\n      splitKey: splitKey,\n      element: element\n    });\n  } // \u5728\u5168\u5C40document\u4E0A\u8BBE\u7F6E\u5FEB\u6377\u952E\n\n\n  if (typeof element !== 'undefined' && !isElementBind(element) && window) {\n    elementHasBindEvent.push(element);\n    addEvent(element, 'keydown', function (e) {\n      dispatch(e, element);\n    });\n\n    if (!winListendFocus) {\n      winListendFocus = true;\n      addEvent(window, 'focus', function () {\n        _downKeys = [];\n      });\n    }\n\n    addEvent(element, 'keyup', function (e) {\n      dispatch(e, element);\n      clearModifier(e);\n    });\n  }\n}\n\nvar _api = {\n  setScope: setScope,\n  getScope: getScope,\n  deleteScope: deleteScope,\n  getPressedKeyCodes: getPressedKeyCodes,\n  isPressed: isPressed,\n  filter: filter,\n  unbind: unbind\n};\n\nfor (var a in _api) {\n  if (Object.prototype.hasOwnProperty.call(_api, a)) {\n    hotkeys[a] = _api[a];\n  }\n}\n\nif (typeof window !== 'undefined') {\n  var _hotkeys = window.hotkeys;\n\n  hotkeys.noConflict = function (deep) {\n    if (deep && window.hotkeys === hotkeys) {\n      window.hotkeys = _hotkeys;\n    }\n\n    return hotkeys;\n  };\n\n  window.hotkeys = hotkeys;\n}\n\nexport { hotkeys as default };\n", "import {LitElement, html, css, TemplateResult} from 'lit';\nimport {customElement, property} from 'lit/decorators.js';\nimport {ref, createRef} from 'lit/directives/ref.js';\n\n@customElement('ninja-header')\nexport class NinjaHeader extends LitElement {\n  static override styles = css`\n    :host {\n      flex: 1;\n      position: relative;\n    }\n    .search {\n      padding: 1.25em;\n      flex-grow: 1;\n      flex-shrink: 0;\n      margin: 0px;\n      border: none;\n      appearance: none;\n      font-size: 1.125em;\n      background: transparent;\n      caret-color: var(--ninja-accent-color);\n      color: var(--ninja-text-color);\n      outline: none;\n      font-family: var(--ninja-font-family);\n    }\n    .search::placeholder {\n      color: var(--ninja-placeholder-color);\n    }\n    .breadcrumb-list {\n      padding: 1em 4em 0 1em;\n      display: flex;\n      flex-direction: row;\n      align-items: stretch;\n      justify-content: flex-start;\n      flex: initial;\n    }\n\n    .breadcrumb {\n      background: var(--ninja-secondary-background-color);\n      text-align: center;\n      line-height: 1.2em;\n      border-radius: var(--ninja-key-border-radius);\n      border: 0;\n      cursor: pointer;\n      padding: 0.1em 0.5em;\n      color: var(--ninja-secondary-text-color);\n      margin-right: 0.5em;\n      outline: none;\n      font-family: var(--ninja-font-family);\n    }\n\n    .search-wrapper {\n      display: flex;\n      border-bottom: var(--ninja-separate-border);\n    }\n  `;\n\n  @property()\n  placeholder = '';\n\n  @property({type: Boolean})\n  hideBreadcrumbs = false;\n\n  @property()\n  breadcrumbHome = 'Home';\n\n  @property({type: Array})\n  breadcrumbs: string[] = [];\n\n  private _inputRef = createRef<HTMLInputElement>();\n\n  override render() {\n    let breadcrumbs: TemplateResult<1> | '' = '';\n    if (!this.hideBreadcrumbs) {\n      const itemTemplates = [];\n      for (const breadcrumb of this.breadcrumbs) {\n        itemTemplates.push(\n          html`<button\n            tabindex=\"-1\"\n            @click=${() => this.selectParent(breadcrumb)}\n            class=\"breadcrumb\"\n          >\n            ${breadcrumb}\n          </button>`\n        );\n      }\n      breadcrumbs = html`<div class=\"breadcrumb-list\">\n        <button\n          tabindex=\"-1\"\n          @click=${() => this.selectParent()}\n          class=\"breadcrumb\"\n        >\n          ${this.breadcrumbHome}\n        </button>\n        ${itemTemplates}\n      </div>`;\n    }\n\n    return html`\n      ${breadcrumbs}\n      <div part=\"ninja-input-wrapper\" class=\"search-wrapper\">\n        <input\n          part=\"ninja-input\"\n          type=\"text\"\n          id=\"search\"\n          spellcheck=\"false\"\n          autocomplete=\"off\"\n          @input=\"${this._handleInput}\"\n          ${ref(this._inputRef)}\n          placeholder=\"${this.placeholder}\"\n          class=\"search\"\n        />\n      </div>\n    `;\n  }\n\n  setSearch(value: string) {\n    if (this._inputRef.value) {\n      this._inputRef.value.value = value;\n    }\n  }\n\n  focusSearch() {\n    requestAnimationFrame(() => this._inputRef.value!.focus());\n  }\n\n  private _handleInput(event: Event) {\n    const input = event.target as HTMLInputElement;\n    this.dispatchEvent(\n      new CustomEvent('change', {\n        detail: {search: input.value},\n        bubbles: false,\n        composed: false,\n      })\n    );\n  }\n\n  private selectParent(breadcrumb?: string) {\n    this.dispatchEvent(\n      new CustomEvent('setParent', {\n        detail: {parent: breadcrumb},\n        bubbles: true,\n        composed: true,\n      })\n    );\n  }\n\n  override firstUpdated() {\n    this.focusSearch();\n  }\n\n  _close() {\n    this.dispatchEvent(\n      new CustomEvent('close', {bubbles: true, composed: true})\n    );\n  }\n}\n\ndeclare global {\n  interface HTMLElementTagNameMap {\n    'ninja-header': NinjaHeader;\n  }\n}\n", "/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {nothing, TemplateResult, noChange} from '../lit-html.js';\nimport {directive, Directive, PartInfo, PartType} from '../directive.js';\n\nconst HTML_RESULT = 1;\n\nexport class UnsafeHTMLDirective extends Directive {\n  static directiveName = 'unsafeHTML';\n  static resultType = HTML_RESULT;\n\n  private _value: unknown = nothing;\n  private _templateResult?: TemplateResult;\n\n  constructor(partInfo: PartInfo) {\n    super(partInfo);\n    if (partInfo.type !== PartType.CHILD) {\n      throw new Error(\n        `${\n          (this.constructor as typeof UnsafeHTMLDirective).directiveName\n        }() can only be used in child bindings`\n      );\n    }\n  }\n\n  render(value: string | typeof nothing | typeof noChange | undefined | null) {\n    if (value === nothing || value == null) {\n      this._templateResult = undefined;\n      return (this._value = value);\n    }\n    if (value === noChange) {\n      return value;\n    }\n    if (typeof value != 'string') {\n      throw new Error(\n        `${\n          (this.constructor as typeof UnsafeHTMLDirective).directiveName\n        }() called with a non-string value`\n      );\n    }\n    if (value === this._value) {\n      return this._templateResult;\n    }\n    this._value = value;\n    const strings = [value] as unknown as TemplateStringsArray;\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    (strings as any).raw = strings;\n    // WARNING: impersonating a TemplateResult like this is extremely\n    // dangerous. Third-party directives should not do this.\n    return (this._templateResult = {\n      // Cast to a known set of integers that satisfy ResultType so that we\n      // don't have to export ResultType and possibly encourage this pattern.\n      // This property needs to remain unminified.\n      ['_$litType$']: (this.constructor as typeof UnsafeHTMLDirective)\n        .resultType as 1 | 2,\n      strings,\n      values: [],\n    });\n  }\n}\n\n/**\n * Renders the result as HTML, rather than text.\n *\n * The values `undefined`, `null`, and `nothing`, will all result in no content\n * (empty string) being rendered.\n *\n * Note, this is unsafe to use with any user-provided input that hasn't been\n * sanitized or escaped, as it may lead to cross-site-scripting\n * vulnerabilities.\n */\nexport const unsafeHTML = directive(UnsafeHTMLDirective);\n", "import tslib from '../tslib.js';\r\nconst {\r\n    __extends,\r\n    __assign,\r\n    __rest,\r\n    __decorate,\r\n    __param,\r\n    __esDecorate,\r\n    __runInitializers,\r\n    __propKey,\r\n    __setFunctionName,\r\n    __metadata,\r\n    __awaiter,\r\n    __generator,\r\n    __exportStar,\r\n    __createBinding,\r\n    __values,\r\n    __read,\r\n    __spread,\r\n    __spreadArrays,\r\n    __spreadArray,\r\n    __await,\r\n    __asyncGenerator,\r\n    __asyncDelegator,\r\n    __asyncValues,\r\n    __makeTemplateObject,\r\n    __importStar,\r\n    __importDefault,\r\n    __classPrivateFieldGet,\r\n    __classPrivateFieldSet,\r\n    __classPrivateFieldIn,\r\n} = tslib;\r\nexport {\r\n    __extends,\r\n    __assign,\r\n    __rest,\r\n    __decorate,\r\n    __param,\r\n    __esDecorate,\r\n    __runInitializers,\r\n    __propKey,\r\n    __setFunctionName,\r\n    __metadata,\r\n    __awaiter,\r\n    __generator,\r\n    __exportStar,\r\n    __createBinding,\r\n    __values,\r\n    __read,\r\n    __spread,\r\n    __spreadArrays,\r\n    __spreadArray,\r\n    __await,\r\n    __asyncGenerator,\r\n    __asyncDelegator,\r\n    __asyncValues,\r\n    __makeTemplateObject,\r\n    __importStar,\r\n    __importDefault,\r\n    __classPrivateFieldGet,\r\n    __classPrivateFieldSet,\r\n    __classPrivateFieldIn,\r\n};\r\n", "/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-LIcense-Identifier: Apache-2.0\n */\nimport {css} from 'lit';\nexport const styles = css`:host{font-family:var(--mdc-icon-font, \"Material Icons\");font-weight:normal;font-style:normal;font-size:var(--mdc-icon-size, 24px);line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:\"liga\"}`;\n", "/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// Style preference for leading underscores.\n// tslint:disable:strip-private-property-underscore\n\nimport {html, LitElement, TemplateResult} from 'lit';\nimport {customElement} from 'lit/decorators.js';\n\nimport {styles} from './mwc-icon-host.css';\n\n/** @soyCompatible */\n@customElement('mwc-icon')\nexport class Icon extends LitElement {\n  static override styles = [styles];\n\n  /** @soyTemplate */\n  protected override render(): TemplateResult {\n    return html`<span><slot></slot></span>`;\n  }\n}\n\ndeclare global {\n  interface HTMLElementTagNameMap {\n    'mwc-icon': Icon;\n  }\n}\n", "import {LitElement, html, css, } from 'lit';\nimport {customElement, property} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {unsafeHTML} from 'lit/directives/unsafe-html.js';\nimport '@material/mwc-icon';\n\nimport {INinjaAction} from './interfaces/ininja-action.js';\n\n\n@customElement('ninja-action')\nexport class NinjaAction extends LitElement {\n  static override styles = css`\n    :host {\n      display: flex;\n      width: 100%;\n    }\n    .ninja-action {\n      padding: 0.75em 1em;\n      display: flex;\n      border-left: 2px solid transparent;\n      align-items: center;\n      justify-content: start;\n      outline: none;\n      transition: color 0s ease 0s;\n      width: 100%;\n    }\n    .ninja-action.selected {\n      cursor: pointer;\n      color: var(--ninja-selected-text-color);\n      background-color: var(--ninja-selected-background);\n      border-left: 2px solid var(--ninja-accent-color);\n      outline: none;\n    }\n    .ninja-action.selected .ninja-icon {\n      color: var(--ninja-selected-text-color);\n    }\n    .ninja-icon {\n      font-size: var(--ninja-icon-size);\n      max-width: var(--ninja-icon-size);\n      max-height: var(--ninja-icon-size);\n      margin-right: 1em;\n      color: var(--ninja-icon-color);\n      margin-right: 1em;\n      position: relative;\n    }\n\n    .ninja-title {\n      flex-shrink: 0.01;\n      margin-right: 0.5em;\n      flex-grow: 1;\n      font-size: 0.8125em;\n      white-space: nowrap;\n      overflow: hidden;\n      text-overflow: ellipsis;\n    }\n    .ninja-hotkeys {\n      margin-left: 0.5em;\n      flex-shrink: 0;\n      width: min-content;\n    }\n\n    .ninja-hotkey {\n      background: var(--ninja-secondary-background-color);\n      padding: 0.06em 0.25em;\n      border-radius: var(--ninja-key-border-radius);\n      text-transform: capitalize;\n      color: var(--ninja-secondary-text-color);\n      font-size: 0.75em;\n      margin-left: 0.5em;\n    }\n  `;\n\n  @property({type: Object})\n  action!: INinjaAction;\n\n  @property({type: Boolean})\n  selected = false;\n\n  /**\n   * Display hotkey as separate buttons on UI or as is\n   */\n  @property({type: Boolean})\n  hotKeysJoinedView = false;\n\n  /**\n   * Scroll to show element\n   */\n  ensureInView() {\n    requestAnimationFrame(() => this.scrollIntoView({block: 'nearest'}));\n  }\n\n  override click() {\n    this.dispatchEvent(\n      new CustomEvent('actionsSelected', {\n        detail: this.action,\n        bubbles: true,\n        composed: true,\n      })\n    );\n  }\n\n  constructor() {\n    super();\n    this.addEventListener('click', this.click);\n  }\n\n  override updated(changedProperties: Map<string, unknown>) {\n    if (changedProperties.has('selected')) {\n      if (this.selected) {\n        this.ensureInView();\n      }\n    }\n  }\n\n  override render() {\n    let icon;\n    if (this.action.mdIcon){\n      icon = html`<mwc-icon part=\"ninja-icon\" class=\"ninja-icon\">${this.action.mdIcon}</mwc-icon>`\n    } else if (this.action.icon){\n      icon = unsafeHTML(this.action.icon || '');\n    }\n\n    // const hotkey = this.action.hotkey\n    //   ? html`<div class=\"ninja-hotkey\">${this.action.hotkey}</div>`\n    //   : '';\n    let hotkey;\n    if (this.action.hotkey) {\n      if (this.hotKeysJoinedView) {\n        hotkey = html`<div class=\"ninja-hotkey\">${this.action.hotkey}</div>`;\n      } else {\n        hotkey = this.action.hotkey\n          .split('+')\n          .map((key) => html`<div class=\"ninja-hotkey\">${key}</div>`);\n      }\n    }\n\n    const classes = {\n      selected: this.selected,\n      'ninja-action': true,\n    };\n\n    return html`\n      <div class=\"ninja-action\" part=\"ninja-action ${this.selected ? 'ninja-selected' : ''}\" class=${classMap(classes)}>\n        ${icon}\n        <div class=\"ninja-title\">${this.action.title}</div>\n        ${hotkey}\n      </div>\n    `;\n  }\n}\n\ndeclare global {\n  interface HTMLElementTagNameMap {\n    'ninja-action': NinjaAction;\n  }\n}\n", "import {html} from 'lit';\n\nexport const footerHtml = html` <div class=\"modal-footer\" slot=\"footer\">\n  <span class=\"help\">\n    <svg\n      version=\"1.0\"\n      class=\"ninja-examplekey\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      viewBox=\"0 0 1280 1280\"\n    >\n      <path\n        d=\"M1013 376c0 73.4-.4 113.3-1.1 120.2a159.9 159.9 0 0 1-90.2 127.3c-20 9.6-36.7 14-59.2 15.5-7.1.5-121.9.9-255 1h-242l95.5-95.5 95.5-95.5-38.3-38.2-38.2-38.3-160 160c-88 88-160 160.4-160 161 0 .6 72 73 160 161l160 160 38.2-38.3 38.3-38.2-95.5-95.5-95.5-95.5h251.1c252.9 0 259.8-.1 281.4-3.6 72.1-11.8 136.9-54.1 178.5-116.4 8.6-12.9 22.6-40.5 28-55.4 4.4-12 10.7-36.1 13.1-50.6 1.6-9.6 1.8-21 2.1-132.8l.4-122.2H1013v110z\"\n      />\n    </svg>\n\n    to select\n  </span>\n  <span class=\"help\">\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      class=\"ninja-examplekey\"\n      viewBox=\"0 0 24 24\"\n    >\n      <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n      <path\n        d=\"M20 12l-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8 8-8z\"\n      />\n    </svg>\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      class=\"ninja-examplekey\"\n      viewBox=\"0 0 24 24\"\n    >\n      <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n      <path d=\"M4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z\" />\n    </svg>\n    to navigate\n  </span>\n  <span class=\"help\">\n    <span class=\"ninja-examplekey esc\">esc</span>\n    to close\n  </span>\n  <span class=\"help\">\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      class=\"ninja-examplekey backspace\"\n      viewBox=\"0 0 20 20\"\n      fill=\"currentColor\"\n    >\n      <path\n        fill-rule=\"evenodd\"\n        d=\"M6.707 4.879A3 3 0 018.828 4H15a3 3 0 013 3v6a3 3 0 01-3 3H8.828a3 3 0 01-2.12-.879l-4.415-4.414a1 1 0 010-1.414l4.414-4.414zm4 2.414a1 1 0 00-1.414 1.414L10.586 10l-1.293 1.293a1 1 0 101.414 1.414L12 11.414l1.293 1.293a1 1 0 001.414-1.414L13.414 10l1.293-1.293a1 1 0 00-1.414-1.414L12 8.586l-1.293-1.293z\"\n        clip-rule=\"evenodd\"\n      />\n    </svg>\n    move to parent\n  </span>\n</div>`;\n", "import {css} from 'lit';\n\nexport const baseStyles = css`\n  :host {\n    --ninja-width: 640px;\n    --ninja-backdrop-filter: none;\n    --ninja-overflow-background: rgba(255, 255, 255, 0.5);\n    --ninja-text-color: rgb(60, 65, 73);\n    --ninja-font-size: 16px;\n    --ninja-top: 20%;\n\n    --ninja-key-border-radius: 0.25em;\n    --ninja-accent-color: rgb(110, 94, 210);\n    --ninja-secondary-background-color: rgb(239, 241, 244);\n    --ninja-secondary-text-color: rgb(107, 111, 118);\n\n    --ninja-selected-background: rgb(248, 249, 251);\n\n    --ninja-icon-color: var(--ninja-secondary-text-color);\n    --ninja-icon-size: 1.2em;\n    --ninja-separate-border: 1px solid var(--ninja-secondary-background-color);\n\n    --ninja-modal-background: #fff;\n    --ninja-modal-shadow: rgb(0 0 0 / 50%) 0px 16px 70px;\n\n    --ninja-actions-height: 300px;\n    --ninja-group-text-color: rgb(144, 149, 157);\n\n    --ninja-footer-background: rgba(242, 242, 242, 0.4);\n\n    --ninja-placeholder-color: #8e8e8e;\n\n    font-size: var(--ninja-font-size);\n\n    --ninja-z-index: 1;\n  }\n\n  :host(.dark) {\n    --ninja-backdrop-filter: none;\n    --ninja-overflow-background: rgba(0, 0, 0, 0.7);\n    --ninja-text-color: #7d7d7d;\n\n    --ninja-modal-background: rgba(17, 17, 17, 0.85);\n    --ninja-accent-color: rgb(110, 94, 210);\n    --ninja-secondary-background-color: rgba(51, 51, 51, 0.44);\n    --ninja-secondary-text-color: #888;\n\n    --ninja-selected-text-color: #eaeaea;\n    --ninja-selected-background: rgba(51, 51, 51, 0.44);\n\n    --ninja-icon-color: var(--ninja-secondary-text-color);\n    --ninja-separate-border: 1px solid var(--ninja-secondary-background-color);\n\n    --ninja-modal-shadow: 0 16px 70px rgba(0, 0, 0, 0.2);\n\n    --ninja-group-text-color: rgb(144, 149, 157);\n\n    --ninja-footer-background: rgba(30, 30, 30, 85%);\n  }\n\n  .modal {\n    display: none;\n    position: fixed;\n    z-index: var(--ninja-z-index);\n    left: 0;\n    top: 0;\n    width: 100%;\n    height: 100%;\n    overflow: auto;\n    background: var(--ninja-overflow-background);\n    -webkit-font-smoothing: antialiased;\n    -moz-osx-font-smoothing: grayscale;\n    -webkit-backdrop-filter: var(--ninja-backdrop-filter);\n    backdrop-filter: var(--ninja-backdrop-filter);\n    text-align: left;\n    color: var(--ninja-text-color);\n    font-family: var(--ninja-font-family);\n  }\n  .modal.visible {\n    display: block;\n  }\n\n  .modal-content {\n    position: relative;\n    top: var(--ninja-top);\n    margin: auto;\n    padding: 0;\n    display: flex;\n    flex-direction: column;\n    flex-shrink: 1;\n    -webkit-box-flex: 1;\n    flex-grow: 1;\n    min-width: 0px;\n    will-change: transform;\n    background: var(--ninja-modal-background);\n    border-radius: 0.5em;\n    box-shadow: var(--ninja-modal-shadow);\n    max-width: var(--ninja-width);\n    overflow: hidden;\n  }\n\n  .bump {\n    animation: zoom-in-zoom-out 0.2s ease;\n  }\n\n  @keyframes zoom-in-zoom-out {\n    0% {\n      transform: scale(0.99);\n    }\n    50% {\n      transform: scale(1.01, 1.01);\n    }\n    100% {\n      transform: scale(1, 1);\n    }\n  }\n\n  .ninja-github {\n    color: var(--ninja-keys-text-color);\n    font-weight: normal;\n    text-decoration: none;\n  }\n\n  .actions-list {\n    max-height: var(--ninja-actions-height);\n    overflow: auto;\n    scroll-behavior: smooth;\n    position: relative;\n    margin: 0;\n    padding: 0.5em 0;\n    list-style: none;\n    scroll-behavior: smooth;\n  }\n\n  .group-header {\n    height: 1.375em;\n    line-height: 1.375em;\n    padding-left: 1.25em;\n    padding-top: 0.5em;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n    overflow: hidden;\n    font-size: 0.75em;\n    line-height: 1em;\n    color: var(--ninja-group-text-color);\n    margin: 1px 0;\n  }\n\n  .modal-footer {\n    background: var(--ninja-footer-background);\n    padding: 0.5em 1em;\n    display: flex;\n    /* font-size: 0.75em; */\n    border-top: var(--ninja-separate-border);\n    color: var(--ninja-secondary-text-color);\n  }\n\n  .modal-footer .help {\n    display: flex;\n    margin-right: 1em;\n    align-items: center;\n    font-size: 0.75em;\n  }\n\n  .ninja-examplekey {\n    background: var(--ninja-secondary-background-color);\n    padding: 0.06em 0.25em;\n    border-radius: var(--ninja-key-border-radius);\n    color: var(--ninja-secondary-text-color);\n    width: 1em;\n    height: 1em;\n    margin-right: 0.5em;\n    font-size: 1.25em;\n    fill: currentColor;\n  }\n  .ninja-examplekey.esc {\n    width: auto;\n    height: auto;\n    font-size: 1.1em;\n  }\n  .ninja-examplekey.backspace {\n    opacity: 0.7;\n  }\n`;\n", "import {LitElement, html, TemplateResult, PropertyValues} from 'lit';\nimport {customElement, property, state} from 'lit/decorators.js';\nimport {repeat} from 'lit/directives/repeat.js';\nimport {live} from 'lit/directives/live.js';\nimport {createRef, ref} from 'lit-html/directives/ref.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport hotkeys from 'hotkeys-js';\n\nimport './ninja-header.js';\nimport './ninja-action.js';\nimport {INinjaAction} from './interfaces/ininja-action.js';\nimport {NinjaHeader} from './ninja-header.js';\nimport {NinjaAction} from './ninja-action.js';\nimport {footerHtml} from './ninja-footer.js';\nimport {baseStyles} from './base-styles.js';\n\n@customElement('ninja-keys')\nexport class NinjaKeys extends LitElement {\n  static override styles = [baseStyles];\n\n  /**\n   * Search placeholder text\n   */\n  @property({type: String}) placeholder = 'Type a command or search...';\n\n  /**\n   * If true will register all hotkey for all actions\n   */\n  @property({type: Boolean}) disableHotkeys = false;\n\n  /**\n   * Show or hide breadcrumbs on header\n   */\n  @property({type: Boolean}) hideBreadcrumbs = false;\n\n  /**\n   * Open or hide shorcut\n   */\n  @property() openHotkey = 'cmd+k,ctrl+k';\n\n  /**\n   * Navigation Up hotkey\n   */\n  @property() navigationUpHotkey = 'up,shift+tab';\n\n  /**\n   * Navigation Down hotkey\n   */\n  @property() navigationDownHotkey = 'down,tab';\n\n  /**\n   * Close hotkey\n   */\n  @property() closeHotkey = 'esc';\n\n  /**\n   * Go back on one level if has parent menu\n   */\n  @property() goBackHotkey = 'backspace';\n\n  /**\n   * Select action and execute handler or open submenu\n   */\n  @property() selectHotkey = 'enter'; // enter,space\n\n  /**\n   * Show or hide breadcrumbs on header\n   */\n  @property({type: Boolean}) hotKeysJoinedView = false;\n\n  /**\n   * Disable load material icons font on connect\n   * If you use custom icons.\n   * Set this attribute to prevent load default icons font\n   */\n  @property({type: Boolean}) noAutoLoadMdIcons = false;\n\n  /**\n   * Array of actions\n   */\n  @property({\n    type: Array,\n    hasChanged() {\n      // Forced to trigger changed event always.\n      // Because of a lot of framework pattern wrap object with an Observer, like vue2.\n      // That's why object passed to web component always same and no render triggered. Issue #9\n      return true;\n    },\n  })\n  data = [] as Array<INinjaAction>;\n\n  /**\n   * Public methods\n   */\n\n  /**\n   * Show a modal\n   */\n  open(options: {parent?: string} = {}) {\n    this._bump = true;\n    this.visible = true;\n    this._headerRef.value!.focusSearch();\n    if (this._actionMatches.length > 0) {\n      this._selected = this._actionMatches[0];\n    }\n    this.setParent(options.parent);\n  }\n\n  /**\n   * Close modal\n   */\n  close() {\n    this._bump = false;\n    this.visible = false;\n  }\n\n  /**\n   * Navigate to group of actions\n   * @param parent id of parent group/action\n   */\n  setParent(parent?: string) {\n    if (!parent) {\n      this._currentRoot = undefined;\n      // this.breadcrumbs = [];\n    } else {\n      this._currentRoot = parent;\n    }\n    this._selected = undefined;\n    this._search = '';\n    this._headerRef.value!.setSearch('');\n  }\n\n  /**\n   * Show or hide element\n   */\n  @state() visible = false;\n  /**\n   * Temproray used for animation effect. TODO: change to animate logic\n   */\n  @state()\n  private _bump = true;\n\n  @state()\n  private _actionMatches = [] as Array<INinjaAction>;\n\n  @state()\n  private _search = '';\n\n  @state()\n  private _currentRoot?: string;\n\n  /**\n   * Array of actions in flat structure\n   */\n  @state() _flatData = [] as Array<INinjaAction>;\n\n  @state()\n  private get breadcrumbs() {\n    const path: string[] = [];\n    let parentAction = this._selected?.parent;\n    if (parentAction) {\n      path.push(parentAction);\n      while (parentAction) {\n        const action = this._flatData.find((a) => a.id === parentAction);\n        if (action?.parent) {\n          path.push(action.parent);\n        }\n        parentAction = action ? action.parent : undefined;\n      }\n    }\n    return path.reverse();\n  }\n\n  @state()\n  private _selected?: INinjaAction;\n\n  override connectedCallback() {\n    super.connectedCallback();\n\n    if (!this.noAutoLoadMdIcons) {\n      document.fonts.load('24px Material Icons', 'apps').then(() => {});\n    }\n\n    this._registerInternalHotkeys();\n  }\n\n  override disconnectedCallback() {\n    super.disconnectedCallback();\n    this._unregisterInternalHotkeys();\n  }\n\n  private _flattern(members: INinjaAction[], parent?: string): INinjaAction[] {\n    let children = [] as Array<any>;\n    if (!members) {\n      members = [];\n    }\n    return members\n      .map((mem) => {\n        const alreadyFlatternByUser =\n          mem.children &&\n          mem.children.some((value: any) => {\n            return typeof value == 'string';\n          });\n        const m = {...mem, parent: mem.parent || parent};\n        if (alreadyFlatternByUser) {\n          return m;\n        } else {\n          if (m.children && m.children.length) {\n            parent = mem.id;\n            children = [...children, ...m.children];\n          }\n          m.children = m.children ? m.children.map((c: any) => c.id) : [];\n          return m;\n        }\n      })\n      .concat(children.length ? this._flattern(children, parent) : children);\n  }\n\n  override update(changedProperties: PropertyValues<this>) {\n    if (changedProperties.has('data') && !this.disableHotkeys) {\n      this._flatData = this._flattern(this.data);\n\n      this._flatData\n        .filter((action) => !!action.hotkey)\n        .forEach((action) => {\n          hotkeys(action.hotkey!, (event) => {\n            event.preventDefault();\n            if (action.handler) {\n              action.handler(action);\n            }\n          });\n        });\n    }\n    super.update(changedProperties);\n  }\n\n  private _registerInternalHotkeys() {\n    if (this.openHotkey) {\n      hotkeys(this.openHotkey, (event) => {\n        event.preventDefault();\n        this.visible ? this.close() : this.open();\n      });\n    }\n\n    if (this.selectHotkey) {\n      hotkeys(this.selectHotkey, (event) => {\n        if (!this.visible) {\n          return;\n        }\n        event.preventDefault();\n        this._actionSelected(this._actionMatches[this._selectedIndex]);\n      });\n    }\n\n    if (this.goBackHotkey) {\n      hotkeys(this.goBackHotkey, (event) => {\n        if (!this.visible) {\n          return;\n        }\n        if (!this._search) {\n          event.preventDefault();\n          this._goBack();\n        }\n      });\n    }\n\n    if (this.navigationDownHotkey) {\n      hotkeys(this.navigationDownHotkey, (event) => {\n        if (!this.visible) {\n          return;\n        }\n        event.preventDefault();\n        if (this._selectedIndex >= this._actionMatches.length - 1) {\n          this._selected = this._actionMatches[0];\n        } else {\n          this._selected = this._actionMatches[this._selectedIndex + 1];\n        }\n      });\n    }\n\n    if (this.navigationUpHotkey) {\n      hotkeys(this.navigationUpHotkey, (event) => {\n        if (!this.visible) {\n          return;\n        }\n        event.preventDefault();\n        if (this._selectedIndex === 0) {\n          this._selected = this._actionMatches[this._actionMatches.length - 1];\n        } else {\n          this._selected = this._actionMatches[this._selectedIndex - 1];\n        }\n      });\n    }\n\n    if (this.closeHotkey) {\n      hotkeys(this.closeHotkey, () => {\n        if (!this.visible) {\n          return;\n        }\n        this.close();\n      });\n    }\n  }\n\n  private _unregisterInternalHotkeys() {\n    if (this.openHotkey) {\n      hotkeys.unbind(this.openHotkey)\n    }\n\n    if (this.selectHotkey) {\n      hotkeys.unbind(this.selectHotkey)\n    }\n\n    if (this.goBackHotkey) {\n      hotkeys.unbind(this.goBackHotkey)\n    }\n\n    if (this.navigationDownHotkey) {\n      hotkeys.unbind(this.navigationDownHotkey)\n    }\n\n    if (this.navigationUpHotkey) {\n      hotkeys.unbind(this.navigationUpHotkey)\n    }\n\n    if (this.closeHotkey) {\n      hotkeys.unbind(this.closeHotkey)\n    }\n  }\n\n\n  private _actionFocused(index: INinjaAction, $event: MouseEvent) {\n    // this.selectedIndex = index;\n    this._selected = index;\n    ($event.target as NinjaAction).ensureInView();\n  }\n\n  private _onTransitionEnd() {\n    this._bump = false;\n  }\n\n  private _goBack() {\n    const parent =\n      this.breadcrumbs.length > 1\n        ? this.breadcrumbs[this.breadcrumbs.length - 2]\n        : undefined;\n    this.setParent(parent);\n  }\n\n  private _headerRef = createRef<NinjaHeader>();\n\n  override render() {\n    const classes = {\n      bump: this._bump,\n      'modal-content': true,\n    };\n\n    const menuClasses = {\n      visible: this.visible,\n      modal: true,\n    };\n\n    const actionMatches = this._flatData.filter((action) => {\n      const regex = new RegExp(this._search, 'gi');\n      const matcher =\n        action.title.match(regex) || action.keywords?.match(regex);\n\n      if (!this._currentRoot && this._search) {\n        // global search for items on root\n        return matcher;\n      }\n\n      return action.parent === this._currentRoot && matcher;\n    });\n\n    const sections = actionMatches.reduce(\n      (entryMap, e) =>\n        entryMap.set(e.section, [...(entryMap.get(e.section) || []), e]),\n      new Map()\n    );\n\n    this._actionMatches = [...sections.values()].flat();\n\n    if (this._actionMatches.length > 0 && this._selectedIndex === -1) {\n      this._selected = this._actionMatches[0];\n    }\n    if (this._actionMatches.length === 0) {\n      this._selected = undefined;\n    }\n\n    const actionsList = (actions: INinjaAction[]) =>\n      html` ${repeat(\n        actions,\n        (action) => action.id,\n        (action) =>\n          html`<ninja-action\n            exportparts=\"ninja-action,ninja-selected,ninja-icon\"\n            .selected=${live(action.id === this._selected?.id)}\n            .hotKeysJoinedView=${this.hotKeysJoinedView}\n            @mouseover=${(event: MouseEvent) =>\n              this._actionFocused(action, event)}\n            @actionsSelected=${(event: CustomEvent<INinjaAction>) =>\n              this._actionSelected(event.detail)}\n            .action=${action}\n          ></ninja-action>`\n      )}`;\n\n    const itemTemplates: TemplateResult[] = [];\n    sections.forEach((actions, section) => {\n      const header = section\n        ? html`<div class=\"group-header\">${section}</div>`\n        : undefined;\n      itemTemplates.push(html`${header}${actionsList(actions)}`);\n    });\n\n    return html`\n      <div @click=${this._overlayClick} class=${classMap(menuClasses)}>\n        <div class=${classMap(classes)} @animationend=${this._onTransitionEnd}>\n          <ninja-header\n            exportparts=\"ninja-input,ninja-input-wrapper\"\n            ${ref(this._headerRef)}\n            .placeholder=${this.placeholder}\n            .hideBreadcrumbs=${this.hideBreadcrumbs}\n            .breadcrumbs=${this.breadcrumbs}\n            @change=${this._handleInput}\n            @setParent=${(event: CustomEvent<INinjaAction>) =>\n              this.setParent(event.detail.parent)}\n            @close=${this.close}\n          >\n          </ninja-header>\n          <div class=\"modal-body\">\n            <div class=\"actions-list\" part=\"actions-list\">${itemTemplates}</div>\n          </div>\n          <slot name=\"footer\"> ${footerHtml} </slot>\n        </div>\n      </div>\n    `;\n  }\n\n  private get _selectedIndex(): number {\n    if (!this._selected) {\n      return -1;\n    }\n    return this._actionMatches.indexOf(this._selected);\n  }\n\n  private _actionSelected(action?: INinjaAction) {\n    // fire selected event even when action is empty/not selected,\n    // so possible handle api search for example\n    this.dispatchEvent(\n      new CustomEvent('selected', {\n        detail: {search: this._search, action},\n        bubbles: true,\n        composed: true,\n      })\n    );\n\n    if (!action) {\n      return;\n    }\n\n    if (action.children && action.children?.length > 0) {\n      this._currentRoot = action.id;\n      this._search = '';\n    }\n\n    this._headerRef.value!.setSearch('');\n    this._headerRef.value!.focusSearch();\n\n    if (action.handler) {\n      const result = action.handler(action);\n      if (!result?.keepOpen) {\n        this.close();\n      }\n    }\n\n    this._bump = true;\n  }\n\n  private async _handleInput(event: CustomEvent<{search: string}>) {\n    this._search = event.detail.search;\n    await this.updateComplete;\n    this.dispatchEvent(\n      new CustomEvent('change', {\n        detail: {search: this._search, actions: this._actionMatches},\n        bubbles: true,\n        composed: true,\n      })\n    );\n  }\n\n  private _overlayClick(event: Event) {\n    if ((event.target as HTMLElement)?.classList.contains('modal')) {\n      this.close();\n    }\n  }\n}\n\ndeclare global {\n  interface HTMLElementTagNameMap {\n    'ninja-keys': NinjaKeys;\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Turbo requests doesnt update current request parameters after filtering users.\n// custom trigger csv download with the current filters\nexport default class extends Controller {\n  static targets = [\"form\"];\n\n  download() {\n    window.open(this.urlWithQueryString(), '_blank');\n  }\n\n  queryString() {\n    const form = new FormData(this.formTarget);\n    const params = new URLSearchParams();\n    for (const [name, value] of form.entries()) {\n      params.append(name, value);\n    }\n\n    return params.toString();\n  }\n\n  pathname() {\n    return window.location.pathname;\n  }\n\n  origin() {\n    return window.location.origin\n  }\n\n  urlWithQueryString() {\n    return `${this.origin()}/users/search.csv?${this.queryString()}`;\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\nimport Cropper from \"cropperjs\";\nimport { Modal } from \"tailwindcss-stimulus-components\";\n\nexport default class Customcrop extends Modal {\n    static targets = [\"modal\", \"image\", \"xOffset\", \"yOffset\", \"width\", \"height\"];\n\n    connect() {\n        super.connect();\n    }\n\n    open(event) {\n        super.open(event);\n\n        const controller = this; // needed, because this gets overwritten in the cropper callback\n\n        this.cropper = new Cropper(this.imageTarget, {\n\n            aspectRatio: 1,\n            restore: false,\n\n            crop(image) {\n                controller.xOffsetTarget.value = image.detail.x;\n                controller.yOffsetTarget.value = image.detail.y;\n                controller.widthTarget.value = image.detail.width;\n                controller.heightTarget.value = image.detail.height;\n            },\n        });\n\n        document.getElementById('crop-button').addEventListener('click', function () {\n            event.preventDefault();\n\n            const params = new URLSearchParams();\n\n            params.append('x_offset', controller.xOffsetTarget.value);\n            params.append('y_offset', controller.yOffsetTarget.value);\n            params.append('width', controller.widthTarget.value);\n            params.append('height', controller.heightTarget.value);\n\n            fetch(`crop_avatar`, {\n                    method: 'POST',\n                    body: params,\n                    headers: {\n                        'X-CSRF-Token': document.querySelector(\"meta[name='csrf-token']\").content,\n                        'Cache-Control': 'no-store'\n                    },\n                    credentials: 'same-origin'\n                }\n            ).then(response => {\n                controller.close(event);\n                window.location.reload();\n            })\n        });\n    }\n\n    onclose(event) {\n        this.cropper.destroy();\n    }\n}\n", "// A Growl-style alert that slides into view at the top of the screen when rendered,\n// and slides back out of view when the \"X\" button is clicked/pressed.\n// Visit The Stimulus Handbook for more details\n// https://stimulusjs.org/handbook/introduction\n//\n// This example controller works with specially annotated HTML like:\n//\n//  <div class=\"fixed inset-x-0 top-0 flex items-end justify-right px-4 py-6 sm:p-6 justify-end z-30 pointer-events-none\">\n//    <div data-controller=\"alert\" data-alert-show-class=\"translate-x-0 opacity-100\" data-alert-hide-class=\"translate-x-full opacity-0\" class=\"max-w-sm w-full shadow-lg px-4 py-3 rounded relative bg-green-400 border-l-4 border-green-700 text-white pointer-events-auto transition translate-x-full transform ease-in-out duration-1000 opacity-0\">\n//      <div class=\"p-2\">\n//        <div class=\"flex items-start\">\n//          <div class=\"ml-3 w-0 flex-1 pt-0.5\">\n//            <p class=\"text-sm leading-5 font-medium\">\n//              Stimulus is the JS of the future!\n//            </p>\n//          </div>\n//          <div class=\"ml-4 flex-shrink-0 flex\">\n//            <button data-action=\"alert#close\" class=\"inline-flex text-white focus:outline-none focus:text-gray-300\">\n//              <svg class=\"h-5 w-5\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n//                <path fill-rule=\"evenodd\" d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\" clip-rule=\"evenodd\"/>\n//              </svg>\n//            </button>\n//          </div>\n//        </div>\n//      </div>\n//    </div>\n//  </div>\n\nimport { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static values = {\n    dismissAfter: Number,\n    showDelay: { type: Number, default: 200 },\n    removeDelay: { type: Number, default: 1100 }\n  }\n  static classes = [\"show\", \"hide\"]\n\n  initialize() {\n    this.hide()\n  }\n\n  connect() {\n    setTimeout(() => {\n      this.show()\n    }, this.showDelayValue)\n\n    // Auto dimiss if defined\n    if (this.hasDismissAfterValue) {\n      setTimeout(() => {\n        this.close()\n      }, this.dismissAfterValue)\n    }\n  }\n\n  close() {\n    this.hide()\n\n    setTimeout(() => {\n      this.element.remove()\n    }, this.removeDelayValue)\n  }\n\n  show() {\n    this.element.classList.add(...this.showClasses)\n    this.element.classList.remove(...this.hideClasses)\n  }\n\n  hide() {\n    this.element.classList.add(...this.hideClasses)\n    this.element.classList.remove(...this.showClasses)\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['form', 'status']\n\n  connect() {\n    this.timeout = null\n    this.duration = this.data.get('duration') || 1000\n  }\n\n  save() {\n    clearTimeout(this.timeout)\n\n    this.timeout = setTimeout(() => {\n      this.statusTarget.textContent = 'Saving...'\n      Rails.fire(this.formTarget, 'submit')\n    }, this.duration)\n  }\n\n  success() {\n    this.setStatus('Saved!')\n  }\n\n  error() {\n    this.setStatus('Unable to save!')\n  }\n\n  setStatus(message) {\n    this.statusTarget.textContent = message\n\n    this.timeout = setTimeout(() => {\n      this.statusTarget.textContent = ''\n    }, 2000)\n  }\n}\n", "// Visit The Stimulus Handbook for more details\n// https://stimulusjs.org/handbook/introduction\n\n// This example controller works with specially annotated HTML like:\n\n// <div class=\"relative\"\n//      data-controller=\"dropdown\"\n//      data-action=\"click->dropdown#toggle click@window->dropdown#hide\"\n//      data-dropdown-active-target=\"#dropdown-button\"\n//      data-dropdown-active-class=\"bg-teal-600\"\n//      data-dropdown-invisible-class=\"opacity-0 scale-95\"\n//      data-dropdown-visible-class=\"opacity-100 scale-100\"\n//      data-dropdown-entering-class=\"ease-out duration-100\"\n//      data-dropdown-enter-timeout=\"100\"\n//      data-dropdown-leaving-class=\"ease-in duration-75\"\n//      data-dropdown-leave-timeout=\"75\">\n//  <div data-action=\"click->dropdown#toggle click@window->dropdown#hide\" role=\"button\" data-dropdown-target=\"button\" tabindex=\"0\" class=\"inline-block select-none\">\n//    Open Dropdown\n//  </div>\n//  <div data-dropdown-target=\"menu\" class=\"absolute pin-r mt-2 transform transition hidden opacity-0 scale-95\">\n//    <div class=\"bg-white shadow rounded border overflow-hidden\">\n//      Content\n//    </div>\n//  </div>\n// </div>\n\nimport { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['menu', 'button']\n  static values = { open: Boolean }\n\n  connect() {\n    this.toggleClass = this.data.get('class') || 'hidden'\n    this.visibleClass = this.data.get('visibleClass') || null\n    this.invisibleClass = this.data.get('invisibleClass') || null\n    this.activeClass = this.data.get('activeClass') || null\n    this.enteringClass = this.data.get('enteringClass') || null\n    this.leavingClass = this.data.get('leavingClass') || null\n\n    if (this.hasButtonTarget) {\n      this.buttonTarget.addEventListener(\"keydown\", this._onMenuButtonKeydown)\n    }\n\n    this.element.setAttribute(\"aria-haspopup\", \"true\")\n  }\n\n  disconnect() {\n    if (this.hasButtonTarget) {\n      this.buttonTarget.removeEventListener(\"keydown\", this._onMenuButtonKeydown)\n    }\n  }\n\n\n  toggle() {\n    this.openValue = !this.openValue\n  }\n\n  openValueChanged() {\n    if (this.openValue) {\n      this._show()\n    } else {\n      this._hide()\n    }\n  }\n\n  _show(cb) {\n    setTimeout(\n      (() => {\n        this.menuTarget.classList.remove(this.toggleClass)\n        this.element.setAttribute(\"aria-expanded\", \"true\")\n        this._enteringClassList[0].forEach(\n          (klass => {\n            this.menuTarget.classList.add(klass)\n          }).bind(this),\n        )\n\n        this._activeClassList[0].forEach(klass => {\n          this.activeTarget.classList.add(klass)\n        })\n        this._invisibleClassList[0].forEach(klass => this.menuTarget.classList.remove(klass))\n        this._visibleClassList[0].forEach(klass => {\n          this.menuTarget.classList.add(klass)\n        })\n        setTimeout(\n          (() => {\n            this._enteringClassList[0].forEach(klass => this.menuTarget.classList.remove(klass))\n          }).bind(this),\n          this.enterTimeout[0],\n        )\n\n        if (typeof cb == 'function') cb()\n      }).bind(this),\n    )\n  }\n\n  _hide(cb) {\n    setTimeout(\n      (() => {\n        this.element.setAttribute(\"aria-expanded\", \"false\")\n        this._invisibleClassList[0].forEach(klass => this.menuTarget.classList.add(klass))\n        this._visibleClassList[0].forEach(klass => this.menuTarget.classList.remove(klass))\n        this._activeClassList[0].forEach(klass => this.activeTarget.classList.remove(klass))\n        this._leavingClassList[0].forEach(klass => this.menuTarget.classList.add(klass))\n        setTimeout(\n          (() => {\n            this._leavingClassList[0].forEach(klass => this.menuTarget.classList.remove(klass))\n            if (typeof cb == 'function') cb()\n\n            this.menuTarget.classList.add(this.toggleClass)\n          }).bind(this),\n          this.leaveTimeout[0],\n        )\n      }).bind(this),\n    )\n  }\n\n  _onMenuButtonKeydown = event => {\n    switch (event.keyCode) {\n      case 13: // enter\n      case 32: // space\n        event.preventDefault()\n        this.toggle()\n    }\n  }\n\n  show(){\n     this.openValue = true;\n  }\n\n  hide(event) {\n    if (this.element.contains(event.target) === false && this.openValue) {\n      this.openValue = false\n    }\n  }\n\n  get activeTarget() {\n    return this.data.has('activeTarget')\n      ? document.querySelector(this.data.get('activeTarget'))\n      : this.element\n  }\n\n  get _activeClassList() {\n    return !this.activeClass\n      ? [[], []]\n      : this.activeClass.split(',').map(classList => classList.split(' '))\n  }\n\n  get _visibleClassList() {\n    return !this.visibleClass\n      ? [[], []]\n      : this.visibleClass.split(',').map(classList => classList.split(' '))\n  }\n\n  get _invisibleClassList() {\n    return !this.invisibleClass\n      ? [[], []]\n      : this.invisibleClass.split(',').map(classList => classList.split(' '))\n  }\n\n  get _enteringClassList() {\n    return !this.enteringClass\n      ? [[], []]\n      : this.enteringClass.split(',').map(classList => classList.split(' '))\n  }\n\n  get _leavingClassList() {\n    return !this.leavingClass\n      ? [[], []]\n      : this.leavingClass.split(',').map(classList => classList.split(' '))\n  }\n\n  get enterTimeout() {\n    let timeout = this.data.get('enterTimeout') || '0,0'\n    return timeout.split(',').map(t => parseInt(t))\n  }\n\n  get leaveTimeout() {\n    let timeout = this.data.get('leaveTimeout') || '0,0'\n    return timeout.split(',').map(t => parseInt(t))\n  }\n}\n", "// Visit The Stimulus Handbook for more details\n// https://stimulusjs.org/handbook/introduction\n//\n// This example controller works with specially annotated HTML like:\n//\n// <div data-controller=\"modal\" data-modal-allow-background-close=\"false\">\n//   <a href=\"#\" data-action=\"click->modal#open\" class=\"bg-blue-500 hover:bg-blue-700 text-white font-bold py-3 px-6 rounded\">\n//     <span>Open Modal</span>\n//   </a>\n//\n//   <!-- Modal Container -->\n//   <div data-modal-target=\"container\" data-action=\"click->modal#closeBackground keyup@window->modal#closeWithKeyboard\" class=\"hidden animated fadeIn fixed inset-0 overflow-y-auto flex items-center justify-center\" style=\"z-index: 9999;\">\n//     <!-- Modal Inner Container -->\n//     <div class=\"max-h-screen w-full max-w-lg relative\">\n//       <!-- Modal Card -->\n//       <div class=\"m-1 bg-white rounded shadow\">\n//         <div class=\"p-8\">\n//           <h2 class=\"text-xl mb-4\">Large Modal Content</h2>\n//           <p class=\"mb-4\">This is an example modal dialog box.</p>\n//\n//           <div class=\"flex justify-end items-center flex-wrap mt-6\">\n//             <button class=\"bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\" data-action=\"click->modal#close\">Close</button>\n//           </div>\n//         </div>\n//       </div>\n//     </div>\n//   </div>\n// </div>\n\nimport { Controller } from '@hotwired/stimulus';\n\nexport default class extends Controller {\n  static targets = ['container']\n  static values = {\n    backdropColor: { type: String, default: 'rgba(0, 0, 0, 0.8)' },\n    restoreScroll: { type: Boolean, default: true }\n  }\n\n  connect() {\n    // The class we should toggle on the container\n    this.toggleClass = this.data.get('class') || 'hidden';\n\n    // The ID of the background to hide/remove\n    this.backgroundId = this.data.get('backgroundId') || 'modal-background';\n\n    // The HTML for the background element\n    this.backgroundHtml = this.data.get('backgroundHtml') || this._backgroundHTML();\n\n    // Let the user close the modal by clicking on the background\n    this.allowBackgroundClose = (this.data.get('allowBackgroundClose') || 'true') === 'true';\n\n    // Prevent the default action of the clicked element (following a link for example) when opening the modal\n    this.preventDefaultActionOpening = (this.data.get('preventDefaultActionOpening') || 'true') === 'true';\n\n    // Prevent the default action of the clicked element (following a link for example) when closing the modal\n    this.preventDefaultActionClosing = (this.data.get('preventDefaultActionClosing') || 'true') === 'true';\n  }\n\n  disconnect() {\n    this.close();\n  }\n\n  open(e) {\n    if (this.preventDefaultActionOpening) {\n      e.preventDefault();\n    }\n\n    if (e.target.blur) {\n      e.target.blur();\n    }\n\n    // Lock the scroll and save current scroll position\n    this.lockScroll();\n\n    // Unhide the modal\n    this.containerTarget.classList.remove(this.toggleClass);\n\n    // Insert the background\n    if (!this.data.get(\"disable-backdrop\")) {\n      document.body.insertAdjacentHTML('beforeend', this.backgroundHtml);\n      this.background = document.querySelector(`#${this.backgroundId}`);\n    }\n  }\n\n  close(e) {\n    if (e && this.preventDefaultActionClosing) {\n      e.preventDefault();\n    }\n\n    // Unlock the scroll and restore previous scroll position\n    this.unlockScroll();\n\n    // Hide the modal\n    this.containerTarget.classList.add(this.toggleClass);\n\n    // Remove the background\n    if (this.background) { this.background.remove() }\n  }\n\n  closeBackground(e) {\n    if (this.allowBackgroundClose && e.target === this.containerTarget) {\n      this.close(e);\n    }\n  }\n\n  closeWithKeyboard(e) {\n    if (e.keyCode === 27 && !this.containerTarget.classList.contains(this.toggleClass)) {\n      this.close(e);\n    }\n  }\n\n  _backgroundHTML() {\n    return `<div id=\"${this.backgroundId}\" class=\"fixed top-0 left-0 w-full h-full\" style=\"background-color: ${this.backdropColorValue}; z-index: 9998;\"></div>`;\n  }\n\n  lockScroll() {\n    // Add right padding to the body so the page doesn't shift\n    // when we disable scrolling\n    const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;\n    document.body.style.paddingRight = `${scrollbarWidth}px`;\n\n    // Save the scroll position\n    this.saveScrollPosition();\n\n    // Add classes to body to fix its position\n    document.body.classList.add('fixed', 'inset-x-0', 'overflow-hidden');\n\n    // Add negative top position in order for body to stay in place\n    document.body.style.top = `-${this.scrollPosition}px`;\n  }\n\n  unlockScroll() {\n    // Remove tweaks for scrollbar\n    document.body.style.paddingRight = null;\n\n    // Remove classes from body to unfix position\n    document.body.classList.remove('fixed', 'inset-x-0', 'overflow-hidden');\n\n    // Restore the scroll position of the body before it got locked\n    if(this.restoreScrollValue) {\n      this.restoreScrollPosition();\n    }\n\n    // Remove the negative top inline style from body\n    document.body.style.top = null;\n  }\n\n  saveScrollPosition() {\n    this.scrollPosition = window.pageYOffset || document.body.scrollTop;\n  }\n\n  restoreScrollPosition() {\n    if (this.scrollPosition === undefined) return;\n\n    document.documentElement.scrollTop = this.scrollPosition;\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['tab', 'panel']\n\n  connect() {\n    this.activeTabClasses = (this.data.get('activeTab') || 'active').split(' ')\n    this.inactiveTabClasses = (this.data.get('inactiveTab') || 'inactive').split(' ')\n    if (this.anchor) this.index = this.tabTargets.findIndex((tab) => tab.id === this.anchor)\n    this.showTab()\n  }\n\n  change(event) {\n    event.preventDefault()\n\n    // If target specifies an index, use that\n    if (event.currentTarget.dataset.index) {\n      this.index = event.currentTarget.dataset.index\n\n    // If target specifies an id, use that\n    } else if (event.currentTarget.dataset.id) {\n      this.index = this.tabTargets.findIndex((tab) => tab.id == event.currentTarget.dataset.id)\n\n    // Otherwise, use the index of the current target\n    } else {\n      this.index = this.tabTargets.indexOf(event.currentTarget)\n    }\n\n    window.dispatchEvent(new CustomEvent('tsc:tab-change'))\n  }\n\n  showTab() {\n    this.tabTargets.forEach((tab, index) => {\n      const panel = this.panelTargets[index]\n\n      if (index === this.index) {\n        panel.classList.remove('hidden')\n        tab.classList.remove(...this.inactiveTabClasses)\n        tab.classList.add(...this.activeTabClasses)\n\n        // Update URL with the tab ID if it has one\n        // This will be automatically selected on page load\n        if (tab.id) {\n          location.hash = tab.id\n        }\n      } else {\n        panel.classList.add('hidden')\n        tab.classList.remove(...this.activeTabClasses)\n        tab.classList.add(...this.inactiveTabClasses)\n      }\n    })\n  }\n\n  get index() {\n    return parseInt(this.data.get('index') || 0)\n  }\n\n  set index(value) {\n    this.data.set('index', (value >= 0 ? value : 0))\n    this.showTab()\n  }\n\n  get anchor() {\n    return (document.URL.split('#').length > 1) ? document.URL.split('#')[1] : null;\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['toggleable']\n  static values = { open: Boolean }\n\n  connect() {\n    this.toggleClass = this.data.get('class') || 'hidden'\n  }\n\n  toggle(event) {\n    event.preventDefault()\n\n    this.openValue = !this.openValue\n  }\n\n  hide(event) {\n    event.preventDefault();\n\n    this.openValue = false;\n  }\n\n  show(event) {\n    event.preventDefault();\n\n    this.openValue = true;\n  }\n\n  openValueChanged() {\n    if (!this.toggleClass) { return }\n\n    this.toggleableTargets.forEach(target => {\n      target.classList.toggle(this.toggleClass)\n    })\n  }\n}\n", "// A simple inline popover to be used wherever needed, with a configurable offset.\n// Visit The Stimulus Handbook for more details\n// https://stimulusjs.org/handbook/introduction\n//\n// This example controller works with specially annotated HTML like:\n//\n//<p>\n//  Beginning in 2015, Google introduced what is called the\n//    <div class=\"popover inline-block\" data-controller=\"popover\" data-popover-translate-x=\"0\" data-popover-translate-y=\"-128%\" data-action=\"mouseover->popover#mouseOver mouseout->popover#mouseOut\">\n//      <span class=\"underline\">'local snack pack',</span>\n//      <div class=\"content hidden absolute max-w-xs bg-grey-light rounded p-2\" data-popover-target=\"content\">\n//        Terrible name - we know. But the biggest name in SEO came up with it.\n//      </div>\n//    </div>\n//  which shows you local search results before normal organic results.\n//</p>\n//\n// You can also toggle the popover using the click action.\n// <div class=\"popover inline-block\" data-controller=\"popover\" data-action=\"click->popover#toggle\" data-action=\"mouseover->popover#mouseOver mouseout->popover#mouseOut\">\n\nimport { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['content']\n\n  // Sets the popover offset using Stimulus data map objects.\n  initialize() {\n    this.contentTarget.setAttribute(\n      'style',\n      `transform:translate(${this.data.get('translateX')}, ${this.data.get('translateY')});`,\n    )\n  }\n\n  // Show the popover\n  mouseOver() {\n    this.contentTarget.classList.remove('hidden')\n  }\n  // Hide the popover\n  mouseOut() {\n    this.contentTarget.classList.add('hidden')\n  }\n  // Toggle the popover on demand\n  toggle() {\n    if (this.contentTarget.classList.contains('hidden')) {\n      this.contentTarget.classList.remove('hidden')\n    } else {\n      this.contentTarget.classList.add('hidden')\n    }    \n  }\n}\n", "// Visit The Stimulus Handbook for more details\n// https://stimulusjs.org/handbook/introduction\n\n// This example controller works with specially annotated HTML like:\n\n// <div role=\"main\" class=\"h-screen flex overflow-hidden bg-gray-100\"\n//      data-controller=\"slideover\"\n//      data-slideover-invisible-class=\"-translate-x-full,opacity-0\"\n//      data-slideover-visible-class=\"translate-x-0,opacity-100\"\n//      data-slideover-entering-class=\"\"\n//      data-slideover-enter-timeout=\"300,300\"\n//      data-slideover-leaving-class=\"\"\n//      data-slideover-leave-timeout=\"300,300\"\n//      data-slideover-active-target=\"#slideover-target\">\n//      <div id=\"sidebar\">\n//        <div data-slideover-target=\"overlay\" class=\"fixed inset-0 flex z-40 transition-opacity ease-linear duration-300 opacity-0 hidden\">\n//          <div class=\"fixed inset-0\">\n//            <div class=\"absolute inset-0 bg-gray-600 opacity-75\"></div>\n//          </div>\n//          <div id=\"slideover-target\" data-slideover-target=\"menu\" class=\"relative flex-1 flex flex-col max-w-xs w-full pt-5 pb-4 bg-gray-800 transition ease-in-out duration-300 transform -translate-x-full hidden\">\n//            <div class=\"absolute top-0 right-0 -mr-14 p-1\">\n//              <button data-action=\"slideover#_hide\" class=\"flex items-center justify-center h-12 w-12 rounded-full focus:outline-none focus:bg-gray-600\" aria-label=\"Close sidebar\">\n//                <svg class=\"h-6 w-6 text-white\" stroke=\"currentColor\" fill=\"none\" viewBox=\"0 0 24 24\">\n//                  <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\" />\n//                </svg>\n//              </button>\n//            </div>\n//          </div>\n//        </div>\n//      </div>\n// </div>\n\nimport Dropdown from './dropdown.js'\n\nexport default class extends Dropdown {\n  static targets = ['menu', 'overlay']\n\n  _show() {\n    this.overlayTarget.classList.remove(this.toggleClass)\n\n    super._show(\n      (() => {\n        this._activeClassList[1].forEach(klass => this.overlayTarget.classList.add(klass))\n        this._invisibleClassList[1].forEach(klass => this.overlayTarget.classList.remove(klass))\n        this._visibleClassList[1].forEach(klass => this.overlayTarget.classList.add(klass))\n        setTimeout(\n          (() => {\n            this._enteringClassList[1].forEach(klass => this.overlayTarget.classList.remove(klass))\n          }).bind(this),\n          this.enterTimeout[1],\n        )\n      }).bind(this),\n    )\n  }\n\n  _hide() {\n    this._leavingClassList[1].forEach(klass => this.overlayTarget.classList.add(klass))\n\n    super._hide(\n      (() => {\n        setTimeout(\n          (() => {\n            this._visibleClassList[1].forEach(klass => this.overlayTarget.classList.remove(klass))\n            this._invisibleClassList[1].forEach(klass => this.overlayTarget.classList.add(klass))\n            this._activeClassList[1].forEach(klass => this.overlayTarget.classList.remove(klass))\n            this._leavingClassList[1].forEach(klass => this.overlayTarget.classList.remove(klass))\n            this.overlayTarget.classList.add(this.toggleClass)\n          }).bind(this),\n          this.leaveTimeout[1],\n        )\n      }).bind(this),\n    )\n  }\n}\n", "// A color picker preview where you can choose to have the color or backgroundColor\n// get updated based on the result of a color picker. It also supports ensuring\n// the foreground text is always readable by performing a YIQ calculation to\n// set the text to black or white based on the contrast of the color and backgroundColor.\n//\n// The example below uses the native HTML5 color picker for picking the color but\n// you can swap it with anything you'd like:\n//\n// <div class=\"col-span-6 sm:col-span-3\">\n//   <label for=\"hex_color_bg\" class=\"block text-sm font-medium text-gray-700\">\n//     Color\n//   </label>\n//   <div class=\"mt-3 flex items-center\" data-controller=\"color-preview\">\n//     <p data-color-preview-target=\"preview\"\n//        class=\"h-10 w-10 mr-2 rounded-full text-2xl text-white text-center\"\n//        style=\"background-color: #ba1e03; color: #fff; padding-top: 1px;\">\n//       A\n//     </p>\n//     <span class=\"ml-2\">\n//       <div class=\"flex rounded-md shadow-sm\">\n//         <span class=\"inline-flex items-center px-3 rounded-l-md border border-r-0 border-gray-300 bg-gray-50 text-gray-500\">\n//           #\n//         </span>\n//         <input data-action=\"input->color-preview#update\" data-color-preview-target=\"color\"\n//                id=\"hex_color_bg\" name=\"hex_color_bg\" type=\"color\" value=\"#ba1e03\"\n//                class=\"focus:ring-indigo-500 focus:border-indigo-500 block shadow-sm sm:text-sm border-gray-300 flex-1 rounded-r-md mt-0 w-24 h-8 px-1 py-1 border\" />\n//       </div>\n//     </span>\n//   </div>\n// </div>\n\nimport { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['preview', 'color'];\n\n  connect() {\n    this.styleProperty = this.data.get('style') || 'backgroundColor';\n  }\n\n  update() {\n    this.preview = this.color;\n  }\n\n  set preview(color) {\n    this.previewTarget.style[this.styleProperty] = color;\n\n    // Ensure the foreground text is always readable by setting either the\n    // backgroundColor or color to black or white.\n    const yiqColor = this._getContrastYIQ(color);\n\n    if (this.styleProperty === 'color') {\n        this.previewTarget.style.backgroundColor = yiqColor;\n    } else {\n        this.previewTarget.style.color = yiqColor;\n    }\n  }\n\n  get color() {\n    return this.colorTarget.value;\n  }\n\n  _getContrastYIQ(hexColor) {\n    // Taken from: https://24ways.org/2010/calculating-color-contrast/\n    hexColor = hexColor.replace('#', '');\n\n    const yiqThreshold = 128;\n    const r = parseInt(hexColor.substr(0, 2), 16);\n    const g = parseInt(hexColor.substr(2, 2), 16);\n    const b = parseInt(hexColor.substr(4, 2), 16);\n    const yiq = ((r * 299) + (g * 587) + (b * 114)) / 1000;\n\n    return (yiq >= yiqThreshold) ? '#000' : '#fff';\n  }\n}\n", "import Reveal from 'stimulus-reveal-controller';\n\nexport default class extends Reveal {\n\n    static targets = [\"trigger\", \"toggleable\"];\n\n    change() {\n        // const icon = iconTarget;\n        const label = this.triggerTarget.querySelector('span');\n        const icon = this.triggerTarget.querySelector('i');\n\n\n        if (label.innerText == \"Close\" && !this.toggleableTarget.classList.contains('hidden')) {\n            label.innerText = 'Expand';\n            label.classList.remove('text-fade');\n            setTimeout(() => {\n              label.classList.add('text-fade');\n            }, '100');\n            icon.style.transform = 'rotate(180deg)';\n        } else {\n            label.innerText = 'Close';\n            label.classList.remove('text-fade');\n            setTimeout(() => {\n              label.classList.add('text-fade');\n            }, '100');\n            icon.style.transform = 'rotate(0deg)';\n        }\n    }\n}", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"event-registrations\"\nexport default class extends Controller {\n\n  closeModal() {\n    document.getElementsByName('close-btn').forEach((e) => e.click())\n  }\n\n  submit() {\n    this.element.requestSubmit();\n  }\n\n  pay(e) {\n    let payLink = document.getElementById('payment-link').value\n    if (payLink !== '' && payLink) {\n      window.open(payLink, '_blank')\n    } else {\n      e.preventDefault()\n    }\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"events\"\nexport default class extends Controller {\n  static targets = [\"price\", \"free\", \"online\", \"stripeLink\", \"location\", \"createZoomMeetingOption\", \"zoomTemplate\", \"onlineId\"]\n\n  connect() {\n    this.priceTarget.disabled = this.freeTarget.checked;\n    this.stripeLinkTarget.disabled = this.freeTarget.checked;\n    this.onlineIdTarget.disabled = this.createZoomMeetingOptionTarget.checked;\n    this.locationTarget.disabled = this.onlineTarget.checked;\n  }\n\n  free() {\n    this.priceTarget.disabled = this.freeTarget.checked;\n    this.stripeLinkTarget.disabled = this.freeTarget.checked;\n    if (this.freeTarget.checked) {\n      this.priceTarget.value = 0;\n    }\n\n    this.locationTarget.disabled   = this.onlineTarget.checked;\n    if (this.onlineTarget.checked) {\n      this.locationTarget.value = \"\";\n      this.showZoomForm(true)\n    } else {\n      this.showZoomForm(false)\n    }\n  }\n\n  toggleZoomMeeting() {\n    if (this.createZoomMeetingOptionTarget.checked) {\n      this.onlineIdTarget.disabled = true\n      this.onlineIdTarget.value = ''\n      this.zoomTemplateTarget.disabled = false;\n    } else {\n      this.onlineIdTarget.disabled = false\n      document.querySelector('div[class=\"ss-deselect\"]').click(); // clear out the selected option\n      this.zoomTemplateTarget.disabled = true;\n    }\n  }\n\n  showZoomForm(value) {\n    Array.from(document.getElementsByClassName('zoom-meeting-form')).forEach(element => {\n      value ?\n        element.classList.remove('hidden')\n        : element.classList.add('hidden')\n    });\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n    static targets = [\"nextButton\", \"prevButton\", \"image\", \"content\"];\n\n    connect() {\n        this.currentIndex = 0;\n    }\n\n    updateCarousel(action) {\n        // this.imageTargets.forEach((image, index) => {\n        //     if (index === this.currentIndex) {\n        //         image.classList.remove('hidden', 'slide-out-next', 'slide-out-prev');\n        //         if (action === 'next') {\n        //             image.classList.add('slide-in-next');\n        //         } else {\n        //             image.classList.add('slide-in-prev');\n        //         }\n        //     } else {\n        //         image.classList.remove('slide-in-next', 'slide-in-prev');\n        //         if (action === 'next') {\n        //             image.classList.add('hidden', 'slide-out-next');\n        //         } else {\n        //             image.classList.add('hidden', 'slide-out-prev');\n        //         }\n        //     }\n        // });\n\n        this.contentTargets.forEach((content, index) => {\n            if (index === this.currentIndex) {\n                content.classList.remove('hidden');\n            } else {\n                content.classList.add('hidden');\n            }\n        });\n    }\n\n    next() {\n        this.currentIndex = (this.currentIndex + 1) % this.contentTargets.length;\n        this.updateCarousel('next');\n    }\n\n    prev() {\n        this.currentIndex =\n            (this.currentIndex - 1 + this.contentTargets.length) % this.contentTargets.length;\n        this.updateCarousel('prev');\n    }\n\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"members-index-form\"\nexport default class extends Controller {\n  initialize() {\n  }\n\n  submit() {\n    this.element.requestSubmit();\n  }\n\n}\n", "import { Controller } from \"@hotwired/stimulus\"\nimport Tribute from \"tributejs\"\nimport Trix from \"trix\"\n\nexport default class extends Controller {\n  static targets = [ \"field\" ]\n\n  connect() {\n    this.editor = this.fieldTarget.editor\n    this.initializeTribute()\n  }\n\n  initializeTribute() {\n    this.tribute = new Tribute({\n      allowSpaces: true,\n      lookup: 'name',\n      values: this.fetchUsers,\n      menuShowMinLength: 1,\n    })\n    this.tribute.attach(this.fieldTarget)\n    this.fieldTarget.addEventListener('tribute-replaced', this.replaced)\n    this.tribute.range.pasteHtml = this._pasteHtml.bind(this)\n  }\n\n  disconnect() {\n    this.tribute.detach(this.fieldTarget)\n  }\n\n  fetchUsers(text, callback) {\n    fetch(`/users/mentions.json?query=${text}`)\n      .then(response => response.json())\n      .then(users => callback(users))\n      .catch(error => callback([]))\n  }\n\n  replaced(e) {\n    let mention = e.detail.item.original\n    let attachment = new Trix.Attachment({\n      content: mention.content,\n      sgid: mention.sgid,\n    })\n    this.editor.insertAttachment(attachment)\n    this.editor.insertString(\" \")\n  }\n\n  _pasteHtml(html, startPos, endPos) {\n    let range = this.editor.getSelectedRange()\n    let position = range[0]\n    let length = endPos - startPos\n\n    this.editor.setSelectedRange([position - length, position])\n    this.editor.deleteInDirection(\"backward\")\n  }\n}\n", "/*\nTrix 2.0.4\nCopyright \u00A9 2022 37signals, LLC\n */\nconst t={preview:{presentation:\"gallery\",caption:{name:!0,size:!0}},file:{caption:{size:!0}}},e={default:{tagName:\"div\",parse:!1},quote:{tagName:\"blockquote\",nestable:!0},heading1:{tagName:\"h1\",terminal:!0,breakOnReturn:!0,group:!1},code:{tagName:\"pre\",terminal:!0,text:{plaintext:!0}},bulletList:{tagName:\"ul\",parse:!1},bullet:{tagName:\"li\",listAttribute:\"bulletList\",group:!1,nestable:!0,test(t){return i(t.parentNode)===e[this.listAttribute].tagName}},numberList:{tagName:\"ol\",parse:!1},number:{tagName:\"li\",listAttribute:\"numberList\",group:!1,nestable:!0,test(t){return i(t.parentNode)===e[this.listAttribute].tagName}},attachmentGallery:{tagName:\"div\",exclusive:!0,terminal:!0,parse:!1,group:!1}},i=t=>{var e;return null==t||null===(e=t.tagName)||void 0===e?void 0:e.toLowerCase()},n=navigator.userAgent.match(/android\\s([0-9]+.*Chrome)/i),r=n&&parseInt(n[1]);var o={composesExistingText:/Android.*Chrome/.test(navigator.userAgent),recentAndroid:r&&r>12,samsungAndroid:r&&navigator.userAgent.match(/Android.*SM-/),forcesObjectResizing:/Trident.*rv:11/.test(navigator.userAgent),supportsInputEvents:\"undefined\"!=typeof InputEvent&&[\"data\",\"getTargetRanges\",\"inputType\"].every((t=>t in InputEvent.prototype))},s={attachFiles:\"Attach Files\",bold:\"Bold\",bullets:\"Bullets\",byte:\"Byte\",bytes:\"Bytes\",captionPlaceholder:\"Add a caption\u2026\",code:\"Code\",heading1:\"Heading\",indent:\"Increase Level\",italic:\"Italic\",link:\"Link\",numbers:\"Numbers\",outdent:\"Decrease Level\",quote:\"Quote\",redo:\"Redo\",remove:\"Remove\",strike:\"Strikethrough\",undo:\"Undo\",unlink:\"Unlink\",url:\"URL\",urlPlaceholder:\"Enter a URL\u2026\",GB:\"GB\",KB:\"KB\",MB:\"MB\",PB:\"PB\",TB:\"TB\"};const a=[s.bytes,s.KB,s.MB,s.GB,s.TB,s.PB];var l={prefix:\"IEC\",precision:2,formatter(t){switch(t){case 0:return\"0 \".concat(s.bytes);case 1:return\"1 \".concat(s.byte);default:let e;\"SI\"===this.prefix?e=1e3:\"IEC\"===this.prefix&&(e=1024);const i=Math.floor(Math.log(t)/Math.log(e)),n=(t/Math.pow(e,i)).toFixed(this.precision).replace(/0*$/,\"\").replace(/\\.$/,\"\");return\"\".concat(n,\" \").concat(a[i])}}};const c=function(t){for(const e in t){const i=t[e];this[e]=i}return this},h=document.documentElement,u=h.matches,d=function(t){let{onElement:e,matchingSelector:i,withCallback:n,inPhase:r,preventDefault:o,times:s}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const a=e||h,l=i,c=\"capturing\"===r,u=function(t){null!=s&&0==--s&&u.destroy();const e=p(t.target,{matchingSelector:l});null!=e&&(null==n||n.call(e,t,e),o&&t.preventDefault())};return u.destroy=()=>a.removeEventListener(t,u,c),a.addEventListener(t,u,c),u},g=function(t){let{onElement:e,bubbles:i,cancelable:n,attributes:r}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const o=null!=e?e:h;i=!1!==i,n=!1!==n;const s=document.createEvent(\"Events\");return s.initEvent(t,i,n),null!=r&&c.call(s,r),o.dispatchEvent(s)},m=function(t,e){if(1===(null==t?void 0:t.nodeType))return u.call(t,e)},p=function(t){let{matchingSelector:e,untilNode:i}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(;t&&t.nodeType!==Node.ELEMENT_NODE;)t=t.parentNode;if(null!=t){if(null==e)return t;if(t.closest&&null==i)return t.closest(e);for(;t&&t!==i;){if(m(t,e))return t;t=t.parentNode}}},f=t=>document.activeElement!==t&&b(t,document.activeElement),b=function(t,e){if(t&&e)for(;e;){if(e===t)return!0;e=e.parentNode}},v=function(t){var e;if(null===(e=t)||void 0===e||!e.parentNode)return;let i=0;for(t=t.previousSibling;t;)i++,t=t.previousSibling;return i},A=t=>{var e;return null==t||null===(e=t.parentNode)||void 0===e?void 0:e.removeChild(t)},x=function(t){let{onlyNodesOfType:e,usingFilter:i,expandEntityReferences:n}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const r=(()=>{switch(e){case\"element\":return NodeFilter.SHOW_ELEMENT;case\"text\":return NodeFilter.SHOW_TEXT;case\"comment\":return NodeFilter.SHOW_COMMENT;default:return NodeFilter.SHOW_ALL}})();return document.createTreeWalker(t,r,null!=i?i:null,!0===n)},y=t=>{var e;return null==t||null===(e=t.tagName)||void 0===e?void 0:e.toLowerCase()},C=function(t){let e,i,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};\"object\"==typeof t?(n=t,t=n.tagName):n={attributes:n};const r=document.createElement(t);if(null!=n.editable&&(null==n.attributes&&(n.attributes={}),n.attributes.contenteditable=n.editable),n.attributes)for(e in n.attributes)i=n.attributes[e],r.setAttribute(e,i);if(n.style)for(e in n.style)i=n.style[e],r.style[e]=i;if(n.data)for(e in n.data)i=n.data[e],r.dataset[e]=i;return n.className&&n.className.split(\" \").forEach((t=>{r.classList.add(t)})),n.textContent&&(r.textContent=n.textContent),n.childNodes&&[].concat(n.childNodes).forEach((t=>{r.appendChild(t)})),r};let R;const E=function(){if(null!=R)return R;R=[];for(const t in e){const i=e[t];i.tagName&&R.push(i.tagName)}return R},S=t=>D(null==t?void 0:t.firstChild),k=function(t){return E().includes(y(t))&&!E().includes(y(t.firstChild))},L=function(t){let{strict:e}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{strict:!0};return e?D(t):D(t)||!D(t.firstChild)&&k(t)},D=t=>w(t)&&\"block\"===(null==t?void 0:t.data),w=t=>(null==t?void 0:t.nodeType)===Node.COMMENT_NODE,T=function(t){let{name:e}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(t)return I(t)?\"\\ufeff\"===t.data?!e||t.parentNode.dataset.trixCursorTarget===e:void 0:T(t.firstChild)},F=t=>m(t,\"[data-trix-attachment]\"),B=t=>I(t)&&\"\"===(null==t?void 0:t.data),I=t=>(null==t?void 0:t.nodeType)===Node.TEXT_NODE,P={level2Enabled:!0,getLevel(){return this.level2Enabled&&o.supportsInputEvents?2:0},pickFiles(t){const e=C(\"input\",{type:\"file\",multiple:!0,hidden:!0,id:this.fileInputId});e.addEventListener(\"change\",(()=>{t(e.files),A(e)})),A(document.getElementById(this.fileInputId)),document.body.appendChild(e),e.click()}};var N={removeBlankTableCells:!1,tableCellSeparator:\" | \",tableRowSeparator:\"\\n\"},O={bold:{tagName:\"strong\",inheritable:!0,parser(t){const e=window.getComputedStyle(t);return\"bold\"===e.fontWeight||e.fontWeight>=600}},italic:{tagName:\"em\",inheritable:!0,parser:t=>\"italic\"===window.getComputedStyle(t).fontStyle},href:{groupTagName:\"a\",parser(t){const e=\"a:not(\".concat(\"[data-trix-attachment]\",\")\"),i=t.closest(e);if(i)return i.getAttribute(\"href\")}},strike:{tagName:\"del\",inheritable:!0},frozen:{style:{backgroundColor:\"highlight\"}}},M={getDefaultHTML:()=>'<div class=\"trix-button-row\">\\n      <span class=\"trix-button-group trix-button-group--text-tools\" data-trix-button-group=\"text-tools\">\\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-bold\" data-trix-attribute=\"bold\" data-trix-key=\"b\" title=\"'.concat(s.bold,'\" tabindex=\"-1\">').concat(s.bold,'</button>\\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-italic\" data-trix-attribute=\"italic\" data-trix-key=\"i\" title=\"').concat(s.italic,'\" tabindex=\"-1\">').concat(s.italic,'</button>\\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-strike\" data-trix-attribute=\"strike\" title=\"').concat(s.strike,'\" tabindex=\"-1\">').concat(s.strike,'</button>\\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-link\" data-trix-attribute=\"href\" data-trix-action=\"link\" data-trix-key=\"k\" title=\"').concat(s.link,'\" tabindex=\"-1\">').concat(s.link,'</button>\\n      </span>\\n\\n      <span class=\"trix-button-group trix-button-group--block-tools\" data-trix-button-group=\"block-tools\">\\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-heading-1\" data-trix-attribute=\"heading1\" title=\"').concat(s.heading1,'\" tabindex=\"-1\">').concat(s.heading1,'</button>\\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-quote\" data-trix-attribute=\"quote\" title=\"').concat(s.quote,'\" tabindex=\"-1\">').concat(s.quote,'</button>\\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-code\" data-trix-attribute=\"code\" title=\"').concat(s.code,'\" tabindex=\"-1\">').concat(s.code,'</button>\\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-bullet-list\" data-trix-attribute=\"bullet\" title=\"').concat(s.bullets,'\" tabindex=\"-1\">').concat(s.bullets,'</button>\\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-number-list\" data-trix-attribute=\"number\" title=\"').concat(s.numbers,'\" tabindex=\"-1\">').concat(s.numbers,'</button>\\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-decrease-nesting-level\" data-trix-action=\"decreaseNestingLevel\" title=\"').concat(s.outdent,'\" tabindex=\"-1\">').concat(s.outdent,'</button>\\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-increase-nesting-level\" data-trix-action=\"increaseNestingLevel\" title=\"').concat(s.indent,'\" tabindex=\"-1\">').concat(s.indent,'</button>\\n      </span>\\n\\n      <span class=\"trix-button-group trix-button-group--file-tools\" data-trix-button-group=\"file-tools\">\\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-attach\" data-trix-action=\"attachFiles\" title=\"').concat(s.attachFiles,'\" tabindex=\"-1\">').concat(s.attachFiles,'</button>\\n      </span>\\n\\n      <span class=\"trix-button-group-spacer\"></span>\\n\\n      <span class=\"trix-button-group trix-button-group--history-tools\" data-trix-button-group=\"history-tools\">\\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-undo\" data-trix-action=\"undo\" data-trix-key=\"z\" title=\"').concat(s.undo,'\" tabindex=\"-1\">').concat(s.undo,'</button>\\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-redo\" data-trix-action=\"redo\" data-trix-key=\"shift+z\" title=\"').concat(s.redo,'\" tabindex=\"-1\">').concat(s.redo,'</button>\\n      </span>\\n    </div>\\n\\n    <div class=\"trix-dialogs\" data-trix-dialogs>\\n      <div class=\"trix-dialog trix-dialog--link\" data-trix-dialog=\"href\" data-trix-dialog-attribute=\"href\">\\n        <div class=\"trix-dialog__link-fields\">\\n          <input type=\"url\" name=\"href\" class=\"trix-input trix-input--dialog\" placeholder=\"').concat(s.urlPlaceholder,'\" aria-label=\"').concat(s.url,'\" required data-trix-input>\\n          <div class=\"trix-button-group\">\\n            <input type=\"button\" class=\"trix-button trix-button--dialog\" value=\"').concat(s.link,'\" data-trix-method=\"setAttribute\">\\n            <input type=\"button\" class=\"trix-button trix-button--dialog\" value=\"').concat(s.unlink,'\" data-trix-method=\"removeAttribute\">\\n          </div>\\n        </div>\\n      </div>\\n    </div>')};const j={interval:5e3};var W=Object.freeze({__proto__:null,attachments:t,blockAttributes:e,browser:o,css:{attachment:\"attachment\",attachmentCaption:\"attachment__caption\",attachmentCaptionEditor:\"attachment__caption-editor\",attachmentMetadata:\"attachment__metadata\",attachmentMetadataContainer:\"attachment__metadata-container\",attachmentName:\"attachment__name\",attachmentProgress:\"attachment__progress\",attachmentSize:\"attachment__size\",attachmentToolbar:\"attachment__toolbar\",attachmentGallery:\"attachment-gallery\"},fileSize:l,input:P,keyNames:{8:\"backspace\",9:\"tab\",13:\"return\",27:\"escape\",37:\"left\",39:\"right\",46:\"delete\",68:\"d\",72:\"h\",79:\"o\"},lang:s,parser:N,textAttributes:O,toolbar:M,undo:j});class U{static proxyMethod(t){const{name:e,toMethod:i,toProperty:n,optional:r}=q(t);this.prototype[e]=function(){let t,o;var s,a;i?o=r?null===(s=this[i])||void 0===s?void 0:s.call(this):this[i]():n&&(o=this[n]);return r?(t=null===(a=o)||void 0===a?void 0:a[e],t?V.call(t,o,arguments):void 0):(t=o[e],V.call(t,o,arguments))}}}const q=function(t){const e=t.match(z);if(!e)throw new Error(\"can't parse @proxyMethod expression: \".concat(t));const i={name:e[4]};return null!=e[2]?i.toMethod=e[1]:i.toProperty=e[1],null!=e[3]&&(i.optional=!0),i},{apply:V}=Function.prototype,z=new RegExp(\"^(.+?)(\\\\(\\\\))?(\\\\?)?\\\\.(.+?)$\");var _,H,J;class K extends U{static box(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"\";return t instanceof this?t:this.fromUCS2String(null==t?void 0:t.toString())}static fromUCS2String(t){return new this(t,Y(t))}static fromCodepoints(t){return new this(Q(t),t)}constructor(t,e){super(...arguments),this.ucs2String=t,this.codepoints=e,this.length=this.codepoints.length,this.ucs2Length=this.ucs2String.length}offsetToUCS2Offset(t){return Q(this.codepoints.slice(0,Math.max(0,t))).length}offsetFromUCS2Offset(t){return Y(this.ucs2String.slice(0,Math.max(0,t))).length}slice(){return this.constructor.fromCodepoints(this.codepoints.slice(...arguments))}charAt(t){return this.slice(t,t+1)}isEqualTo(t){return this.constructor.box(t).ucs2String===this.ucs2String}toJSON(){return this.ucs2String}getCacheKey(){return this.ucs2String}toString(){return this.ucs2String}}const G=1===(null===(_=Array.from)||void 0===_?void 0:_.call(Array,\"\uD83D\uDC7C\").length),$=null!=(null===(H=\" \".codePointAt)||void 0===H?void 0:H.call(\" \",0)),X=\" \uD83D\uDC7C\"===(null===(J=String.fromCodePoint)||void 0===J?void 0:J.call(String,32,128124));let Y,Q;Y=G&&$?t=>Array.from(t).map((t=>t.codePointAt(0))):function(t){const e=[];let i=0;const{length:n}=t;for(;i<n;){let r=t.charCodeAt(i++);if(55296<=r&&r<=56319&&i<n){const e=t.charCodeAt(i++);56320==(64512&e)?r=((1023&r)<<10)+(1023&e)+65536:i--}e.push(r)}return e},Q=X?t=>String.fromCodePoint(...Array.from(t||[])):function(t){return(()=>{const e=[];return Array.from(t).forEach((t=>{let i=\"\";t>65535&&(t-=65536,i+=String.fromCharCode(t>>>10&1023|55296),t=56320|1023&t),e.push(i+String.fromCharCode(t))})),e})().join(\"\")};let Z=0;class tt extends U{static fromJSONString(t){return this.fromJSON(JSON.parse(t))}constructor(){super(...arguments),this.id=++Z}hasSameConstructorAs(t){return this.constructor===(null==t?void 0:t.constructor)}isEqualTo(t){return this===t}inspect(){const t=[],e=this.contentsForInspection()||{};for(const i in e){const n=e[i];t.push(\"\".concat(i,\"=\").concat(n))}return\"#<\".concat(this.constructor.name,\":\").concat(this.id).concat(t.length?\" \".concat(t.join(\", \")):\"\",\">\")}contentsForInspection(){}toJSONString(){return JSON.stringify(this)}toUTF16String(){return K.box(this)}getCacheKey(){return this.id.toString()}}const et=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];if(t.length!==e.length)return!1;for(let i=0;i<t.length;i++){if(t[i]!==e[i])return!1}return!0},it=function(t){const e=t.slice(0);for(var i=arguments.length,n=new Array(i>1?i-1:0),r=1;r<i;r++)n[r-1]=arguments[r];return e.splice(...n),e},nt=/[\\u05BE\\u05C0\\u05C3\\u05D0-\\u05EA\\u05F0-\\u05F4\\u061B\\u061F\\u0621-\\u063A\\u0640-\\u064A\\u066D\\u0671-\\u06B7\\u06BA-\\u06BE\\u06C0-\\u06CE\\u06D0-\\u06D5\\u06E5\\u06E6\\u200F\\u202B\\u202E\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE72\\uFE74\\uFE76-\\uFEFC]/,rt=function(){const t=C(\"input\",{dir:\"auto\",name:\"x\",dirName:\"x.dir\"}),e=C(\"form\");e.appendChild(t);const i=function(){try{return new FormData(e).has(t.dirName)}catch(t){return!1}}(),n=function(){try{return t.matches(\":dir(ltr),:dir(rtl)\")}catch(t){return!1}}();return i?function(i){return t.value=i,new FormData(e).get(t.dirName)}:n?function(e){return t.value=e,t.matches(\":dir(rtl)\")?\"rtl\":\"ltr\"}:function(t){const e=t.trim().charAt(0);return nt.test(e)?\"rtl\":\"ltr\"}}();let ot=null,st=null,at=null,lt=null;const ct=()=>(ot||(ot=gt().concat(ut())),ot),ht=t=>e[t],ut=()=>(st||(st=Object.keys(e)),st),dt=t=>O[t],gt=()=>(at||(at=Object.keys(O)),at),mt=function(t,e){pt(t).textContent=e.replace(/%t/g,t)},pt=function(t){const e=document.createElement(\"style\");e.setAttribute(\"type\",\"text/css\"),e.setAttribute(\"data-tag-name\",t.toLowerCase());const i=ft();return i&&e.setAttribute(\"nonce\",i),document.head.insertBefore(e,document.head.firstChild),e},ft=function(){const t=bt(\"trix-csp-nonce\")||bt(\"csp-nonce\");if(t)return t.getAttribute(\"content\")},bt=t=>document.head.querySelector(\"meta[name=\".concat(t,\"]\")),vt={\"application/x-trix-feature-detection\":\"test\"},At=function(t){const e=t.getData(\"text/plain\"),i=t.getData(\"text/html\");if(!e||!i)return null==e?void 0:e.length;{const{body:t}=(new DOMParser).parseFromString(i,\"text/html\");if(t.textContent===e)return!t.querySelector(\"*\")}},xt=/Mac|^iP/.test(navigator.platform)?t=>t.metaKey:t=>t.ctrlKey,yt=t=>setTimeout(t,1),Ct=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const e={};for(const i in t){const n=t[i];e[i]=n}return e},Rt=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(Object.keys(t).length!==Object.keys(e).length)return!1;for(const i in t){if(t[i]!==e[i])return!1}return!0},Et=function(t){if(null!=t)return Array.isArray(t)||(t=[t,t]),[Lt(t[0]),Lt(null!=t[1]?t[1]:t[0])]},St=function(t){if(null==t)return;const[e,i]=Et(t);return Dt(e,i)},kt=function(t,e){if(null==t||null==e)return;const[i,n]=Et(t),[r,o]=Et(e);return Dt(i,r)&&Dt(n,o)},Lt=function(t){return\"number\"==typeof t?t:Ct(t)},Dt=function(t,e){return\"number\"==typeof t?t===e:Rt(t,e)};class wt extends U{constructor(){super(...arguments),this.update=this.update.bind(this),this.run=this.run.bind(this),this.selectionManagers=[]}start(){if(!this.started)return this.started=!0,\"onselectionchange\"in document?document.addEventListener(\"selectionchange\",this.update,!0):this.run()}stop(){if(this.started)return this.started=!1,document.removeEventListener(\"selectionchange\",this.update,!0)}registerSelectionManager(t){if(!this.selectionManagers.includes(t))return this.selectionManagers.push(t),this.start()}unregisterSelectionManager(t){if(this.selectionManagers=this.selectionManagers.filter((e=>e!==t)),0===this.selectionManagers.length)return this.stop()}notifySelectionManagersOfSelectionChange(){return this.selectionManagers.map((t=>t.selectionDidChange()))}update(){const t=It();if(!Tt(t,this.domRange))return this.domRange=t,this.notifySelectionManagersOfSelectionChange()}reset(){return this.domRange=null,this.update()}run(){if(this.started)return this.update(),requestAnimationFrame(this.run)}}const Tt=(t,e)=>(null==t?void 0:t.startContainer)===(null==e?void 0:e.startContainer)&&(null==t?void 0:t.startOffset)===(null==e?void 0:e.startOffset)&&(null==t?void 0:t.endContainer)===(null==e?void 0:e.endContainer)&&(null==t?void 0:t.endOffset)===(null==e?void 0:e.endOffset),Ft=new wt,Bt=function(){const t=window.getSelection();if(t.rangeCount>0)return t},It=function(){var t;const e=null===(t=Bt())||void 0===t?void 0:t.getRangeAt(0);if(e&&!Nt(e))return e},Pt=function(t){const e=window.getSelection();return e.removeAllRanges(),e.addRange(t),Ft.update()},Nt=t=>Ot(t.startContainer)||Ot(t.endContainer),Ot=t=>!Object.getPrototypeOf(t),Mt=t=>t.replace(new RegExp(\"\".concat(\"\\ufeff\"),\"g\"),\"\").replace(new RegExp(\"\".concat(\"\u00A0\"),\"g\"),\" \"),jt=new RegExp(\"[^\\\\S\".concat(\"\u00A0\",\"]\")),Wt=t=>t.replace(new RegExp(\"\".concat(jt.source),\"g\"),\" \").replace(/\\ {2,}/g,\" \"),Ut=function(t,e){if(t.isEqualTo(e))return[\"\",\"\"];const i=qt(t,e),{length:n}=i.utf16String;let r;if(n){const{offset:o}=i,s=t.codepoints.slice(0,o).concat(t.codepoints.slice(o+n));r=qt(e,K.fromCodepoints(s))}else r=qt(e,t);return[i.utf16String.toString(),r.utf16String.toString()]},qt=function(t,e){let i=0,n=t.length,r=e.length;for(;i<n&&t.charAt(i).isEqualTo(e.charAt(i));)i++;for(;n>i+1&&t.charAt(n-1).isEqualTo(e.charAt(r-1));)n--,r--;return{utf16String:t.slice(i,n),offset:i}};class Vt extends tt{static fromCommonAttributesOfObjects(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(!t.length)return new this;let e=Jt(t[0]),i=e.getKeys();return t.slice(1).forEach((t=>{i=e.getKeysCommonToHash(Jt(t)),e=e.slice(i)})),e}static box(t){return Jt(t)}constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};super(...arguments),this.values=Ht(t)}add(t,e){return this.merge(zt(t,e))}remove(t){return new Vt(Ht(this.values,t))}get(t){return this.values[t]}has(t){return t in this.values}merge(t){return new Vt(_t(this.values,Kt(t)))}slice(t){const e={};return Array.from(t).forEach((t=>{this.has(t)&&(e[t]=this.values[t])})),new Vt(e)}getKeys(){return Object.keys(this.values)}getKeysCommonToHash(t){return t=Jt(t),this.getKeys().filter((e=>this.values[e]===t.values[e]))}isEqualTo(t){return et(this.toArray(),Jt(t).toArray())}isEmpty(){return 0===this.getKeys().length}toArray(){if(!this.array){const t=[];for(const e in this.values){const i=this.values[e];t.push(t.push(e,i))}this.array=t.slice(0)}return this.array}toObject(){return Ht(this.values)}toJSON(){return this.toObject()}contentsForInspection(){return{values:JSON.stringify(this.values)}}}const zt=function(t,e){const i={};return i[t]=e,i},_t=function(t,e){const i=Ht(t);for(const t in e){const n=e[t];i[t]=n}return i},Ht=function(t,e){const i={};return Object.keys(t).sort().forEach((n=>{n!==e&&(i[n]=t[n])})),i},Jt=function(t){return t instanceof Vt?t:new Vt(t)},Kt=function(t){return t instanceof Vt?t.values:t};class Gt{static groupObjects(){let t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],{depth:i,asTree:n}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};n&&null==i&&(i=0);const r=[];return Array.from(e).forEach((e=>{var o;if(t){var s,a,l;if(null!==(s=e.canBeGrouped)&&void 0!==s&&s.call(e,i)&&null!==(a=(l=t[t.length-1]).canBeGroupedWith)&&void 0!==a&&a.call(l,e,i))return void t.push(e);r.push(new this(t,{depth:i,asTree:n})),t=null}null!==(o=e.canBeGrouped)&&void 0!==o&&o.call(e,i)?t=[e]:r.push(e)})),t&&r.push(new this(t,{depth:i,asTree:n})),r}constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],{depth:e,asTree:i}=arguments.length>1?arguments[1]:void 0;this.objects=t,i&&(this.depth=e,this.objects=this.constructor.groupObjects(this.objects,{asTree:i,depth:this.depth+1}))}getObjects(){return this.objects}getDepth(){return this.depth}getCacheKey(){const t=[\"objectGroup\"];return Array.from(this.getObjects()).forEach((e=>{t.push(e.getCacheKey())})),t.join(\"/\")}}class $t extends U{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];super(...arguments),this.objects={},Array.from(t).forEach((t=>{const e=JSON.stringify(t);null==this.objects[e]&&(this.objects[e]=t)}))}find(t){const e=JSON.stringify(t);return this.objects[e]}}class Xt{constructor(t){this.reset(t)}add(t){const e=Yt(t);this.elements[e]=t}remove(t){const e=Yt(t),i=this.elements[e];if(i)return delete this.elements[e],i}reset(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return this.elements={},Array.from(t).forEach((t=>{this.add(t)})),t}}const Yt=t=>t.dataset.trixStoreKey;class Qt extends U{isPerforming(){return!0===this.performing}hasPerformed(){return!0===this.performed}hasSucceeded(){return this.performed&&this.succeeded}hasFailed(){return this.performed&&!this.succeeded}getPromise(){return this.promise||(this.promise=new Promise(((t,e)=>(this.performing=!0,this.perform(((i,n)=>{this.succeeded=i,this.performing=!1,this.performed=!0,this.succeeded?t(n):e(n)})))))),this.promise}perform(t){return t(!1)}release(){var t,e;null===(t=this.promise)||void 0===t||null===(e=t.cancel)||void 0===e||e.call(t),this.promise=null,this.performing=null,this.performed=null,this.succeeded=null}}Qt.proxyMethod(\"getPromise().then\"),Qt.proxyMethod(\"getPromise().catch\");class Zt extends U{constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(...arguments),this.object=t,this.options=e,this.childViews=[],this.rootView=this}getNodes(){return this.nodes||(this.nodes=this.createNodes()),this.nodes.map((t=>t.cloneNode(!0)))}invalidate(){var t;return this.nodes=null,this.childViews=[],null===(t=this.parentView)||void 0===t?void 0:t.invalidate()}invalidateViewForObject(t){var e;return null===(e=this.findViewForObject(t))||void 0===e?void 0:e.invalidate()}findOrCreateCachedChildView(t,e,i){let n=this.getCachedViewForObject(e);return n?this.recordChildView(n):(n=this.createChildView(...arguments),this.cacheViewForObject(n,e)),n}createChildView(t,e){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};e instanceof Gt&&(i.viewClass=t,t=te);const n=new t(e,i);return this.recordChildView(n)}recordChildView(t){return t.parentView=this,t.rootView=this.rootView,this.childViews.push(t),t}getAllChildViews(){let t=[];return this.childViews.forEach((e=>{t.push(e),t=t.concat(e.getAllChildViews())})),t}findElement(){return this.findElementForObject(this.object)}findElementForObject(t){const e=null==t?void 0:t.id;if(e)return this.rootView.element.querySelector(\"[data-trix-id='\".concat(e,\"']\"))}findViewForObject(t){for(const e of this.getAllChildViews())if(e.object===t)return e}getViewCache(){return this.rootView!==this?this.rootView.getViewCache():this.isViewCachingEnabled()?(this.viewCache||(this.viewCache={}),this.viewCache):void 0}isViewCachingEnabled(){return!1!==this.shouldCacheViews}enableViewCaching(){this.shouldCacheViews=!0}disableViewCaching(){this.shouldCacheViews=!1}getCachedViewForObject(t){var e;return null===(e=this.getViewCache())||void 0===e?void 0:e[t.getCacheKey()]}cacheViewForObject(t,e){const i=this.getViewCache();i&&(i[e.getCacheKey()]=t)}garbageCollectCachedViews(){const t=this.getViewCache();if(t){const e=this.getAllChildViews().concat(this).map((t=>t.object.getCacheKey()));for(const i in t)e.includes(i)||delete t[i]}}}class te extends Zt{constructor(){super(...arguments),this.objectGroup=this.object,this.viewClass=this.options.viewClass,delete this.options.viewClass}getChildViews(){return this.childViews.length||Array.from(this.objectGroup.getObjects()).forEach((t=>{this.findOrCreateCachedChildView(this.viewClass,t,this.options)})),this.childViews}createNodes(){const t=this.createContainerElement();return this.getChildViews().forEach((e=>{Array.from(e.getNodes()).forEach((e=>{t.appendChild(e)}))})),[t]}createContainerElement(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.objectGroup.getDepth();return this.getChildViews()[0].createContainerElement(t)}}const{css:ee}=W;class ie extends Zt{constructor(){super(...arguments),this.attachment=this.object,this.attachment.uploadProgressDelegate=this,this.attachmentPiece=this.options.piece}createContentNodes(){return[]}createNodes(){let t;const e=t=C({tagName:\"figure\",className:this.getClassName(),data:this.getData(),editable:!1}),i=this.getHref();return i&&(t=C({tagName:\"a\",editable:!1,attributes:{href:i,tabindex:-1}}),e.appendChild(t)),this.attachment.hasContent()?t.innerHTML=this.attachment.getContent():this.createContentNodes().forEach((e=>{t.appendChild(e)})),t.appendChild(this.createCaptionElement()),this.attachment.isPending()&&(this.progressElement=C({tagName:\"progress\",attributes:{class:ee.attachmentProgress,value:this.attachment.getUploadProgress(),max:100},data:{trixMutable:!0,trixStoreKey:[\"progressElement\",this.attachment.id].join(\"/\")}}),e.appendChild(this.progressElement)),[ne(\"left\"),e,ne(\"right\")]}createCaptionElement(){const t=C({tagName:\"figcaption\",className:ee.attachmentCaption}),e=this.attachmentPiece.getCaption();if(e)t.classList.add(\"\".concat(ee.attachmentCaption,\"--edited\")),t.textContent=e;else{let e,i;const n=this.getCaptionConfig();if(n.name&&(e=this.attachment.getFilename()),n.size&&(i=this.attachment.getFormattedFilesize()),e){const i=C({tagName:\"span\",className:ee.attachmentName,textContent:e});t.appendChild(i)}if(i){e&&t.appendChild(document.createTextNode(\" \"));const n=C({tagName:\"span\",className:ee.attachmentSize,textContent:i});t.appendChild(n)}}return t}getClassName(){const t=[ee.attachment,\"\".concat(ee.attachment,\"--\").concat(this.attachment.getType())],e=this.attachment.getExtension();return e&&t.push(\"\".concat(ee.attachment,\"--\").concat(e)),t.join(\" \")}getData(){const t={trixAttachment:JSON.stringify(this.attachment),trixContentType:this.attachment.getContentType(),trixId:this.attachment.id},{attributes:e}=this.attachmentPiece;return e.isEmpty()||(t.trixAttributes=JSON.stringify(e)),this.attachment.isPending()&&(t.trixSerialize=!1),t}getHref(){if(!re(this.attachment.getContent(),\"a\"))return this.attachment.getHref()}getCaptionConfig(){var e;const i=this.attachment.getType(),n=Ct(null===(e=t[i])||void 0===e?void 0:e.caption);return\"file\"===i&&(n.name=!0),n}findProgressElement(){var t;return null===(t=this.findElement())||void 0===t?void 0:t.querySelector(\"progress\")}attachmentDidChangeUploadProgress(){const t=this.attachment.getUploadProgress(),e=this.findProgressElement();e&&(e.value=t)}}const ne=t=>C({tagName:\"span\",textContent:\"\\ufeff\",data:{trixCursorTarget:t,trixSerialize:!1}}),re=function(t,e){const i=C(\"div\");return i.innerHTML=t||\"\",i.querySelector(e)};class oe extends ie{constructor(){super(...arguments),this.attachment.previewDelegate=this}createContentNodes(){return this.image=C({tagName:\"img\",attributes:{src:\"\"},data:{trixMutable:!0}}),this.refresh(this.image),[this.image]}createCaptionElement(){const t=super.createCaptionElement(...arguments);return t.textContent||t.setAttribute(\"data-trix-placeholder\",s.captionPlaceholder),t}refresh(t){var e;t||(t=null===(e=this.findElement())||void 0===e?void 0:e.querySelector(\"img\"));if(t)return this.updateAttributesForImage(t)}updateAttributesForImage(t){const e=this.attachment.getURL(),i=this.attachment.getPreviewURL();if(t.src=i||e,i===e)t.removeAttribute(\"data-trix-serialized-attributes\");else{const i=JSON.stringify({src:e});t.setAttribute(\"data-trix-serialized-attributes\",i)}const n=this.attachment.getWidth(),r=this.attachment.getHeight();null!=n&&(t.width=n),null!=r&&(t.height=r);const o=[\"imageElement\",this.attachment.id,t.src,t.width,t.height].join(\"/\");t.dataset.trixStoreKey=o}attachmentDidChangeAttributes(){return this.refresh(this.image),this.refresh()}}class se extends Zt{constructor(){super(...arguments),this.piece=this.object,this.attributes=this.piece.getAttributes(),this.textConfig=this.options.textConfig,this.context=this.options.context,this.piece.attachment?this.attachment=this.piece.attachment:this.string=this.piece.toString()}createNodes(){let t=this.attachment?this.createAttachmentNodes():this.createStringNodes();const e=this.createElement();if(e){const i=function(t){for(;null!==(e=t)&&void 0!==e&&e.firstElementChild;){var e;t=t.firstElementChild}return t}(e);Array.from(t).forEach((t=>{i.appendChild(t)})),t=[e]}return t}createAttachmentNodes(){const t=this.attachment.isPreviewable()?oe:ie;return this.createChildView(t,this.piece.attachment,{piece:this.piece}).getNodes()}createStringNodes(){var t;if(null!==(t=this.textConfig)&&void 0!==t&&t.plaintext)return[document.createTextNode(this.string)];{const t=[],e=this.string.split(\"\\n\");for(let i=0;i<e.length;i++){const n=e[i];if(i>0){const e=C(\"br\");t.push(e)}if(n.length){const e=document.createTextNode(this.preserveSpaces(n));t.push(e)}}return t}}createElement(){let t,e,i;const n={};for(e in this.attributes){i=this.attributes[e];const o=dt(e);if(o){if(o.tagName){var r;const e=C(o.tagName);r?(r.appendChild(e),r=e):t=r=e}if(o.styleProperty&&(n[o.styleProperty]=i),o.style)for(e in o.style)i=o.style[e],n[e]=i}}if(Object.keys(n).length)for(e in t||(t=C(\"span\")),n)i=n[e],t.style[e]=i;return t}createContainerElement(){for(const t in this.attributes){const e=this.attributes[t],i=dt(t);if(i&&i.groupTagName){const n={};return n[t]=e,C(i.groupTagName,n)}}}preserveSpaces(t){return this.context.isLast&&(t=t.replace(/\\ $/,\"\u00A0\")),t=t.replace(/(\\S)\\ {3}(\\S)/g,\"$1 \".concat(\"\u00A0\",\" $2\")).replace(/\\ {2}/g,\"\".concat(\"\u00A0\",\" \")).replace(/\\ {2}/g,\" \".concat(\"\u00A0\")),(this.context.isFirst||this.context.followsWhitespace)&&(t=t.replace(/^\\ /,\"\u00A0\")),t}}class ae extends Zt{constructor(){super(...arguments),this.text=this.object,this.textConfig=this.options.textConfig}createNodes(){const t=[],e=Gt.groupObjects(this.getPieces()),i=e.length-1;for(let r=0;r<e.length;r++){const o=e[r],s={};0===r&&(s.isFirst=!0),r===i&&(s.isLast=!0),le(n)&&(s.followsWhitespace=!0);const a=this.findOrCreateCachedChildView(se,o,{textConfig:this.textConfig,context:s});t.push(...Array.from(a.getNodes()||[]));var n=o}return t}getPieces(){return Array.from(this.text.getPieces()).filter((t=>!t.hasAttribute(\"blockBreak\")))}}const le=t=>/\\s$/.test(null==t?void 0:t.toString()),{css:ce}=W;class he extends Zt{constructor(){super(...arguments),this.block=this.object,this.attributes=this.block.getAttributes()}createNodes(){const t=[document.createComment(\"block\")];if(this.block.isEmpty())t.push(C(\"br\"));else{var i;const e=null===(i=ht(this.block.getLastAttribute()))||void 0===i?void 0:i.text,n=this.findOrCreateCachedChildView(ae,this.block.text,{textConfig:e});t.push(...Array.from(n.getNodes()||[])),this.shouldAddExtraNewlineElement()&&t.push(C(\"br\"))}if(this.attributes.length)return t;{let i;const{tagName:n}=e.default;this.block.isRTL()&&(i={dir:\"rtl\"});const r=C({tagName:n,attributes:i});return t.forEach((t=>r.appendChild(t))),[r]}}createContainerElement(t){let e,i;const n=this.attributes[t],{tagName:r}=ht(n);if(0===t&&this.block.isRTL()&&(e={dir:\"rtl\"}),\"attachmentGallery\"===n){const t=this.block.getBlockBreakPosition();i=\"\".concat(ce.attachmentGallery,\" \").concat(ce.attachmentGallery,\"--\").concat(t)}return C({tagName:r,className:i,attributes:e})}shouldAddExtraNewlineElement(){return/\\n\\n$/.test(this.block.toString())}}class ue extends Zt{static render(t){const e=C(\"div\"),i=new this(t,{element:e});return i.render(),i.sync(),e}constructor(){super(...arguments),this.element=this.options.element,this.elementStore=new Xt,this.setDocument(this.object)}setDocument(t){t.isEqualTo(this.document)||(this.document=this.object=t)}render(){if(this.childViews=[],this.shadowElement=C(\"div\"),!this.document.isEmpty()){const t=Gt.groupObjects(this.document.getBlocks(),{asTree:!0});Array.from(t).forEach((t=>{const e=this.findOrCreateCachedChildView(he,t);Array.from(e.getNodes()).map((t=>this.shadowElement.appendChild(t)))}))}}isSynced(){return ge(this.shadowElement,this.element)}sync(){const t=this.createDocumentFragmentForSync();for(;this.element.lastChild;)this.element.removeChild(this.element.lastChild);return this.element.appendChild(t),this.didSync()}didSync(){return this.elementStore.reset(de(this.element)),yt((()=>this.garbageCollectCachedViews()))}createDocumentFragmentForSync(){const t=document.createDocumentFragment();return Array.from(this.shadowElement.childNodes).forEach((e=>{t.appendChild(e.cloneNode(!0))})),Array.from(de(t)).forEach((t=>{const e=this.elementStore.remove(t);e&&t.parentNode.replaceChild(e,t)})),t}}const de=t=>t.querySelectorAll(\"[data-trix-store-key]\"),ge=(t,e)=>me(t.innerHTML)===me(e.innerHTML),me=t=>t.replace(/&nbsp;/g,\" \");function pe(t){this.wrapped=t}function fe(t){var e,i;function n(e,i){try{var o=t[e](i),s=o.value,a=s instanceof pe;Promise.resolve(a?s.wrapped:s).then((function(t){a?n(\"return\"===e?\"return\":\"next\",t):r(o.done?\"return\":\"normal\",t)}),(function(t){n(\"throw\",t)}))}catch(t){r(\"throw\",t)}}function r(t,r){switch(t){case\"return\":e.resolve({value:r,done:!0});break;case\"throw\":e.reject(r);break;default:e.resolve({value:r,done:!1})}(e=e.next)?n(e.key,e.arg):i=null}this._invoke=function(t,r){return new Promise((function(o,s){var a={key:t,arg:r,resolve:o,reject:s,next:null};i?i=i.next=a:(e=i=a,n(t,r))}))},\"function\"!=typeof t.return&&(this.return=void 0)}function be(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}fe.prototype[\"function\"==typeof Symbol&&Symbol.asyncIterator||\"@@asyncIterator\"]=function(){return this},fe.prototype.next=function(t){return this._invoke(\"next\",t)},fe.prototype.throw=function(t){return this._invoke(\"throw\",t)},fe.prototype.return=function(t){return this._invoke(\"return\",t)};class ve extends tt{static registerType(t,e){e.type=t,this.types[t]=e}static fromJSON(t){const e=this.types[t.type];if(e)return e.fromJSON(t)}constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(...arguments),this.attributes=Vt.box(e)}copyWithAttributes(t){return new this.constructor(this.getValue(),t)}copyWithAdditionalAttributes(t){return this.copyWithAttributes(this.attributes.merge(t))}copyWithoutAttribute(t){return this.copyWithAttributes(this.attributes.remove(t))}copy(){return this.copyWithAttributes(this.attributes)}getAttribute(t){return this.attributes.get(t)}getAttributesHash(){return this.attributes}getAttributes(){return this.attributes.toObject()}hasAttribute(t){return this.attributes.has(t)}hasSameStringValueAsPiece(t){return t&&this.toString()===t.toString()}hasSameAttributesAsPiece(t){return t&&(this.attributes===t.attributes||this.attributes.isEqualTo(t.attributes))}isBlockBreak(){return!1}isEqualTo(t){return super.isEqualTo(...arguments)||this.hasSameConstructorAs(t)&&this.hasSameStringValueAsPiece(t)&&this.hasSameAttributesAsPiece(t)}isEmpty(){return 0===this.length}isSerializable(){return!0}toJSON(){return{type:this.constructor.type,attributes:this.getAttributes()}}contentsForInspection(){return{type:this.constructor.type,attributes:this.attributes.inspect()}}canBeGrouped(){return this.hasAttribute(\"href\")}canBeGroupedWith(t){return this.getAttribute(\"href\")===t.getAttribute(\"href\")}getLength(){return this.length}canBeConsolidatedWith(t){return!1}}be(ve,\"types\",{});class Ae extends Qt{constructor(t){super(...arguments),this.url=t}perform(t){const e=new Image;e.onload=()=>(e.width=this.width=e.naturalWidth,e.height=this.height=e.naturalHeight,t(!0,e)),e.onerror=()=>t(!1),e.src=this.url}}class xe extends tt{static attachmentForFile(t){const e=new this(this.attributesForFile(t));return e.setFile(t),e}static attributesForFile(t){return new Vt({filename:t.name,filesize:t.size,contentType:t.type})}static fromJSON(t){return new this(t)}constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};super(t),this.releaseFile=this.releaseFile.bind(this),this.attributes=Vt.box(t),this.didChangeAttributes()}getAttribute(t){return this.attributes.get(t)}hasAttribute(t){return this.attributes.has(t)}getAttributes(){return this.attributes.toObject()}setAttributes(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const e=this.attributes.merge(t);var i,n,r,o;if(!this.attributes.isEqualTo(e))return this.attributes=e,this.didChangeAttributes(),null===(i=this.previewDelegate)||void 0===i||null===(n=i.attachmentDidChangeAttributes)||void 0===n||n.call(i,this),null===(r=this.delegate)||void 0===r||null===(o=r.attachmentDidChangeAttributes)||void 0===o?void 0:o.call(r,this)}didChangeAttributes(){if(this.isPreviewable())return this.preloadURL()}isPending(){return null!=this.file&&!(this.getURL()||this.getHref())}isPreviewable(){return this.attributes.has(\"previewable\")?this.attributes.get(\"previewable\"):xe.previewablePattern.test(this.getContentType())}getType(){return this.hasContent()?\"content\":this.isPreviewable()?\"preview\":\"file\"}getURL(){return this.attributes.get(\"url\")}getHref(){return this.attributes.get(\"href\")}getFilename(){return this.attributes.get(\"filename\")||\"\"}getFilesize(){return this.attributes.get(\"filesize\")}getFormattedFilesize(){const t=this.attributes.get(\"filesize\");return\"number\"==typeof t?l.formatter(t):\"\"}getExtension(){var t;return null===(t=this.getFilename().match(/\\.(\\w+)$/))||void 0===t?void 0:t[1].toLowerCase()}getContentType(){return this.attributes.get(\"contentType\")}hasContent(){return this.attributes.has(\"content\")}getContent(){return this.attributes.get(\"content\")}getWidth(){return this.attributes.get(\"width\")}getHeight(){return this.attributes.get(\"height\")}getFile(){return this.file}setFile(t){if(this.file=t,this.isPreviewable())return this.preloadFile()}releaseFile(){this.releasePreloadedFile(),this.file=null}getUploadProgress(){return null!=this.uploadProgress?this.uploadProgress:0}setUploadProgress(t){var e,i;if(this.uploadProgress!==t)return this.uploadProgress=t,null===(e=this.uploadProgressDelegate)||void 0===e||null===(i=e.attachmentDidChangeUploadProgress)||void 0===i?void 0:i.call(e,this)}toJSON(){return this.getAttributes()}getCacheKey(){return[super.getCacheKey(...arguments),this.attributes.getCacheKey(),this.getPreviewURL()].join(\"/\")}getPreviewURL(){return this.previewURL||this.preloadingURL}setPreviewURL(t){var e,i,n,r;if(t!==this.getPreviewURL())return this.previewURL=t,null===(e=this.previewDelegate)||void 0===e||null===(i=e.attachmentDidChangeAttributes)||void 0===i||i.call(e,this),null===(n=this.delegate)||void 0===n||null===(r=n.attachmentDidChangePreviewURL)||void 0===r?void 0:r.call(n,this)}preloadURL(){return this.preload(this.getURL(),this.releaseFile)}preloadFile(){if(this.file)return this.fileObjectURL=URL.createObjectURL(this.file),this.preload(this.fileObjectURL)}releasePreloadedFile(){this.fileObjectURL&&(URL.revokeObjectURL(this.fileObjectURL),this.fileObjectURL=null)}preload(t,e){if(t&&t!==this.getPreviewURL()){this.preloadingURL=t;return new Ae(t).then((i=>{let{width:n,height:r}=i;return this.getWidth()&&this.getHeight()||this.setAttributes({width:n,height:r}),this.preloadingURL=null,this.setPreviewURL(t),null==e?void 0:e()})).catch((()=>(this.preloadingURL=null,null==e?void 0:e())))}}}be(xe,\"previewablePattern\",/^image(\\/(gif|png|jpe?g)|$)/);class ye extends ve{static fromJSON(t){return new this(xe.fromJSON(t.attachment),t.attributes)}constructor(t){super(...arguments),this.attachment=t,this.length=1,this.ensureAttachmentExclusivelyHasAttribute(\"href\"),this.attachment.hasContent()||this.removeProhibitedAttributes()}ensureAttachmentExclusivelyHasAttribute(t){this.hasAttribute(t)&&(this.attachment.hasAttribute(t)||this.attachment.setAttributes(this.attributes.slice([t])),this.attributes=this.attributes.remove(t))}removeProhibitedAttributes(){const t=this.attributes.slice(ye.permittedAttributes);t.isEqualTo(this.attributes)||(this.attributes=t)}getValue(){return this.attachment}isSerializable(){return!this.attachment.isPending()}getCaption(){return this.attributes.get(\"caption\")||\"\"}isEqualTo(t){var e;return super.isEqualTo(t)&&this.attachment.id===(null==t||null===(e=t.attachment)||void 0===e?void 0:e.id)}toString(){return\"\uFFFC\"}toJSON(){const t=super.toJSON(...arguments);return t.attachment=this.attachment,t}getCacheKey(){return[super.getCacheKey(...arguments),this.attachment.getCacheKey()].join(\"/\")}toConsole(){return JSON.stringify(this.toString())}}be(ye,\"permittedAttributes\",[\"caption\",\"presentation\"]),ve.registerType(\"attachment\",ye);class Ce extends ve{static fromJSON(t){return new this(t.string,t.attributes)}constructor(t){super(...arguments),this.string=(t=>t.replace(/\\r\\n/g,\"\\n\"))(t),this.length=this.string.length}getValue(){return this.string}toString(){return this.string.toString()}isBlockBreak(){return\"\\n\"===this.toString()&&!0===this.getAttribute(\"blockBreak\")}toJSON(){const t=super.toJSON(...arguments);return t.string=this.string,t}canBeConsolidatedWith(t){return t&&this.hasSameConstructorAs(t)&&this.hasSameAttributesAsPiece(t)}consolidateWith(t){return new this.constructor(this.toString()+t.toString(),this.attributes)}splitAtOffset(t){let e,i;return 0===t?(e=null,i=this):t===this.length?(e=this,i=null):(e=new this.constructor(this.string.slice(0,t),this.attributes),i=new this.constructor(this.string.slice(t),this.attributes)),[e,i]}toConsole(){let{string:t}=this;return t.length>15&&(t=t.slice(0,14)+\"\u2026\"),JSON.stringify(t.toString())}}ve.registerType(\"string\",Ce);class Re extends tt{static box(t){return t instanceof this?t:new this(t)}constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];super(...arguments),this.objects=t.slice(0),this.length=this.objects.length}indexOf(t){return this.objects.indexOf(t)}splice(){for(var t=arguments.length,e=new Array(t),i=0;i<t;i++)e[i]=arguments[i];return new this.constructor(it(this.objects,...e))}eachObject(t){return this.objects.map(((e,i)=>t(e,i)))}insertObjectAtIndex(t,e){return this.splice(e,0,t)}insertSplittableListAtIndex(t,e){return this.splice(e,0,...t.objects)}insertSplittableListAtPosition(t,e){const[i,n]=this.splitObjectAtPosition(e);return new this.constructor(i).insertSplittableListAtIndex(t,n)}editObjectAtIndex(t,e){return this.replaceObjectAtIndex(e(this.objects[t]),t)}replaceObjectAtIndex(t,e){return this.splice(e,1,t)}removeObjectAtIndex(t){return this.splice(t,1)}getObjectAtIndex(t){return this.objects[t]}getSplittableListInRange(t){const[e,i,n]=this.splitObjectsAtRange(t);return new this.constructor(e.slice(i,n+1))}selectSplittableList(t){const e=this.objects.filter((e=>t(e)));return new this.constructor(e)}removeObjectsInRange(t){const[e,i,n]=this.splitObjectsAtRange(t);return new this.constructor(e).splice(i,n-i+1)}transformObjectsInRange(t,e){const[i,n,r]=this.splitObjectsAtRange(t),o=i.map(((t,i)=>n<=i&&i<=r?e(t):t));return new this.constructor(o)}splitObjectsAtRange(t){let e,[i,n,r]=this.splitObjectAtPosition(Se(t));return[i,e]=new this.constructor(i).splitObjectAtPosition(ke(t)+r),[i,n,e-1]}getObjectAtPosition(t){const{index:e}=this.findIndexAndOffsetAtPosition(t);return this.objects[e]}splitObjectAtPosition(t){let e,i;const{index:n,offset:r}=this.findIndexAndOffsetAtPosition(t),o=this.objects.slice(0);if(null!=n)if(0===r)e=n,i=0;else{const t=this.getObjectAtIndex(n),[s,a]=t.splitAtOffset(r);o.splice(n,1,s,a),e=n+1,i=s.getLength()-r}else e=o.length,i=0;return[o,e,i]}consolidate(){const t=[];let e=this.objects[0];return this.objects.slice(1).forEach((i=>{var n,r;null!==(n=(r=e).canBeConsolidatedWith)&&void 0!==n&&n.call(r,i)?e=e.consolidateWith(i):(t.push(e),e=i)})),e&&t.push(e),new this.constructor(t)}consolidateFromIndexToIndex(t,e){const i=this.objects.slice(0).slice(t,e+1),n=new this.constructor(i).consolidate().toArray();return this.splice(t,i.length,...n)}findIndexAndOffsetAtPosition(t){let e,i=0;for(e=0;e<this.objects.length;e++){const n=i+this.objects[e].getLength();if(i<=t&&t<n)return{index:e,offset:t-i};i=n}return{index:null,offset:null}}findPositionAtIndexAndOffset(t,e){let i=0;for(let n=0;n<this.objects.length;n++){const r=this.objects[n];if(n<t)i+=r.getLength();else if(n===t){i+=e;break}}return i}getEndPosition(){return null==this.endPosition&&(this.endPosition=0,this.objects.forEach((t=>this.endPosition+=t.getLength()))),this.endPosition}toString(){return this.objects.join(\"\")}toArray(){return this.objects.slice(0)}toJSON(){return this.toArray()}isEqualTo(t){return super.isEqualTo(...arguments)||Ee(this.objects,null==t?void 0:t.objects)}contentsForInspection(){return{objects:\"[\".concat(this.objects.map((t=>t.inspect())).join(\", \"),\"]\")}}}const Ee=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];if(t.length!==e.length)return!1;let i=!0;for(let n=0;n<t.length;n++){const r=t[n];i&&!r.isEqualTo(e[n])&&(i=!1)}return i},Se=t=>t[0],ke=t=>t[1];class Le extends tt{static textForAttachmentWithAttributes(t,e){return new this([new ye(t,e)])}static textForStringWithAttributes(t,e){return new this([new Ce(t,e)])}static fromJSON(t){return new this(Array.from(t).map((t=>ve.fromJSON(t))))}constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];super(...arguments);const e=t.filter((t=>!t.isEmpty()));this.pieceList=new Re(e)}copy(){return this.copyWithPieceList(this.pieceList)}copyWithPieceList(t){return new this.constructor(t.consolidate().toArray())}copyUsingObjectMap(t){const e=this.getPieces().map((e=>t.find(e)||e));return new this.constructor(e)}appendText(t){return this.insertTextAtPosition(t,this.getLength())}insertTextAtPosition(t,e){return this.copyWithPieceList(this.pieceList.insertSplittableListAtPosition(t.pieceList,e))}removeTextAtRange(t){return this.copyWithPieceList(this.pieceList.removeObjectsInRange(t))}replaceTextAtRange(t,e){return this.removeTextAtRange(e).insertTextAtPosition(t,e[0])}moveTextFromRangeToPosition(t,e){if(t[0]<=e&&e<=t[1])return;const i=this.getTextAtRange(t),n=i.getLength();return t[0]<e&&(e-=n),this.removeTextAtRange(t).insertTextAtPosition(i,e)}addAttributeAtRange(t,e,i){const n={};return n[t]=e,this.addAttributesAtRange(n,i)}addAttributesAtRange(t,e){return this.copyWithPieceList(this.pieceList.transformObjectsInRange(e,(e=>e.copyWithAdditionalAttributes(t))))}removeAttributeAtRange(t,e){return this.copyWithPieceList(this.pieceList.transformObjectsInRange(e,(e=>e.copyWithoutAttribute(t))))}setAttributesAtRange(t,e){return this.copyWithPieceList(this.pieceList.transformObjectsInRange(e,(e=>e.copyWithAttributes(t))))}getAttributesAtPosition(t){var e;return(null===(e=this.pieceList.getObjectAtPosition(t))||void 0===e?void 0:e.getAttributes())||{}}getCommonAttributes(){const t=Array.from(this.pieceList.toArray()).map((t=>t.getAttributes()));return Vt.fromCommonAttributesOfObjects(t).toObject()}getCommonAttributesAtRange(t){return this.getTextAtRange(t).getCommonAttributes()||{}}getExpandedRangeForAttributeAtOffset(t,e){let i,n=i=e;const r=this.getLength();for(;n>0&&this.getCommonAttributesAtRange([n-1,i])[t];)n--;for(;i<r&&this.getCommonAttributesAtRange([e,i+1])[t];)i++;return[n,i]}getTextAtRange(t){return this.copyWithPieceList(this.pieceList.getSplittableListInRange(t))}getStringAtRange(t){return this.pieceList.getSplittableListInRange(t).toString()}getStringAtPosition(t){return this.getStringAtRange([t,t+1])}startsWithString(t){return this.getStringAtRange([0,t.length])===t}endsWithString(t){const e=this.getLength();return this.getStringAtRange([e-t.length,e])===t}getAttachmentPieces(){return this.pieceList.toArray().filter((t=>!!t.attachment))}getAttachments(){return this.getAttachmentPieces().map((t=>t.attachment))}getAttachmentAndPositionById(t){let e=0;for(const n of this.pieceList.toArray()){var i;if((null===(i=n.attachment)||void 0===i?void 0:i.id)===t)return{attachment:n.attachment,position:e};e+=n.length}return{attachment:null,position:null}}getAttachmentById(t){const{attachment:e}=this.getAttachmentAndPositionById(t);return e}getRangeOfAttachment(t){const e=this.getAttachmentAndPositionById(t.id),i=e.position;if(t=e.attachment)return[i,i+1]}updateAttributesForAttachment(t,e){const i=this.getRangeOfAttachment(e);return i?this.addAttributesAtRange(t,i):this}getLength(){return this.pieceList.getEndPosition()}isEmpty(){return 0===this.getLength()}isEqualTo(t){var e;return super.isEqualTo(t)||(null==t||null===(e=t.pieceList)||void 0===e?void 0:e.isEqualTo(this.pieceList))}isBlockBreak(){return 1===this.getLength()&&this.pieceList.getObjectAtIndex(0).isBlockBreak()}eachPiece(t){return this.pieceList.eachObject(t)}getPieces(){return this.pieceList.toArray()}getPieceAtPosition(t){return this.pieceList.getObjectAtPosition(t)}contentsForInspection(){return{pieceList:this.pieceList.inspect()}}toSerializableText(){const t=this.pieceList.selectSplittableList((t=>t.isSerializable()));return this.copyWithPieceList(t)}toString(){return this.pieceList.toString()}toJSON(){return this.pieceList.toJSON()}toConsole(){return JSON.stringify(this.pieceList.toArray().map((t=>JSON.parse(t.toConsole()))))}getDirection(){return rt(this.toString())}isRTL(){return\"rtl\"===this.getDirection()}}class De extends tt{static fromJSON(t){return new this(Le.fromJSON(t.text),t.attributes)}constructor(t,e){super(...arguments),this.text=we(t||new Le),this.attributes=e||[]}isEmpty(){return this.text.isBlockBreak()}isEqualTo(t){return!!super.isEqualTo(t)||this.text.isEqualTo(null==t?void 0:t.text)&&et(this.attributes,null==t?void 0:t.attributes)}copyWithText(t){return new De(t,this.attributes)}copyWithoutText(){return this.copyWithText(null)}copyWithAttributes(t){return new De(this.text,t)}copyWithoutAttributes(){return this.copyWithAttributes(null)}copyUsingObjectMap(t){const e=t.find(this.text);return e?this.copyWithText(e):this.copyWithText(this.text.copyUsingObjectMap(t))}addAttribute(t){const e=this.attributes.concat(Ne(t));return this.copyWithAttributes(e)}removeAttribute(t){const{listAttribute:e}=ht(t),i=Me(Me(this.attributes,t),e);return this.copyWithAttributes(i)}removeLastAttribute(){return this.removeAttribute(this.getLastAttribute())}getLastAttribute(){return Oe(this.attributes)}getAttributes(){return this.attributes.slice(0)}getAttributeLevel(){return this.attributes.length}getAttributeAtLevel(t){return this.attributes[t-1]}hasAttribute(t){return this.attributes.includes(t)}hasAttributes(){return this.getAttributeLevel()>0}getLastNestableAttribute(){return Oe(this.getNestableAttributes())}getNestableAttributes(){return this.attributes.filter((t=>ht(t).nestable))}getNestingLevel(){return this.getNestableAttributes().length}decreaseNestingLevel(){const t=this.getLastNestableAttribute();return t?this.removeAttribute(t):this}increaseNestingLevel(){const t=this.getLastNestableAttribute();if(t){const e=this.attributes.lastIndexOf(t),i=it(this.attributes,e+1,0,...Ne(t));return this.copyWithAttributes(i)}return this}getListItemAttributes(){return this.attributes.filter((t=>ht(t).listAttribute))}isListItem(){var t;return null===(t=ht(this.getLastAttribute()))||void 0===t?void 0:t.listAttribute}isTerminalBlock(){var t;return null===(t=ht(this.getLastAttribute()))||void 0===t?void 0:t.terminal}breaksOnReturn(){var t;return null===(t=ht(this.getLastAttribute()))||void 0===t?void 0:t.breakOnReturn}findLineBreakInDirectionFromPosition(t,e){const i=this.toString();let n;switch(t){case\"forward\":n=i.indexOf(\"\\n\",e);break;case\"backward\":n=i.slice(0,e).lastIndexOf(\"\\n\")}if(-1!==n)return n}contentsForInspection(){return{text:this.text.inspect(),attributes:this.attributes}}toString(){return this.text.toString()}toJSON(){return{text:this.text,attributes:this.attributes}}getDirection(){return this.text.getDirection()}isRTL(){return this.text.isRTL()}getLength(){return this.text.getLength()}canBeConsolidatedWith(t){return!this.hasAttributes()&&!t.hasAttributes()&&this.getDirection()===t.getDirection()}consolidateWith(t){const e=Le.textForStringWithAttributes(\"\\n\"),i=this.getTextWithoutBlockBreak().appendText(e);return this.copyWithText(i.appendText(t.text))}splitAtOffset(t){let e,i;return 0===t?(e=null,i=this):t===this.getLength()?(e=this,i=null):(e=this.copyWithText(this.text.getTextAtRange([0,t])),i=this.copyWithText(this.text.getTextAtRange([t,this.getLength()]))),[e,i]}getBlockBreakPosition(){return this.text.getLength()-1}getTextWithoutBlockBreak(){return Ie(this.text)?this.text.getTextAtRange([0,this.getBlockBreakPosition()]):this.text.copy()}canBeGrouped(t){return this.attributes[t]}canBeGroupedWith(t,i){const n=t.getAttributes(),r=n[i],o=this.attributes[i];return o===r&&!(!1===ht(o).group&&!(()=>{if(!lt){lt=[];for(const t in e){const{listAttribute:i}=e[t];null!=i&&lt.push(i)}}return lt})().includes(n[i+1]))&&(this.getDirection()===t.getDirection()||t.isEmpty())}}const we=function(t){return t=Te(t),t=Be(t)},Te=function(t){let e=!1;const i=t.getPieces();let n=i.slice(0,i.length-1);const r=i[i.length-1];return r?(n=n.map((t=>t.isBlockBreak()?(e=!0,Pe(t)):t)),e?new Le([...n,r]):t):t},Fe=Le.textForStringWithAttributes(\"\\n\",{blockBreak:!0}),Be=function(t){return Ie(t)?t:t.appendText(Fe)},Ie=function(t){const e=t.getLength();if(0===e)return!1;return t.getTextAtRange([e-1,e]).isBlockBreak()},Pe=t=>t.copyWithoutAttribute(\"blockBreak\"),Ne=function(t){const{listAttribute:e}=ht(t);return e?[e,t]:[t]},Oe=t=>t.slice(-1)[0],Me=function(t,e){const i=t.lastIndexOf(e);return-1===i?t:it(t,i,1)};class je extends tt{static fromJSON(t){return new this(Array.from(t).map((t=>De.fromJSON(t))))}static fromString(t,e){const i=Le.textForStringWithAttributes(t,e);return new this([new De(i)])}constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];super(...arguments),0===t.length&&(t=[new De]),this.blockList=Re.box(t)}isEmpty(){const t=this.getBlockAtIndex(0);return 1===this.blockList.length&&t.isEmpty()&&!t.hasAttributes()}copy(){const t=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).consolidateBlocks?this.blockList.consolidate().toArray():this.blockList.toArray();return new this.constructor(t)}copyUsingObjectsFromDocument(t){const e=new $t(t.getObjects());return this.copyUsingObjectMap(e)}copyUsingObjectMap(t){const e=this.getBlocks().map((e=>t.find(e)||e.copyUsingObjectMap(t)));return new this.constructor(e)}copyWithBaseBlockAttributes(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];const e=this.getBlocks().map((e=>{const i=t.concat(e.getAttributes());return e.copyWithAttributes(i)}));return new this.constructor(e)}replaceBlock(t,e){const i=this.blockList.indexOf(t);return-1===i?this:new this.constructor(this.blockList.replaceObjectAtIndex(e,i))}insertDocumentAtRange(t,e){const{blockList:i}=t;e=Et(e);let[n]=e;const{index:r,offset:o}=this.locationFromPosition(n);let s=this;const a=this.getBlockAtPosition(n);return St(e)&&a.isEmpty()&&!a.hasAttributes()?s=new this.constructor(s.blockList.removeObjectAtIndex(r)):a.getBlockBreakPosition()===o&&n++,s=s.removeTextAtRange(e),new this.constructor(s.blockList.insertSplittableListAtPosition(i,n))}mergeDocumentAtRange(t,e){let i,n;e=Et(e);const[r]=e,o=this.locationFromPosition(r),s=this.getBlockAtIndex(o.index).getAttributes(),a=t.getBaseBlockAttributes(),l=s.slice(-a.length);if(et(a,l)){const e=s.slice(0,-a.length);i=t.copyWithBaseBlockAttributes(e)}else i=t.copy({consolidateBlocks:!0}).copyWithBaseBlockAttributes(s);const c=i.getBlockCount(),h=i.getBlockAtIndex(0);if(et(s,h.getAttributes())){const t=h.getTextWithoutBlockBreak();if(n=this.insertTextAtRange(t,e),c>1){i=new this.constructor(i.getBlocks().slice(1));const e=r+t.getLength();n=n.insertDocumentAtRange(i,e)}}else n=this.insertDocumentAtRange(i,e);return n}insertTextAtRange(t,e){e=Et(e);const[i]=e,{index:n,offset:r}=this.locationFromPosition(i),o=this.removeTextAtRange(e);return new this.constructor(o.blockList.editObjectAtIndex(n,(e=>e.copyWithText(e.text.insertTextAtPosition(t,r)))))}removeTextAtRange(t){let e;t=Et(t);const[i,n]=t;if(St(t))return this;const[r,o]=Array.from(this.locationRangeFromRange(t)),s=r.index,a=r.offset,l=this.getBlockAtIndex(s),c=o.index,h=o.offset,u=this.getBlockAtIndex(c);if(n-i==1&&l.getBlockBreakPosition()===a&&u.getBlockBreakPosition()!==h&&\"\\n\"===u.text.getStringAtPosition(h))e=this.blockList.editObjectAtIndex(c,(t=>t.copyWithText(t.text.removeTextAtRange([h,h+1]))));else{let t;const i=l.text.getTextAtRange([0,a]),n=u.text.getTextAtRange([h,u.getLength()]),r=i.appendText(n);t=s!==c&&0===a&&l.getAttributeLevel()>=u.getAttributeLevel()?u.copyWithText(r):l.copyWithText(r);const o=c+1-s;e=this.blockList.splice(s,o,t)}return new this.constructor(e)}moveTextFromRangeToPosition(t,e){let i;t=Et(t);const[n,r]=t;if(n<=e&&e<=r)return this;let o=this.getDocumentAtRange(t),s=this.removeTextAtRange(t);const a=n<e;a&&(e-=o.getLength());const[l,...c]=o.getBlocks();return 0===c.length?(i=l.getTextWithoutBlockBreak(),a&&(e+=1)):i=l.text,s=s.insertTextAtRange(i,e),0===c.length?s:(o=new this.constructor(c),e+=i.getLength(),s.insertDocumentAtRange(o,e))}addAttributeAtRange(t,e,i){let{blockList:n}=this;return this.eachBlockAtRange(i,((i,r,o)=>n=n.editObjectAtIndex(o,(function(){return ht(t)?i.addAttribute(t,e):r[0]===r[1]?i:i.copyWithText(i.text.addAttributeAtRange(t,e,r))})))),new this.constructor(n)}addAttribute(t,e){let{blockList:i}=this;return this.eachBlock(((n,r)=>i=i.editObjectAtIndex(r,(()=>n.addAttribute(t,e))))),new this.constructor(i)}removeAttributeAtRange(t,e){let{blockList:i}=this;return this.eachBlockAtRange(e,(function(e,n,r){ht(t)?i=i.editObjectAtIndex(r,(()=>e.removeAttribute(t))):n[0]!==n[1]&&(i=i.editObjectAtIndex(r,(()=>e.copyWithText(e.text.removeAttributeAtRange(t,n)))))})),new this.constructor(i)}updateAttributesForAttachment(t,e){const i=this.getRangeOfAttachment(e),[n]=Array.from(i),{index:r}=this.locationFromPosition(n),o=this.getTextAtIndex(r);return new this.constructor(this.blockList.editObjectAtIndex(r,(i=>i.copyWithText(o.updateAttributesForAttachment(t,e)))))}removeAttributeForAttachment(t,e){const i=this.getRangeOfAttachment(e);return this.removeAttributeAtRange(t,i)}insertBlockBreakAtRange(t){let e;t=Et(t);const[i]=t,{offset:n}=this.locationFromPosition(i),r=this.removeTextAtRange(t);return 0===n&&(e=[new De]),new this.constructor(r.blockList.insertSplittableListAtPosition(new Re(e),i))}applyBlockAttributeAtRange(t,e,i){const n=this.expandRangeToLineBreaksAndSplitBlocks(i);let r=n.document;i=n.range;const o=ht(t);if(o.listAttribute){r=r.removeLastListAttributeAtRange(i,{exceptAttributeName:t});const e=r.convertLineBreaksToBlockBreaksInRange(i);r=e.document,i=e.range}else r=o.exclusive?r.removeBlockAttributesAtRange(i):o.terminal?r.removeLastTerminalAttributeAtRange(i):r.consolidateBlocksAtRange(i);return r.addAttributeAtRange(t,e,i)}removeLastListAttributeAtRange(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{blockList:i}=this;return this.eachBlockAtRange(t,(function(t,n,r){const o=t.getLastAttribute();o&&ht(o).listAttribute&&o!==e.exceptAttributeName&&(i=i.editObjectAtIndex(r,(()=>t.removeAttribute(o))))})),new this.constructor(i)}removeLastTerminalAttributeAtRange(t){let{blockList:e}=this;return this.eachBlockAtRange(t,(function(t,i,n){const r=t.getLastAttribute();r&&ht(r).terminal&&(e=e.editObjectAtIndex(n,(()=>t.removeAttribute(r))))})),new this.constructor(e)}removeBlockAttributesAtRange(t){let{blockList:e}=this;return this.eachBlockAtRange(t,(function(t,i,n){t.hasAttributes()&&(e=e.editObjectAtIndex(n,(()=>t.copyWithoutAttributes())))})),new this.constructor(e)}expandRangeToLineBreaksAndSplitBlocks(t){let e;t=Et(t);let[i,n]=t;const r=this.locationFromPosition(i),o=this.locationFromPosition(n);let s=this;const a=s.getBlockAtIndex(r.index);if(r.offset=a.findLineBreakInDirectionFromPosition(\"backward\",r.offset),null!=r.offset&&(e=s.positionFromLocation(r),s=s.insertBlockBreakAtRange([e,e+1]),o.index+=1,o.offset-=s.getBlockAtIndex(r.index).getLength(),r.index+=1),r.offset=0,0===o.offset&&o.index>r.index)o.index-=1,o.offset=s.getBlockAtIndex(o.index).getBlockBreakPosition();else{const t=s.getBlockAtIndex(o.index);\"\\n\"===t.text.getStringAtRange([o.offset-1,o.offset])?o.offset-=1:o.offset=t.findLineBreakInDirectionFromPosition(\"forward\",o.offset),o.offset!==t.getBlockBreakPosition()&&(e=s.positionFromLocation(o),s=s.insertBlockBreakAtRange([e,e+1]))}return i=s.positionFromLocation(r),n=s.positionFromLocation(o),{document:s,range:t=Et([i,n])}}convertLineBreaksToBlockBreaksInRange(t){t=Et(t);let[e]=t;const i=this.getStringAtRange(t).slice(0,-1);let n=this;return i.replace(/.*?\\n/g,(function(t){e+=t.length,n=n.insertBlockBreakAtRange([e-1,e])})),{document:n,range:t}}consolidateBlocksAtRange(t){t=Et(t);const[e,i]=t,n=this.locationFromPosition(e).index,r=this.locationFromPosition(i).index;return new this.constructor(this.blockList.consolidateFromIndexToIndex(n,r))}getDocumentAtRange(t){t=Et(t);const e=this.blockList.getSplittableListInRange(t).toArray();return new this.constructor(e)}getStringAtRange(t){let e;const i=t=Et(t);return i[i.length-1]!==this.getLength()&&(e=-1),this.getDocumentAtRange(t).toString().slice(0,e)}getBlockAtIndex(t){return this.blockList.getObjectAtIndex(t)}getBlockAtPosition(t){const{index:e}=this.locationFromPosition(t);return this.getBlockAtIndex(e)}getTextAtIndex(t){var e;return null===(e=this.getBlockAtIndex(t))||void 0===e?void 0:e.text}getTextAtPosition(t){const{index:e}=this.locationFromPosition(t);return this.getTextAtIndex(e)}getPieceAtPosition(t){const{index:e,offset:i}=this.locationFromPosition(t);return this.getTextAtIndex(e).getPieceAtPosition(i)}getCharacterAtPosition(t){const{index:e,offset:i}=this.locationFromPosition(t);return this.getTextAtIndex(e).getStringAtRange([i,i+1])}getLength(){return this.blockList.getEndPosition()}getBlocks(){return this.blockList.toArray()}getBlockCount(){return this.blockList.length}getEditCount(){return this.editCount}eachBlock(t){return this.blockList.eachObject(t)}eachBlockAtRange(t,e){let i,n;t=Et(t);const[r,o]=t,s=this.locationFromPosition(r),a=this.locationFromPosition(o);if(s.index===a.index)return i=this.getBlockAtIndex(s.index),n=[s.offset,a.offset],e(i,n,s.index);for(let t=s.index;t<=a.index;t++)if(i=this.getBlockAtIndex(t),i){switch(t){case s.index:n=[s.offset,i.text.getLength()];break;case a.index:n=[0,a.offset];break;default:n=[0,i.text.getLength()]}e(i,n,t)}}getCommonAttributesAtRange(t){t=Et(t);const[e]=t;if(St(t))return this.getCommonAttributesAtPosition(e);{const e=[],i=[];return this.eachBlockAtRange(t,(function(t,n){if(n[0]!==n[1])return e.push(t.text.getCommonAttributesAtRange(n)),i.push(We(t))})),Vt.fromCommonAttributesOfObjects(e).merge(Vt.fromCommonAttributesOfObjects(i)).toObject()}}getCommonAttributesAtPosition(t){let e,i;const{index:n,offset:r}=this.locationFromPosition(t),o=this.getBlockAtIndex(n);if(!o)return{};const s=We(o),a=o.text.getAttributesAtPosition(r),l=o.text.getAttributesAtPosition(r-1),c=Object.keys(O).filter((t=>O[t].inheritable));for(e in l)i=l[e],(i===a[e]||c.includes(e))&&(s[e]=i);return s}getRangeOfCommonAttributeAtPosition(t,e){const{index:i,offset:n}=this.locationFromPosition(e),r=this.getTextAtIndex(i),[o,s]=Array.from(r.getExpandedRangeForAttributeAtOffset(t,n)),a=this.positionFromLocation({index:i,offset:o}),l=this.positionFromLocation({index:i,offset:s});return Et([a,l])}getBaseBlockAttributes(){let t=this.getBlockAtIndex(0).getAttributes();for(let e=1;e<this.getBlockCount();e++){const i=this.getBlockAtIndex(e).getAttributes(),n=Math.min(t.length,i.length);t=(()=>{const e=[];for(let r=0;r<n&&i[r]===t[r];r++)e.push(i[r]);return e})()}return t}getAttachmentById(t){for(const e of this.getAttachments())if(e.id===t)return e}getAttachmentPieces(){let t=[];return this.blockList.eachObject((e=>{let{text:i}=e;return t=t.concat(i.getAttachmentPieces())})),t}getAttachments(){return this.getAttachmentPieces().map((t=>t.attachment))}getRangeOfAttachment(t){let e=0;const i=this.blockList.toArray();for(let n=0;n<i.length;n++){const{text:r}=i[n],o=r.getRangeOfAttachment(t);if(o)return Et([e+o[0],e+o[1]]);e+=r.getLength()}}getLocationRangeOfAttachment(t){const e=this.getRangeOfAttachment(t);return this.locationRangeFromRange(e)}getAttachmentPieceForAttachment(t){for(const e of this.getAttachmentPieces())if(e.attachment===t)return e}findRangesForBlockAttribute(t){let e=0;const i=[];return this.getBlocks().forEach((n=>{const r=n.getLength();n.hasAttribute(t)&&i.push([e,e+r]),e+=r})),i}findRangesForTextAttribute(t){let{withValue:e}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=0,n=[];const r=[];return this.getPieces().forEach((o=>{const s=o.getLength();(function(i){return e?i.getAttribute(t)===e:i.hasAttribute(t)})(o)&&(n[1]===i?n[1]=i+s:r.push(n=[i,i+s])),i+=s})),r}locationFromPosition(t){const e=this.blockList.findIndexAndOffsetAtPosition(Math.max(0,t));if(null!=e.index)return e;{const t=this.getBlocks();return{index:t.length-1,offset:t[t.length-1].getLength()}}}positionFromLocation(t){return this.blockList.findPositionAtIndexAndOffset(t.index,t.offset)}locationRangeFromPosition(t){return Et(this.locationFromPosition(t))}locationRangeFromRange(t){if(!(t=Et(t)))return;const[e,i]=Array.from(t),n=this.locationFromPosition(e),r=this.locationFromPosition(i);return Et([n,r])}rangeFromLocationRange(t){let e;t=Et(t);const i=this.positionFromLocation(t[0]);return St(t)||(e=this.positionFromLocation(t[1])),Et([i,e])}isEqualTo(t){return this.blockList.isEqualTo(null==t?void 0:t.blockList)}getTexts(){return this.getBlocks().map((t=>t.text))}getPieces(){const t=[];return Array.from(this.getTexts()).forEach((e=>{t.push(...Array.from(e.getPieces()||[]))})),t}getObjects(){return this.getBlocks().concat(this.getTexts()).concat(this.getPieces())}toSerializableDocument(){const t=[];return this.blockList.eachObject((e=>t.push(e.copyWithText(e.text.toSerializableText())))),new this.constructor(t)}toString(){return this.blockList.toString()}toJSON(){return this.blockList.toJSON()}toConsole(){return JSON.stringify(this.blockList.toArray()).map((t=>JSON.parse(t.text.toConsole())))}}const We=function(t){const e={},i=t.getLastAttribute();return i&&(e[i]=!0),e},Ue=\"style href src width height class\".split(\" \"),qe=\"javascript:\".split(\" \"),Ve=\"script iframe\".split(\" \");class ze extends U{static sanitize(t,e){const i=new this(t,e);return i.sanitize(),i}constructor(t){let{allowedAttributes:e,forbiddenProtocols:i,forbiddenElements:n}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(...arguments),this.allowedAttributes=e||Ue,this.forbiddenProtocols=i||qe,this.forbiddenElements=n||Ve,this.body=_e(t)}sanitize(){return this.sanitizeElements(),this.normalizeListElementNesting()}getHTML(){return this.body.innerHTML}getBody(){return this.body}sanitizeElements(){const t=x(this.body),e=[];for(;t.nextNode();){const i=t.currentNode;switch(i.nodeType){case Node.ELEMENT_NODE:this.elementIsRemovable(i)?e.push(i):this.sanitizeElement(i);break;case Node.COMMENT_NODE:e.push(i)}}return e.forEach((t=>A(t))),this.body}sanitizeElement(t){return t.hasAttribute(\"href\")&&this.forbiddenProtocols.includes(t.protocol)&&t.removeAttribute(\"href\"),Array.from(t.attributes).forEach((e=>{let{name:i}=e;this.allowedAttributes.includes(i)||0===i.indexOf(\"data-trix\")||t.removeAttribute(i)})),t}normalizeListElementNesting(){return Array.from(this.body.querySelectorAll(\"ul,ol\")).forEach((t=>{const e=t.previousElementSibling;e&&\"li\"===y(e)&&e.appendChild(t)})),this.body}elementIsRemovable(t){if((null==t?void 0:t.nodeType)===Node.ELEMENT_NODE)return this.elementIsForbidden(t)||this.elementIsntSerializable(t)}elementIsForbidden(t){return this.forbiddenElements.includes(y(t))}elementIsntSerializable(t){return\"false\"===t.getAttribute(\"data-trix-serialize\")&&!F(t)}}const _e=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"\";t=t.replace(/<\\/html[^>]*>[^]*$/i,\"</html>\");const e=document.implementation.createHTMLDocument(\"\");return e.documentElement.innerHTML=t,Array.from(e.head.querySelectorAll(\"style\")).forEach((t=>{e.body.appendChild(t)})),e.body},He=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const i=\"string\";return{string:t=Mt(t),attributes:e,type:i}},Je=(t,e)=>{try{return JSON.parse(t.getAttribute(\"data-trix-\".concat(e)))}catch(t){return{}}};class Ke extends U{static parse(t,e){const i=new this(t,e);return i.parse(),i}constructor(t){let{referenceElement:e}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(...arguments),this.html=t,this.referenceElement=e,this.blocks=[],this.blockElements=[],this.processedElements=[]}getDocument(){return je.fromJSON(this.blocks)}parse(){try{this.createHiddenContainer();const t=ze.sanitize(this.html).getHTML();this.containerElement.innerHTML=t;const e=x(this.containerElement,{usingFilter:Ye});for(;e.nextNode();)this.processNode(e.currentNode);return this.translateBlockElementMarginsToNewlines()}finally{this.removeHiddenContainer()}}createHiddenContainer(){return this.referenceElement?(this.containerElement=this.referenceElement.cloneNode(!1),this.containerElement.removeAttribute(\"id\"),this.containerElement.setAttribute(\"data-trix-internal\",\"\"),this.containerElement.style.display=\"none\",this.referenceElement.parentNode.insertBefore(this.containerElement,this.referenceElement.nextSibling)):(this.containerElement=C({tagName:\"div\",style:{display:\"none\"}}),document.body.appendChild(this.containerElement))}removeHiddenContainer(){return A(this.containerElement)}processNode(t){switch(t.nodeType){case Node.TEXT_NODE:if(!this.isInsignificantTextNode(t))return this.appendBlockForTextNode(t),this.processTextNode(t);break;case Node.ELEMENT_NODE:return this.appendBlockForElement(t),this.processElement(t)}}appendBlockForTextNode(t){const e=t.parentNode;if(e===this.currentBlockElement&&this.isBlockElement(t.previousSibling))return this.appendStringWithAttributes(\"\\n\");if(e===this.containerElement||this.isBlockElement(e)){var i;const t=this.getBlockAttributes(e);et(t,null===(i=this.currentBlock)||void 0===i?void 0:i.attributes)||(this.currentBlock=this.appendBlockForAttributesWithElement(t,e),this.currentBlockElement=e)}}appendBlockForElement(t){const e=this.isBlockElement(t),i=b(this.currentBlockElement,t);if(e&&!this.isBlockElement(t.firstChild)){if(!this.isInsignificantTextNode(t.firstChild)||!this.isBlockElement(t.firstElementChild)){const e=this.getBlockAttributes(t);if(t.firstChild){if(i&&et(e,this.currentBlock.attributes))return this.appendStringWithAttributes(\"\\n\");this.currentBlock=this.appendBlockForAttributesWithElement(e,t),this.currentBlockElement=t}}}else if(this.currentBlockElement&&!i&&!e){const e=this.findParentBlockElement(t);if(e)return this.appendBlockForElement(e);this.currentBlock=this.appendEmptyBlock(),this.currentBlockElement=null}}findParentBlockElement(t){let{parentElement:e}=t;for(;e&&e!==this.containerElement;){if(this.isBlockElement(e)&&this.blockElements.includes(e))return e;e=e.parentElement}return null}processTextNode(t){let e=t.data;var i;Ge(t.parentNode)||(e=Wt(e),ti(null===(i=t.previousSibling)||void 0===i?void 0:i.textContent)&&(e=Qe(e)));return this.appendStringWithAttributes(e,this.getTextAttributes(t.parentNode))}processElement(t){let e;if(F(t)){if(e=Je(t,\"attachment\"),Object.keys(e).length){const i=this.getTextAttributes(t);this.appendAttachmentWithAttributes(e,i),t.innerHTML=\"\"}return this.processedElements.push(t)}switch(y(t)){case\"br\":return this.isExtraBR(t)||this.isBlockElement(t.nextSibling)||this.appendStringWithAttributes(\"\\n\",this.getTextAttributes(t)),this.processedElements.push(t);case\"img\":e={url:t.getAttribute(\"src\"),contentType:\"image\"};const i=(t=>{const e=t.getAttribute(\"width\"),i=t.getAttribute(\"height\"),n={};return e&&(n.width=parseInt(e,10)),i&&(n.height=parseInt(i,10)),n})(t);for(const t in i){const n=i[t];e[t]=n}return this.appendAttachmentWithAttributes(e,this.getTextAttributes(t)),this.processedElements.push(t);case\"tr\":if(this.needsTableSeparator(t))return this.appendStringWithAttributes(N.tableRowSeparator);break;case\"td\":if(this.needsTableSeparator(t))return this.appendStringWithAttributes(N.tableCellSeparator)}}appendBlockForAttributesWithElement(t,e){this.blockElements.push(e);const i=function(){return{text:[],attributes:arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}}}(t);return this.blocks.push(i),i}appendEmptyBlock(){return this.appendBlockForAttributesWithElement([],null)}appendStringWithAttributes(t,e){return this.appendPiece(He(t,e))}appendAttachmentWithAttributes(t,e){return this.appendPiece(function(t){return{attachment:t,attributes:arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},type:\"attachment\"}}(t,e))}appendPiece(t){return 0===this.blocks.length&&this.appendEmptyBlock(),this.blocks[this.blocks.length-1].text.push(t)}appendStringToTextAtIndex(t,e){const{text:i}=this.blocks[e],n=i[i.length-1];if(\"string\"!==(null==n?void 0:n.type))return i.push(He(t));n.string+=t}prependStringToTextAtIndex(t,e){const{text:i}=this.blocks[e],n=i[0];if(\"string\"!==(null==n?void 0:n.type))return i.unshift(He(t));n.string=t+n.string}getTextAttributes(t){let e;const i={};for(const n in O){const r=O[n];if(r.tagName&&p(t,{matchingSelector:r.tagName,untilNode:this.containerElement}))i[n]=!0;else if(r.parser){if(e=r.parser(t),e){let o=!1;for(const i of this.findBlockElementAncestors(t))if(r.parser(i)===e){o=!0;break}o||(i[n]=e)}}else r.styleProperty&&(e=t.style[r.styleProperty],e&&(i[n]=e))}if(F(t)){const n=Je(t,\"attributes\");for(const t in n)e=n[t],i[t]=e}return i}getBlockAttributes(t){const i=[];for(;t&&t!==this.containerElement;){for(const r in e){const o=e[r];var n;if(!1!==o.parse)if(y(t)===o.tagName)(null!==(n=o.test)&&void 0!==n&&n.call(o,t)||!o.test)&&(i.push(r),o.listAttribute&&i.push(o.listAttribute))}t=t.parentNode}return i.reverse()}findBlockElementAncestors(t){const e=[];for(;t&&t!==this.containerElement;){const i=y(t);E().includes(i)&&e.push(t),t=t.parentNode}return e}isBlockElement(t){if((null==t?void 0:t.nodeType)===Node.ELEMENT_NODE&&!F(t)&&!p(t,{matchingSelector:\"td\",untilNode:this.containerElement}))return E().includes(y(t))||\"block\"===window.getComputedStyle(t).display}isInsignificantTextNode(t){if((null==t?void 0:t.nodeType)!==Node.TEXT_NODE)return;if(!Ze(t.data))return;const{parentNode:e,previousSibling:i,nextSibling:n}=t;return $e(e.previousSibling)&&!this.isBlockElement(e.previousSibling)||Ge(e)?void 0:!i||this.isBlockElement(i)||!n||this.isBlockElement(n)}isExtraBR(t){return\"br\"===y(t)&&this.isBlockElement(t.parentNode)&&t.parentNode.lastChild===t}needsTableSeparator(t){if(N.removeBlankTableCells){var e;const i=null===(e=t.previousSibling)||void 0===e?void 0:e.textContent;return i&&/\\S/.test(i)}return t.previousSibling}translateBlockElementMarginsToNewlines(){const t=this.getMarginOfDefaultBlockElement();for(let e=0;e<this.blocks.length;e++){const i=this.getMarginOfBlockElementAtIndex(e);i&&(i.top>2*t.top&&this.prependStringToTextAtIndex(\"\\n\",e),i.bottom>2*t.bottom&&this.appendStringToTextAtIndex(\"\\n\",e))}}getMarginOfBlockElementAtIndex(t){const e=this.blockElements[t];if(e&&e.textContent&&!E().includes(y(e))&&!this.processedElements.includes(e))return Xe(e)}getMarginOfDefaultBlockElement(){const t=C(e.default.tagName);return this.containerElement.appendChild(t),Xe(t)}}const Ge=function(t){const{whiteSpace:e}=window.getComputedStyle(t);return[\"pre\",\"pre-wrap\",\"pre-line\"].includes(e)},$e=t=>t&&!ti(t.textContent),Xe=function(t){const e=window.getComputedStyle(t);if(\"block\"===e.display)return{top:parseInt(e.marginTop),bottom:parseInt(e.marginBottom)}},Ye=function(t){return\"style\"===y(t)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},Qe=t=>t.replace(new RegExp(\"^\".concat(jt.source,\"+\")),\"\"),Ze=t=>new RegExp(\"^\".concat(jt.source,\"*$\")).test(t),ti=t=>/\\s$/.test(t),ei=[\"contenteditable\",\"data-trix-id\",\"data-trix-store-key\",\"data-trix-mutable\",\"data-trix-placeholder\",\"tabindex\"],ii=\"[\".concat(\"data-trix-serialized-attributes\",\"]\"),ni=new RegExp(\"\\x3c!--block--\\x3e\",\"g\"),ri={\"application/json\":function(t){let e;if(t instanceof je)e=t;else{if(!(t instanceof HTMLElement))throw new Error(\"unserializable object\");e=Ke.parse(t.innerHTML).getDocument()}return e.toSerializableDocument().toJSONString()},\"text/html\":function(t){let e;if(t instanceof je)e=ue.render(t);else{if(!(t instanceof HTMLElement))throw new Error(\"unserializable object\");e=t.cloneNode(!0)}return Array.from(e.querySelectorAll(\"[data-trix-serialize=false]\")).forEach((t=>{A(t)})),ei.forEach((t=>{Array.from(e.querySelectorAll(\"[\".concat(t,\"]\"))).forEach((e=>{e.removeAttribute(t)}))})),Array.from(e.querySelectorAll(ii)).forEach((t=>{try{const e=JSON.parse(t.getAttribute(\"data-trix-serialized-attributes\"));t.removeAttribute(\"data-trix-serialized-attributes\");for(const i in e){const n=e[i];t.setAttribute(i,n)}}catch(t){}})),e.innerHTML.replace(ni,\"\")}};var oi=Object.freeze({__proto__:null});class si extends U{constructor(t,e){super(...arguments),this.attachmentManager=t,this.attachment=e,this.id=this.attachment.id,this.file=this.attachment.file}remove(){return this.attachmentManager.requestRemovalOfAttachment(this.attachment)}}si.proxyMethod(\"attachment.getAttribute\"),si.proxyMethod(\"attachment.hasAttribute\"),si.proxyMethod(\"attachment.setAttribute\"),si.proxyMethod(\"attachment.getAttributes\"),si.proxyMethod(\"attachment.setAttributes\"),si.proxyMethod(\"attachment.isPending\"),si.proxyMethod(\"attachment.isPreviewable\"),si.proxyMethod(\"attachment.getURL\"),si.proxyMethod(\"attachment.getHref\"),si.proxyMethod(\"attachment.getFilename\"),si.proxyMethod(\"attachment.getFilesize\"),si.proxyMethod(\"attachment.getFormattedFilesize\"),si.proxyMethod(\"attachment.getExtension\"),si.proxyMethod(\"attachment.getContentType\"),si.proxyMethod(\"attachment.getFile\"),si.proxyMethod(\"attachment.setFile\"),si.proxyMethod(\"attachment.releaseFile\"),si.proxyMethod(\"attachment.getUploadProgress\"),si.proxyMethod(\"attachment.setUploadProgress\");class ai extends U{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];super(...arguments),this.managedAttachments={},Array.from(t).forEach((t=>{this.manageAttachment(t)}))}getAttachments(){const t=[];for(const e in this.managedAttachments){const i=this.managedAttachments[e];t.push(i)}return t}manageAttachment(t){return this.managedAttachments[t.id]||(this.managedAttachments[t.id]=new si(this,t)),this.managedAttachments[t.id]}attachmentIsManaged(t){return t.id in this.managedAttachments}requestRemovalOfAttachment(t){var e,i;if(this.attachmentIsManaged(t))return null===(e=this.delegate)||void 0===e||null===(i=e.attachmentManagerDidRequestRemovalOfAttachment)||void 0===i?void 0:i.call(e,t)}unmanageAttachment(t){const e=this.managedAttachments[t.id];return delete this.managedAttachments[t.id],e}}class li{constructor(t){this.composition=t,this.document=this.composition.document;const e=this.composition.getSelectedRange();this.startPosition=e[0],this.endPosition=e[1],this.startLocation=this.document.locationFromPosition(this.startPosition),this.endLocation=this.document.locationFromPosition(this.endPosition),this.block=this.document.getBlockAtIndex(this.endLocation.index),this.breaksOnReturn=this.block.breaksOnReturn(),this.previousCharacter=this.block.text.getStringAtPosition(this.endLocation.offset-1),this.nextCharacter=this.block.text.getStringAtPosition(this.endLocation.offset)}shouldInsertBlockBreak(){return this.block.hasAttributes()&&this.block.isListItem()&&!this.block.isEmpty()?0!==this.startLocation.offset:this.breaksOnReturn&&\"\\n\"!==this.nextCharacter}shouldBreakFormattedBlock(){return this.block.hasAttributes()&&!this.block.isListItem()&&(this.breaksOnReturn&&\"\\n\"===this.nextCharacter||\"\\n\"===this.previousCharacter)}shouldDecreaseListLevel(){return this.block.hasAttributes()&&this.block.isListItem()&&this.block.isEmpty()}shouldPrependListItem(){return this.block.isListItem()&&0===this.startLocation.offset&&!this.block.isEmpty()}shouldRemoveLastBlockAttribute(){return this.block.hasAttributes()&&!this.block.isListItem()&&this.block.isEmpty()}}class ci extends U{constructor(){super(...arguments),this.document=new je,this.attachments=[],this.currentAttributes={},this.revision=0}setDocument(t){var e,i;if(!t.isEqualTo(this.document))return this.document=t,this.refreshAttachments(),this.revision++,null===(e=this.delegate)||void 0===e||null===(i=e.compositionDidChangeDocument)||void 0===i?void 0:i.call(e,t)}getSnapshot(){return{document:this.document,selectedRange:this.getSelectedRange()}}loadSnapshot(t){var e,i,n,r;let{document:o,selectedRange:s}=t;return null===(e=this.delegate)||void 0===e||null===(i=e.compositionWillLoadSnapshot)||void 0===i||i.call(e),this.setDocument(null!=o?o:new je),this.setSelection(null!=s?s:[0,0]),null===(n=this.delegate)||void 0===n||null===(r=n.compositionDidLoadSnapshot)||void 0===r?void 0:r.call(n)}insertText(t){let{updatePosition:e}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{updatePosition:!0};const i=this.getSelectedRange();this.setDocument(this.document.insertTextAtRange(t,i));const n=i[0],r=n+t.getLength();return e&&this.setSelection(r),this.notifyDelegateOfInsertionAtRange([n,r])}insertBlock(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new De;const e=new je([t]);return this.insertDocument(e)}insertDocument(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new je;const e=this.getSelectedRange();this.setDocument(this.document.insertDocumentAtRange(t,e));const i=e[0],n=i+t.getLength();return this.setSelection(n),this.notifyDelegateOfInsertionAtRange([i,n])}insertString(t,e){const i=this.getCurrentTextAttributes(),n=Le.textForStringWithAttributes(t,i);return this.insertText(n,e)}insertBlockBreak(){const t=this.getSelectedRange();this.setDocument(this.document.insertBlockBreakAtRange(t));const e=t[0],i=e+1;return this.setSelection(i),this.notifyDelegateOfInsertionAtRange([e,i])}insertLineBreak(){const t=new li(this);if(t.shouldDecreaseListLevel())return this.decreaseListLevel(),this.setSelection(t.startPosition);if(t.shouldPrependListItem()){const e=new je([t.block.copyWithoutText()]);return this.insertDocument(e)}return t.shouldInsertBlockBreak()?this.insertBlockBreak():t.shouldRemoveLastBlockAttribute()?this.removeLastBlockAttribute():t.shouldBreakFormattedBlock()?this.breakFormattedBlock(t):this.insertString(\"\\n\")}insertHTML(t){const e=Ke.parse(t).getDocument(),i=this.getSelectedRange();this.setDocument(this.document.mergeDocumentAtRange(e,i));const n=i[0],r=n+e.getLength()-1;return this.setSelection(r),this.notifyDelegateOfInsertionAtRange([n,r])}replaceHTML(t){const e=Ke.parse(t).getDocument().copyUsingObjectsFromDocument(this.document),i=this.getLocationRange({strict:!1}),n=this.document.rangeFromLocationRange(i);return this.setDocument(e),this.setSelection(n)}insertFile(t){return this.insertFiles([t])}insertFiles(t){const e=[];return Array.from(t).forEach((t=>{var i;if(null!==(i=this.delegate)&&void 0!==i&&i.compositionShouldAcceptFile(t)){const i=xe.attachmentForFile(t);e.push(i)}})),this.insertAttachments(e)}insertAttachment(t){return this.insertAttachments([t])}insertAttachments(e){let i=new Le;return Array.from(e).forEach((e=>{var n;const r=e.getType(),o=null===(n=t[r])||void 0===n?void 0:n.presentation,s=this.getCurrentTextAttributes();o&&(s.presentation=o);const a=Le.textForAttachmentWithAttributes(e,s);i=i.appendText(a)})),this.insertText(i)}shouldManageDeletingInDirection(t){const e=this.getLocationRange();if(St(e)){if(\"backward\"===t&&0===e[0].offset)return!0;if(this.shouldManageMovingCursorInDirection(t))return!0}else if(e[0].index!==e[1].index)return!0;return!1}deleteInDirection(t){let e,i,n,{length:r}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const o=this.getLocationRange();let s=this.getSelectedRange();const a=St(s);if(a?i=\"backward\"===t&&0===o[0].offset:n=o[0].index!==o[1].index,i&&this.canDecreaseBlockAttributeLevel()){const t=this.getBlock();if(t.isListItem()?this.decreaseListLevel():this.decreaseBlockAttributeLevel(),this.setSelection(s[0]),t.isEmpty())return!1}return a&&(s=this.getExpandedRangeInDirection(t,{length:r}),\"backward\"===t&&(e=this.getAttachmentAtRange(s))),e?(this.editAttachment(e),!1):(this.setDocument(this.document.removeTextAtRange(s)),this.setSelection(s[0]),!i&&!n&&void 0)}moveTextFromRange(t){const[e]=Array.from(this.getSelectedRange());return this.setDocument(this.document.moveTextFromRangeToPosition(t,e)),this.setSelection(e)}removeAttachment(t){const e=this.document.getRangeOfAttachment(t);if(e)return this.stopEditingAttachment(),this.setDocument(this.document.removeTextAtRange(e)),this.setSelection(e[0])}removeLastBlockAttribute(){const[t,e]=Array.from(this.getSelectedRange()),i=this.document.getBlockAtPosition(e);return this.removeCurrentAttribute(i.getLastAttribute()),this.setSelection(t)}insertPlaceholder(){return this.placeholderPosition=this.getPosition(),this.insertString(\" \")}selectPlaceholder(){if(null!=this.placeholderPosition)return this.setSelectedRange([this.placeholderPosition,this.placeholderPosition+\" \".length]),this.getSelectedRange()}forgetPlaceholder(){this.placeholderPosition=null}hasCurrentAttribute(t){const e=this.currentAttributes[t];return null!=e&&!1!==e}toggleCurrentAttribute(t){const e=!this.currentAttributes[t];return e?this.setCurrentAttribute(t,e):this.removeCurrentAttribute(t)}canSetCurrentAttribute(t){return ht(t)?this.canSetCurrentBlockAttribute(t):this.canSetCurrentTextAttribute(t)}canSetCurrentTextAttribute(t){const e=this.getSelectedDocument();if(e){for(const t of Array.from(e.getAttachments()))if(!t.hasContent())return!1;return!0}}canSetCurrentBlockAttribute(t){const e=this.getBlock();if(e)return!e.isTerminalBlock()}setCurrentAttribute(t,e){return ht(t)?this.setBlockAttribute(t,e):(this.setTextAttribute(t,e),this.currentAttributes[t]=e,this.notifyDelegateOfCurrentAttributesChange())}setTextAttribute(t,e){const i=this.getSelectedRange();if(!i)return;const[n,r]=Array.from(i);if(n!==r)return this.setDocument(this.document.addAttributeAtRange(t,e,i));if(\"href\"===t){const t=Le.textForStringWithAttributes(e,{href:e});return this.insertText(t)}}setBlockAttribute(t,e){const i=this.getSelectedRange();if(this.canSetCurrentAttribute(t))return this.setDocument(this.document.applyBlockAttributeAtRange(t,e,i)),this.setSelection(i)}removeCurrentAttribute(t){return ht(t)?(this.removeBlockAttribute(t),this.updateCurrentAttributes()):(this.removeTextAttribute(t),delete this.currentAttributes[t],this.notifyDelegateOfCurrentAttributesChange())}removeTextAttribute(t){const e=this.getSelectedRange();if(e)return this.setDocument(this.document.removeAttributeAtRange(t,e))}removeBlockAttribute(t){const e=this.getSelectedRange();if(e)return this.setDocument(this.document.removeAttributeAtRange(t,e))}canDecreaseNestingLevel(){var t;return(null===(t=this.getBlock())||void 0===t?void 0:t.getNestingLevel())>0}canIncreaseNestingLevel(){var t;const e=this.getBlock();if(e){if(null===(t=ht(e.getLastNestableAttribute()))||void 0===t||!t.listAttribute)return e.getNestingLevel()>0;{const t=this.getPreviousBlock();if(t)return function(){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return et((arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]).slice(0,t.length),t)}(t.getListItemAttributes(),e.getListItemAttributes())}}}decreaseNestingLevel(){const t=this.getBlock();if(t)return this.setDocument(this.document.replaceBlock(t,t.decreaseNestingLevel()))}increaseNestingLevel(){const t=this.getBlock();if(t)return this.setDocument(this.document.replaceBlock(t,t.increaseNestingLevel()))}canDecreaseBlockAttributeLevel(){var t;return(null===(t=this.getBlock())||void 0===t?void 0:t.getAttributeLevel())>0}decreaseBlockAttributeLevel(){var t;const e=null===(t=this.getBlock())||void 0===t?void 0:t.getLastAttribute();if(e)return this.removeCurrentAttribute(e)}decreaseListLevel(){let[t]=Array.from(this.getSelectedRange());const{index:e}=this.document.locationFromPosition(t);let i=e;const n=this.getBlock().getAttributeLevel();let r=this.document.getBlockAtIndex(i+1);for(;r&&r.isListItem()&&!(r.getAttributeLevel()<=n);)i++,r=this.document.getBlockAtIndex(i+1);t=this.document.positionFromLocation({index:e,offset:0});const o=this.document.positionFromLocation({index:i,offset:0});return this.setDocument(this.document.removeLastListAttributeAtRange([t,o]))}updateCurrentAttributes(){const t=this.getSelectedRange({ignoreLock:!0});if(t){const e=this.document.getCommonAttributesAtRange(t);if(Array.from(ct()).forEach((t=>{e[t]||this.canSetCurrentAttribute(t)||(e[t]=!1)})),!Rt(e,this.currentAttributes))return this.currentAttributes=e,this.notifyDelegateOfCurrentAttributesChange()}}getCurrentAttributes(){return c.call({},this.currentAttributes)}getCurrentTextAttributes(){const t={};for(const e in this.currentAttributes){const i=this.currentAttributes[e];!1!==i&&dt(e)&&(t[e]=i)}return t}freezeSelection(){return this.setCurrentAttribute(\"frozen\",!0)}thawSelection(){return this.removeCurrentAttribute(\"frozen\")}hasFrozenSelection(){return this.hasCurrentAttribute(\"frozen\")}setSelection(t){var e;const i=this.document.locationRangeFromRange(t);return null===(e=this.delegate)||void 0===e?void 0:e.compositionDidRequestChangingSelectionToLocationRange(i)}getSelectedRange(){const t=this.getLocationRange();if(t)return this.document.rangeFromLocationRange(t)}setSelectedRange(t){const e=this.document.locationRangeFromRange(t);return this.getSelectionManager().setLocationRange(e)}getPosition(){const t=this.getLocationRange();if(t)return this.document.positionFromLocation(t[0])}getLocationRange(t){return this.targetLocationRange?this.targetLocationRange:this.getSelectionManager().getLocationRange(t)||Et({index:0,offset:0})}withTargetLocationRange(t,e){let i;this.targetLocationRange=t;try{i=e()}finally{this.targetLocationRange=null}return i}withTargetRange(t,e){const i=this.document.locationRangeFromRange(t);return this.withTargetLocationRange(i,e)}withTargetDOMRange(t,e){const i=this.createLocationRangeFromDOMRange(t,{strict:!1});return this.withTargetLocationRange(i,e)}getExpandedRangeInDirection(t){let{length:e}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},[i,n]=Array.from(this.getSelectedRange());return\"backward\"===t?e?i-=e:i=this.translateUTF16PositionFromOffset(i,-1):e?n+=e:n=this.translateUTF16PositionFromOffset(n,1),Et([i,n])}shouldManageMovingCursorInDirection(t){if(this.editingAttachment)return!0;const e=this.getExpandedRangeInDirection(t);return null!=this.getAttachmentAtRange(e)}moveCursorInDirection(t){let e,i;if(this.editingAttachment)i=this.document.getRangeOfAttachment(this.editingAttachment);else{const n=this.getSelectedRange();i=this.getExpandedRangeInDirection(t),e=!kt(n,i)}if(\"backward\"===t?this.setSelectedRange(i[0]):this.setSelectedRange(i[1]),e){const t=this.getAttachmentAtRange(i);if(t)return this.editAttachment(t)}}expandSelectionInDirection(t){let{length:e}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const i=this.getExpandedRangeInDirection(t,{length:e});return this.setSelectedRange(i)}expandSelectionForEditing(){if(this.hasCurrentAttribute(\"href\"))return this.expandSelectionAroundCommonAttribute(\"href\")}expandSelectionAroundCommonAttribute(t){const e=this.getPosition(),i=this.document.getRangeOfCommonAttributeAtPosition(t,e);return this.setSelectedRange(i)}selectionContainsAttachments(){var t;return(null===(t=this.getSelectedAttachments())||void 0===t?void 0:t.length)>0}selectionIsInCursorTarget(){return this.editingAttachment||this.positionIsCursorTarget(this.getPosition())}positionIsCursorTarget(t){const e=this.document.locationFromPosition(t);if(e)return this.locationIsCursorTarget(e)}positionIsBlockBreak(t){var e;return null===(e=this.document.getPieceAtPosition(t))||void 0===e?void 0:e.isBlockBreak()}getSelectedDocument(){const t=this.getSelectedRange();if(t)return this.document.getDocumentAtRange(t)}getSelectedAttachments(){var t;return null===(t=this.getSelectedDocument())||void 0===t?void 0:t.getAttachments()}getAttachments(){return this.attachments.slice(0)}refreshAttachments(){const t=this.document.getAttachments(),{added:e,removed:i}=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];const i=[],n=[],r=new Set;t.forEach((t=>{r.add(t)}));const o=new Set;return e.forEach((t=>{o.add(t),r.has(t)||i.push(t)})),t.forEach((t=>{o.has(t)||n.push(t)})),{added:i,removed:n}}(this.attachments,t);return this.attachments=t,Array.from(i).forEach((t=>{var e,i;t.delegate=null,null===(e=this.delegate)||void 0===e||null===(i=e.compositionDidRemoveAttachment)||void 0===i||i.call(e,t)})),(()=>{const t=[];return Array.from(e).forEach((e=>{var i,n;e.delegate=this,t.push(null===(i=this.delegate)||void 0===i||null===(n=i.compositionDidAddAttachment)||void 0===n?void 0:n.call(i,e))})),t})()}attachmentDidChangeAttributes(t){var e,i;return this.revision++,null===(e=this.delegate)||void 0===e||null===(i=e.compositionDidEditAttachment)||void 0===i?void 0:i.call(e,t)}attachmentDidChangePreviewURL(t){var e,i;return this.revision++,null===(e=this.delegate)||void 0===e||null===(i=e.compositionDidChangeAttachmentPreviewURL)||void 0===i?void 0:i.call(e,t)}editAttachment(t,e){var i,n;if(t!==this.editingAttachment)return this.stopEditingAttachment(),this.editingAttachment=t,null===(i=this.delegate)||void 0===i||null===(n=i.compositionDidStartEditingAttachment)||void 0===n?void 0:n.call(i,this.editingAttachment,e)}stopEditingAttachment(){var t,e;this.editingAttachment&&(null===(t=this.delegate)||void 0===t||null===(e=t.compositionDidStopEditingAttachment)||void 0===e||e.call(t,this.editingAttachment),this.editingAttachment=null)}updateAttributesForAttachment(t,e){return this.setDocument(this.document.updateAttributesForAttachment(t,e))}removeAttributeForAttachment(t,e){return this.setDocument(this.document.removeAttributeForAttachment(t,e))}breakFormattedBlock(t){let{document:e}=t;const{block:i}=t;let n=t.startPosition,r=[n-1,n];i.getBlockBreakPosition()===t.startLocation.offset?(i.breaksOnReturn()&&\"\\n\"===t.nextCharacter?n+=1:e=e.removeTextAtRange(r),r=[n,n]):\"\\n\"===t.nextCharacter?\"\\n\"===t.previousCharacter?r=[n-1,n+1]:(r=[n,n+1],n+=1):t.startLocation.offset-1!=0&&(n+=1);const o=new je([i.removeLastAttribute().copyWithoutText()]);return this.setDocument(e.insertDocumentAtRange(o,r)),this.setSelection(n)}getPreviousBlock(){const t=this.getLocationRange();if(t){const{index:e}=t[0];if(e>0)return this.document.getBlockAtIndex(e-1)}}getBlock(){const t=this.getLocationRange();if(t)return this.document.getBlockAtIndex(t[0].index)}getAttachmentAtRange(t){const e=this.document.getDocumentAtRange(t);if(e.toString()===\"\".concat(\"\uFFFC\",\"\\n\"))return e.getAttachments()[0]}notifyDelegateOfCurrentAttributesChange(){var t,e;return null===(t=this.delegate)||void 0===t||null===(e=t.compositionDidChangeCurrentAttributes)||void 0===e?void 0:e.call(t,this.currentAttributes)}notifyDelegateOfInsertionAtRange(t){var e,i;return null===(e=this.delegate)||void 0===e||null===(i=e.compositionDidPerformInsertionAtRange)||void 0===i?void 0:i.call(e,t)}translateUTF16PositionFromOffset(t,e){const i=this.document.toUTF16String(),n=i.offsetFromUCS2Offset(t);return i.offsetToUCS2Offset(n+e)}}ci.proxyMethod(\"getSelectionManager().getPointRange\"),ci.proxyMethod(\"getSelectionManager().setLocationRangeFromPointRange\"),ci.proxyMethod(\"getSelectionManager().createLocationRangeFromDOMRange\"),ci.proxyMethod(\"getSelectionManager().locationIsCursorTarget\"),ci.proxyMethod(\"getSelectionManager().selectionIsExpanded\"),ci.proxyMethod(\"delegate?.getSelectionManager\");class hi extends U{constructor(t){super(...arguments),this.composition=t,this.undoEntries=[],this.redoEntries=[]}recordUndoEntry(t){let{context:e,consolidatable:i}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=this.undoEntries.slice(-1)[0];if(!i||!ui(n,t,e)){const i=this.createEntry({description:t,context:e});this.undoEntries.push(i),this.redoEntries=[]}}undo(){const t=this.undoEntries.pop();if(t){const e=this.createEntry(t);return this.redoEntries.push(e),this.composition.loadSnapshot(t.snapshot)}}redo(){const t=this.redoEntries.pop();if(t){const e=this.createEntry(t);return this.undoEntries.push(e),this.composition.loadSnapshot(t.snapshot)}}canUndo(){return this.undoEntries.length>0}canRedo(){return this.redoEntries.length>0}createEntry(){let{description:t,context:e}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{description:null==t?void 0:t.toString(),context:JSON.stringify(e),snapshot:this.composition.getSnapshot()}}}const ui=(t,e,i)=>(null==t?void 0:t.description)===(null==e?void 0:e.toString())&&(null==t?void 0:t.context)===JSON.stringify(i);class di{constructor(t){this.document=t.document,this.selectedRange=t.selectedRange}perform(){return this.removeBlockAttribute(),this.applyBlockAttribute()}getSnapshot(){return{document:this.document,selectedRange:this.selectedRange}}removeBlockAttribute(){return this.findRangesOfBlocks().map((t=>this.document=this.document.removeAttributeAtRange(\"attachmentGallery\",t)))}applyBlockAttribute(){let t=0;this.findRangesOfPieces().forEach((e=>{e[1]-e[0]>1&&(e[0]+=t,e[1]+=t,\"\\n\"!==this.document.getCharacterAtPosition(e[1])&&(this.document=this.document.insertBlockBreakAtRange(e[1]),e[1]<this.selectedRange[1]&&this.moveSelectedRangeForward(),e[1]++,t++),0!==e[0]&&\"\\n\"!==this.document.getCharacterAtPosition(e[0]-1)&&(this.document=this.document.insertBlockBreakAtRange(e[0]),e[0]<this.selectedRange[0]&&this.moveSelectedRangeForward(),e[0]++,t++),this.document=this.document.applyBlockAttributeAtRange(\"attachmentGallery\",!0,e))}))}findRangesOfBlocks(){return this.document.findRangesForBlockAttribute(\"attachmentGallery\")}findRangesOfPieces(){return this.document.findRangesForTextAttribute(\"presentation\",{withValue:\"gallery\"})}moveSelectedRangeForward(){this.selectedRange[0]+=1,this.selectedRange[1]+=1}}const gi=function(t){const e=new di(t);return e.perform(),e.getSnapshot()},mi=[gi];class pi{constructor(t,e,i){this.insertFiles=this.insertFiles.bind(this),this.composition=t,this.selectionManager=e,this.element=i,this.undoManager=new hi(this.composition),this.filters=mi.slice(0)}loadDocument(t){return this.loadSnapshot({document:t,selectedRange:[0,0]})}loadHTML(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"\";const e=Ke.parse(t,{referenceElement:this.element}).getDocument();return this.loadDocument(e)}loadJSON(t){let{document:e,selectedRange:i}=t;return e=je.fromJSON(e),this.loadSnapshot({document:e,selectedRange:i})}loadSnapshot(t){return this.undoManager=new hi(this.composition),this.composition.loadSnapshot(t)}getDocument(){return this.composition.document}getSelectedDocument(){return this.composition.getSelectedDocument()}getSnapshot(){return this.composition.getSnapshot()}toJSON(){return this.getSnapshot()}deleteInDirection(t){return this.composition.deleteInDirection(t)}insertAttachment(t){return this.composition.insertAttachment(t)}insertAttachments(t){return this.composition.insertAttachments(t)}insertDocument(t){return this.composition.insertDocument(t)}insertFile(t){return this.composition.insertFile(t)}insertFiles(t){return this.composition.insertFiles(t)}insertHTML(t){return this.composition.insertHTML(t)}insertString(t){return this.composition.insertString(t)}insertText(t){return this.composition.insertText(t)}insertLineBreak(){return this.composition.insertLineBreak()}getSelectedRange(){return this.composition.getSelectedRange()}getPosition(){return this.composition.getPosition()}getClientRectAtPosition(t){const e=this.getDocument().locationRangeFromRange([t,t+1]);return this.selectionManager.getClientRectAtLocationRange(e)}expandSelectionInDirection(t){return this.composition.expandSelectionInDirection(t)}moveCursorInDirection(t){return this.composition.moveCursorInDirection(t)}setSelectedRange(t){return this.composition.setSelectedRange(t)}activateAttribute(t){let e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this.composition.setCurrentAttribute(t,e)}attributeIsActive(t){return this.composition.hasCurrentAttribute(t)}canActivateAttribute(t){return this.composition.canSetCurrentAttribute(t)}deactivateAttribute(t){return this.composition.removeCurrentAttribute(t)}canDecreaseNestingLevel(){return this.composition.canDecreaseNestingLevel()}canIncreaseNestingLevel(){return this.composition.canIncreaseNestingLevel()}decreaseNestingLevel(){if(this.canDecreaseNestingLevel())return this.composition.decreaseNestingLevel()}increaseNestingLevel(){if(this.canIncreaseNestingLevel())return this.composition.increaseNestingLevel()}canRedo(){return this.undoManager.canRedo()}canUndo(){return this.undoManager.canUndo()}recordUndoEntry(t){let{context:e,consolidatable:i}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.undoManager.recordUndoEntry(t,{context:e,consolidatable:i})}redo(){if(this.canRedo())return this.undoManager.redo()}undo(){if(this.canUndo())return this.undoManager.undo()}}class fi{constructor(t){this.element=t}findLocationFromContainerAndOffset(t,e){let{strict:i}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{strict:!0},n=0,r=!1;const o={index:0,offset:0},s=this.findAttachmentElementParentForNode(t);s&&(t=s.parentNode,e=v(s));const a=x(this.element,{usingFilter:xi});for(;a.nextNode();){const s=a.currentNode;if(s===t&&I(t)){T(s)||(o.offset+=e);break}if(s.parentNode===t){if(n++===e)break}else if(!b(t,s)&&n>0)break;L(s,{strict:i})?(r&&o.index++,o.offset=0,r=!0):o.offset+=bi(s)}return o}findContainerAndOffsetFromLocation(t){let e,i;if(0===t.index&&0===t.offset){for(e=this.element,i=0;e.firstChild;)if(e=e.firstChild,S(e)){i=1;break}return[e,i]}let[n,r]=this.findNodeAndOffsetFromLocation(t);if(n){if(I(n))0===bi(n)?(e=n.parentNode.parentNode,i=v(n.parentNode),T(n,{name:\"right\"})&&i++):(e=n,i=t.offset-r);else{if(e=n.parentNode,!L(n.previousSibling)&&!S(e))for(;n===e.lastChild&&(n=e,e=e.parentNode,!S(e)););i=v(n),0!==t.offset&&i++}return[e,i]}}findNodeAndOffsetFromLocation(t){let e,i,n=0;for(const r of this.getSignificantNodesForIndex(t.index)){const o=bi(r);if(t.offset<=n+o)if(I(r)){if(e=r,i=n,t.offset===i&&T(e))break}else e||(e=r,i=n);if(n+=o,n>t.offset)break}return[e,i]}findAttachmentElementParentForNode(t){for(;t&&t!==this.element;){if(F(t))return t;t=t.parentNode}}getSignificantNodesForIndex(t){const e=[],i=x(this.element,{usingFilter:vi});let n=!1;for(;i.nextNode();){const o=i.currentNode;var r;if(D(o)){if(null!=r?r++:r=0,r===t)n=!0;else if(n)break}else n&&e.push(o)}return e}}const bi=function(t){if(t.nodeType===Node.TEXT_NODE){if(T(t))return 0;return t.textContent.length}return\"br\"===y(t)||F(t)?1:0},vi=function(t){return Ai(t)===NodeFilter.FILTER_ACCEPT?xi(t):NodeFilter.FILTER_REJECT},Ai=function(t){return B(t)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},xi=function(t){return F(t.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT};class yi{createDOMRangeFromPoint(t){let e,{x:i,y:n}=t;if(document.caretPositionFromPoint){const{offsetNode:t,offset:r}=document.caretPositionFromPoint(i,n);return e=document.createRange(),e.setStart(t,r),e}if(document.caretRangeFromPoint)return document.caretRangeFromPoint(i,n);if(document.body.createTextRange){const t=It();try{const t=document.body.createTextRange();t.moveToPoint(i,n),t.select()}catch(t){}return e=It(),Pt(t),e}}getClientRectsForDOMRange(t){const e=Array.from(t.getClientRects());return[e[0],e[e.length-1]]}}class Ci extends U{constructor(t){super(...arguments),this.didMouseDown=this.didMouseDown.bind(this),this.selectionDidChange=this.selectionDidChange.bind(this),this.element=t,this.locationMapper=new fi(this.element),this.pointMapper=new yi,this.lockCount=0,d(\"mousedown\",{onElement:this.element,withCallback:this.didMouseDown})}getLocationRange(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return!1===t.strict?this.createLocationRangeFromDOMRange(It()):t.ignoreLock?this.currentLocationRange:this.lockedLocationRange?this.lockedLocationRange:this.currentLocationRange}setLocationRange(t){if(this.lockedLocationRange)return;t=Et(t);const e=this.createDOMRangeFromLocationRange(t);e&&(Pt(e),this.updateCurrentLocationRange(t))}setLocationRangeFromPointRange(t){t=Et(t);const e=this.getLocationAtPoint(t[0]),i=this.getLocationAtPoint(t[1]);this.setLocationRange([e,i])}getClientRectAtLocationRange(t){const e=this.createDOMRangeFromLocationRange(t);if(e)return this.getClientRectsForDOMRange(e)[1]}locationIsCursorTarget(t){const e=Array.from(this.findNodeAndOffsetFromLocation(t))[0];return T(e)}lock(){0==this.lockCount++&&(this.updateCurrentLocationRange(),this.lockedLocationRange=this.getLocationRange())}unlock(){if(0==--this.lockCount){const{lockedLocationRange:t}=this;if(this.lockedLocationRange=null,null!=t)return this.setLocationRange(t)}}clearSelection(){var t;return null===(t=Bt())||void 0===t?void 0:t.removeAllRanges()}selectionIsCollapsed(){var t;return!0===(null===(t=It())||void 0===t?void 0:t.collapsed)}selectionIsExpanded(){return!this.selectionIsCollapsed()}createLocationRangeFromDOMRange(t,e){if(null==t||!this.domRangeWithinElement(t))return;const i=this.findLocationFromContainerAndOffset(t.startContainer,t.startOffset,e);if(!i)return;const n=t.collapsed?void 0:this.findLocationFromContainerAndOffset(t.endContainer,t.endOffset,e);return Et([i,n])}didMouseDown(){return this.pauseTemporarily()}pauseTemporarily(){let t;this.paused=!0;const e=()=>{if(this.paused=!1,clearTimeout(i),Array.from(t).forEach((t=>{t.destroy()})),b(document,this.element))return this.selectionDidChange()},i=setTimeout(e,200);t=[\"mousemove\",\"keydown\"].map((t=>d(t,{onElement:document,withCallback:e})))}selectionDidChange(){if(!this.paused&&!f(this.element))return this.updateCurrentLocationRange()}updateCurrentLocationRange(t){var e,i;if((null!=t?t:t=this.createLocationRangeFromDOMRange(It()))&&!kt(t,this.currentLocationRange))return this.currentLocationRange=t,null===(e=this.delegate)||void 0===e||null===(i=e.locationRangeDidChange)||void 0===i?void 0:i.call(e,this.currentLocationRange.slice(0))}createDOMRangeFromLocationRange(t){const e=this.findContainerAndOffsetFromLocation(t[0]),i=St(t)?e:this.findContainerAndOffsetFromLocation(t[1])||e;if(null!=e&&null!=i){const t=document.createRange();return t.setStart(...Array.from(e||[])),t.setEnd(...Array.from(i||[])),t}}getLocationAtPoint(t){const e=this.createDOMRangeFromPoint(t);var i;if(e)return null===(i=this.createLocationRangeFromDOMRange(e))||void 0===i?void 0:i[0]}domRangeWithinElement(t){return t.collapsed?b(this.element,t.startContainer):b(this.element,t.startContainer)&&b(this.element,t.endContainer)}}Ci.proxyMethod(\"locationMapper.findLocationFromContainerAndOffset\"),Ci.proxyMethod(\"locationMapper.findContainerAndOffsetFromLocation\"),Ci.proxyMethod(\"locationMapper.findNodeAndOffsetFromLocation\"),Ci.proxyMethod(\"pointMapper.createDOMRangeFromPoint\"),Ci.proxyMethod(\"pointMapper.getClientRectsForDOMRange\");var Ri=Object.freeze({__proto__:null,Attachment:xe,AttachmentManager:ai,AttachmentPiece:ye,Block:De,Composition:ci,Document:je,Editor:pi,HTMLParser:Ke,HTMLSanitizer:ze,LineBreakInsertion:li,LocationMapper:fi,ManagedAttachment:si,Piece:ve,PointMapper:yi,SelectionManager:Ci,SplittableList:Re,StringPiece:Ce,Text:Le,UndoManager:hi}),Ei=Object.freeze({__proto__:null});const{lang:Si,css:ki,keyNames:Li}=W,Di=function(t){return function(){const e=t.apply(this,arguments);e.do(),this.undos||(this.undos=[]),this.undos.push(e.undo)}};class wi extends U{constructor(t,e,i){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};super(...arguments),be(this,\"makeElementMutable\",Di((()=>({do:()=>{this.element.dataset.trixMutable=!0},undo:()=>delete this.element.dataset.trixMutable})))),be(this,\"addToolbar\",Di((()=>{const t=C({tagName:\"div\",className:ki.attachmentToolbar,data:{trixMutable:!0},childNodes:C({tagName:\"div\",className:\"trix-button-row\",childNodes:C({tagName:\"span\",className:\"trix-button-group trix-button-group--actions\",childNodes:C({tagName:\"button\",className:\"trix-button trix-button--remove\",textContent:Si.remove,attributes:{title:Si.remove},data:{trixAction:\"remove\"}})})})});return this.attachment.isPreviewable()&&t.appendChild(C({tagName:\"div\",className:ki.attachmentMetadataContainer,childNodes:C({tagName:\"span\",className:ki.attachmentMetadata,childNodes:[C({tagName:\"span\",className:ki.attachmentName,textContent:this.attachment.getFilename(),attributes:{title:this.attachment.getFilename()}}),C({tagName:\"span\",className:ki.attachmentSize,textContent:this.attachment.getFormattedFilesize()})]})})),d(\"click\",{onElement:t,withCallback:this.didClickToolbar}),d(\"click\",{onElement:t,matchingSelector:\"[data-trix-action]\",withCallback:this.didClickActionButton}),g(\"trix-attachment-before-toolbar\",{onElement:this.element,attributes:{toolbar:t,attachment:this.attachment}}),{do:()=>this.element.appendChild(t),undo:()=>A(t)}}))),be(this,\"installCaptionEditor\",Di((()=>{const t=C({tagName:\"textarea\",className:ki.attachmentCaptionEditor,attributes:{placeholder:Si.captionPlaceholder},data:{trixMutable:!0}});t.value=this.attachmentPiece.getCaption();const e=t.cloneNode();e.classList.add(\"trix-autoresize-clone\"),e.tabIndex=-1;const i=function(){e.value=t.value,t.style.height=e.scrollHeight+\"px\"};d(\"input\",{onElement:t,withCallback:i}),d(\"input\",{onElement:t,withCallback:this.didInputCaption}),d(\"keydown\",{onElement:t,withCallback:this.didKeyDownCaption}),d(\"change\",{onElement:t,withCallback:this.didChangeCaption}),d(\"blur\",{onElement:t,withCallback:this.didBlurCaption});const n=this.element.querySelector(\"figcaption\"),r=n.cloneNode();return{do:()=>{if(n.style.display=\"none\",r.appendChild(t),r.appendChild(e),r.classList.add(\"\".concat(ki.attachmentCaption,\"--editing\")),n.parentElement.insertBefore(r,n),i(),this.options.editCaption)return yt((()=>t.focus()))},undo(){A(r),n.style.display=null}}}))),this.didClickToolbar=this.didClickToolbar.bind(this),this.didClickActionButton=this.didClickActionButton.bind(this),this.didKeyDownCaption=this.didKeyDownCaption.bind(this),this.didInputCaption=this.didInputCaption.bind(this),this.didChangeCaption=this.didChangeCaption.bind(this),this.didBlurCaption=this.didBlurCaption.bind(this),this.attachmentPiece=t,this.element=e,this.container=i,this.options=n,this.attachment=this.attachmentPiece.attachment,\"a\"===y(this.element)&&(this.element=this.element.firstChild),this.install()}install(){this.makeElementMutable(),this.addToolbar(),this.attachment.isPreviewable()&&this.installCaptionEditor()}uninstall(){var t;let e=this.undos.pop();for(this.savePendingCaption();e;)e(),e=this.undos.pop();null===(t=this.delegate)||void 0===t||t.didUninstallAttachmentEditor(this)}savePendingCaption(){if(this.pendingCaption){const r=this.pendingCaption;var t,e,i,n;if(this.pendingCaption=null,r)null===(t=this.delegate)||void 0===t||null===(e=t.attachmentEditorDidRequestUpdatingAttributesForAttachment)||void 0===e||e.call(t,{caption:r},this.attachment);else null===(i=this.delegate)||void 0===i||null===(n=i.attachmentEditorDidRequestRemovingAttributeForAttachment)||void 0===n||n.call(i,\"caption\",this.attachment)}}didClickToolbar(t){return t.preventDefault(),t.stopPropagation()}didClickActionButton(t){var e;if(\"remove\"===t.target.getAttribute(\"data-trix-action\"))return null===(e=this.delegate)||void 0===e?void 0:e.attachmentEditorDidRequestRemovalOfAttachment(this.attachment)}didKeyDownCaption(t){var e,i;if(\"return\"===Li[t.keyCode])return t.preventDefault(),this.savePendingCaption(),null===(e=this.delegate)||void 0===e||null===(i=e.attachmentEditorDidRequestDeselectingAttachment)||void 0===i?void 0:i.call(e,this.attachment)}didInputCaption(t){this.pendingCaption=t.target.value.replace(/\\s/g,\" \").trim()}didChangeCaption(t){return this.savePendingCaption()}didBlurCaption(t){return this.savePendingCaption()}}class Ti extends U{constructor(t,e){super(...arguments),this.didFocus=this.didFocus.bind(this),this.didBlur=this.didBlur.bind(this),this.didClickAttachment=this.didClickAttachment.bind(this),this.element=t,this.composition=e,this.documentView=new ue(this.composition.document,{element:this.element}),d(\"focus\",{onElement:this.element,withCallback:this.didFocus}),d(\"blur\",{onElement:this.element,withCallback:this.didBlur}),d(\"click\",{onElement:this.element,matchingSelector:\"a[contenteditable=false]\",preventDefault:!0}),d(\"mousedown\",{onElement:this.element,matchingSelector:\"[data-trix-attachment]\",withCallback:this.didClickAttachment}),d(\"click\",{onElement:this.element,matchingSelector:\"a\".concat(\"[data-trix-attachment]\"),preventDefault:!0})}didFocus(t){var e;const i=()=>{var t,e;if(!this.focused)return this.focused=!0,null===(t=this.delegate)||void 0===t||null===(e=t.compositionControllerDidFocus)||void 0===e?void 0:e.call(t)};return(null===(e=this.blurPromise)||void 0===e?void 0:e.then(i))||i()}didBlur(t){this.blurPromise=new Promise((t=>yt((()=>{var e,i;f(this.element)||(this.focused=null,null===(e=this.delegate)||void 0===e||null===(i=e.compositionControllerDidBlur)||void 0===i||i.call(e));return this.blurPromise=null,t()}))))}didClickAttachment(t,e){var i,n;const r=this.findAttachmentForElement(e),o=!!p(t.target,{matchingSelector:\"figcaption\"});return null===(i=this.delegate)||void 0===i||null===(n=i.compositionControllerDidSelectAttachment)||void 0===n?void 0:n.call(i,r,{editCaption:o})}getSerializableElement(){return this.isEditingAttachment()?this.documentView.shadowElement:this.element}render(){var t,e,i,n,r,o;(this.revision!==this.composition.revision&&(this.documentView.setDocument(this.composition.document),this.documentView.render(),this.revision=this.composition.revision),this.canSyncDocumentView()&&!this.documentView.isSynced())&&(null===(i=this.delegate)||void 0===i||null===(n=i.compositionControllerWillSyncDocumentView)||void 0===n||n.call(i),this.documentView.sync(),null===(r=this.delegate)||void 0===r||null===(o=r.compositionControllerDidSyncDocumentView)||void 0===o||o.call(r));return null===(t=this.delegate)||void 0===t||null===(e=t.compositionControllerDidRender)||void 0===e?void 0:e.call(t)}rerenderViewForObject(t){return this.invalidateViewForObject(t),this.render()}invalidateViewForObject(t){return this.documentView.invalidateViewForObject(t)}isViewCachingEnabled(){return this.documentView.isViewCachingEnabled()}enableViewCaching(){return this.documentView.enableViewCaching()}disableViewCaching(){return this.documentView.disableViewCaching()}refreshViewCache(){return this.documentView.garbageCollectCachedViews()}isEditingAttachment(){return!!this.attachmentEditor}installAttachmentEditorForAttachment(t,e){var i;if((null===(i=this.attachmentEditor)||void 0===i?void 0:i.attachment)===t)return;const n=this.documentView.findElementForObject(t);if(!n)return;this.uninstallAttachmentEditor();const r=this.composition.document.getAttachmentPieceForAttachment(t);this.attachmentEditor=new wi(r,n,this.element,e),this.attachmentEditor.delegate=this}uninstallAttachmentEditor(){var t;return null===(t=this.attachmentEditor)||void 0===t?void 0:t.uninstall()}didUninstallAttachmentEditor(){return this.attachmentEditor=null,this.render()}attachmentEditorDidRequestUpdatingAttributesForAttachment(t,e){var i,n;return null===(i=this.delegate)||void 0===i||null===(n=i.compositionControllerWillUpdateAttachment)||void 0===n||n.call(i,e),this.composition.updateAttributesForAttachment(t,e)}attachmentEditorDidRequestRemovingAttributeForAttachment(t,e){var i,n;return null===(i=this.delegate)||void 0===i||null===(n=i.compositionControllerWillUpdateAttachment)||void 0===n||n.call(i,e),this.composition.removeAttributeForAttachment(t,e)}attachmentEditorDidRequestRemovalOfAttachment(t){var e,i;return null===(e=this.delegate)||void 0===e||null===(i=e.compositionControllerDidRequestRemovalOfAttachment)||void 0===i?void 0:i.call(e,t)}attachmentEditorDidRequestDeselectingAttachment(t){var e,i;return null===(e=this.delegate)||void 0===e||null===(i=e.compositionControllerDidRequestDeselectingAttachment)||void 0===i?void 0:i.call(e,t)}canSyncDocumentView(){return!this.isEditingAttachment()}findAttachmentForElement(t){return this.composition.document.getAttachmentById(parseInt(t.dataset.trixId,10))}}class Fi extends U{}const Bi=\"[\".concat(\"data-trix-mutable\",\"]\"),Ii={attributes:!0,childList:!0,characterData:!0,characterDataOldValue:!0,subtree:!0};class Pi extends U{constructor(t){super(t),this.didMutate=this.didMutate.bind(this),this.element=t,this.observer=new window.MutationObserver(this.didMutate),this.start()}start(){return this.reset(),this.observer.observe(this.element,Ii)}stop(){return this.observer.disconnect()}didMutate(t){var e,i;if(this.mutations.push(...Array.from(this.findSignificantMutations(t)||[])),this.mutations.length)return null===(e=this.delegate)||void 0===e||null===(i=e.elementDidMutate)||void 0===i||i.call(e,this.getMutationSummary()),this.reset()}reset(){this.mutations=[]}findSignificantMutations(t){return t.filter((t=>this.mutationIsSignificant(t)))}mutationIsSignificant(t){if(this.nodeIsMutable(t.target))return!1;for(const e of Array.from(this.nodesModifiedByMutation(t)))if(this.nodeIsSignificant(e))return!0;return!1}nodeIsSignificant(t){return t!==this.element&&!this.nodeIsMutable(t)&&!B(t)}nodeIsMutable(t){return p(t,{matchingSelector:Bi})}nodesModifiedByMutation(t){const e=[];switch(t.type){case\"attributes\":\"data-trix-mutable\"!==t.attributeName&&e.push(t.target);break;case\"characterData\":e.push(t.target.parentNode),e.push(t.target);break;case\"childList\":e.push(...Array.from(t.addedNodes||[])),e.push(...Array.from(t.removedNodes||[]))}return e}getMutationSummary(){return this.getTextMutationSummary()}getTextMutationSummary(){const{additions:t,deletions:e}=this.getTextChangesFromCharacterData(),i=this.getTextChangesFromChildList();Array.from(i.additions).forEach((e=>{Array.from(t).includes(e)||t.push(e)})),e.push(...Array.from(i.deletions||[]));const n={},r=t.join(\"\");r&&(n.textAdded=r);const o=e.join(\"\");return o&&(n.textDeleted=o),n}getMutationsByType(t){return Array.from(this.mutations).filter((e=>e.type===t))}getTextChangesFromChildList(){let t,e;const i=[],n=[];Array.from(this.getMutationsByType(\"childList\")).forEach((t=>{i.push(...Array.from(t.addedNodes||[])),n.push(...Array.from(t.removedNodes||[]))}));0===i.length&&1===n.length&&D(n[0])?(t=[],e=[\"\\n\"]):(t=Ni(i),e=Ni(n));return{additions:t.filter(((t,i)=>t!==e[i])).map(Mt),deletions:e.filter(((e,i)=>e!==t[i])).map(Mt)}}getTextChangesFromCharacterData(){let t,e;const i=this.getMutationsByType(\"characterData\");if(i.length){const n=i[0],r=i[i.length-1],o=function(t,e){let i,n;return t=K.box(t),(e=K.box(e)).length<t.length?[n,i]=Ut(t,e):[i,n]=Ut(e,t),{added:i,removed:n}}(Mt(n.oldValue),Mt(r.target.data));t=o.added,e=o.removed}return{additions:t?[t]:[],deletions:e?[e]:[]}}}const Ni=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];const e=[];for(const i of Array.from(t))switch(i.nodeType){case Node.TEXT_NODE:e.push(i.data);break;case Node.ELEMENT_NODE:\"br\"===y(i)?e.push(\"\\n\"):e.push(...Array.from(Ni(i.childNodes)||[]))}return e};class Oi extends Qt{constructor(t){super(...arguments),this.file=t}perform(t){const e=new FileReader;return e.onerror=()=>t(!1),e.onload=()=>{e.onerror=null;try{e.abort()}catch(t){}return t(!0,this.file)},e.readAsArrayBuffer(this.file)}}class Mi{constructor(t){this.element=t}shouldIgnore(t){return!!o.samsungAndroid&&(this.previousEvent=this.event,this.event=t,this.checkSamsungKeyboardBuggyModeStart(),this.checkSamsungKeyboardBuggyModeEnd(),this.buggyMode)}checkSamsungKeyboardBuggyModeStart(){this.insertingLongTextAfterUnidentifiedChar()&&ji(this.element.innerText,this.event.data)&&(this.buggyMode=!0,this.event.preventDefault())}checkSamsungKeyboardBuggyModeEnd(){this.buggyMode&&\"insertText\"!==this.event.inputType&&(this.buggyMode=!1)}insertingLongTextAfterUnidentifiedChar(){var t;return this.isBeforeInputInsertText()&&this.previousEventWasUnidentifiedKeydown()&&(null===(t=this.event.data)||void 0===t?void 0:t.length)>50}isBeforeInputInsertText(){return\"beforeinput\"===this.event.type&&\"insertText\"===this.event.inputType}previousEventWasUnidentifiedKeydown(){var t,e;return\"keydown\"===(null===(t=this.previousEvent)||void 0===t?void 0:t.type)&&\"Unidentified\"===(null===(e=this.previousEvent)||void 0===e?void 0:e.key)}}const ji=(t,e)=>Ui(t)===Ui(e),Wi=new RegExp(\"(\".concat(\"\uFFFC\",\"|\").concat(\"\\ufeff\",\"|\").concat(\"\u00A0\",\"|\\\\s)+\"),\"g\"),Ui=t=>t.replace(Wi,\" \").trim();class qi extends U{constructor(t){super(...arguments),this.element=t,this.mutationObserver=new Pi(this.element),this.mutationObserver.delegate=this,this.flakyKeyboardDetector=new Mi(this.element);for(const t in this.constructor.events)d(t,{onElement:this.element,withCallback:this.handlerFor(t)})}elementDidMutate(t){}editorWillSyncDocumentView(){return this.mutationObserver.stop()}editorDidSyncDocumentView(){return this.mutationObserver.start()}requestRender(){var t,e;return null===(t=this.delegate)||void 0===t||null===(e=t.inputControllerDidRequestRender)||void 0===e?void 0:e.call(t)}requestReparse(){var t,e;return null===(t=this.delegate)||void 0===t||null===(e=t.inputControllerDidRequestReparse)||void 0===e||e.call(t),this.requestRender()}attachFiles(t){const e=Array.from(t).map((t=>new Oi(t)));return Promise.all(e).then((t=>{this.handleInput((function(){var e,i;return null===(e=this.delegate)||void 0===e||e.inputControllerWillAttachFiles(),null===(i=this.responder)||void 0===i||i.insertFiles(t),this.requestRender()}))}))}handlerFor(t){return e=>{e.defaultPrevented||this.handleInput((()=>{if(!f(this.element)){if(this.flakyKeyboardDetector.shouldIgnore(e))return;this.eventName=t,this.constructor.events[t].call(this,e)}}))}}handleInput(t){try{var e;null===(e=this.delegate)||void 0===e||e.inputControllerWillHandleInput(),t.call(this)}finally{var i;null===(i=this.delegate)||void 0===i||i.inputControllerDidHandleInput()}}createLinkHTML(t,e){const i=document.createElement(\"a\");return i.href=t,i.textContent=e||t,i.outerHTML}}var Vi;be(qi,\"events\",{});const{browser:zi,keyNames:_i}=W;let Hi=0;class Ji extends qi{constructor(){super(...arguments),this.resetInputSummary()}setInputSummary(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.inputSummary.eventName=this.eventName;for(const e in t){const i=t[e];this.inputSummary[e]=i}return this.inputSummary}resetInputSummary(){this.inputSummary={}}reset(){return this.resetInputSummary(),Ft.reset()}elementDidMutate(t){var e,i;return this.isComposing()?null===(e=this.delegate)||void 0===e||null===(i=e.inputControllerDidAllowUnhandledInput)||void 0===i?void 0:i.call(e):this.handleInput((function(){return this.mutationIsSignificant(t)&&(this.mutationIsExpected(t)?this.requestRender():this.requestReparse()),this.reset()}))}mutationIsExpected(t){let{textAdded:e,textDeleted:i}=t;if(this.inputSummary.preferDocument)return!0;const n=null!=e?e===this.inputSummary.textAdded:!this.inputSummary.textAdded,r=null!=i?this.inputSummary.didDelete:!this.inputSummary.didDelete,o=[\"\\n\",\" \\n\"].includes(e)&&!n,s=\"\\n\"===i&&!r;if(o&&!s||s&&!o){const t=this.getSelectedRange();if(t){var a;const i=o?e.replace(/\\n$/,\"\").length||-1:(null==e?void 0:e.length)||1;if(null!==(a=this.responder)&&void 0!==a&&a.positionIsBlockBreak(t[1]+i))return!0}}return n&&r}mutationIsSignificant(t){var e;const i=Object.keys(t).length>0,n=\"\"===(null===(e=this.compositionInput)||void 0===e?void 0:e.getEndData());return i||!n}getCompositionInput(){if(this.isComposing())return this.compositionInput;this.compositionInput=new Yi(this)}isComposing(){return this.compositionInput&&!this.compositionInput.isEnded()}deleteInDirection(t,e){var i;return!1!==(null===(i=this.responder)||void 0===i?void 0:i.deleteInDirection(t))?this.setInputSummary({didDelete:!0}):e?(e.preventDefault(),this.requestRender()):void 0}serializeSelectionToDataTransfer(t){var e;if(!function(t){if(null==t||!t.setData)return!1;for(const e in vt){const i=vt[e];try{if(t.setData(e,i),!t.getData(e)===i)return!1}catch(t){return!1}}return!0}(t))return;const i=null===(e=this.responder)||void 0===e?void 0:e.getSelectedDocument().toSerializableDocument();return t.setData(\"application/x-trix-document\",JSON.stringify(i)),t.setData(\"text/html\",ue.render(i).innerHTML),t.setData(\"text/plain\",i.toString().replace(/\\n$/,\"\")),!0}canAcceptDataTransfer(t){const e={};return Array.from((null==t?void 0:t.types)||[]).forEach((t=>{e[t]=!0})),e.Files||e[\"application/x-trix-document\"]||e[\"text/html\"]||e[\"text/plain\"]}getPastedHTMLUsingHiddenElement(t){const e=this.getSelectedRange(),i={position:\"absolute\",left:\"\".concat(window.pageXOffset,\"px\"),top:\"\".concat(window.pageYOffset,\"px\"),opacity:0},n=C({style:i,tagName:\"div\",editable:!0});return document.body.appendChild(n),n.focus(),requestAnimationFrame((()=>{const i=n.innerHTML;return A(n),this.setSelectedRange(e),t(i)}))}}be(Ji,\"events\",{keydown(t){this.isComposing()||this.resetInputSummary(),this.inputSummary.didInput=!0;const e=_i[t.keyCode];if(e){var i;let n=this.keys;[\"ctrl\",\"alt\",\"shift\",\"meta\"].forEach((e=>{var i;t[\"\".concat(e,\"Key\")]&&(\"ctrl\"===e&&(e=\"control\"),n=null===(i=n)||void 0===i?void 0:i[e])})),null!=(null===(i=n)||void 0===i?void 0:i[e])&&(this.setInputSummary({keyName:e}),Ft.reset(),n[e].call(this,t))}if(xt(t)){const e=String.fromCharCode(t.keyCode).toLowerCase();if(e){var n;const i=[\"alt\",\"shift\"].map((e=>{if(t[\"\".concat(e,\"Key\")])return e})).filter((t=>t));i.push(e),null!==(n=this.delegate)&&void 0!==n&&n.inputControllerDidReceiveKeyboardCommand(i)&&t.preventDefault()}}},keypress(t){if(null!=this.inputSummary.eventName)return;if(t.metaKey)return;if(t.ctrlKey&&!t.altKey)return;const e=$i(t);var i,n;return e?(null===(i=this.delegate)||void 0===i||i.inputControllerWillPerformTyping(),null===(n=this.responder)||void 0===n||n.insertString(e),this.setInputSummary({textAdded:e,didDelete:this.selectionIsExpanded()})):void 0},textInput(t){const{data:e}=t,{textAdded:i}=this.inputSummary;if(i&&i!==e&&i.toUpperCase()===e){var n;const t=this.getSelectedRange();return this.setSelectedRange([t[0],t[1]+i.length]),null===(n=this.responder)||void 0===n||n.insertString(e),this.setInputSummary({textAdded:e}),this.setSelectedRange(t)}},dragenter(t){t.preventDefault()},dragstart(t){var e,i;return this.serializeSelectionToDataTransfer(t.dataTransfer),this.draggedRange=this.getSelectedRange(),null===(e=this.delegate)||void 0===e||null===(i=e.inputControllerDidStartDrag)||void 0===i?void 0:i.call(e)},dragover(t){if(this.draggedRange||this.canAcceptDataTransfer(t.dataTransfer)){t.preventDefault();const n={x:t.clientX,y:t.clientY};var e,i;if(!Rt(n,this.draggingPoint))return this.draggingPoint=n,null===(e=this.delegate)||void 0===e||null===(i=e.inputControllerDidReceiveDragOverPoint)||void 0===i?void 0:i.call(e,this.draggingPoint)}},dragend(t){var e,i;null===(e=this.delegate)||void 0===e||null===(i=e.inputControllerDidCancelDrag)||void 0===i||i.call(e),this.draggedRange=null,this.draggingPoint=null},drop(t){var e,i;t.preventDefault();const n=null===(e=t.dataTransfer)||void 0===e?void 0:e.files,r=t.dataTransfer.getData(\"application/x-trix-document\"),o={x:t.clientX,y:t.clientY};if(null===(i=this.responder)||void 0===i||i.setLocationRangeFromPointRange(o),null!=n&&n.length)this.attachFiles(n);else if(this.draggedRange){var s,a;null===(s=this.delegate)||void 0===s||s.inputControllerWillMoveText(),null===(a=this.responder)||void 0===a||a.moveTextFromRange(this.draggedRange),this.draggedRange=null,this.requestRender()}else if(r){var l;const t=je.fromJSONString(r);null===(l=this.responder)||void 0===l||l.insertDocument(t),this.requestRender()}this.draggedRange=null,this.draggingPoint=null},cut(t){var e,i;if(null!==(e=this.responder)&&void 0!==e&&e.selectionIsExpanded()&&(this.serializeSelectionToDataTransfer(t.clipboardData)&&t.preventDefault(),null===(i=this.delegate)||void 0===i||i.inputControllerWillCutText(),this.deleteInDirection(\"backward\"),t.defaultPrevented))return this.requestRender()},copy(t){var e;null!==(e=this.responder)&&void 0!==e&&e.selectionIsExpanded()&&this.serializeSelectionToDataTransfer(t.clipboardData)&&t.preventDefault()},paste(t){const e=t.clipboardData||t.testClipboardData,i={clipboard:e};if(!e||Xi(t))return void this.getPastedHTMLUsingHiddenElement((t=>{var e,n,r;return i.type=\"text/html\",i.html=t,null===(e=this.delegate)||void 0===e||e.inputControllerWillPaste(i),null===(n=this.responder)||void 0===n||n.insertHTML(i.html),this.requestRender(),null===(r=this.delegate)||void 0===r?void 0:r.inputControllerDidPaste(i)}));const n=e.getData(\"URL\"),r=e.getData(\"text/html\"),o=e.getData(\"public.url-name\");if(n){var s,a,l;let t;i.type=\"text/html\",t=o?Wt(o).trim():n,i.html=this.createLinkHTML(n,t),null===(s=this.delegate)||void 0===s||s.inputControllerWillPaste(i),this.setInputSummary({textAdded:t,didDelete:this.selectionIsExpanded()}),null===(a=this.responder)||void 0===a||a.insertHTML(i.html),this.requestRender(),null===(l=this.delegate)||void 0===l||l.inputControllerDidPaste(i)}else if(At(e)){var c,h,u;i.type=\"text/plain\",i.string=e.getData(\"text/plain\"),null===(c=this.delegate)||void 0===c||c.inputControllerWillPaste(i),this.setInputSummary({textAdded:i.string,didDelete:this.selectionIsExpanded()}),null===(h=this.responder)||void 0===h||h.insertString(i.string),this.requestRender(),null===(u=this.delegate)||void 0===u||u.inputControllerDidPaste(i)}else if(r){var d,g,m;i.type=\"text/html\",i.html=r,null===(d=this.delegate)||void 0===d||d.inputControllerWillPaste(i),null===(g=this.responder)||void 0===g||g.insertHTML(i.html),this.requestRender(),null===(m=this.delegate)||void 0===m||m.inputControllerDidPaste(i)}else if(Array.from(e.types).includes(\"Files\")){var p,f,b;const t=null===(p=e.items)||void 0===p||null===(f=p[0])||void 0===f||null===(b=f.getAsFile)||void 0===b?void 0:b.call(f);if(t){var v,A,x;const e=Ki(t);!t.name&&e&&(t.name=\"pasted-file-\".concat(++Hi,\".\").concat(e)),i.type=\"File\",i.file=t,null===(v=this.delegate)||void 0===v||v.inputControllerWillAttachFiles(),null===(A=this.responder)||void 0===A||A.insertFile(i.file),this.requestRender(),null===(x=this.delegate)||void 0===x||x.inputControllerDidPaste(i)}}t.preventDefault()},compositionstart(t){return this.getCompositionInput().start(t.data)},compositionupdate(t){return this.getCompositionInput().update(t.data)},compositionend(t){return this.getCompositionInput().end(t.data)},beforeinput(t){this.inputSummary.didInput=!0},input(t){return this.inputSummary.didInput=!0,t.stopPropagation()}}),be(Ji,\"keys\",{backspace(t){var e;return null===(e=this.delegate)||void 0===e||e.inputControllerWillPerformTyping(),this.deleteInDirection(\"backward\",t)},delete(t){var e;return null===(e=this.delegate)||void 0===e||e.inputControllerWillPerformTyping(),this.deleteInDirection(\"forward\",t)},return(t){var e,i;return this.setInputSummary({preferDocument:!0}),null===(e=this.delegate)||void 0===e||e.inputControllerWillPerformTyping(),null===(i=this.responder)||void 0===i?void 0:i.insertLineBreak()},tab(t){var e,i;null!==(e=this.responder)&&void 0!==e&&e.canIncreaseNestingLevel()&&(null===(i=this.responder)||void 0===i||i.increaseNestingLevel(),this.requestRender(),t.preventDefault())},left(t){var e;if(this.selectionIsInCursorTarget())return t.preventDefault(),null===(e=this.responder)||void 0===e?void 0:e.moveCursorInDirection(\"backward\")},right(t){var e;if(this.selectionIsInCursorTarget())return t.preventDefault(),null===(e=this.responder)||void 0===e?void 0:e.moveCursorInDirection(\"forward\")},control:{d(t){var e;return null===(e=this.delegate)||void 0===e||e.inputControllerWillPerformTyping(),this.deleteInDirection(\"forward\",t)},h(t){var e;return null===(e=this.delegate)||void 0===e||e.inputControllerWillPerformTyping(),this.deleteInDirection(\"backward\",t)},o(t){var e,i;return t.preventDefault(),null===(e=this.delegate)||void 0===e||e.inputControllerWillPerformTyping(),null===(i=this.responder)||void 0===i||i.insertString(\"\\n\",{updatePosition:!1}),this.requestRender()}},shift:{return(t){var e,i;null===(e=this.delegate)||void 0===e||e.inputControllerWillPerformTyping(),null===(i=this.responder)||void 0===i||i.insertString(\"\\n\"),this.requestRender(),t.preventDefault()},tab(t){var e,i;null!==(e=this.responder)&&void 0!==e&&e.canDecreaseNestingLevel()&&(null===(i=this.responder)||void 0===i||i.decreaseNestingLevel(),this.requestRender(),t.preventDefault())},left(t){if(this.selectionIsInCursorTarget())return t.preventDefault(),this.expandSelectionInDirection(\"backward\")},right(t){if(this.selectionIsInCursorTarget())return t.preventDefault(),this.expandSelectionInDirection(\"forward\")}},alt:{backspace(t){var e;return this.setInputSummary({preferDocument:!1}),null===(e=this.delegate)||void 0===e?void 0:e.inputControllerWillPerformTyping()}},meta:{backspace(t){var e;return this.setInputSummary({preferDocument:!1}),null===(e=this.delegate)||void 0===e?void 0:e.inputControllerWillPerformTyping()}}}),Ji.proxyMethod(\"responder?.getSelectedRange\"),Ji.proxyMethod(\"responder?.setSelectedRange\"),Ji.proxyMethod(\"responder?.expandSelectionInDirection\"),Ji.proxyMethod(\"responder?.selectionIsInCursorTarget\"),Ji.proxyMethod(\"responder?.selectionIsExpanded\");const Ki=t=>{var e,i;return null===(e=t.type)||void 0===e||null===(i=e.match(/\\/(\\w+)$/))||void 0===i?void 0:i[1]},Gi=!(null===(Vi=\" \".codePointAt)||void 0===Vi||!Vi.call(\" \",0)),$i=function(t){if(t.key&&Gi&&t.key.codePointAt(0)===t.keyCode)return t.key;{let e;if(null===t.which?e=t.keyCode:0!==t.which&&0!==t.charCode&&(e=t.charCode),null!=e&&\"escape\"!==_i[e])return K.fromCodepoints([e]).toString()}},Xi=function(t){const e=t.clipboardData;if(e){if(e.types.includes(\"text/html\")){for(const t of e.types){const i=/^CorePasteboardFlavorType/.test(t),n=/^dyn\\./.test(t)&&e.getData(t);if(i||n)return!0}return!1}{const t=e.types.includes(\"com.apple.webarchive\"),i=e.types.includes(\"com.apple.flat-rtfd\");return t||i}}};class Yi extends U{constructor(t){super(...arguments),this.inputController=t,this.responder=this.inputController.responder,this.delegate=this.inputController.delegate,this.inputSummary=this.inputController.inputSummary,this.data={}}start(t){if(this.data.start=t,this.isSignificant()){var e,i;if(\"keypress\"===this.inputSummary.eventName&&this.inputSummary.textAdded)null===(i=this.responder)||void 0===i||i.deleteInDirection(\"left\");this.selectionIsExpanded()||(this.insertPlaceholder(),this.requestRender()),this.range=null===(e=this.responder)||void 0===e?void 0:e.getSelectedRange()}}update(t){if(this.data.update=t,this.isSignificant()){const t=this.selectPlaceholder();t&&(this.forgetPlaceholder(),this.range=t)}}end(t){return this.data.end=t,this.isSignificant()?(this.forgetPlaceholder(),this.canApplyToDocument()?(this.setInputSummary({preferDocument:!0,didInput:!1}),null===(e=this.delegate)||void 0===e||e.inputControllerWillPerformTyping(),null===(i=this.responder)||void 0===i||i.setSelectedRange(this.range),null===(n=this.responder)||void 0===n||n.insertString(this.data.end),null===(r=this.responder)||void 0===r?void 0:r.setSelectedRange(this.range[0]+this.data.end.length)):null!=this.data.start||null!=this.data.update?(this.requestReparse(),this.inputController.reset()):void 0):this.inputController.reset();var e,i,n,r}getEndData(){return this.data.end}isEnded(){return null!=this.getEndData()}isSignificant(){return!zi.composesExistingText||this.inputSummary.didInput}canApplyToDocument(){var t,e;return 0===(null===(t=this.data.start)||void 0===t?void 0:t.length)&&(null===(e=this.data.end)||void 0===e?void 0:e.length)>0&&this.range}}Yi.proxyMethod(\"inputController.setInputSummary\"),Yi.proxyMethod(\"inputController.requestRender\"),Yi.proxyMethod(\"inputController.requestReparse\"),Yi.proxyMethod(\"responder?.selectionIsExpanded\"),Yi.proxyMethod(\"responder?.insertPlaceholder\"),Yi.proxyMethod(\"responder?.selectPlaceholder\"),Yi.proxyMethod(\"responder?.forgetPlaceholder\");class Qi extends qi{constructor(){super(...arguments),this.render=this.render.bind(this)}elementDidMutate(){return this.scheduledRender?this.composing?null===(t=this.delegate)||void 0===t||null===(e=t.inputControllerDidAllowUnhandledInput)||void 0===e?void 0:e.call(t):void 0:this.reparse();var t,e}scheduleRender(){return this.scheduledRender?this.scheduledRender:this.scheduledRender=requestAnimationFrame(this.render)}render(){var t,e;(cancelAnimationFrame(this.scheduledRender),this.scheduledRender=null,this.composing)||(null===(e=this.delegate)||void 0===e||e.render());null===(t=this.afterRender)||void 0===t||t.call(this),this.afterRender=null}reparse(){var t;return null===(t=this.delegate)||void 0===t?void 0:t.reparse()}insertString(){var t;let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"\",i=arguments.length>1?arguments[1]:void 0;return null===(t=this.delegate)||void 0===t||t.inputControllerWillPerformTyping(),this.withTargetDOMRange((function(){var t;return null===(t=this.responder)||void 0===t?void 0:t.insertString(e,i)}))}toggleAttributeIfSupported(t){var e;if(ct().includes(t))return null===(e=this.delegate)||void 0===e||e.inputControllerWillPerformFormatting(t),this.withTargetDOMRange((function(){var e;return null===(e=this.responder)||void 0===e?void 0:e.toggleCurrentAttribute(t)}))}activateAttributeIfSupported(t,e){var i;if(ct().includes(t))return null===(i=this.delegate)||void 0===i||i.inputControllerWillPerformFormatting(t),this.withTargetDOMRange((function(){var i;return null===(i=this.responder)||void 0===i?void 0:i.setCurrentAttribute(t,e)}))}deleteInDirection(t){let{recordUndoEntry:e}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{recordUndoEntry:!0};var i;e&&(null===(i=this.delegate)||void 0===i||i.inputControllerWillPerformTyping());const n=()=>{var e;return null===(e=this.responder)||void 0===e?void 0:e.deleteInDirection(t)},r=this.getTargetDOMRange({minLength:2});return r?this.withTargetDOMRange(r,n):n()}withTargetDOMRange(t,e){var i;return\"function\"==typeof t&&(e=t,t=this.getTargetDOMRange()),t?null===(i=this.responder)||void 0===i?void 0:i.withTargetDOMRange(t,e.bind(this)):(Ft.reset(),e.call(this))}getTargetDOMRange(){var t,e;let{minLength:i}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{minLength:0};const n=null===(t=(e=this.event).getTargetRanges)||void 0===t?void 0:t.call(e);if(n&&n.length){const t=Zi(n[0]);if(0===i||t.toString().length>=i)return t}}withEvent(t,e){let i;this.event=t;try{i=e.call(this)}finally{this.event=null}return i}}be(Qi,\"events\",{keydown(t){if(xt(t)){var e;const i=rn(t);null!==(e=this.delegate)&&void 0!==e&&e.inputControllerDidReceiveKeyboardCommand(i)&&t.preventDefault()}else{let e=t.key;t.altKey&&(e+=\"+Alt\"),t.shiftKey&&(e+=\"+Shift\");const i=this.constructor.keys[e];if(i)return this.withEvent(t,i)}},paste(t){var e;let i;const n=null===(e=t.clipboardData)||void 0===e?void 0:e.getData(\"URL\");return en(t)?(t.preventDefault(),this.attachFiles(t.clipboardData.files)):nn(t)?(t.preventDefault(),i={type:\"text/plain\",string:t.clipboardData.getData(\"text/plain\")},null===(r=this.delegate)||void 0===r||r.inputControllerWillPaste(i),null===(o=this.responder)||void 0===o||o.insertString(i.string),this.render(),null===(s=this.delegate)||void 0===s?void 0:s.inputControllerDidPaste(i)):n?(t.preventDefault(),i={type:\"text/html\",html:this.createLinkHTML(n)},null===(a=this.delegate)||void 0===a||a.inputControllerWillPaste(i),null===(l=this.responder)||void 0===l||l.insertHTML(i.html),this.render(),null===(c=this.delegate)||void 0===c?void 0:c.inputControllerDidPaste(i)):void 0;var r,o,s,a,l,c},beforeinput(t){const e=this.constructor.inputTypes[t.inputType];e&&(this.withEvent(t,e),this.scheduleRender())},input(t){Ft.reset()},dragstart(t){var e,i;null!==(e=this.responder)&&void 0!==e&&e.selectionContainsAttachments()&&(t.dataTransfer.setData(\"application/x-trix-dragging\",!0),this.dragging={range:null===(i=this.responder)||void 0===i?void 0:i.getSelectedRange(),point:on(t)})},dragenter(t){tn(t)&&t.preventDefault()},dragover(t){if(this.dragging){t.preventDefault();const i=on(t);var e;if(!Rt(i,this.dragging.point))return this.dragging.point=i,null===(e=this.responder)||void 0===e?void 0:e.setLocationRangeFromPointRange(i)}else tn(t)&&t.preventDefault()},drop(t){var e,i;if(this.dragging)return t.preventDefault(),null===(e=this.delegate)||void 0===e||e.inputControllerWillMoveText(),null===(i=this.responder)||void 0===i||i.moveTextFromRange(this.dragging.range),this.dragging=null,this.scheduleRender();if(tn(t)){var n;t.preventDefault();const e=on(t);return null===(n=this.responder)||void 0===n||n.setLocationRangeFromPointRange(e),this.attachFiles(t.dataTransfer.files)}},dragend(){var t;this.dragging&&(null===(t=this.responder)||void 0===t||t.setSelectedRange(this.dragging.range),this.dragging=null)},compositionend(t){this.composing&&(this.composing=!1,o.recentAndroid||this.scheduleRender())}}),be(Qi,\"keys\",{ArrowLeft(){var t,e;if(null!==(t=this.responder)&&void 0!==t&&t.shouldManageMovingCursorInDirection(\"backward\"))return this.event.preventDefault(),null===(e=this.responder)||void 0===e?void 0:e.moveCursorInDirection(\"backward\")},ArrowRight(){var t,e;if(null!==(t=this.responder)&&void 0!==t&&t.shouldManageMovingCursorInDirection(\"forward\"))return this.event.preventDefault(),null===(e=this.responder)||void 0===e?void 0:e.moveCursorInDirection(\"forward\")},Backspace(){var t,e,i;if(null!==(t=this.responder)&&void 0!==t&&t.shouldManageDeletingInDirection(\"backward\"))return this.event.preventDefault(),null===(e=this.delegate)||void 0===e||e.inputControllerWillPerformTyping(),null===(i=this.responder)||void 0===i||i.deleteInDirection(\"backward\"),this.render()},Tab(){var t,e;if(null!==(t=this.responder)&&void 0!==t&&t.canIncreaseNestingLevel())return this.event.preventDefault(),null===(e=this.responder)||void 0===e||e.increaseNestingLevel(),this.render()},\"Tab+Shift\"(){var t,e;if(null!==(t=this.responder)&&void 0!==t&&t.canDecreaseNestingLevel())return this.event.preventDefault(),null===(e=this.responder)||void 0===e||e.decreaseNestingLevel(),this.render()}}),be(Qi,\"inputTypes\",{deleteByComposition(){return this.deleteInDirection(\"backward\",{recordUndoEntry:!1})},deleteByCut(){return this.deleteInDirection(\"backward\")},deleteByDrag(){return this.event.preventDefault(),this.withTargetDOMRange((function(){var t;this.deleteByDragRange=null===(t=this.responder)||void 0===t?void 0:t.getSelectedRange()}))},deleteCompositionText(){return this.deleteInDirection(\"backward\",{recordUndoEntry:!1})},deleteContent(){return this.deleteInDirection(\"backward\")},deleteContentBackward(){return this.deleteInDirection(\"backward\")},deleteContentForward(){return this.deleteInDirection(\"forward\")},deleteEntireSoftLine(){return this.deleteInDirection(\"forward\")},deleteHardLineBackward(){return this.deleteInDirection(\"backward\")},deleteHardLineForward(){return this.deleteInDirection(\"forward\")},deleteSoftLineBackward(){return this.deleteInDirection(\"backward\")},deleteSoftLineForward(){return this.deleteInDirection(\"forward\")},deleteWordBackward(){return this.deleteInDirection(\"backward\")},deleteWordForward(){return this.deleteInDirection(\"forward\")},formatBackColor(){return this.activateAttributeIfSupported(\"backgroundColor\",this.event.data)},formatBold(){return this.toggleAttributeIfSupported(\"bold\")},formatFontColor(){return this.activateAttributeIfSupported(\"color\",this.event.data)},formatFontName(){return this.activateAttributeIfSupported(\"font\",this.event.data)},formatIndent(){var t;if(null!==(t=this.responder)&&void 0!==t&&t.canIncreaseNestingLevel())return this.withTargetDOMRange((function(){var t;return null===(t=this.responder)||void 0===t?void 0:t.increaseNestingLevel()}))},formatItalic(){return this.toggleAttributeIfSupported(\"italic\")},formatJustifyCenter(){return this.toggleAttributeIfSupported(\"justifyCenter\")},formatJustifyFull(){return this.toggleAttributeIfSupported(\"justifyFull\")},formatJustifyLeft(){return this.toggleAttributeIfSupported(\"justifyLeft\")},formatJustifyRight(){return this.toggleAttributeIfSupported(\"justifyRight\")},formatOutdent(){var t;if(null!==(t=this.responder)&&void 0!==t&&t.canDecreaseNestingLevel())return this.withTargetDOMRange((function(){var t;return null===(t=this.responder)||void 0===t?void 0:t.decreaseNestingLevel()}))},formatRemove(){this.withTargetDOMRange((function(){for(const i in null===(t=this.responder)||void 0===t?void 0:t.getCurrentAttributes()){var t,e;null===(e=this.responder)||void 0===e||e.removeCurrentAttribute(i)}}))},formatSetBlockTextDirection(){return this.activateAttributeIfSupported(\"blockDir\",this.event.data)},formatSetInlineTextDirection(){return this.activateAttributeIfSupported(\"textDir\",this.event.data)},formatStrikeThrough(){return this.toggleAttributeIfSupported(\"strike\")},formatSubscript(){return this.toggleAttributeIfSupported(\"sub\")},formatSuperscript(){return this.toggleAttributeIfSupported(\"sup\")},formatUnderline(){return this.toggleAttributeIfSupported(\"underline\")},historyRedo(){var t;return null===(t=this.delegate)||void 0===t?void 0:t.inputControllerWillPerformRedo()},historyUndo(){var t;return null===(t=this.delegate)||void 0===t?void 0:t.inputControllerWillPerformUndo()},insertCompositionText(){return this.composing=!0,this.insertString(this.event.data)},insertFromComposition(){return this.composing=!1,this.insertString(this.event.data)},insertFromDrop(){const t=this.deleteByDragRange;var e;if(t)return this.deleteByDragRange=null,null===(e=this.delegate)||void 0===e||e.inputControllerWillMoveText(),this.withTargetDOMRange((function(){var e;return null===(e=this.responder)||void 0===e?void 0:e.moveTextFromRange(t)}))},insertFromPaste(){var t;const{dataTransfer:e}=this.event,i={dataTransfer:e},n=e.getData(\"URL\"),r=e.getData(\"text/html\");if(n){var o;let t;this.event.preventDefault(),i.type=\"text/html\";const r=e.getData(\"public.url-name\");t=r?Wt(r).trim():n,i.html=this.createLinkHTML(n,t),null===(o=this.delegate)||void 0===o||o.inputControllerWillPaste(i),this.withTargetDOMRange((function(){var t;return null===(t=this.responder)||void 0===t?void 0:t.insertHTML(i.html)})),this.afterRender=()=>{var t;return null===(t=this.delegate)||void 0===t?void 0:t.inputControllerDidPaste(i)}}else if(At(e)){var s;i.type=\"text/plain\",i.string=e.getData(\"text/plain\"),null===(s=this.delegate)||void 0===s||s.inputControllerWillPaste(i),this.withTargetDOMRange((function(){var t;return null===(t=this.responder)||void 0===t?void 0:t.insertString(i.string)})),this.afterRender=()=>{var t;return null===(t=this.delegate)||void 0===t?void 0:t.inputControllerDidPaste(i)}}else if(r){var a;this.event.preventDefault(),i.type=\"text/html\",i.html=r,null===(a=this.delegate)||void 0===a||a.inputControllerWillPaste(i),this.withTargetDOMRange((function(){var t;return null===(t=this.responder)||void 0===t?void 0:t.insertHTML(i.html)})),this.afterRender=()=>{var t;return null===(t=this.delegate)||void 0===t?void 0:t.inputControllerDidPaste(i)}}else if(null!==(t=e.files)&&void 0!==t&&t.length){var l;i.type=\"File\",i.file=e.files[0],null===(l=this.delegate)||void 0===l||l.inputControllerWillPaste(i),this.withTargetDOMRange((function(){var t;return null===(t=this.responder)||void 0===t?void 0:t.insertFile(i.file)})),this.afterRender=()=>{var t;return null===(t=this.delegate)||void 0===t?void 0:t.inputControllerDidPaste(i)}}},insertFromYank(){return this.insertString(this.event.data)},insertLineBreak(){return this.insertString(\"\\n\")},insertLink(){return this.activateAttributeIfSupported(\"href\",this.event.data)},insertOrderedList(){return this.toggleAttributeIfSupported(\"number\")},insertParagraph(){var t;return null===(t=this.delegate)||void 0===t||t.inputControllerWillPerformTyping(),this.withTargetDOMRange((function(){var t;return null===(t=this.responder)||void 0===t?void 0:t.insertLineBreak()}))},insertReplacementText(){return this.insertString(this.event.dataTransfer.getData(\"text/plain\"),{updatePosition:!1})},insertText(){var t;return this.insertString(this.event.data||(null===(t=this.event.dataTransfer)||void 0===t?void 0:t.getData(\"text/plain\")))},insertTranspose(){return this.insertString(this.event.data)},insertUnorderedList(){return this.toggleAttributeIfSupported(\"bullet\")}});const Zi=function(t){const e=document.createRange();return e.setStart(t.startContainer,t.startOffset),e.setEnd(t.endContainer,t.endOffset),e},tn=t=>{var e;return Array.from((null===(e=t.dataTransfer)||void 0===e?void 0:e.types)||[]).includes(\"Files\")},en=function(t){const e=t.clipboardData;if(e)return e.types.includes(\"Files\")&&1===e.types.length&&e.files.length>=1},nn=function(t){const e=t.clipboardData;if(e)return e.types.includes(\"text/plain\")&&1===e.types.length},rn=function(t){const e=[];return t.altKey&&e.push(\"alt\"),t.shiftKey&&e.push(\"shift\"),e.push(t.key),e},on=t=>({x:t.clientX,y:t.clientY}),sn=\"\".concat(\"[data-trix-attribute]\",\", \").concat(\"[data-trix-action]\"),an=\"\".concat(\"[data-trix-dialog]\",\"[data-trix-active]\"),ln=\"\".concat(\"[data-trix-dialog]\",\" [data-trix-method]\"),cn=\"\".concat(\"[data-trix-dialog]\",\" [data-trix-input]\"),hn=(t,e)=>(e||(e=dn(t)),t.querySelector(\"[data-trix-input][name='\".concat(e,\"']\"))),un=t=>t.getAttribute(\"data-trix-action\"),dn=t=>t.getAttribute(\"data-trix-attribute\")||t.getAttribute(\"data-trix-dialog-attribute\");class gn extends U{constructor(t){super(t),this.didClickActionButton=this.didClickActionButton.bind(this),this.didClickAttributeButton=this.didClickAttributeButton.bind(this),this.didClickDialogButton=this.didClickDialogButton.bind(this),this.didKeyDownDialogInput=this.didKeyDownDialogInput.bind(this),this.element=t,this.attributes={},this.actions={},this.resetDialogInputs(),d(\"mousedown\",{onElement:this.element,matchingSelector:\"[data-trix-action]\",withCallback:this.didClickActionButton}),d(\"mousedown\",{onElement:this.element,matchingSelector:\"[data-trix-attribute]\",withCallback:this.didClickAttributeButton}),d(\"click\",{onElement:this.element,matchingSelector:sn,preventDefault:!0}),d(\"click\",{onElement:this.element,matchingSelector:ln,withCallback:this.didClickDialogButton}),d(\"keydown\",{onElement:this.element,matchingSelector:cn,withCallback:this.didKeyDownDialogInput})}didClickActionButton(t,e){var i;null===(i=this.delegate)||void 0===i||i.toolbarDidClickButton(),t.preventDefault();const n=un(e);return this.getDialog(n)?this.toggleDialog(n):null===(r=this.delegate)||void 0===r?void 0:r.toolbarDidInvokeAction(n);var r}didClickAttributeButton(t,e){var i;null===(i=this.delegate)||void 0===i||i.toolbarDidClickButton(),t.preventDefault();const n=dn(e);var r;this.getDialog(n)?this.toggleDialog(n):null===(r=this.delegate)||void 0===r||r.toolbarDidToggleAttribute(n);return this.refreshAttributeButtons()}didClickDialogButton(t,e){const i=p(e,{matchingSelector:\"[data-trix-dialog]\"});return this[e.getAttribute(\"data-trix-method\")].call(this,i)}didKeyDownDialogInput(t,e){if(13===t.keyCode){t.preventDefault();const i=e.getAttribute(\"name\"),n=this.getDialog(i);this.setAttribute(n)}if(27===t.keyCode)return t.preventDefault(),this.hideDialog()}updateActions(t){return this.actions=t,this.refreshActionButtons()}refreshActionButtons(){return this.eachActionButton(((t,e)=>{t.disabled=!1===this.actions[e]}))}eachActionButton(t){return Array.from(this.element.querySelectorAll(\"[data-trix-action]\")).map((e=>t(e,un(e))))}updateAttributes(t){return this.attributes=t,this.refreshAttributeButtons()}refreshAttributeButtons(){return this.eachAttributeButton(((t,e)=>(t.disabled=!1===this.attributes[e],this.attributes[e]||this.dialogIsVisible(e)?(t.setAttribute(\"data-trix-active\",\"\"),t.classList.add(\"trix-active\")):(t.removeAttribute(\"data-trix-active\"),t.classList.remove(\"trix-active\")))))}eachAttributeButton(t){return Array.from(this.element.querySelectorAll(\"[data-trix-attribute]\")).map((e=>t(e,dn(e))))}applyKeyboardCommand(t){const e=JSON.stringify(t.sort());for(const t of Array.from(this.element.querySelectorAll(\"[data-trix-key]\"))){const i=t.getAttribute(\"data-trix-key\").split(\"+\");if(JSON.stringify(i.sort())===e)return g(\"mousedown\",{onElement:t}),!0}return!1}dialogIsVisible(t){const e=this.getDialog(t);if(e)return e.hasAttribute(\"data-trix-active\")}toggleDialog(t){return this.dialogIsVisible(t)?this.hideDialog():this.showDialog(t)}showDialog(t){var e,i;this.hideDialog(),null===(e=this.delegate)||void 0===e||e.toolbarWillShowDialog();const n=this.getDialog(t);n.setAttribute(\"data-trix-active\",\"\"),n.classList.add(\"trix-active\"),Array.from(n.querySelectorAll(\"input[disabled]\")).forEach((t=>{t.removeAttribute(\"disabled\")}));const r=dn(n);if(r){const e=hn(n,t);e&&(e.value=this.attributes[r]||\"\",e.select())}return null===(i=this.delegate)||void 0===i?void 0:i.toolbarDidShowDialog(t)}setAttribute(t){const e=dn(t),i=hn(t,e);return i.willValidate&&!i.checkValidity()?(i.setAttribute(\"data-trix-validate\",\"\"),i.classList.add(\"trix-validate\"),i.focus()):(null===(n=this.delegate)||void 0===n||n.toolbarDidUpdateAttribute(e,i.value),this.hideDialog());var n}removeAttribute(t){var e;const i=dn(t);return null===(e=this.delegate)||void 0===e||e.toolbarDidRemoveAttribute(i),this.hideDialog()}hideDialog(){const t=this.element.querySelector(an);var e;if(t)return t.removeAttribute(\"data-trix-active\"),t.classList.remove(\"trix-active\"),this.resetDialogInputs(),null===(e=this.delegate)||void 0===e?void 0:e.toolbarDidHideDialog((t=>t.getAttribute(\"data-trix-dialog\"))(t))}resetDialogInputs(){Array.from(this.element.querySelectorAll(cn)).forEach((t=>{t.setAttribute(\"disabled\",\"disabled\"),t.removeAttribute(\"data-trix-validate\"),t.classList.remove(\"trix-validate\")}))}getDialog(t){return this.element.querySelector(\"[data-trix-dialog=\".concat(t,\"]\"))}}class mn extends Fi{constructor(t){let{editorElement:e,document:i,html:n}=t;super(...arguments),this.editorElement=e,this.selectionManager=new Ci(this.editorElement),this.selectionManager.delegate=this,this.composition=new ci,this.composition.delegate=this,this.attachmentManager=new ai(this.composition.getAttachments()),this.attachmentManager.delegate=this,this.inputController=2===P.getLevel()?new Qi(this.editorElement):new Ji(this.editorElement),this.inputController.delegate=this,this.inputController.responder=this.composition,this.compositionController=new Ti(this.editorElement,this.composition),this.compositionController.delegate=this,this.toolbarController=new gn(this.editorElement.toolbarElement),this.toolbarController.delegate=this,this.editor=new pi(this.composition,this.selectionManager,this.editorElement),i?this.editor.loadDocument(i):this.editor.loadHTML(n)}registerSelectionManager(){return Ft.registerSelectionManager(this.selectionManager)}unregisterSelectionManager(){return Ft.unregisterSelectionManager(this.selectionManager)}render(){return this.compositionController.render()}reparse(){return this.composition.replaceHTML(this.editorElement.innerHTML)}compositionDidChangeDocument(t){if(this.notifyEditorElement(\"document-change\"),!this.handlingInput)return this.render()}compositionDidChangeCurrentAttributes(t){return this.currentAttributes=t,this.toolbarController.updateAttributes(this.currentAttributes),this.updateCurrentActions(),this.notifyEditorElement(\"attributes-change\",{attributes:this.currentAttributes})}compositionDidPerformInsertionAtRange(t){this.pasting&&(this.pastedRange=t)}compositionShouldAcceptFile(t){return this.notifyEditorElement(\"file-accept\",{file:t})}compositionDidAddAttachment(t){const e=this.attachmentManager.manageAttachment(t);return this.notifyEditorElement(\"attachment-add\",{attachment:e})}compositionDidEditAttachment(t){this.compositionController.rerenderViewForObject(t);const e=this.attachmentManager.manageAttachment(t);return this.notifyEditorElement(\"attachment-edit\",{attachment:e}),this.notifyEditorElement(\"change\")}compositionDidChangeAttachmentPreviewURL(t){return this.compositionController.invalidateViewForObject(t),this.notifyEditorElement(\"change\")}compositionDidRemoveAttachment(t){const e=this.attachmentManager.unmanageAttachment(t);return this.notifyEditorElement(\"attachment-remove\",{attachment:e})}compositionDidStartEditingAttachment(t,e){return this.attachmentLocationRange=this.composition.document.getLocationRangeOfAttachment(t),this.compositionController.installAttachmentEditorForAttachment(t,e),this.selectionManager.setLocationRange(this.attachmentLocationRange)}compositionDidStopEditingAttachment(t){this.compositionController.uninstallAttachmentEditor(),this.attachmentLocationRange=null}compositionDidRequestChangingSelectionToLocationRange(t){if(!this.loadingSnapshot||this.isFocused())return this.requestedLocationRange=t,this.compositionRevisionWhenLocationRangeRequested=this.composition.revision,this.handlingInput?void 0:this.render()}compositionWillLoadSnapshot(){this.loadingSnapshot=!0}compositionDidLoadSnapshot(){this.compositionController.refreshViewCache(),this.render(),this.loadingSnapshot=!1}getSelectionManager(){return this.selectionManager}attachmentManagerDidRequestRemovalOfAttachment(t){return this.removeAttachment(t)}compositionControllerWillSyncDocumentView(){return this.inputController.editorWillSyncDocumentView(),this.selectionManager.lock(),this.selectionManager.clearSelection()}compositionControllerDidSyncDocumentView(){return this.inputController.editorDidSyncDocumentView(),this.selectionManager.unlock(),this.updateCurrentActions(),this.notifyEditorElement(\"sync\")}compositionControllerDidRender(){this.requestedLocationRange&&(this.compositionRevisionWhenLocationRangeRequested===this.composition.revision&&this.selectionManager.setLocationRange(this.requestedLocationRange),this.requestedLocationRange=null,this.compositionRevisionWhenLocationRangeRequested=null),this.renderedCompositionRevision!==this.composition.revision&&(this.runEditorFilters(),this.composition.updateCurrentAttributes(),this.notifyEditorElement(\"render\")),this.renderedCompositionRevision=this.composition.revision}compositionControllerDidFocus(){return this.isFocusedInvisibly()&&this.setLocationRange({index:0,offset:0}),this.toolbarController.hideDialog(),this.notifyEditorElement(\"focus\")}compositionControllerDidBlur(){return this.notifyEditorElement(\"blur\")}compositionControllerDidSelectAttachment(t,e){return this.toolbarController.hideDialog(),this.composition.editAttachment(t,e)}compositionControllerDidRequestDeselectingAttachment(t){const e=this.attachmentLocationRange||this.composition.document.getLocationRangeOfAttachment(t);return this.selectionManager.setLocationRange(e[1])}compositionControllerWillUpdateAttachment(t){return this.editor.recordUndoEntry(\"Edit Attachment\",{context:t.id,consolidatable:!0})}compositionControllerDidRequestRemovalOfAttachment(t){return this.removeAttachment(t)}inputControllerWillHandleInput(){this.handlingInput=!0,this.requestedRender=!1}inputControllerDidRequestRender(){this.requestedRender=!0}inputControllerDidHandleInput(){if(this.handlingInput=!1,this.requestedRender)return this.requestedRender=!1,this.render()}inputControllerDidAllowUnhandledInput(){return this.notifyEditorElement(\"change\")}inputControllerDidRequestReparse(){return this.reparse()}inputControllerWillPerformTyping(){return this.recordTypingUndoEntry()}inputControllerWillPerformFormatting(t){return this.recordFormattingUndoEntry(t)}inputControllerWillCutText(){return this.editor.recordUndoEntry(\"Cut\")}inputControllerWillPaste(t){return this.editor.recordUndoEntry(\"Paste\"),this.pasting=!0,this.notifyEditorElement(\"before-paste\",{paste:t})}inputControllerDidPaste(t){return t.range=this.pastedRange,this.pastedRange=null,this.pasting=null,this.notifyEditorElement(\"paste\",{paste:t})}inputControllerWillMoveText(){return this.editor.recordUndoEntry(\"Move\")}inputControllerWillAttachFiles(){return this.editor.recordUndoEntry(\"Drop Files\")}inputControllerWillPerformUndo(){return this.editor.undo()}inputControllerWillPerformRedo(){return this.editor.redo()}inputControllerDidReceiveKeyboardCommand(t){return this.toolbarController.applyKeyboardCommand(t)}inputControllerDidStartDrag(){this.locationRangeBeforeDrag=this.selectionManager.getLocationRange()}inputControllerDidReceiveDragOverPoint(t){return this.selectionManager.setLocationRangeFromPointRange(t)}inputControllerDidCancelDrag(){this.selectionManager.setLocationRange(this.locationRangeBeforeDrag),this.locationRangeBeforeDrag=null}locationRangeDidChange(t){return this.composition.updateCurrentAttributes(),this.updateCurrentActions(),this.attachmentLocationRange&&!kt(this.attachmentLocationRange,t)&&this.composition.stopEditingAttachment(),this.notifyEditorElement(\"selection-change\")}toolbarDidClickButton(){if(!this.getLocationRange())return this.setLocationRange({index:0,offset:0})}toolbarDidInvokeAction(t){return this.invokeAction(t)}toolbarDidToggleAttribute(t){if(this.recordFormattingUndoEntry(t),this.composition.toggleCurrentAttribute(t),this.render(),!this.selectionFrozen)return this.editorElement.focus()}toolbarDidUpdateAttribute(t,e){if(this.recordFormattingUndoEntry(t),this.composition.setCurrentAttribute(t,e),this.render(),!this.selectionFrozen)return this.editorElement.focus()}toolbarDidRemoveAttribute(t){if(this.recordFormattingUndoEntry(t),this.composition.removeCurrentAttribute(t),this.render(),!this.selectionFrozen)return this.editorElement.focus()}toolbarWillShowDialog(t){return this.composition.expandSelectionForEditing(),this.freezeSelection()}toolbarDidShowDialog(t){return this.notifyEditorElement(\"toolbar-dialog-show\",{dialogName:t})}toolbarDidHideDialog(t){return this.thawSelection(),this.editorElement.focus(),this.notifyEditorElement(\"toolbar-dialog-hide\",{dialogName:t})}freezeSelection(){if(!this.selectionFrozen)return this.selectionManager.lock(),this.composition.freezeSelection(),this.selectionFrozen=!0,this.render()}thawSelection(){if(this.selectionFrozen)return this.composition.thawSelection(),this.selectionManager.unlock(),this.selectionFrozen=!1,this.render()}canInvokeAction(t){return!!this.actionIsExternal(t)||!(null===(e=this.actions[t])||void 0===e||null===(i=e.test)||void 0===i||!i.call(this));var e,i}invokeAction(t){return this.actionIsExternal(t)?this.notifyEditorElement(\"action-invoke\",{actionName:t}):null===(e=this.actions[t])||void 0===e||null===(i=e.perform)||void 0===i?void 0:i.call(this);var e,i}actionIsExternal(t){return/^x-./.test(t)}getCurrentActions(){const t={};for(const e in this.actions)t[e]=this.canInvokeAction(e);return t}updateCurrentActions(){const t=this.getCurrentActions();if(!Rt(t,this.currentActions))return this.currentActions=t,this.toolbarController.updateActions(this.currentActions),this.notifyEditorElement(\"actions-change\",{actions:this.currentActions})}runEditorFilters(){let t=this.composition.getSnapshot();if(Array.from(this.editor.filters).forEach((e=>{const{document:i,selectedRange:n}=t;t=e.call(this.editor,t)||{},t.document||(t.document=i),t.selectedRange||(t.selectedRange=n)})),e=t,i=this.composition.getSnapshot(),!kt(e.selectedRange,i.selectedRange)||!e.document.isEqualTo(i.document))return this.composition.loadSnapshot(t);var e,i}updateInputElement(){const t=function(t,e){const i=ri[e];if(i)return i(t);throw new Error(\"unknown content type: \".concat(e))}(this.compositionController.getSerializableElement(),\"text/html\");return this.editorElement.setInputElementValue(t)}notifyEditorElement(t,e){switch(t){case\"document-change\":this.documentChangedSinceLastRender=!0;break;case\"render\":this.documentChangedSinceLastRender&&(this.documentChangedSinceLastRender=!1,this.notifyEditorElement(\"change\"));break;case\"change\":case\"attachment-add\":case\"attachment-edit\":case\"attachment-remove\":this.updateInputElement()}return this.editorElement.notify(t,e)}removeAttachment(t){return this.editor.recordUndoEntry(\"Delete Attachment\"),this.composition.removeAttachment(t),this.render()}recordFormattingUndoEntry(t){const e=ht(t),i=this.selectionManager.getLocationRange();if(e||!St(i))return this.editor.recordUndoEntry(\"Formatting\",{context:this.getUndoContext(),consolidatable:!0})}recordTypingUndoEntry(){return this.editor.recordUndoEntry(\"Typing\",{context:this.getUndoContext(this.currentAttributes),consolidatable:!0})}getUndoContext(){for(var t=arguments.length,e=new Array(t),i=0;i<t;i++)e[i]=arguments[i];return[this.getLocationContext(),this.getTimeContext(),...Array.from(e)]}getLocationContext(){const t=this.selectionManager.getLocationRange();return St(t)?t[0].index:t}getTimeContext(){return j.interval>0?Math.floor((new Date).getTime()/j.interval):0}isFocused(){var t;return this.editorElement===(null===(t=this.editorElement.ownerDocument)||void 0===t?void 0:t.activeElement)}isFocusedInvisibly(){return this.isFocused()&&!this.getLocationRange()}get actions(){return this.constructor.actions}}be(mn,\"actions\",{undo:{test(){return this.editor.canUndo()},perform(){return this.editor.undo()}},redo:{test(){return this.editor.canRedo()},perform(){return this.editor.redo()}},link:{test(){return this.editor.canActivateAttribute(\"href\")}},increaseNestingLevel:{test(){return this.editor.canIncreaseNestingLevel()},perform(){return this.editor.increaseNestingLevel()&&this.render()}},decreaseNestingLevel:{test(){return this.editor.canDecreaseNestingLevel()},perform(){return this.editor.decreaseNestingLevel()&&this.render()}},attachFiles:{test:()=>!0,perform(){return P.pickFiles(this.editor.insertFiles)}}}),mn.proxyMethod(\"getSelectionManager().setLocationRange\"),mn.proxyMethod(\"getSelectionManager().getLocationRange\");var pn=Object.freeze({__proto__:null,AttachmentEditorController:wi,CompositionController:Ti,Controller:Fi,EditorController:mn,InputController:qi,Level0InputController:Ji,Level2InputController:Qi,ToolbarController:gn}),fn=Object.freeze({__proto__:null,MutationObserver:Pi,SelectionChangeObserver:wt}),bn=Object.freeze({__proto__:null,FileVerificationOperation:Oi,ImagePreloadOperation:Ae});mt(\"trix-toolbar\",\"%t {\\n  display: block;\\n}\\n\\n%t {\\n  white-space: nowrap;\\n}\\n\\n%t [data-trix-dialog] {\\n  display: none;\\n}\\n\\n%t [data-trix-dialog][data-trix-active] {\\n  display: block;\\n}\\n\\n%t [data-trix-dialog] [data-trix-validate]:invalid {\\n  background-color: #ffdddd;\\n}\");class vn extends HTMLElement{connectedCallback(){\"\"===this.innerHTML&&(this.innerHTML=M.getDefaultHTML())}}let An=0;const xn=function(t){if(!t.hasAttribute(\"contenteditable\"))return t.setAttribute(\"contenteditable\",\"\"),function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.times=1,d(t,e)}(\"focus\",{onElement:t,withCallback:()=>yn(t)})},yn=function(t){return Cn(t),Rn(t)},Cn=function(t){var e,i;if(null!==(e=(i=document).queryCommandSupported)&&void 0!==e&&e.call(i,\"enableObjectResizing\"))return document.execCommand(\"enableObjectResizing\",!1,!1),d(\"mscontrolselect\",{onElement:t,preventDefault:!0})},Rn=function(t){var i,n;if(null!==(i=(n=document).queryCommandSupported)&&void 0!==i&&i.call(n,\"DefaultParagraphSeparator\")){const{tagName:t}=e.default;if([\"div\",\"p\"].includes(t))return document.execCommand(\"DefaultParagraphSeparator\",!1,t)}},En=o.forcesObjectResizing?{display:\"inline\",width:\"auto\"}:{display:\"inline-block\",width:\"1px\"};mt(\"trix-editor\",\"%t {\\n    display: block;\\n}\\n\\n%t:empty:not(:focus)::before {\\n    content: attr(placeholder);\\n    color: graytext;\\n    cursor: text;\\n    pointer-events: none;\\n    white-space: pre-line;\\n}\\n\\n%t a[contenteditable=false] {\\n    cursor: text;\\n}\\n\\n%t img {\\n    max-width: 100%;\\n    height: auto;\\n}\\n\\n%t \".concat(\"[data-trix-attachment]\",\" figcaption textarea {\\n    resize: none;\\n}\\n\\n%t \").concat(\"[data-trix-attachment]\",\" figcaption textarea.trix-autoresize-clone {\\n    position: absolute;\\n    left: -9999px;\\n    max-height: 0px;\\n}\\n\\n%t \").concat(\"[data-trix-attachment]\",\" figcaption[data-trix-placeholder]:empty::before {\\n    content: attr(data-trix-placeholder);\\n    color: graytext;\\n}\\n\\n%t [data-trix-cursor-target] {\\n    display: \").concat(En.display,\" !important;\\n    width: \").concat(En.width,\" !important;\\n    padding: 0 !important;\\n    margin: 0 !important;\\n    border: none !important;\\n}\\n\\n%t [data-trix-cursor-target=left] {\\n    vertical-align: top !important;\\n    margin-left: -1px !important;\\n}\\n\\n%t [data-trix-cursor-target=right] {\\n    vertical-align: bottom !important;\\n    margin-right: -1px !important;\\n}\"));class Sn extends HTMLElement{get trixId(){return this.hasAttribute(\"trix-id\")?this.getAttribute(\"trix-id\"):(this.setAttribute(\"trix-id\",++An),this.trixId)}get labels(){const t=[];this.id&&this.ownerDocument&&t.push(...Array.from(this.ownerDocument.querySelectorAll(\"label[for='\".concat(this.id,\"']\"))||[]));const e=p(this,{matchingSelector:\"label\"});return e&&[this,null].includes(e.control)&&t.push(e),t}get toolbarElement(){var t;if(this.hasAttribute(\"toolbar\"))return null===(t=this.ownerDocument)||void 0===t?void 0:t.getElementById(this.getAttribute(\"toolbar\"));if(this.parentNode){const t=\"trix-toolbar-\".concat(this.trixId);this.setAttribute(\"toolbar\",t);const e=C(\"trix-toolbar\",{id:t});return this.parentNode.insertBefore(e,this),e}}get form(){var t;return null===(t=this.inputElement)||void 0===t?void 0:t.form}get inputElement(){var t;if(this.hasAttribute(\"input\"))return null===(t=this.ownerDocument)||void 0===t?void 0:t.getElementById(this.getAttribute(\"input\"));if(this.parentNode){const t=\"trix-input-\".concat(this.trixId);this.setAttribute(\"input\",t);const e=C(\"input\",{type:\"hidden\",id:t});return this.parentNode.insertBefore(e,this.nextElementSibling),e}}get editor(){var t;return null===(t=this.editorController)||void 0===t?void 0:t.editor}get name(){var t;return null===(t=this.inputElement)||void 0===t?void 0:t.name}get value(){var t;return null===(t=this.inputElement)||void 0===t?void 0:t.value}set value(t){var e;this.defaultValue=t,null===(e=this.editor)||void 0===e||e.loadHTML(this.defaultValue)}notify(t,e){if(this.editorController)return g(\"trix-\".concat(t),{onElement:this,attributes:e})}setInputElementValue(t){this.inputElement&&(this.inputElement.value=t)}connectedCallback(){this.hasAttribute(\"data-trix-internal\")||(xn(this),function(t){if(!t.hasAttribute(\"role\"))t.setAttribute(\"role\",\"textbox\")}(this),function(t){if(t.hasAttribute(\"aria-label\")||t.hasAttribute(\"aria-labelledby\"))return;const e=function(){const e=Array.from(t.labels).map((e=>{if(!e.contains(t))return e.textContent})).filter((t=>t)),i=e.join(\" \");return i?t.setAttribute(\"aria-label\",i):t.removeAttribute(\"aria-label\")};e(),d(\"focus\",{onElement:t,withCallback:e})}(this),this.editorController||(g(\"trix-before-initialize\",{onElement:this}),this.editorController=new mn({editorElement:this,html:this.defaultValue=this.value}),requestAnimationFrame((()=>g(\"trix-initialize\",{onElement:this})))),this.editorController.registerSelectionManager(),this.registerResetListener(),this.registerClickListener(),function(t){if(!document.querySelector(\":focus\")&&t.hasAttribute(\"autofocus\")&&document.querySelector(\"[autofocus]\")===t)t.focus()}(this))}disconnectedCallback(){var t;return null===(t=this.editorController)||void 0===t||t.unregisterSelectionManager(),this.unregisterResetListener(),this.unregisterClickListener()}registerResetListener(){return this.resetListener=this.resetBubbled.bind(this),window.addEventListener(\"reset\",this.resetListener,!1)}unregisterResetListener(){return window.removeEventListener(\"reset\",this.resetListener,!1)}registerClickListener(){return this.clickListener=this.clickBubbled.bind(this),window.addEventListener(\"click\",this.clickListener,!1)}unregisterClickListener(){return window.removeEventListener(\"click\",this.clickListener,!1)}resetBubbled(t){if(!t.defaultPrevented&&t.target===this.form)return this.reset()}clickBubbled(t){if(t.defaultPrevented)return;if(this.contains(t.target))return;const e=p(t.target,{matchingSelector:\"label\"});return e&&Array.from(this.labels).includes(e)?this.focus():void 0}reset(){this.value=this.defaultValue}}const kn={VERSION:\"2.0.4\",config:W,core:oi,models:Ri,views:Ei,controllers:pn,observers:fn,operations:bn,elements:Object.freeze({__proto__:null,TrixEditorElement:Sn,TrixToolbarElement:vn}),filters:Object.freeze({__proto__:null,Filter:di,attachmentGalleryFilter:gi})};Object.assign(kn,Ri),window.Trix=kn,setTimeout((function(){customElements.get(\"trix-toolbar\")||customElements.define(\"trix-toolbar\",vn),customElements.get(\"trix-editor\")||customElements.define(\"trix-editor\",Sn)}),0);export{kn as default};\n//# sourceMappingURL=trix.esm.min.js.map\n", "import { Controller } from \"@hotwired/stimulus\"\n\nconst tabsObserver = new MutationObserver(function (e) {\n  e.forEach(element => {\n    // update relevant count number text by finding ${status}-count id string\n    document.getElementById(`${element.target.id.split('_')[0]}-count`).innerText = `(${element.target.children.length})`;\n  })\n})\n\nexport default class extends Controller {\n\n  connect() {\n    tabsObserver.observe(document.getElementById('approved_noncnx_registrants'), { childList: true });\n    tabsObserver.observe(document.getElementById('denied_noncnx_registrants'), { childList: true });\n    tabsObserver.observe(document.getElementById('pending_noncnx_registrants'), { childList: true });\n  }\n\n  disconnect() {\n    tabsObserver.disconnect();\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\nimport consumer from \"../channels/consumer\"\n\nexport default class extends Controller {\n  static targets = [\"badge\", \"list\", \"placeholder\", \"notification\"]\n  static values = {\n    accountId: String, // Current account ID\n    accountUnread: Number, // Unread count for the current account\n    totalUnread: Number, // Unread count across all the user's accounts\n  }\n\n  connect() {\n    this.subscription = consumer.subscriptions.create({ channel: \"NotificationChannel\" }, {\n      connected: this._connected.bind(this),\n      disconnected: this._disconnected.bind(this),\n      received: this._received.bind(this)\n    })\n\n    if (this.hasUnread()) this.showUnreadBadge()\n  }\n\n  disconnect() {\n    this.subscription.unsubscribe()\n  }\n\n  _connected() {\n  }\n\n  _disconnected() {\n  }\n\n  _received(data) {\n    this.totalUnreadValue += 1\n\n    if (data.account_id && data.account_id == this.accountIdValue) {\n      this.accountUnreadValue += 1\n    }\n\n    // Ignore if user is signed in to a different account\n    if (data.account_id && data.account_id != this.accountIdValue) {\n      return\n    }\n\n    // Regular notifications get added to the navbar\n    if (data.html) {\n      this.listTarget.insertAdjacentHTML('afterbegin', data.html)\n      this.showUnreadBadge()\n    }\n\n    // Native notifications trigger a browser notification\n    if (data.browser) {\n      this.checkPermissionAndNotify(data.browser)\n    }\n  }\n\n  // Called when the notifications view opens\n  open() {\n    this.hideUnreadBadge()\n    this.markAllAsRead()\n  }\n\n  hasUnread() {\n    return !!this.accountUnreadValue\n  }\n\n  showUnreadBadge() {\n    if (this.hasBadgeTarget == false) { return }\n    this.badgeTarget.classList.remove(\"hidden\")\n  }\n\n  hideUnreadBadge() {\n    if (this.hasBadgeTarget == false) { return }\n    this.badgeTarget.classList.add(\"hidden\")\n  }\n\n  markAllAsRead() {\n    let ids = this.notificationTargets.map((target) => target.dataset.id)\n    this.subscription.perform(\"mark_as_read\", {ids: ids})\n\n    this.accountUnreadValue = 0\n    this.totalUnreadValue -= ids.length\n  }\n\n  markAsInteracted(event) {\n    let id = event.currentTarget.dataset.id\n    if (id == null) return\n    this.subscription.perform(\"mark_as_interacted\", {ids: [id]})\n\n    // Uncomment to visually mark notification as interacted\n    // event.currentTarget.dataset.interactedAt = new Date()\n  }\n\n  // Browser notifications\n  checkPermissionAndNotify(data) {\n    // Return if not supported\n    if (!(\"Notification\" in window)) return\n\n    if (Notification.permission === \"granted\") {\n      this.browserNotification(data)\n\n    } else if (Notification.permission !== \"denied\") {\n      Notification.requestPermission().then((permission) => {\n        if (permission === \"granted\") {\n          this.browserNotification(data)\n        }\n      })\n    }\n  }\n\n  browserNotification(data) {\n    new Notification(data.title, data.options)\n  }\n\n  // Automatically sync count to Native apps\n  totalUnreadValueChanged() {\n    this.syncCountToNative()\n  }\n\n  // Automatically sync count to Native apps\n  accountUnreadValueChanged() {\n    this.syncCountToNative()\n  }\n\n  // Update the mobile device with the current unread count\n  syncCountToNative() {\n    window.TurboNativeBridge.setNotificationCount(this.totalUnreadValue, this.accountUnreadValue)\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [ \"form\" ]\n\n  connect() {\n    let params = {\n      method: 'inline',\n      allowQuantity: false,\n      disableLogout: true,\n      frameTarget: \"paddle-checkout\",\n      frameInitialHeight: 416,\n      frameStyle: 'width:100%; background-color: transparent; border: none;',\n      successCallback: this.checkoutComplete.bind(this)\n    }\n\n    if (this.data.get(\"action\") == \"create-subscription\") {\n      Paddle.Checkout.open({\n        ...params,\n        product: this.data.get(\"product\"),\n        email: this.data.get(\"email\"),\n        passthrough: this.data.get(\"passthrough\")\n      });\n    } else if (this.data.get(\"action\") == \"update-payment-details\") {\n      Paddle.Checkout.open({\n        ...params,\n        override: this.data.get(\"update-url\")\n      });\n    }\n  }\n\n  checkoutComplete(data) {\n    this.addHiddenField(\"processor\", \"paddle\")\n    // Webhooks will set the customer ID and subscription using the `passthrough` parameter\n    Rails.fire(this.formTarget, \"submit\")\n  }\n\n  addHiddenField(name, value) {\n    let hiddenInput = document.createElement(\"input\")\n    hiddenInput.setAttribute(\"type\", \"hidden\")\n    hiddenInput.setAttribute(\"name\", name)\n    hiddenInput.setAttribute(\"value\", value)\n    this.formTarget.appendChild(hiddenInput)\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [ \"button\", \"form\" ]\n\n  connect() {\n    braintree.client.create({\n      authorization: this.data.get(\"clientToken\")\n    }, this.clientCreated.bind(this))\n  }\n\n  disconnect() {\n    // Remove the paypal button on disconnect\n    this.buttonTarget.querySelector(\".paypal-button\").remove()\n  }\n\n  clientCreated(error, clientInstance) {\n    if (error) {\n      console.error(\"Error creating client\", error)\n      return\n    }\n\n    braintree.paypalCheckout.create({\n      client: clientInstance\n    }, this.paypalCreated.bind(this))\n  }\n\n  paypalCreated(paypalCheckoutErr, paypalCheckoutInstance) {\n    // Stop if there was a problem creating PayPal Checkout.\n    // This could happen if there was a network error or if it's incorrectly\n    // configured.\n    if (paypalCheckoutErr) {\n      console.error('Error creating PayPal Checkout:', paypalCheckoutErr);\n      return;\n    }\n\n    // Set up PayPal with the checkout.js library\n    paypal.Button.render({\n      env: this.data.get(\"env\"), // or 'sandbox'\n\n      // https://developer.paypal.com/docs/checkout/how-to/customize-button/#\n      style: {\n        color: 'gold',  // gold blue silver black\n        shape: 'rect',  // shape: pill rect\n        size:  'medium', // size: small medium large responsive\n        label: 'pay',   // label: checkout credit pay buynow paypal installment\n        tagline: false, // tagline: true false\n      },\n\n      payment: () => {\n        return paypalCheckoutInstance.createPayment({\n          // Your PayPal options here. For available options, see\n          // http://braintree.github.io/braintree-web/current/PayPalCheckout.html#createPayment\n          flow: 'vault',\n        })\n      },\n\n      onAuthorize: (data, actions) => {\n        return paypalCheckoutInstance.tokenizePayment(data, this.paymentMethod.bind(this))\n      },\n\n      onCancel: (data) => {\n        console.log('checkout.js payment cancelled', JSON.stringify(data, 0, 2));\n      },\n\n      onError: (err) => {\n        console.error('checkout.js error', err);\n      }\n    }, this.buttonTarget).then(() => {\n      // The PayPal button will be rendered in an html element with the id\n      // `paypal-button`. This function will be called when the PayPal button\n      // is set up and ready to be used.\n    });\n  }\n\n  paymentMethod(error, payload) {\n    if (error) {\n      console.error(\"Error with payment method:\", error)\n      return\n    }\n\n    this.addHiddenField(\"processor\", \"braintree\")\n    this.addHiddenField(\"payment_method_token\", payload.nonce)\n\n    Rails.fire(this.formTarget, \"submit\")\n  }\n\n  addHiddenField(name, value) {\n    let hiddenInput = document.createElement(\"input\")\n    hiddenInput.setAttribute(\"type\", \"hidden\")\n    hiddenInput.setAttribute(\"name\", name)\n    hiddenInput.setAttribute(\"value\", value)\n    this.formTarget.appendChild(hiddenInput)\n  }\n}\n\n", "// Options:\n//\n// Use data-pricing-active=\"yearly\" to select yearly by default\n\nimport { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [ \"toggle\", \"frequency\", \"plans\" ]\n\n  connect() {\n    // Classes toggle on the plan switcher items\n    this.activeFrequencyClass   = (this.data.get(\"active-frequency-class\") || \"bg-white shadow-sm text-black hover:text-black\").split(\" \")\n    this.inactiveFrequencyClass = (this.data.get(\"inactive-frequency-class\") || \"hover:text-gray-900\").split(\" \")\n\n    // Classes toggle on the plans\n    this.activePlansClass   = (this.data.get(\"activePlansClass\") || \"flex\").split(\" \")\n    this.inactivePlansClass = (this.data.get(\"inactivePlansClass\") || \"hidden\").split(\" \")\n\n    // Remove any targets without plans in them\n    this.frequencyTargets.forEach(target => {\n      let frequency = target.dataset.frequency\n      let index = this.plansTargets.findIndex((element) => element.dataset.frequency == frequency && element.childElementCount > 0)\n      if (index == -1) target.remove()\n    })\n\n    // Hide frequency toggle if we have less than 2 frequencies with plans\n    if (this.frequencyTargets.length < 2) this._hideFrequencyToggle()\n\n    let frequency = this.data.get(\"active\") || this.frequencyTargets[0].dataset.frequency\n    this._toggle(frequency)\n  }\n\n  // Switches visible plans\n  switch(event) {\n    event.preventDefault()\n    this._toggle(event.target.dataset.frequency)\n  }\n\n  // Hides frequency toggle\n  _hideFrequencyToggle() {\n    this.toggleTarget.classList.add(\"hidden\")\n  }\n\n  // Toggles visible plans and selected frequency\n  // Expects: \"monthly\", \"yearly\", etc\n  _toggle(frequency) {\n    // Keep track of active frequency on a data attribute\n    this.data.set(\"active\", frequency)\n\n    this.frequencyTargets.forEach(target => {\n      if (target.dataset.frequency == frequency) {\n        this.showFrequency(target)\n      } else {\n        this.hideFrequency(target)\n      }\n    })\n\n    this.plansTargets.forEach(target => {\n      if (target.dataset.frequency == frequency) {\n        this.showPlans(target)\n      } else {\n        this.hidePlans(target)\n      }\n    })\n  }\n\n  showFrequency(element) {\n    element.classList.add(...this.activeFrequencyClass)\n    element.classList.remove(...this.inactiveFrequencyClass)\n  }\n\n  hideFrequency(element) {\n    element.classList.remove(...this.activeFrequencyClass)\n    element.classList.add(...this.inactiveFrequencyClass)\n  }\n\n  showPlans(element) {\n    element.classList.add(...this.activePlansClass)\n    element.classList.remove(...this.inactivePlansClass)\n  }\n\n  hidePlans(element) {\n    element.classList.remove(...this.activePlansClass)\n    element.classList.add(...this.inactivePlansClass)\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\nimport TomSelect from \"tom-select\"\n\nexport default class extends Controller {\n  connect() {\n    this.select = new TomSelect(this.element)\n  }\n\n  disconnect() {\n    this.select.destroy()\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\nimport SlimSelect from \"slim-select\"\n\nexport default class extends Controller {\n    static values = { showSearch: Boolean, closeOnSelect: Boolean }\n\n    connect() {\n        new SlimSelect({\n            select: this.element,\n            settings: {\n                showSearch: !!this.showSearchValue,\n                closeOnSelect: !!this.closeOnSelectValue,\n                allowDeselect: true,\n                maxValuesShown: 4, // Default 20\n                maxValuesMessage: '{number} values selected', // Default '{number} selected',\n                placeholderText: 'Please select'\n            }\n        })\n    }\n}", "function generateID() {\n    return Math.random().toString(36).substring(2, 10);\n}\nfunction hasClassInTree(element, className) {\n    function hasClass(e, c) {\n        if (c && e && e.classList && e.classList.contains(c)) {\n            return e;\n        }\n        if (c && e && e.dataset && e.dataset.id && e.dataset.id === className) {\n            return e;\n        }\n        return null;\n    }\n    function parentByClass(e, c) {\n        if (!e || e === document) {\n            return null;\n        }\n        else if (hasClass(e, c)) {\n            return e;\n        }\n        else {\n            return parentByClass(e.parentNode, c);\n        }\n    }\n    return hasClass(element, className) || parentByClass(element, className);\n}\nfunction debounce(func, wait = 50, immediate = false) {\n    let timeout;\n    return function (...args) {\n        const context = self;\n        const later = () => {\n            timeout = null;\n            if (!immediate) {\n                func.apply(context, args);\n            }\n        };\n        const callNow = immediate && !timeout;\n        clearTimeout(timeout);\n        timeout = setTimeout(later, wait);\n        if (callNow) {\n            func.apply(context, args);\n        }\n    };\n}\nfunction isEqual(a, b) {\n    return JSON.stringify(a) === JSON.stringify(b);\n}\nfunction kebabCase(str) {\n    const result = str.replace(/[A-Z\\u00C0-\\u00D6\\u00D8-\\u00DE]/g, (match) => '-' + match.toLowerCase());\n    return str[0] === str[0].toUpperCase() ? result.substring(1) : result;\n}\n\nclass Settings {\n    constructor(settings) {\n        this.id = '';\n        this.style = '';\n        this.class = [];\n        this.isMultiple = false;\n        this.isOpen = false;\n        this.isFullOpen = false;\n        this.intervalMove = null;\n        if (!settings) {\n            settings = {};\n        }\n        this.id = 'ss-' + generateID();\n        this.style = settings.style || '';\n        this.class = settings.class || [];\n        this.disabled = settings.disabled !== undefined ? settings.disabled : false;\n        this.alwaysOpen = settings.alwaysOpen !== undefined ? settings.alwaysOpen : false;\n        this.showSearch = settings.showSearch !== undefined ? settings.showSearch : true;\n        this.searchPlaceholder = settings.searchPlaceholder || 'Search';\n        this.searchText = settings.searchText || 'No Results';\n        this.searchingText = settings.searchingText || 'Searching...';\n        this.searchHighlight = settings.searchHighlight !== undefined ? settings.searchHighlight : false;\n        this.closeOnSelect = settings.closeOnSelect !== undefined ? settings.closeOnSelect : true;\n        this.contentLocation = settings.contentLocation || document.body;\n        this.contentPosition = settings.contentPosition || 'absolute';\n        this.openPosition = settings.openPosition || 'auto';\n        this.placeholderText = settings.placeholderText !== undefined ? settings.placeholderText : 'Select Value';\n        this.allowDeselect = settings.allowDeselect !== undefined ? settings.allowDeselect : false;\n        this.hideSelected = settings.hideSelected !== undefined ? settings.hideSelected : false;\n        this.showOptionTooltips = settings.showOptionTooltips !== undefined ? settings.showOptionTooltips : false;\n        this.minSelected = settings.minSelected || 0;\n        this.maxSelected = settings.maxSelected || 1000;\n        this.timeoutDelay = settings.timeoutDelay || 200;\n        this.maxValuesShown = settings.maxValuesShown || 20;\n        this.maxValuesMessage = settings.maxValuesMessage || '{number} selected';\n    }\n}\n\nclass Optgroup {\n    constructor(optgroup) {\n        this.id = !optgroup.id || optgroup.id === '' ? generateID() : optgroup.id;\n        this.label = optgroup.label || '';\n        this.selectAll = optgroup.selectAll === undefined ? false : optgroup.selectAll;\n        this.closable = optgroup.closable || 'off';\n        this.options = [];\n        if (optgroup.options) {\n            for (const o of optgroup.options) {\n                this.options.push(new Option(o));\n            }\n        }\n    }\n}\nclass Option {\n    constructor(option) {\n        this.id = !option.id || option.id === '' ? generateID() : option.id;\n        this.value = option.value === undefined ? option.text : option.value;\n        this.text = option.text || '';\n        this.html = option.html || '';\n        this.selected = option.selected !== undefined ? option.selected : false;\n        this.display = option.display !== undefined ? option.display : true;\n        this.disabled = option.disabled !== undefined ? option.disabled : false;\n        this.mandatory = option.mandatory !== undefined ? option.mandatory : false;\n        this.placeholder = option.placeholder !== undefined ? option.placeholder : false;\n        this.class = option.class || '';\n        this.style = option.style || '';\n        this.data = option.data || {};\n    }\n}\nclass Store {\n    constructor(type, data) {\n        this.selectType = 'single';\n        this.data = [];\n        this.selectType = type;\n        this.setData(data);\n    }\n    validateDataArray(data) {\n        if (!Array.isArray(data)) {\n            return new Error('Data must be an array');\n        }\n        for (let dataObj of data) {\n            if (dataObj instanceof Optgroup || 'label' in dataObj) {\n                if (!('label' in dataObj)) {\n                    return new Error('Optgroup must have a label');\n                }\n                if ('options' in dataObj && dataObj.options) {\n                    for (let option of dataObj.options) {\n                        return this.validateOption(option);\n                    }\n                }\n            }\n            else if (dataObj instanceof Option || 'text' in dataObj) {\n                return this.validateOption(dataObj);\n            }\n            else {\n                return new Error('Data object must be a valid optgroup or option');\n            }\n        }\n        return null;\n    }\n    validateOption(option) {\n        if (!('text' in option)) {\n            return new Error('Option must have a text');\n        }\n        return null;\n    }\n    partialToFullData(data) {\n        let dataFinal = [];\n        data.forEach((dataObj) => {\n            if (dataObj instanceof Optgroup || 'label' in dataObj) {\n                let optOptions = [];\n                if ('options' in dataObj && dataObj.options) {\n                    dataObj.options.forEach((option) => {\n                        optOptions.push(new Option(option));\n                    });\n                }\n                if (optOptions.length > 0) {\n                    dataFinal.push(new Optgroup(dataObj));\n                }\n            }\n            if (dataObj instanceof Option || 'text' in dataObj) {\n                dataFinal.push(new Option(dataObj));\n            }\n        });\n        return dataFinal;\n    }\n    setData(data) {\n        this.data = this.partialToFullData(data);\n        if (this.selectType === 'single') {\n            this.setSelectedBy('value', this.getSelected());\n        }\n    }\n    getData() {\n        return this.filter(null, true);\n    }\n    getDataOptions() {\n        return this.filter(null, false);\n    }\n    addOption(option) {\n        this.setData(this.getData().concat(new Option(option)));\n    }\n    setSelectedBy(selectedType, selectedValues) {\n        let firstOption = null;\n        let hasSelected = false;\n        for (let dataObj of this.data) {\n            if (dataObj instanceof Optgroup) {\n                for (let option of dataObj.options) {\n                    if (!firstOption) {\n                        firstOption = option;\n                    }\n                    option.selected = hasSelected ? false : selectedValues.includes(option[selectedType]);\n                    if (option.selected && this.selectType === 'single') {\n                        hasSelected = true;\n                    }\n                }\n            }\n            if (dataObj instanceof Option) {\n                if (!firstOption) {\n                    firstOption = dataObj;\n                }\n                dataObj.selected = hasSelected ? false : selectedValues.includes(dataObj[selectedType]);\n                if (dataObj.selected && this.selectType === 'single') {\n                    hasSelected = true;\n                }\n            }\n        }\n        if (this.selectType === 'single' && firstOption && !hasSelected) {\n            firstOption.selected = true;\n        }\n    }\n    getSelected() {\n        let selectedOptions = this.getSelectedOptions();\n        let selectedValues = [];\n        selectedOptions.forEach((option) => {\n            selectedValues.push(option.value);\n        });\n        return selectedValues;\n    }\n    getSelectedOptions() {\n        return this.filter((opt) => {\n            return opt.selected;\n        }, false);\n    }\n    getSelectedIDs() {\n        let selectedOptions = this.getSelectedOptions();\n        let selectedIDs = [];\n        selectedOptions.forEach((op) => {\n            selectedIDs.push(op.id);\n        });\n        return selectedIDs;\n    }\n    getOptgroupByID(id) {\n        for (let dataObj of this.data) {\n            if (dataObj instanceof Optgroup && dataObj.id === id) {\n                return dataObj;\n            }\n        }\n        return null;\n    }\n    getOptionByID(id) {\n        let options = this.filter((opt) => {\n            return opt.id === id;\n        }, false);\n        return options.length ? options[0] : null;\n    }\n    search(search, searchFilter) {\n        search = search.trim();\n        if (search === '') {\n            return this.getData();\n        }\n        return this.filter((opt) => {\n            return searchFilter(opt, search);\n        }, true);\n    }\n    filter(filter, includeOptgroup) {\n        const dataSearch = [];\n        this.data.forEach((dataObj) => {\n            if (dataObj instanceof Optgroup) {\n                let optOptions = [];\n                dataObj.options.forEach((option) => {\n                    if (!filter || filter(option)) {\n                        if (!includeOptgroup) {\n                            dataSearch.push(new Option(option));\n                        }\n                        else {\n                            optOptions.push(new Option(option));\n                        }\n                    }\n                });\n                if (optOptions.length > 0) {\n                    let optgroup = new Optgroup(dataObj);\n                    optgroup.options = optOptions;\n                    dataSearch.push(optgroup);\n                }\n            }\n            if (dataObj instanceof Option) {\n                if (!filter || filter(dataObj)) {\n                    dataSearch.push(new Option(dataObj));\n                }\n            }\n        });\n        return dataSearch;\n    }\n}\n\nclass Render {\n    constructor(settings, store, callbacks) {\n        this.classes = {\n            main: 'ss-main',\n            placeholder: 'ss-placeholder',\n            values: 'ss-values',\n            single: 'ss-single',\n            max: 'ss-max',\n            value: 'ss-value',\n            valueText: 'ss-value-text',\n            valueDelete: 'ss-value-delete',\n            valueOut: 'ss-value-out',\n            deselect: 'ss-deselect',\n            deselectPath: 'M10,10 L90,90 M10,90 L90,10',\n            arrow: 'ss-arrow',\n            arrowClose: 'M10,30 L50,70 L90,30',\n            arrowOpen: 'M10,70 L50,30 L90,70',\n            content: 'ss-content',\n            openAbove: 'ss-open-above',\n            openBelow: 'ss-open-below',\n            search: 'ss-search',\n            searchHighlighter: 'ss-search-highlight',\n            searching: 'ss-searching',\n            addable: 'ss-addable',\n            addablePath: 'M50,10 L50,90 M10,50 L90,50',\n            list: 'ss-list',\n            optgroup: 'ss-optgroup',\n            optgroupLabel: 'ss-optgroup-label',\n            optgroupLabelText: 'ss-optgroup-label-text',\n            optgroupActions: 'ss-optgroup-actions',\n            optgroupSelectAll: 'ss-selectall',\n            optgroupSelectAllBox: 'M60,10 L10,10 L10,90 L90,90 L90,50',\n            optgroupSelectAllCheck: 'M30,45 L50,70 L90,10',\n            optgroupClosable: 'ss-closable',\n            option: 'ss-option',\n            optionDelete: 'M10,10 L90,90 M10,90 L90,10',\n            highlighted: 'ss-highlighted',\n            open: 'ss-open',\n            close: 'ss-close',\n            selected: 'ss-selected',\n            error: 'ss-error',\n            disabled: 'ss-disabled',\n            hide: 'ss-hide',\n        };\n        this.store = store;\n        this.settings = settings;\n        this.callbacks = callbacks;\n        this.main = this.mainDiv();\n        this.content = this.contentDiv();\n        this.updateClassStyles();\n        this.updateAriaAttributes();\n        this.settings.contentLocation.appendChild(this.content.main);\n    }\n    enable() {\n        this.main.main.classList.remove(this.classes.disabled);\n        this.content.search.input.disabled = false;\n    }\n    disable() {\n        this.main.main.classList.add(this.classes.disabled);\n        this.content.search.input.disabled = true;\n    }\n    open() {\n        this.main.arrow.path.setAttribute('d', this.classes.arrowOpen);\n        this.main.main.classList.add(this.settings.openPosition === 'up' ? this.classes.openAbove : this.classes.openBelow);\n        this.main.main.setAttribute('aria-expanded', 'true');\n        this.moveContent();\n        const selectedOptions = this.store.getSelectedOptions();\n        if (selectedOptions.length) {\n            const selectedId = selectedOptions[selectedOptions.length - 1].id;\n            const selectedOption = this.content.list.querySelector('[data-id=\"' + selectedId + '\"]');\n            if (selectedOption) {\n                this.ensureElementInView(this.content.list, selectedOption);\n            }\n        }\n    }\n    close() {\n        this.main.main.classList.remove(this.classes.openAbove);\n        this.main.main.classList.remove(this.classes.openBelow);\n        this.main.main.setAttribute('aria-expanded', 'false');\n        this.content.main.classList.remove(this.classes.openAbove);\n        this.content.main.classList.remove(this.classes.openBelow);\n        this.main.arrow.path.setAttribute('d', this.classes.arrowClose);\n    }\n    updateClassStyles() {\n        this.main.main.className = '';\n        this.main.main.removeAttribute('style');\n        this.content.main.className = '';\n        this.content.main.removeAttribute('style');\n        this.main.main.classList.add(this.classes.main);\n        this.content.main.classList.add(this.classes.content);\n        if (this.settings.style !== '') {\n            this.main.main.style.cssText = this.settings.style;\n            this.content.main.style.cssText = this.settings.style;\n        }\n        if (this.settings.class.length) {\n            for (const c of this.settings.class) {\n                if (c.trim() !== '') {\n                    this.main.main.classList.add(c.trim());\n                    this.content.main.classList.add(c.trim());\n                }\n            }\n        }\n        if (this.settings.contentPosition === 'relative') {\n            this.content.main.classList.add('ss-' + this.settings.contentPosition);\n        }\n    }\n    updateAriaAttributes() {\n        this.main.main.role = 'combobox';\n        this.main.main.setAttribute('aria-haspopup', 'listbox');\n        this.main.main.setAttribute('aria-controls', this.content.main.id);\n        this.main.main.setAttribute('aria-expanded', 'false');\n        this.content.main.setAttribute('role', 'listbox');\n    }\n    mainDiv() {\n        const main = document.createElement('div');\n        main.dataset.id = this.settings.id;\n        main.id = this.settings.id;\n        main.tabIndex = 0;\n        main.onkeydown = (e) => {\n            switch (e.key) {\n                case 'ArrowUp':\n                case 'ArrowDown':\n                    this.callbacks.open();\n                    e.key === 'ArrowDown' ? this.highlight('down') : this.highlight('up');\n                    return false;\n                case 'Tab':\n                    this.callbacks.close();\n                    return true;\n                case 'Enter':\n                case ' ':\n                    this.callbacks.open();\n                    const highlighted = this.content.list.querySelector('.' + this.classes.highlighted);\n                    if (highlighted) {\n                        highlighted.click();\n                    }\n                    return false;\n                case 'Escape':\n                    this.callbacks.close();\n                    return false;\n            }\n        };\n        main.onclick = (e) => {\n            if (this.settings.disabled) {\n                return;\n            }\n            this.settings.isOpen ? this.callbacks.close() : this.callbacks.open();\n        };\n        const values = document.createElement('div');\n        values.classList.add(this.classes.values);\n        main.appendChild(values);\n        const deselect = document.createElement('div');\n        deselect.classList.add(this.classes.deselect);\n        if (!this.settings.allowDeselect || this.settings.isMultiple) {\n            deselect.classList.add(this.classes.hide);\n        }\n        deselect.onclick = (e) => {\n            e.stopPropagation();\n            if (this.settings.disabled) {\n                return;\n            }\n            let shouldDelete = true;\n            const before = this.store.getSelectedOptions();\n            const after = [];\n            if (this.callbacks.beforeChange) {\n                shouldDelete = this.callbacks.beforeChange(after, before) === true;\n            }\n            if (shouldDelete) {\n                this.callbacks.setSelected([''], false);\n                if (this.settings.closeOnSelect) {\n                    this.callbacks.close();\n                }\n                if (this.callbacks.afterChange) {\n                    this.callbacks.afterChange(after);\n                }\n            }\n        };\n        const deselectSvg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n        deselectSvg.setAttribute('viewBox', '0 0 100 100');\n        const deselectPath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n        deselectPath.setAttribute('d', this.classes.deselectPath);\n        deselectSvg.appendChild(deselectPath);\n        deselect.appendChild(deselectSvg);\n        main.appendChild(deselect);\n        const arrow = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n        arrow.classList.add(this.classes.arrow);\n        arrow.setAttribute('viewBox', '0 0 100 100');\n        const arrowPath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n        arrowPath.setAttribute('d', this.classes.arrowClose);\n        if (this.settings.alwaysOpen) {\n            arrow.classList.add(this.classes.hide);\n        }\n        arrow.appendChild(arrowPath);\n        main.appendChild(arrow);\n        return {\n            main: main,\n            values: values,\n            deselect: {\n                main: deselect,\n                svg: deselectSvg,\n                path: deselectPath,\n            },\n            arrow: {\n                main: arrow,\n                path: arrowPath,\n            },\n        };\n    }\n    mainFocus(eventType) {\n        if (eventType !== 'click') {\n            this.main.main.focus({ preventScroll: true });\n        }\n    }\n    placeholder() {\n        const placeholderOption = this.store.filter((o) => o.placeholder, false);\n        let placeholderText = this.settings.placeholderText;\n        if (placeholderOption.length) {\n            if (placeholderOption[0].html !== '') {\n                placeholderText = placeholderOption[0].html;\n            }\n            else if (placeholderOption[0].text !== '') {\n                placeholderText = placeholderOption[0].text;\n            }\n        }\n        const placeholder = document.createElement('div');\n        placeholder.classList.add(this.classes.placeholder);\n        placeholder.innerHTML = placeholderText;\n        return placeholder;\n    }\n    renderValues() {\n        if (!this.settings.isMultiple) {\n            this.renderSingleValue();\n            return;\n        }\n        this.renderMultipleValues();\n    }\n    renderSingleValue() {\n        const selected = this.store.filter((o) => {\n            return o.selected && !o.placeholder;\n        }, false);\n        const selectedSingle = selected.length > 0 ? selected[0] : null;\n        if (!selectedSingle) {\n            this.main.values.innerHTML = this.placeholder().outerHTML;\n        }\n        else {\n            const singleValue = document.createElement('div');\n            singleValue.classList.add(this.classes.single);\n            if (selectedSingle.html) {\n                singleValue.innerHTML = selectedSingle.html;\n            }\n            else {\n                singleValue.innerText = selectedSingle.text;\n            }\n            this.main.values.innerHTML = singleValue.outerHTML;\n        }\n        if (!this.settings.allowDeselect || !selected.length) {\n            this.main.deselect.main.classList.add(this.classes.hide);\n        }\n        else {\n            this.main.deselect.main.classList.remove(this.classes.hide);\n        }\n    }\n    renderMultipleValues() {\n        let currentNodes = this.main.values.childNodes;\n        let selectedOptions = this.store.filter((opt) => {\n            return opt.selected && opt.display;\n        }, false);\n        if (selectedOptions.length === 0) {\n            this.main.values.innerHTML = this.placeholder().outerHTML;\n            return;\n        }\n        else {\n            const placeholder = this.main.values.querySelector('.' + this.classes.placeholder);\n            if (placeholder) {\n                placeholder.remove();\n            }\n        }\n        if (selectedOptions.length > this.settings.maxValuesShown) {\n            const singleValue = document.createElement('div');\n            singleValue.classList.add(this.classes.max);\n            singleValue.textContent = this.settings.maxValuesMessage.replace('{number}', selectedOptions.length.toString());\n            this.main.values.innerHTML = singleValue.outerHTML;\n            return;\n        }\n        else {\n            const maxValuesMessage = this.main.values.querySelector('.' + this.classes.max);\n            if (maxValuesMessage) {\n                maxValuesMessage.remove();\n            }\n        }\n        let removeNodes = [];\n        for (let i = 0; i < currentNodes.length; i++) {\n            const node = currentNodes[i];\n            const id = node.getAttribute('data-id');\n            if (id) {\n                const found = selectedOptions.filter((opt) => {\n                    return opt.id === id;\n                }, false);\n                if (!found.length) {\n                    removeNodes.push(node);\n                }\n            }\n        }\n        for (const n of removeNodes) {\n            n.classList.add(this.classes.valueOut);\n            setTimeout(() => {\n                this.main.values.removeChild(n);\n            }, 100);\n        }\n        currentNodes = this.main.values.childNodes;\n        for (let d = 0; d < selectedOptions.length; d++) {\n            let shouldAdd = true;\n            for (let i = 0; i < currentNodes.length; i++) {\n                if (selectedOptions[d].id === String(currentNodes[i].dataset.id)) {\n                    shouldAdd = false;\n                }\n            }\n            if (shouldAdd) {\n                if (currentNodes.length === 0) {\n                    this.main.values.appendChild(this.multipleValue(selectedOptions[d]));\n                }\n                else if (d === 0) {\n                    this.main.values.insertBefore(this.multipleValue(selectedOptions[d]), currentNodes[d]);\n                }\n                else {\n                    currentNodes[d - 1].insertAdjacentElement('afterend', this.multipleValue(selectedOptions[d]));\n                }\n            }\n        }\n    }\n    multipleValue(option) {\n        const value = document.createElement('div');\n        value.classList.add(this.classes.value);\n        value.dataset.id = option.id;\n        const text = document.createElement('div');\n        text.classList.add(this.classes.valueText);\n        text.innerText = option.text;\n        value.appendChild(text);\n        if (!option.mandatory) {\n            const deleteDiv = document.createElement('div');\n            deleteDiv.classList.add(this.classes.valueDelete);\n            deleteDiv.onclick = (e) => {\n                e.preventDefault();\n                e.stopPropagation();\n                if (this.settings.disabled) {\n                    return;\n                }\n                let shouldDelete = true;\n                const before = this.store.getSelectedOptions();\n                const after = before.filter((o) => {\n                    return o.selected && o.id !== option.id;\n                }, true);\n                if (this.settings.minSelected && after.length < this.settings.minSelected) {\n                    return;\n                }\n                if (this.callbacks.beforeChange) {\n                    shouldDelete = this.callbacks.beforeChange(after, before) === true;\n                }\n                if (shouldDelete) {\n                    let selectedValues = [];\n                    for (const o of after) {\n                        if (o instanceof Optgroup) {\n                            for (const c of o.options) {\n                                selectedValues.push(c.value);\n                            }\n                        }\n                        if (o instanceof Option) {\n                            selectedValues.push(o.value);\n                        }\n                    }\n                    this.callbacks.setSelected(selectedValues, false);\n                    if (this.settings.closeOnSelect) {\n                        this.callbacks.close();\n                    }\n                    if (this.callbacks.afterChange) {\n                        this.callbacks.afterChange(after);\n                    }\n                }\n            };\n            const deleteSvg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n            deleteSvg.setAttribute('viewBox', '0 0 100 100');\n            const deletePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n            deletePath.setAttribute('d', this.classes.optionDelete);\n            deleteSvg.appendChild(deletePath);\n            deleteDiv.appendChild(deleteSvg);\n            value.appendChild(deleteDiv);\n        }\n        return value;\n    }\n    contentDiv() {\n        const main = document.createElement('div');\n        main.dataset.id = this.settings.id;\n        main.id = this.settings.id;\n        const search = this.searchDiv();\n        main.appendChild(search.main);\n        const list = this.listDiv();\n        main.appendChild(list);\n        return {\n            main: main,\n            search: search,\n            list: list,\n        };\n    }\n    moveContent() {\n        if (this.settings.contentPosition === 'relative') {\n            this.moveContentBelow();\n            return;\n        }\n        if (this.settings.openPosition === 'down') {\n            this.moveContentBelow();\n            return;\n        }\n        else if (this.settings.openPosition === 'up') {\n            this.moveContentAbove();\n            return;\n        }\n        if (this.putContent() === 'up') {\n            this.moveContentAbove();\n        }\n        else {\n            this.moveContentBelow();\n        }\n    }\n    searchDiv() {\n        const main = document.createElement('div');\n        const input = document.createElement('input');\n        const addable = document.createElement('div');\n        main.classList.add(this.classes.search);\n        const searchReturn = {\n            main,\n            input,\n        };\n        if (!this.settings.showSearch) {\n            main.classList.add(this.classes.hide);\n            input.readOnly = true;\n        }\n        input.type = 'search';\n        input.placeholder = this.settings.searchPlaceholder;\n        input.tabIndex = -1;\n        input.setAttribute('aria-label', this.settings.searchPlaceholder);\n        input.setAttribute('autocapitalize', 'off');\n        input.setAttribute('autocomplete', 'off');\n        input.setAttribute('autocorrect', 'off');\n        input.oninput = debounce((e) => {\n            this.callbacks.search(e.target.value);\n        }, 100);\n        input.onkeydown = (e) => {\n            switch (e.key) {\n                case 'ArrowUp':\n                case 'ArrowDown':\n                    e.key === 'ArrowDown' ? this.highlight('down') : this.highlight('up');\n                    return false;\n                case 'Tab':\n                    this.callbacks.close();\n                    return true;\n                case 'Escape':\n                    this.callbacks.close();\n                    return false;\n                case 'Enter':\n                case ' ':\n                    if (this.callbacks.addable && e.ctrlKey) {\n                        addable.click();\n                        return false;\n                    }\n                    else {\n                        const highlighted = this.content.list.querySelector('.' + this.classes.highlighted);\n                        if (highlighted) {\n                            highlighted.click();\n                            return false;\n                        }\n                    }\n                    return true;\n            }\n        };\n        main.appendChild(input);\n        if (this.callbacks.addable) {\n            addable.classList.add(this.classes.addable);\n            const plus = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n            plus.setAttribute('viewBox', '0 0 100 100');\n            const plusPath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n            plusPath.setAttribute('d', this.classes.addablePath);\n            plus.appendChild(plusPath);\n            addable.appendChild(plus);\n            addable.onclick = (e) => {\n                e.preventDefault();\n                e.stopPropagation();\n                if (!this.callbacks.addable) {\n                    return;\n                }\n                const inputValue = this.content.search.input.value.trim();\n                if (inputValue === '') {\n                    this.content.search.input.focus();\n                    return;\n                }\n                const runFinish = (oo) => {\n                    let newOption = new Option(oo);\n                    this.callbacks.addOption(newOption);\n                    if (this.settings.isMultiple) {\n                        let values = this.store.getSelected();\n                        values.push(newOption.value);\n                        this.callbacks.setSelected(values, true);\n                    }\n                    else {\n                        this.callbacks.setSelected([newOption.value], true);\n                    }\n                    this.callbacks.search('');\n                    if (this.settings.closeOnSelect) {\n                        setTimeout(() => {\n                            this.callbacks.close();\n                        }, 100);\n                    }\n                };\n                const addableValue = this.callbacks.addable(inputValue);\n                if (addableValue === false || addableValue === undefined || addableValue === null) {\n                    return;\n                }\n                if (addableValue instanceof Promise) {\n                    addableValue.then((value) => {\n                        if (typeof value === 'string') {\n                            runFinish({\n                                text: value,\n                                value: value,\n                            });\n                        }\n                        else {\n                            runFinish(value);\n                        }\n                    });\n                }\n                else if (typeof addableValue === 'string') {\n                    runFinish({\n                        text: addableValue,\n                        value: addableValue,\n                    });\n                }\n                else {\n                    runFinish(addableValue);\n                }\n                return;\n            };\n            main.appendChild(addable);\n            searchReturn.addable = {\n                main: addable,\n                svg: plus,\n                path: plusPath,\n            };\n        }\n        return searchReturn;\n    }\n    searchFocus() {\n        this.content.search.input.focus();\n    }\n    getOptions(notPlaceholder = false, notDisabled = false, notHidden = false) {\n        let query = '.' + this.classes.option;\n        if (notPlaceholder) {\n            query += ':not(.' + this.classes.placeholder + ')';\n        }\n        if (notDisabled) {\n            query += ':not(.' + this.classes.disabled + ')';\n        }\n        if (notHidden) {\n            query += ':not(.' + this.classes.hide + ')';\n        }\n        return Array.from(this.content.list.querySelectorAll(query));\n    }\n    highlight(dir) {\n        const options = this.getOptions(true, true, true);\n        if (options.length === 0) {\n            return;\n        }\n        if (options.length === 1) {\n            if (!options[0].classList.contains(this.classes.highlighted)) {\n                options[0].classList.add(this.classes.highlighted);\n                return;\n            }\n        }\n        for (let i = 0; i < options.length; i++) {\n            if (options[i].classList.contains(this.classes.highlighted)) {\n                const prevOption = options[i];\n                prevOption.classList.remove(this.classes.highlighted);\n                const prevParent = prevOption.parentElement;\n                if (prevParent && prevParent.classList.contains(this.classes.open)) {\n                    const optgroupLabel = prevParent.querySelector('.' + this.classes.optgroupLabel);\n                    if (optgroupLabel) {\n                        optgroupLabel.click();\n                    }\n                }\n                let selectOption = options[dir === 'down' ? (i + 1 < options.length ? i + 1 : 0) : i - 1 >= 0 ? i - 1 : options.length - 1];\n                selectOption.classList.add(this.classes.highlighted);\n                this.ensureElementInView(this.content.list, selectOption);\n                const selectParent = selectOption.parentElement;\n                if (selectParent && selectParent.classList.contains(this.classes.close)) {\n                    const optgroupLabel = selectParent.querySelector('.' + this.classes.optgroupLabel);\n                    if (optgroupLabel) {\n                        optgroupLabel.click();\n                    }\n                }\n                return;\n            }\n        }\n        options[dir === 'down' ? 0 : options.length - 1].classList.add(this.classes.highlighted);\n        this.ensureElementInView(this.content.list, options[dir === 'down' ? 0 : options.length - 1]);\n    }\n    listDiv() {\n        const options = document.createElement('div');\n        options.classList.add(this.classes.list);\n        return options;\n    }\n    renderError(error) {\n        this.content.list.innerHTML = '';\n        const errorDiv = document.createElement('div');\n        errorDiv.classList.add(this.classes.error);\n        errorDiv.textContent = error;\n        this.content.list.appendChild(errorDiv);\n    }\n    renderSearching() {\n        this.content.list.innerHTML = '';\n        const searchingDiv = document.createElement('div');\n        searchingDiv.classList.add(this.classes.searching);\n        searchingDiv.textContent = this.settings.searchingText;\n        this.content.list.appendChild(searchingDiv);\n    }\n    renderOptions(data) {\n        this.content.list.innerHTML = '';\n        if (data.length === 0) {\n            const noResults = document.createElement('div');\n            noResults.classList.add(this.classes.search);\n            noResults.innerHTML = this.settings.searchText;\n            this.content.list.appendChild(noResults);\n            return;\n        }\n        for (const d of data) {\n            if (d instanceof Optgroup) {\n                const optgroupEl = document.createElement('div');\n                optgroupEl.classList.add(this.classes.optgroup);\n                const optgroupLabel = document.createElement('div');\n                optgroupLabel.classList.add(this.classes.optgroupLabel);\n                optgroupEl.appendChild(optgroupLabel);\n                const optgroupLabelText = document.createElement('div');\n                optgroupLabelText.classList.add(this.classes.optgroupLabelText);\n                optgroupLabelText.textContent = d.label;\n                optgroupLabel.appendChild(optgroupLabelText);\n                const optgroupActions = document.createElement('div');\n                optgroupActions.classList.add(this.classes.optgroupActions);\n                optgroupLabel.appendChild(optgroupActions);\n                if (this.settings.isMultiple && d.selectAll) {\n                    const selectAll = document.createElement('div');\n                    selectAll.classList.add(this.classes.optgroupSelectAll);\n                    let allSelected = true;\n                    for (const o of d.options) {\n                        if (!o.selected) {\n                            allSelected = false;\n                            break;\n                        }\n                    }\n                    if (allSelected) {\n                        selectAll.classList.add(this.classes.selected);\n                    }\n                    const selectAllText = document.createElement('span');\n                    selectAllText.textContent = 'Select All';\n                    selectAll.appendChild(selectAllText);\n                    const selectAllSvg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n                    selectAllSvg.setAttribute('viewBox', '0 0 100 100');\n                    selectAll.appendChild(selectAllSvg);\n                    const selectAllBox = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n                    selectAllBox.setAttribute('d', this.classes.optgroupSelectAllBox);\n                    selectAllSvg.appendChild(selectAllBox);\n                    const selectAllCheck = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n                    selectAllCheck.setAttribute('d', this.classes.optgroupSelectAllCheck);\n                    selectAllSvg.appendChild(selectAllCheck);\n                    selectAll.addEventListener('click', (e) => {\n                        e.preventDefault();\n                        e.stopPropagation();\n                        const currentSelected = this.store.getSelected();\n                        if (allSelected) {\n                            const newSelected = currentSelected.filter((s) => {\n                                for (const o of d.options) {\n                                    if (s === o.value) {\n                                        return false;\n                                    }\n                                }\n                                return true;\n                            });\n                            this.callbacks.setSelected(newSelected, true);\n                            return;\n                        }\n                        else {\n                            const newSelected = currentSelected.concat(d.options.map((o) => o.value));\n                            this.callbacks.setSelected(newSelected, true);\n                        }\n                    });\n                    optgroupActions.appendChild(selectAll);\n                }\n                if (d.closable !== 'off') {\n                    const optgroupClosable = document.createElement('div');\n                    optgroupClosable.classList.add(this.classes.optgroupClosable);\n                    const optgroupClosableSvg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n                    optgroupClosableSvg.setAttribute('viewBox', '0 0 100 100');\n                    optgroupClosableSvg.classList.add(this.classes.arrow);\n                    optgroupClosable.appendChild(optgroupClosableSvg);\n                    const optgroupClosableArrow = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n                    optgroupClosableSvg.appendChild(optgroupClosableArrow);\n                    if (d.options.some((o) => o.selected) || this.content.search.input.value.trim() !== '') {\n                        optgroupClosable.classList.add(this.classes.open);\n                        optgroupClosableArrow.setAttribute('d', this.classes.arrowOpen);\n                    }\n                    else if (d.closable === 'open') {\n                        optgroupEl.classList.add(this.classes.open);\n                        optgroupClosableArrow.setAttribute('d', this.classes.arrowOpen);\n                    }\n                    else if (d.closable === 'close') {\n                        optgroupEl.classList.add(this.classes.close);\n                        optgroupClosableArrow.setAttribute('d', this.classes.arrowClose);\n                    }\n                    optgroupLabel.addEventListener('click', (e) => {\n                        e.preventDefault();\n                        e.stopPropagation();\n                        if (optgroupEl.classList.contains(this.classes.close)) {\n                            optgroupEl.classList.remove(this.classes.close);\n                            optgroupEl.classList.add(this.classes.open);\n                            optgroupClosableArrow.setAttribute('d', this.classes.arrowOpen);\n                        }\n                        else {\n                            optgroupEl.classList.remove(this.classes.open);\n                            optgroupEl.classList.add(this.classes.close);\n                            optgroupClosableArrow.setAttribute('d', this.classes.arrowClose);\n                        }\n                    });\n                    optgroupActions.appendChild(optgroupClosable);\n                }\n                optgroupEl.appendChild(optgroupLabel);\n                for (const o of d.options) {\n                    optgroupEl.appendChild(this.option(o));\n                }\n                this.content.list.appendChild(optgroupEl);\n            }\n            if (d instanceof Option) {\n                this.content.list.appendChild(this.option(d));\n            }\n        }\n    }\n    option(option) {\n        if (option.placeholder) {\n            const placeholder = document.createElement('div');\n            placeholder.classList.add(this.classes.option);\n            placeholder.classList.add(this.classes.hide);\n            return placeholder;\n        }\n        const optionEl = document.createElement('div');\n        optionEl.dataset.id = option.id;\n        optionEl.id = option.id;\n        optionEl.classList.add(this.classes.option);\n        optionEl.setAttribute('role', 'option');\n        if (option.class) {\n            option.class.split(' ').forEach((dataClass) => {\n                optionEl.classList.add(dataClass);\n            });\n        }\n        if (option.style) {\n            optionEl.style.cssText = option.style;\n        }\n        if (this.settings.searchHighlight && this.content.search.input.value.trim() !== '') {\n            optionEl.innerHTML = this.highlightText(option.html !== '' ? option.html : option.text, this.content.search.input.value, this.classes.searchHighlighter);\n        }\n        else if (option.html !== '') {\n            optionEl.innerHTML = option.html;\n        }\n        else {\n            optionEl.textContent = option.text;\n        }\n        if (this.settings.showOptionTooltips && optionEl.textContent) {\n            optionEl.setAttribute('title', optionEl.textContent);\n        }\n        if (!option.display) {\n            optionEl.classList.add(this.classes.hide);\n        }\n        if (option.disabled) {\n            optionEl.classList.add(this.classes.disabled);\n        }\n        if (option.selected && this.settings.hideSelected) {\n            optionEl.classList.add(this.classes.hide);\n        }\n        if (option.selected) {\n            optionEl.classList.add(this.classes.selected);\n            optionEl.setAttribute('aria-selected', 'true');\n            this.main.main.setAttribute('aria-activedescendant', optionEl.id);\n        }\n        else {\n            optionEl.classList.remove(this.classes.selected);\n            optionEl.setAttribute('aria-selected', 'false');\n        }\n        optionEl.addEventListener('click', (e) => {\n            e.preventDefault();\n            e.stopPropagation();\n            const selectedOptions = this.store.getSelected();\n            const element = e.currentTarget;\n            const elementID = String(element.dataset.id);\n            if (option.disabled || (option.selected && !this.settings.allowDeselect)) {\n                return;\n            }\n            if ((this.settings.isMultiple && this.settings.maxSelected <= selectedOptions.length && !option.selected) ||\n                (this.settings.isMultiple && this.settings.minSelected >= selectedOptions.length && option.selected)) {\n                return;\n            }\n            let shouldUpdate = false;\n            const before = this.store.getSelectedOptions();\n            let after = [];\n            if (this.settings.isMultiple) {\n                if (option.selected) {\n                    after = before.filter((o) => o.id !== elementID);\n                }\n                else {\n                    after = before.concat(option);\n                }\n            }\n            if (!this.settings.isMultiple) {\n                if (option.selected) {\n                    after = [];\n                }\n                else {\n                    after = [option];\n                }\n            }\n            if (!this.callbacks.beforeChange) {\n                shouldUpdate = true;\n            }\n            if (this.callbacks.beforeChange) {\n                if (this.callbacks.beforeChange(after, before) === false) {\n                    shouldUpdate = false;\n                }\n                else {\n                    shouldUpdate = true;\n                }\n            }\n            if (shouldUpdate) {\n                if (!this.store.getOptionByID(elementID)) {\n                    this.callbacks.addOption(option);\n                }\n                this.callbacks.setSelected(after.map((o) => o.value), false);\n                if (this.settings.closeOnSelect) {\n                    this.callbacks.close();\n                }\n                if (this.callbacks.afterChange) {\n                    this.callbacks.afterChange(after);\n                }\n            }\n        });\n        return optionEl;\n    }\n    destroy() {\n        this.main.main.remove();\n        this.content.main.remove();\n    }\n    highlightText(str, search, className) {\n        let completedString = str;\n        const regex = new RegExp('(' + search.trim() + ')(?![^<]*>[^<>]*</)', 'i');\n        if (!str.match(regex)) {\n            return str;\n        }\n        const matchStartPosition = str.match(regex).index;\n        const matchEndPosition = matchStartPosition + str.match(regex)[0].toString().length;\n        const originalTextFoundByRegex = str.substring(matchStartPosition, matchEndPosition);\n        completedString = completedString.replace(regex, `<mark class=\"${className}\">${originalTextFoundByRegex}</mark>`);\n        return completedString;\n    }\n    moveContentAbove() {\n        const mainHeight = this.main.main.offsetHeight;\n        const contentHeight = this.content.main.offsetHeight;\n        this.main.main.classList.remove(this.classes.openBelow);\n        this.main.main.classList.add(this.classes.openAbove);\n        this.content.main.classList.remove(this.classes.openBelow);\n        this.content.main.classList.add(this.classes.openAbove);\n        const containerRect = this.main.main.getBoundingClientRect();\n        this.content.main.style.margin = '-' + (mainHeight + contentHeight - 1) + 'px 0px 0px 0px';\n        this.content.main.style.top = containerRect.top + containerRect.height + window.scrollY + 'px';\n        this.content.main.style.left = containerRect.left + window.scrollX + 'px';\n        this.content.main.style.width = containerRect.width + 'px';\n    }\n    moveContentBelow() {\n        this.main.main.classList.remove(this.classes.openAbove);\n        this.main.main.classList.add(this.classes.openBelow);\n        this.content.main.classList.remove(this.classes.openAbove);\n        this.content.main.classList.add(this.classes.openBelow);\n        const containerRect = this.main.main.getBoundingClientRect();\n        this.content.main.style.margin = '-1px 0px 0px 0px';\n        if (this.settings.contentPosition !== 'relative') {\n            this.content.main.style.top = containerRect.top + containerRect.height + window.scrollY + 'px';\n            this.content.main.style.left = containerRect.left + window.scrollX + 'px';\n            this.content.main.style.width = containerRect.width + 'px';\n        }\n    }\n    ensureElementInView(container, element) {\n        const cTop = container.scrollTop + container.offsetTop;\n        const cBottom = cTop + container.clientHeight;\n        const eTop = element.offsetTop;\n        const eBottom = eTop + element.clientHeight;\n        if (eTop < cTop) {\n            container.scrollTop -= cTop - eTop;\n        }\n        else if (eBottom > cBottom) {\n            container.scrollTop += eBottom - cBottom;\n        }\n    }\n    putContent() {\n        const mainHeight = this.main.main.offsetHeight;\n        const mainRect = this.main.main.getBoundingClientRect();\n        const contentHeight = this.content.main.offsetHeight;\n        const spaceBelow = window.innerHeight - (mainRect.top + mainHeight);\n        if (spaceBelow <= contentHeight) {\n            if (mainRect.top > contentHeight) {\n                return 'up';\n            }\n            else {\n                return 'down';\n            }\n        }\n        return 'down';\n    }\n}\n\nclass Select {\n    constructor(select) {\n        this.listen = false;\n        this.observer = null;\n        this.select = select;\n        this.select.addEventListener('change', this.valueChange.bind(this), {\n            passive: true,\n        });\n        this.observer = new MutationObserver(this.observeCall.bind(this));\n        this.changeListen(true);\n    }\n    enable() {\n        this.select.disabled = false;\n    }\n    disable() {\n        this.select.disabled = true;\n    }\n    hideUI() {\n        this.select.tabIndex = -1;\n        this.select.style.display = 'none';\n        this.select.setAttribute('aria-hidden', 'true');\n    }\n    showUI() {\n        this.select.removeAttribute('tabindex');\n        this.select.style.display = '';\n        this.select.removeAttribute('aria-hidden');\n    }\n    changeListen(listen) {\n        this.listen = listen;\n        if (listen) {\n            if (this.observer) {\n                this.observer.observe(this.select, {\n                    subtree: true,\n                    childList: true,\n                    attributes: true,\n                });\n            }\n        }\n        if (!listen) {\n            if (this.observer) {\n                this.observer.disconnect();\n            }\n        }\n    }\n    valueChange(ev) {\n        if (this.listen && this.onValueChange) {\n            this.onValueChange(this.getSelectedValues());\n        }\n        return true;\n    }\n    observeCall(mutations) {\n        if (!this.listen) {\n            return;\n        }\n        let classChanged = false;\n        let disabledChanged = false;\n        let optgroupOptionChanged = false;\n        for (const m of mutations) {\n            if (m.target === this.select) {\n                if (m.attributeName === 'disabled') {\n                    disabledChanged = true;\n                }\n                if (m.attributeName === 'class') {\n                    classChanged = true;\n                }\n            }\n            if (m.target.nodeName === 'OPTGROUP' || m.target.nodeName === 'OPTION') {\n                optgroupOptionChanged = true;\n            }\n        }\n        if (classChanged && this.onClassChange) {\n            this.onClassChange(this.select.className.split(' '));\n        }\n        if (disabledChanged && this.onDisabledChange) {\n            this.changeListen(false);\n            this.onDisabledChange(this.select.disabled);\n            this.changeListen(true);\n        }\n        if (optgroupOptionChanged && this.onOptionsChange) {\n            this.changeListen(false);\n            this.onOptionsChange(this.getData());\n            this.changeListen(true);\n        }\n    }\n    getData() {\n        let data = [];\n        const nodes = this.select.childNodes;\n        for (const n of nodes) {\n            if (n.nodeName === 'OPTGROUP') {\n                data.push(this.getDataFromOptgroup(n));\n            }\n            if (n.nodeName === 'OPTION') {\n                data.push(this.getDataFromOption(n));\n            }\n        }\n        return data;\n    }\n    getDataFromOptgroup(optgroup) {\n        let data = {\n            id: optgroup.id,\n            label: optgroup.label,\n            selectAll: optgroup.dataset ? optgroup.dataset.selectall === 'true' : false,\n            closable: optgroup.dataset ? optgroup.dataset.closable : 'off',\n            options: [],\n        };\n        const options = optgroup.childNodes;\n        for (const o of options) {\n            if (o.nodeName === 'OPTION') {\n                data.options.push(this.getDataFromOption(o));\n            }\n        }\n        return data;\n    }\n    getDataFromOption(option) {\n        return {\n            id: option.id,\n            value: option.value,\n            text: option.text,\n            html: option.dataset && option.dataset.html ? option.dataset.html : '',\n            selected: option.selected,\n            display: option.style.display === 'none' ? false : true,\n            disabled: option.disabled,\n            mandatory: option.dataset ? option.dataset.mandatory === 'true' : false,\n            placeholder: option.dataset.placeholder === 'true',\n            class: option.className,\n            style: option.style.cssText,\n            data: option.dataset,\n        };\n    }\n    getSelectedValues() {\n        let values = [];\n        const options = this.select.childNodes;\n        for (const o of options) {\n            if (o.nodeName === 'OPTGROUP') {\n                const optgroupOptions = o.childNodes;\n                for (const oo of optgroupOptions) {\n                    if (oo.nodeName === 'OPTION') {\n                        const option = oo;\n                        if (option.selected) {\n                            values.push(option.value);\n                        }\n                    }\n                }\n            }\n            if (o.nodeName === 'OPTION') {\n                const option = o;\n                if (option.selected) {\n                    values.push(option.value);\n                }\n            }\n        }\n        return values;\n    }\n    setSelected(value) {\n        this.changeListen(false);\n        const options = this.select.childNodes;\n        for (const o of options) {\n            if (o.nodeName === 'OPTGROUP') {\n                const optgroup = o;\n                const optgroupOptions = optgroup.childNodes;\n                for (const oo of optgroupOptions) {\n                    if (oo.nodeName === 'OPTION') {\n                        const option = oo;\n                        option.selected = value.includes(option.value);\n                    }\n                }\n            }\n            if (o.nodeName === 'OPTION') {\n                const option = o;\n                option.selected = value.includes(option.value);\n            }\n        }\n        this.changeListen(true);\n    }\n    updateSelect(id, style, classes) {\n        this.changeListen(false);\n        if (id) {\n            this.select.dataset.id = id;\n        }\n        if (style) {\n            this.select.style.cssText = style;\n        }\n        if (classes) {\n            this.select.className = '';\n            classes.forEach((c) => {\n                if (c.trim() !== '') {\n                    this.select.classList.add(c.trim());\n                }\n            });\n        }\n        this.changeListen(true);\n    }\n    updateOptions(data) {\n        this.changeListen(false);\n        this.select.innerHTML = '';\n        for (const d of data) {\n            if (d instanceof Optgroup) {\n                this.select.appendChild(this.createOptgroup(d));\n            }\n            if (d instanceof Option) {\n                this.select.appendChild(this.createOption(d));\n            }\n        }\n        this.select.dispatchEvent(new Event('change'));\n        this.changeListen(true);\n    }\n    createOptgroup(optgroup) {\n        const optgroupEl = document.createElement('optgroup');\n        optgroupEl.id = optgroup.id;\n        optgroupEl.label = optgroup.label;\n        if (optgroup.selectAll) {\n            optgroupEl.dataset.selectAll = 'true';\n        }\n        if (optgroup.closable !== 'off') {\n            optgroupEl.dataset.closable = optgroup.closable;\n        }\n        if (optgroup.options) {\n            for (const o of optgroup.options) {\n                optgroupEl.appendChild(this.createOption(o));\n            }\n        }\n        return optgroupEl;\n    }\n    createOption(info) {\n        const optionEl = document.createElement('option');\n        optionEl.id = info.id;\n        optionEl.value = info.value;\n        optionEl.innerHTML = info.text;\n        if (info.html !== '') {\n            optionEl.setAttribute('data-html', info.html);\n        }\n        if (info.selected) {\n            optionEl.selected = info.selected;\n        }\n        if (info.disabled) {\n            optionEl.disabled = true;\n        }\n        if (info.display === false) {\n            optionEl.style.display = 'none';\n        }\n        if (info.placeholder) {\n            optionEl.setAttribute('data-placeholder', 'true');\n        }\n        if (info.mandatory) {\n            optionEl.setAttribute('data-mandatory', 'true');\n        }\n        if (info.class) {\n            info.class.split(' ').forEach((optionClass) => {\n                optionEl.classList.add(optionClass);\n            });\n        }\n        if (info.data && typeof info.data === 'object') {\n            Object.keys(info.data).forEach((key) => {\n                optionEl.setAttribute('data-' + kebabCase(key), info.data[key]);\n            });\n        }\n        return optionEl;\n    }\n    destroy() {\n        this.changeListen(false);\n        this.select.removeEventListener('change', this.valueChange.bind(this));\n        if (this.observer) {\n            this.observer.disconnect();\n            this.observer = null;\n        }\n        delete this.select.dataset.id;\n        this.showUI();\n    }\n}\n\nclass SlimSelect {\n    constructor(config) {\n        var _a;\n        this.events = {\n            search: undefined,\n            searchFilter: (opt, search) => {\n                return opt.text.toLowerCase().indexOf(search.toLowerCase()) !== -1;\n            },\n            addable: undefined,\n            beforeChange: undefined,\n            afterChange: undefined,\n            beforeOpen: undefined,\n            afterOpen: undefined,\n            beforeClose: undefined,\n            afterClose: undefined,\n        };\n        this.windowResize = debounce(() => {\n            if (!this.settings.isOpen && !this.settings.isFullOpen) {\n                return;\n            }\n            this.render.moveContent();\n        });\n        this.windowScroll = debounce(() => {\n            if (!this.settings.isOpen && !this.settings.isFullOpen) {\n                return;\n            }\n            this.render.moveContent();\n        });\n        this.documentClick = (e) => {\n            if (!this.settings.isOpen) {\n                return;\n            }\n            if (e.target && !hasClassInTree(e.target, this.settings.id)) {\n                this.close(e.type);\n            }\n        };\n        this.windowVisibilityChange = () => {\n            if (document.hidden) {\n                this.close();\n            }\n        };\n        this.selectEl = (typeof config.select === 'string' ? document.querySelector(config.select) : config.select);\n        if (!this.selectEl) {\n            if (config.events && config.events.error) {\n                config.events.error(new Error('Could not find select element'));\n            }\n            return;\n        }\n        if (this.selectEl.tagName !== 'SELECT') {\n            if (config.events && config.events.error) {\n                config.events.error(new Error('Element isnt of type select'));\n            }\n            return;\n        }\n        if (this.selectEl.dataset.ssid) {\n            this.destroy();\n        }\n        this.settings = new Settings(config.settings);\n        const debounceEvents = ['afterChange', 'beforeOpen', 'afterOpen', 'beforeClose', 'afterClose'];\n        for (const key in config.events) {\n            if (!config.events.hasOwnProperty(key)) {\n                continue;\n            }\n            if (debounceEvents.indexOf(key) !== -1) {\n                this.events[key] = debounce(config.events[key], 100);\n            }\n            else {\n                this.events[key] = config.events[key];\n            }\n        }\n        this.settings.disabled = ((_a = config.settings) === null || _a === void 0 ? void 0 : _a.disabled) ? config.settings.disabled : this.selectEl.disabled;\n        this.settings.isMultiple = this.selectEl.multiple;\n        this.settings.style = this.selectEl.style.cssText;\n        this.settings.class = this.selectEl.className.split(' ');\n        this.select = new Select(this.selectEl);\n        this.select.updateSelect(this.settings.id, this.settings.style, this.settings.class);\n        this.select.hideUI();\n        this.select.onValueChange = (values) => {\n            this.setSelected(values);\n        };\n        this.select.onClassChange = (classes) => {\n            this.settings.class = classes;\n            this.render.updateClassStyles();\n        };\n        this.select.onDisabledChange = (disabled) => {\n            if (disabled) {\n                this.disable();\n            }\n            else {\n                this.enable();\n            }\n        };\n        this.select.onOptionsChange = (data) => {\n            this.setData(data);\n        };\n        this.store = new Store(this.settings.isMultiple ? 'multiple' : 'single', config.data ? config.data : this.select.getData());\n        if (config.data) {\n            this.select.updateOptions(this.store.getData());\n        }\n        const callbacks = {\n            open: this.open.bind(this),\n            close: this.close.bind(this),\n            addable: this.events.addable ? this.events.addable : undefined,\n            setSelected: this.setSelected.bind(this),\n            addOption: this.addOption.bind(this),\n            search: this.search.bind(this),\n            beforeChange: this.events.beforeChange,\n            afterChange: this.events.afterChange,\n        };\n        this.render = new Render(this.settings, this.store, callbacks);\n        this.render.renderValues();\n        this.render.renderOptions(this.store.getData());\n        const selectAriaLabel = this.selectEl.getAttribute('aria-label');\n        const selectAriaLabelledBy = this.selectEl.getAttribute('aria-labelledby');\n        if (selectAriaLabel) {\n            this.render.main.main.setAttribute('aria-label', selectAriaLabel);\n        }\n        else if (selectAriaLabelledBy) {\n            this.render.main.main.setAttribute('aria-labelledby', selectAriaLabelledBy);\n        }\n        if (this.selectEl.parentNode) {\n            this.selectEl.parentNode.insertBefore(this.render.main.main, this.selectEl.nextSibling);\n        }\n        document.addEventListener('click', this.documentClick);\n        window.addEventListener('resize', this.windowResize, false);\n        if (this.settings.openPosition === 'auto') {\n            window.addEventListener('scroll', this.windowScroll, false);\n        }\n        document.addEventListener('visibilitychange', this.windowVisibilityChange);\n        if (this.settings.disabled) {\n            this.disable();\n        }\n        if (this.settings.alwaysOpen) {\n            this.open();\n        }\n        this.selectEl.slim = this;\n    }\n    enable() {\n        this.settings.disabled = false;\n        this.select.enable();\n        this.render.enable();\n    }\n    disable() {\n        this.settings.disabled = true;\n        this.select.disable();\n        this.render.disable();\n    }\n    getData() {\n        return this.store.getData();\n    }\n    setData(data) {\n        const selected = this.store.getSelected();\n        const err = this.store.validateDataArray(data);\n        if (err) {\n            if (this.events.error) {\n                this.events.error(err);\n            }\n            return;\n        }\n        this.store.setData(data);\n        const dataClean = this.store.getData();\n        this.select.updateOptions(dataClean);\n        this.render.renderValues();\n        this.render.renderOptions(dataClean);\n        if (this.events.afterChange && !isEqual(selected, this.store.getSelected())) {\n            this.events.afterChange(this.store.getSelectedOptions());\n        }\n    }\n    getSelected() {\n        return this.store.getSelected();\n    }\n    setSelected(value, runAfterChange = true) {\n        const selected = this.store.getSelected();\n        this.store.setSelectedBy('value', Array.isArray(value) ? value : [value]);\n        const data = this.store.getData();\n        this.select.updateOptions(data);\n        this.render.renderValues();\n        if (this.render.content.search.input.value !== '') {\n            this.search(this.render.content.search.input.value);\n        }\n        else {\n            this.render.renderOptions(data);\n        }\n        if (runAfterChange && this.events.afterChange && !isEqual(selected, this.store.getSelected())) {\n            this.events.afterChange(this.store.getSelectedOptions());\n        }\n    }\n    addOption(option) {\n        const selected = this.store.getSelected();\n        if (!this.store.getDataOptions().some((o) => { var _a; return o.value === ((_a = option.value) !== null && _a !== void 0 ? _a : option.text); })) {\n            this.store.addOption(option);\n        }\n        const data = this.store.getData();\n        this.select.updateOptions(data);\n        this.render.renderValues();\n        this.render.renderOptions(data);\n        if (this.events.afterChange && !isEqual(selected, this.store.getSelected())) {\n            this.events.afterChange(this.store.getSelectedOptions());\n        }\n    }\n    open() {\n        if (this.settings.disabled || this.settings.isOpen) {\n            return;\n        }\n        if (this.events.beforeOpen) {\n            this.events.beforeOpen();\n        }\n        this.render.open();\n        if (this.settings.showSearch) {\n            this.render.searchFocus();\n        }\n        this.settings.isOpen = true;\n        setTimeout(() => {\n            if (this.events.afterOpen) {\n                this.events.afterOpen();\n            }\n            if (this.settings.isOpen) {\n                this.settings.isFullOpen = true;\n            }\n        }, this.settings.timeoutDelay);\n        if (this.settings.contentPosition === 'absolute') {\n            if (this.settings.intervalMove) {\n                clearInterval(this.settings.intervalMove);\n            }\n            this.settings.intervalMove = setInterval(this.render.moveContent.bind(this.render), 500);\n        }\n    }\n    close(eventType = null) {\n        if (!this.settings.isOpen || this.settings.alwaysOpen) {\n            return;\n        }\n        if (this.events.beforeClose) {\n            this.events.beforeClose();\n        }\n        this.render.close();\n        if (this.render.content.search.input.value !== '') {\n            this.search('');\n        }\n        this.render.mainFocus(eventType);\n        this.settings.isOpen = false;\n        this.settings.isFullOpen = false;\n        setTimeout(() => {\n            if (this.events.afterClose) {\n                this.events.afterClose();\n            }\n        }, this.settings.timeoutDelay);\n        if (this.settings.intervalMove) {\n            clearInterval(this.settings.intervalMove);\n        }\n    }\n    search(value) {\n        if (this.render.content.search.input.value !== value) {\n            this.render.content.search.input.value = value;\n        }\n        if (!this.events.search) {\n            this.render.renderOptions(value === '' ? this.store.getData() : this.store.search(value, this.events.searchFilter));\n            return;\n        }\n        this.render.renderSearching();\n        const searchResp = this.events.search(value, this.store.getSelectedOptions());\n        if (searchResp instanceof Promise) {\n            searchResp\n                .then((data) => {\n                this.render.renderOptions(this.store.partialToFullData(data));\n            })\n                .catch((err) => {\n                this.render.renderError(typeof err === 'string' ? err : err.message);\n            });\n            return;\n        }\n        else if (Array.isArray(searchResp)) {\n            this.render.renderOptions(this.store.partialToFullData(searchResp));\n        }\n        else {\n            this.render.renderError('Search event must return a promise or an array of data');\n        }\n    }\n    destroy() {\n        document.removeEventListener('click', this.documentClick);\n        window.removeEventListener('resize', this.windowResize, false);\n        if (this.settings.openPosition === 'auto') {\n            window.removeEventListener('scroll', this.windowScroll, false);\n        }\n        document.removeEventListener('visibilitychange', this.windowVisibilityChange);\n        this.store.setData([]);\n        this.render.destroy();\n        this.select.destroy();\n    }\n}\n\nexport { SlimSelect as default };\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\"addressElement\", \"paymentElement\", \"error\", \"form\"]\n  static values = {\n    clientSecret: String,\n    returnUrl: String,\n    name: String\n  }\n\n  connect() {\n    this.stripe = Stripe(this.stripeKey)\n    this.elements = this.stripe.elements({\n      appearance: {\n        theme: \"stripe\",\n        variables: {\n          fontSizeBase: \"14px\"\n        }\n      },\n      clientSecret: this.clientSecretValue\n    })\n\n    this.paymentElement = this.elements.create(\"payment\")\n    this.paymentElement.mount(this.paymentElementTarget)\n\n    if (this.hasAddressElementTarget) {\n      this.addressElement = this.elements.create('address', {\n        mode: 'billing',\n        defaultValues: {\n          name: this.nameValue\n        }\n      });\n      this.addressElement.mount(this.addressElementTarget)\n    }\n  }\n\n  changed(event) {\n    if (event.error) {\n      this.errorTarget.textContent = event.error.message\n    } else {\n      this.errorTarget.textContent = \"\"\n    }\n  }\n\n  async submit(event) {\n    event.preventDefault()\n    Rails.disableElement(this.formTarget)\n\n    // Payment Intents\n    if (this.clientSecretValue.startsWith(\"pi_\")) {\n      const { error } = await this.stripe.confirmPayment({\n        elements: this.elements,\n        confirmParams: {\n          return_url: this.returnUrlValue,\n        },\n      });\n      this.showError(error)\n\n    // Setup Intents\n    } else {\n      const { error } = await this.stripe.confirmSetup({\n        elements: this.elements,\n        confirmParams: {\n          return_url: this.returnUrlValue,\n        },\n      });\n      this.showError(error)\n    }\n  }\n\n  showError(error) {\n    this.errorTarget.textContent = error.message\n    setTimeout(() => {\n      Rails.enableElement(this.formTarget)\n    }, 100)\n  }\n\n  get stripeKey() {\n    return document.querySelector('meta[name=\"stripe-key\"]').getAttribute(\"content\")\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  static targets = [\"toggleable\"]\n\n  toggle() {\n    this.toggleableTargets.forEach(target => {\n      target.classList.toggle(\"hidden\")\n    })\n  }\n}", "// Example usage:\n// <div data-controller=\"tooltip\" data-tippy-content=\"Hello world\"></div>\n\nimport { Controller } from \"@hotwired/stimulus\"\nimport tippy from \"tippy.js\";\n\nexport default class extends Controller {\n  static values = {\n    content: String\n  }\n\n  connect() {\n    let options = {}\n    if (this.hasContentValue) {\n      options['content'] = this.contentValue\n    }\n    this.tippy = tippy(this.element, options);\n  }\n\n  disconnect() {\n    this.tippy.destroy();\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport Trix from 'trix'\nconst { lang } = Trix.config\n\n// Connects to data-controller=\"trix\"\nexport default class extends Controller {\n    static targets = ['editor', 'foregroundColorPicker', 'backgroundColorPicker']\n\n    connect () {\n        document.addEventListener('trix-before-initialize', () => {\n            this.initTrix()\n        })\n    }\n\n    initTrix () {\n        Trix.config.blockAttributes.heading1.tagName = 'h3'\n        Trix.config.toolbar.getDefaultHTML = this.getDefaultHTML.bind(this)\n        this.addForegroundButtonConfig()\n        this.addBackgroundButtonConfig()\n    }\n\n    openForegroundColorPicker () {\n        this.foregroundColorPickerTarget.click()\n    }\n\n    openBackgroundColorPicker () {\n        this.backgroundColorPickerTarget.click()\n    }\n\n    foregroundColorChanged () {\n        this.editorTarget.editor.activateAttribute('foregroundColor', this.foregroundColorPickerTarget.value)\n    }\n\n    backgroundColorChanged () {\n        this.editorTarget.editor.activateAttribute('backgroundColor', this.backgroundColorPickerTarget.value)\n    }\n\n    addForegroundButtonConfig () {\n        Trix.config.textAttributes.foregroundColor = {\n            styleProperty: 'color',\n            inheritable: true\n        }\n    }\n\n    addBackgroundButtonConfig () {\n        Trix.config.textAttributes.backgroundColor = {\n            styleProperty: 'backgroundColor',\n            inheritable: true\n        }\n    }\n\n    getDefaultHTML () {\n        return `<div class=\"trix-button-row\">\n      <span class=\"trix-button-group trix-button-group--text-tools\" data-trix-button-group=\"text-tools\">\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-bold\" data-trix-attribute=\"bold\" data-trix-key=\"b\" title=\"${lang.bold}\" tabindex=\"-1\">${lang.bold}</button>\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-italic\" data-trix-attribute=\"italic\" data-trix-key=\"i\" title=\"${lang.italic}\" tabindex=\"-1\">${lang.italic}</button>\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-strike\" data-trix-attribute=\"strike\" title=\"${lang.strike}\" tabindex=\"-1\">${lang.strike}</button>\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-link\" data-trix-attribute=\"href\" data-trix-action=\"link\" data-trix-key=\"k\" title=\"${lang.link}\" tabindex=\"-1\">${lang.link}</button>\n        ${this.foregroundColorButtons}\n        ${this.backgroundColorButtons}\n      </span>\n      <span class=\"trix-button-group trix-button-group--block-tools\" data-trix-button-group=\"block-tools\">\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-heading-1\" data-trix-attribute=\"heading1\" title=\"${lang.heading1}\" tabindex=\"-1\">${lang.heading1}</button>\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-quote\" data-trix-attribute=\"quote\" title=\"${lang.quote}\" tabindex=\"-1\">${lang.quote}</button>\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-code\" data-trix-attribute=\"code\" title=\"${lang.code}\" tabindex=\"-1\">${lang.code}</button>\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-bullet-list\" data-trix-attribute=\"bullet\" title=\"${lang.bullets}\" tabindex=\"-1\">${lang.bullets}</button>\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-number-list\" data-trix-attribute=\"number\" title=\"${lang.numbers}\" tabindex=\"-1\">${lang.numbers}</button>\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-decrease-nesting-level\" data-trix-action=\"decreaseNestingLevel\" title=\"${lang.outdent}\" tabindex=\"-1\">${lang.outdent}</button>\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-increase-nesting-level\" data-trix-action=\"increaseNestingLevel\" title=\"${lang.indent}\" tabindex=\"-1\">${lang.indent}</button>\n      </span>\n      <span class=\"trix-button-group trix-button-group--file-tools\" data-trix-button-group=\"file-tools\">\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-attach\" data-trix-action=\"attachFiles\" title=\"${lang.attachFiles}\" tabindex=\"-1\">${lang.attachFiles}</button>\n      </span>\n      <span class=\"trix-button-group-spacer\"></span>\n      <span class=\"trix-button-group trix-button-group--history-tools\" data-trix-button-group=\"history-tools\">\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-undo\" data-trix-action=\"undo\" data-trix-key=\"z\" title=\"${lang.undo}\" tabindex=\"-1\">${lang.undo}</button>\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-redo\" data-trix-action=\"redo\" data-trix-key=\"shift+z\" title=\"${lang.redo}\" tabindex=\"-1\">${lang.redo}</button>\n      </span>\n    </div>\n    <div class=\"trix-dialogs\" data-trix-dialogs>\n      <div class=\"trix-dialog trix-dialog--link\" data-trix-dialog=\"href\" data-trix-dialog-attribute=\"href\">\n        <div class=\"trix-dialog__link-fields\">\n          <input type=\"url\" name=\"href\" class=\"trix-input trix-input--dialog\" placeholder=\"${lang.urlPlaceholder}\" aria-label=\"${lang.url}\" required data-trix-input>\n          <div class=\"trix-button-group\">\n            <input type=\"button\" class=\"trix-button trix-button--dialog\" value=\"${lang.link}\" data-trix-method=\"setAttribute\">\n            <input type=\"button\" class=\"trix-button trix-button--dialog\" value=\"${lang.unlink}\" data-trix-method=\"removeAttribute\">\n          </div>\n        </div>\n      </div>\n    </div>`\n    }\n\n    get foregroundColorButtons () {\n        return `<input type=\"color\" style=\"width:0;height:0;padding:0;margin-top:20px;visibility:hidden\"\n                   data-trix-target=\"foregroundColorPicker\" data-action=\"trix#foregroundColorChanged\">\n            <button type=\"button\" class=\"trix-button\" data-action=\"click->trix#openForegroundColorPicker\" title=\"Text color\">\n              <span class=\"icon\"><i class=\"fas fa-palette fa-lg text-neutral-500\"></i></span>\n            </button>`\n    }\n\n    get backgroundColorButtons () {\n        return `<input type=\"color\" style=\"width:0;height:0;padding:0;margin-top:20px;visibility:hidden\"\n                   data-trix-target=\"backgroundColorPicker\" data-action=\"trix#backgroundColorChanged\">\n            <button type=\"button\" class=\"trix-button\" data-action=\"click->trix#openBackgroundColorPicker\" title=\"Text background color\">\n              <span class=\"icon\"><i class=\"fas fa-fill-drip fa-lg text-neutral-500\"></i></span>\n            </button>`\n    }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n  signOut(event) {\n    if (this._isTurboNativeApp) {\n      event.preventDefault()\n      event.stopImmediatePropagation()\n      window.TurboNativeBridge.postMessage(\"signOut\")\n    }\n  }\n\n  deleteAccount(event) {\n    if (this._isTurboNativeApp) {\n      event.preventDefault()\n      event.stopImmediatePropagation()\n      window.TurboNativeBridge.postMessage(\"deleteAccount\")\n    }\n  }\n\n  get _isTurboNativeApp() {\n    return navigator.userAgent.indexOf(\"Turbo Native\") !== -1\n  }\n}\n", "\n        import * as module0 from './accounts_controller.js';import * as module1 from './braintree_controller.js';import * as module2 from './bulk_controller.js';import * as module3 from './clipboard_controller.js';import * as module4 from './command_palette_controller.js';import * as module5 from './csv_export_controller.js';import * as module6 from './customcrop_controller.js';import * as module7 from './customtoggle_controller.js';import * as module8 from './event_registrations_controller.js';import * as module9 from './events_controller.js';import * as module10 from './landing_carousel_controller.js';import * as module11 from './members_admin_controller.js';import * as module12 from './mentions_controller.js';import * as module13 from './noncnx_counter_controller.js';import * as module14 from './notifications_controller.js';import * as module15 from './paddle_controller.js';import * as module16 from './paypal_controller.js';import * as module17 from './pricing_controller.js';import * as module18 from './select_controller.js';import * as module19 from './slim_controller.js';import * as module20 from './stripe_controller.js';import * as module21 from './toggle_controller.js';import * as module22 from './tooltip_controller.js';import * as module23 from './trix_controller.js';import * as module24 from './turbo_native/sign_out_controller.js'\n        const modules = [{name: 'accounts', module: module0, filename: './accounts_controller.js'},{name: 'braintree', module: module1, filename: './braintree_controller.js'},{name: 'bulk', module: module2, filename: './bulk_controller.js'},{name: 'clipboard', module: module3, filename: './clipboard_controller.js'},{name: 'command-palette', module: module4, filename: './command_palette_controller.js'},{name: 'csv-export', module: module5, filename: './csv_export_controller.js'},{name: 'customcrop', module: module6, filename: './customcrop_controller.js'},{name: 'customtoggle', module: module7, filename: './customtoggle_controller.js'},{name: 'event-registrations', module: module8, filename: './event_registrations_controller.js'},{name: 'events', module: module9, filename: './events_controller.js'},{name: 'landing-carousel', module: module10, filename: './landing_carousel_controller.js'},{name: 'members-admin', module: module11, filename: './members_admin_controller.js'},{name: 'mentions', module: module12, filename: './mentions_controller.js'},{name: 'noncnx-counter', module: module13, filename: './noncnx_counter_controller.js'},{name: 'notifications', module: module14, filename: './notifications_controller.js'},{name: 'paddle', module: module15, filename: './paddle_controller.js'},{name: 'paypal', module: module16, filename: './paypal_controller.js'},{name: 'pricing', module: module17, filename: './pricing_controller.js'},{name: 'select', module: module18, filename: './select_controller.js'},{name: 'slim', module: module19, filename: './slim_controller.js'},{name: 'stripe', module: module20, filename: './stripe_controller.js'},{name: 'toggle', module: module21, filename: './toggle_controller.js'},{name: 'tooltip', module: module22, filename: './tooltip_controller.js'},{name: 'trix', module: module23, filename: './trix_controller.js'},{name: 'turbo-native--sign-out', module: module24, filename: './turbo_native/sign_out_controller.js'}]\n        export default modules;\n      ", "export 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];\nexport var defaults = {\n    _disable: [],\n    allowInput: false,\n    allowInvalidPreload: 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    autoFillDefaultTime: true,\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    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        date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n        var week1 = new Date(date.getFullYear(), 0, 4);\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    monthSelectorType: \"dropdown\",\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", "export 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    monthAriaLabel: \"Month\",\n    hourAriaLabel: \"Hour\",\n    minuteAriaLabel: \"Minute\",\n    time_24hr: false,\n};\nexport default english;\n", "export var pad = function (number, length) {\n    if (length === void 0) { length = 2; }\n    return (\"000\" + number).slice(length * -1);\n};\nexport var int = function (bool) { return (bool === true ? 1 : 0); };\nexport function debounce(fn, wait) {\n    var t;\n    return function () {\n        var _this = this;\n        var args = arguments;\n        clearTimeout(t);\n        t = setTimeout(function () { return fn.apply(_this, args); }, wait);\n    };\n}\nexport var arrayify = function (obj) {\n    return obj instanceof Array ? obj : [obj];\n};\n", "export function toggleClass(elem, className, bool) {\n    if (bool === true)\n        return elem.classList.add(className);\n    elem.classList.remove(className);\n}\nexport 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}\nexport function clearNode(node) {\n    while (node.firstChild)\n        node.removeChild(node.firstChild);\n}\nexport 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;\n}\nexport 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}\nexport function getEventTarget(event) {\n    try {\n        if (typeof event.composedPath === \"function\") {\n            var path = event.composedPath();\n            return path[0];\n        }\n        return event.target;\n    }\n    catch (error) {\n        return event.target;\n    }\n}\n", "import { int, pad } from \"../utils\";\nvar doNothing = function () { return undefined; };\nexport var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber]; };\nexport var revFormat = {\n    D: doNothing,\n    F: function (dateObj, monthName, locale) {\n        dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n    },\n    G: function (dateObj, hour) {\n        dateObj.setHours((dateObj.getHours() >= 12 ? 12 : 0) + 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, locale) {\n        var weekNumber = parseInt(weekNum);\n        var date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\n        date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);\n        return date;\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((dateObj.getHours() >= 12 ? 12 : 0) + 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: doNothing,\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: doNothing,\n    y: function (dateObj, year) {\n        dateObj.setFullYear(2000 + parseFloat(year));\n    },\n};\nexport var tokenRegex = {\n    D: \"\",\n    F: \"\",\n    G: \"(\\\\d\\\\d|\\\\d)\",\n    H: \"(\\\\d\\\\d|\\\\d)\",\n    J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n    K: \"\",\n    M: \"\",\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: \"\",\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};\nexport var formats = {\n    Z: function (date) { return date.toISOString(); },\n    D: function (date, locale, options) {\n        return locale.weekdays.shorthand[formats.w(date, locale, options)];\n    },\n    F: function (date, locale, options) {\n        return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n    },\n    G: function (date, locale, options) {\n        return pad(formats.h(date, locale, options));\n    },\n    H: function (date) { return pad(date.getHours()); },\n    J: function (date, locale) {\n        return locale.ordinal !== undefined\n            ? date.getDate() + locale.ordinal(date.getDate())\n            : date.getDate();\n    },\n    K: function (date, locale) { return locale.amPM[int(date.getHours() > 11)]; },\n    M: function (date, locale) {\n        return monthToStr(date.getMonth(), true, locale);\n    },\n    S: function (date) { return pad(date.getSeconds()); },\n    U: function (date) { return date.getTime() / 1000; },\n    W: function (date, _, options) {\n        return options.getWeek(date);\n    },\n    Y: function (date) { return pad(date.getFullYear(), 4); },\n    d: function (date) { return pad(date.getDate()); },\n    h: function (date) { return (date.getHours() % 12 ? date.getHours() % 12 : 12); },\n    i: function (date) { return pad(date.getMinutes()); },\n    j: function (date) { return date.getDate(); },\n    l: function (date, locale) {\n        return locale.weekdays.longhand[date.getDay()];\n    },\n    m: function (date) { return pad(date.getMonth() + 1); },\n    n: function (date) { return date.getMonth() + 1; },\n    s: function (date) { return date.getSeconds(); },\n    u: function (date) { return date.getTime(); },\n    w: function (date) { return date.getDay(); },\n    y: function (date) { return String(date.getFullYear()).substring(2); },\n};\n", "import { tokenRegex, revFormat, formats, } from \"./formatting\";\nimport { defaults } from \"../types/options\";\nimport { english } from \"../l10n/default\";\nexport var createDateFormatter = function (_a) {\n    var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c, _d = _a.isMobile, isMobile = _d === void 0 ? false : _d;\n    return function (dateObj, frmt, overrideLocale) {\n        var locale = overrideLocale || l10n;\n        if (config.formatDate !== undefined && !isMobile) {\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};\nexport 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 dateOrig = date;\n        if (date instanceof Date)\n            parsedDate = new Date(date.getTime());\n        else if (typeof date !== \"string\" &&\n            date.toFixed !== undefined)\n            parsedDate = new Date(date);\n        else if (typeof 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 (config && config.parseDate) {\n                parsedDate = config.parseDate(date, format);\n            }\n            else if (/Z$/.test(datestr) ||\n                /GMT$/.test(datestr)) {\n                parsedDate = new Date(date);\n            }\n            else {\n                var matched = void 0, ops = [];\n                for (var i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n                    var token = format[i];\n                    var isBackSlash = token === \"\\\\\";\n                    var escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n                    if (tokenRegex[token] && !escaped) {\n                        regexStr += tokenRegex[token];\n                        var match = new RegExp(regexStr).exec(date);\n                        if (match && (matched = true)) {\n                            ops[token !== \"Y\" ? \"push\" : \"unshift\"]({\n                                fn: revFormat[token],\n                                val: match[++matchIndex],\n                            });\n                        }\n                    }\n                    else if (!isBackSlash)\n                        regexStr += \".\";\n                }\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                ops.forEach(function (_a) {\n                    var fn = _a.fn, val = _a.val;\n                    return (parsedDate = fn(parsedDate, val, locale) || parsedDate);\n                });\n                parsedDate = matched ? parsedDate : undefined;\n            }\n        }\n        if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n            config.errorHandler(new Error(\"Invalid date provided: \" + dateOrig));\n            return undefined;\n        }\n        if (timeless === true)\n            parsedDate.setHours(0, 0, 0, 0);\n        return parsedDate;\n    };\n};\nexport 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}\nexport function compareTimes(date1, date2) {\n    return (3600 * (date1.getHours() - date2.getHours()) +\n        60 * (date1.getMinutes() - date2.getMinutes()) +\n        date1.getSeconds() -\n        date2.getSeconds());\n}\nexport var isBetween = function (ts, ts1, ts2) {\n    return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n};\nexport var calculateSecondsSinceMidnight = function (hours, minutes, seconds) {\n    return hours * 3600 + minutes * 60 + seconds;\n};\nexport var parseSeconds = function (secondsSinceMidnight) {\n    var hours = Math.floor(secondsSinceMidnight / 3600), minutes = (secondsSinceMidnight - hours * 3600) / 60;\n    return [hours, minutes, secondsSinceMidnight - hours * 3600 - minutes * 60];\n};\nexport var duration = {\n    DAY: 86400000,\n};\nexport function getDefaultHours(config) {\n    var hours = config.defaultHour;\n    var minutes = config.defaultMinute;\n    var seconds = config.defaultSeconds;\n    if (config.minDate !== undefined) {\n        var minHour = config.minDate.getHours();\n        var minMinutes = config.minDate.getMinutes();\n        var minSeconds = config.minDate.getSeconds();\n        if (hours < minHour) {\n            hours = minHour;\n        }\n        if (hours === minHour && minutes < minMinutes) {\n            minutes = minMinutes;\n        }\n        if (hours === minHour && minutes === minMinutes && seconds < minSeconds)\n            seconds = config.minDate.getSeconds();\n    }\n    if (config.maxDate !== undefined) {\n        var maxHr = config.maxDate.getHours();\n        var maxMinutes = config.maxDate.getMinutes();\n        hours = Math.min(hours, maxHr);\n        if (hours === maxHr)\n            minutes = Math.min(maxMinutes, minutes);\n        if (hours === maxHr && minutes === maxMinutes)\n            seconds = config.maxDate.getSeconds();\n    }\n    return { hours: hours, minutes: minutes, seconds: seconds };\n}\n", "\"use strict\";\nif (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", "var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n            r[k] = a[j];\n    return r;\n};\nimport { defaults as defaultOptions, HOOKS, } from \"./types/options\";\nimport English from \"./l10n/default\";\nimport { arrayify, debounce, int, pad } from \"./utils\";\nimport { clearNode, createElement, createNumberInput, findParent, toggleClass, getEventTarget, } from \"./utils/dom\";\nimport { compareDates, createDateParser, createDateFormatter, duration, isBetween, getDefaultHours, calculateSecondsSinceMidnight, parseSeconds, } from \"./utils/dates\";\nimport { tokenRegex, monthToStr } from \"./utils/formatting\";\nimport \"./utils/polyfills\";\nvar DEBOUNCED_CHANGE_MS = 300;\nfunction FlatpickrInstance(element, instanceConfig) {\n    var self = {\n        config: __assign(__assign({}, defaultOptions), flatpickr.defaultConfig),\n        l10n: English,\n    };\n    self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n    self._handlers = [];\n    self.pluginElements = [];\n    self.loadedPlugins = [];\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.onMouseOver = onMouseOver;\n    self._createElement = createElement;\n    self.createDay = createDay;\n    self.destroy = destroy;\n    self.isEnabled = isEnabled;\n    self.jumpToDate = jumpToDate;\n    self.updateValue = updateValue;\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 ? self.latestSelectedDateObj : undefined);\n            }\n            updateValue(false);\n        }\n        setCalendarWidth();\n        var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n        if (!self.isMobile && isSafari) {\n            positionCalendar();\n        }\n        triggerEvent(\"onReady\");\n    }\n    function getClosestActiveElement() {\n        var _a;\n        return (((_a = self.calendarContainer) === null || _a === void 0 ? void 0 : _a.getRootNode())\n            .activeElement || document.activeElement);\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        }\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    function updateTime(e) {\n        if (self.selectedDates.length === 0) {\n            var defaultDate = self.config.minDate === undefined ||\n                compareDates(new Date(), self.config.minDate) >= 0\n                ? new Date()\n                : new Date(self.config.minDate.getTime());\n            var defaults = getDefaultHours(self.config);\n            defaultDate.setHours(defaults.hours, defaults.minutes, defaults.seconds, defaultDate.getMilliseconds());\n            self.selectedDates = [defaultDate];\n            self.latestSelectedDateObj = defaultDate;\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    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 (self.config.maxTime !== undefined &&\n            self.config.minTime !== undefined &&\n            self.config.minTime > self.config.maxTime) {\n            var minBound = calculateSecondsSinceMidnight(self.config.minTime.getHours(), self.config.minTime.getMinutes(), self.config.minTime.getSeconds());\n            var maxBound = calculateSecondsSinceMidnight(self.config.maxTime.getHours(), self.config.maxTime.getMinutes(), self.config.maxTime.getSeconds());\n            var currentTime = calculateSecondsSinceMidnight(hours, minutes, seconds);\n            if (currentTime > maxBound && currentTime < minBound) {\n                var result = parseSeconds(minBound);\n                hours = result[0];\n                minutes = result[1];\n                seconds = result[2];\n            }\n        }\n        else {\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() && minutes < minTime.getMinutes())\n                    minutes = minTime.getMinutes();\n                if (minutes === minTime.getMinutes())\n                    seconds = Math.max(seconds, minTime.getSeconds());\n            }\n        }\n        setHours(hours, minutes, seconds);\n    }\n    function setHoursFromDate(dateObj) {\n        var date = dateObj || self.latestSelectedDateObj;\n        if (date && date instanceof Date) {\n            setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n        }\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    function onYearInput(event) {\n        var eventTarget = getEventTarget(event);\n        var year = parseInt(eventTarget.value) + (event.delta || 0);\n        if (year / 1000 > 1 ||\n            (event.key === \"Enter\" && !/[^\\d]/.test(year.toString()))) {\n            changeYear(year);\n        }\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            remove: function () { return element.removeEventListener(event, handler, options); },\n        });\n    }\n    function triggerChange() {\n        triggerEvent(\"onChange\");\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(getEventTarget(e));\n            });\n        bind(self._input, \"keydown\", onKeyDown);\n        if (self.calendarContainer !== undefined) {\n            bind(self.calendarContainer, \"keydown\", onKeyDown);\n        }\n        if (!self.config.inline && !self.config.static)\n            bind(window, \"resize\", debouncedResize);\n        if (window.ontouchstart !== undefined)\n            bind(window.document, \"touchstart\", documentClick);\n        else\n            bind(window.document, \"mousedown\", 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, \"click\", self.open);\n        }\n        if (self.daysContainer !== undefined) {\n            bind(self.monthNav, \"click\", onMonthNavClick);\n            bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n            bind(self.daysContainer, \"click\", selectDate);\n        }\n        if (self.timeContainer !== undefined &&\n            self.minuteElement !== undefined &&\n            self.hourElement !== undefined) {\n            var selText = function (e) {\n                return getEventTarget(e).select();\n            };\n            bind(self.timeContainer, [\"increment\"], updateTime);\n            bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n            bind(self.timeContainer, \"click\", 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, \"click\", function (e) {\n                    updateTime(e);\n                });\n            }\n        }\n        if (self.config.allowInput) {\n            bind(self._input, \"blur\", onBlur);\n        }\n    }\n    function jumpToDate(jumpDate, triggerChange) {\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        var oldYear = self.currentYear;\n        var oldMonth = self.currentMonth;\n        try {\n            if (jumpTo !== undefined) {\n                self.currentYear = jumpTo.getFullYear();\n                self.currentMonth = jumpTo.getMonth();\n            }\n        }\n        catch (e) {\n            e.message = \"Invalid date supplied: \" + jumpTo;\n            self.config.errorHandler(e);\n        }\n        if (triggerChange && self.currentYear !== oldYear) {\n            triggerEvent(\"onYearChange\");\n            buildMonthSwitch();\n        }\n        if (triggerChange &&\n            (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {\n            triggerEvent(\"onMonthChange\");\n        }\n        self.redraw();\n    }\n    function timeIncrement(e) {\n        var eventTarget = getEventTarget(e);\n        if (~eventTarget.className.indexOf(\"arrow\"))\n            incrementNumInput(e, eventTarget.classList.contains(\"arrowUp\") ? 1 : -1);\n    }\n    function incrementNumInput(e, delta, inputElem) {\n        var target = e && getEventTarget(e);\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\", 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(\"flatpickr-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            i % 7 === 6) {\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 activeElement = getClosestActiveElement();\n        var dayFocused = isInView(activeElement || document.body);\n        var startElem = current !== undefined\n            ? current\n            : dayFocused\n                ? 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            self._input.focus();\n        }\n        else if (!dayFocused) {\n            focusOnDayElem(startElem);\n        }\n        else {\n            getNextAvailableDay(startElem, offset);\n        }\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, year);\n        var daysInMonth = self.utils.getDaysInMonth(month, year), 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        for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n            days.appendChild(createDay(\"flatpickr-day \" + prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n        }\n        for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n            days.appendChild(createDay(\"flatpickr-day\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n        }\n        for (var dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n            (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n            days.appendChild(createDay(\"flatpickr-day \" + nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n        }\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        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 buildMonthSwitch() {\n        if (self.config.showMonths > 1 ||\n            self.config.monthSelectorType !== \"dropdown\")\n            return;\n        var shouldBuildMonth = function (month) {\n            if (self.config.minDate !== undefined &&\n                self.currentYear === self.config.minDate.getFullYear() &&\n                month < self.config.minDate.getMonth()) {\n                return false;\n            }\n            return !(self.config.maxDate !== undefined &&\n                self.currentYear === self.config.maxDate.getFullYear() &&\n                month > self.config.maxDate.getMonth());\n        };\n        self.monthsDropdownContainer.tabIndex = -1;\n        self.monthsDropdownContainer.innerHTML = \"\";\n        for (var i = 0; i < 12; i++) {\n            if (!shouldBuildMonth(i))\n                continue;\n            var month = createElement(\"option\", \"flatpickr-monthDropdown-month\");\n            month.value = new Date(self.currentYear, i).getMonth().toString();\n            month.textContent = monthToStr(i, self.config.shorthandCurrentMonth, self.l10n);\n            month.tabIndex = -1;\n            if (self.currentMonth === i) {\n                month.selected = true;\n            }\n            self.monthsDropdownContainer.appendChild(month);\n        }\n    }\n    function buildMonth() {\n        var container = createElement(\"div\", \"flatpickr-month\");\n        var monthNavFragment = window.document.createDocumentFragment();\n        var monthElement;\n        if (self.config.showMonths > 1 ||\n            self.config.monthSelectorType === \"static\") {\n            monthElement = createElement(\"span\", \"cur-month\");\n        }\n        else {\n            self.monthsDropdownContainer = createElement(\"select\", \"flatpickr-monthDropdown-months\");\n            self.monthsDropdownContainer.setAttribute(\"aria-label\", self.l10n.monthAriaLabel);\n            bind(self.monthsDropdownContainer, \"change\", function (e) {\n                var target = getEventTarget(e);\n                var selectedMonth = parseInt(target.value, 10);\n                self.changeMonth(selectedMonth - self.currentMonth);\n                triggerEvent(\"onMonthChange\");\n            });\n            buildMonthSwitch();\n            monthElement = self.monthsDropdownContainer;\n        }\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, \"flatpickr-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, \"flatpickr-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        var defaults = getDefaultHours(self.config);\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            \"aria-label\": self.l10n.hourAriaLabel,\n        });\n        self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n        var minuteInput = createNumberInput(\"flatpickr-minute\", {\n            \"aria-label\": self.l10n.minuteAriaLabel,\n        });\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                ? defaults.hours\n                : military2ampm(defaults.hours));\n        self.minuteElement.value = pad(self.latestSelectedDateObj\n            ? self.latestSelectedDateObj.getMinutes()\n            : defaults.minutes);\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.hourElement.setAttribute(\"maxlength\", \"2\");\n        self.minuteElement.setAttribute(\"min\", \"0\");\n        self.minuteElement.setAttribute(\"max\", \"59\");\n        self.minuteElement.setAttribute(\"maxlength\", \"2\");\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                : defaults.seconds);\n            self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n            self.secondElement.setAttribute(\"min\", \"0\");\n            self.secondElement.setAttribute(\"max\", \"59\");\n            self.secondElement.setAttribute(\"maxlength\", \"2\");\n            self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n            self.timeContainer.appendChild(secondInput);\n        }\n        if (!self.config.time_24hr) {\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        if (!self.weekdayContainer) {\n            return;\n        }\n        var firstDayOfWeek = self.l10n.firstDayOfWeek;\n        var weekdays = __spreadArrays(self.l10n.weekdays.shorthand);\n        if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n            weekdays = __spreadArrays(weekdays.splice(firstDayOfWeek, weekdays.length), 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    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, isOffset) {\n        if (isOffset === void 0) { isOffset = true; }\n        var delta = isOffset ? 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            buildMonthSwitch();\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        if (self.config.enableTime === true) {\n            var _a = getDefaultHours(self.config), hours = _a.hours, minutes = _a.minutes, seconds = _a.seconds;\n            setHours(hours, minutes, seconds);\n        }\n        self.redraw();\n        if (triggerChangeEvent)\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            self._handlers[i].remove();\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        }\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            \"monthsDropdownContainer\",\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        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                (e.path &&\n                    e.path.indexOf &&\n                    (~e.path.indexOf(self.input) ||\n                        ~e.path.indexOf(self.altInput)));\n            var lostFocus = !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                if (self.config.allowInput) {\n                    self.setDate(self._input.value, false, self.config.altInput\n                        ? self.config.altFormat\n                        : self.config.dateFormat);\n                }\n                if (self.timeContainer !== undefined &&\n                    self.minuteElement !== undefined &&\n                    self.hourElement !== undefined &&\n                    self.input.value !== \"\" &&\n                    self.input.value !== undefined) {\n                    updateTime();\n                }\n                self.close();\n                if (self.config &&\n                    self.config.mode === \"range\" &&\n                    self.selectedDates.length === 1)\n                    self.clear(false);\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            buildMonthSwitch();\n        }\n    }\n    function isEnabled(date, timeless) {\n        var _a;\n        if (timeless === void 0) { timeless = true; }\n        var dateToCheck = self.parseDate(date, undefined, 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 && self.config.disable.length === 0)\n            return true;\n        if (dateToCheck === undefined)\n            return false;\n        var bool = !!self.config.enable, array = (_a = self.config.enable) !== null && _a !== void 0 ? _a : 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))\n                return bool;\n            else if (d instanceof Date &&\n                dateToCheck !== undefined &&\n                d.getTime() === dateToCheck.getTime())\n                return bool;\n            else if (typeof d === \"string\") {\n                var parsed = self.parseDate(d, undefined, true);\n                return parsed && parsed.getTime() === dateToCheck.getTime()\n                    ? bool\n                    : !bool;\n            }\n            else if (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                elem.className.indexOf(\"flatpickr-disabled\") === -1 &&\n                self.daysContainer.contains(elem));\n        return false;\n    }\n    function onBlur(e) {\n        var isInput = e.target === self._input;\n        var valueChanged = self._input.value.trimEnd() !== getDateStr();\n        if (isInput &&\n            valueChanged &&\n            !(e.relatedTarget && isCalendarElem(e.relatedTarget))) {\n            self.setDate(self._input.value, true, e.target === self.altInput\n                ? self.config.altFormat\n                : self.config.dateFormat);\n        }\n    }\n    function onKeyDown(e) {\n        var eventTarget = getEventTarget(e);\n        var isInput = self.config.wrap\n            ? element.contains(eventTarget)\n            : eventTarget === 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, eventTarget === self.altInput\n                    ? self.config.altFormat\n                    : self.config.dateFormat);\n                self.close();\n                return eventTarget.blur();\n            }\n            else {\n                self.open();\n            }\n        }\n        else if (isCalendarElem(eventTarget) ||\n            allowKeydown ||\n            allowInlineKeydown) {\n            var isTimeObj = !!self.timeContainer &&\n                self.timeContainer.contains(eventTarget);\n            switch (e.keyCode) {\n                case 13:\n                    if (isTimeObj) {\n                        e.preventDefault();\n                        updateTime();\n                        focusAndClose();\n                    }\n                    else\n                        selectDate(e);\n                    break;\n                case 27:\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 && !isInput) {\n                        e.preventDefault();\n                        var activeElement = getClosestActiveElement();\n                        if (self.daysContainer !== undefined &&\n                            (allowInput === false ||\n                                (activeElement && isInView(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 &&\n                        eventTarget.$i !== undefined) ||\n                        eventTarget === self.input ||\n                        eventTarget === self.altInput) {\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 (eventTarget === self.currentYearElement) {\n                        changeYear(self.currentYear - delta);\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                        ]\n                            .concat(self.pluginElements)\n                            .filter(function (x) { return x; });\n                        var i = elems.indexOf(eventTarget);\n                        if (i !== -1) {\n                            var target = elems[i + (e.shiftKey ? -1 : 1)];\n                            e.preventDefault();\n                            (target || self._input).focus();\n                        }\n                    }\n                    else if (!self.config.noCalendar &&\n                        self.daysContainer &&\n                        self.daysContainer.contains(eventTarget) &&\n                        e.shiftKey) {\n                        e.preventDefault();\n                        self._input.focus();\n                    }\n                    break;\n                default:\n                    break;\n            }\n        }\n        if (self.amPM !== undefined && eventTarget === 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        if (isInput || isCalendarElem(eventTarget)) {\n            triggerEvent(\"onKeyDown\", e);\n        }\n    }\n    function onMouseOver(elem, cellClass) {\n        if (cellClass === void 0) { cellClass = \"flatpickr-day\"; }\n        if (self.selectedDates.length !== 1 ||\n            (elem &&\n                (!elem.classList.contains(cellClass) ||\n                    elem.classList.contains(\"flatpickr-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());\n        var containsDisabled = false;\n        var minRange = 0, maxRange = 0;\n        for (var t = rangeStartDate; t < rangeEndDate; 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        var hoverableCells = Array.from(self.rContainer.querySelectorAll(\"*:nth-child(-n+\" + self.config.showMonths + \") > .\" + cellClass));\n        hoverableCells.forEach(function (dayElem) {\n            var 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;\n            }\n            else if (containsDisabled && !outOfRange)\n                return;\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 (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    function onResize() {\n        if (self.isOpen && !self.config.static && !self.config.inline)\n            positionCalendar();\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                var eventTarget = getEventTarget(e);\n                if (eventTarget) {\n                    eventTarget.blur();\n                }\n            }\n            if (self.mobileInput !== undefined) {\n                self.mobileInput.focus();\n                self.mobileInput.click();\n            }\n            triggerEvent(\"onOpen\");\n            return;\n        }\n        else if (self._input.disabled || self.config.inline) {\n            return;\n        }\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.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            \"allowInvalidPreload\",\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(__assign({}, JSON.parse(JSON.stringify(element.dataset || {}))), instanceConfig);\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            var defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaultOptions.dateFormat;\n            formats.dateFormat =\n                userConfig.noCalendar || timeMode\n                    ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\")\n                    : defaultDateFormat + \" H:i\" + (userConfig.enableSeconds ? \":S\" : \"\");\n        }\n        if (userConfig.altInput &&\n            (userConfig.enableTime || timeMode) &&\n            !userConfig.altFormat) {\n            var defaultAltFormat = flatpickr.defaultConfig.altFormat || defaultOptions.altFormat;\n            formats.altFormat =\n                userConfig.noCalendar || timeMode\n                    ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\")\n                    : defaultAltFormat + (\" 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:S\");\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 &&\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        if (!userConfig.altInputClass) {\n            self.config.altInputClass =\n                getInputElem().className + \" \" + self.config.altInputClass;\n        }\n        triggerEvent(\"onParseConfig\");\n    }\n    function getInputElem() {\n        return self.config.wrap\n            ? element.querySelector(\"[data-input]\")\n            : element;\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(__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.D = \"(\" + self.l10n.weekdays.shorthand.join(\"|\") + \")\";\n        tokenRegex.l = \"(\" + self.l10n.weekdays.longhand.join(\"|\") + \")\";\n        tokenRegex.M = \"(\" + self.l10n.months.shorthand.join(\"|\") + \")\";\n        tokenRegex.F = \"(\" + self.l10n.months.longhand.join(\"|\") + \")\";\n        tokenRegex.K = \"(\" + self.l10n.amPM[0] + \"|\" + self.l10n.amPM[1] + \"|\" + self.l10n.amPM[0].toLowerCase() + \"|\" + self.l10n.amPM[1].toLowerCase() + \")\";\n        var userConfig = __assign(__assign({}, instanceConfig), JSON.parse(JSON.stringify(element.dataset || {})));\n        if (userConfig.time_24hr === undefined &&\n            flatpickr.defaultConfig.time_24hr === undefined) {\n            self.config.time_24hr = self.l10n.time_24hr;\n        }\n        self.formatDate = createDateFormatter(self);\n        self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n    }\n    function positionCalendar(customPositionElement) {\n        if (typeof self.config.position === \"function\") {\n            return void self.config.position(self, customPositionElement);\n        }\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 + inputBounds.left;\n        var isCenter = false;\n        var isRight = false;\n        if (configPosHorizontal === \"center\") {\n            left -= (calendarWidth - inputBounds.width) / 2;\n            isCenter = true;\n        }\n        else if (configPosHorizontal === \"right\") {\n            left -= calendarWidth - inputBounds.width;\n            isRight = true;\n        }\n        toggleClass(self.calendarContainer, \"arrowLeft\", !isCenter && !isRight);\n        toggleClass(self.calendarContainer, \"arrowCenter\", isCenter);\n        toggleClass(self.calendarContainer, \"arrowRight\", isRight);\n        var right = window.document.body.offsetWidth -\n            (window.pageXOffset + 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 = getDocumentStyleSheet();\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 getDocumentStyleSheet() {\n        var editableSheet = null;\n        for (var i = 0; i < document.styleSheets.length; i++) {\n            var sheet = document.styleSheets[i];\n            if (!sheet.cssRules)\n                continue;\n            try {\n                sheet.cssRules;\n            }\n            catch (err) {\n                continue;\n            }\n            editableSheet = sheet;\n            break;\n        }\n        return editableSheet != null ? editableSheet : createStyleSheet();\n    }\n    function createStyleSheet() {\n        var style = document.createElement(\"style\");\n        document.head.appendChild(style);\n        return style.sheet;\n    }\n    function redraw() {\n        if (self.config.noCalendar || self.isMobile)\n            return;\n        buildMonthSwitch();\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            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(\"flatpickr-disabled\") &&\n                !day.classList.contains(\"notAllowed\");\n        };\n        var t = findParent(getEventTarget(e), 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            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                buildMonthSwitch();\n            }\n            triggerEvent(\"onMonthChange\");\n        }\n        updateNavigationCurrentMonth();\n        buildDays();\n        updateValue();\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        minDate: [jumpToDate],\n        maxDate: [jumpToDate],\n        positionElement: [updatePositionElement],\n        clickOpens: [\n            function () {\n                if (self.config.clickOpens === true) {\n                    bind(self._input, \"focus\", self.open);\n                    bind(self._input, \"click\", self.open);\n                }\n                else {\n                    self._input.removeEventListener(\"focus\", self.open);\n                    self._input.removeEventListener(\"click\", self.open);\n                }\n            },\n        ],\n    };\n    function set(option, value) {\n        if (option !== null && typeof option === \"object\") {\n            Object.assign(self.config, option);\n            for (var key in option) {\n                if (CALLBACKS[key] !== undefined)\n                    CALLBACKS[key].forEach(function (x) { return x(); });\n            }\n        }\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(true);\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 = (self.config.allowInvalidPreload\n            ? dates\n            : 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.latestSelectedDateObj =\n            self.selectedDates[self.selectedDates.length - 1];\n        self.redraw();\n        jumpToDate(undefined, triggerChange);\n        setHoursFromDate();\n        if (self.selectedDates.length === 0) {\n            self.clear(false);\n        }\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; });\n    }\n    function setupDates() {\n        self.selectedDates = [];\n        self.now = self.parseDate(self.config.now) || new Date();\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    }\n    function setupInputs() {\n        self.input = getInputElem();\n        if (!self.input) {\n            self.config.errorHandler(new Error(\"Invalid input element specified\"));\n            return;\n        }\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            self.altInput = createElement(self.input.nodeName, 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        updatePositionElement();\n    }\n    function updatePositionElement() {\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.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        if (self.input.getAttribute(\"step\"))\n            self.mobileInput.step = String(self.input.getAttribute(\"step\"));\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(getEventTarget(e).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 (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            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            var selectedDate = self.selectedDates[i];\n            if (selectedDate instanceof Date &&\n                compareDates(selectedDate, 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            if (self.config.showMonths > 1 ||\n                self.config.monthSelectorType === \"static\") {\n                self.monthElements[i].textContent =\n                    monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + \" \";\n            }\n            else {\n                self.monthsDropdownContainer.value = d.getMonth().toString();\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(specificFormat) {\n        var format = specificFormat ||\n            (self.config.altInput ? self.config.altFormat : self.config.dateFormat);\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    function updateValue(triggerChange) {\n        if (triggerChange === void 0) { triggerChange = true; }\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        var eventTarget = getEventTarget(e);\n        var isPrevMonth = self.prevMonthNav.contains(eventTarget);\n        var isNextMonth = self.nextMonthNav.contains(eventTarget);\n        if (isPrevMonth || isNextMonth) {\n            changeMonth(isPrevMonth ? -1 : 1);\n        }\n        else if (self.yearElements.indexOf(eventTarget) >= 0) {\n            eventTarget.select();\n        }\n        else if (eventTarget.classList.contains(\"arrowUp\")) {\n            self.changeYear(self.currentYear + 1);\n        }\n        else if (eventTarget.classList.contains(\"arrowDown\")) {\n            self.changeYear(self.currentYear - 1);\n        }\n    }\n    function timeWrapper(e) {\n        e.preventDefault();\n        var isKeyDown = e.type === \"keydown\", eventTarget = getEventTarget(e), input = eventTarget;\n        if (self.amPM !== undefined && eventTarget === 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}\nfunction _flatpickr(nodeList, config) {\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}\nif (typeof HTMLElement !== \"undefined\" &&\n    typeof HTMLCollection !== \"undefined\" &&\n    typeof NodeList !== \"undefined\") {\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}\nvar 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};\nflatpickr.defaultConfig = {};\nflatpickr.l10ns = {\n    en: __assign({}, English),\n    default: __assign({}, English),\n};\nflatpickr.localize = function (l10n) {\n    flatpickr.l10ns.default = __assign(__assign({}, flatpickr.l10ns.default), l10n);\n};\nflatpickr.setDefaults = function (config) {\n    flatpickr.defaultConfig = __assign(__assign({}, flatpickr.defaultConfig), config);\n};\nflatpickr.parseDate = createDateParser({});\nflatpickr.formatDate = createDateFormatter({});\nflatpickr.compareDates = compareDates;\nif (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n    jQuery.fn.flatpickr = function (config) {\n        return _flatpickr(this, config);\n    };\n}\nDate.prototype.fp_incr = function (days) {\n    return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n};\nif (typeof window !== \"undefined\") {\n    window.flatpickr = flatpickr;\n}\nexport default flatpickr;\n", "/*\nStimulus 3.0.0\nCopyright © 2021 Basecamp, LLC\n */\nclass EventListener {\n    constructor(eventTarget, eventName, eventOptions) {\n        this.eventTarget = eventTarget;\n        this.eventName = eventName;\n        this.eventOptions = eventOptions;\n        this.unorderedBindings = new Set();\n    }\n    connect() {\n        this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n    }\n    disconnect() {\n        this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n    }\n    bindingConnected(binding) {\n        this.unorderedBindings.add(binding);\n    }\n    bindingDisconnected(binding) {\n        this.unorderedBindings.delete(binding);\n    }\n    handleEvent(event) {\n        const extendedEvent = extendEvent(event);\n        for (const binding of this.bindings) {\n            if (extendedEvent.immediatePropagationStopped) {\n                break;\n            }\n            else {\n                binding.handleEvent(extendedEvent);\n            }\n        }\n    }\n    get bindings() {\n        return Array.from(this.unorderedBindings).sort((left, right) => {\n            const leftIndex = left.index, rightIndex = right.index;\n            return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n        });\n    }\n}\nfunction extendEvent(event) {\n    if (\"immediatePropagationStopped\" in event) {\n        return event;\n    }\n    else {\n        const { stopImmediatePropagation } = event;\n        return Object.assign(event, {\n            immediatePropagationStopped: false,\n            stopImmediatePropagation() {\n                this.immediatePropagationStopped = true;\n                stopImmediatePropagation.call(this);\n            }\n        });\n    }\n}\n\nclass Dispatcher {\n    constructor(application) {\n        this.application = application;\n        this.eventListenerMaps = new Map;\n        this.started = false;\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.eventListeners.forEach(eventListener => eventListener.connect());\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.started = false;\n            this.eventListeners.forEach(eventListener => eventListener.disconnect());\n        }\n    }\n    get eventListeners() {\n        return Array.from(this.eventListenerMaps.values())\n            .reduce((listeners, map) => listeners.concat(Array.from(map.values())), []);\n    }\n    bindingConnected(binding) {\n        this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n    }\n    bindingDisconnected(binding) {\n        this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n    }\n    handleError(error, message, detail = {}) {\n        this.application.handleError(error, `Error ${message}`, detail);\n    }\n    fetchEventListenerForBinding(binding) {\n        const { eventTarget, eventName, eventOptions } = binding;\n        return this.fetchEventListener(eventTarget, eventName, eventOptions);\n    }\n    fetchEventListener(eventTarget, eventName, eventOptions) {\n        const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n        const cacheKey = this.cacheKey(eventName, eventOptions);\n        let eventListener = eventListenerMap.get(cacheKey);\n        if (!eventListener) {\n            eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n            eventListenerMap.set(cacheKey, eventListener);\n        }\n        return eventListener;\n    }\n    createEventListener(eventTarget, eventName, eventOptions) {\n        const eventListener = new EventListener(eventTarget, eventName, eventOptions);\n        if (this.started) {\n            eventListener.connect();\n        }\n        return eventListener;\n    }\n    fetchEventListenerMapForEventTarget(eventTarget) {\n        let eventListenerMap = this.eventListenerMaps.get(eventTarget);\n        if (!eventListenerMap) {\n            eventListenerMap = new Map;\n            this.eventListenerMaps.set(eventTarget, eventListenerMap);\n        }\n        return eventListenerMap;\n    }\n    cacheKey(eventName, eventOptions) {\n        const parts = [eventName];\n        Object.keys(eventOptions).sort().forEach(key => {\n            parts.push(`${eventOptions[key] ? \"\" : \"!\"}${key}`);\n        });\n        return parts.join(\":\");\n    }\n}\n\nconst descriptorPattern = /^((.+?)(@(window|document))?->)?(.+?)(#([^:]+?))(:(.+))?$/;\nfunction parseActionDescriptorString(descriptorString) {\n    const source = descriptorString.trim();\n    const matches = source.match(descriptorPattern) || [];\n    return {\n        eventTarget: parseEventTarget(matches[4]),\n        eventName: matches[2],\n        eventOptions: matches[9] ? parseEventOptions(matches[9]) : {},\n        identifier: matches[5],\n        methodName: matches[7]\n    };\n}\nfunction parseEventTarget(eventTargetName) {\n    if (eventTargetName == \"window\") {\n        return window;\n    }\n    else if (eventTargetName == \"document\") {\n        return document;\n    }\n}\nfunction parseEventOptions(eventOptions) {\n    return eventOptions.split(\":\").reduce((options, token) => Object.assign(options, { [token.replace(/^!/, \"\")]: !/^!/.test(token) }), {});\n}\nfunction stringifyEventTarget(eventTarget) {\n    if (eventTarget == window) {\n        return \"window\";\n    }\n    else if (eventTarget == document) {\n        return \"document\";\n    }\n}\n\nfunction camelize(value) {\n    return value.replace(/(?:[_-])([a-z0-9])/g, (_, char) => char.toUpperCase());\n}\nfunction capitalize(value) {\n    return value.charAt(0).toUpperCase() + value.slice(1);\n}\nfunction dasherize(value) {\n    return value.replace(/([A-Z])/g, (_, char) => `-${char.toLowerCase()}`);\n}\nfunction tokenize(value) {\n    return value.match(/[^\\s]+/g) || [];\n}\n\nclass Action {\n    constructor(element, index, descriptor) {\n        this.element = element;\n        this.index = index;\n        this.eventTarget = descriptor.eventTarget || element;\n        this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n        this.eventOptions = descriptor.eventOptions || {};\n        this.identifier = descriptor.identifier || error(\"missing identifier\");\n        this.methodName = descriptor.methodName || error(\"missing method name\");\n    }\n    static forToken(token) {\n        return new this(token.element, token.index, parseActionDescriptorString(token.content));\n    }\n    toString() {\n        const eventNameSuffix = this.eventTargetName ? `@${this.eventTargetName}` : \"\";\n        return `${this.eventName}${eventNameSuffix}->${this.identifier}#${this.methodName}`;\n    }\n    get params() {\n        if (this.eventTarget instanceof Element) {\n            return this.getParamsFromEventTargetAttributes(this.eventTarget);\n        }\n        else {\n            return {};\n        }\n    }\n    getParamsFromEventTargetAttributes(eventTarget) {\n        const params = {};\n        const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`);\n        const attributes = Array.from(eventTarget.attributes);\n        attributes.forEach(({ name, value }) => {\n            const match = name.match(pattern);\n            const key = match && match[1];\n            if (key) {\n                Object.assign(params, { [camelize(key)]: typecast(value) });\n            }\n        });\n        return params;\n    }\n    get eventTargetName() {\n        return stringifyEventTarget(this.eventTarget);\n    }\n}\nconst defaultEventNames = {\n    \"a\": e => \"click\",\n    \"button\": e => \"click\",\n    \"form\": e => \"submit\",\n    \"input\": e => e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\",\n    \"select\": e => \"change\",\n    \"textarea\": e => \"input\"\n};\nfunction getDefaultEventNameForElement(element) {\n    const tagName = element.tagName.toLowerCase();\n    if (tagName in defaultEventNames) {\n        return defaultEventNames[tagName](element);\n    }\n}\nfunction error(message) {\n    throw new Error(message);\n}\nfunction typecast(value) {\n    try {\n        return JSON.parse(value);\n    }\n    catch (o_O) {\n        return value;\n    }\n}\n\nclass Binding {\n    constructor(context, action) {\n        this.context = context;\n        this.action = action;\n    }\n    get index() {\n        return this.action.index;\n    }\n    get eventTarget() {\n        return this.action.eventTarget;\n    }\n    get eventOptions() {\n        return this.action.eventOptions;\n    }\n    get identifier() {\n        return this.context.identifier;\n    }\n    handleEvent(event) {\n        if (this.willBeInvokedByEvent(event)) {\n            this.invokeWithEvent(event);\n        }\n    }\n    get eventName() {\n        return this.action.eventName;\n    }\n    get method() {\n        const method = this.controller[this.methodName];\n        if (typeof method == \"function\") {\n            return method;\n        }\n        throw new Error(`Action \"${this.action}\" references undefined method \"${this.methodName}\"`);\n    }\n    invokeWithEvent(event) {\n        const { target, currentTarget } = event;\n        try {\n            const { params } = this.action;\n            const actionEvent = Object.assign(event, { params });\n            this.method.call(this.controller, actionEvent);\n            this.context.logDebugActivity(this.methodName, { event, target, currentTarget, action: this.methodName });\n        }\n        catch (error) {\n            const { identifier, controller, element, index } = this;\n            const detail = { identifier, controller, element, index, event };\n            this.context.handleError(error, `invoking action \"${this.action}\"`, detail);\n        }\n    }\n    willBeInvokedByEvent(event) {\n        const eventTarget = event.target;\n        if (this.element === eventTarget) {\n            return true;\n        }\n        else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n            return this.scope.containsElement(eventTarget);\n        }\n        else {\n            return this.scope.containsElement(this.action.element);\n        }\n    }\n    get controller() {\n        return this.context.controller;\n    }\n    get methodName() {\n        return this.action.methodName;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get scope() {\n        return this.context.scope;\n    }\n}\n\nclass ElementObserver {\n    constructor(element, delegate) {\n        this.element = element;\n        this.started = false;\n        this.delegate = delegate;\n        this.elements = new Set;\n        this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.mutationObserver.observe(this.element, { attributes: true, childList: true, subtree: true });\n            this.refresh();\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.mutationObserver.takeRecords();\n            this.mutationObserver.disconnect();\n            this.started = false;\n        }\n    }\n    refresh() {\n        if (this.started) {\n            const matches = new Set(this.matchElementsInTree());\n            for (const element of Array.from(this.elements)) {\n                if (!matches.has(element)) {\n                    this.removeElement(element);\n                }\n            }\n            for (const element of Array.from(matches)) {\n                this.addElement(element);\n            }\n        }\n    }\n    processMutations(mutations) {\n        if (this.started) {\n            for (const mutation of mutations) {\n                this.processMutation(mutation);\n            }\n        }\n    }\n    processMutation(mutation) {\n        if (mutation.type == \"attributes\") {\n            this.processAttributeChange(mutation.target, mutation.attributeName);\n        }\n        else if (mutation.type == \"childList\") {\n            this.processRemovedNodes(mutation.removedNodes);\n            this.processAddedNodes(mutation.addedNodes);\n        }\n    }\n    processAttributeChange(node, attributeName) {\n        const element = node;\n        if (this.elements.has(element)) {\n            if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n                this.delegate.elementAttributeChanged(element, attributeName);\n            }\n            else {\n                this.removeElement(element);\n            }\n        }\n        else if (this.matchElement(element)) {\n            this.addElement(element);\n        }\n    }\n    processRemovedNodes(nodes) {\n        for (const node of Array.from(nodes)) {\n            const element = this.elementFromNode(node);\n            if (element) {\n                this.processTree(element, this.removeElement);\n            }\n        }\n    }\n    processAddedNodes(nodes) {\n        for (const node of Array.from(nodes)) {\n            const element = this.elementFromNode(node);\n            if (element && this.elementIsActive(element)) {\n                this.processTree(element, this.addElement);\n            }\n        }\n    }\n    matchElement(element) {\n        return this.delegate.matchElement(element);\n    }\n    matchElementsInTree(tree = this.element) {\n        return this.delegate.matchElementsInTree(tree);\n    }\n    processTree(tree, processor) {\n        for (const element of this.matchElementsInTree(tree)) {\n            processor.call(this, element);\n        }\n    }\n    elementFromNode(node) {\n        if (node.nodeType == Node.ELEMENT_NODE) {\n            return node;\n        }\n    }\n    elementIsActive(element) {\n        if (element.isConnected != this.element.isConnected) {\n            return false;\n        }\n        else {\n            return this.element.contains(element);\n        }\n    }\n    addElement(element) {\n        if (!this.elements.has(element)) {\n            if (this.elementIsActive(element)) {\n                this.elements.add(element);\n                if (this.delegate.elementMatched) {\n                    this.delegate.elementMatched(element);\n                }\n            }\n        }\n    }\n    removeElement(element) {\n        if (this.elements.has(element)) {\n            this.elements.delete(element);\n            if (this.delegate.elementUnmatched) {\n                this.delegate.elementUnmatched(element);\n            }\n        }\n    }\n}\n\nclass AttributeObserver {\n    constructor(element, attributeName, delegate) {\n        this.attributeName = attributeName;\n        this.delegate = delegate;\n        this.elementObserver = new ElementObserver(element, this);\n    }\n    get element() {\n        return this.elementObserver.element;\n    }\n    get selector() {\n        return `[${this.attributeName}]`;\n    }\n    start() {\n        this.elementObserver.start();\n    }\n    stop() {\n        this.elementObserver.stop();\n    }\n    refresh() {\n        this.elementObserver.refresh();\n    }\n    get started() {\n        return this.elementObserver.started;\n    }\n    matchElement(element) {\n        return element.hasAttribute(this.attributeName);\n    }\n    matchElementsInTree(tree) {\n        const match = this.matchElement(tree) ? [tree] : [];\n        const matches = Array.from(tree.querySelectorAll(this.selector));\n        return match.concat(matches);\n    }\n    elementMatched(element) {\n        if (this.delegate.elementMatchedAttribute) {\n            this.delegate.elementMatchedAttribute(element, this.attributeName);\n        }\n    }\n    elementUnmatched(element) {\n        if (this.delegate.elementUnmatchedAttribute) {\n            this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n        }\n    }\n    elementAttributeChanged(element, attributeName) {\n        if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n            this.delegate.elementAttributeValueChanged(element, attributeName);\n        }\n    }\n}\n\nclass StringMapObserver {\n    constructor(element, delegate) {\n        this.element = element;\n        this.delegate = delegate;\n        this.started = false;\n        this.stringMap = new Map;\n        this.mutationObserver = new MutationObserver(mutations => this.processMutations(mutations));\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.mutationObserver.observe(this.element, { attributes: true, attributeOldValue: true });\n            this.refresh();\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.mutationObserver.takeRecords();\n            this.mutationObserver.disconnect();\n            this.started = false;\n        }\n    }\n    refresh() {\n        if (this.started) {\n            for (const attributeName of this.knownAttributeNames) {\n                this.refreshAttribute(attributeName, null);\n            }\n        }\n    }\n    processMutations(mutations) {\n        if (this.started) {\n            for (const mutation of mutations) {\n                this.processMutation(mutation);\n            }\n        }\n    }\n    processMutation(mutation) {\n        const attributeName = mutation.attributeName;\n        if (attributeName) {\n            this.refreshAttribute(attributeName, mutation.oldValue);\n        }\n    }\n    refreshAttribute(attributeName, oldValue) {\n        const key = this.delegate.getStringMapKeyForAttribute(attributeName);\n        if (key != null) {\n            if (!this.stringMap.has(attributeName)) {\n                this.stringMapKeyAdded(key, attributeName);\n            }\n            const value = this.element.getAttribute(attributeName);\n            if (this.stringMap.get(attributeName) != value) {\n                this.stringMapValueChanged(value, key, oldValue);\n            }\n            if (value == null) {\n                const oldValue = this.stringMap.get(attributeName);\n                this.stringMap.delete(attributeName);\n                if (oldValue)\n                    this.stringMapKeyRemoved(key, attributeName, oldValue);\n            }\n            else {\n                this.stringMap.set(attributeName, value);\n            }\n        }\n    }\n    stringMapKeyAdded(key, attributeName) {\n        if (this.delegate.stringMapKeyAdded) {\n            this.delegate.stringMapKeyAdded(key, attributeName);\n        }\n    }\n    stringMapValueChanged(value, key, oldValue) {\n        if (this.delegate.stringMapValueChanged) {\n            this.delegate.stringMapValueChanged(value, key, oldValue);\n        }\n    }\n    stringMapKeyRemoved(key, attributeName, oldValue) {\n        if (this.delegate.stringMapKeyRemoved) {\n            this.delegate.stringMapKeyRemoved(key, attributeName, oldValue);\n        }\n    }\n    get knownAttributeNames() {\n        return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n    }\n    get currentAttributeNames() {\n        return Array.from(this.element.attributes).map(attribute => attribute.name);\n    }\n    get recordedAttributeNames() {\n        return Array.from(this.stringMap.keys());\n    }\n}\n\nfunction add(map, key, value) {\n    fetch(map, key).add(value);\n}\nfunction del(map, key, value) {\n    fetch(map, key).delete(value);\n    prune(map, key);\n}\nfunction fetch(map, key) {\n    let values = map.get(key);\n    if (!values) {\n        values = new Set();\n        map.set(key, values);\n    }\n    return values;\n}\nfunction prune(map, key) {\n    const values = map.get(key);\n    if (values != null && values.size == 0) {\n        map.delete(key);\n    }\n}\n\nclass Multimap {\n    constructor() {\n        this.valuesByKey = new Map();\n    }\n    get keys() {\n        return Array.from(this.valuesByKey.keys());\n    }\n    get values() {\n        const sets = Array.from(this.valuesByKey.values());\n        return sets.reduce((values, set) => values.concat(Array.from(set)), []);\n    }\n    get size() {\n        const sets = Array.from(this.valuesByKey.values());\n        return sets.reduce((size, set) => size + set.size, 0);\n    }\n    add(key, value) {\n        add(this.valuesByKey, key, value);\n    }\n    delete(key, value) {\n        del(this.valuesByKey, key, value);\n    }\n    has(key, value) {\n        const values = this.valuesByKey.get(key);\n        return values != null && values.has(value);\n    }\n    hasKey(key) {\n        return this.valuesByKey.has(key);\n    }\n    hasValue(value) {\n        const sets = Array.from(this.valuesByKey.values());\n        return sets.some(set => set.has(value));\n    }\n    getValuesForKey(key) {\n        const values = this.valuesByKey.get(key);\n        return values ? Array.from(values) : [];\n    }\n    getKeysForValue(value) {\n        return Array.from(this.valuesByKey)\n            .filter(([key, values]) => values.has(value))\n            .map(([key, values]) => key);\n    }\n}\n\nclass IndexedMultimap extends Multimap {\n    constructor() {\n        super();\n        this.keysByValue = new Map;\n    }\n    get values() {\n        return Array.from(this.keysByValue.keys());\n    }\n    add(key, value) {\n        super.add(key, value);\n        add(this.keysByValue, value, key);\n    }\n    delete(key, value) {\n        super.delete(key, value);\n        del(this.keysByValue, value, key);\n    }\n    hasValue(value) {\n        return this.keysByValue.has(value);\n    }\n    getKeysForValue(value) {\n        const set = this.keysByValue.get(value);\n        return set ? Array.from(set) : [];\n    }\n}\n\nclass TokenListObserver {\n    constructor(element, attributeName, delegate) {\n        this.attributeObserver = new AttributeObserver(element, attributeName, this);\n        this.delegate = delegate;\n        this.tokensByElement = new Multimap;\n    }\n    get started() {\n        return this.attributeObserver.started;\n    }\n    start() {\n        this.attributeObserver.start();\n    }\n    stop() {\n        this.attributeObserver.stop();\n    }\n    refresh() {\n        this.attributeObserver.refresh();\n    }\n    get element() {\n        return this.attributeObserver.element;\n    }\n    get attributeName() {\n        return this.attributeObserver.attributeName;\n    }\n    elementMatchedAttribute(element) {\n        this.tokensMatched(this.readTokensForElement(element));\n    }\n    elementAttributeValueChanged(element) {\n        const [unmatchedTokens, matchedTokens] = this.refreshTokensForElement(element);\n        this.tokensUnmatched(unmatchedTokens);\n        this.tokensMatched(matchedTokens);\n    }\n    elementUnmatchedAttribute(element) {\n        this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n    }\n    tokensMatched(tokens) {\n        tokens.forEach(token => this.tokenMatched(token));\n    }\n    tokensUnmatched(tokens) {\n        tokens.forEach(token => this.tokenUnmatched(token));\n    }\n    tokenMatched(token) {\n        this.delegate.tokenMatched(token);\n        this.tokensByElement.add(token.element, token);\n    }\n    tokenUnmatched(token) {\n        this.delegate.tokenUnmatched(token);\n        this.tokensByElement.delete(token.element, token);\n    }\n    refreshTokensForElement(element) {\n        const previousTokens = this.tokensByElement.getValuesForKey(element);\n        const currentTokens = this.readTokensForElement(element);\n        const firstDifferingIndex = zip(previousTokens, currentTokens)\n            .findIndex(([previousToken, currentToken]) => !tokensAreEqual(previousToken, currentToken));\n        if (firstDifferingIndex == -1) {\n            return [[], []];\n        }\n        else {\n            return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n        }\n    }\n    readTokensForElement(element) {\n        const attributeName = this.attributeName;\n        const tokenString = element.getAttribute(attributeName) || \"\";\n        return parseTokenString(tokenString, element, attributeName);\n    }\n}\nfunction parseTokenString(tokenString, element, attributeName) {\n    return tokenString.trim().split(/\\s+/).filter(content => content.length)\n        .map((content, index) => ({ element, attributeName, content, index }));\n}\nfunction zip(left, right) {\n    const length = Math.max(left.length, right.length);\n    return Array.from({ length }, (_, index) => [left[index], right[index]]);\n}\nfunction tokensAreEqual(left, right) {\n    return left && right && left.index == right.index && left.content == right.content;\n}\n\nclass ValueListObserver {\n    constructor(element, attributeName, delegate) {\n        this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n        this.delegate = delegate;\n        this.parseResultsByToken = new WeakMap;\n        this.valuesByTokenByElement = new WeakMap;\n    }\n    get started() {\n        return this.tokenListObserver.started;\n    }\n    start() {\n        this.tokenListObserver.start();\n    }\n    stop() {\n        this.tokenListObserver.stop();\n    }\n    refresh() {\n        this.tokenListObserver.refresh();\n    }\n    get element() {\n        return this.tokenListObserver.element;\n    }\n    get attributeName() {\n        return this.tokenListObserver.attributeName;\n    }\n    tokenMatched(token) {\n        const { element } = token;\n        const { value } = this.fetchParseResultForToken(token);\n        if (value) {\n            this.fetchValuesByTokenForElement(element).set(token, value);\n            this.delegate.elementMatchedValue(element, value);\n        }\n    }\n    tokenUnmatched(token) {\n        const { element } = token;\n        const { value } = this.fetchParseResultForToken(token);\n        if (value) {\n            this.fetchValuesByTokenForElement(element).delete(token);\n            this.delegate.elementUnmatchedValue(element, value);\n        }\n    }\n    fetchParseResultForToken(token) {\n        let parseResult = this.parseResultsByToken.get(token);\n        if (!parseResult) {\n            parseResult = this.parseToken(token);\n            this.parseResultsByToken.set(token, parseResult);\n        }\n        return parseResult;\n    }\n    fetchValuesByTokenForElement(element) {\n        let valuesByToken = this.valuesByTokenByElement.get(element);\n        if (!valuesByToken) {\n            valuesByToken = new Map;\n            this.valuesByTokenByElement.set(element, valuesByToken);\n        }\n        return valuesByToken;\n    }\n    parseToken(token) {\n        try {\n            const value = this.delegate.parseValueForToken(token);\n            return { value };\n        }\n        catch (error) {\n            return { error };\n        }\n    }\n}\n\nclass BindingObserver {\n    constructor(context, delegate) {\n        this.context = context;\n        this.delegate = delegate;\n        this.bindingsByAction = new Map;\n    }\n    start() {\n        if (!this.valueListObserver) {\n            this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n            this.valueListObserver.start();\n        }\n    }\n    stop() {\n        if (this.valueListObserver) {\n            this.valueListObserver.stop();\n            delete this.valueListObserver;\n            this.disconnectAllActions();\n        }\n    }\n    get element() {\n        return this.context.element;\n    }\n    get identifier() {\n        return this.context.identifier;\n    }\n    get actionAttribute() {\n        return this.schema.actionAttribute;\n    }\n    get schema() {\n        return this.context.schema;\n    }\n    get bindings() {\n        return Array.from(this.bindingsByAction.values());\n    }\n    connectAction(action) {\n        const binding = new Binding(this.context, action);\n        this.bindingsByAction.set(action, binding);\n        this.delegate.bindingConnected(binding);\n    }\n    disconnectAction(action) {\n        const binding = this.bindingsByAction.get(action);\n        if (binding) {\n            this.bindingsByAction.delete(action);\n            this.delegate.bindingDisconnected(binding);\n        }\n    }\n    disconnectAllActions() {\n        this.bindings.forEach(binding => this.delegate.bindingDisconnected(binding));\n        this.bindingsByAction.clear();\n    }\n    parseValueForToken(token) {\n        const action = Action.forToken(token);\n        if (action.identifier == this.identifier) {\n            return action;\n        }\n    }\n    elementMatchedValue(element, action) {\n        this.connectAction(action);\n    }\n    elementUnmatchedValue(element, action) {\n        this.disconnectAction(action);\n    }\n}\n\nclass ValueObserver {\n    constructor(context, receiver) {\n        this.context = context;\n        this.receiver = receiver;\n        this.stringMapObserver = new StringMapObserver(this.element, this);\n        this.valueDescriptorMap = this.controller.valueDescriptorMap;\n        this.invokeChangedCallbacksForDefaultValues();\n    }\n    start() {\n        this.stringMapObserver.start();\n    }\n    stop() {\n        this.stringMapObserver.stop();\n    }\n    get element() {\n        return this.context.element;\n    }\n    get controller() {\n        return this.context.controller;\n    }\n    getStringMapKeyForAttribute(attributeName) {\n        if (attributeName in this.valueDescriptorMap) {\n            return this.valueDescriptorMap[attributeName].name;\n        }\n    }\n    stringMapKeyAdded(key, attributeName) {\n        const descriptor = this.valueDescriptorMap[attributeName];\n        if (!this.hasValue(key)) {\n            this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue));\n        }\n    }\n    stringMapValueChanged(value, name, oldValue) {\n        const descriptor = this.valueDescriptorNameMap[name];\n        if (value === null)\n            return;\n        if (oldValue === null) {\n            oldValue = descriptor.writer(descriptor.defaultValue);\n        }\n        this.invokeChangedCallback(name, value, oldValue);\n    }\n    stringMapKeyRemoved(key, attributeName, oldValue) {\n        const descriptor = this.valueDescriptorNameMap[key];\n        if (this.hasValue(key)) {\n            this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), oldValue);\n        }\n        else {\n            this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue);\n        }\n    }\n    invokeChangedCallbacksForDefaultValues() {\n        for (const { key, name, defaultValue, writer } of this.valueDescriptors) {\n            if (defaultValue != undefined && !this.controller.data.has(key)) {\n                this.invokeChangedCallback(name, writer(defaultValue), undefined);\n            }\n        }\n    }\n    invokeChangedCallback(name, rawValue, rawOldValue) {\n        const changedMethodName = `${name}Changed`;\n        const changedMethod = this.receiver[changedMethodName];\n        if (typeof changedMethod == \"function\") {\n            const descriptor = this.valueDescriptorNameMap[name];\n            const value = descriptor.reader(rawValue);\n            let oldValue = rawOldValue;\n            if (rawOldValue) {\n                oldValue = descriptor.reader(rawOldValue);\n            }\n            changedMethod.call(this.receiver, value, oldValue);\n        }\n    }\n    get valueDescriptors() {\n        const { valueDescriptorMap } = this;\n        return Object.keys(valueDescriptorMap).map(key => valueDescriptorMap[key]);\n    }\n    get valueDescriptorNameMap() {\n        const descriptors = {};\n        Object.keys(this.valueDescriptorMap).forEach(key => {\n            const descriptor = this.valueDescriptorMap[key];\n            descriptors[descriptor.name] = descriptor;\n        });\n        return descriptors;\n    }\n    hasValue(attributeName) {\n        const descriptor = this.valueDescriptorNameMap[attributeName];\n        const hasMethodName = `has${capitalize(descriptor.name)}`;\n        return this.receiver[hasMethodName];\n    }\n}\n\nclass TargetObserver {\n    constructor(context, delegate) {\n        this.context = context;\n        this.delegate = delegate;\n        this.targetsByName = new Multimap;\n    }\n    start() {\n        if (!this.tokenListObserver) {\n            this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this);\n            this.tokenListObserver.start();\n        }\n    }\n    stop() {\n        if (this.tokenListObserver) {\n            this.disconnectAllTargets();\n            this.tokenListObserver.stop();\n            delete this.tokenListObserver;\n        }\n    }\n    tokenMatched({ element, content: name }) {\n        if (this.scope.containsElement(element)) {\n            this.connectTarget(element, name);\n        }\n    }\n    tokenUnmatched({ element, content: name }) {\n        this.disconnectTarget(element, name);\n    }\n    connectTarget(element, name) {\n        if (!this.targetsByName.has(name, element)) {\n            this.targetsByName.add(name, element);\n            this.delegate.targetConnected(element, name);\n        }\n    }\n    disconnectTarget(element, name) {\n        if (this.targetsByName.has(name, element)) {\n            this.targetsByName.delete(name, element);\n            this.delegate.targetDisconnected(element, name);\n        }\n    }\n    disconnectAllTargets() {\n        for (const name of this.targetsByName.keys) {\n            for (const element of this.targetsByName.getValuesForKey(name)) {\n                this.disconnectTarget(element, name);\n            }\n        }\n    }\n    get attributeName() {\n        return `data-${this.context.identifier}-target`;\n    }\n    get element() {\n        return this.context.element;\n    }\n    get scope() {\n        return this.context.scope;\n    }\n}\n\nclass Context {\n    constructor(module, scope) {\n        this.logDebugActivity = (functionName, detail = {}) => {\n            const { identifier, controller, element } = this;\n            detail = Object.assign({ identifier, controller, element }, detail);\n            this.application.logDebugActivity(this.identifier, functionName, detail);\n        };\n        this.module = module;\n        this.scope = scope;\n        this.controller = new module.controllerConstructor(this);\n        this.bindingObserver = new BindingObserver(this, this.dispatcher);\n        this.valueObserver = new ValueObserver(this, this.controller);\n        this.targetObserver = new TargetObserver(this, this);\n        try {\n            this.controller.initialize();\n            this.logDebugActivity(\"initialize\");\n        }\n        catch (error) {\n            this.handleError(error, \"initializing controller\");\n        }\n    }\n    connect() {\n        this.bindingObserver.start();\n        this.valueObserver.start();\n        this.targetObserver.start();\n        try {\n            this.controller.connect();\n            this.logDebugActivity(\"connect\");\n        }\n        catch (error) {\n            this.handleError(error, \"connecting controller\");\n        }\n    }\n    disconnect() {\n        try {\n            this.controller.disconnect();\n            this.logDebugActivity(\"disconnect\");\n        }\n        catch (error) {\n            this.handleError(error, \"disconnecting controller\");\n        }\n        this.targetObserver.stop();\n        this.valueObserver.stop();\n        this.bindingObserver.stop();\n    }\n    get application() {\n        return this.module.application;\n    }\n    get identifier() {\n        return this.module.identifier;\n    }\n    get schema() {\n        return this.application.schema;\n    }\n    get dispatcher() {\n        return this.application.dispatcher;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get parentElement() {\n        return this.element.parentElement;\n    }\n    handleError(error, message, detail = {}) {\n        const { identifier, controller, element } = this;\n        detail = Object.assign({ identifier, controller, element }, detail);\n        this.application.handleError(error, `Error ${message}`, detail);\n    }\n    targetConnected(element, name) {\n        this.invokeControllerMethod(`${name}TargetConnected`, element);\n    }\n    targetDisconnected(element, name) {\n        this.invokeControllerMethod(`${name}TargetDisconnected`, element);\n    }\n    invokeControllerMethod(methodName, ...args) {\n        const controller = this.controller;\n        if (typeof controller[methodName] == \"function\") {\n            controller[methodName](...args);\n        }\n    }\n}\n\nfunction readInheritableStaticArrayValues(constructor, propertyName) {\n    const ancestors = getAncestorsForConstructor(constructor);\n    return Array.from(ancestors.reduce((values, constructor) => {\n        getOwnStaticArrayValues(constructor, propertyName).forEach(name => values.add(name));\n        return values;\n    }, new Set));\n}\nfunction readInheritableStaticObjectPairs(constructor, propertyName) {\n    const ancestors = getAncestorsForConstructor(constructor);\n    return ancestors.reduce((pairs, constructor) => {\n        pairs.push(...getOwnStaticObjectPairs(constructor, propertyName));\n        return pairs;\n    }, []);\n}\nfunction getAncestorsForConstructor(constructor) {\n    const ancestors = [];\n    while (constructor) {\n        ancestors.push(constructor);\n        constructor = Object.getPrototypeOf(constructor);\n    }\n    return ancestors.reverse();\n}\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n    const definition = constructor[propertyName];\n    return Array.isArray(definition) ? definition : [];\n}\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n    const definition = constructor[propertyName];\n    return definition ? Object.keys(definition).map(key => [key, definition[key]]) : [];\n}\n\nfunction bless(constructor) {\n    return shadow(constructor, getBlessedProperties(constructor));\n}\nfunction shadow(constructor, properties) {\n    const shadowConstructor = extend(constructor);\n    const shadowProperties = getShadowProperties(constructor.prototype, properties);\n    Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n    return shadowConstructor;\n}\nfunction getBlessedProperties(constructor) {\n    const blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n    return blessings.reduce((blessedProperties, blessing) => {\n        const properties = blessing(constructor);\n        for (const key in properties) {\n            const descriptor = blessedProperties[key] || {};\n            blessedProperties[key] = Object.assign(descriptor, properties[key]);\n        }\n        return blessedProperties;\n    }, {});\n}\nfunction getShadowProperties(prototype, properties) {\n    return getOwnKeys(properties).reduce((shadowProperties, key) => {\n        const descriptor = getShadowedDescriptor(prototype, properties, key);\n        if (descriptor) {\n            Object.assign(shadowProperties, { [key]: descriptor });\n        }\n        return shadowProperties;\n    }, {});\n}\nfunction getShadowedDescriptor(prototype, properties, key) {\n    const shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n    const shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n    if (!shadowedByValue) {\n        const descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n        if (shadowingDescriptor) {\n            descriptor.get = shadowingDescriptor.get || descriptor.get;\n            descriptor.set = shadowingDescriptor.set || descriptor.set;\n        }\n        return descriptor;\n    }\n}\nconst getOwnKeys = (() => {\n    if (typeof Object.getOwnPropertySymbols == \"function\") {\n        return (object) => [\n            ...Object.getOwnPropertyNames(object),\n            ...Object.getOwnPropertySymbols(object)\n        ];\n    }\n    else {\n        return Object.getOwnPropertyNames;\n    }\n})();\nconst extend = (() => {\n    function extendWithReflect(constructor) {\n        function extended() {\n            return Reflect.construct(constructor, arguments, new.target);\n        }\n        extended.prototype = Object.create(constructor.prototype, {\n            constructor: { value: extended }\n        });\n        Reflect.setPrototypeOf(extended, constructor);\n        return extended;\n    }\n    function testReflectExtension() {\n        const a = function () { this.a.call(this); };\n        const b = extendWithReflect(a);\n        b.prototype.a = function () { };\n        return new b;\n    }\n    try {\n        testReflectExtension();\n        return extendWithReflect;\n    }\n    catch (error) {\n        return (constructor) => class extended extends constructor {\n        };\n    }\n})();\n\nfunction blessDefinition(definition) {\n    return {\n        identifier: definition.identifier,\n        controllerConstructor: bless(definition.controllerConstructor)\n    };\n}\n\nclass Module {\n    constructor(application, definition) {\n        this.application = application;\n        this.definition = blessDefinition(definition);\n        this.contextsByScope = new WeakMap;\n        this.connectedContexts = new Set;\n    }\n    get identifier() {\n        return this.definition.identifier;\n    }\n    get controllerConstructor() {\n        return this.definition.controllerConstructor;\n    }\n    get contexts() {\n        return Array.from(this.connectedContexts);\n    }\n    connectContextForScope(scope) {\n        const context = this.fetchContextForScope(scope);\n        this.connectedContexts.add(context);\n        context.connect();\n    }\n    disconnectContextForScope(scope) {\n        const context = this.contextsByScope.get(scope);\n        if (context) {\n            this.connectedContexts.delete(context);\n            context.disconnect();\n        }\n    }\n    fetchContextForScope(scope) {\n        let context = this.contextsByScope.get(scope);\n        if (!context) {\n            context = new Context(this, scope);\n            this.contextsByScope.set(scope, context);\n        }\n        return context;\n    }\n}\n\nclass ClassMap {\n    constructor(scope) {\n        this.scope = scope;\n    }\n    has(name) {\n        return this.data.has(this.getDataKey(name));\n    }\n    get(name) {\n        return this.getAll(name)[0];\n    }\n    getAll(name) {\n        const tokenString = this.data.get(this.getDataKey(name)) || \"\";\n        return tokenize(tokenString);\n    }\n    getAttributeName(name) {\n        return this.data.getAttributeNameForKey(this.getDataKey(name));\n    }\n    getDataKey(name) {\n        return `${name}-class`;\n    }\n    get data() {\n        return this.scope.data;\n    }\n}\n\nclass DataMap {\n    constructor(scope) {\n        this.scope = scope;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get(key) {\n        const name = this.getAttributeNameForKey(key);\n        return this.element.getAttribute(name);\n    }\n    set(key, value) {\n        const name = this.getAttributeNameForKey(key);\n        this.element.setAttribute(name, value);\n        return this.get(key);\n    }\n    has(key) {\n        const name = this.getAttributeNameForKey(key);\n        return this.element.hasAttribute(name);\n    }\n    delete(key) {\n        if (this.has(key)) {\n            const name = this.getAttributeNameForKey(key);\n            this.element.removeAttribute(name);\n            return true;\n        }\n        else {\n            return false;\n        }\n    }\n    getAttributeNameForKey(key) {\n        return `data-${this.identifier}-${dasherize(key)}`;\n    }\n}\n\nclass Guide {\n    constructor(logger) {\n        this.warnedKeysByObject = new WeakMap;\n        this.logger = logger;\n    }\n    warn(object, key, message) {\n        let warnedKeys = this.warnedKeysByObject.get(object);\n        if (!warnedKeys) {\n            warnedKeys = new Set;\n            this.warnedKeysByObject.set(object, warnedKeys);\n        }\n        if (!warnedKeys.has(key)) {\n            warnedKeys.add(key);\n            this.logger.warn(message, object);\n        }\n    }\n}\n\nfunction attributeValueContainsToken(attributeName, token) {\n    return `[${attributeName}~=\"${token}\"]`;\n}\n\nclass TargetSet {\n    constructor(scope) {\n        this.scope = scope;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get schema() {\n        return this.scope.schema;\n    }\n    has(targetName) {\n        return this.find(targetName) != null;\n    }\n    find(...targetNames) {\n        return targetNames.reduce((target, targetName) => target\n            || this.findTarget(targetName)\n            || this.findLegacyTarget(targetName), undefined);\n    }\n    findAll(...targetNames) {\n        return targetNames.reduce((targets, targetName) => [\n            ...targets,\n            ...this.findAllTargets(targetName),\n            ...this.findAllLegacyTargets(targetName)\n        ], []);\n    }\n    findTarget(targetName) {\n        const selector = this.getSelectorForTargetName(targetName);\n        return this.scope.findElement(selector);\n    }\n    findAllTargets(targetName) {\n        const selector = this.getSelectorForTargetName(targetName);\n        return this.scope.findAllElements(selector);\n    }\n    getSelectorForTargetName(targetName) {\n        const attributeName = this.schema.targetAttributeForScope(this.identifier);\n        return attributeValueContainsToken(attributeName, targetName);\n    }\n    findLegacyTarget(targetName) {\n        const selector = this.getLegacySelectorForTargetName(targetName);\n        return this.deprecate(this.scope.findElement(selector), targetName);\n    }\n    findAllLegacyTargets(targetName) {\n        const selector = this.getLegacySelectorForTargetName(targetName);\n        return this.scope.findAllElements(selector).map(element => this.deprecate(element, targetName));\n    }\n    getLegacySelectorForTargetName(targetName) {\n        const targetDescriptor = `${this.identifier}.${targetName}`;\n        return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n    }\n    deprecate(element, targetName) {\n        if (element) {\n            const { identifier } = this;\n            const attributeName = this.schema.targetAttribute;\n            const revisedAttributeName = this.schema.targetAttributeForScope(identifier);\n            this.guide.warn(element, `target:${targetName}`, `Please replace ${attributeName}=\"${identifier}.${targetName}\" with ${revisedAttributeName}=\"${targetName}\". ` +\n                `The ${attributeName} attribute is deprecated and will be removed in a future version of Stimulus.`);\n        }\n        return element;\n    }\n    get guide() {\n        return this.scope.guide;\n    }\n}\n\nclass Scope {\n    constructor(schema, element, identifier, logger) {\n        this.targets = new TargetSet(this);\n        this.classes = new ClassMap(this);\n        this.data = new DataMap(this);\n        this.containsElement = (element) => {\n            return element.closest(this.controllerSelector) === this.element;\n        };\n        this.schema = schema;\n        this.element = element;\n        this.identifier = identifier;\n        this.guide = new Guide(logger);\n    }\n    findElement(selector) {\n        return this.element.matches(selector)\n            ? this.element\n            : this.queryElements(selector).find(this.containsElement);\n    }\n    findAllElements(selector) {\n        return [\n            ...this.element.matches(selector) ? [this.element] : [],\n            ...this.queryElements(selector).filter(this.containsElement)\n        ];\n    }\n    queryElements(selector) {\n        return Array.from(this.element.querySelectorAll(selector));\n    }\n    get controllerSelector() {\n        return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n    }\n}\n\nclass ScopeObserver {\n    constructor(element, schema, delegate) {\n        this.element = element;\n        this.schema = schema;\n        this.delegate = delegate;\n        this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n        this.scopesByIdentifierByElement = new WeakMap;\n        this.scopeReferenceCounts = new WeakMap;\n    }\n    start() {\n        this.valueListObserver.start();\n    }\n    stop() {\n        this.valueListObserver.stop();\n    }\n    get controllerAttribute() {\n        return this.schema.controllerAttribute;\n    }\n    parseValueForToken(token) {\n        const { element, content: identifier } = token;\n        const scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n        let scope = scopesByIdentifier.get(identifier);\n        if (!scope) {\n            scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n            scopesByIdentifier.set(identifier, scope);\n        }\n        return scope;\n    }\n    elementMatchedValue(element, value) {\n        const referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n        this.scopeReferenceCounts.set(value, referenceCount);\n        if (referenceCount == 1) {\n            this.delegate.scopeConnected(value);\n        }\n    }\n    elementUnmatchedValue(element, value) {\n        const referenceCount = this.scopeReferenceCounts.get(value);\n        if (referenceCount) {\n            this.scopeReferenceCounts.set(value, referenceCount - 1);\n            if (referenceCount == 1) {\n                this.delegate.scopeDisconnected(value);\n            }\n        }\n    }\n    fetchScopesByIdentifierForElement(element) {\n        let scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n        if (!scopesByIdentifier) {\n            scopesByIdentifier = new Map;\n            this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n        }\n        return scopesByIdentifier;\n    }\n}\n\nclass Router {\n    constructor(application) {\n        this.application = application;\n        this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n        this.scopesByIdentifier = new Multimap;\n        this.modulesByIdentifier = new Map;\n    }\n    get element() {\n        return this.application.element;\n    }\n    get schema() {\n        return this.application.schema;\n    }\n    get logger() {\n        return this.application.logger;\n    }\n    get controllerAttribute() {\n        return this.schema.controllerAttribute;\n    }\n    get modules() {\n        return Array.from(this.modulesByIdentifier.values());\n    }\n    get contexts() {\n        return this.modules.reduce((contexts, module) => contexts.concat(module.contexts), []);\n    }\n    start() {\n        this.scopeObserver.start();\n    }\n    stop() {\n        this.scopeObserver.stop();\n    }\n    loadDefinition(definition) {\n        this.unloadIdentifier(definition.identifier);\n        const module = new Module(this.application, definition);\n        this.connectModule(module);\n    }\n    unloadIdentifier(identifier) {\n        const module = this.modulesByIdentifier.get(identifier);\n        if (module) {\n            this.disconnectModule(module);\n        }\n    }\n    getContextForElementAndIdentifier(element, identifier) {\n        const module = this.modulesByIdentifier.get(identifier);\n        if (module) {\n            return module.contexts.find(context => context.element == element);\n        }\n    }\n    handleError(error, message, detail) {\n        this.application.handleError(error, message, detail);\n    }\n    createScopeForElementAndIdentifier(element, identifier) {\n        return new Scope(this.schema, element, identifier, this.logger);\n    }\n    scopeConnected(scope) {\n        this.scopesByIdentifier.add(scope.identifier, scope);\n        const module = this.modulesByIdentifier.get(scope.identifier);\n        if (module) {\n            module.connectContextForScope(scope);\n        }\n    }\n    scopeDisconnected(scope) {\n        this.scopesByIdentifier.delete(scope.identifier, scope);\n        const module = this.modulesByIdentifier.get(scope.identifier);\n        if (module) {\n            module.disconnectContextForScope(scope);\n        }\n    }\n    connectModule(module) {\n        this.modulesByIdentifier.set(module.identifier, module);\n        const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n        scopes.forEach(scope => module.connectContextForScope(scope));\n    }\n    disconnectModule(module) {\n        this.modulesByIdentifier.delete(module.identifier);\n        const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n        scopes.forEach(scope => module.disconnectContextForScope(scope));\n    }\n}\n\nconst defaultSchema = {\n    controllerAttribute: \"data-controller\",\n    actionAttribute: \"data-action\",\n    targetAttribute: \"data-target\",\n    targetAttributeForScope: identifier => `data-${identifier}-target`\n};\n\nclass Application {\n    constructor(element = document.documentElement, schema = defaultSchema) {\n        this.logger = console;\n        this.debug = false;\n        this.logDebugActivity = (identifier, functionName, detail = {}) => {\n            if (this.debug) {\n                this.logFormattedMessage(identifier, functionName, detail);\n            }\n        };\n        this.element = element;\n        this.schema = schema;\n        this.dispatcher = new Dispatcher(this);\n        this.router = new Router(this);\n    }\n    static start(element, schema) {\n        const application = new Application(element, schema);\n        application.start();\n        return application;\n    }\n    async start() {\n        await domReady();\n        this.logDebugActivity(\"application\", \"starting\");\n        this.dispatcher.start();\n        this.router.start();\n        this.logDebugActivity(\"application\", \"start\");\n    }\n    stop() {\n        this.logDebugActivity(\"application\", \"stopping\");\n        this.dispatcher.stop();\n        this.router.stop();\n        this.logDebugActivity(\"application\", \"stop\");\n    }\n    register(identifier, controllerConstructor) {\n        if (controllerConstructor.shouldLoad) {\n            this.load({ identifier, controllerConstructor });\n        }\n    }\n    load(head, ...rest) {\n        const definitions = Array.isArray(head) ? head : [head, ...rest];\n        definitions.forEach(definition => this.router.loadDefinition(definition));\n    }\n    unload(head, ...rest) {\n        const identifiers = Array.isArray(head) ? head : [head, ...rest];\n        identifiers.forEach(identifier => this.router.unloadIdentifier(identifier));\n    }\n    get controllers() {\n        return this.router.contexts.map(context => context.controller);\n    }\n    getControllerForElementAndIdentifier(element, identifier) {\n        const context = this.router.getContextForElementAndIdentifier(element, identifier);\n        return context ? context.controller : null;\n    }\n    handleError(error, message, detail) {\n        var _a;\n        this.logger.error(`%s\\n\\n%o\\n\\n%o`, message, error, detail);\n        (_a = window.onerror) === null || _a === void 0 ? void 0 : _a.call(window, message, \"\", 0, 0, error);\n    }\n    logFormattedMessage(identifier, functionName, detail = {}) {\n        detail = Object.assign({ application: this }, detail);\n        this.logger.groupCollapsed(`${identifier} #${functionName}`);\n        this.logger.log(\"details:\", Object.assign({}, detail));\n        this.logger.groupEnd();\n    }\n}\nfunction domReady() {\n    return new Promise(resolve => {\n        if (document.readyState == \"loading\") {\n            document.addEventListener(\"DOMContentLoaded\", () => resolve());\n        }\n        else {\n            resolve();\n        }\n    });\n}\n\nfunction ClassPropertiesBlessing(constructor) {\n    const classes = readInheritableStaticArrayValues(constructor, \"classes\");\n    return classes.reduce((properties, classDefinition) => {\n        return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n    }, {});\n}\nfunction propertiesForClassDefinition(key) {\n    return {\n        [`${key}Class`]: {\n            get() {\n                const { classes } = this;\n                if (classes.has(key)) {\n                    return classes.get(key);\n                }\n                else {\n                    const attribute = classes.getAttributeName(key);\n                    throw new Error(`Missing attribute \"${attribute}\"`);\n                }\n            }\n        },\n        [`${key}Classes`]: {\n            get() {\n                return this.classes.getAll(key);\n            }\n        },\n        [`has${capitalize(key)}Class`]: {\n            get() {\n                return this.classes.has(key);\n            }\n        }\n    };\n}\n\nfunction TargetPropertiesBlessing(constructor) {\n    const targets = readInheritableStaticArrayValues(constructor, \"targets\");\n    return targets.reduce((properties, targetDefinition) => {\n        return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n    }, {});\n}\nfunction propertiesForTargetDefinition(name) {\n    return {\n        [`${name}Target`]: {\n            get() {\n                const target = this.targets.find(name);\n                if (target) {\n                    return target;\n                }\n                else {\n                    throw new Error(`Missing target element \"${name}\" for \"${this.identifier}\" controller`);\n                }\n            }\n        },\n        [`${name}Targets`]: {\n            get() {\n                return this.targets.findAll(name);\n            }\n        },\n        [`has${capitalize(name)}Target`]: {\n            get() {\n                return this.targets.has(name);\n            }\n        }\n    };\n}\n\nfunction ValuePropertiesBlessing(constructor) {\n    const valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n    const propertyDescriptorMap = {\n        valueDescriptorMap: {\n            get() {\n                return valueDefinitionPairs.reduce((result, valueDefinitionPair) => {\n                    const valueDescriptor = parseValueDefinitionPair(valueDefinitionPair);\n                    const attributeName = this.data.getAttributeNameForKey(valueDescriptor.key);\n                    return Object.assign(result, { [attributeName]: valueDescriptor });\n                }, {});\n            }\n        }\n    };\n    return valueDefinitionPairs.reduce((properties, valueDefinitionPair) => {\n        return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n    }, propertyDescriptorMap);\n}\nfunction propertiesForValueDefinitionPair(valueDefinitionPair) {\n    const definition = parseValueDefinitionPair(valueDefinitionPair);\n    const { key, name, reader: read, writer: write } = definition;\n    return {\n        [name]: {\n            get() {\n                const value = this.data.get(key);\n                if (value !== null) {\n                    return read(value);\n                }\n                else {\n                    return definition.defaultValue;\n                }\n            },\n            set(value) {\n                if (value === undefined) {\n                    this.data.delete(key);\n                }\n                else {\n                    this.data.set(key, write(value));\n                }\n            }\n        },\n        [`has${capitalize(name)}`]: {\n            get() {\n                return this.data.has(key) || definition.hasCustomDefaultValue;\n            }\n        }\n    };\n}\nfunction parseValueDefinitionPair([token, typeDefinition]) {\n    return valueDescriptorForTokenAndTypeDefinition(token, typeDefinition);\n}\nfunction parseValueTypeConstant(constant) {\n    switch (constant) {\n        case Array: return \"array\";\n        case Boolean: return \"boolean\";\n        case Number: return \"number\";\n        case Object: return \"object\";\n        case String: return \"string\";\n    }\n}\nfunction parseValueTypeDefault(defaultValue) {\n    switch (typeof defaultValue) {\n        case \"boolean\": return \"boolean\";\n        case \"number\": return \"number\";\n        case \"string\": return \"string\";\n    }\n    if (Array.isArray(defaultValue))\n        return \"array\";\n    if (Object.prototype.toString.call(defaultValue) === \"[object Object]\")\n        return \"object\";\n}\nfunction parseValueTypeObject(typeObject) {\n    const typeFromObject = parseValueTypeConstant(typeObject.type);\n    if (typeFromObject) {\n        const defaultValueType = parseValueTypeDefault(typeObject.default);\n        if (typeFromObject !== defaultValueType) {\n            throw new Error(`Type \"${typeFromObject}\" must match the type of the default value. Given default value: \"${typeObject.default}\" as \"${defaultValueType}\"`);\n        }\n        return typeFromObject;\n    }\n}\nfunction parseValueTypeDefinition(typeDefinition) {\n    const typeFromObject = parseValueTypeObject(typeDefinition);\n    const typeFromDefaultValue = parseValueTypeDefault(typeDefinition);\n    const typeFromConstant = parseValueTypeConstant(typeDefinition);\n    const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n    if (type)\n        return type;\n    throw new Error(`Unknown value type \"${typeDefinition}\"`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n    const constant = parseValueTypeConstant(typeDefinition);\n    if (constant)\n        return defaultValuesByType[constant];\n    const defaultValue = typeDefinition.default;\n    if (defaultValue !== undefined)\n        return defaultValue;\n    return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(token, typeDefinition) {\n    const key = `${dasherize(token)}-value`;\n    const type = parseValueTypeDefinition(typeDefinition);\n    return {\n        type,\n        key,\n        name: camelize(key),\n        get defaultValue() { return defaultValueForDefinition(typeDefinition); },\n        get hasCustomDefaultValue() { return parseValueTypeDefault(typeDefinition) !== undefined; },\n        reader: readers[type],\n        writer: writers[type] || writers.default\n    };\n}\nconst defaultValuesByType = {\n    get array() { return []; },\n    boolean: false,\n    number: 0,\n    get object() { return {}; },\n    string: \"\"\n};\nconst readers = {\n    array(value) {\n        const array = JSON.parse(value);\n        if (!Array.isArray(array)) {\n            throw new TypeError(\"Expected array\");\n        }\n        return array;\n    },\n    boolean(value) {\n        return !(value == \"0\" || value == \"false\");\n    },\n    number(value) {\n        return Number(value);\n    },\n    object(value) {\n        const object = JSON.parse(value);\n        if (object === null || typeof object != \"object\" || Array.isArray(object)) {\n            throw new TypeError(\"Expected object\");\n        }\n        return object;\n    },\n    string(value) {\n        return value;\n    }\n};\nconst writers = {\n    default: writeString,\n    array: writeJSON,\n    object: writeJSON\n};\nfunction writeJSON(value) {\n    return JSON.stringify(value);\n}\nfunction writeString(value) {\n    return `${value}`;\n}\n\nclass Controller {\n    constructor(context) {\n        this.context = context;\n    }\n    static get shouldLoad() {\n        return true;\n    }\n    get application() {\n        return this.context.application;\n    }\n    get scope() {\n        return this.context.scope;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get targets() {\n        return this.scope.targets;\n    }\n    get classes() {\n        return this.scope.classes;\n    }\n    get data() {\n        return this.scope.data;\n    }\n    initialize() {\n    }\n    connect() {\n    }\n    disconnect() {\n    }\n    dispatch(eventName, { target = this.element, detail = {}, prefix = this.identifier, bubbles = true, cancelable = true } = {}) {\n        const type = prefix ? `${prefix}:${eventName}` : eventName;\n        const event = new CustomEvent(type, { detail, bubbles, cancelable });\n        target.dispatchEvent(event);\n        return event;\n    }\n}\nController.blessings = [ClassPropertiesBlessing, TargetPropertiesBlessing, ValuePropertiesBlessing];\nController.targets = [];\nController.values = {};\n\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, StringMapObserver, TokenListObserver, ValueListObserver, add, defaultSchema, del, fetch, prune };\n", "export const kebabCase = string =>\n  string\n    .replace(/([a-z])([A-Z])/g, \"$1-$2\")\n    .replace(/[\\s_]+/g, \"-\")\n    .toLowerCase();\n\nexport const capitalize = string => {\n  return string.charAt(0).toUpperCase() + string.slice(1);\n};\n", "const booleanOptions = [\n  'allowInput',\n  'altInput',\n  'animate',\n  'clickOpens',\n  'closeOnSelect',\n  'disableMobile',\n  'enableSeconds',\n  'enableTime',\n  'inline',\n  'noCalendar',\n  'shorthandCurrentMonth',\n  'static',\n  'time_24hr',\n  'weekNumbers',\n  'wrap'\n]\n\nconst stringOptions = [\n  'altInputClass',\n  'conjunction',\n  'mode',\n  'nextArrow',\n  'position',\n  'prevArrow',\n  'monthSelectorType'\n]\n\nconst numberOptions = [\n  'defaultHour',\n  'defaultMinute',\n  'defaultSeconds',\n  'hourIncrement',\n  'minuteIncrement',\n  'showMonths'\n]\n\nconst arrayOptions = ['disable', 'enable', 'disableDaysOfWeek', 'enableDaysOfWeek']\n\nconst arrayOrStringOptions = ['defaultDate']\n\nconst dateOptions = ['maxDate', 'minDate', 'maxTime', 'minTime', 'now']\n\nexport const dateFormats = ['altFormat', 'ariaDateFormat', 'dateFormat']\n\nexport const options = {\n  string: stringOptions,\n  boolean: booleanOptions,\n  date: dateOptions,\n  array: arrayOptions,\n  number: numberOptions,\n  arrayOrString: arrayOrStringOptions\n}\n", "export const events = ['change', 'open', 'close', 'monthChange', 'yearChange', 'ready', 'valueUpdate', 'dayCreate']\n", "export const elements = [\n  'calendarContainer',\n  'currentYearElement',\n  'days',\n  'daysContainer',\n  'input',\n  'nextMonthNav',\n  'monthNav',\n  'prevMonthNav',\n  'rContainer',\n  'selectedDateElem',\n  'todayDateElem',\n  'weekdayContainer'\n]\n", "export const mapping = {\n  '%Y': 'Y',\n  '%y': 'y',\n  '%C': 'Y',\n  '%m': 'm',\n  '%-m': 'n',\n  '%_m': 'n',\n  '%B': 'F',\n  '%^B': 'F',\n  '%b': 'M',\n  '%^b': 'M',\n  '%h': 'M',\n  '%^h': 'M',\n  '%d': 'd',\n  '%-d': 'j',\n  '%e': 'j',\n  '%H': 'H',\n  '%k': 'H',\n  '%I': 'h',\n  '%l': 'h',\n  '%-l': 'h',\n  '%P': 'K',\n  '%p': 'K',\n  '%M': 'i',\n  '%S': 'S',\n  '%A': 'l',\n  '%a': 'D',\n  '%w': 'w'\n}\n\nconst strftimeRegex = new RegExp(\n  Object.keys(mapping)\n    .join('|')\n    .replace(new RegExp('\\\\^', 'g'), '\\\\^'),\n  'g'\n)\n\nexport const convertDateFormat = (format) => {\n  return format.replace(strftimeRegex, (match) => {\n    return mapping[match]\n  })\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport flatpickr from 'flatpickr'\nimport { kebabCase, capitalize } from './utils'\nimport { options, dateFormats } from './config_options'\nimport { events } from './events'\nimport { elements } from './elements'\nimport { convertDateFormat } from './strftime_mapping'\n\nclass StimulusFlatpickr extends Controller {\n  static targets = ['instance']\n\n  initialize() {\n    this.config = {}\n  }\n\n  connect() {\n    this._initializeEvents()\n    this._initializeOptions()\n    this._initializeDateFormats()\n\n    this.fp = flatpickr(this.flatpickrElement, {\n      ...this.config\n    })\n\n    this._initializeElements()\n  }\n\n  disconnect() {\n    const value = this.inputTarget.value\n    this.fp.destroy()\n    this.inputTarget.value = value\n  }\n\n  _initializeEvents() {\n    events.forEach((event) => {\n      if (this[event]) {\n        const hook = `on${capitalize(event)}`\n        this.config[hook] = this[event].bind(this)\n      }\n    })\n  }\n\n  _initializeOptions() {\n    Object.keys(options).forEach((optionType) => {\n      const optionsCamelCase = options[optionType]\n      optionsCamelCase.forEach((option) => {\n        const optionKebab = kebabCase(option)\n        if (this.data.has(optionKebab)) {\n          this.config[option] = this[`_${optionType}`](optionKebab)\n        }\n      })\n    })\n    this._handleDaysOfWeek()\n  }\n\n  _handleDaysOfWeek() {\n    if (this.config.disableDaysOfWeek) {\n      this.config.disableDaysOfWeek = this._validateDaysOfWeek(this.config.disableDaysOfWeek)\n      this.config.disable = [...(this.config.disable || []), this._disable.bind(this)]\n    }\n\n    if (this.config.enableDaysOfWeek) {\n      this.config.enableDaysOfWeek = this._validateDaysOfWeek(this.config.enableDaysOfWeek)\n      this.config.enable = [...(this.config.enable || []), this._enable.bind(this)]\n    }\n  }\n\n  _validateDaysOfWeek(days) {\n    if (Array.isArray(days)) {\n      return days.map((day) => parseInt(day))\n    } else {\n      console.error('days of week must be a valid array')\n      return []\n    }\n  }\n\n  _disable(date) {\n    const disabledDays = this.config.disableDaysOfWeek\n    return disabledDays.includes(date.getDay())\n  }\n\n  _enable(date) {\n    const enabledDays = this.config.enableDaysOfWeek\n    return enabledDays.includes(date.getDay())\n  }\n\n  _initializeDateFormats() {\n    dateFormats.forEach((dateFormat) => {\n      if (this.data.has(dateFormat)) {\n        this.config[dateFormat] = convertDateFormat(this.data.get(dateFormat))\n      }\n    })\n  }\n\n  _initializeElements() {\n    elements.forEach((element) => {\n      this[`${element}Target`] = this.fp[element]\n    })\n  }\n\n  _string(option) {\n    return this.data.get(option)\n  }\n\n  _date(option) {\n    return this.data.get(option)\n  }\n\n  _boolean(option) {\n    return !(this.data.get(option) == '0' || this.data.get(option) == 'false')\n  }\n\n  _array(option) {\n    return JSON.parse(this.data.get(option))\n  }\n\n  _number(option) {\n    return parseInt(this.data.get(option))\n  }\n\n  _arrayOrString(option) {\n    const val = this.data.get(option)\n    try {\n      return JSON.parse(val)\n    } catch (e) {\n      return val\n    }\n  }\n\n  get flatpickrElement() {\n    return (this.hasInstanceTarget && this.instanceTarget) || this.element\n  }\n}\n\nexport default StimulusFlatpickr\n", "// Load all the controllers within this directory and all subdirectories.\n// Controller files must be named *_controller.js.\n\nimport { application } from \"./application\"\nimport Reveal from 'stimulus-reveal-controller'\n\n// Register each controller with Stimulus\nimport controllers from \"./**/*_controller.js\"\ncontrollers.forEach((controller) => {\n  application.register(controller.name, controller.module.default)\n})\n\nimport { Dropdown, Modal, Tabs, Popover, Toggle, Slideover } from \"tailwindcss-stimulus-components\"\napplication.register('dropdown', Dropdown)\napplication.register('modal', Modal)\napplication.register('tabs', Tabs)\napplication.register('popover', Popover)\napplication.register('slideover', Slideover)\napplication.register('reveal', Reveal)\n\nimport Flatpickr from 'stimulus-flatpickr'\napplication.register('flatpickr', Flatpickr)\n\nconst contactBtn = document.getElementById('contact-btn')\nconst sentBtn = document.getElementById('sent-btn')\n\ncontactBtn.addEventListener('click', function(){\n  sentBtn.classList.remove('active')\n  this.classList.add('active')\n})\n\nsentBtn.addEventListener('click', function(){\n  contactBtn.classList.remove('active')\n  this.classList.add('active')\n})\n", "export class FetchResponse {\n  constructor (response) {\n    this.response = response\n  }\n\n  get statusCode () {\n    return this.response.status\n  }\n\n  get redirected () {\n    return this.response.redirected\n  }\n\n  get ok () {\n    return this.response.ok\n  }\n\n  get unauthenticated () {\n    return this.statusCode === 401\n  }\n\n  get unprocessableEntity () {\n    return this.statusCode === 422\n  }\n\n  get authenticationURL () {\n    return this.response.headers.get('WWW-Authenticate')\n  }\n\n  get contentType () {\n    const contentType = this.response.headers.get('Content-Type') || ''\n\n    return contentType.replace(/;.*$/, '')\n  }\n\n  get headers () {\n    return this.response.headers\n  }\n\n  get html () {\n    if (this.contentType.match(/^(application|text)\\/(html|xhtml\\+xml)$/)) {\n      return this.text\n    }\n\n    return Promise.reject(new Error(`Expected an HTML response but got \"${this.contentType}\" instead`))\n  }\n\n  get json () {\n    if (this.contentType.match(/^application\\/.*json$/)) {\n      return this.responseJson || (this.responseJson = this.response.json())\n    }\n\n    return Promise.reject(new Error(`Expected a JSON response but got \"${this.contentType}\" instead`))\n  }\n\n  get text () {\n    return this.responseText || (this.responseText = this.response.text())\n  }\n\n  get isTurboStream () {\n    return this.contentType.match(/^text\\/vnd\\.turbo-stream\\.html/)\n  }\n\n  async renderTurboStream () {\n    if (this.isTurboStream) {\n      if (window.Turbo) {\n        await window.Turbo.renderStreamMessage(await this.text)\n      } else {\n        console.warn('You must set `window.Turbo = Turbo` to automatically process Turbo Stream events with request.js')\n      }\n    } else {\n      return Promise.reject(new Error(`Expected a Turbo Stream response but got \"${this.contentType}\" instead`))\n    }\n  }\n}\n", "export class RequestInterceptor {\n  static register (interceptor) {\n    this.interceptor = interceptor\n  }\n\n  static get () {\n    return this.interceptor\n  }\n\n  static reset () {\n    this.interceptor = undefined\n  }\n}\n", "export function getCookie (name) {\n  const cookies = document.cookie ? document.cookie.split('; ') : []\n  const prefix = `${encodeURIComponent(name)}=`\n  const cookie = cookies.find(cookie => cookie.startsWith(prefix))\n\n  if (cookie) {\n    const value = cookie.split('=').slice(1).join('=')\n\n    if (value) {\n      return decodeURIComponent(value)\n    }\n  }\n}\n\nexport function compact (object) {\n  const result = {}\n\n  for (const key in object) {\n    const value = object[key]\n    if (value !== undefined) {\n      result[key] = value\n    }\n  }\n\n  return result\n}\n\nexport function metaContent (name) {\n  const element = document.head.querySelector(`meta[name=\"${name}\"]`)\n  return element && element.content\n}\n\nexport function stringEntriesFromFormData (formData) {\n  return [...formData].reduce((entries, [name, value]) => {\n    return entries.concat(typeof value === 'string' ? [[name, value]] : [])\n  }, [])\n}\n\nexport function mergeEntries (searchParams, entries) {\n  for (const [name, value] of entries) {\n    if (value instanceof window.File) continue\n\n    if (searchParams.has(name) && !name.includes('[]')) {\n      searchParams.delete(name)\n      searchParams.set(name, value)\n    } else {\n      searchParams.append(name, value)\n    }\n  }\n}\n", "import { FetchResponse } from './fetch_response'\nimport { RequestInterceptor } from './request_interceptor'\nimport { getCookie, compact, metaContent, stringEntriesFromFormData, mergeEntries } from './lib/utils'\n\nexport class FetchRequest {\n  constructor (method, url, options = {}) {\n    this.method = method\n    this.options = options\n    this.originalUrl = url.toString()\n  }\n\n  async perform () {\n    try {\n      const requestInterceptor = RequestInterceptor.get()\n      if (requestInterceptor) {\n        await requestInterceptor(this)\n      }\n    } catch (error) {\n      console.error(error)\n    }\n\n    const response = new FetchResponse(await window.fetch(this.url, this.fetchOptions))\n\n    if (response.unauthenticated && response.authenticationURL) {\n      return Promise.reject(window.location.href = response.authenticationURL)\n    }\n\n    if (response.ok && response.isTurboStream) {\n      await response.renderTurboStream()\n    }\n\n    return response\n  }\n\n  addHeader (key, value) {\n    const headers = this.additionalHeaders\n    headers[key] = value\n    this.options.headers = headers\n  }\n\n  sameHostname () {\n    if (!this.originalUrl.startsWith('http:')) {\n      return true\n    }\n\n    try {\n      return new URL(this.originalUrl).hostname === window.location.hostname\n    } catch (_) {\n      return true\n    }\n  }\n\n  get fetchOptions () {\n    return {\n      method: this.method.toUpperCase(),\n      headers: this.headers,\n      body: this.formattedBody,\n      signal: this.signal,\n      credentials: 'same-origin',\n      redirect: this.redirect\n    }\n  }\n\n  get headers () {\n    const baseHeaders = {\n      'X-Requested-With': 'XMLHttpRequest',\n      'Content-Type': this.contentType,\n      Accept: this.accept\n    }\n\n    if (this.sameHostname()) {\n      baseHeaders['X-CSRF-Token'] = this.csrfToken\n    }\n\n    return compact(\n      Object.assign(baseHeaders, this.additionalHeaders)\n    )\n  }\n\n  get csrfToken () {\n    return getCookie(metaContent('csrf-param')) || metaContent('csrf-token')\n  }\n\n  get contentType () {\n    if (this.options.contentType) {\n      return this.options.contentType\n    } else if (this.body == null || this.body instanceof window.FormData) {\n      return undefined\n    } else if (this.body instanceof window.File) {\n      return this.body.type\n    }\n\n    return 'application/json'\n  }\n\n  get accept () {\n    switch (this.responseKind) {\n      case 'html':\n        return 'text/html, application/xhtml+xml'\n      case 'turbo-stream':\n        return 'text/vnd.turbo-stream.html, text/html, application/xhtml+xml'\n      case 'json':\n        return 'application/json, application/vnd.api+json'\n      default:\n        return '*/*'\n    }\n  }\n\n  get body () {\n    return this.options.body\n  }\n\n  get query () {\n    const originalQuery = (this.originalUrl.split('?')[1] || '').split('#')[0]\n    const params = new URLSearchParams(originalQuery)\n\n    let requestQuery = this.options.query\n    if (requestQuery instanceof window.FormData) {\n      requestQuery = stringEntriesFromFormData(requestQuery)\n    } else if (requestQuery instanceof window.URLSearchParams) {\n      requestQuery = requestQuery.entries()\n    } else {\n      requestQuery = Object.entries(requestQuery || {})\n    }\n\n    mergeEntries(params, requestQuery)\n\n    const query = params.toString()\n    return (query.length > 0 ? `?${query}` : '')\n  }\n\n  get url () {\n    return (this.originalUrl.split('?')[0]).split('#')[0] + this.query\n  }\n\n  get responseKind () {\n    return this.options.responseKind || 'html'\n  }\n\n  get signal () {\n    return this.options.signal\n  }\n\n  get redirect () {\n    return this.options.redirect || 'follow'\n  }\n\n  get additionalHeaders () {\n    return this.options.headers || {}\n  }\n\n  get formattedBody () {\n    const bodyIsAString = Object.prototype.toString.call(this.body) === '[object String]'\n    const contentTypeIsJson = this.headers['Content-Type'] === 'application/json'\n\n    if (contentTypeIsJson && !bodyIsAString) {\n      return JSON.stringify(this.body)\n    }\n\n    return this.body\n  }\n}\n", "import { FetchRequest } from './fetch_request'\n\nasync function get (url, options) {\n  const request = new FetchRequest('get', url, options)\n  return request.perform()\n}\n\nasync function post (url, options) {\n  const request = new FetchRequest('post', url, options)\n  return request.perform()\n}\n\nasync function put (url, options) {\n  const request = new FetchRequest('put', url, options)\n  return request.perform()\n}\n\nasync function patch (url, options) {\n  const request = new FetchRequest('patch', url, options)\n  return request.perform()\n}\n\nasync function destroy (url, options) {\n  const request = new FetchRequest('delete', url, options)\n  return request.perform()\n}\n\nexport { get, post, put, patch, destroy }\n", "import Trix from \"trix\"\nimport \"@rails/actiontext\"\nimport { get } from \"@rails/request.js\"\n\nTrix.config.textAttributes.inlineCode = {\n  tagName: \"code\",\n  inheritable: true\n}\n\nclass EmbedController {\n  constructor(element) {\n    this.patterns = undefined\n    this.element = element\n    this.editor = element.editor\n    this.toolbar = element.toolbarElement\n\n    this.injectHTML()\n\n    this.hrefElement = this.toolbar.querySelector(\"[data-trix-input][name='href']\")\n    this.embedContainerElement = this.toolbar.querySelector(\"[data-behavior='embed_container']\")\n    this.embedElement = this.toolbar.querySelector(\"[data-behavior='embed_url']\")\n\n    this.reset()\n    this.installEventHandlers()\n  }\n\n  injectHTML() {\n    this.toolbar.querySelector('[data-trix-dialog=\"href\"]').insertAdjacentHTML('beforeend', `\n        <div data-behavior=\"embed_container\">\n          <div class=\"link_to_embed link_to_embed--new\">\n            Would you like to embed media from this site?\n            <input class=\"btn btn-tertiary btn-small outline\" type=\"button\" data-behavior=\"embed_url\" value=\"Yes, embed it\">\n          </div>\n        </div>\n    `)\n  }\n\n  installEventHandlers() {\n    this.hrefElement.addEventListener(\"input\", this.didInput.bind(this))\n    this.hrefElement.addEventListener(\"focusin\", this.didInput.bind(this))\n    this.embedElement.addEventListener(\"click\", this.embed.bind(this))\n  }\n\n  didInput(event) {\n    let value = event.target.value.trim()\n\n    // Load patterns from server so we can dynamically update them\n    if (this.patterns === undefined) {\n      this.loadPatterns(value)\n\n    // When patterns are loaded, we can just fetch the embed code\n    } else if (this.match(value)) {\n      this.fetch(value)\n\n    // No embed code, just reset the form\n    } else {\n      this.reset()\n    }\n  }\n\n  async loadPatterns(value) {\n    const response = await get(\"/action_text/embeds/patterns.json\", { responseKind: \"json\" })\n    if (response.ok) {\n      const patterns = await response.json\n      this.patterns = patterns.map(pattern => new RegExp(pattern.source, pattern.options))\n      if (this.match(value)) {\n        this.fetch(value)\n      }\n    }\n  }\n\n  // Checks if a url matches an embed code format\n  match(value) {\n    return this.patterns.some(regex => regex.test(value))\n  }\n\n  fetch(value) {\n    Rails.ajax({\n      url: `/action_text/embeds?id=${encodeURIComponent(value)}`,\n      type: 'post',\n      error: this.reset.bind(this),\n      success: this.showEmbed.bind(this)\n    })\n  }\n\n  embed(event) {\n    if (this.currentEmbed == null) { return }\n\n    let attachment = new Trix.Attachment(this.currentEmbed)\n    this.editor.insertAttachment(attachment)\n    this.element.focus()\n  }\n\n  showEmbed(embed) {\n    this.currentEmbed = embed\n    this.embedContainerElement.style.display = \"block\"\n  }\n\n  reset() {\n    this.embedContainerElement.style.display = \"none\"\n    this.currentEmbed = null\n  }\n}\n\nclass InlineCode {\n  constructor(element) {\n    this.element = element\n    this.editor = element.editor\n    this.toolbar = element.toolbarElement\n\n    this.installEventHandlers()\n  }\n\n  installEventHandlers() {\n    const blockCodeButton = this.toolbar.querySelector(\"[data-trix-attribute=code]\")\n    const inlineCodeButton = blockCodeButton.cloneNode(true)\n\n    inlineCodeButton.hidden = true\n    inlineCodeButton.dataset.trixAttribute = \"inlineCode\"\n    blockCodeButton.insertAdjacentElement(\"afterend\", inlineCodeButton)\n\n    this.element.addEventListener(\"trix-selection-change\", _ => {\n      const type = this.getCodeFormattingType()\n      blockCodeButton.hidden = type == \"inline\"\n      inlineCodeButton.hidden = type == \"block\"\n    })\n  }\n\n  getCodeFormattingType() {\n    if (this.editor.attributeIsActive(\"code\")) return \"block\"\n    if (this.editor.attributeIsActive(\"inlineCode\")) return \"inline\"\n\n    const range = this.editor.getSelectedRange()\n    if (range[0] == range[1]) return \"block\"\n\n    const text = this.editor.getSelectedDocument().toString().trim()\n    return /\\n/.test(text) ? \"block\" : \"inline\"\n  }\n}\n\ndocument.addEventListener(\"trix-initialize\", function(event) {\n  new EmbedController(event.target)\n  new InlineCode(event.target)\n})\n", "\n        import * as module0 from './src/actiontext.js';import * as module1 from './src/advanced_search.js';import * as module2 from './src/confirm.js';import * as module3 from './src/direct_uploads.js';import * as module4 from './src/lazysrc.js';import * as module5 from './src/reorder_steps.js';import * as module6 from './src/timezone.js';import * as module7 from './src/turbo_native/bridge.js';import * as module8 from './src/turbo_streams.js'\n        const modules = [{name: 'src--actiontext.js', module: module0, filename: './src/actiontext.js'},{name: 'src--advanced-search.js', module: module1, filename: './src/advanced_search.js'},{name: 'src--confirm.js', module: module2, filename: './src/confirm.js'},{name: 'src--direct-uploads.js', module: module3, filename: './src/direct_uploads.js'},{name: 'src--lazysrc.js', module: module4, filename: './src/lazysrc.js'},{name: 'src--reorder-steps.js', module: module5, filename: './src/reorder_steps.js'},{name: 'src--timezone.js', module: module6, filename: './src/timezone.js'},{name: 'src--turbo-native--bridge.js', module: module7, filename: './src/turbo_native/bridge.js'},{name: 'src--turbo-streams.js', module: module8, filename: './src/turbo_streams.js'}]\n        export default modules;\n      ", "/*! js-cookie v3.0.1 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n    for (var key in source) {\n      target[key] = source[key];\n    }\n  }\n  return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n  read: function (value) {\n    if (value[0] === '\"') {\n      value = value.slice(1, -1);\n    }\n    return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n  },\n  write: function (value) {\n    return encodeURIComponent(value).replace(\n      /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n      decodeURIComponent\n    )\n  }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n  function set (key, value, attributes) {\n    if (typeof document === 'undefined') {\n      return\n    }\n\n    attributes = assign({}, defaultAttributes, attributes);\n\n    if (typeof attributes.expires === 'number') {\n      attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n    }\n    if (attributes.expires) {\n      attributes.expires = attributes.expires.toUTCString();\n    }\n\n    key = encodeURIComponent(key)\n      .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n      .replace(/[()]/g, escape);\n\n    var stringifiedAttributes = '';\n    for (var attributeName in attributes) {\n      if (!attributes[attributeName]) {\n        continue\n      }\n\n      stringifiedAttributes += '; ' + attributeName;\n\n      if (attributes[attributeName] === true) {\n        continue\n      }\n\n      // Considers RFC 6265 section 5.2:\n      // ...\n      // 3.  If the remaining unparsed-attributes contains a %x3B (\";\")\n      //     character:\n      // Consume the characters of the unparsed-attributes up to,\n      // not including, the first %x3B (\";\") character.\n      // ...\n      stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n    }\n\n    return (document.cookie =\n      key + '=' + converter.write(value, key) + stringifiedAttributes)\n  }\n\n  function get (key) {\n    if (typeof document === 'undefined' || (arguments.length && !key)) {\n      return\n    }\n\n    // To prevent the for loop in the first place assign an empty array\n    // in case there are no cookies at all.\n    var cookies = document.cookie ? document.cookie.split('; ') : [];\n    var jar = {};\n    for (var i = 0; i < cookies.length; i++) {\n      var parts = cookies[i].split('=');\n      var value = parts.slice(1).join('=');\n\n      try {\n        var foundKey = decodeURIComponent(parts[0]);\n        jar[foundKey] = converter.read(value, foundKey);\n\n        if (key === foundKey) {\n          break\n        }\n      } catch (e) {}\n    }\n\n    return key ? jar[key] : jar\n  }\n\n  return Object.create(\n    {\n      set: set,\n      get: get,\n      remove: function (key, attributes) {\n        set(\n          key,\n          '',\n          assign({}, attributes, {\n            expires: -1\n          })\n        );\n      },\n      withAttributes: function (attributes) {\n        return init(this.converter, assign({}, this.attributes, attributes))\n      },\n      withConverter: function (converter) {\n        return init(assign({}, this.converter, converter), this.attributes)\n      }\n    },\n    {\n      attributes: { value: Object.freeze(defaultAttributes) },\n      converter: { value: Object.freeze(converter) }\n    }\n  )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport default api;\n", "import Cookies from 'js-cookie'\nimport jstz from 'jstz'\n\n// Rails doesn't support every timezone that Intl supports\nexport function findTimeZone() {\n  const oldIntl = window.Intl\n  try {\n    window.Intl = undefined\n    const tz = jstz.determine().name()\n    window.Intl = oldIntl\n    return tz\n  } catch (e) {\n    // sometimes (on android) you can't override intl\n    return jstz.determine().name()\n  }\n}\n\ndocument.addEventListener(\"turbo:load\", () => {\n  Cookies.set(\"browser_time_zone\", findTimeZone(), { expires: 365, path: \"/\", secure: true, sameSite: 'strict' })\n})\n", "class Bridge {\n  // Toggles navbar visibility in browser from Native\n  static toggleNavBar() {\n    const event = new CustomEvent(\"toggle-nav-bar\")\n    window.dispatchEvent(event)\n  }\n\n  // Sets the notification count on the app icon and currently visible tab.\n  // Passing 0 will remove/clear the badge. Passing null will have no effect.\n  static setNotificationCount(icon, tab = icon) {\n    this.postMessage(\"showNotificationBadge\", {icon, tab})\n  }\n\n  // Sends a message to the native app, if active.\n  static postMessage(name, data = {}) {\n    // iOS\n    window.webkit?.messageHandlers?.nativeApp?.postMessage({name, ...data})\n\n    // Android\n    window.nativeApp?.postMessage(JSON.stringify({name, ...data}))\n  }\n}\n\n// Expose this on the window object so TurboNative can interact with it\nwindow.TurboNativeBridge = Bridge\nexport default Bridge\n", "// Add your own Custom Turbo StreamActions\n// Define Rails helpers in `app/helpers/turbo_stream_actions_helper.rb`\n//\n// These actions run in the context of a turbo-stream element. You have access to methods like the following:\n//\n//   this.action - The action attribute value (for example: \"append\")\n//   this.target - The target attribute value (the target element ID)\n//   this.targetElements - An array of target elements the template will be rendered to\n//   this.templateContent - The contents of the main `<template>`\n//\n// Source code for the stream element can be found here:\n// https://github.com/hotwired/turbo/blob/main/src/elements/stream_element.ts\n\nimport { StreamActions } from \"@hotwired/turbo\"\n\n// Remove elements after X milliseconds\n// <%= turbo_stream.remove_later, target: \"my-id\", after: \"2000\" %>\nStreamActions.remove_later = function() {\n  setTimeout(() => {\n    this.targetElements.forEach((element) => element.remove())\n  }, this.getAttribute(\"after\"))\n}\n"],
  "mappings": "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",
  "names": ["Rails", "m", "$", "CustomEvent", "e", "options", "error", "consumer", "error", "consumer", "s", "consumer", "s", "subscription", "a", "__webpack_require__", "ClipboardActionCut", "fakeCopyAction", "options", "ClipboardActionCopy", "_typeof", "obj", "ClipboardActionDefault", "_classCallCheck", "_defineProperties", "i", "_createClass", "_inherits", "_setPrototypeOf", "o", "p", "_createSuper", "_isNativeReflectConstruct", "_getPrototypeOf", "_possibleConstructorReturn", "self", "_assertThisInitialized", "e", "Clipboard", "destroy", "action", "module", "elements", "exports", "E", "__extends", "__assign", "__rest", "__decorate", "__param", "__esDecorate", "__runInitializers", "__propKey", "__setFunctionName", "__metadata", "__awaiter", "__generator", "__exportStar", "__values", "__read", "__spread", "__spreadArrays", "__spreadArray", "__await", "__asyncGenerator", "__asyncDelegator", "__asyncValues", "__makeTemplateObject", "__importStar", "__importDefault", "__classPrivateFieldGet", "__classPrivateFieldSet", "__classPrivateFieldIn", "__createBinding", "exports", "v", "d", "b", "p", "t", "s", "i", "n", "e", "c", "r", "f", "_", "x", "P", "y", "g", "m", "o", "k", "k2", "error", "a", "j", "l", "q", "global", "ownKeys", "_objectSpread2", "i", "_defineProperty", "obj", "_classCallCheck", "_defineProperties", "_createClass", "o", "n", "isNaN", "isPositiveNumber", "hasOwnProperty", "error", "assign", "styles", "toggleClass", "listener", "options", "get", "dispatchEvent", "location", "x2", "y2", "z2", "end", "start", "offset", "render", "preview", "left", "top", "events", "unbind", "change", "right", "bottom", "check", "p", "destroy", "x", "y", "getData", "setData", "Cropper", "init", "read", "done", "Array", "prototype", "find", "predicate", "this", "TypeError", "value", "list", "Object", "length", "thisArg", "arguments", "i", "call", "window", "CustomEvent", "event", "params", "bubbles", "cancelable", "detail", "undefined", "evt", "document", "createEvent", "initCustomEvent", "Event", "TributeEvents", "tribute", "events", "element", "boundKeydown", "keydown", "bind", "boundKeyup", "keyup", "boundInput", "input", "addEventListener", "removeEventListener", "instance", "shouldDeactivate", "isActive", "hideMenu", "commandEvent", "keys", "forEach", "o", "key", "keyCode", "callbacks", "toLowerCase", "inputEvent", "menu", "contains", "target", "li", "preventDefault", "stopPropagation", "nodeName", "parentNode", "Error", "selectItemAtIndex", "getAttribute", "current", "externalTrigger", "setTimeout", "updateSelection", "allowSpaces", "hasTrailingSpace", "autocompleteMode", "triggerChar", "getKeyCode", "isNaN", "trigger", "triggers", "charCodeAt", "mentionText", "collection", "menuShowMinLength", "showMenuFor", "eventKeyPressed", "el", "info", "range", "getTriggerInfo", "mentionTriggerChar", "selectedPath", "mentionSelectedPath", "selectedOffset", "mentionSelectedOffset", "e", "_this", "collectionItem", "item", "enter", "filteredItems", "menuSelected", "escape", "tab", "space", "spaceSelectsMatch", "up", "count", "selected", "setActiveLi", "scrollTop", "scrollHeight", "down", "index", "lis", "querySelectorAll", "parseInt", "classList", "add", "selectClass", "liClientRect", "getBoundingClientRect", "menuClientRect", "bottom", "scrollDistance", "top", "remove", "elem", "includeMargin", "height", "style", "currentStyle", "getComputedStyle", "parseFloat", "marginTop", "marginBottom", "t", "TributeMenuEvents", "menuEvents", "menuClickEvent", "click", "menuContainerScrollEvent", "debounce", "windowResizeEvent", "positionMenuAtCaret", "getDocument", "menuContainer", "func", "wait", "immediate", "timeout", "context", "_this2", "args", "callNow", "clearTimeout", "apply", "TributeRange", "iframe", "contentWindow", "scrollTo", "coordinates", "positionMenu", "cssText", "isContentEditable", "getContentEditableCaretPosition", "mentionPosition", "getTextAreaOrInputUnderlinePosition", "left", "right", "scrollIntoView", "menuDimensions", "width", "offsetWidth", "offsetHeight", "menuIsOffScreen", "isMenuOffScreen", "menuIsOffScreenHorizontally", "innerWidth", "menuIsOffScreenVertically", "innerHeight", "targetElement", "path", "offset", "childNodes", "nextSibling", "previousSibling", "sel", "getWindowSelection", "createRange", "setStart", "setEnd", "collapse", "removeAllRanges", "error", "addRange", "focus", "text", "requireLeadingSpace", "originalEvent", "replaceEvent", "replaceTextSuffix", "endPos", "pasteHtml", "myField", "textSuffix", "startPos", "substring", "selectionStart", "selectionEnd", "dispatchEvent", "html", "anchorNode", "deleteContents", "createElement", "innerHTML", "node", "lastNode", "frag", "createDocumentFragment", "firstChild", "appendChild", "insertNode", "cloneRange", "setStartAfter", "getSelection", "ctx", "ce", "contentEditable", "getNodePositionInParent", "push", "reverse", "getRangeAt", "startOffset", "selectedElem", "workingNodeContent", "textContent", "selectStartOffset", "textComponent", "wordsArray", "replace", "split", "trim", "menuAlreadyActive", "isAutocomplete", "selectionInfo", "getContentEditableSelectedPath", "effectiveRange", "getTextPrecedingCurrentSelection", "lastWordOfEffectiveRange", "getLastWordInText", "mentionSelectedElement", "mostRecentTriggerCharPos", "config", "c", "idx", "lastIndexWithLeadingSpace", "lastIndexOf", "test", "currentTriggerSnippet", "firstSnippetChar", "leadingSpace", "regex", "str", "reversedStr", "join", "cidx", "len", "firstChar", "match", "triggerIdx", "windowWidth", "windowHeight", "doc", "documentElement", "windowLeft", "pageXOffset", "scrollLeft", "clientLeft", "windowTop", "pageYOffset", "clientTop", "menuTop", "menuRight", "menuBottom", "menuLeft", "Math", "floor", "ceil", "dimensions", "position", "flipped", "isFirefox", "mozInnerScreenX", "div", "id", "body", "computed", "whiteSpace", "wordWrap", "visibility", "prop", "overflowY", "overflow", "span", "rect", "menuContainerIsBody", "offsetTop", "borderTopWidth", "fontSize", "offsetLeft", "borderLeftWidth", "getMenuDimensions", "parentHeight", "scrollStillAvailable", "removeChild", "selectedNodePosition", "clientRect", "elemTop", "elemBottom", "maxY", "targetY", "TributeSearch", "search", "pattern", "array", "filter", "string", "opts", "pre", "post", "compareString", "caseSensitive", "skip", "rendered", "score", "patternCache", "traverse", "render", "cache", "stringIndex", "patternIndex", "calculateScore", "slice", "best", "temp", "indexOf", "pop", "indices", "arr", "reduce", "prev", "extract", "original", "sort", "a", "b", "compare", "values", "h", "n", "f", "p", "containerClass", "g", "itemClass", "y", "T", "selectTemplate", "S", "k", "menuItemTemplate", "M", "lookup", "L", "fillAttr", "N", "D", "R", "noMatchTemplate", "H", "j", "z", "searchOpts", "X", "V", "menuItemLimit", "J", "Tribute", "defaultSelectTemplate", "defaultMenuItemTemplate", "console", "warn", "map", "jQuery", "get", "constructor", "NodeList", "HTMLCollection", "_attach", "hasAttribute", "ensureEditable", "setAttribute", "inputTypes", "wrapper", "ul", "className", "currentMentionTextSnapshot", "createMenu", "tributeMenu", "processValues", "items", "querySelector", "noMatchEvent", "fragment", "_findLiTarget", "movementY", "collectionIndex", "activeElement", "placeCaretAtEnd", "insertTextAtCursor", "insertAtCaret", "selectNodeContents", "createTextRange", "textRange", "moveToElementText", "select", "textNode", "createTextNode", "textarea", "scrollPos", "caretPos", "front", "back", "content", "replaceText", "replaceTriggerText", "newValues", "concat", "_append", "_detach", "unbind", "removeAttribute", "_this3", "_isActive", "val", "matchItem", "forEvents", "events", "callback", "split", "forEach", "event", "MicroEvent", "constructor", "_events", "on", "fct", "event_array", "push", "off", "n", "arguments", "length", "undefined", "splice", "indexOf", "trigger", "args", "self", "apply", "MicroPlugin", "Interface", "plugins", "names", "settings", "requested", "loaded", "define", "name", "fn", "initializePlugins", "key", "queue", "Array", "isArray", "plugin", "options", "hasOwnProperty", "shift", "require", "loadPlugin", "Error", "i", "p", "start", "code_points", "unicode_map", "a", "b", "j", "filter", "iterate", "get_field", "s", "_", "object", "getDom", "query", "jquery", "HTMLElement", "isHtmlString", "tpl", "document", "createElement", "innerHTML", "trim", "content", "firstChild", "querySelector", "arg", "escapeQuery", "replace", "triggerEvent", "dom_el", "event_name", "createEvent", "initEvent", "dispatchEvent", "applyCSS", "css", "Object", "assign", "style", "addClasses", "elmts", "classes", "norm_classes", "classesArray", "castAsArray", "map", "el", "cls", "classList", "add", "removeClasses", "remove", "_classes", "concat", "Boolean", "parentMatch", "target", "selector", "wrapper", "contains", "matches", "parentNode", "getTail", "list", "direction", "isEmptyObject", "obj", "keys", "nodeIndex", "amongst", "nodeName", "previousElementSibling", "setAttr", "attrs", "val", "attr", "removeAttribute", "setAttribute", "replaceNode", "existing", "replacement", "replaceChild", "highlight", "element", "regex", "RegExp", "highlightText", "node", "match", "data", "spannode", "className", "middlebit", "splitText", "index", "middleclone", "cloneNode", "appendChild", "highlightChildren", "nodeType", "childNodes", "test", "tagName", "from", "highlightRecursive", "removeHighlight", "elements", "querySelectorAll", "prototype", "call", "parent", "normalize", "KEY_A", "KEY_RETURN", "KEY_ESC", "KEY_LEFT", "KEY_UP", "KEY_RIGHT", "KEY_DOWN", "KEY_BACKSPACE", "KEY_DELETE", "KEY_TAB", "IS_MAC", "navigator", "userAgent", "KEY_SHORTCUT", "defaults", "optgroups", "delimiter", "splitOn", "persist", "diacritics", "create", "createOnBlur", "createFilter", "openOnFocus", "shouldOpen", "maxOptions", "maxItems", "hideSelected", "duplicates", "addPrecedence", "selectOnTab", "preload", "allowEmptyOption", "loadThrottle", "loadingClass", "dataAttr", "optgroupField", "valueField", "labelField", "disabledField", "optgroupLabelField", "optgroupValueField", "lockOptgroupOrder", "sortField", "searchField", "searchConjunction", "mode", "wrapperClass", "controlClass", "dropdownClass", "dropdownContentClass", "itemClass", "optionClass", "dropdownParent", "controlInput", "copyClassesToDropdown", "placeholder", "hidePlaceholder", "shouldLoad", "render", "hash_key", "value", "get_hash", "escape_html", "str", "loadDebounce", "delay", "timeout", "loading", "Math", "max", "clearTimeout", "setTimeout", "loadedSearches", "debounce_events", "types", "type", "event_args", "getSelection", "input", "selectionStart", "selectionEnd", "preventDefault", "evt", "stop", "stopPropagation", "addEvent", "addEventListener", "isKeyDown", "key_name", "count", "altKey", "ctrlKey", "shiftKey", "metaKey", "getId", "id", "existing_id", "getAttribute", "addSlashes", "append", "getSettings", "settings_user", "attr_data", "field_label", "field_value", "field_disabled", "field_optgroup", "field_optgroup_label", "field_optgroup_value", "tag_name", "toLowerCase", "option", "textContent", "settings_element", "items", "init_select", "optionsMap", "group_count", "readData", "dataset", "json", "JSON", "parse", "addOption", "group", "arr", "option_data", "disabled", "$option", "selected", "addGroup", "optgroup", "optgroup_data", "children", "hasAttribute", "child", "init_textbox", "data_raw", "values", "opt", "instance_i", "TomSelect", "input_arg", "user_settings", "control_input", "dropdown", "control", "dropdown_content", "focus_node", "order", "tabIndex", "is_select_tag", "rtl", "inputId", "_destroy", "sifter", "isOpen", "isDisabled", "isRequired", "isInvalid", "isValid", "isLocked", "isFocused", "isInputHidden", "isSetup", "ignoreFocus", "ignoreHover", "hasOptions", "currentResults", "lastValue", "caretPos", "activeOption", "activeItems", "userOptions", "dir", "tomselect", "computedStyle", "window", "getComputedStyle", "getPropertyValue", "required", "Sifter", "setupCallbacks", "setupTemplates", "_render", "inputMode", "setup", "passive_event", "passive", "listboxId", "role", "control_id", "label", "label_click", "focus", "bind", "for", "label_id", "width", "classes_plugins", "join", "multiple", "escape_regex", "load", "e", "target_match", "onOptionHover", "capture", "onOptionSelect", "onItemSelect", "onClick", "onKeyDown", "onKeyPress", "onInput", "onBlur", "onFocus", "onPaste", "doc_mousedown", "composedPath", "blur", "inputState", "win_scroll", "positionDropdown", "removeEventListener", "revertSettings", "insertAdjacentElement", "sync", "refreshState", "updateOriginalInput", "refreshItems", "close", "disable", "enable", "onChange", "setupOptions", "addOptions", "registerOptionGroup", "templates", "escape", "callbacks", "get_settings", "setValue", "lastQuery", "clearActiveItems", "onMouseDown", "pastedText", "inputValue", "splitInput", "piece", "hash", "addItem", "createItem", "character", "String", "fromCharCode", "keyCode", "which", "constants", "selectAll", "open", "next", "getAdjacent", "setActiveOption", "prev", "canSelect", "activeElement", "advanceSelection", "deleteSelection", "refreshOptions", "wasFocused", "showInput", "hasFocus", "deactivate", "setActiveItem", "setCaret", "parentElement", "closeAfterSelect", "item", "canLoad", "loadCallback", "clearActiveOption", "setTextboxValue", "changed", "getValue", "silent", "clear", "addItems", "setMaxItems", "eventName", "begin", "end", "swap", "last", "getLastActive", "setActiveItemClass", "removeActiveItem", "hideInput", "last_active", "idx", "scroll", "scrollToOption", "behavior", "height_menu", "clientHeight", "scrollTop", "height_item", "offsetHeight", "y", "getBoundingClientRect", "top", "scrollBehavior", "controlChildren", "toggle", "offsetWidth", "getScoreFunction", "getSearchOptions", "sort", "field", "fields", "conjunction", "nesting", "search", "result", "calculateScore", "score", "hashed", "triggerDropdown", "k", "html", "has_create_option", "active_group", "groups", "groups_order", "same_query", "results", "active_option", "show_dropdown", "closest", "min", "opt_value", "opt_hash", "option_el", "getOption", "includes", "group_fragment", "createDocumentFragment", "$id", "toString", "grp_a", "grp_b", "a_order", "$order", "b_order", "group_heading", "group_options", "header", "group_html", "tokens", "tok", "add_template", "template", "insertBefore", "canCreate", "active_index", "selectable", "user_created", "dat", "registerOption", "addOptionGroup", "hashed_id", "removeOptionGroup", "clearCache", "clearOptionGroups", "updateOption", "item_new", "index_item", "value_old", "value_new", "data_old", "getItem", "uncacheValue", "option_new", "removeOption", "removeItem", "clearOptions", "boundFilter", "clearFilter", "$div", "all", "x", "last_item", "isPending", "wasFull", "isFull", "insertAtCaret", "caret", "output", "lock", "created", "unlock", "refreshValidityState", "wrap_classList", "validity", "valid", "opts", "empty_option", "AddSelected", "has_selected", "reuse_opt", "visibility", "display", "context", "rect", "scrollY", "left", "scrollX", "selection", "tail", "rm_items", "rm_item", "shouldDelete", "pop", "onDelete", "adjacent", "nextElementSibling", "moveCaret", "new_pos", "destroy", "templateName", "hook", "when", "method", "new_fn", "orig_method", "result_new", "orig_onOptionSelect", "UpdateCheckbox", "checkbox", "HTMLInputElement", "checked", "orig_render_option", "rendered", "prepend", "title", "button", "$", "sortable", "orig_lock", "orig_unlock", "$control", "forcePlaceholderSize", "ui", "helper", "overflow", "each", "headerClass", "titleRowClass", "labelClass", "closeClass", "close_link", "div", "orig_onBlur", "relatedTarget", "preventScroll", "test_input", "cssText", "transfer_styles", "style_name", "resize", "clientWidth", "orig_deleteSelection", "orig_keydown", "previousSibling", "nextSibling", "orig_render_item", "close_button", "text", "orig_canLoad", "orig_clearActiveOption", "orig_loadCallback", "pagination", "loading_more", "load_more_opt", "default_values", "shouldLoadMore", "scroll_percent", "scrollHeight", "firstUrl", "canLoadMore", "setNextUrl", "next_url", "getUrl", "first_option", "no_more_results", "change_listener", "checkbox_options", "clear_button", "drag_drop", "dropdown_header", "caret_position", "dropdown_input", "input_autogrow", "no_backspace_delete", "no_active_items", "optgroup_columns", "remove_button", "restore_on_backspace", "virtual_scroll", "error", "jstz", "get_date_offset", "offset", "lookup_key", "get_from_internationalization_api", "format", "dst_dates", "find_dst_fold", "best_dst_match", "score_sample", "sample", "score", "j", "i", "get_by_dst", "get_rules", "check_has_dst", "rules", "determine", "require_jstz", "global", "exports", "module", "x", "k", "a", "b", "c", "d", "s", "i", "n", "hi", "j", "end", "hex", "SparkMD5", "hash", "start", "elements", "dispatchEvent", "error", "t", "e", "n", "r", "a", "i", "o", "s", "u", "c", "l", "d", "h", "f", "m", "p", "HTMLElement", "FrameLoadingStyle", "location", "left", "right", "i", "_", "elements", "FetchMethod", "error", "FormSubmissionState", "FormEnctype", "cookie", "x", "y", "options", "TimingMetric", "VisitState", "SystemStatusCode", "session", "visit", "PageStage", "render", "e", "Turbo", "element", "c", "createConsumer", "m", "x", "global", "exports", "module", "x", "k", "a", "b", "c", "d", "s", "i", "n", "hi", "j", "end", "hex", "SparkMD5", "hash", "start", "elements", "dispatchEvent", "error", "left", "right", "application", "error", "options", "_", "e", "filter", "fetch", "match", "oldValue", "left", "right", "_", "error", "constructor", "extend", "a", "b", "application", "logger", "elements", "element", "c", "n", "k", "v", "filter", "read", "write", "s", "now", "secondsSince", "ConnectionMonitor", "message_types", "protocols", "supportedProtocols", "indexOf", "Connection", "consumer", "error", "extend", "Subscription", "SubscriptionGuarantor", "s", "Subscriptions", "subscription", "Consumer", "createWebSocketURL", "a", "createConsumer", "getConfig", "createConsumer", "error", "start", "name", "style", "x", "y", "getComputedStyle", "getComputedStyle", "window", "min", "max", "v", "toPaddingObject", "options", "popperOffsets", "min", "max", "offset", "effect", "x", "y", "popper", "getComputedStyle", "options", "effect", "options", "window", "hash", "x", "y", "x", "y", "getComputedStyle", "getComputedStyle", "clippingParents", "getComputedStyle", "reference", "start", "options", "popperOffsets", "offset", "options", "placements", "placement", "a", "b", "options", "placements", "placement", "i", "start", "_loop", "_i", "checks", "offset", "options", "x", "y", "options", "popperOffsets", "offset", "min", "max", "start", "fn", "p", "c", "self", "s", "fn", "merged", "defaultModifiers", "defaultOptions", "createPopper", "reference", "popper", "options", "m", "getComputedStyle", "fn", "destroy", "state", "effect", "noopFn", "BOX_CLASS", "CONTENT_CLASS", "BACKDROP_CLASS", "ARROW_CLASS", "SVG_ARROW_CLASS", "TOUCH_OPTIONS", "passive", "capture", "TIPPY_DEFAULT_APPEND_TO", "document", "body", "hasOwnProperty", "obj", "key", "call", "getValueAtIndexOrReturn", "value", "index", "defaultValue", "Array", "isArray", "v", "isType", "type", "str", "toString", "indexOf", "invokeWithArgsOrReturn", "args", "debounce", "fn", "ms", "timeout", "arg", "clearTimeout", "setTimeout", "removeProperties", "keys", "clone", "forEach", "splitBySpaces", "split", "filter", "Boolean", "normalizeToArray", "concat", "pushIfUnique", "arr", "push", "unique", "item", "getBasePlacement", "placement", "arrayFrom", "slice", "removeUndefinedProps", "Object", "reduce", "acc", "undefined", "div", "createElement", "isElement", "some", "isNodeList", "isMouseEvent", "isReferenceElement", "_tippy", "reference", "getArrayOfElements", "querySelectorAll", "setTransitionDuration", "els", "el", "style", "transitionDuration", "setVisibilityState", "state", "setAttribute", "getOwnerDocument", "elementOrElements", "element", "ownerDocument", "isCursorOutsideInteractiveBorder", "popperTreeData", "event", "clientX", "clientY", "every", "popperRect", "popperState", "props", "interactiveBorder", "basePlacement", "offsetData", "modifiersData", "offset", "topDistance", "top", "y", "bottomDistance", "bottom", "leftDistance", "left", "x", "rightDistance", "right", "exceedsTop", "exceedsBottom", "exceedsLeft", "exceedsRight", "updateTransitionEndListener", "box", "action", "listener", "method", "actualContains", "parent", "child", "target", "contains", "getRootNode", "host", "currentInput", "isTouch", "lastMouseMoveTime", "onDocumentTouchStart", "window", "performance", "addEventListener", "onDocumentMouseMove", "now", "removeEventListener", "onWindowBlur", "activeElement", "instance", "blur", "isVisible", "bindGlobalEventListeners", "isBrowser", "isIE11", "msCrypto", "createMemoryLeakWarning", "txt", "join", "clean", "spacesAndTabs", "lineStartWithSpaces", "replace", "trim", "getDevMessage", "message", "getFormattedMessage", "visitedMessages", "resetVisitedMessages", "Set", "warnWhen", "condition", "has", "add", "console", "warn", "errorWhen", "error", "validateTargets", "targets", "didPassFalsyValue", "didPassPlainObject", "prototype", "String", "pluginProps", "animateFill", "followCursor", "inlinePositioning", "sticky", "renderProps", "allowHTML", "animation", "arrow", "content", "inertia", "maxWidth", "role", "theme", "zIndex", "defaultProps", "appendTo", "aria", "expanded", "delay", "duration", "getReferenceClientRect", "hideOnClick", "ignoreAttributes", "interactive", "interactiveDebounce", "moveTransition", "onAfterUpdate", "onBeforeUpdate", "onCreate", "onDestroy", "onHidden", "onHide", "onMount", "onShow", "onShown", "onTrigger", "onUntrigger", "onClickOutside", "plugins", "popperOptions", "render", "showOnCreate", "touch", "trigger", "triggerTarget", "defaultKeys", "setDefaultProps", "partialProps", "validateProps", "getExtendedPassedProps", "passedProps", "plugin", "name", "getDataAttributeProps", "propKeys", "valueAsString", "getAttribute", "JSON", "parse", "e", "evaluateProps", "out", "prop", "nonPluginProps", "didPassUnknownProp", "length", "innerHTML", "dangerouslySetInnerHTML", "html", "createArrowElement", "className", "appendChild", "setContent", "textContent", "getChildren", "popper", "firstElementChild", "boxChildren", "children", "find", "node", "classList", "backdrop", "onUpdate", "prevProps", "nextProps", "removeAttribute", "removeChild", "$$tippy", "idCounter", "mouseMoveListeners", "mountedInstances", "createTippy", "showTimeout", "hideTimeout", "scheduleHideAnimationFrame", "isVisibleFromClick", "didHideDueToDocumentMouseDown", "didTouchMove", "ignoreOnFirstUpdate", "lastTriggerEvent", "currentTransitionEndListener", "onFirstUpdate", "listeners", "debouncedOnMouseMove", "onMouseMove", "currentTarget", "id", "popperInstance", "isEnabled", "isDestroyed", "isMounted", "isShown", "clearDelayTimeouts", "setProps", "show", "hide", "hideWithInteractivity", "enable", "disable", "unmount", "destroy", "pluginsHooks", "map", "hasAriaExpanded", "hasAttribute", "addListeners", "handleAriaExpandedAttribute", "handleStyles", "invokeHook", "scheduleShow", "getDocument", "getNormalizedTouchSettings", "getIsCustomTouchBehavior", "getIsDefaultRenderFn", "getCurrentTarget", "parentNode", "getDefaultTemplateChildren", "getDelay", "isShow", "fromHide", "pointerEvents", "hook", "shouldInvokePropsHook", "pluginHooks", "handleAriaContentAttribute", "attr", "nodes", "currentValue", "nextValue", "cleanupInteractiveMouseListeners", "onDocumentPress", "actualTarget", "composedPath", "removeDocumentPress", "onTouchMove", "onTouchStart", "addDocumentPress", "doc", "onTransitionedOut", "callback", "onTransitionEnd", "onTransitionedIn", "on", "eventType", "handler", "options", "onMouseLeave", "onBlurOrFocusOut", "removeListeners", "shouldScheduleClickHide", "isEventListenerStopped", "wasFocused", "scheduleHide", "isCursorOverReferenceOrPopper", "getNestedPopperTree", "getBoundingClientRect", "shouldBail", "relatedTarget", "createPopperInstance", "destroyPopperInstance", "computedReference", "contextElement", "tippyModifier", "enabled", "phase", "requires", "attributes", "modifiers", "padding", "adaptive", "createPopper", "mount", "nextElementSibling", "touchValue", "touchDelay", "requestAnimationFrame", "cancelAnimationFrame", "nestedPopper", "forceUpdate", "isAlreadyVisible", "isDisabled", "isTouchAndTouchDisabled", "visibility", "transition", "offsetHeight", "isAlreadyHidden", "i", "tippy", "optionalProps", "elements", "isSingleContentElement", "isMoreThanOneReferenceElement", "instances", "applyStylesModifier", "applyStyles", "effect", "state", "initialStyles", "popper", "position", "options", "strategy", "left", "top", "margin", "arrow", "reference", "Object", "assign", "elements", "style", "styles", "tippy", "setDefaultProps", "render", "ClipboardJS", "e", "global", "window", "supportsAdoptingStyleSheets", "ShadowRoot", "ShadyCSS", "nativeShadow", "Document", "prototype", "CSSStyleSheet", "constructionToken", "Symbol", "cssTagCache", "WeakMap", "CSSResult", "constructor", "cssText", "strings", "safeToken", "this", "Error", "_strings", "styleSheet", "_styleSheet", "cacheable", "length", "get", "replaceSync", "set", "toString", "unsafeCSS", "value", "String", "css", "values", "reduce", "acc", "v", "idx", "adoptStyles", "renderRoot", "styles", "adoptedStyleSheets", "map", "s", "forEach", "style", "document", "createElement", "nonce", "setAttribute", "textContent", "appendChild", "getCompatibleStyle", "sheet", "rule", "cssRules", "global", "window", "trustedTypes", "emptyStringForBooleanAttribute", "emptyScript", "polyfillSupport", "reactiveElementPolyfillSupport", "defaultConverter", "toAttribute", "value", "type", "Boolean", "Object", "Array", "JSON", "stringify", "fromAttribute", "fromValue", "Number", "parse", "e", "notEqual", "old", "defaultPropertyDeclaration", "attribute", "String", "converter", "reflect", "hasChanged", "ReactiveElement", "HTMLElement", "constructor", "super", "this", "__instanceProperties", "Map", "isUpdatePending", "hasUpdated", "__reflectingProperty", "_initialize", "static", "initializer", "finalize", "_a", "_initializers", "push", "observedAttributes", "attributes", "elementProperties", "forEach", "v", "p", "attr", "__attributeNameForProperty", "__attributeToPropertyMap", "set", "name", "options", "state", "noAccessor", "prototype", "hasOwnProperty", "key", "Symbol", "descriptor", "getPropertyDescriptor", "defineProperty", "get", "oldValue", "requestUpdate", "configurable", "enumerable", "superCtor", "getPrototypeOf", "props", "properties", "propKeys", "getOwnPropertyNames", "getOwnPropertySymbols", "createProperty", "elementStyles", "finalizeStyles", "styles", "isArray", "Set", "flat", "Infinity", "reverse", "s", "unshift", "getCompatibleStyle", "toLowerCase", "__updatePromise", "Promise", "res", "enableUpdating", "_$changedProperties", "__saveInstanceProperties", "i", "addController", "controller", "__controllers", "renderRoot", "isConnected", "_b", "hostConnected", "call", "removeController", "splice", "indexOf", "_v", "createRenderRoot", "shadowRoot", "attachShadow", "shadowRootOptions", "adoptStyles", "connectedCallback", "c", "_requestedUpdate", "disconnectedCallback", "hostDisconnected", "attributeChangedCallback", "_old", "_$attributeToProperty", "__propertyToAttribute", "attrValue", "undefined", "removeAttribute", "setAttribute", "ctor", "propName", "getPropertyOptions", "shouldRequestUpdate", "has", "__reflectingProperties", "__enqueueUpdate", "async", "reject", "result", "scheduleUpdate", "performUpdate", "shouldUpdate", "changedProperties", "willUpdate", "hostUpdate", "update", "__markUpdated", "_$didUpdate", "_changedProperties", "hostUpdated", "firstUpdated", "updated", "updateComplete", "getUpdateComplete", "k", "mode", "_d", "reactiveElementVersions", "global", "window", "trustedTypes", "policy", "createPolicy", "createHTML", "s", "marker", "Math", "random", "String", "slice", "markerMatch", "nodeMarker", "d", "document", "createMarker", "v", "createComment", "isPrimitive", "value", "isArray", "Array", "isIterable", "Symbol", "iterator", "textEndRegex", "commentEndRegex", "comment2EndRegex", "tagEndRegex", "RegExp", "singleQuoteAttrEndRegex", "doubleQuoteAttrEndRegex", "rawTextElement", "tag", "type", "strings", "values", "_$litType$", "html", "svg", "noChange", "for", "nothing", "templateCache", "WeakMap", "walker", "createTreeWalker", "getTemplateHtml", "l", "length", "attrNames", "rawTextEndRegex", "regex", "i", "attrName", "match", "attrNameEndIndex", "lastIndex", "exec", "test", "end", "startsWith", "push", "undefined", "htmlResult", "hasOwnProperty", "Error", "Template", "constructor", "options", "node", "this", "parts", "nodeIndex", "attrNameIndex", "partCount", "el", "createElement", "currentNode", "content", "svgElement", "firstChild", "remove", "append", "childNodes", "nextNode", "nodeType", "hasAttributes", "attrsToRemove", "name", "getAttributeNames", "endsWith", "realName", "statics", "getAttribute", "toLowerCase", "split", "m", "index", "ctor", "PropertyPart", "BooleanAttributePart", "EventPart", "AttributePart", "removeAttribute", "tagName", "textContent", "emptyScript", "data", "indexOf", "static", "_options", "innerHTML", "resolveDirective", "part", "parent", "attributeIndex", "currentDirective", "_a", "__directives", "__directive", "nextDirectiveConstructor", "_b", "call", "_$initialize", "_c", "_d", "_$resolve", "TemplateInstance", "template", "_parts", "_$disconnectableChildren", "_$template", "_$parent", "parentNode", "_$isConnected", "_clone", "fragment", "creationScope", "importNode", "partIndex", "templatePart", "ChildPart", "nextSibling", "ElementPart", "_update", "_$setValue", "startNode", "endNode", "_$committedValue", "_$startNode", "_$endNode", "__isConnected", "isConnected", "directiveParent", "_$clear", "_commitText", "_commitTemplateResult", "_commitNode", "_commitIterable", "_insert", "ref", "insertBefore", "createTextNode", "result", "_$getTemplate", "h", "instance", "get", "set", "itemParts", "itemPart", "item", "start", "from", "_$notifyConnectionChanged", "n", "setConnected", "element", "fill", "valueIndex", "noCommit", "change", "_commitValue", "setAttribute", "emptyStringForBooleanAttribute", "super", "newListener", "oldListener", "shouldRemoveListener", "capture", "once", "passive", "shouldAddListener", "removeEventListener", "addEventListener", "handleEvent", "event", "host", "_$LH", "_boundAttributeSuffix", "_marker", "_markerMatch", "_HTML_RESULT", "_getTemplateHtml", "_TemplateInstance", "_isIterable", "_resolveDirective", "_ChildPart", "_AttributePart", "_BooleanAttributePart", "_EventPart", "_PropertyPart", "_ElementPart", "polyfillSupport", "litHtmlPolyfillSupport", "litHtmlVersions", "render", "container", "partOwnerNode", "renderBefore", "LitElement", "ReactiveElement", "constructor", "this", "renderOptions", "host", "__childPart", "createRenderRoot", "renderRoot", "super", "_a", "_b", "renderBefore", "firstChild", "update", "changedProperties", "value", "render", "hasUpdated", "isConnected", "connectedCallback", "setConnected", "disconnectedCallback", "noChange", "globalThis", "litElementHydrateSupport", "call", "polyfillSupport", "litElementPolyfillSupport", "_$changedProperties", "_c", "globalThis", "litElementVersions", "push", "customElement", "tagName", "classOrDescriptor", "clazz", "customElements", "define", "descriptor", "kind", "elements", "finisher", "standardProperty", "options", "element", "kind", "descriptor", "finisher", "clazz", "createProperty", "key", "Symbol", "placement", "originalKey", "initializer", "this", "call", "property", "protoOrDescriptor", "name", "proto", "constructor", "state", "options", "property", "slotAssignedElements", "_a", "window", "HTMLSlotElement", "prototype", "assignedElements", "slot", "opts", "assignedNodes", "filter", "node", "nodeType", "Node", "ELEMENT_NODE", "PartType", "ATTRIBUTE", "CHILD", "PROPERTY", "BOOLEAN_ATTRIBUTE", "EVENT", "ELEMENT", "directive", "c", "values", "_$litDirective$", "Directive", "constructor", "_partInfo", "_$isConnected", "this", "_$parent", "_$initialize", "part", "parent", "attributeIndex", "__part", "__attributeIndex", "_$resolve", "props", "update", "_part", "render", "_ChildPart", "ChildPart", "_$LH", "isSingleExpression", "part", "strings", "createMarker", "document", "createComment", "insertPart", "containerPart", "refPart", "container", "_$startNode", "parentNode", "refNode", "_$endNode", "startNode", "insertBefore", "endNode", "ChildPart", "options", "nextSibling", "oldParent", "_$parent", "parentChanged", "newConnectionState", "_a", "_$reparentDisconnectables", "call", "_$notifyConnectionChanged", "_$isConnected", "start", "n", "setChildPartValue", "value", "directiveParent", "_$setValue", "RESET_VALUE", "setCommittedValue", "_$committedValue", "getCommittedValue", "removePart", "end", "remove", "generateMap", "list", "start", "end", "map", "Map", "i", "set", "repeat", "directive", "Directive", "constructor", "partInfo", "super", "type", "PartType", "CHILD", "Error", "_getValuesAndKeys", "items", "keyFnOrTemplate", "template", "keyFn", "keys", "values", "index", "item", "render", "this", "update", "containerPart", "oldParts", "getCommittedValue", "newValues", "newKeys", "Array", "isArray", "_itemKeys", "oldKeys", "_a", "newParts", "newKeyToIndexMap", "oldKeyToIndexMap", "oldHead", "oldTail", "length", "newHead", "newTail", "setChildPartValue", "insertPart", "has", "oldIndex", "get", "oldPart", "newPart", "removePart", "setCommittedValue", "noChange", "live", "directive", "Directive", "constructor", "partInfo", "super", "type", "PartType", "PROPERTY", "ATTRIBUTE", "BOOLEAN_ATTRIBUTE", "Error", "isSingleExpression", "render", "value", "update", "part", "noChange", "nothing", "element", "name", "hasAttribute", "getAttribute", "String", "setCommittedValue", "notifyChildrenConnectedChanged", "parent", "isConnected", "children", "_$disconnectableChildren", "obj", "_b", "_a", "o", "e", "removeDisconnectableFromParent", "_$parent", "delete", "size", "addDisconnectableToParent", "Set", "has", "add", "installDisconnectAPI", "reparentDisconnectables", "newParent", "this", "notifyChildPartConnectedChanged", "isClearingValue", "fromPartIndex", "value", "_$committedValue", "Array", "isArray", "i", "length", "type", "PartType", "CHILD", "_c", "_$notifyConnectionChanged", "_d", "_$reparentDisconnectables", "AsyncDirective", "Directive", "constructor", "_$initialize", "part", "attributeIndex", "super", "_$isConnected", "_$AO", "isClearingDirective", "r", "reconnected", "call", "disconnected", "setValue", "isSingleExpression", "__part", "_$setValue", "newValues", "__attributeIndex", "createRef", "Ref", "lastElementForContextAndCallback", "WeakMap", "ref", "directive", "AsyncDirective", "render", "_ref", "nothing", "update", "part", "refChanged", "this", "_updateRefValue", "undefined", "_lastElementForRef", "_element", "_context", "_a", "options", "host", "element", "context", "globalThis", "lastElementForCallback", "get", "set", "call", "value", "t", "_b", "_c", "disconnected", "reconnected", "classMap", "directive", "Directive", "constructor", "partInfo", "super", "type", "PartType", "ATTRIBUTE", "name", "_a", "strings", "length", "Error", "render", "classInfo", "Object", "keys", "filter", "key", "join", "update", "part", "this", "_previousClasses", "Set", "_staticClasses", "split", "s", "has", "add", "classList", "element", "forEach", "remove", "delete", "value", "_b", "noChange", "i", "a2", "k", "code", "x", "eachUnbind", "y", "dispatch", "e", "_i", "a", "NinjaHeader", "s", "e", "n", "UnsafeHTMLDirective", "Directive", "constructor", "partInfo", "super", "this", "_value", "nothing", "type", "PartType", "CHILD", "Error", "directiveName", "render", "value", "_templateResult", "noChange", "strings", "raw", "_$litType$", "resultType", "values", "unsafeHTML", "directive", "__decorate", "tslib", "Icon", "s", "__decorate", "e", "NinjaAction", "s", "o", "__decorate", "e", "NinjaKeys", "s", "e", "options", "a", "m", "c", "l", "o", "n", "__decorate", "t", "Controller", "initialize", "this", "hide", "connect", "setTimeout", "show", "showDelayValue", "hasDismissAfterValue", "close", "dismissAfterValue", "element", "remove", "removeDelayValue", "classList", "add", "showClasses", "hideClasses", "values", "dismissAfter", "Number", "showDelay", "type", "default", "removeDelay", "s", "classes", "e", "timeout", "duration", "data", "get", "save", "clearTimeout", "statusTarget", "textContent", "Rails", "fire", "formTarget", "success", "setStatus", "error", "message", "targets", "i", "_onMenuButtonKeydown", "event", "keyCode", "preventDefault", "toggle", "toggleClass", "visibleClass", "invisibleClass", "activeClass", "enteringClass", "leavingClass", "hasButtonTarget", "buttonTarget", "addEventListener", "setAttribute", "disconnect", "removeEventListener", "openValue", "openValueChanged", "_show", "_hide", "cb", "menuTarget", "_enteringClassList", "forEach", "klass", "bind", "_activeClassList", "activeTarget", "_invisibleClassList", "_visibleClassList", "enterTimeout", "_leavingClassList", "leaveTimeout", "contains", "target", "has", "document", "querySelector", "split", "map", "t", "parseInt", "open", "Boolean", "backgroundId", "backgroundHtml", "_backgroundHTML", "allowBackgroundClose", "preventDefaultActionOpening", "preventDefaultActionClosing", "blur", "lockScroll", "containerTarget", "body", "insertAdjacentHTML", "background", "unlockScroll", "closeBackground", "closeWithKeyboard", "backdropColorValue", "scrollbarWidth", "window", "innerWidth", "documentElement", "clientWidth", "style", "paddingRight", "saveScrollPosition", "top", "scrollPosition", "restoreScrollValue", "restoreScrollPosition", "pageYOffset", "scrollTop", "a", "backdropColor", "String", "restoreScroll", "l", "activeTabClasses", "inactiveTabClasses", "anchor", "index", "tabTargets", "findIndex", "tab", "id", "showTab", "change", "currentTarget", "dataset", "indexOf", "dispatchEvent", "CustomEvent", "panel", "panelTargets", "location", "hash", "value", "set", "URL", "length", "o", "toggleableTargets", "contentTarget", "mouseOver", "mouseOut", "n", "r", "Dropdown", "overlayTarget", "super", "h", "styleProperty", "update", "preview", "color", "previewTarget", "yiqColor", "_getContrastYIQ", "backgroundColor", "colorTarget", "hexColor", "replace", "substr", "a", "Cropper", "e", "t", "e", "i", "n", "r", "o", "s", "a", "l", "c", "h", "u", "d", "p", "g", "m", "f", "b", "v", "A", "x", "y", "C", "R", "E", "S", "k", "L", "w", "T", "I", "P", "N", "M", "V", "z", "_", "H", "$", "Z", "fn", "Tribute", "error", "e", "e", "error", "frequency", "TomSelect", "e", "c", "debounce", "a", "b", "o", "options", "filter", "main", "arrow", "i", "n", "d", "error", "s", "m", "error", "options", "s", "debounce", "fn", "t", "e", "error", "_", "options", "c", "i", "format", "_a", "fn", "_i", "source", "__assign", "t", "s", "i", "n", "p", "__spreadArrays", "r", "k", "a", "j", "self", "destroy", "init", "fn", "e", "defaults", "element", "options", "debounce", "triggerChange", "m", "c", "offset", "d", "month", "_", "x", "formats", "top", "left", "right", "b", "format", "min", "max", "camelize", "value", "replace", "_", "char", "toUpperCase", "capitalize", "charAt", "slice", "dasherize", "toLowerCase", "readInheritableStaticArrayValues", "constructor", "propertyName", "ancestors", "getAncestorsForConstructor", "Array", "from", "reduce", "values", "getOwnStaticArrayValues", "forEach", "name", "add", "Set", "readInheritableStaticObjectPairs", "pairs", "push", "getOwnStaticObjectPairs", "Object", "getPrototypeOf", "reverse", "definition", "isArray", "keys", "map", "key", "extend", "extendWithReflect", "extended", "Reflect", "construct", "arguments", "new", "prototype", "create", "setPrototypeOf", "testReflectExtension", "a", "call", "b", "error", "ClassPropertiesBlessing", "classes", "properties", "classDefinition", "assign", "propertiesForClassDefinition", "get", "has", "attribute", "getAttributeName", "Error", "getAll", "TargetPropertiesBlessing", "targets", "targetDefinition", "propertiesForTargetDefinition", "target", "find", "identifier", "findAll", "ValuePropertiesBlessing", "valueDefinitionPairs", "propertyDescriptorMap", "valueDescriptorMap", "result", "valueDefinitionPair", "valueDescriptor", "parseValueDefinitionPair", "attributeName", "data", "getAttributeNameForKey", "propertiesForValueDefinitionPair", "reader", "read", "writer", "write", "defaultValue", "set", "undefined", "delete", "hasCustomDefaultValue", "token", "typeDefinition", "valueDescriptorForTokenAndTypeDefinition", "parseValueTypeConstant", "constant", "Boolean", "Number", "String", "parseValueTypeDefault", "toString", "parseValueTypeObject", "typeObject", "typeFromObject", "type", "defaultValueType", "default", "parseValueTypeDefinition", "typeFromDefaultValue", "typeFromConstant", "defaultValueForDefinition", "defaultValuesByType", "readers", "writers", "array", "boolean", "number", "object", "string", "JSON", "parse", "TypeError", "writeString", "writeJSON", "stringify", "Controller", "context", "shouldLoad", "application", "scope", "element", "initialize", "connect", "disconnect", "dispatch", "eventName", "detail", "prefix", "bubbles", "cancelable", "event", "CustomEvent", "dispatchEvent", "blessings", "kebabCase", "booleanOptions", "stringOptions", "numberOptions", "arrayOptions", "arrayOrStringOptions", "dateOptions", "dateFormats", "options", "date", "arrayOrString", "events", "elements", "mapping", "strftimeRegex", "RegExp", "join", "convertDateFormat", "format", "match", "StimulusFlatpickr", "config", "_initializeEvents", "_initializeOptions", "_initializeDateFormats", "fp", "flatpickr", "flatpickrElement", "_initializeElements", "inputTarget", "destroy", "hook", "bind", "optionType", "optionsCamelCase", "option", "optionKebab", "_handleDaysOfWeek", "disableDaysOfWeek", "_validateDaysOfWeek", "disable", "_disable", "enableDaysOfWeek", "enable", "_enable", "days", "day", "parseInt", "console", "disabledDays", "includes", "getDay", "enabledDays", "dateFormat", "val", "e", "hasInstanceTarget", "instanceTarget", "i", "a", "l", "n", "r", "FetchResponse", "cookie", "FetchRequest", "options", "error", "FetchResponse", "_", "options", "FetchRequest", "_", "i", "get", "e", "converter", "jstz", "e", "Rails"]
}
