UNPKG

@seznam/szn-select

Version:

Accessible HTML selectbox with customizable UI. Based on web components and easy to integrate with various frameworks like React or Angular.

1 lines 52.5 kB
"use strict";function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _defineProperties(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function _createClass(t,e,n){return e&&_defineProperties(t.prototype,e),n&&_defineProperties(t,n),t}function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function _slicedToArray(t,e){return _arrayWithHoles(t)||_iterableToArrayLimit(t,e)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}function _iterableToArrayLimit(t,e){var n=[],o=!0,i=!1,s=void 0;try{for(var r,l=t[Symbol.iterator]();!(o=(r=l.next()).done)&&(n.push(r.value),!e||n.length!==e);o=!0);}catch(t){i=!0,s=t}finally{try{o||null==l.return||l.return()}finally{if(i)throw s}}return n}function _arrayWithHoles(t){if(Array.isArray(t))return t}function _get(t,e,n){return(_get="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,n){var o=_superPropBase(t,e);if(o){var i=Object.getOwnPropertyDescriptor(o,e);return i.get?i.get.call(n):i.value}})(t,e,n||t)}function _superPropBase(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=_getPrototypeOf(t)););return t}function _possibleConstructorReturn(t,e){return!e||"object"!==_typeof(e)&&"function"!=typeof e?_assertThisInitialized(t):e}function _assertThisInitialized(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function _getPrototypeOf(t){return(_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function _inherits(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&_setPrototypeOf(t,e)}function _setPrototypeOf(t,e){return(_setPrototypeOf=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _defineProperties(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function _createClass(t,e,n){return e&&_defineProperties(t.prototype,e),n&&_defineProperties(t,n),t}!function(t){var e=t.SznElements=t.SznElements||{},n="\n szn-tethered {\n display: block;\n\n position: absolute;\n left: 0;\n top: 0;\n\n width: 0;\n height: 0;\n\n transform: translate(0, 0);\n }\n\n szn-tethered > [data-szn-tethered--content] {\n position: absolute;\n left: 0;\n top: 0;\n }\n\n szn-tethered[data-horizontal-align='right'] > [data-szn-tethered--content] {\n left: auto;\n right: 0;\n }\n\n szn-tethered[data-vertical-align='top'] > [data-szn-tethered--content] {\n top: auto;\n bottom: 0;\n }\n ",o={LEFT:"HORIZONTAL_ALIGN.LEFT",RIGHT:"HORIZONTAL_ALIGN.RIGHT"},i={TOP:"VERTICAL_ALIGN.TOP",BOTTOM:"VERTICAL_ALIGN.BOTTOM"},s=160,r=["resize","scroll","wheel","touchmove"];Object.freeze&&(Object.freeze(o),Object.freeze(i));var l=null;e["szn-tethered"]=function(){function t(r){var a=this;_classCallCheck(this,t),null===l&&(l="transform"in r.style),r.HORIZONTAL_ALIGN=o,r.VERTICAL_ALIGN=i,r.setTether=function(t){return a.setTether(t)},r.updatePosition=function(){return a.updatePosition()},r.hasOwnProperty("horizontalAlign")||Object.defineProperty(r,"horizontalAlign",{get:function(){return r._broker.horizontalAlignment}}),r.hasOwnProperty("verticalAlignment")||Object.defineProperty(r,"verticalAlignment",{get:function(){return r._broker.verticalAlignment}}),r.hasOwnProperty("minBottomSpace")||Object.defineProperty(r,"minBottomSpace",{get:function(){return r._broker.minBottomSpace},set:function(t){r._broker.minBottomSpace=t}}),r.onVerticalAlignmentChange=null,r.onHorizontalAlignmentChange=null,this.horizontalAlignment=o.LEFT,this.verticalAlignment=i.BOTTOM,this.minBottomSpace=s,this._root=r,this._tether=null,this._mounted=!1,this._lastHorizontalAlignment=null,this._lastVerticalAlignment=null,e.injectStyles(n,"szn-tethered")}return _createClass(t,[{key:"onMount",value:function(){for(var t=0,e=r;t<e.length;t++){addEventListener(e[t],this._root.updatePosition)}this._mounted=!0,this.updatePosition()}},{key:"onUnmount",value:function(){for(var t=0,e=r;t<e.length;t++){removeEventListener(e[t],this._root.updatePosition)}this._mounted=!1}},{key:"setTether",value:function(t){t!==this._tether&&(this._tether=t,this.updatePosition())}},{key:"updatePosition",value:function(){if(this._mounted&&this._tether){var t=function(t){var e=t.getBoundingClientRect(),n=e.width,o=e.height,i=0,s=0,r=t;for(;r;)i+=r.offsetLeft,s+=r.offsetTop,r=r.offsetParent;return{screenX:e.left,screenY:e.top,x:i,y:s,width:n,height:o}}(this._tether),e=function(t){var e,n,o=t._root.firstElementChild;if(!o)return{width:0,height:0};if(window.devicePixelRatio>1){var i=o.getBoundingClientRect();e=i.width,n=i.height}else e=o.scrollWidth,n=o.scrollHeight;return{width:e,height:n}}(this),n=document.documentElement.clientWidth,s=Math.min(document.documentElement.clientHeight,window.innerHeight),r=this.horizontalAlignment,a=this.verticalAlignment;t.screenX+e.width>n&&t.screenX+t.width-e.width>=0?this.horizontalAlignment=o.RIGHT:this.horizontalAlignment=o.LEFT,s-(t.screenY+t.height)<this.minBottomSpace?this.verticalAlignment=i.TOP:this.verticalAlignment=i.BOTTOM,function(t){if(t.horizontalAlignment!==t._lastHorizontalAlignment){var e=t.horizontalAlignment===o.LEFT?"left":"right";t._root.setAttribute("data-horizontal-align",e),t._lastHorizontalAlignment=t.horizontalAlignment}if(t.verticalAlignment!==t._lastVerticalAlignment){var n=t.verticalAlignment===i.TOP?"top":"bottom";t._root.setAttribute("data-vertical-align",n),t._lastVerticalAlignment=t.verticalAlignment}}(this),function(t,e){var n=e.x+(t.horizontalAlignment===o.LEFT?0:e.width),s=e.y+(t.verticalAlignment===i.TOP?0:e.height);l?t._root.style.transform="translate(".concat(n,"px, ").concat(s,"px)"):(t._root.style.left="".concat(n,"px"),t._root.style.top="".concat(s,"px"))}(this,t),this.horizontalAlignment!==r&&this._root.onHorizontalAlignmentChange&&this._root.onHorizontalAlignmentChange(this.horizontalAlignment),this.verticalAlignment!==a&&this._root.onVerticalAlignmentChange&&this._root.onVerticalAlignmentChange(this.verticalAlignment)}}}]),t}(),e.init&&e.init()}(self),function(t){var e=t.SznElements=t.SznElements||{},n='\nszn-select--button{display:block;position:relative;box-sizing:border-box;border:1px solid #ccc;border:var(--szn-select--button--border-width,1px) solid var(--szn-select--button--border-color,#ccc);border-radius:4px;border-radius:var(--szn-select--button--border-radius,4px);width:100%;height:100%;line-height:30px;line-height:calc(var(--szn-select--button--height-px, 32px) - 2 * var(--szn-select--button--border-width, 1px));line-height:calc(2em - 2 * 1px);line-height:calc(var(--szn-select--button--height, 2em) - 2 * var(--szn-select--button--border-width, 1px));color:#000;color:var(--szn-select--button--text-color,#000);background:#fff;background:var(--szn-select--button--background-color,#fff);cursor:pointer;user-select:none;-moz-user-select:none}szn-select--button[data-szn-select--button--open]{border-radius:4px 4px 0 0;border-radius:var(--szn-select--button--border-radius,4px) var(--szn-select--button--border-radius,4px) 0 0}szn-select--button[data-szn-select--button--open-at-top]{border-radius:0 0 4px 4px;border-radius:0 0 var(--szn-select--button--border-radius,4px) var(--szn-select--button--border-radius,4px)}szn-select--button[disabled]{color:#ccc;color:var(--szn-select--button--disabled-text-color,#ccc);cursor:default}szn-select--button [data-szn-select--button--label]{display:block;box-sizing:border-box;border-right:2em solid transparent;border-right:var(--szn-select--button--mark-width,2em) transparent solid;padding:0 5px 0 12px;padding:var(--szn-select--button--padding,0 5px 0 12px);width:100%;height:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}szn-select--button [data-szn-select--button--mark]{display:block;position:absolute;right:0;top:0;width:2em;width:var(--szn-select--button--mark-width,2em);height:100%;text-align:center}szn-select--button [data-szn-select--button--mark]:after{display:inline;content:"▼";content:var(--szn-select--button--icon-closed,"▼")}szn-select--button[data-szn-select--button--open] [data-szn-select--button--mark]:after{content:"▲";content:var(--szn-select--button--icon-opened,"▲")}\n ',o={UP:"OPENING_POSITION.UP",DOWN:"OPENING_POSITION.DOWN"};function i(t){t._select&&t._select.addEventListener("change",t._onChange)}function s(t){t._select&&t._select.removeEventListener("change",t._onChange)}function r(t){t._select&&t._observer.observe(t._select,{childList:!0,attributes:!0,characterData:!0,subtree:!0,attributeFilter:["disabled","selected"]})}function l(t){if(t._select){var e=t._select.options.item(t._select.selectedIndex).text;t._label.innerText!==e&&(t._label.innerText=e)}}function a(t){t._select&&(t._select.disabled?t._root.setAttribute("disabled",""):t._root.removeAttribute("disabled"))}Object.freeze&&Object.freeze(o),e["szn-select--button"]=function(){function t(i){var s=this;_classCallCheck(this,t),this.OPENING_POSITION=o,this._root=i,this._select=null,this._label=null,this._observer=new MutationObserver(function(){l(s),a(s)}),i.OPENING_POSITION=o,i.setSelectElement=this.setSelectElement.bind(this),i.setOpen=this.setOpen.bind(this),i.setOpeningPosition=this.setOpeningPosition.bind(this),this._onChange=function(t){l(t)}.bind(null,this),e.injectStyles(n,"szn-select--button")}return _createClass(t,[{key:"onMount",value:function(){r(this),i(this),l(this),a(this)}},{key:"onUnmount",value:function(){this._observer.disconnect(),s(this)}},{key:"setSelectElement",value:function(t){var n;t!==this._select&&(this._label||this._root.appendChild((n=this,e.buildDom("\n <szn- data-szn-select--button--label data-szn-ref></szn->\n <szn- data-szn-select--button--mark></szn->\n ",function(t){n._label=t},!1))),this._select&&(s(this),this._observer.disconnect()),this._select=t,r(this),i(this),l(this),a(this))}},{key:"setOpen",value:function(t){t?this._root.setAttribute("data-szn-select--button--open",""):(this._root.removeAttribute("data-szn-select--button--open"),this._root.removeAttribute("data-szn-select--button--open-at-top"))}},{key:"setOpeningPosition",value:function(t){t===o.UP?this._root.setAttribute("data-szn-select--button--open-at-top",""):this._root.removeAttribute("data-szn-select--button--open-at-top")}}]),t}()}(self),function(t){var e=t.SznElements=t.SznElements||{},n="\nszn-select--options{display:block;z-index:1;border:solid #ccc;border:solid var(--szn-select--options--border-color,#ccc);border-width:1px;border-width:var(--szn-select--options--border-width,1px);border-radius:0 0 4px 4px;border-radius:var(--szn-select--options--border-radius-dropdown,0 0 4px 4px);height:100%;box-sizing:border-box;white-space:nowrap;color:#000;color:var(--szn-select--options--text-color,#000);background:#fff;background:var(--szn-select--options--background-color,#fff);user-select:none;-moz-user-select:none}szn-select--options[data-szn-select--options--multiple]{border-radius:4px;border-radius:var(--szn-select--options--border-radius-mutli-select,4px)}szn-select--options [data-szn-select--options--option]{display:block;padding:5px 5px 5px 12px;padding:var(--szn-select--options--item-padding,5px 5px 5px 12px);overflow:auto;overflow-x:hidden;text-overflow:ellipsis;cursor:pointer}szn-select--options [data-szn-select--options--option][disabled],szn-select--options [disabled] [data-szn-select--options--option],szn-select--options[disabled] [data-szn-select-options--option]{cursor:default}szn-select--options [data-szn-select--options--selected]{background:#eee;background:var(--szn-select--options--selected-background,#eee)}szn-select--options [data-szn-select--options--optgroup]{display:block}szn-select--options [data-szn-select--options--optgroup] [data-szn-select--options--option]{padding-left:24px;padding-left:calc(2 * var(--szn-select--options--item-indent, 12px))}szn-select--options [data-szn-select--options--optgroup-label]:before{display:block;padding:5px 5px 5px 12px;padding:var(--szn-select--options--item-padding,5px 5px 5px 12px);content:attr(data-szn-select--options--optgroup-label);font-weight:700}szn-select--options[data-szn-select--options--highlighting] [data-szn-select-options--selected]{background:none}szn-select--options[data-szn-select--options--highlighting] [data-szn-select--options--highlighted]{background:#eee;background:var(--szn-select--options--selected-background,#eee)}szn-select--options[disabled],szn-select--options [disabled]{color:#ccc;color:var(--szn-select--options--disabled-text,#ccc)}szn-tethered[data-vertical-align=top] szn-select--options{border-radius:4px 4px 0 0;border-radius:var(--szn-select--options--border-radius-dropup,4px 4px 0 0)}\n ",o=function(){function t(o){var i=this;_classCallCheck(this,t),o.setOptions=function(t){return i.setOptions(t)},o.updateUi=function(){return u(i)},this._root=o,this._options=null,this._dragSelectionStartOption=null,this._mounted=!1,this._observer=new MutationObserver(o.updateUi),this._lastSelectionIndexes={start:-1,end:-1},this._additionalSelectedIndexes=[],this._invertSelection=!1,this._previousSelectionStartIndex=-1,this._observedTouchId=null,this._onItemHovered=function(t){return function(t,e){if(t._options.disabled||!c(e))return;if(t._options.multiple)return void(t._dragSelectionStartOption&&a(t,e));t._root.setAttribute("data-szn-select--options--highlighting","");var n=t._root.querySelector("[data-szn-select--options--highlighted]");n&&n.removeAttribute("data-szn-select--options--highlighted");e.setAttribute("data-szn-select--options--highlighted","")}(i,t.target)},this._onItemClicked=function(t){return function(t,e){if(t._dragSelectionStartOption)return void(t._dragSelectionStartOption=null);if(t._options.disabled||!c(e))return;t._root.removeAttribute("data-szn-select--options--highlighting"),t._options.selectedIndex=e._option.index,t._options.dispatchEvent(new CustomEvent("change",{bubbles:!0,cancelable:!0}))}(i,t.target)},this._onItemSelectionStart=function(t){return function(t,e,n){if(t._options.disabled||!t._options.multiple||!c(e))return;var o=t._options.options;if(n.shiftKey&&t._previousSelectionStartIndex>-1)t._dragSelectionStartOption=o.item(t._previousSelectionStartIndex);else{if(n.ctrlKey){t._additionalSelectedIndexes=[];for(var i=0,s=o.length;i<s;i++)o.item(i).selected&&t._additionalSelectedIndexes.push(i);t._invertSelection=e._option.selected}else t._invertSelection=!1;t._dragSelectionStartOption=e._option}t._previousSelectionStartIndex=t._dragSelectionStartOption.index,a(t,e)}(i,t.target,t)},this._onTouchStart=function(t,e){if(t._observedTouchId)return;var n=e.changedTouches[0];t._observedTouchId=n.identifier}.bind(null,this),this._onTouchEnd=function(t,e){if(!t._options.multiple)return;if(!Array.from(e.changedTouches).find(function(e){return e.identifier===t._observedTouchId}))return;t._observedTouchId=null,e.preventDefault();var n=e.target._option;if(!d(n))return;n.selected=!n.selected,t._options.dispatchEvent(new CustomEvent("change",{bubbles:!0,cancelable:!0}))}.bind(null,this),this._onSelectionEnd=function(){i._dragSelectionStartOption=null,i._additionalSelectedIndexes=[]},this._onSelectionChange=function(){i._root.removeAttribute("data-szn-select--options--highlighting"),u(i)},e.injectStyles(n,"szn-options")}return _createClass(t,[{key:"onMount",value:function(){this._mounted=!0,s(this),u(this),i(this),this._options&&l(this,this._options.selectedIndex,this._options.selectedIndex)}},{key:"onUnmount",value:function(){r(this),this._root.removeAttribute("data-szn-select--options--highlighting"),this._mounted=!1,this._observer.disconnect()}},{key:"setOptions",value:function(t){if(t!==this._options){this._options&&(r(this),this._observer.disconnect()),this._options=t,s(this),u(this),i(this);var e="number"==typeof t.selectedIndex?t.selectedIndex:-1;this._previousSelectionStartIndex=e,this._mounted&&l(this,e,e)}}}]),t}();function i(t){t._mounted&&t._options&&t._observer.observe(t._options,{childList:!0,attributes:!0,characterData:!0,subtree:!0,attributeFilter:["disabled","label","selected","title","multiple"]})}function s(t){t._mounted&&t._options&&(t._options.addEventListener("change",t._onSelectionChange),t._root.addEventListener("mouseover",t._onItemHovered),t._root.addEventListener("mousedown",t._onItemSelectionStart),t._root.addEventListener("mouseup",t._onItemClicked),t._root.addEventListener("touchstart",t._onTouchStart),addEventListener("mouseup",t._onSelectionEnd),addEventListener("touchend",t._onTouchEnd))}function r(t){t._options&&t._options.removeEventListener("change",t._onSelectionChange),t._root.removeEventListener("mouseover",t._onItemHovered),t._root.removeEventListener("mousedown",t._onItemSelectionStart),t._root.removeEventListener("mouseup",t._onItemClicked),t._root.removeEventListener("touchstart",t._onTouchStart),removeEventListener("mouseup",t._onSelectionEnd),removeEventListener("touchend",t._onTouchEnd)}function l(t,e,n){var o=t._lastSelectionIndexes;-1===e||e===o.start&&n===o.end||function(t,e){var n=t._root;if(n.clientHeight>=n.scrollHeight)return;var o=n.getBoundingClientRect(),i=t._root.querySelectorAll("[data-szn-select--options--option]")[e].getBoundingClientRect();if(i.top>=o.top&&i.bottom<=o.bottom)return;var s=i.top<o.top?i.top-o.top:i.bottom-o.bottom;n.scrollTop+=s}(t,e!==o.start?e:n);o.start=e,o.end=n}function a(t,e){for(var n=t._dragSelectionStartOption.index,o=e._option.index,i=Math.min(n,o),s=Math.max(n,o),r=t._options.options,l=t._additionalSelectedIndexes,a=0,c=r.length;a<c;a++){var u=r.item(a);if(d(u)){var h=l.indexOf(a)>-1;a>=i&&a<=s&&(h=!t._invertSelection),u.selected=h}}t._options.dispatchEvent(new CustomEvent("change",{bubbles:!0,cancelable:!0}))}function c(t){return t.hasAttribute("data-szn-select--options--option")&&d(t._option)}function d(t){return!t.disabled&&!t.parentNode.disabled}function u(t){if(t._options&&(t._options.disabled?t._root.setAttribute("disabled",""):t._root.removeAttribute("disabled"),t._options.multiple?t._root.setAttribute("data-szn-select--options--multiple",""):t._root.removeAttribute("data-szn-select--options--multiple"),h(t._root,t._options),t._mounted)){for(var e=t._options.options,n=-1,o=e.length-1;o>=0;o--)if(e.item(o).selected){n=o;break}l(t,t._options.selectedIndex,n)}}function h(t,e){!function(t,e){var n=Array.prototype.slice.call(e.children),o=t.firstElementChild;for(;o;)if(n.indexOf(o._option)>-1)o=o.nextElementSibling;else{var i=o;o=o.nextElementSibling,t.removeChild(i)}}(t,e),function(t){var e=t.firstElementChild;for(;e;)p(e),e=e.nextElementSibling}(t),function(t,e){var n=t.firstElementChild,o=e.firstElementChild;for(;o;){if(n&&n._option===o)n=n&&n.nextElementSibling;else{var i=document.createElement("szn-");i._option=o,i.setAttribute("data-szn-select--options--"+("OPTGROUP"===o.tagName?"optgroup":"option"),""),p(i),t.insertBefore(i,n)}o=o.nextElementSibling}}(t,e)}function p(t){var e=t._option;if(e.disabled?t.setAttribute("disabled",""):t.removeAttribute("disabled"),"OPTGROUP"===e.tagName)return h(t,e),void t.setAttribute("data-szn-select--options--optgroup-label",e.label);t.innerText=e.text,e.title?t.setAttribute("title",e.title):t.removeAttribute("title"),e.selected?t.setAttribute("data-szn-select--options--selected",""):t.removeAttribute("data-szn-select--options--selected")}e["szn-select--options"]=o}(self),function(t){var e=t.SznElements=t.SznElements||{},n="\nszn-select--ui{display:inline-block;width:100%;height:100%}szn-select--ui[data-szn-select--ui--active] szn-select--button,szn-select--ui[data-szn-select--ui--active] szn-select--options{border-color:#7dbfff;border-color:var(--szn-select--ui--active-border-color,#7dbfff);box-shadow:0 0 3px rgba(0,132,255,.4);box-shadow:var(--szn-select--ui--active-box-shadow,0 0 3px rgba(0,132,255,.4))}body>szn-tethered>[data-szn-select--ui--dropdown]{display:block;top:-1px;top:var(--szn-select--ui--dropdown-offset,-1px);min-width:109px;min-width:var(--szn-select--ui--dropdown-min-width,109px)}body>szn-tethered[data-vertical-align=top]>[data-szn-select--ui--dropdown]{bottom:-1px;bottom:var(--szn-select--ui--dropdown-offset,-1px)}\n ",o=160,i=["mousedown","click","touchstart"],s=["resize","scroll","wheel","touchmove"],r=document.body;function l(t){if(t._dropdown&&t._dropdown._broker&&t._dropdownOptions._broker&&t._dropdownContainer===r){var e=t._dropdownOptions.scrollHeight,n=getComputedStyle(t._dropdownOptions),o=e+parseInt(n.borderTopWidth,10)+parseInt(n.borderBottomWidth,10),i=t._dropdownContent.getBoundingClientRect(),s=t._dropdown.verticalAlignment===t._dropdown.VERTICAL_ALIGN.TOP,l=Math.min(document.documentElement.clientHeight,window.innerHeight),a=s?Math.min(o,i.bottom):Math.min(o,l-i.top);a!==(i.height||i.bottom-i.top)&&(t._dropdownContent.style.height="".concat(a,"px"))}}function a(t,e){var n=e===t._dropdown.VERTICAL_ALIGN.TOP;if(t._dropdownPosition=e,t._button&&t._button._broker){var o=t._button.OPENING_POSITION;t._button.setOpeningPosition(n?o.UP:o.DOWN)}l(t)}function c(t){!function(t){t._root.innerHTML="",t._dropdownContent.innerHTML="",t._dropdown&&t._dropdown.parentNode&&t._dropdown.parentNode.removeChild(t._dropdown);t._button=null,t._dropdown=null,t._dropdownPosition=null,t._dropdownOptions=null}(t),t._select&&(t._select.multiple?function(t){var n=t._select,o=document.createElement("szn-select--options");t._root.appendChild(o),e.awaitElementReady(o,function(){return o.setOptions(n)})}(t):function(t){(function(t){var n=document.createElement("szn-select--button");e.awaitElementReady(n,function(){t._button===n&&(t._button.setSelectElement(t._select),t._dropdown.parentNode&&t._dropdownContainer===r&&t._button.setOpen(!0),t._dropdownPosition&&a(t,t._dropdownPosition))}),t._button=n,t._root.appendChild(n)})(t),t._dropdownOptions=document.createElement("szn-select--options"),t._dropdownOptions.className=t._dropdownClassName,t._dropdown=d(t),t._dropdown.appendChild(t._dropdownContent),t._dropdownContent.appendChild(t._dropdownOptions)}(t))}function d(t){if(t._dropdownContainer===r){for(var n=0,o=i;n<o.length;n++){var s=o[n];t._dropdownContent.addEventListener(s,t._onUiInteracted)}return document.createElement("szn-tethered")}for(var l=0,a=i;l<a.length;l++){var c=a[l];t._dropdownContainer.addEventListener(c,t._onUiInteracted)}var d=e.buildDom("<szn- data-szn-select--dropdown></szn->");return d._broker={},d}function u(t,e,n){t._dropdownContainer===r&&e.setTether(t._root),n.setOptions(t._select),e.minBottomSpace=t._minBottomSpace,e.onVerticalAlignmentChange=t._onDropdownPositionChange,t._dropdownContainer===r&&t._onDropdownPositionChange(e.verticalAlignment),l(t)}e["szn-select--ui"]=function(){function t(i){_classCallCheck(this,t),i.hasOwnProperty("minBottomSpace")||Object.defineProperty(i,"minBottomSpace",{get:function(){return i._broker._minBottomSpace},set:function(t){i._broker._dropdown&&i._broker._dropdown._broker&&(i._broker._dropdown.minBottomSpace=t),i._broker._minBottomSpace=t}}),i.hasOwnProperty("dropdownClassName")||Object.defineProperty(i,"dropdownClassName",{get:function(){return i._broker._dropdownClassName},set:function(t){var e=i._broker;e._dropdownClassName=t,e._dropdownOptions&&e._select&&!e._select.multiple&&(e._dropdownOptions.className=t)}}),i.hasOwnProperty("dropdownContainer")||Object.defineProperty(i,"dropdownContainer",{get:function(){return i._broker._dropdownContainer},set:function(t){if("function"==typeof Node&&!(t instanceof Node))throw new TypeError("The provided dropdown container is not a DOM node: "+t);var e=i._broker;if(e&&t!==e._dropdownContainer){var n=[e._dropdownContainer,t].includes(r);e._dropdownContainer=t,e._dropdown&&e._dropdown.parentNode&&(n?(e._dropdown=d(e),t.appendChild(e._dropdown),t===r?a(e,e._dropdown.verticalAlignment):e._dropdownContent.style.height=""):t.appendChild(e._dropdown))}}}),i.setSelectElement=this.setSelectElement.bind(this),i.setFocus=this.setFocus.bind(this),i.setOpen=this.setOpen.bind(this),i.onUiInteracted=i.onUiInteracted||null,this._root=i,this._select=null,this._button=null,this._dropdown=null,this._dropdownClassName="",this._dropdownPosition=null,this._dropdownContent=e.buildDom("<szn- data-szn-select--ui--dropdown data-szn-tethered--content></szn->"),this._dropdownOptions=null,this._dropdownContainer=r,this._minBottomSpace=o,this._observer=new MutationObserver(function(t){var e=t._select;e&&(e.multiple&&t._button||!e.multiple&&!t._button)&&c(t)}.bind(this)),this._onDropdownPositionChange=a.bind(null,this),this._onDropdownSizeUpdateNeeded=l.bind(null,this),this._onUiInteracted=function(t,e){t._root.onUiInteracted&&t._root.onUiInteracted(e)}.bind(null,this),e.injectStyles(n,"szn-select--ui")}return _createClass(t,[{key:"onMount",value:function(){this._root.setAttribute("aria-hidden","true"),function(t){for(var e=0,n=i;e<n.length;e++){var o=n[e];t._root.addEventListener(o,t._onUiInteracted)}for(var r=0,l=s;r<l.length;r++){var a=l[r];addEventListener(a,t._onDropdownSizeUpdateNeeded)}}(this),this._observer.observe(this._root,{childList:!0,attributes:!0,characterData:!0,subtree:!0,attributeFilter:["disabled","multiple","selected"]})}},{key:"onUnmount",value:function(){this._dropdown&&this._dropdown.parentNode&&this._dropdown.parentNode.removeChild(this._dropdown),function(t){for(var e=0,n=i;e<n.length;e++){var o=n[e];t._root.removeEventListener(o,t._onUiInteracted),t._dropdownContent.removeEventListener(o,t._onUiInteracted),t._dropdownContainer.removeEventListener(o,t._onUiInteracted)}for(var r=0,l=s;r<l.length;r++){var a=l[r];removeEventListener(a,t._onDropdownSizeUpdateNeeded)}}(this),this._observer.disconnect()}},{key:"setSelectElement",value:function(t){t!==this._select&&(this._select=t,c(this))}},{key:"setOpen",value:function(t){var n=this;if(!this._select.multiple&&!this._select.disabled)if(t){this._button._broker&&this._button.setOpen(!0),this._dropdownContainer.appendChild(this._dropdown);var o=!1,i=!1;e.awaitElementReady(this._dropdown,function(){o=!0,i&&u(n,n._dropdown,n._dropdownOptions)}),e.awaitElementReady(this._dropdownOptions,function(){i=!0,o&&u(n,n._dropdown,n._dropdownOptions)})}else{if(!this._dropdown.parentNode)return;this._button._broker&&this._button.setOpen(!1),this._dropdown.parentNode.removeChild(this._dropdown)}}},{key:"setFocus",value:function(t){t?this._root.setAttribute("data-szn-select--ui--active",""):this._root.removeAttribute("data-szn-select--ui--active")}}]),t}()}(self),function(t){var e=t.SznElements=t.SznElements||{},n='\n:root{--szn-select--border-width:1px;--szn-select--border-color:#ccc;--szn-select--active-border-color:#7dbfff;--szn-select--border-radius:4px;--szn-select--min-width:109px;--szn-select--height:2em;--szn-select--height-px:32px;--szn-select--option-indent:12px;--szn-select--option-padding:5px 5px 5px 12px;--szn-select--option-padding:5px 5px 5px var(--szn-select--option-indent);--szn-select--selected-option-background:#eee;--szn-select--button-padding:0 5px 0 12px;--szn-select--button-padding:0 5px 0 var(--szn-select--option-indent);--szn-select--state-arrow-width:2em;--szn-select--state-arrow-width:var(--szn-select--height);--szn-select--state-arrow-closed:"▼";--szn-select--state-arrow-opened:"▲";--szn-select--text-color:#000;--szn-select--disabled-text-color:#ccc;--szn-select--background:#fff;--szn-select--active-box-shadow:0 0 3px rgba(0,132,255,.4)}szn-select{display:inline-block;position:relative}szn-select,szn-tethered [data-szn-select--ui--dropdown]{--szn-select--button--border-width:1px;--szn-select--button--border-width:var(--szn-select--border-width);--szn-select--button--border-color:#ccc;--szn-select--button--border-color:var(--szn-select--border-color);--szn-select--button--border-radius:4px;--szn-select--button--border-radius:var(--szn-select--border-radius);--szn-select--button--padding:0 5px 0 12px;--szn-select--button--padding:var(--szn-select--button-padding);--szn-select--button--height:2em;--szn-select--button--height:var(--szn-select--height);--szn-select--button--height-px:32px;--szn-select--button--height-px:var(--szn-select--height-px);--szn-select--button--text-color:#000;--szn-select--button--text-color:var(--szn-select--text-color);--szn-select--button--disabled-text-color:#ccc;--szn-select--button--disabled-text-color:var(--szn-select--disabled-text-color);--szn-select--button--mark-width:2em;--szn-select--button--mark-width:var(--szn-select--state-arrow-width);--szn-select--button--background-color:#fff;--szn-select--button--background-color:var(--szn-select--background);--szn-select--button--icon-closed:"▼";--szn-select--button--icon-closed:var(--szn-select--state-arrow-closed);--szn-select--button--icon-opened:"▲";--szn-select--button--icon-opened:var(--szn-select--state-arrow-opened);--szn-select--options--border-width:1px;--szn-select--options--border-width:var(--szn-select--border-width);--szn-select--options--border-color:#ccc;--szn-select--options--border-color:var(--szn-select--border-color);--szn-select--options--border-radius-dropdown:0 0 4px 4px;--szn-select--options--border-radius-dropdown:0 0 var(--szn-select--border-radius) var(--szn-select--border-radius);--szn-select--options--border-radius-dropup:4px 4px 0 0;--szn-select--options--border-radius-dropup:var(--szn-select--border-radius) var(--szn-select--border-radius) 0 0;--szn-select--options--border-radius-mutli-select:4px;--szn-select--options--border-radius-mutli-select:var(--szn-select--border-radius);--szn-select--options--item-padding:5px 5px 5px 12px;--szn-select--options--item-padding:var(--szn-select--option-padding);--szn-select--options--item-indent:12px;--szn-select--options--item-indent:var(--szn-select--option-indent);--szn-select--options--text-color:#000;--szn-select--options--text-color:var(--szn-select--text-color);--szn-select--options--disabled-text:#ccc;--szn-select--options--disabled-text:var(--szn-select--disabled-text-color);--szn-select--options--background-color:#fff;--szn-select--options--background-color:var(--szn-select--background);--szn-select--options--selected-background:#eee;--szn-select--options--selected-background:var(--szn-select--selected-option-background);--szn-select--ui--active-border-color:#7dbfff;--szn-select--ui--active-border-color:var(--szn-select--active-border-color);--szn-select--ui--active-box-shadow:0 0 3px rgba(0,132,255,.4);--szn-select--ui--active-box-shadow:var(--szn-select--active-box-shadow);--szn-select--ui--dropdown-offset:-1px;--szn-select--ui--dropdown-offset:calc(-1 * var(--szn-select--border-width));--szn-select--ui--dropdown-min-width:109px;--szn-select--ui--dropdown-min-width:var(--szn-select--min-width)}szn-select[data-szn-select--ready] select{position:fixed;right:999999px;right:1000vw}szn-select[data-szn-select--single]{min-width:109px;min-width:var(--szn-select--min-width);height:2em;height:var(--szn-select--height)}szn-select [data-szn-select--ui]{display:none;position:relative;width:100%;height:100%}szn-select[data-szn-select--ready] [data-szn-select--ui]{display:block}szn-select[data-szn-select--touch-only] select{position:absolute;left:0;right:0;top:0;bottom:0;z-index:1;min-width:0;width:100%;height:100%;opacity:0}szn-select[data-szn-select--vanilla-aria] select{display:none}szn-select[data-szn-select--vanilla-aria] szn-select--ui{position:relative}szn-select[data-szn-select--vanilla-aria] ul[aria-hidden=true]{display:none}szn-select[data-szn-select--vanilla-aria] [data-szn-select--vanilla-aria-button],szn-select[data-szn-select--vanilla-aria] [data-szn-select--vanilla-aria-dropdown]{position:absolute;left:0;top:0;box-sizing:border-box;width:100%;height:100%;overflow:hidden;opacity:0}\n ',o=160;function i(){return/ MSIE \d/.test(navigator.userAgent)?"complete"===document.readyState:"loading"!==document.readyState}function s(t){if(t._accessiblityBroker&&t._accessiblityBroker.onUnmount(),t._mounted){var e=function(t){var e=!0,n=!1,o=void 0;try{for(var i,s=l.implementations[Symbol.iterator]();!(e=(i=s.next()).done);e=!0){var r=i.value;if(r.compatibilityTest(t))return r}}catch(t){n=!0,o=t}finally{try{e||null==s.return||s.return()}finally{if(n)throw o}}throw new Error("There is no compatible accessibility broker implementation for the provided select element")}(t._select);t._accessiblityBroker&&t._accessiblityBroker.constructor===e||(t._accessiblityBroker=new e(t._select,t._ui,t),r(t),t._accessiblityBroker.onMount())}}function r(t){for(var e={},n=0,o=Object.keys(t._lastMetaAttributes);n<o.length;n++){e[o[n]]=null}e["data-szn-select--ready"]="",e["data-szn-select--single"]=t._select.multiple?null:"";var i=t._accessiblityBroker.generateMetaAttributes(e);t._root.hasAttribute("data-szn-select--standalone")?function(t,e){for(var n=0,o=Object.keys(e);n<o.length;n++){var i=o[n];null===e[i]?t.removeAttribute(i):t.setAttribute(i,e[i])}}(t._root,i):(t._root.dispatchEvent(new CustomEvent("szn-select:ready",{bubbles:!0,cancelable:!0,detail:{attributes:i}})),t._root.requestedAttributes=i,t._root.isReady=!0),t._lastMetaAttributes=i}e["szn-select"]=function(){function t(i){var r=this;_classCallCheck(this,t),i.hasOwnProperty("minBottomSpace")||Object.defineProperty(i,"minBottomSpace",{get:function(){return i._broker._minBottomSpace},set:function(t){i._broker&&i._broker._ui._broker&&(i._broker._ui.minBottomSpace=t),i._broker._minBottomSpace=t}}),i.hasOwnProperty("dropdownClassName")||Object.defineProperty(i,"dropdownClassName",{get:function(){return i._broker._ui.dropdownClassName||""},set:function(t){i._broker&&i._broker._ui._broker&&(i._broker._ui.dropdownClassName=t)}}),i.hasOwnProperty("dropdownContainer")||Object.defineProperty(i,"dropdownContainer",{get:function(){return i._broker._ui.dropdownContainer||""},set:function(t){i._broker&&i._broker._ui._broker&&(i._broker._ui.dropdownContainer=t)}}),this.isOpen=!1,this._root=i,this._select=i.querySelector("select"),this._uiContainer=null,this._ui=document.createElement("szn-select--ui"),this._minBottomSpace=o,this._accessiblityBroker=null,this._mounted=!1,this._selectAttributesObserver=new MutationObserver(s.bind(null,this)),this._lastMetaAttributes={},this._onUiClicked=function(t,e){t._accessiblityBroker.onUiClicked(e)}.bind(null,this),this._onChange=function(t){t._accessiblityBroker.onChange()}.bind(null,this),e.injectStyles(n,"szn-select"),this._ui.onUiInteracted=function(t){r._accessiblityBroker&&r._accessiblityBroker.onUiClicked(t)}}return _createClass(t,[{key:"onMount",value:function(){var t=this;if(this._mounted=!0,this._uiContainer||(this._uiContainer=this._root.querySelector("[data-szn-select--ui]")),this._select||(this._select=this._root.querySelector("select")),this._uiContainer&&this._select)!function(t){if(!t._mounted)return;t._ui.parentNode||t._uiContainer.appendChild(t._ui);t._selectAttributesObserver.observe(t._select,{attributes:!0,attributeFilter:["disabled","multiple"]}),e.awaitElementReady(t._ui,function(){t._mounted&&(t._ui.minBottomSpace=t._minBottomSpace,t._ui.setSelectElement(t._select),s(t),function(t){t._uiContainer.addEventListener("click",t._onUiClicked),t._select.addEventListener("change",t._onChange)}(t),r(t))})}(this);else{if(i())return void console.error("The szn-select element requires a select element and another element with the data-szn-select--ui attribute to be in its children, but at least one of these is missing",this._root);document.addEventListener("readystatechange",function e(){i()&&(document.removeEventListener("readystatechange",e),t._mounted&&t.onMount())})}}},{key:"onUnmount",value:function(){var t;this._mounted=!1,this._selectAttributesObserver.disconnect(),this._accessiblityBroker&&(this._accessiblityBroker.onUnmount(),this._accessiblityBroker=null),(t=this)._uiContainer.removeEventListener("click",t._onUiClicked),t._select.removeEventListener("change",t._onChange)}}]),t}();var l=function(){function t(e,n,o){_classCallCheck(this,t),this.select=e,this.sznSelect=o,this.ui=n}return _createClass(t,[{key:"setOpen",value:function(t){this.sznSelect.isOpen=t,this.ui.setOpen(t)}},{key:"generateMetaAttributes",value:function(t){return t}},{key:"onMount",value:function(){}},{key:"onUnmount",value:function(){}},{key:"onUiClicked",value:function(t){}},{key:"onChange",value:function(){}}]),t}();l.compatibilityTest=function(){throw new TypeError("The compatibility test is not implemented for this accessibility implementation")};var a=function(t){function e(){return _classCallCheck(this,e),_possibleConstructorReturn(this,_getPrototypeOf(e).apply(this,arguments))}return _inherits(e,l),e}();a.compatibilityTest=function(t){return t.disabled};var c=function(t){function e(t,n,o){var i;return _classCallCheck(this,e),(i=_possibleConstructorReturn(this,_getPrototypeOf(e).call(this,t,n,o)))._onFocus=i.onFocus.bind(_assertThisInitialized(i)),i._onBlur=i.onBlur.bind(_assertThisInitialized(i)),i._blurTimeout=null,i}return _inherits(e,l),_createClass(e,[{key:"generateMetaAttributes",value:function(t){return/(?:\(iP(?:ad|hone|od(?: touch)?);| Android )/.test(navigator.userAgent)?Object.assign({},t,{"data-szn-select--touch-only":/\(iP(?:ad|hone|od(?: touch)?);/.test(navigator.userAgent)?"ios":""}):Object.assign({},t,{role:"application"})}},{key:"onMount",value:function(){_get(_getPrototypeOf(e.prototype),"onMount",this).call(this),this.select.addEventListener("focus",this._onFocus),this.select.addEventListener("blur",this._onBlur)}},{key:"onUnmount",value:function(){_get(_getPrototypeOf(e.prototype),"onUnmount",this).call(this),this.select.removeEventListener("focus",this._onFocus),this.select.removeEventListener("blur",this._onBlur)}},{key:"onUiClicked",value:function(t){var e=this;document.activeElement!==this.select&&this.select.focus(),setTimeout(function(){e._blurTimeout&&(clearTimeout(e._blurTimeout),e._blurTimeout=null),document.activeElement!==e.select&&e.select.focus()},0)}},{key:"onFocus",value:function(){this._blurTimeout&&(clearTimeout(this._blurTimeout),this._blurTimeout=null),this.ui.setFocus(!0)}},{key:"onBlur",value:function(){var t=this;this._blurTimeout&&clearTimeout(this._blurTimeout),this._blurTimeout=setTimeout(function(){t.ui.setFocus(!1)},1e3/30)}}]),e}();c.compatibilityTest=function(t){return!t.disabled&&t.multiple};var d=function(t){function e(t,n,o){var i;return _classCallCheck(this,e),(i=_possibleConstructorReturn(this,_getPrototypeOf(e).call(this,t,n,o)))._onFocus=i.onFocus.bind(_assertThisInitialized(i)),i._onBlur=i.onBlur.bind(_assertThisInitialized(i)),i._onKeyDown=i.onKeyDown.bind(_assertThisInitialized(i)),i._onCloseDropdown=i.onCloseDropdown.bind(_assertThisInitialized(i)),i._blurTimeout=null,i}return _inherits(e,l),_createClass(e,[{key:"generateMetaAttributes",value:function(t){return/(?:\(iP(?:ad|hone|od(?: touch)?);| Android )/.test(navigator.userAgent)?Object.assign({},t,{"data-szn-select--touch-only":""}):Object.assign({},t,{role:"application"})}},{key:"onMount",value:function(){_get(_getPrototypeOf(e.prototype),"onMount",this).call(this),this._addEventListeners()}},{key:"onUnmount",value:function(){_get(_getPrototypeOf(e.prototype),"onUnmount",this).call(this),this._blurTimeout&&(clearTimeout(this._blurTimeout),this._blurTimeout=null),this._removeEventListeners()}},{key:"onFocus",value:function(){this._blurTimeout&&(clearTimeout(this._blurTimeout),this._blurTimeout=null),this.ui.setFocus(!0)}},{key:"onBlur",value:function(){var t=this;this._blurTimeout&&clearTimeout(this._blurTimeout),this._blurTimeout=setTimeout(function(){t.ui.setFocus(!1),t.onCloseDropdown()},1e3/30)}},{key:"onUiClicked",value:function(t){var n=this;switch(_get(_getPrototypeOf(e.prototype),"onUiClicked",this).call(this,t),document.activeElement!==this.select&&this.select.focus(),t.type){case"click":t.stopPropagation(),this.ui.contains(t.target)?t.preventDefault():this.setOpen(!1);break;case"mousedown":this.sznSelect.isOpen?this.ui.contains(t.target)&&this.setOpen(!1):this.setOpen(!0)}setTimeout(function(){n._blurTimeout&&(clearTimeout(n._blurTimeout),n._blurTimeout=null),document.activeElement!==n.select&&n.select.focus()},0)}},{key:"onKeyDown",value:function(t){var e=!1;switch(t.keyCode){case 27:e=this.sznSelect.isOpen;break;case 38:case 40:e=t.altKey;break;case 32:e=!this.sznSelect.isOpen;break;case 13:e=!0}e&&this.setOpen(!this.sznSelect.isOpen)}},{key:"onCloseDropdown",value:function(){this.sznSelect.isOpen&&this.setOpen(!1)}},{key:"_addEventListeners",value:function(){this.select.addEventListener("focus",this._onFocus),this.select.addEventListener("blur",this._onBlur),this.select.addEventListener("keydown",this._onKeyDown),addEventListener("click",this._onCloseDropdown)}},{key:"_removeEventListeners",value:function(){this.select.removeEventListener("focus",this._onFocus),this.select.removeEventListener("blur",this._onBlur),this.select.removeEventListener("keydown",this._onKeyDown),removeEventListener("click",this._onCloseDropdown)}}]),e}();d.compatibilityTest=function(t){return!t.disabled&&!t.multiple&&(/(?:\(iP(?:ad|hone|od(?: touch)?);| Android )/.test(navigator.userAgent)||!/(?: Firefox\/| Mac OS X )/.test(navigator.userAgent))};var u=function(t){function n(t,e,o){var i;_classCallCheck(this,n),(i=_possibleConstructorReturn(this,_getPrototypeOf(n).call(this,t,e,o)))._instanceId=i._generateInstanceId();var s=_slicedToArray(i._createA11yUI(),2),r=s[0],l=s[1];return i._uiContainer=e.parentNode,i._a11yButton=r,i._a11yMenu=l,i._selectObserver=new MutationObserver(function(){i._updateA11yMenu(),i._updateA11yButton()}),i._blurTimeout=null,i._lastOptionId=0,i._typedText="",i._typingTimeout=null,i._onFocus=i.onFocus.bind(_assertThisInitialized(i)),i._onBlur=i.onBlur.bind(_assertThisInitialized(i)),i._onKeyDown=i.onKeyDown.bind(_assertThisInitialized(i)),i._onMouseUp=i.onMouseUp.bind(_assertThisInitialized(i)),i._onClick=i.onClick.bind(_assertThisInitialized(i)),i}return _inherits(n,l),_createClass(n,[{key:"setOpen",value:function(t){_get(_getPrototypeOf(n.prototype),"setOpen",this).call(this,t),this._a11yButton.setAttribute("aria-expanded","".concat(t)),this._a11yButton.setAttribute("aria-disabled","".concat(!t)),this._a11yMenu.firstElementChild.setAttribute("aria-hidden","".concat(!t))}},{key:"generateMetaAttributes",value:function(t){return Object.assign({},t,{"data-szn-select--vanilla-aria":""})}},{key:"onMount",value:function(){this._updateA11yMenu(),this._updateA11yButton(),this._uiContainer.insertBefore(this._a11yButton,this._uiContainer.firstChild),this._uiContainer.insertBefore(this._a11yMenu,this._a11yButton.nextSibling),this._selectObserver.observe(this.select,{childList:!0,attributes:!0,characterData:!0,subtree:!0,attributeFilter:["disabled","selected","title"]}),this._addEventListeners()}},{key:"onUnmount",value:function(){this._uiContainer.removeChild(this._a11yButton),this._uiContainer.removeChild(this._a11yMenu),this._removeEventListeners(),this._selectObserver.disconnect(),this._typingTimeout&&(clearTimeout(this._typingTimeout),this._typingTimeout=null)}},{key:"onUiClicked",value:function(t){var e=this;switch(_get(_getPrototypeOf(n.prototype),"onUiClicked",this).call(this,t),document.activeElement!==this._a11yButton&&this._a11yButton.focus(),t.type){case"click":t.stopPropagation(),this.ui.contains(t.target)||this.setOpen(!1);break;case"mousedown":this.sznSelect.isOpen?this.ui.contains(t.target)&&this.setOpen(!1):this.setOpen(!0)}setTimeout(function(){e._blurTimeout&&(clearTimeout(e._blurTimeout),e._blurTimeout=null),document.activeElement!==e.select&&e.select.focus()},0)}},{key:"onMouseUp",value:function(t){this.ui.contains(t.target)||this.setOpen(!1)}},{key:"onChange",value:function(){this._updateA11yButton(),document.activeElement!==this._a11yButton&&this._a11yButton.focus()}},{key:"onFocus",value:function(){this._blurTimeout&&(clearTimeout(this._blurTimeout),this._blurTimeout=null),this.ui.setFocus(!0)}},{key:"onBlur",value:function(){var t=this;this._blurTimeout&&clearTimeout(this._blurTimeout),this._blurTimeout=setTimeout(function(){t.ui.setFocus(!1),t.setOpen(!1)},1e3/30)}},{key:"onKeyDown",value:function(t){var e=this,o=Array.from(this.select.options).filter(function(t){return!t.disabled&&!t.parentNode.disabled}),i=o.findIndex(function(t){return t.selected}),s=this.sznSelect.isOpen,r=null;switch(t.keyCode){case 38:case 40:if(t.preventDefault(),t.altKey){this.setOpen(!s);break}r=o[i+(38===t.keyCode?-1:1)];break;case 13:t.preventDefault(),this.setOpen(!s);break;case 32:t.preventDefault(),s||this.setOpen(!0);break;case 27:t.preventDefault(),this.setOpen(!1);break;case 33:case 34:t.preventDefault(),r=o[33===t.keyCode?Math.max(0,i-(s?10:1)):Math.min(o.length-1,i+(s?10:1))];break;case 36:t.preventDefault(),r=o[0];break;case 35:t.preventDefault(),r=o[o.length-1]}if(!t.altKey&&!t.ctrlKey&&!t.metaKey&&1===t.key.length){this._typingTimeout&&clearTimeout(this._typingTimeout),this._typedText+=t.key.toLowerCase();var l=!0,a=!1,c=void 0;try{for(var d,u=o[Symbol.iterator]();!(l=(d=u.next()).done);l=!0){var h=d.value;if(h.text.toLowerCase().substring(0,this._typedText.length)===this._typedText){r=h;break}}}catch(t){a=!0,c=t}finally{try{l||null==u.return||u.return()}finally{if(a)throw c}}if((!r||r===o[i])&&/ Firefox\//.test(navigator.userAgent)){var p=n.transliterate(this._typedText),_=!0,b=!1,v=void 0;try{for(var f,m=o[Symbol.iterator]();!(_=(f=m.next()).done);_=!0){var g=f.value;if(n.transliterate(g.text).toLowerCase().substring(0,p.length)===p){r=g;break}}}catch(t){b=!0,v=t}finally{try{_||null==m.return||m.return()}finally{if(b)throw v}}}this._typingTimeout=setTimeout(function(){e._typingTimeout=null,e._typedText=""},n.TYPING_TIMEOUT)}r&&r!==o[i]&&(r.selected=!0,this.select.dispatchEvent(new CustomEvent("change",{bubbles:!0,cancelable:!0})))}},{key:"onClick",value:function(t){var e=t.target.closest("label");if(e){if(e.htmlFor){if(e.htmlFor!==this.select.id)return}else if(!e.contains(this.select))return;this._a11yButton.focus(),t.preventDefault()}}},{key:"_addEventListeners",value:function(){this._a11yButton.addEventListener("focus",this._onFocus),this._a11yButton.addEventListener("blur",this._onBlur),this._uiContainer.addEventListener("keydown",this._onKeyDown),addEventListener("mouseup",this._onMouseUp),addEventListener("click",this._onClick)}},{key:"_removeEventListeners",value:function(){this._a11yButton.removeEventListener("focus",this._onFocus),this._a11yButton.removeEventListener("blur",this._onBlur),this._uiContainer.removeEventListener("keydown",this._onKeyDown),removeEventListener("mouseup",this._onMouseUp),removeEventListener("click",this._onClick)}},{key:"_updateA11yButton",value:function(){var t=this.select.options.item(this.select.selectedIndex);if(t){var e=Array.from(this._a11yMenu.querySelectorAll("li")).find(function(e){return e.option===t});this._a11yButton.setAttribute("aria-activedescendant",e.firstElementChild.id),this._a11yButton.setAttribute("aria-labelledby",e.firstElementChild.id)}else this._a11yButton.setAttribute("aria-activedescendant",""),this._a11yButton.setAttribute("aria-labelledby","");this.select.title?this._a11yButton.setAttribute("title",this.select.title):this._a11yButton.removeAttribute("title"),this.select.hasAttribute("aria-label")?this._a11yButton.setAttribute("aria-label",this.select.getAttribute("aria-label")):this._a11yButton.removeAttribute("aria-label")}},{key:"_updateA11yMenu",value:function(){for(var t=this._a11yMenu.firstElementChild,n=Array.from(this.select.options),o=0,i=Array.from(t.querySelectorAll("li"));o<i.length;o++){var s=i[o];if(n.includes(s.option)){var r=s.firstElementChild,l=s.option;s.option.disabled||s.option.parentNode.disabled?(r.setAttribute("aria-disabled","true"),r.setAttribute("disabled","")):(r.setAttribute("aria-disabled","false"),r.removeAttribute("disabled")),r.innerText=l.text,l.title?r.setAttribute("title",l.title):r.removeAttribute("title")}else t.removeChild(s)}for(var a=t.firstElementChild,c=0,d=n;c<d.length;c++){l=d[c];if(a&&a.option===l)a=a.nextElementSibling;else{var u=l.disabled||l.parentNode.disabled,h=e.buildDom('\n <li>\n <szn-\n id="'.concat(this._generateOptionId(),'"\n tabindex="-1"\n role="option"\n aria-disabled="').concat(u,'"\n ').concat(u?"disabled":"","\n ").concat(l.title?'title="'.concat(l.title.replace('"',"&quot;"),'"'):"","\n >\n ").concat(l.text.replace("<","&lt;"),"\n </szn->\n </li>\n "));h.option=l,t.insertBefore(h,a)}}}},{key:"_createA11yUI",value:function(){var t=this._instanceId,n=/ Mac OS X /.test(navigator.userAgent);return[e.buildDom("\n <".concat(n?"input":"szn-",'\n tabindex="0"\n role="combobox"\n aria-expanded="false"\n aria-autocomplete="list"\n aria-owns="').concat(t,'"\n aria-haspopup="true"\n aria-activedescendant=""\n aria-disabled="true"\n data-szn-select--vanilla-aria-button\n >\n ').concat(n?"":"</szn->","\n ")),e.buildDom('\n <szn- id="'.concat(t,'" data-szn-select--vanilla-aria-dropdown>\n <ul tabindex="-1" role="listbox" aria-hidden="true" aria-disabled="false"></ul>\n </szn->\n '))]}},{key:"_generateInstanceId",value:function(){return"szn-select:VanillaAriaLabelledBySelect:".concat(++n._lastId)}},{key:"_generateOptionId",value:function(){return"".concat(this._ins