1
0
mirror of synced 2025-02-20 14:03:15 +03:00
select2/dist/select25.js.map
2019-06-26 21:18:41 -07:00

1 line
142 KiB
Plaintext

{"version":3,"file":"select25.js","sources":["../node_modules/tslib/tslib.es6.js","../node_modules/preact/dist/preact.module.js","../control/src/announce.ts","../control/src/dictionary.ts","../control/src/util.ts","../control/src/abstract-select.tsx","../control/src/dropdown.tsx","../control/src/icons.tsx","../control/src/style.ts","../control/src/result-list.tsx","../control/src/multi-select.tsx","../control/src/single-select.tsx","../bridge/src/store.ts","../bridge/src/select25.tsx","../bridge/src/ajax.ts","../bridge/src/data.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n 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 (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\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\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(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++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(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\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(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 (_) 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\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n 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}\r\n\r\nexport function __read(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\nexport function __spread() {\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\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(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\nexport function __asyncDelegator(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: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(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\nexport function __makeTemplateObject(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\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","var n,l,u,t,i,r,f={},e=[],o=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|^--/i;function c(n,l){for(var u in l)n[u]=l[u];return n}function s(n){var l=n.parentNode;l&&l.removeChild(n)}function a(n,l,u){var t,i,r,f,e=arguments;if(l=c({},l),arguments.length>3)for(u=[u],t=3;t<arguments.length;t++)u.push(e[t]);if(null!=u&&(l.children=u),null!=n&&null!=n.defaultProps)for(i in n.defaultProps)void 0===l[i]&&(l[i]=n.defaultProps[i]);return f=l.key,null!=(r=l.ref)&&delete l.ref,null!=f&&delete l.key,h(n,l,f,r)}function h(l,u,t,i){var r={type:l,props:u,key:t,ref:i,__k:null,__p:null,__b:0,__e:null,l:null,__c:null,constructor:void 0};return n.vnode&&n.vnode(r),r}function v(){return{}}function p(n){return n.children}function y(n){if(null==n||\"boolean\"==typeof n)return null;if(\"string\"==typeof n||\"number\"==typeof n)return h(null,n,null,null);if(null!=n.__e||null!=n.__c){var l=h(n.type,n.props,n.key,null);return l.__e=n.__e,l}return n}function d(n,l){this.props=n,this.context=l}function m(n,l){if(null==l)return n.__p?m(n.__p,n.__p.__k.indexOf(n)+1):null;for(var u;l<n.__k.length;l++)if(null!=(u=n.__k[l]))return\"function\"!=typeof u.type?u.__e:m(u,0);return\"function\"==typeof n.type?m(n):null}function w(n){var l,u;if(null!=(n=n.__p)&&null!=n.__c){for(n.__e=n.__c.base=null,l=0;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e){n.__e=n.__c.base=u.__e;break}return w(n)}}function b(t){!t.__d&&(t.__d=!0)&&1===l.push(t)&&(n.debounceRendering||u)(k)}function k(){var n;for(l.sort(function(n,l){return l.__v.__b-n.__v.__b});n=l.pop();)n.__d&&n.forceUpdate(!1)}function g(n,l,u,t,i,r,o,c){var a,h,v,p,d,m,w,b,k=l.__k||_(l.props.children,l.__k=[],y,!0),g=u&&u.__k||e,x=g.length;if(c==f)if(c=null,null!=r)c=r[0];else for(h=0;!c&&h<x;h++)c=g[h]&&g[h].__e;for(h=0;h<k.length;h++)if(null!=(a=k[h]=y(k[h]))){if(a.__p=l,a.__b=l.__b+1,null===(p=g[h])||p&&a.key==p.key&&a.type===p.type)g[h]=void 0;else for(v=0;v<x;v++){if((p=g[v])&&a.key==p.key&&a.type===p.type){g[v]=void 0;break}p=null}if(d=N(n,a,p=p||f,t,i,r,o,null,c),(v=a.ref)&&p.ref!=v&&(b||(b=[])).push(v,a.__c||d),null!=d){if(null==w&&(w=d),null!=a.l)d=a.l,a.l=null;else if(r==p||d!=c||null==d.parentNode)n:if(null==c||c.parentNode!==n)n.appendChild(d);else{for(m=c,v=0;(m=m.nextSibling)&&v<x;v+=2)if(m==d)break n;n.insertBefore(d,c)}c=d.nextSibling,\"function\"==typeof l.type&&(l.l=d)}}if(l.__e=w,null!=r&&\"function\"!=typeof l.type)for(h=r.length;h--;)null!=r[h]&&s(r[h]);for(h=x;h--;)null!=g[h]&&O(g[h],l);if(b)for(h=0;h<b.length;h++)A(b[h],b[++h],l)}function _(n,l,u,t){if(null==l&&(l=[]),null==n||\"boolean\"==typeof n)t&&l.push(null);else if(Array.isArray(n))for(var i=0;i<n.length;i++)_(n[i],l,u,t);else l.push(u?u(n):n);return l}function x(n,l,u,t){var i,r,f=Object.keys(l).sort();for(i=0;i<f.length;i++)\"children\"===(r=f[i])||\"key\"===r||u&&(\"value\"===r||\"checked\"===r?n:u)[r]===l[r]||C(n,r,l[r],u[r],t);for(i in u)\"children\"===i||\"key\"===i||i in l||C(n,i,null,u[i],t)}function C(n,l,u,r,e){var s,a,h,v;if(\"style\"===(l=e?\"className\"===l?\"class\":l:\"class\"===l?\"className\":l))for(a in s=c(c({},r),u))(u||f)[a]!==(r||f)[a]&&n.style.setProperty(\"-\"===a[0]&&\"-\"===a[1]?a:a.replace(t,\"-$&\"),u&&a in u?\"number\"==typeof s[a]&&!1===o.test(a)?s[a]+\"px\":s[a]:\"\");else if(\"o\"===l[0]&&\"n\"===l[1])h=l!==(l=l.replace(/Capture$/,\"\")),v=l.toLowerCase(),l=(v in n?v:l).slice(2),u?(r||n.addEventListener(l,P,h),(n.u||(n.u={}))[l]=u):n.removeEventListener(l,P,h);else if(\"list\"!==l&&\"tagName\"!==l&&!e&&l in n)if(n.length&&\"value\"==l)for(l=n.length;l--;)n.options[l].selected=n.options[l].value==u;else n[l]=null==u?\"\":u;else\"function\"!=typeof u&&\"dangerouslySetInnerHTML\"!==l&&(l!==(l=l.replace(/^xlink:?/,\"\"))?null==u||!1===u?n.removeAttributeNS(i,l.toLowerCase()):n.setAttributeNS(i,l.toLowerCase(),u):null==u||!1===u?n.removeAttribute(l):n.setAttribute(l,u))}function P(l){return this.u[l.type](n.event?n.event(l):l)}function N(l,u,t,i,r,f,e,o,s){var a,h,v,m,w,b,k,x,C,P,N=u.type;if(void 0!==u.constructor)return null;(a=n.__b)&&a(u);try{n:if(\"function\"==typeof N){if(x=u.props,C=(a=N.contextType)&&i[a.__c],P=a?C?C.props.value:a.__p:i,t.__c?k=(h=u.__c=t.__c).__p=h.__E:(N.prototype&&N.prototype.render?u.__c=h=new N(x,P):(u.__c=h=new d(x,P),h.constructor=N,h.render=T),C&&C.sub(h),h.props=x,h.state||(h.state={}),h.context=P,h.__n=i,v=h.__d=!0,h.__h=[]),null==h.__s&&(h.__s=h.state),null!=N.getDerivedStateFromProps&&c(h.__s==h.state?h.__s=c({},h.__s):h.__s,N.getDerivedStateFromProps(x,h.__s)),v)null==N.getDerivedStateFromProps&&null!=h.componentWillMount&&h.componentWillMount(),null!=h.componentDidMount&&e.push(h);else{if(null==N.getDerivedStateFromProps&&null==o&&null!=h.componentWillReceiveProps&&h.componentWillReceiveProps(x,P),!o&&null!=h.shouldComponentUpdate&&!1===h.shouldComponentUpdate(x,h.__s,P)){h.props=x,h.state=h.__s,h.__d=!1,h.__v=u,u.__e=t.__e,u.__k=t.__k;break n}null!=h.componentWillUpdate&&h.componentWillUpdate(x,h.__s,P)}m=h.props,w=h.state,h.context=P,h.props=x,h.state=h.__s,(a=n.__r)&&a(u),h.__d=!1,h.__v=u,h.__P=l;try{_(null!=(a=h.render(h.props,h.state,h.context))&&a.type==p&&null==a.key?a.props.children:a,u.__k=[],y,!0)}catch(l){if((a=n.__E)&&a(l,u,t))break n;throw l}for(null!=h.getChildContext&&(i=c(c({},i),h.getChildContext())),v||null==h.getSnapshotBeforeUpdate||(b=h.getSnapshotBeforeUpdate(m,w)),g(l,u,t,i,r,f,e,s),h.base=u.__e;a=h.__h.pop();)a.call(h);v||null==m||null==h.componentDidUpdate||h.componentDidUpdate(m,w,b),k&&(h.__E=h.__p=null)}else u.__e=j(t.__e,u,t,i,r,f,e);(a=n.diffed)&&a(u)}catch(n){z(n,u.__p)}return u.__e}function $(l,u){for(var t;t=l.pop();)try{t.componentDidMount()}catch(n){z(n,t.__v.__p)}n.__c&&n.__c(u)}function j(n,l,u,t,i,r,o){var c,s,a,h,v=u.props,p=l.props;if(i=\"svg\"===l.type||i,null==n&&null!=r)for(c=0;c<r.length;c++)if(null!=(s=r[c])&&(null===l.type?3===s.nodeType:s.localName===l.type)){n=s,r[c]=null;break}if(null==n){if(null===l.type)return document.createTextNode(p);n=i?document.createElementNS(\"http://www.w3.org/2000/svg\",l.type):document.createElement(l.type),r=null}return null===l.type?v!==p&&(n.data=p):l!==u&&(null!=r&&(r=e.slice.call(n.childNodes)),a=(v=u.props||f).dangerouslySetInnerHTML,((h=p.dangerouslySetInnerHTML)||a)&&null==r&&(h&&a&&h.__html==a.__html||(n.innerHTML=h&&h.__html||\"\")),p.multiple&&(n.multiple=p.multiple),g(n,l,u,t,\"foreignObject\"!==l.type&&i,r,o,f),x(n,p,v,i)),n}function A(n,l,u){try{\"function\"==typeof n?n(l):n.current=l}catch(n){z(n,u)}}function O(l,u,t){var i,r,f;if(n.unmount&&n.unmount(l),(i=l.ref)&&A(i,null,u),t||\"function\"==typeof l.type||(t=null!=(r=l.__e)),l.__e=l.l=null,null!=(i=l.__c)){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(n){z(n,u)}i.base=i.__P=null}if(i=l.__k)for(f=0;f<i.length;f++)i[f]&&O(i[f],u,t);null!=r&&s(r)}function T(n,l,u){return this.constructor(n,u)}function z(l,u){var t;for(n.__e&&n.__e(l,u);u;u=u.__p)if((t=u.__c)&&!t.__p)try{if(t.constructor&&null!=t.constructor.getDerivedStateFromError)t.setState(t.constructor.getDerivedStateFromError(l));else{if(null==t.componentDidCatch)continue;t.componentDidCatch(l)}return b(t.__E=t)}catch(n){l=n}throw l}function D(l,u,t){var i,r;n.__p&&n.__p(l,u),i=u.__k,l=a(p,null,[l]),r=[],N(u,t?l:u.__k=l,i||f,f,void 0!==u.ownerSVGElement,t?[t]:i?null:e.slice.call(u.childNodes),r,!1,t||f),$(r,l)}function H(n,l){l.__k=null,D(n,l)}function I(n,l){return l=c(c({},n.props),l),arguments.length>2&&(l.children=e.slice.call(arguments,2)),h(n.type,l,l.key||n.key,l.ref||n.ref)}function L(n){var l={},u={__c:\"__cC\"+r++,__p:n,Consumer:function(n,l){return n.children(l)},Provider:function(n){var t,i=this;return this.getChildContext||(t=[],this.getChildContext=function(){return l[u.__c]=i,l},this.shouldComponentUpdate=function(n){t.some(function(l){l.__P&&(l.context=n.value,b(l))})},this.sub=function(n){t.push(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){t.splice(t.indexOf(n),1),l&&l.call(n)}}),n.children}};return u.Consumer.contextType=u,u}n={},d.prototype.setState=function(n,l){var u=this.__s!==this.state&&this.__s||(this.__s=c({},this.state));(\"function\"!=typeof n||(n=n(u,this.props)))&&c(u,n),null!=n&&this.__v&&(l&&this.__h.push(l),b(this))},d.prototype.forceUpdate=function(n){var l,u,t,i=this.__v,r=this.__v.__e,f=this.__P;f&&(l=!1!==n,u=[],t=N(f,i,c({},i),this.__n,void 0!==f.ownerSVGElement,null,u,l,null==r?m(i):r),$(u,i),t!=r&&w(i)),n&&n()},d.prototype.render=p,l=[],u=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,t=/[A-Z]/g,i=\"http://www.w3.org/1999/xlink\",r=0;export{D as render,H as hydrate,a as createElement,a as h,p as Fragment,v as createRef,d as Component,I as cloneElement,L as createContext,_ as toChildArray,O as _unmount,n as options};\n//# sourceMappingURL=preact.module.js.map\n","export function initialize() {\r\n if (document.getElementById('s25-live')) {\r\n return;\r\n }\r\n\r\n const live = document.createElement('div');\r\n live.setAttribute('id', 's25-live');\r\n live.setAttribute('class', 's25-offscreen s25-live');\r\n document.body.appendChild(live);\r\n\r\n const assertive = document.createElement('div');\r\n assertive.setAttribute('id', 's25-live-assertive');\r\n assertive.setAttribute('role', 'log');\r\n assertive.setAttribute('aria-live', 'assertive');\r\n assertive.setAttribute('aria-relevant', 'additions');\r\n live.appendChild(assertive);\r\n\r\n const polite = document.createElement('div');\r\n polite.setAttribute('id', 's25-live-polite');\r\n polite.setAttribute('role', 'log');\r\n polite.setAttribute('aria-live', 'polite');\r\n polite.setAttribute('aria-relevant', 'additions');\r\n live.appendChild(polite);\r\n}\r\n\r\nexport function assertively(message: string) {\r\n add(message, document.getElementById('s25-live-assertive')!);\r\n}\r\n\r\nexport function politely(message: string) {\r\n add(message, document.getElementById('s25-live-polite')!);\r\n}\r\n\r\nfunction add(message: string, container: HTMLElement) {\r\n const node = document.createElement('div');\r\n node.appendChild(document.createTextNode(message));\r\n container.appendChild(node);\r\n\r\n // clean up old nodes\r\n\r\n let collection = document.getElementById('s25-live-assertive')!;\r\n while (collection.firstChild && collection.firstChild !== node) {\r\n collection.removeChild(collection.firstChild);\r\n }\r\n collection = document.getElementById('s25-live-polite')!;\r\n while (collection.firstChild && collection.firstChild !== node) {\r\n collection.removeChild(collection.firstChild);\r\n }\r\n}\r\n","export interface Dictionary {\r\n valueAdded(itemLabel: string): string;\r\n noSearchResults(): string;\r\n searchResultsLoading(): string;\r\n removeButtonTitle(): string;\r\n clearButtonTitle(): string;\r\n minimumCharactersMessage(len: number, min: number): string;\r\n multiSelectInstructions(): string;\r\n}\r\n\r\nconst EN_US: Dictionary = {\r\n noSearchResults() {\r\n return 'No results available';\r\n },\r\n\r\n searchResultsLoading() {\r\n return 'Loading...';\r\n },\r\n\r\n removeButtonTitle() {\r\n return 'Remove selected values';\r\n },\r\n\r\n clearButtonTitle() {\r\n return 'Clear selection';\r\n },\r\n\r\n valueAdded(itemLabel: string) {\r\n return itemLabel + ' added';\r\n },\r\n\r\n minimumCharactersMessage(len: number, min: number) {\r\n const delta = min - len;\r\n return 'Please enter ' + delta + ' more character' + (delta > 1 ? 's' : '');\r\n },\r\n\r\n multiSelectInstructions(): string {\r\n return \"Items can be removed from this list box by selecting them and activating 'Remove selected values' button. Items can be added by selecting them in the adjacent combobox.\";\r\n }\r\n};\r\n\r\nconst dictionaries = new Map<string, Dictionary>();\r\ndictionaries.set('en_us', EN_US);\r\n\r\nexport function getDictionary(dict?: string | undefined): Dictionary {\r\n const fallback: Dictionary = dictionaries.get('en_us') as Dictionary;\r\n\r\n if (!dict) {\r\n return fallback;\r\n }\r\n\r\n if (typeof dict === 'string') {\r\n const instance = dictionaries.get(dict);\r\n return instance ? instance : fallback;\r\n } else {\r\n return dict;\r\n }\r\n}\r\n","import { ComponentChild } from 'preact';\r\n\r\nexport function extend(...params: object[]) {\r\n for (let i = 1; i < arguments.length; i++) {\r\n for (const key in arguments[i]) {\r\n if (arguments[i].hasOwnProperty(key)) {\r\n if (typeof arguments[0][key] === 'object' && typeof arguments[i][key] === 'object') {\r\n extend(arguments[0][key], arguments[i][key]);\r\n } else {\r\n arguments[0][key] = arguments[i][key];\r\n }\r\n }\r\n }\r\n }\r\n return arguments[0];\r\n}\r\n\r\nexport type DeepPartial<T> = {\r\n [P in keyof T]?: T[P] extends Array<infer U>\r\n ? Array<DeepPartial<U>>\r\n : T[P] extends ReadonlyArray<infer V>\r\n ? ReadonlyArray<DeepPartial<V>>\r\n : DeepPartial<T[P]>\r\n};\r\n\r\nexport const merge = <T>(target: T, sources: Array<DeepPartial<T>>): T => {\r\n if (!sources.length) {\r\n return target;\r\n }\r\n const source = sources.shift();\r\n if (source === undefined) {\r\n return merge(target, sources);\r\n }\r\n\r\n if (isMergebleObject(target) && isMergebleObject(source)) {\r\n Object.keys(source).forEach((key: string) => {\r\n if (isMergebleObject(source[key])) {\r\n if (!target[key]) {\r\n target[key] = {};\r\n }\r\n merge(target[key], [source[key]]);\r\n } else {\r\n target[key] = source[key];\r\n }\r\n });\r\n }\r\n\r\n return merge(target, sources);\r\n};\r\n\r\nconst isObject = (item: any): boolean => {\r\n return item !== null && typeof item === 'object';\r\n};\r\n\r\nconst isMergebleObject = (item): boolean => {\r\n return isObject(item) && !Array.isArray(item);\r\n};\r\n\r\nexport function cn(...values: any) {\r\n const classes: string[] = [];\r\n const hasOwnProperty = {}.hasOwnProperty;\r\n\r\n for (const value of values) {\r\n if (typeof value === 'string') {\r\n classes.push(value);\r\n } else if (typeof value === 'object') {\r\n for (const key in value as object) {\r\n if (hasOwnProperty.call(value, key) && value[key]) {\r\n classes.push(key);\r\n }\r\n }\r\n }\r\n }\r\n\r\n return classes.join(' ');\r\n}\r\n\r\nexport enum Key {\r\n // https://www.w3.org/TR/uievents-key/#named-key-attribute-values\r\n ArrowDown = 'ArrowDown',\r\n ArrowUp = 'ArrowUp',\r\n ArrowLeft = 'ArrowLeft',\r\n ArrowRight = 'ArrowRight',\r\n Space = ' ',\r\n Enter = 'Enter',\r\n Tab = 'Tab',\r\n Home = 'Home',\r\n End = 'End',\r\n PageUp = 'PageUp',\r\n PageDown = 'PageDown',\r\n Backspace = 'Backspace',\r\n Delete = 'Delete',\r\n Clear = 'Clear',\r\n Escape = 'Escape',\r\n // IE 11\r\n Down = 'Down',\r\n Up = 'Up',\r\n Spacebar = 'Spacebar',\r\n Left = 'Left',\r\n Right = 'Right'\r\n}\r\n\r\nexport const uuid = (() => {\r\n let counter = 0;\r\n return () => 's25-' + counter++;\r\n})();\r\n\r\nexport function throttle(delay: number, callback: () => void): () => void {\r\n let timeout: number | undefined;\r\n return () => {\r\n if (timeout !== undefined) {\r\n window.clearTimeout(timeout);\r\n timeout = undefined;\r\n } else {\r\n timeout = window.setTimeout(() => {\r\n callback();\r\n timeout = undefined;\r\n }, delay);\r\n }\r\n };\r\n}\r\n\r\n// @ts-ignore\r\nexport function debounce(quiet: number, delegate: (...args: any[]) => void, that: object) {\r\n const args = Array.from(arguments);\r\n if (quiet <= 0) {\r\n return () => {\r\n delegate.apply(that, args);\r\n };\r\n } else {\r\n let timeout: number | undefined;\r\n return () => {\r\n if (timeout) {\r\n window.clearTimeout(timeout);\r\n }\r\n timeout = window.setTimeout(() => {\r\n timeout = undefined;\r\n delegate.apply(that, args);\r\n }, quiet);\r\n };\r\n }\r\n}\r\n\r\nexport function getScrollParents(el: HTMLElement): EventTarget[] {\r\n const style = window.getComputedStyle(el);\r\n const elementPosition = style.position;\r\n if (elementPosition === 'fixed') {\r\n return [el];\r\n }\r\n\r\n const parents: Array<HTMLElement | Window> = [];\r\n let parent = el.parentElement;\r\n\r\n while (parent && parent.nodeType === 1) {\r\n const css = window.getComputedStyle(parent);\r\n if (/(overlay|scroll|auto)/.test(css.overflow + ' ' + css.overflowX + ' ' + css.overflowY)) {\r\n if (elementPosition !== 'absolute' || ['relative', 'fixed', 'absolute'].indexOf(css.position || '') >= 0) {\r\n parents.push(parent);\r\n }\r\n }\r\n parent = parent.parentElement;\r\n }\r\n\r\n if (el.ownerDocument) {\r\n parents.push(el.ownerDocument.body);\r\n }\r\n\r\n // iframe\r\n if (el.ownerDocument !== document && el.ownerDocument && el.ownerDocument.defaultView) {\r\n parents.push(el.ownerDocument.defaultView);\r\n }\r\n\r\n parents.push(window);\r\n return parents;\r\n}\r\n\r\nexport function calculateVerticalVisibility(\r\n container: HTMLElement,\r\n element: HTMLElement\r\n): 'hidden' | 'partial-top' | 'partial-bottom' | 'visible' {\r\n const c = container.getBoundingClientRect();\r\n const e = element.getBoundingClientRect();\r\n\r\n if (e.bottom < c.top) {\r\n // above the fold\r\n return 'hidden';\r\n }\r\n\r\n if (e.top > c.bottom) {\r\n // below the fold\r\n return 'hidden';\r\n }\r\n\r\n if (e.top < c.top && e.bottom <= c.bottom) {\r\n return 'partial-top';\r\n }\r\n\r\n if (e.top >= c.top && e.bottom > c.bottom) {\r\n return 'partial-bottom';\r\n }\r\n\r\n return 'visible';\r\n}\r\n\r\nexport type MouseEventListener = (event: MouseEvent) => void;\r\nexport type KeyboardEventListener = (event: KeyboardEvent) => void;\r\nexport type EventListener = (event: Event) => void;\r\nexport type FocusEventListener = (event: FocusEvent) => void;\r\n\r\n/** helper that makes it easier to declare a scope inside a jsx block */\r\nexport function scope(delegate: () => ComponentChild) {\r\n return delegate();\r\n}\r\n","import { Component, ComponentChild, h, h as createElement } from 'preact';\nimport * as announce from './announce';\nimport { Dictionary, getDictionary } from './dictionary';\nimport { DeepPartial, Key, merge, uuid } from './util';\nconst forceImportOfH = h;\n\ntype ToString = (item: any) => string;\n\nexport type ItemRenderer = (string) | ((item: any, h: typeof createElement) => ComponentChild);\n\nexport type QueryFunction = (search: string, page: number, token: string) => Promise<QueryResult>;\n\nexport interface QueryResult {\n values: any[];\n more: boolean;\n token: string;\n}\n\nexport interface ResultListState {\n results: any[];\n token: string;\n active: number;\n page: number;\n\n showMinimumCharactersError: boolean;\n showNoSearchResultsFound: boolean;\n showLoadMoreResults: boolean;\n}\nexport interface State {\n search: string;\n results: ResultListState;\n loading: boolean;\n open: boolean;\n focused: boolean;\n}\n\nexport interface Props {\n containerStyle?: string;\n containerClass?: string;\n tabIndex?: number;\n itemId: ToString | string;\n itemLabel: ToString | string;\n valueContent?: ItemRenderer;\n resultContent?: ItemRenderer;\n\n query: QueryFunction;\n quiet?: number;\n allowDuplicates?: boolean;\n minimumCharacters?: number;\n openOnFocus?: boolean;\n dictionary?: string | Dictionary;\n}\n\nfunction MarkupRenderer({ markup }) {\n return <div dangerouslySetInnerHTML={{ __html: markup }}> </div>;\n}\n\nexport const DEFAULT_PROPS: Partial<Props> = {\n allowDuplicates: false,\n itemId: 'id',\n itemLabel: 'text',\n minimumCharacters: 0,\n quiet: 50,\n tabIndex: 0\n};\n\nexport abstract class AbstractSelect<P extends Props, S extends State> extends Component<P, S> {\n private searchTimeout: number | undefined;\n protected namespace: string;\n\n constructor(props: P) {\n super(props);\n this.searchTimeout = undefined;\n this.namespace = uuid();\n // @ts-ignore\n this.state = {\n focused: false,\n loading: false,\n open: false,\n results: {\n active: -1,\n page: 0,\n results: undefined, // TODO rename to values\n token: null,\n\n showLoadMoreResults: false,\n showMinimumCharactersError: false,\n showNoSearchResultsFound: false\n },\n search: ''\n };\n }\n\n public getItemId = (item: any): string => {\n const id = this.props.itemId;\n if (typeof id === 'function') {\n return (id as ToString)(item);\n } else {\n return '' + item[id];\n }\n };\n\n public getItemLabel = (item: any): string => {\n const label = this.props.itemLabel;\n if (typeof label === 'function') {\n return (label as ToString)(item);\n } else {\n return '' + item[label];\n }\n };\n\n public renderValue = (item: any): ComponentChild => {\n return this.renderItem(item, 'valueContent');\n };\n\n public renderResult = (item: any): ComponentChild => {\n return this.renderItem(item, 'resultContent');\n };\n\n private renderItem = (item: any, rendererName: keyof Props): ComponentChild => {\n const renderer = this.props[rendererName] as ItemRenderer;\n if (renderer) {\n if (typeof renderer === 'function') {\n const render = renderer(item, createElement);\n if (typeof render === 'string') {\n return <MarkupRenderer markup={render} />;\n } else {\n return render;\n }\n } else {\n return <MarkupRenderer markup={item[renderer]} />;\n }\n } else {\n return <MarkupRenderer markup={this.getItemLabel(item)} />;\n }\n };\n\n get dictionary(): Dictionary {\n const dict = this.props.dictionary;\n if (dict) {\n if (typeof dict === 'string') {\n return getDictionary(dict);\n } else {\n return dict as Dictionary;\n }\n } else {\n return getDictionary();\n }\n }\n\n protected updateState(update: DeepPartial<S> | Array<DeepPartial<S>>, callback?: () => void) {\n const state = merge(this.state, Array.isArray(update) ? update : [update]);\n this.setState(state, callback);\n }\n\n public search = (query, selectedValues, start?: DeepPartial<S>, callback?: () => void) => {\n const dictionary = this.dictionary;\n const { minimumCharacters, allowDuplicates, quiet, query: queryFunc } = this.props;\n\n const current = this.state.results;\n\n const minimumCharactersReached = query.length >= minimumCharacters;\n const token = minimumCharactersReached ? uuid() : undefined;\n\n const control = this;\n\n this.updateState(\n // @ts-ignore\n [\n start,\n {\n loading: minimumCharactersReached,\n results: {\n active: -1,\n page: 0,\n results: undefined,\n showLoadMoreResults: false,\n showMinimumCharactersError: !minimumCharactersReached,\n showNoSearchResultsFound: false,\n token\n },\n search: query\n }\n ],\n () => {\n if (callback) {\n callback();\n }\n\n if (!minimumCharactersReached) {\n // todo - throttle this announcement?\n announce.politely(dictionary.minimumCharactersMessage(query.length, minimumCharacters!));\n return;\n }\n\n // todo - throttle this announcement?\n // announce.politely(dictionary.searchResultsLoading());\n\n const execute = async () => {\n try {\n const result = await queryFunc(query, 0, token!);\n if (result.token !== control.state.results.token) {\n // this is a stale result, ignore\n return;\n }\n\n let values = result.values || [];\n if (!allowDuplicates && values.length > 0 && selectedValues.length > 0) {\n const ids = new Set<string>();\n selectedValues.forEach(v => ids.add(control.getItemId(v)));\n values = values.filter(v => !ids.has(control.getItemId(v)));\n }\n\n if (values.length < 1) {\n announce.politely(dictionary.noSearchResults());\n }\n\n // @ts-ignore\n control.updateState({\n loading: false,\n results: {\n active: values.length > 0 ? 0 : -1,\n page: 0,\n results: values,\n showLoadMoreResults: result.more,\n showNoSearchResultsFound: values.length < 1\n }\n });\n } catch (e) {\n // @ts-ignore\n control.updateState({ loading: false });\n }\n };\n\n if (quiet && quiet > 0) {\n if (control.searchTimeout) {\n window.clearTimeout(control.searchTimeout);\n }\n control.searchTimeout = window.setTimeout(execute, quiet);\n } else {\n execute();\n }\n }\n );\n };\n\n public loadMore() {\n const {\n loading,\n search: query,\n results: { page }\n } = this.state;\n const dict = this.dictionary;\n const { query: queryFunc } = this.props;\n const control = this;\n\n if (loading) {\n return;\n }\n\n const token = uuid();\n const nextPage = page + 1;\n\n this.updateState(\n // @ts-ignore\n {\n loading: true,\n results: {\n token\n }\n },\n async () => {\n // TODO throttle?\n // announce.politely(dict.searchResultsLoading());\n\n try {\n const result = await queryFunc(query, nextPage, token);\n\n const current = control.state.results;\n\n if (result.token !== current.token) {\n // this is a stale result, ignore\n return;\n }\n\n if (result.values && result.values.length > 0) {\n // @ts-ignore\n control.updateState({\n loading: false,\n results: {\n page: nextPage,\n results: current.results.concat(result.values),\n showLoadMoreResults: result.more\n }\n });\n } else {\n announce.politely(dict.noSearchResults());\n // @ts-ignore\n control.updateState({\n loading: false,\n results: {\n showLoadMoreResults: false\n }\n });\n }\n } catch (e) {\n // @ts-ignore\n control.updateState({ loading: false });\n }\n }\n );\n }\n\n protected handleResultNavigationKeyDown(event: KeyboardEvent): boolean {\n switch (event.key) {\n case Key.ArrowUp:\n case Key.Up:\n this.selectPreviousSearchResult();\n event.preventDefault();\n return true;\n case Key.ArrowDown:\n case Key.Down:\n this.selectNextSearchResult();\n event.preventDefault();\n return true;\n }\n return false;\n }\n\n protected selectNextSearchResult() {\n const { active, results } = this.state.results;\n if (results && active < results.length - 1) {\n // @ts-ignore\n this.updateState({ results: { active: active + 1 } });\n }\n }\n\n protected selectPreviousSearchResult() {\n const { active } = this.state.results;\n if (active > 0) {\n // @ts-ignore\n this.updateState({ results: { active: active - 1 } });\n }\n }\n\n protected getSelectedSearchResult() {\n const { results, active } = this.state.results;\n return results[active];\n }\n\n protected selectSearchResult(index: number) {\n const { active } = this.state.results;\n if (active !== index) {\n // @ts-ignore\n this.updateState({ results: { active: index } });\n }\n }\n\n protected hasSearchResults() {\n const results = this.state.results.results;\n return results && results.length > 0;\n }\n}\n","import { Component, ComponentChild, Fragment, h, RefObject, render } from 'preact';\r\nimport { getScrollParents, MouseEventListener, throttle } from './util';\r\n\r\nclass ContextProvider extends Component<{ context: any }> {\r\n public getChildContext() {\r\n return this.props.context;\r\n }\r\n public render() {\r\n return this.props.children;\r\n }\r\n}\r\n\r\nfunction Portal({ vnode, container }): null {\r\n // @ts-ignore\r\n const wrap = <ContextProvider context={this.context}>{vnode}</ContextProvider>;\r\n render(wrap, container);\r\n return null;\r\n}\r\n\r\nfunction createPortal(vnode, container): ComponentChild {\r\n return h(Portal, { vnode, container });\r\n}\r\n\r\ninterface Props {\r\n controlRef: RefObject<HTMLElement>;\r\n dropdownRef: RefObject<HTMLElement>;\r\n class?: string;\r\n onClick?: MouseEventListener;\r\n onMouseDown?: MouseEventListener;\r\n onFocusOut?: EventListener;\r\n}\r\n\r\nexport class Dropdown extends Component<Props> {\r\n private container?: HTMLElement;\r\n private scrollParents?: EventTarget[];\r\n private throttledPosition;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.throttledPosition = throttle(50, this.position.bind(this));\r\n }\r\n\r\n public componentWillMount() {\r\n this.container = document.createElement('div');\r\n if (this.props.class) {\r\n this.container.className = this.props.class;\r\n }\r\n\r\n /*\r\n this container needs to be able to receive focus so we can tell\r\n it is not leaving the control - we consider dropdown part of the control\r\n */\r\n this.container.tabIndex = -1;\r\n if (this.props.onClick) {\r\n this.container.addEventListener('click', this.props.onClick);\r\n }\r\n if (this.props.onMouseDown) {\r\n this.container.addEventListener('mousedown', this.props.onMouseDown);\r\n }\r\n if (this.props.onFocusOut) {\r\n this.container.addEventListener('focusout', this.props.onFocusOut);\r\n }\r\n document.body.appendChild(this.container);\r\n }\r\n\r\n public componentDidMount() {\r\n this.props.dropdownRef.current = this.container;\r\n this.scrollParents = getScrollParents(this.props.controlRef.current!);\r\n this.scrollParents.forEach(parent => {\r\n ['resize', 'scroll', 'touchmove'].forEach(event => {\r\n parent.addEventListener(event, this.throttledPosition);\r\n });\r\n });\r\n this.position();\r\n }\r\n\r\n public componentWillUnmount() {\r\n if (this.scrollParents) {\r\n this.scrollParents.forEach(parent => {\r\n ['resize', 'scroll', 'touchmove'].forEach(event => {\r\n parent.removeEventListener(event, this.throttledPosition);\r\n });\r\n });\r\n delete this.scrollParents;\r\n this.scrollParents = undefined;\r\n }\r\n\r\n this.props.dropdownRef.current = undefined;\r\n this.container!.parentElement!.removeChild(this.container!);\r\n }\r\n\r\n public componentDidUpdate() {\r\n this.position();\r\n }\r\n\r\n public render(props) {\r\n return createPortal(<Fragment>{this.props.children}</Fragment>, this.container!);\r\n }\r\n\r\n private position() {\r\n const control = this.props.controlRef.current!;\r\n const rect = control.getBoundingClientRect();\r\n const style = `top: ${rect.top + rect.height + window.pageYOffset}px;\r\n left: ${rect.left + window.pageXOffset}px;\r\n width: ${rect.width}px;`;\r\n this.container!.setAttribute('style', style);\r\n }\r\n}\r\n","import { FunctionComponent, h } from 'preact';\r\n\r\nconst forceImportOfH = h;\r\n\r\ninterface Props {\r\n width: number;\r\n height: number;\r\n}\r\n\r\nexport const Toggle: FunctionComponent<Props> = ({ height, width }) => {\r\n const viewBox = '0 0 ' + width + ' ' + height;\r\n return (\r\n <svg height={height} width={width} viewBox={viewBox} tabIndex={-1} focusable='false'>\r\n <path d='M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z' />\r\n </svg>\r\n );\r\n};\r\nToggle.displayName = 'Toggle';\r\n\r\nexport const Remove: FunctionComponent<Props> = ({ width, height }) => {\r\n const viewBox = '0 0 ' + width + ' ' + height;\r\n return (\r\n <svg height={height} width={width} viewBox={viewBox} tabIndex={-1} focusable='false'>\r\n <path d='M14.348 14.849c-0.469 0.469-1.229 0.469-1.697 0l-2.651-3.030-2.651 3.029c-0.469 0.469-1.229 0.469-1.697 0-0.469-0.469-0.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-0.469-0.469-0.469-1.228 0-1.697s1.228-0.469 1.697 0l2.652 3.031 2.651-3.031c0.469-0.469 1.228-0.469 1.697 0s0.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c0.469 0.469 0.469 1.229 0 1.698z' />\r\n </svg>\r\n );\r\n};\r\nRemove.displayName = 'Remove';\r\n","export const enum style {\r\n control = 's25-control',\r\n content = 's25-content',\r\n single = 's25-single',\r\n multi = 's25-multi',\r\n body = 's25-body',\r\n focused = 's25-focused',\r\n active = 's25-active',\r\n live = 's25-live',\r\n multiValues = 's25-multi-values',\r\n value = 's25-value',\r\n item = 's25-item',\r\n selected = 's25-selected',\r\n toggle = 's25-toggle',\r\n remove = 's25-remove',\r\n open = 's25-open',\r\n label = 's25-label',\r\n search = 's25-search',\r\n offscreen = 's25-offscreen',\r\n searchContainer = 's25-search-container',\r\n dropdown = 's25-dropdown',\r\n searchResults = 's25-search-results',\r\n options = 's25-options',\r\n noSearchResults = 's25-no-search-results',\r\n searchResultsMessage = 's25-search-results-message',\r\n searchResultsLoading = 's25-search-results-loading',\r\n searchResultsMinimumError = 's25-search-results-minimum-error',\r\n hiddenAccessible = 's25-hidden-accessible',\r\n hidden = 's25-hidden',\r\n placeholder = 's25-placeholder'\r\n}\r\n","import { Component, ComponentChild, createRef, h, RefObject } from 'preact';\r\nimport { Dictionary } from './dictionary';\r\nimport { style } from './style';\r\nimport { calculateVerticalVisibility, cn } from './util';\r\n\r\nconst forceImportOfH = h;\r\n\r\n// TODO if upon render loading is visible signal loadmore\r\n\r\ninterface Props {\r\n // TODO consistenly call search a query\r\n namespace: string;\r\n search: string;\r\n listboxDomId?: string;\r\n results: any[];\r\n token: string;\r\n active: number;\r\n page: number;\r\n loading: boolean;\r\n\r\n itemLabel: (item: any) => string;\r\n renderItem: (item: any) => ComponentChild;\r\n\r\n dictionary: Dictionary;\r\n minimumCharacters: number;\r\n\r\n showMinimumCharactersError: boolean;\r\n showNoSearchResultsFound: boolean;\r\n showLoadMoreResults: boolean;\r\n\r\n onResultClicked: (result: any, event: MouseEvent) => void;\r\n onMouseMove: (index: any, event: MouseEvent) => void;\r\n onLoadMore: () => void;\r\n}\r\n\r\nexport class ResultList extends Component<Props> {\r\n private container: RefObject<HTMLElement>;\r\n private lastMouseClientX?: number;\r\n private lastMouseClientY?: number;\r\n private loadMore: RefObject<HTMLElement>;\r\n constructor(props) {\r\n super(props);\r\n this.container = createRef();\r\n this.loadMore = createRef();\r\n }\r\n\r\n private getResultDomId(index: number) {\r\n return this.props.namespace + index;\r\n }\r\n\r\n public render(props, state, context) {\r\n const { dictionary, minimumCharacters, showLoadMoreResults, results } = props;\r\n const query = this.props.search;\r\n\r\n return (\r\n <div class={style.body}>\r\n <div\r\n ref={this.container}\r\n onScroll={this.onScroll}\r\n class={style.searchResults}\r\n aria-busy={props.loading}\r\n style={{ maxHeight: '175px' }}\r\n >\r\n {props.loading && (\r\n <div class={cn(style.searchResultsLoading, style.searchResultsMessage)}>\r\n {dictionary.searchResultsLoading()}\r\n </div>\r\n )}\r\n {props.showNoSearchResultsFound && (\r\n <div class={cn(style.noSearchResults, style.searchResultsMessage)}>\r\n {dictionary.noSearchResults()}\r\n </div>\r\n )}\r\n {props.showMinimumCharactersError && (\r\n <div class={cn(style.searchResultsMinimumError, style.searchResultsMessage)}>\r\n {dictionary.minimumCharactersMessage(query.length, minimumCharacters)}\r\n </div>\r\n )}\r\n {results && results.length > 0 && (\r\n <div\r\n class={style.options}\r\n role='listbox'\r\n id={props.listboxDomId}\r\n aria-activedescendant={props.active >= 0 ? this.getResultDomId(props.active) : undefined}\r\n >\r\n {results.map((result, index) => {\r\n const label = props.itemLabel(result);\r\n const render = props.renderItem(result);\r\n const active = props.active === index;\r\n const css = cn(style.item, {\r\n [style.active]: active\r\n });\r\n const id = this.getResultDomId(index);\r\n return (\r\n <div\r\n id={id}\r\n class={css}\r\n role='option'\r\n onClick={this.onResultClicked(result)}\r\n onMouseMove={this.onMouseMove(index)}\r\n aria-posinset={index + 1}\r\n aria-setsize={showLoadMoreResults ? results.length + 1 : results}\r\n aria-selected={active}\r\n aria-label={label}\r\n >\r\n <div class={style.content}>{render}</div>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n )}\r\n {props.showLoadMoreResults && (\r\n <div\r\n ref={this.loadMore}\r\n class={cn(style.searchResultsMinimumError, style.searchResultsMessage)}\r\n >\r\n {dictionary.searchResultsLoading()}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n private onResultClicked = (result: any) => (event: MouseEvent) => {\r\n this.props.onResultClicked(result, event);\r\n };\r\n\r\n private onMouseMove = (index: number) => (event: MouseEvent) => {\r\n if (this.lastMouseClientX === event.clientX && this.lastMouseClientY === event.clientY) {\r\n // the mouse did not move, the dropdown was scrolled instead, we do not change selected element because\r\n // it will be scrolled into view and mess with the scrolling of the results in the dropdown\r\n return;\r\n }\r\n this.lastMouseClientX = event.clientX;\r\n this.lastMouseClientY = event.clientY;\r\n\r\n this.props.onMouseMove(index, event);\r\n };\r\n\r\n private onScroll = (event: Event) => {\r\n if (!this.props.showLoadMoreResults) {\r\n return;\r\n }\r\n const more = this.loadMore.current!;\r\n const drop = this.container.current!;\r\n\r\n const visibility = calculateVerticalVisibility(drop, more);\r\n if (visibility !== 'hidden') {\r\n this.props.onLoadMore();\r\n }\r\n };\r\n\r\n public componentDidUpdate(prevProps: Props, prevState: Props) {\r\n const { active, results, showLoadMoreResults } = this.props;\r\n const { active: prevActive } = prevProps;\r\n\r\n if (active !== prevActive) {\r\n if (active >= 0 && results && results.length > 0 && active === results.length - 1 && showLoadMoreResults) {\r\n // last result is selected and load more is shown, make sure it is scrolled into view\r\n\r\n const drop = this.container.current!;\r\n const el = this.loadMore.current!;\r\n\r\n drop.scrollTop = el.offsetTop + el.offsetHeight - drop.clientHeight;\r\n\r\n // console.log(\"scrolling to see load more\");//, setting scrolltop\", drop, el, el.offsetTop - drop.clientHeight);\r\n } else if (active >= 0) {\r\n // make sure it is scrolled into view\r\n const id = this.getResultDomId(active);\r\n const el = document.getElementById(id);\r\n if (el != null) {\r\n const drop = this.container!.current!;\r\n const c = drop.getBoundingClientRect();\r\n const e = el.getBoundingClientRect();\r\n\r\n if (e.top < c.top && e.bottom <= c.bottom) {\r\n const delta = c.top - e.top;\r\n drop.scrollTop = drop.scrollTop - delta;\r\n }\r\n\r\n if (e.top >= c.top && e.bottom > c.bottom) {\r\n const delta = e.bottom - c.bottom;\r\n drop.scrollTop = drop.scrollTop + delta;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","import { createRef, Fragment, h, RefObject } from 'preact';\nimport {\n AbstractSelect,\n DEFAULT_PROPS as ABSTRACT_DEFAULT_PROPS,\n Props as SearchControllerProps,\n State as AbstractSelectState\n} from './abstract-select';\nimport * as announce from './announce';\nimport { Dropdown } from './dropdown';\nimport { Remove, Toggle } from './icons';\nimport { ResultList } from './result-list';\nimport { style } from './style';\nimport { cn, extend, Key, scope } from './util';\n\nconst forceImportOfH = h;\n\nexport interface Props extends SearchControllerProps {\n valuesLabel: string;\n comboboxLabel: string;\n values: any[];\n onChange: (values: any[]) => void;\n}\n\ninterface ValueListState {\n active: number;\n selected: boolean[];\n}\n\ninterface State extends AbstractSelectState {\n values: ValueListState;\n}\n\nconst DEFAULT_PROPS = extend({}, ABSTRACT_DEFAULT_PROPS, { values: [] });\n\nexport class MultiSelect extends AbstractSelect<Props, State> {\n private containerRef: RefObject<HTMLDivElement>;\n private dropdownRef: RefObject<HTMLElement>;\n private bodyRef: RefObject<HTMLDivElement>;\n private valuesRef: RefObject<HTMLDivElement>;\n private searchRef: RefObject<HTMLInputElement>;\n\n public static defaultProps = DEFAULT_PROPS;\n\n constructor(props) {\n super(props);\n const { values } = props;\n\n this.valuesRef = createRef();\n this.searchRef = createRef();\n this.bodyRef = createRef();\n this.containerRef = createRef();\n this.dropdownRef = createRef();\n\n this.state = extend(this.state, {\n values: {\n active: -1,\n selected: values.map(v => false)\n }\n });\n }\n\n public componentWillMount() {\n announce.initialize();\n }\n\n public render(props, state) {\n const { values, tabIndex, minimumCharacters, valuesLabel, comboboxLabel } = props;\n const {\n open,\n loading,\n focused,\n search,\n values: { active, selected },\n results\n } = state;\n const dictionary = this.dictionary;\n\n let classes = cn(style.control, style.multi, { [style.open]: open }, { [style.focused]: focused });\n if (props.containerClass && props.containerClass.length > 0) {\n classes += ' ' + props.containerClass;\n }\n\n const instructionsDomId = this.namespace + '-instructions';\n const resultsDomId = this.namespace + '-results';\n const resultsNamespace = this.namespace + '-res-';\n return (\n <Fragment>\n <div\n class={classes}\n ref={this.containerRef}\n onFocusCapture={this.onFocusIn}\n onBlurCapture={this.onFocusOut}\n tabIndex={-1}\n onMouseDown={this.focusSearchAndStopPropagation}\n >\n <div class={cn(style.body)} ref={this.bodyRef} onClick={this.onBodyClick}>\n <div id={instructionsDomId} class={cn(style.offscreen)} style={{ display: 'none' }}>\n {dictionary.multiSelectInstructions()}\n </div>\n {scope(() => {\n const activeDescendant = active >= 0 ? this.namespace + '-vl-' + active : undefined;\n if (values && values.length > 0) {\n return (\n <div\n ref={this.valuesRef}\n class={cn(style.multiValues)}\n tabIndex={tabIndex}\n role='listbox'\n aria-orientation='vertical'\n aria-multiselectable='true'\n aria-activedescendant={activeDescendant}\n aria-label={valuesLabel}\n aria-describedby={instructionsDomId}\n onFocus={this.onValuesFocus}\n onBlur={this.onValuesBlur}\n onKeyDown={this.onValuesKeyDown}\n >\n {values.map((value: any, index: number) => {\n const isSelected = selected[index];\n const isActive = active === index;\n const css = cn(style.item, {\n [style.selected]: isSelected,\n [style.active]: isActive\n });\n const id = this.namespace + '-vl-' + index;\n const label = this.getItemLabel(value);\n const render = this.renderValue(value);\n return (\n <div\n id={id}\n class={css}\n role='option'\n aria-selected={isSelected}\n aria-label={label}\n onMouseDown={(e: Event) => e.stopPropagation()}\n onClick={this.onValueClick(index)}\n >\n <div class={style.content}>{render}</div>\n </div>\n );\n })}\n </div>\n );\n } else {\n return null;\n }\n })}\n {scope(() => {\n const disabled = !selected.find(x => x === true);\n const className = cn(style.remove, {\n [style.offscreen]: values.length < 1\n });\n return (\n <button\n className={className}\n onClick={this.onRemoveSelectedClick}\n onFocus={this.onRemoveSelectedFocus}\n disabled={disabled}\n aria-disabled={disabled}\n title={dictionary.removeButtonTitle()}\n >\n <span>\n <Remove width={20} height={20} />\n </span>\n </button>\n );\n })}\n <label htmlFor={undefined} className={style.offscreen}>\n {props.comboboxLabel}\n </label>\n <input\n type='text'\n ref={this.searchRef}\n value={search}\n class={cn(style.search)}\n role='combobox'\n aria-label={props.comboboxLabel}\n aria-autocomplete='list'\n aria-haspopup='true'\n aria-owns={resultsDomId}\n aria-controls={resultsDomId}\n aria-expanded={open ? 'true' : 'false'}\n aria-activedescendant={results.active >= 0 ? resultsNamespace + results.active : undefined}\n aria-busy={loading}\n onInput={this.onSearchInput}\n onKeyDown={this.onSearchKeyDown}\n onFocus={this.onSearchFocus}\n />\n <div className={cn(style.toggle)} aria-hidden={true} tabIndex={-1} onClick={this.onToggleClick}>\n <Toggle height={20} width={20} />\n </div>\n </div>\n </div>\n {open && (\n <Dropdown\n class={cn(style.dropdown, style.multi)}\n onClick={this.onDropdownClick}\n controlRef={this.containerRef}\n dropdownRef={this.dropdownRef}\n >\n <ResultList\n namespace={resultsNamespace}\n minimumCharacters={minimumCharacters}\n dictionary={this.dictionary}\n itemLabel={this.getItemLabel}\n renderItem={this.renderResult}\n listboxDomId={resultsDomId}\n search={search}\n {...this.state.results}\n loading={loading}\n onResultClicked={this.onResultClicked}\n onMouseMove={this.onResultMouseMove}\n onLoadMore={this.onLoadMoreResults}\n />\n </Dropdown>\n )}\n </Fragment>\n );\n }\n\n public componentDidMount() {\n const css = this.props.containerStyle;\n if (css && css.length > 0) {\n this.containerRef.current!.setAttribute('style', css);\n }\n }\n\n private onLoadMoreResults = () => {\n this.loadMore();\n };\n\n private focusSearchAndStopPropagation = (event: Event) => {\n this.searchRef.current!.focus();\n event.preventDefault();\n event.stopPropagation();\n };\n\n public onToggleClick = (event: MouseEvent) => {\n const { open } = this.state;\n if (open) {\n this.close();\n this.searchRef.current!.focus();\n } else {\n this.search(this.state.search, this.props.values, { open: true });\n this.searchRef.current!.focus();\n }\n event.preventDefault();\n event.stopPropagation();\n };\n\n public onBodyClick = (event: MouseEvent) => {\n if (event.target === this.bodyRef.current) {\n // if the element itself was clicked, (white space inside the body)\n this.searchRef.current!.focus();\n }\n };\n\n public onFocusIn = (event: FocusEvent) => {\n this.updateState({ focused: true });\n };\n\n public onFocusOut = (event: FocusEvent) => {\n const receiver = event.relatedTarget as Node;\n const container = this.containerRef.current!;\n const dropdown = this.dropdownRef.current!;\n const focused =\n container.contains(receiver) || (dropdown && (dropdown === receiver || dropdown.contains(receiver)));\n\n this.updateState({\n focused\n });\n if (!focused) {\n this.closeIfOpen();\n }\n };\n\n public onSearchFocus = (event: FocusEvent) => {\n const { openOnFocus } = this.props;\n const { open } = this.state;\n if (!open && openOnFocus) {\n this.search(this.searchRef.current!.value, this.props.values, { open: true });\n }\n };\n\n public onResultMouseMove = (index: number, event: MouseEvent) => {\n this.selectSearchResult(index);\n };\n\n public selectActiveResult = () => {\n this.selectResult(this.getSelectedSearchResult());\n };\n\n public selectResult = (result: any) => {\n const { values, onChange } = this.props;\n const next = values.slice();\n next.push(result);\n\n this.close();\n\n const label = this.getItemLabel(result);\n announce.politely(this.dictionary.valueAdded(label));\n\n onChange(next);\n };\n\n public toggleValue = (index: number) => {\n const {\n values: { selected }\n } = this.state;\n const next = selected.slice();\n next[index] = !next[index];\n this.updateState({ values: { selected: next, active: index } });\n };\n\n public onRemoveSelectedFocus = (event: FocusEvent) => {\n this.closeIfOpen();\n };\n\n public onRemoveSelectedClick = (event: Event) => {\n const {\n values: { selected }\n } = this.state;\n const { values, onChange } = this.props;\n const next = values.slice().filter((value, index) => !selected[index]);\n this.updateState({\n values: {\n selected: next.map(v => false)\n }\n });\n onChange(next);\n\n this.searchRef.current!.focus();\n };\n\n public onSearchInput = (event: Event) => {\n const value = (event.target as HTMLInputElement).value;\n this.search(value, this.props.values, { open: true });\n };\n\n public onSearchKeyDown = (event: KeyboardEvent) => {\n if (this.handleResultNavigationKeyDown(event)) {\n return;\n }\n\n const { open } = this.state;\n\n if (open && this.hasSearchResults) {\n switch (event.key) {\n case Key.Enter:\n this.selectActiveResult();\n event.preventDefault();\n break;\n case Key.Escape:\n if (open) {\n this.close();\n }\n event.preventDefault();\n break;\n }\n }\n };\n\n public onValueClick = (index: number) => (event: MouseEvent) => {\n this.toggleValue(index);\n event.preventDefault();\n event.stopPropagation();\n };\n\n public onValuesFocus = (event: Event) => {\n const {\n values: { active, selected }\n } = this.state;\n const { values } = this.props;\n\n // highlight the first selected value\n if (active < 0 && values.length > 0) {\n let index = 0;\n for (let i = 0; i < selected.length; i++) {\n if (selected[i]) {\n index = i;\n break;\n }\n }\n this.updateState({ values: { active: index } });\n }\n this.closeIfOpen();\n };\n\n public closeIfOpen() {\n if (this.state.open) {\n this.close();\n }\n }\n\n public close = () => {\n this.updateState({\n open: false,\n results: { results: undefined },\n search: ''\n });\n };\n\n public onValuesBlur = (event: Event) => {\n this.updateState({ values: { active: -1 } });\n };\n\n public onValuesKeyDown = (event: KeyboardEvent) => {\n const active = this.state.values.active;\n const { values } = this.props;\n\n switch (event.key) {\n case Key.ArrowLeft:\n case Key.ArrowUp:\n case Key.Up:\n case Key.Left: {\n if (active > 0) {\n this.updateState({ values: { active: active - 1 } });\n }\n event.preventDefault();\n break;\n }\n case Key.ArrowRight:\n case Key.Right:\n case Key.ArrowDown:\n case Key.Down: {\n if (active < values.length - 1) {\n this.updateState({ values: { active: active + 1 } });\n }\n event.preventDefault();\n break;\n }\n case Key.PageDown: {\n // TODO\n event.preventDefault();\n break;\n }\n case Key.PageUp: {\n // TODO\n event.preventDefault();\n break;\n }\n case Key.Home: {\n this.updateState({ values: { active: 0 } });\n event.preventDefault();\n break;\n }\n case Key.End: {\n this.updateState({ values: { active: values.length - 1 } });\n event.preventDefault();\n break;\n }\n case Key.Space:\n case Key.Spacebar: {\n this.toggleValue(active);\n event.preventDefault();\n break;\n }\n }\n };\n\n public onDropdownClick = (event: MouseEvent) => {\n // result clicks do not make it this far because they do not propagate\n // so this click is on something other than result\n event.preventDefault();\n event.stopPropagation();\n this.searchRef.current!.focus();\n };\n\n public onResultClicked = (result: any, event: MouseEvent) => {\n this.selectResult(result);\n this.searchRef.current!.focus();\n event.preventDefault();\n event.stopPropagation();\n };\n}\n","import { createRef, Fragment, h, RefObject } from 'preact';\r\nimport {\r\n AbstractSelect,\r\n DEFAULT_PROPS as ABSTRACT_DEFAULT_PROPS,\r\n Props as AbstractSelectProps,\r\n State as AbstractSelectState\r\n} from './abstract-select';\r\nimport * as announce from './announce';\r\nimport { Dropdown } from './dropdown';\r\nimport { Remove, Toggle } from './icons';\r\nimport { ResultList } from './result-list';\r\nimport { style } from './style';\r\nimport { cn, DeepPartial, extend, Key, scope } from './util';\r\n\r\nconst forceImportOfH = h;\r\n\r\nexport interface Props extends AbstractSelectProps {\r\n value: any;\r\n label: string;\r\n comboboxLabel: string;\r\n onChange: (value: any) => void;\r\n allowClear?: boolean;\r\n placeholder?: string;\r\n}\r\n\r\ninterface State extends AbstractSelectState {\r\n value: any;\r\n}\r\n\r\nconst DEFAULT_PROPS = extend({}, ABSTRACT_DEFAULT_PROPS, { allowClear: false });\r\n\r\nexport class SingleSelect extends AbstractSelect<Props, State> {\r\n private containerRef: RefObject<HTMLElement>;\r\n private dropdownRef: RefObject<HTMLElement>;\r\n private bodyRef: RefObject<HTMLElement>;\r\n private searchRef: RefObject<HTMLInputElement>;\r\n private valueRef: RefObject<HTMLElement>;\r\n\r\n public static defaultProps = DEFAULT_PROPS;\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.searchRef = createRef();\r\n this.bodyRef = createRef();\r\n this.containerRef = createRef();\r\n this.dropdownRef = createRef();\r\n this.valueRef = createRef();\r\n\r\n this.state = extend(this.state, { value: this.props.value });\r\n }\r\n\r\n public componentWillMount() {\r\n announce.initialize();\r\n }\r\n\r\n public render(props, state) {\r\n const { minimumCharacters, tabIndex, label, allowClear, placeholder } = props;\r\n const { value, open, loading, focused, search, results } = state;\r\n\r\n let classes = cn(style.control, style.single, { [style.open]: open }, { [style.focused]: focused });\r\n if (props.containerClass && props.containerClass.length > 0) {\r\n classes += ' ' + props.containerClass;\r\n }\r\n const resultsDomId = this.namespace + '-results';\r\n const optionDomId = this.namespace + '-val';\r\n const resultsNamespace = this.namespace + '-res-';\r\n const dictionary = this.dictionary;\r\n const showPlaceholder = !value && placeholder && placeholder.length > 0;\r\n const placeholderDomId = this.namespace + '-placeholder';\r\n return (\r\n <Fragment>\r\n <div\r\n class={classes}\r\n ref={this.containerRef}\r\n onFocusCapture={this.onFocusIn}\r\n onBlurCapture={this.onFocusOut}\r\n tabIndex={-1}\r\n onMouseDown={this.onContainerMouseDown}\r\n >\r\n <div class={cn(style.body)} ref={this.bodyRef}>\r\n <div\r\n aria-label={label}\r\n role='listbox'\r\n aria-activedescendant={optionDomId}\r\n aria-expanded='false'\r\n class={cn(style.value)}\r\n tabIndex={tabIndex}\r\n ref={this.valueRef}\r\n onKeyDown={this.onValueKeyDown}\r\n aria-describedby={showPlaceholder ? placeholderDomId : undefined}\r\n >\r\n {value && (\r\n <div\r\n class={style.item}\r\n role='option'\r\n aria-selected='true'\r\n aria-label={this.getItemLabel(value)}\r\n aria-setsize={-1}\r\n aria-posinset={-1}\r\n id={optionDomId}\r\n >\r\n <div class={style.content}>{this.renderValue(value)}</div>\r\n </div>\r\n )}\r\n {showPlaceholder && (\r\n <div class={cn(style.placeholder)} id={placeholderDomId}>\r\n {placeholder}\r\n </div>\r\n )}\r\n </div>\r\n {scope(() => {\r\n const disabled = !value;\r\n const clazz = cn(style.remove, { [style.offscreen]: !allowClear });\r\n return (\r\n <button\r\n class={clazz}\r\n onClick={this.onClearClick}\r\n onFocus={this.onClearFocus}\r\n onMouseDown={this.onClearMouseDown}\r\n disabled={disabled}\r\n aria-disabled={disabled}\r\n title={dictionary.clearButtonTitle()}\r\n >\r\n <span>\r\n <Remove width={20} height={20} />\r\n </span>\r\n </button>\r\n );\r\n })}\r\n <div className={style.toggle} aria-hidden={true}>\r\n <Toggle height={20} width={20} />\r\n </div>\r\n </div>\r\n </div>\r\n {open && (\r\n <Dropdown\r\n class={cn(style.dropdown, style.single)}\r\n onMouseDown={this.onDropdownMouseDown}\r\n controlRef={this.containerRef}\r\n dropdownRef={this.dropdownRef}\r\n onFocusOut={this.onFocusOut}\r\n >\r\n <div>\r\n <input\r\n type='text'\r\n ref={this.searchRef}\r\n value={search}\r\n class={cn(style.search)}\r\n role='combobox'\r\n aria-autocomplete='list'\r\n aria-haspopup='true'\r\n aria-owns={resultsDomId}\r\n aria-controls={resultsDomId}\r\n aria-expanded={open ? 'true' : 'false'}\r\n aria-activedescendant={\r\n results.active >= 0 ? resultsNamespace + results.active : undefined\r\n }\r\n aria-busy={loading}\r\n onInput={this.onSearchInput}\r\n onKeyDown={this.onSearchKeyDown}\r\n onFocus={this.onSearchFocus}\r\n />\r\n <ResultList\r\n namespace={resultsNamespace}\r\n minimumCharacters={minimumCharacters}\r\n dictionary={this.dictionary}\r\n itemLabel={this.getItemLabel}\r\n renderItem={this.renderResult}\r\n listboxDomId={resultsDomId}\r\n search={search}\r\n {...this.state.results}\r\n loading={loading}\r\n onResultClicked={this.onResultClicked}\r\n onMouseMove={this.onResultMouseMove}\r\n onLoadMore={this.onLoadMoreResults}\r\n />\r\n </div>\r\n </Dropdown>\r\n )}\r\n </Fragment>\r\n );\r\n }\r\n\r\n public componentDidMount() {\r\n const css = this.props.containerStyle;\r\n if (css && css.length > 0) {\r\n this.containerRef.current!.setAttribute('style', css);\r\n }\r\n }\r\n\r\n private onLoadMoreResults = () => {\r\n this.loadMore();\r\n };\r\n\r\n public onFocusIn = (event: FocusEvent) => {\r\n this.updateState({ focused: true });\r\n\r\n const { openOnFocus } = this.props;\r\n const { open } = this.state;\r\n if (!open && openOnFocus && this.searchRef.current !== document.activeElement) {\r\n this.open();\r\n }\r\n };\r\n\r\n public onFocusOut = (event: FocusEvent) => {\r\n const receiver = event.relatedTarget as Node;\r\n const container = this.containerRef.current;\r\n const dropdown = this.dropdownRef.current;\r\n const search = this.searchRef.current;\r\n\r\n const focused =\r\n container.contains(receiver) ||\r\n (dropdown && (dropdown === receiver || dropdown.contains(receiver))) ||\r\n receiver === search;\r\n\r\n if (this.state.focused !== focused) {\r\n this.updateState({\r\n focused\r\n });\r\n }\r\n if (!focused) {\r\n this.closeIfOpen();\r\n }\r\n };\r\n\r\n public closeIfOpen() {\r\n if (this.state.open) {\r\n this.close();\r\n }\r\n }\r\n\r\n public close = (state?: DeepPartial<State>) => {\r\n const control = this;\r\n control.valueRef.current!.focus();\r\n this.updateState([\r\n state,\r\n {\r\n open: false,\r\n results: { results: null },\r\n search: ''\r\n }\r\n ]);\r\n };\r\n\r\n private getValueAsArray() {\r\n return this.state.value ? [this.state.value] : [];\r\n }\r\n\r\n private onContainerMouseDown = (event: MouseEvent) => {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n if (this.state.open) {\r\n this.close();\r\n } else {\r\n this.open();\r\n }\r\n };\r\n\r\n private open(query: string = '') {\r\n this.search(query, this.getValueAsArray(), { open: true }, () => {\r\n this.searchRef.current.focus();\r\n });\r\n }\r\n\r\n private onSearchFocus = (event: FocusEvent) => {\r\n this.updateState({ focused: true });\r\n };\r\n\r\n private onSearchInput = (event: Event) => {\r\n const value = (event.target as HTMLInputElement).value;\r\n this.search(value, this.getValueAsArray());\r\n };\r\n\r\n private onClearFocus = (event: FocusEvent) => {\r\n this.closeIfOpen();\r\n };\r\n\r\n private onClearClick = (event: Event) => {\r\n this.selectResult(undefined);\r\n event.preventDefault();\r\n event.stopPropagation();\r\n };\r\n\r\n private onClearMouseDown = (event: Event) => {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n };\r\n\r\n public onSearchKeyDown = (event: KeyboardEvent) => {\r\n if (this.handleResultNavigationKeyDown(event)) {\r\n return;\r\n }\r\n\r\n const { open } = this.state;\r\n\r\n if (open && this.hasSearchResults) {\r\n switch (event.key) {\r\n case Key.Enter:\r\n this.selectActiveResult();\r\n event.preventDefault();\r\n event.stopPropagation();\r\n break;\r\n case Key.Escape:\r\n this.close();\r\n event.preventDefault();\r\n event.stopPropagation();\r\n break;\r\n case Key.Tab:\r\n // TODO select on tab?\r\n this.close();\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n }\r\n };\r\n\r\n public selectActiveResult = () => {\r\n const { active } = this.state.results;\r\n if (active >= 0) {\r\n this.selectResult(this.getSelectedSearchResult());\r\n }\r\n };\r\n\r\n public selectResult = (result: any) => {\r\n const { onChange } = this.props;\r\n\r\n this.close({ value: result });\r\n\r\n // TODO announce?\r\n // const label = this.getItemLabel(result);\r\n\r\n onChange(result);\r\n };\r\n\r\n private onValueKeyDown = (event: KeyboardEvent) => {\r\n switch (event.key) {\r\n case Key.Space:\r\n case Key.ArrowDown:\r\n case Key.Down:\r\n this.open();\r\n event.preventDefault();\r\n event.stopPropagation();\r\n return;\r\n }\r\n\r\n if (event.key.length === 1) {\r\n // focus on search which will put the printable character into the field\r\n this.open();\r\n }\r\n };\r\n\r\n private onDropdownMouseDown = (event: MouseEvent) => {\r\n this.searchRef.current.focus();\r\n event.preventDefault();\r\n event.stopPropagation();\r\n };\r\n\r\n public onResultMouseMove = (index: number, event: MouseEvent) => {\r\n this.selectSearchResult(index);\r\n };\r\n\r\n public onResultClicked = (result: any, event: MouseEvent) => {\r\n this.selectResult(result);\r\n event.preventDefault();\r\n event.stopPropagation();\r\n };\r\n}\r\n","export class Store {\r\n private static stores = new WeakMap();\r\n\r\n private store = new Map();\r\n\r\n public get(key: string): any {\r\n return this.store.get(key);\r\n }\r\n public set(key: string, value: any) {\r\n this.store.set(key, value);\r\n }\r\n\r\n public static getStore(key: any): Store {\r\n let store = Store.stores.get(key);\r\n if (!store) {\r\n store = new Store();\r\n Store.stores.set(key, store);\r\n }\r\n return store;\r\n }\r\n\r\n public static hasStore(key: any) {\r\n return Store.stores.has(key);\r\n }\r\n\r\n public static removeStore(key: any) {\r\n Store.stores.delete(key);\r\n }\r\n}\r\n","/** jsx:pragma h */\nimport { Component, h, render } from 'preact';\nimport { ItemRenderer, QueryFunction } from '../../control/src/abstract-select';\nimport { Dictionary } from '../../control/src/dictionary';\nimport { MultiSelect } from '../../control/src/multi-select';\nimport '../../control/src/select25.scss';\nimport { SingleSelect } from '../../control/src/single-select';\nimport { extend } from '../../control/src/util';\nimport { Ajax, createQueryFromAjax } from './ajax';\nimport { DataFunction, createQueryFromData } from './data';\nimport { Store } from './store';\n\nconst forceImportOfH = h;\n\nenum StoreKeys {\n targetElement = 'te'\n}\n\nexport interface Options {\n multiple: boolean;\n containerStyle?: string;\n containerClass?: string;\n hiddenValue?: (values: any, options: Options) => string;\n tabIndex?: number;\n itemId: ((item: any) => string) | string;\n itemLabel: ((item: any) => string) | string;\n valueContent?: ItemRenderer;\n resultContent?: ItemRenderer;\n query?: QueryFunction;\n data?: DataFunction;\n ajax?: Ajax;\n quiet?: number;\n minimumCharacters?: number;\n openOnFocus?: boolean;\n dictionary?: string | Dictionary;\n\n value: any;\n values: any[];\n allowClear?: boolean;\n placeholder?: string;\n\n /** Single Select Label */\n label?: string;\n\n /** Multi Select Selected Values Listbox Label */\n valuesLabel?: string;\n /** Multi Select Add Value Combobox Label */\n comboboxLabel?: string;\n\n allowDuplicates: boolean;\n}\n\nconst DEFAULT_OPTIONS = {\n allowClear: false,\n dictionary: 'en_us',\n hiddenValue: (values: any, options: Options) => {\n const id = (item: any) => {\n if (typeof options.itemId === 'function') {\n return options.itemId(item);\n } else {\n return '' + item[options.itemId];\n }\n };\n\n if (values) {\n if (Array.isArray(values)) {\n if (values.length > 0) {\n return values.map(id).join(',');\n } else {\n return '';\n }\n } else {\n return id(values);\n }\n } else {\n return '';\n }\n },\n itemId: 'id',\n itemLabel: 'text',\n minimumCharacters: 0,\n multiple: false,\n openOnFocus: false\n};\n\nfunction triggerOnChange(element: HTMLElement, data: any) {\n const event = document.createEvent('HTMLEvents');\n event.initEvent('change', false, true);\n event[data] = data;\n element.dispatchEvent(event);\n}\n\nclass MultiSelectWrapper extends Component<\n {\n element: HTMLInputElement;\n options: Options;\n },\n { values: any }\n> {\n constructor(props) {\n super(props);\n this.state = { values: props.options.values };\n }\n\n public componentDidUpdate() {\n this.setHiddenValue(this.state.values);\n }\n\n public componentDidMount() {\n this.setHiddenValue(this.state.values);\n }\n\n public render(props, state, context) {\n const opts = this.props.options;\n return (\n <MultiSelect\n containerClass={opts.containerClass}\n containerStyle={opts.containerStyle}\n valuesLabel={opts.valuesLabel}\n comboboxLabel={opts.comboboxLabel}\n itemId={opts.itemId}\n itemLabel={opts.itemLabel}\n valueContent={opts.valueContent}\n resultContent={opts.resultContent}\n query={opts.query}\n quiet={opts.quiet}\n minimumCharacters={opts.minimumCharacters}\n openOnFocus={opts.openOnFocus}\n dictionary={opts.dictionary}\n tabIndex={opts.tabIndex}\n allowDuplicates={opts.allowDuplicates}\n values={this.state.values}\n onChange={this.onChange}\n />\n );\n }\n\n public onChange = (values: any[]) => {\n this.setState({ values });\n this.setHiddenValue(values);\n triggerOnChange(this.props.element, values);\n };\n\n private setHiddenValue(values: any) {\n const { element, options } = this.props;\n element.value = options.hiddenValue(values, options);\n }\n}\n\nclass SingleSelectWrapper extends Component<\n {\n options: Options;\n element: HTMLInputElement;\n },\n { value: any }\n> {\n constructor(props) {\n super(props);\n this.state = { value: props.options.value };\n }\n\n public componentDidMount() {\n this.setHiddenValue(this.state.value);\n }\n\n public componentDidUpdate() {\n this.setHiddenValue(this.state.value);\n }\n\n public render(props, state, context) {\n const opts = this.props.options;\n return (\n <SingleSelect\n label={opts.label}\n comboboxLabel={opts.comboboxLabel}\n containerClass={opts.containerClass}\n containerStyle={opts.containerStyle}\n allowClear={opts.allowClear}\n placeholder={opts.placeholder}\n itemId={opts.itemId}\n itemLabel={opts.itemLabel}\n valueContent={opts.valueContent}\n resultContent={opts.resultContent}\n query={opts.query}\n quiet={opts.quiet}\n minimumCharacters={opts.minimumCharacters}\n openOnFocus={opts.openOnFocus} // TODO\n dictionary={opts.dictionary}\n tabIndex={opts.tabIndex}\n allowDuplicates={opts.allowDuplicates}\n value={this.state.value}\n onChange={this.onChange}\n />\n );\n }\n\n public onChange = (value: any) => {\n this.setState({ value });\n this.setHiddenValue(value);\n triggerOnChange(this.props.element, value);\n };\n\n private setHiddenValue(value: any) {\n const { element, options } = this.props;\n element.value = options.hiddenValue(value, options);\n }\n}\n\nfunction create<T>(element: HTMLInputElement, options: Options) {\n // TODO make sure we are attached to hidden input\n\n const store = Store.getStore(element);\n\n options = extend({}, DEFAULT_OPTIONS, options);\n if (!options.query) {\n if (options.ajax) {\n options.query = createQueryFromAjax(options.ajax);\n } else if (options.data) {\n options.query = createQueryFromData(options.data);\n }\n }\n\n if (!options.tabIndex && element.tabIndex) {\n options.tabIndex = element.tabIndex;\n }\n\n if (element.getAttribute('s25-style')) {\n let style = options.containerStyle || '';\n if (style.length > 0) {\n style += ';';\n }\n style += element.getAttribute('s25-style');\n options.containerStyle = style;\n }\n\n if (element.getAttribute('s25-class')) {\n let clazz = options.containerClass || '';\n if (clazz.length > 0) {\n clazz += ' ';\n }\n clazz += element.getAttribute('s25-class');\n options.containerClass = clazz;\n }\n\n // create placeholder element into which the control will be rendered\n const parentElement = element.parentElement;\n const targetElement = document.createElement('div');\n parentElement.insertBefore(targetElement, element);\n\n store.set(StoreKeys.targetElement, targetElement);\n\n // render the replacement\n if (options.multiple) {\n render(<MultiSelectWrapper element={element} options={options} />, parentElement, targetElement);\n } else {\n render(<SingleSelectWrapper element={element} options={options} />, parentElement, targetElement);\n }\n}\n\nfunction destroy(element: HTMLElement) {\n if (!Store.hasStore(element)) {\n return;\n }\n const store = Store.getStore(element);\n const targetElement = store.get(StoreKeys.targetElement);\n const parentElement = element.parentElement;\n render(null, parentElement, targetElement);\n parentElement.removeChild(targetElement);\n Store.removeStore(element);\n}\n\nconst select25 = {\n create,\n destroy\n};\n\nexport { select25 };\n\ndeclare global {\n interface Window {\n select25: typeof select25;\n }\n}\n\nwindow.select25 = select25;\n","import { QueryFunction, QueryResult } from '../../control/src/abstract-select';\nimport { extend } from '../../control/src/util';\n\nexport interface Ajax {\n url: string;\n params: (term: string, page: number) => object;\n process: (data: string) => QueryResult;\n}\n\nexport function createQueryFromAjax(ajax: Ajax): QueryFunction {\n ajax = extend({}, ajax, {\n params(term: string, page: number) {\n return { term, page };\n },\n process(data: string) {\n const json = JSON.parse(data);\n return {\n more: json.more,\n values: json.values\n };\n }\n });\n\n return (term: string, page: number, token: string) => {\n return new Promise((resolve, reject) => {\n let url = ajax.url;\n const params = ajax.params(term, page);\n if (params) {\n let separator = url.indexOf('?') >= 0 ? '&' : '?';\n Object.entries(params).forEach(([key, value]) => {\n url += separator;\n separator = '&';\n url += encodeURIComponent(key) + '=' + encodeURIComponent(value);\n });\n }\n\n const request = new XMLHttpRequest();\n request.open('GET', url, true);\n request.onload = () => {\n if (request.status >= 200 && request.status < 400) {\n const data = ajax.process(request.responseText);\n resolve({ values: data.values, more: data.more, token });\n } else {\n reject();\n }\n };\n request.onerror = reject;\n request.send();\n });\n };\n}\n","import { QueryFunction, QueryResult } from '../../control/src/abstract-select';\n\nexport interface DataParam {\n term: string;\n page: number;\n selected: any[];\n}\n\nexport interface DataResult {\n values: any[];\n more: boolean;\n}\n\nexport type DataFunction = (param: DataParam) => QueryResult;\n\nexport function createQueryFromData(callback: DataFunction): QueryFunction {\n return (term: string, page: number, token: string) => {\n return new Promise((resolve, reject) => {\n const data = callback({ term, page, selected: [] });\n resolve({ values: data.values, more: data.more, token });\n });\n };\n}\n"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","v","op","TypeError","pop","push","l","u","o","c","parentNode","removeChild","a","r","children","defaultProps","key","ref","h","type","props","__k","__p","__b","__e","__c","vnode","context","__d","debounceRendering","k","sort","__v","forceUpdate","m","w","x","N","appendChild","nextSibling","insertBefore","O","A","isArray","C","style","setProperty","replace","test","toLowerCase","slice","addEventListener","removeEventListener","options","selected","removeAttributeNS","setAttributeNS","removeAttribute","setAttribute","event","contextType","__E","render","T","sub","state","__n","__h","__s","getDerivedStateFromProps","componentWillMount","componentDidMount","componentWillReceiveProps","shouldComponentUpdate","componentWillUpdate","__r","__P","getChildContext","getSnapshotBeforeUpdate","base","componentDidUpdate","nodeType","localName","document","createTextNode","createElementNS","createElement","data","childNodes","dangerouslySetInnerHTML","__html","innerHTML","multiple","keys","j","diffed","z","$","current","unmount","componentWillUnmount","getDerivedStateFromError","setState","componentDidCatch","D","ownerSVGElement","initialize","getElementById","live","assertive","polite","politely","message","container","node","collection","firstChild","add","indexOf","bind","setTimeout","dictionaries","Map","getDictionary","dict","fallback","get","instance","extend","_i","params","set","noSearchResults","searchResultsLoading","removeButtonTitle","clearButtonTitle","valueAdded","itemLabel","minimumCharactersMessage","len","min","delta","multiSelectInstructions","Key","merge","target","sources","source","shift","undefined","isMergebleObject","forEach","item","isObject","cn","values","classes","values_1","_a","join","counter","uuid","scope","delegate","MarkupRenderer","DEFAULT_PROPS","allowDuplicates","itemId","minimumCharacters","quiet","tabIndex","tslib_1.__extends","Component","AbstractSelect","dictionary","update","callback","loading","query","page","queryFunc","control","token","nextPage","updateState","results","concat","showLoadMoreResults","more","announce.politely","ArrowUp","Up","selectPreviousSearchResult","preventDefault","ArrowDown","Down","selectNextSearchResult","active","index","_super","_this","id","renderItem","rendererName","renderer","markup","getItemLabel","selectedValues","start","minimumCharactersReached","showMinimumCharactersError","showNoSearchResultsFound","search","execute","ids_1","Set","getItemId","filter","has","searchTimeout","window","clearTimeout","namespace","focused","open","ContextProvider","Portal","Dropdown","class","className","onClick","onMouseDown","onFocusOut","dropdownRef","scrollParents","el","elementPosition","getComputedStyle","position","parents","parent","parentElement","css","overflow","overflowX","overflowY","ownerDocument","defaultView","getScrollParents","controlRef","throttledPosition","createPortal","Fragment","rect","getBoundingClientRect","top","height","pageYOffset","left","pageXOffset","width","delay","timeout","throttle","Toggle","viewBox","focusable","displayName","Remove","ResultList","onScroll","searchResults","maxHeight","searchResultsMessage","searchResultsMinimumError","role","listboxDomId","getResultDomId","map","onResultClicked","onMouseMove","content","loadMore","prevProps","drop","scrollTop","offsetTop","offsetHeight","clientHeight","bottom","lastMouseClientX","clientX","lastMouseClientY","clientY","element","calculateVerticalVisibility","onLoadMore","ABSTRACT_DEFAULT_PROPS","MultiSelect","announce.initialize","valuesLabel","_c","multi","containerClass","instructionsDomId","resultsDomId","resultsNamespace","containerRef","onFocusCapture","onFocusIn","onBlurCapture","focusSearchAndStopPropagation","bodyRef","onBodyClick","offscreen","display","activeDescendant","valuesRef","multiValues","onFocus","onValuesFocus","onBlur","onValuesBlur","onKeyDown","onValuesKeyDown","isSelected","isActive","renderValue","stopPropagation","onValueClick","disabled","find","remove","onRemoveSelectedClick","onRemoveSelectedFocus","title","htmlFor","comboboxLabel","searchRef","onInput","onSearchInput","onSearchKeyDown","onSearchFocus","toggle","onToggleClick","dropdown","onDropdownClick","renderResult","onResultMouseMove","onLoadMoreResults","containerStyle","close","focus","receiver","relatedTarget","contains","closeIfOpen","openOnFocus","selectSearchResult","selectResult","getSelectedSearchResult","onChange","handleResultNavigationKeyDown","hasSearchResults","Enter","selectActiveResult","Escape","toggleValue","ArrowLeft","Left","ArrowRight","Right","PageDown","PageUp","Home","End","Space","Spacebar","allowClear","SingleSelect","placeholder","single","optionDomId","showPlaceholder","placeholderDomId","onContainerMouseDown","valueRef","onValueKeyDown","onClearClick","onClearFocus","onClearMouseDown","onDropdownMouseDown","getValueAsArray","activeElement","Tab","StoreKeys","Store","store","stores","delete","WeakMap","DEFAULT_OPTIONS","hiddenValue","triggerOnChange","createEvent","initEvent","dispatchEvent","MultiSelectWrapper","setHiddenValue","opts","valueContent","resultContent","SingleSelectWrapper","select25","getStore","ajax","term","process","json","JSON","parse","url","separator_1","entries","encodeURIComponent","request","XMLHttpRequest","onload","status","responseText","onerror","send","createQueryFromAjax","createQueryFromData","getAttribute","clazz","targetElement","destroy","hasStore","removeStore"],"mappings":"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"}