@spectric/ui 0.0.15 → 0.0.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/classes/DisposibleElement.d.ts +1 -0
  2. package/dist/classes/index.d.ts +2 -0
  3. package/dist/components/color_picker/ColorPicker.d.ts +59 -0
  4. package/dist/components/color_picker/index.d.ts +0 -0
  5. package/dist/components/index.d.ts +2 -0
  6. package/dist/components/input.d.ts +3 -1
  7. package/dist/components/table/body.d.ts +2 -2
  8. package/dist/components/table/cell.d.ts +5 -2
  9. package/dist/components/table/header.d.ts +9 -3
  10. package/dist/components/table/table.d.ts +18 -6
  11. package/dist/components/table/virtualBody.d.ts +2 -2
  12. package/dist/components/tooltip/popover.d.ts +85 -0
  13. package/dist/components/tooltip/tooltip.d.ts +14 -15
  14. package/dist/custom-elements.json +83 -8
  15. package/dist/index.d.ts +58 -0
  16. package/dist/index.es.js +2640 -2243
  17. package/dist/index.es.js.map +1 -1
  18. package/dist/index.umd.js +183 -132
  19. package/dist/index.umd.js.map +1 -1
  20. package/dist/style.css +1 -1
  21. package/dist/utils/index.d.ts +3 -0
  22. package/package.json +6 -2
  23. package/src/classes/DisposibleElement.ts +3 -0
  24. package/src/classes/index.ts +2 -0
  25. package/src/components/color_picker/ColorPicker.css +4 -0
  26. package/src/components/color_picker/ColorPicker.ts +244 -0
  27. package/src/components/color_picker/index.ts +1 -0
  28. package/src/components/index.ts +3 -1
  29. package/src/components/input.css +38 -1
  30. package/src/components/input.ts +34 -7
  31. package/src/components/table/__tests__/table.spec.ts +91 -0
  32. package/src/components/table/body.ts +2 -2
  33. package/src/components/table/cell.ts +34 -8
  34. package/src/components/table/header.css +54 -0
  35. package/src/components/table/header.ts +144 -49
  36. package/src/components/table/table.css +20 -33
  37. package/src/components/table/table.ts +50 -16
  38. package/src/components/table/virtualBody.ts +2 -2
  39. package/src/components/tooltip/popover.ts +221 -0
  40. package/src/components/tooltip/tooltip.css +21 -16
  41. package/src/components/tooltip/tooltip.ts +17 -124
  42. package/src/index.ts +8 -1
  43. package/src/stories/fixtures/ExampleContent.ts +3 -3
  44. package/src/stories/table.stories.ts +5 -5
  45. package/src/utils/index.ts +3 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.umd.js","sources":["../node_modules/@lit/reactive-element/css-tag.js","../node_modules/@lit/reactive-element/reactive-element.js","../node_modules/lit-html/lit-html.js","../node_modules/lit-element/lit-element.js","../node_modules/lit-html/directive.js","../node_modules/lit-html/directives/style-map.js","../src/components/button.css.ts","../node_modules/@lit/reactive-element/decorators/custom-element.js","../node_modules/@lit/reactive-element/decorators/property.js","../node_modules/@lit/reactive-element/decorators/state.js","../node_modules/@lit/reactive-element/decorators/base.js","../node_modules/@lit/reactive-element/decorators/query.js","../node_modules/@lit/reactive-element/decorators/query-async.js","../src/classes/DisposibleElement.ts","../src/components/Button.ts","../node_modules/lit-html/directive-helpers.js","../node_modules/lit-html/async-directive.js","../node_modules/lit-html/directives/ref.js","../src/classes/BitArray.ts","../src/utils/debounce.ts","../src/components/Bitdisplay.ts","../src/components/header.css.ts","../src/components/Header.ts","../src/components/Banner.ts","../src/components/page.css.ts","../node_modules/lit-html/directives/if-defined.js","../src/utils/spread.ts","../src/components/configurations/classifications.ts","../src/components/Page.ts","../src/components/input.ts","../src/components/query_bar/querylanguage/kuery/kuery_syntax_error.ts","../src/components/query_bar/querylanguage/kuery/node_types/literal.ts","../src/components/query_bar/querylanguage/kuery/ast/_generated_/kuery.js","../src/components/query_bar/querylanguage/kuery/ast/ast.ts","../src/components/query_bar/querylanguage/kuery/node_types/wildcard.ts","../src/components/query_bar/querylanguage/kuery/functions/utils/get_fields.ts","../src/components/query_bar/querylanguage/utils.ts","../src/components/query_bar/querylanguage/kuery/functions/utils/get_full_field_name_node.ts","../src/components/query_bar/querylanguage/kuery/functions/is.ts","../src/components/query_bar/querylanguage/kuery/functions/and.ts","../src/components/query_bar/querylanguage/kuery/functions/or.ts","../src/components/query_bar/querylanguage/kuery/functions/not.ts","../src/components/query_bar/querylanguage/kuery/functions/range.ts","../src/components/query_bar/querylanguage/kuery/functions/exists.ts","../src/components/query_bar/querylanguage/kuery/functions/nested.ts","../src/components/query_bar/querylanguage/kuery/functions/index.ts","../src/components/query_bar/querylanguage/kuery/node_types/function.ts","../src/components/query_bar/querylanguage/kuery/node_types/named_arg.ts","../src/components/query_bar/querylanguage/kuery/node_types/index.ts","../src/components/query_bar/querylanguage/outputTypes/toCQL.ts","../src/components/query_bar/querylanguage/outputTypes/toMongo.ts","../src/components/dialog/dialog.css.ts","../src/components/dialog/dialog.ts","../src/components/query_bar/QueryBar.ts","../src/components/panel.css.ts","../src/components/Panel.ts","../src/components/ThemeProvider.ts","../src/components/splitview/splitview.css.ts","../src/components/splitview/splitview.ts","../src/components/pagination/pagination.ts","../src/components/table/header.ts","../node_modules/lit-html/directives/cache.js","../src/components/table/cell.ts","../node_modules/lit-html/directives/repeat.js","../src/components/table/body.ts","../src/components/table/virtualBody.ts","../src/components/table/sorting.ts","../src/components/table/table.ts","../src/components/tooltip/tooltip.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,s=Symbol(),o=new WeakMap;class n{constructor(t,e,o){if(this._$cssResult$=!0,o!==s)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=o.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&o.set(s,t))}return t}toString(){return this.cssText}}const r=t=>new n(\"string\"==typeof t?t:t+\"\",void 0,s),i=(t,...e)=>{const o=1===t.length?t[0]:e.reduce(((e,s,o)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(s)+t[o+1]),t[0]);return new n(o,t,s)},S=(s,o)=>{if(e)s.adoptedStyleSheets=o.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet));else for(const e of o){const o=document.createElement(\"style\"),n=t.litNonce;void 0!==n&&o.setAttribute(\"nonce\",n),o.textContent=e.cssText,s.appendChild(o)}},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t;export{n as CSSResult,S as adoptStyles,i as css,c as getCompatibleStyle,e as supportsAdoptingStyleSheets,r as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n","import{getCompatibleStyle as t,adoptStyles as s}from\"./css-tag.js\";export{CSSResult,adoptStyles,css,getCompatibleStyle,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{is:i,defineProperty:e,getOwnPropertyDescriptor:r,getOwnPropertyNames:h,getOwnPropertySymbols:o,getPrototypeOf:n}=Object,a=globalThis,c=a.trustedTypes,l=c?c.emptyScript:\"\",p=a.reactiveElementPolyfillSupport,d=(t,s)=>t,u={toAttribute(t,s){switch(s){case Boolean:t=t?l:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,s){let i=t;switch(s){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},f=(t,s)=>!i(t,s),y={attribute:!0,type:String,converter:u,reflect:!1,hasChanged:f};Symbol.metadata??=Symbol(\"metadata\"),a.litPropertyMetadata??=new WeakMap;class b extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,s=y){if(s.state&&(s.attribute=!1),this._$Ei(),this.elementProperties.set(t,s),!s.noAccessor){const i=Symbol(),r=this.getPropertyDescriptor(t,i,s);void 0!==r&&e(this.prototype,t,r)}}static getPropertyDescriptor(t,s,i){const{get:e,set:h}=r(this.prototype,t)??{get(){return this[s]},set(t){this[s]=t}};return{get(){return e?.call(this)},set(s){const r=e?.call(this);h.call(this,s),this.requestUpdate(t,r,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??y}static _$Ei(){if(this.hasOwnProperty(d(\"elementProperties\")))return;const t=n(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(d(\"finalized\")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(d(\"properties\"))){const t=this.properties,s=[...h(t),...o(t)];for(const i of s)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const s=litPropertyMetadata.get(t);if(void 0!==s)for(const[t,i]of s)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,s]of this.elementProperties){const i=this._$Eu(t,s);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(s){const i=[];if(Array.isArray(s)){const e=new Set(s.flat(1/0).reverse());for(const s of e)i.unshift(t(s))}else void 0!==s&&i.push(t(s));return i}static _$Eu(t,s){const i=s.attribute;return!1===i?void 0:\"string\"==typeof i?i:\"string\"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((t=>t(this)))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,s=this.constructor.elementProperties;for(const i of s.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return s(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((t=>t.hostConnected?.()))}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach((t=>t.hostDisconnected?.()))}attributeChangedCallback(t,s,i){this._$AK(t,i)}_$EC(t,s){const i=this.constructor.elementProperties.get(t),e=this.constructor._$Eu(t,i);if(void 0!==e&&!0===i.reflect){const r=(void 0!==i.converter?.toAttribute?i.converter:u).toAttribute(s,i.type);this._$Em=t,null==r?this.removeAttribute(e):this.setAttribute(e,r),this._$Em=null}}_$AK(t,s){const i=this.constructor,e=i._$Eh.get(t);if(void 0!==e&&this._$Em!==e){const t=i.getPropertyOptions(e),r=\"function\"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:u;this._$Em=e,this[e]=r.fromAttribute(s,t.type),this._$Em=null}}requestUpdate(t,s,i){if(void 0!==t){if(i??=this.constructor.getPropertyOptions(t),!(i.hasChanged??f)(this[t],s))return;this.P(t,s,i)}!1===this.isUpdatePending&&(this._$ES=this._$ET())}P(t,s,i){this._$AL.has(t)||this._$AL.set(t,s),!0===i.reflect&&this._$Em!==t&&(this._$Ej??=new Set).add(t)}async _$ET(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,s]of this._$Ep)this[t]=s;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[s,i]of t)!0!==i.wrapped||this._$AL.has(s)||void 0===this[s]||this.P(s,this[s],i)}let t=!1;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),this._$EO?.forEach((t=>t.hostUpdate?.())),this.update(s)):this._$EU()}catch(s){throw t=!1,this._$EU(),s}t&&this._$AE(s)}willUpdate(t){}_$AE(t){this._$EO?.forEach((t=>t.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Ej&&=this._$Ej.forEach((t=>this._$EC(t,this[t]))),this._$EU()}updated(t){}firstUpdated(t){}}b.elementStyles=[],b.shadowRootOptions={mode:\"open\"},b[d(\"elementProperties\")]=new Map,b[d(\"finalized\")]=new Map,p?.({ReactiveElement:b}),(a.reactiveElementVersions??=[]).push(\"2.0.4\");export{b as ReactiveElement,u as defaultConverter,f as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,i=t.trustedTypes,s=i?i.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,e=\"$lit$\",h=`lit$${Math.random().toFixed(9).slice(2)}$`,o=\"?\"+h,n=`<${o}>`,r=document,l=()=>r.createComment(\"\"),c=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,a=Array.isArray,u=t=>a(t)||\"function\"==typeof t?.[Symbol.iterator],d=\"[ \\t\\n\\f\\r]\",f=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,v=/-->/g,_=/>/g,m=RegExp(`>|${d}(?:([^\\\\s\"'>=/]+)(${d}*=${d}*(?:[^ \\t\\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`,\"g\"),p=/'/g,g=/\"/g,$=/^(?:script|style|textarea|title)$/i,y=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),x=y(1),b=y(2),w=y(3),T=Symbol.for(\"lit-noChange\"),E=Symbol.for(\"lit-nothing\"),A=new WeakMap,C=r.createTreeWalker(r,129);function P(t,i){if(!a(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return void 0!==s?s.createHTML(i):i}const V=(t,i)=>{const s=t.length-1,o=[];let r,l=2===i?\"<svg>\":3===i?\"<math>\":\"\",c=f;for(let i=0;i<s;i++){const s=t[i];let a,u,d=-1,y=0;for(;y<s.length&&(c.lastIndex=y,u=c.exec(s),null!==u);)y=c.lastIndex,c===f?\"!--\"===u[1]?c=v:void 0!==u[1]?c=_:void 0!==u[2]?($.test(u[2])&&(r=RegExp(\"</\"+u[2],\"g\")),c=m):void 0!==u[3]&&(c=m):c===m?\">\"===u[0]?(c=r??f,d=-1):void 0===u[1]?d=-2:(d=c.lastIndex-u[2].length,a=u[1],c=void 0===u[3]?m:'\"'===u[3]?g:p):c===g||c===p?c=m:c===v||c===_?c=f:(c=m,r=void 0);const x=c===m&&t[i+1].startsWith(\"/>\")?\" \":\"\";l+=c===f?s+n:d>=0?(o.push(a),s.slice(0,d)+e+s.slice(d)+h+x):s+h+(-2===d?i:x)}return[P(t,l+(t[s]||\"<?>\")+(2===i?\"</svg>\":3===i?\"</math>\":\"\")),o]};class N{constructor({strings:t,_$litType$:s},n){let r;this.parts=[];let c=0,a=0;const u=t.length-1,d=this.parts,[f,v]=V(t,s);if(this.el=N.createElement(f,n),C.currentNode=this.el.content,2===s||3===s){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(r=C.nextNode())&&d.length<u;){if(1===r.nodeType){if(r.hasAttributes())for(const t of r.getAttributeNames())if(t.endsWith(e)){const i=v[a++],s=r.getAttribute(t).split(h),e=/([.?@])?(.*)/.exec(i);d.push({type:1,index:c,name:e[2],strings:s,ctor:\".\"===e[1]?H:\"?\"===e[1]?I:\"@\"===e[1]?L:k}),r.removeAttribute(t)}else t.startsWith(h)&&(d.push({type:6,index:c}),r.removeAttribute(t));if($.test(r.tagName)){const t=r.textContent.split(h),s=t.length-1;if(s>0){r.textContent=i?i.emptyScript:\"\";for(let i=0;i<s;i++)r.append(t[i],l()),C.nextNode(),d.push({type:2,index:++c});r.append(t[s],l())}}}else if(8===r.nodeType)if(r.data===o)d.push({type:2,index:c});else{let t=-1;for(;-1!==(t=r.data.indexOf(h,t+1));)d.push({type:7,index:c}),t+=h.length-1}c++}}static createElement(t,i){const s=r.createElement(\"template\");return s.innerHTML=t,s}}function S(t,i,s=t,e){if(i===T)return i;let h=void 0!==e?s._$Co?.[e]:s._$Cl;const o=c(i)?void 0:i._$litDirective$;return h?.constructor!==o&&(h?._$AO?.(!1),void 0===o?h=void 0:(h=new o(t),h._$AT(t,s,e)),void 0!==e?(s._$Co??=[])[e]=h:s._$Cl=h),void 0!==h&&(i=S(t,h._$AS(t,i.values),h,e)),i}class M{constructor(t,i){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){const{el:{content:i},parts:s}=this._$AD,e=(t?.creationScope??r).importNode(i,!0);C.currentNode=e;let h=C.nextNode(),o=0,n=0,l=s[0];for(;void 0!==l;){if(o===l.index){let i;2===l.type?i=new R(h,h.nextSibling,this,t):1===l.type?i=new l.ctor(h,l.name,l.strings,this,t):6===l.type&&(i=new z(h,this,t)),this._$AV.push(i),l=s[++n]}o!==l?.index&&(h=C.nextNode(),o++)}return C.currentNode=r,e}p(t){let i=0;for(const s of this._$AV)void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,i),i+=s.strings.length-2):s._$AI(t[i])),i++}}class R{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(t,i,s,e){this.type=2,this._$AH=E,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=s,this.options=e,this._$Cv=e?.isConnected??!0}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===t?.nodeType&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=S(this,t,i),c(t)?t===E||null==t||\"\"===t?(this._$AH!==E&&this._$AR(),this._$AH=E):t!==this._$AH&&t!==T&&this._(t):void 0!==t._$litType$?this.$(t):void 0!==t.nodeType?this.T(t):u(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==E&&c(this._$AH)?this._$AA.nextSibling.data=t:this.T(r.createTextNode(t)),this._$AH=t}$(t){const{values:i,_$litType$:s}=t,e=\"number\"==typeof s?this._$AC(t):(void 0===s.el&&(s.el=N.createElement(P(s.h,s.h[0]),this.options)),s);if(this._$AH?._$AD===e)this._$AH.p(i);else{const t=new M(e,this),s=t.u(this.options);t.p(i),this.T(s),this._$AH=t}}_$AC(t){let i=A.get(t.strings);return void 0===i&&A.set(t.strings,i=new N(t)),i}k(t){a(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let s,e=0;for(const h of t)e===i.length?i.push(s=new R(this.O(l()),this.O(l()),this,this.options)):s=i[e],s._$AI(h),e++;e<i.length&&(this._$AR(s&&s._$AB.nextSibling,e),i.length=e)}_$AR(t=this._$AA.nextSibling,i){for(this._$AP?.(!1,!0,i);t&&t!==this._$AB;){const i=t.nextSibling;t.remove(),t=i}}setConnected(t){void 0===this._$AM&&(this._$Cv=t,this._$AP?.(t))}}class k{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,i,s,e,h){this.type=1,this._$AH=E,this._$AN=void 0,this.element=t,this.name=i,this._$AM=e,this.options=h,s.length>2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=E}_$AI(t,i=this,s,e){const h=this.strings;let o=!1;if(void 0===h)t=S(this,t,i,0),o=!c(t)||t!==this._$AH&&t!==T,o&&(this._$AH=t);else{const e=t;let n,r;for(t=h[0],n=0;n<h.length-1;n++)r=S(this,e[s+n],i,n),r===T&&(r=this._$AH[n]),o||=!c(r)||r!==this._$AH[n],r===E?t=E:t!==E&&(t+=(r??\"\")+h[n+1]),this._$AH[n]=r}o&&!e&&this.j(t)}j(t){t===E?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??\"\")}}class H extends k{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===E?void 0:t}}class I extends k{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==E)}}class L extends k{constructor(t,i,s,e,h){super(t,i,s,e,h),this.type=5}_$AI(t,i=this){if((t=S(this,t,i,0)??E)===T)return;const s=this._$AH,e=t===E&&s!==E||t.capture!==s.capture||t.once!==s.once||t.passive!==s.passive,h=t!==E&&(s===E||e);e&&this.element.removeEventListener(this.name,this,s),h&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){\"function\"==typeof this._$AH?this._$AH.call(this.options?.host??this.element,t):this._$AH.handleEvent(t)}}class z{constructor(t,i,s){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(t){S(this,t)}}const Z={M:e,P:h,A:o,C:1,L:V,R:M,D:u,V:S,I:R,H:k,N:I,U:L,B:H,F:z},j=t.litHtmlPolyfillSupport;j?.(N,R),(t.litHtmlVersions??=[]).push(\"3.2.1\");const B=(t,i,s)=>{const e=s?.renderBefore??i;let h=e._$litPart$;if(void 0===h){const t=s?.renderBefore??null;e._$litPart$=h=new R(i.insertBefore(l(),t),t,void 0,s??{})}return h._$AI(t),h};export{Z as _$LH,x as html,w as mathml,T as noChange,E as nothing,B as render,b as svg};\n//# sourceMappingURL=lit-html.js.map\n","import{ReactiveElement as t}from\"@lit/reactive-element\";export*from\"@lit/reactive-element\";import{render as e,noChange as s}from\"lit-html\";export*from\"lit-html\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class r extends t{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){const t=super.createRenderRoot();return this.renderOptions.renderBefore??=t.firstChild,t}update(t){const s=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=e(s,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return s}}r._$litElement$=!0,r[\"finalized\"]=!0,globalThis.litElementHydrateSupport?.({LitElement:r});const i=globalThis.litElementPolyfillSupport;i?.({LitElement:r});const o={_$AK:(t,e,s)=>{t._$AK(e,s)},_$AL:t=>t._$AL};(globalThis.litElementVersions??=[]).push(\"4.1.1\");export{r as LitElement,o as _$LE};\n//# sourceMappingURL=lit-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},e=t=>(...e)=>({_$litDirective$:t,values:e});class i{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,i){this._$Ct=t,this._$AM=e,this._$Ci=i}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}export{i as Directive,t as PartType,e as directive};\n//# sourceMappingURL=directive.js.map\n","import{noChange as t}from\"../lit-html.js\";import{directive as e,Directive as r,PartType as s}from\"../directive.js\";\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const n=\"important\",i=\" !\"+n,o=e(class extends r{constructor(t){if(super(t),t.type!==s.ATTRIBUTE||\"style\"!==t.name||t.strings?.length>2)throw Error(\"The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.\")}render(t){return Object.keys(t).reduce(((e,r)=>{const s=t[r];return null==s?e:e+`${r=r.includes(\"-\")?r:r.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,\"-$&\").toLowerCase()}:${s};`}),\"\")}update(e,[r]){const{style:s}=e.element;if(void 0===this.ft)return this.ft=new Set(Object.keys(r)),this.render(r);for(const t of this.ft)null==r[t]&&(this.ft.delete(t),t.includes(\"-\")?s.removeProperty(t):s[t]=null);for(const t in r){const e=r[t];if(null!=e){this.ft.add(t);const r=\"string\"==typeof e&&e.endsWith(i);t.includes(\"-\")||r?s.setProperty(t,r?e.slice(0,-11):e,r?n:\"\"):s[t]=e}}return t}});export{o as styleMap};\n//# sourceMappingURL=style-map.js.map\n","import { css } from 'lit';\nexport default css`\n:host{\n display: inline-block;\n --text-on-color: var(--spectric-text-on-color, #ffffff);\n --text-on-color-disabled: var(--spectric-text-on-color-disabled, #8d8d8d);\n --text-placeholder: var(--spectric-text-placeholder, rgba(22, 22, 22, 0.4));\n --text-primary: var(--spectric-text-primary, #161616);\n --text-secondary: var(--spectric-text-secondary, #525252);\n --button-border-radius: var(--spectric-border-radius,.4em);\n --button-separator: var(--spectric-button-separator, #e0e0e0);\n --button-primary: var(--spectric-button-primary,#1ea7fd);\n --button-secondary: var(--spectric-button-secondary, #77878b);\n --button-tertiary: var(--spectric-button-tertiary, #0f62fe);\n --button-danger-primary: var(--spectric-button-danger-primary, #da1e28);\n --button-danger-secondary: var(--spectric-button-danger-secondary, #da1e28);\n --button-danger-active: var(--spectric-button-danger-active, #750e13);\n --button-primary-active: var(--spectric-button-primary-active, #002d9c);\n --button-secondary-active: var(--spectric-button-secondary-active, #6f6f6f);\n --button-tertiary-active: var(--spectric-button-tertiary-active, #002d9c);\n --button-danger-hover: var(--spectric-button-danger-hover, #b81921);\n --button-primary-hover: var(--spectric-button-primary-hover, #0050e6);\n --button-secondary-hover: var(--spectric-button-secondary-hover, #474747);\n --button-tertiary-hover: var(--spectric-button-tertiary-hover, #0050e6);\n --button-disabled: var(--spectric-button-disabled, #cfcbcb4d);\n}\n:host([disabled]) { \n cursor: not-allowed;\n}\n\n:host([disabled]) .animation{ \n visibility:hidden;\n}\n\n.spectric-button {\n pointer-events:none;\n position: relative;\n display: inline-block;\n cursor: pointer;\n border: 0;\n border-radius: var(--button-border-radius);\n font-weight: 700;\n line-height: 2em;\n font-family: 'Nunito Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n overflow:hidden;\n}\n.animation{\n pointer-events: none;\n transition: background-color 0.3s cubic-bezier(0.25, 0.8, 0.5, 1), opacity 0.4s cubic-bezier(0.25, 0.8, 0.5, 1);\n width: 100%;\n height: 100%;\n position: absolute;\n left: 0;\n top: 0;\n}\n.animation::before {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0 /* rtl:ignore */;\n width: 100%;\n height: 100%;\n}\n:host(:active) .animation::after {\n box-shadow: 0 0 0 0 black;\n position: absolute;\n opacity: 1;\n transition: 0s;\n}\n.animation::after{\n content: \"\";\n display: block;\n position: absolute;\n border-radius: var(--border-radius);\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n opacity: 0;\n transition: all .5s;\n box-shadow: 0 0 30px black inset;\n}\n.spectric-button.spectric-button--secondary .animation::after , .spectric-button.spectric-button--text .animation::after {\n box-shadow: 0 0 30px white inset;\n}\n\n:host([icon]) .spectric-button {\n padding: unset;\n display: flex;\n align-items: center;\n justify-content: center;\n -webkit-user-select: none; /* For Safari */\n -moz-user-select: none; /* For Firefox */\n -ms-user-select: none; /* For IE 10+ */\n user-select: none; /* Standard syntax */\n}\n\n\n\n/* :host([icon][size=\"small\"]){\n height:12px;\n width:12px;\n}\n\n:host([icon][size=\"medium\"]){\n height:14px;\n width:14px;\n}\n\n:host([icon][size=\"large\"]){\n width: 48px;\n height: 48px;\n} */\n:host([icon][size=\"tiny\"]) .spectric-button{\n width: 10px;\n height: 10px;\n}\n:host([icon][size=\"xxsmall\"]) .spectric-button{\n width: 20px;\n height: 20px;\n}\n:host([icon][size=\"xsmall\"]) .spectric-button{\n width: 28px;\n height: 28px;\n}\n:host([icon][size=\"small\"]) .spectric-button{\n width: 34px;\n height: 34px;\n}\n:host([icon][size=\"medium\"]) .spectric-button{\n width: 40px;\n height: 40px;\n}\n\n:host([icon][size=\"large\"]) .spectric-button{\n width: 48px;\n height: 48px;\n}\n\n.spectric-button:disabled{\n cursor: not-allowed;\n pointer-events: none;\n filter: contrast(0.5);\n /* background-color:var(--button-disabled); */\n color:var(--text-on-color-disabled);\n}\n.spectric-button.spectric-button--primary:disabled{\n\n background-color:var(--button-disabled);\n\n}\n.spectric-button:disabled .animation , :host(:disabled:hover) .animation{\nbackground-color: rgba(0, 0, 0, 0);\nopacity:1\n}\n.spectric-button-danger--true:hover{\n background-color:var(--button-danger-hover);\n}\n.spectric-button--primary.spectric-button-danger--true {\n background-color:var(--button-danger-primary);\n box-shadow:none;\n}\n.spectric-button--secondary.spectric-button-danger--true {\n color: var(--text-on-color);\n background-color:color-mix(in srgb, var(--button-danger-primary) 70%, transparent);\n box-shadow:none;\n}\n.spectric-button--text.spectric-button-danger--true {\n color:var(--button-danger-primary);\n\n}\n:host(:hover) .spectric-button--text.spectric-button-danger--true {\n background-color:var(--button-danger-primary);\n color:var(--text-on-color)\n}\n:host(:hover) .animation{\n background: currentColor;\n opacity: 0.15;\n}\n.spectric-button--primary {\n box-shadow: color-mix(in srgb, var(--button-primary) 50%, transparent) 0px 0px 0px 1px inset;\n background-color: var(--button-primary);\n color: var(--text-on-color);\n}\n:host > .spectric-button--primary:focus {\n outline-color: var(--button-secondary);\n outline-width: thin;\n outline-style: solid;\n}\n:host > .spectric-button--secondary:focus {\n outline-color: var(--button-primary);\n outline-width: thin;\n outline-style: solid;\n}\n:host > .spectric-button--text:focus {\n outline-color: var(--button-primary);\n outline-width: thin;\n outline-style: solid;\n}\n/* :host([variant=\"text\"]):focus-within:focus,button:focus, button:focus-within, button:focus-visible{\n outline-color: red;\n} */\n.spectric-button--secondary {\n background-color:transparent;\n box-shadow: var(--button-secondary) 0px 0px 0px 1px inset;\n color: var(--button-secondary);\n}\n.spectric-button--text {\n background-color: transparent;\n color: var(--text-secondary);\n}\n.spectric-button--tiny {\n font-size: 10px;\n line-height: 10px;\n height: 10px;\n display: flex;\n align-content: center;\n align-items: center;\n}\n.spectric-button--xxsmall {\n padding: 5px 6px;\n font-size: 10px;\n line-height: 8px;\n}\n.spectric-button--xsmall {\n padding: 5px 8px;\n font-size: 10px;\n font-size: 12px;\n line-height: 14px;\n}\n.spectric-button--small {\n padding: 5px 10px;\n font-size: 12px;\n}\n.spectric-button--medium {\n padding: 6px 17px;\n font-size: 14px;\n}\n.spectric-button--large {\n padding: 7px 24px;\n font-size: 16px;\n}\n`","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=t=>(e,o)=>{void 0!==o?o.addInitializer((()=>{customElements.define(t,e)})):customElements.define(t,e)};export{t as customElement};\n//# sourceMappingURL=custom-element.js.map\n","import{defaultConverter as t,notEqual as e}from\"../reactive-element.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o={attribute:!0,type:String,converter:t,reflect:!1,hasChanged:e},r=(t=o,e,r)=>{const{kind:n,metadata:i}=r;let s=globalThis.litPropertyMetadata.get(i);if(void 0===s&&globalThis.litPropertyMetadata.set(i,s=new Map),s.set(r.name,t),\"accessor\"===n){const{name:o}=r;return{set(r){const n=e.get.call(this);e.set.call(this,r),this.requestUpdate(o,n,t)},init(e){return void 0!==e&&this.P(o,void 0,t),e}}}if(\"setter\"===n){const{name:o}=r;return function(r){const n=this[o];e.call(this,r),this.requestUpdate(o,n,t)}}throw Error(\"Unsupported decorator location: \"+n)};function n(t){return(e,o)=>\"object\"==typeof o?r(t,e,o):((t,e,o)=>{const r=e.hasOwnProperty(o);return e.constructor.createProperty(o,r?{...t,wrapped:!0}:t),r?Object.getOwnPropertyDescriptor(e,o):void 0})(t,e,o)}export{n as property,r as standardProperty};\n//# sourceMappingURL=property.js.map\n","import{property as t}from\"./property.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function r(r){return t({...r,state:!0,attribute:!1})}export{r as state};\n//# sourceMappingURL=state.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst e=(e,t,c)=>(c.configurable=!0,c.enumerable=!0,Reflect.decorate&&\"object\"!=typeof t&&Object.defineProperty(e,t,c),c);export{e as desc};\n//# sourceMappingURL=base.js.map\n","import{desc as t}from\"./base.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function e(e,r){return(n,s,i)=>{const o=t=>t.renderRoot?.querySelector(e)??null;if(r){const{get:e,set:r}=\"object\"==typeof s?n:i??(()=>{const t=Symbol();return{get(){return this[t]},set(e){this[t]=e}}})();return t(n,s,{get(){let t=e.call(this);return void 0===t&&(t=o(this),(null!==t||this.hasUpdated)&&r.call(this,t)),t}})}return t(n,s,{get(){return o(this)}})}}export{e as query};\n//# sourceMappingURL=query.js.map\n","import{desc as t}from\"./base.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nfunction r(r){return(n,e)=>t(n,e,{async get(){return await this.updateComplete,this.renderRoot?.querySelector(r)??null}})}export{r as queryAsync};\n//# sourceMappingURL=query-async.js.map\n","import { LitElement } from \"lit-element/lit-element.js\";\n\nexport interface IDisposable {\n dispose(): void;\n}\ntype DisposableTarget = HTMLElement | Promise<HTMLElement> | (() => HTMLElement)\nlet listeners = 0;\nclass DomListener implements IDisposable {\n\n private _handler?: (e: any) => void;\n private _node?: EventTarget;\n private readonly _type: string;\n private readonly _options: boolean | AddEventListenerOptions;\n\n constructor(node: DisposableTarget, type: string, handler: (e: any) => void, options?: boolean | AddEventListenerOptions) {\n\n this._handler = handler;\n this._type = type;\n this._handler = handler;\n this._options = (options || false);\n if (node instanceof Promise) {\n node.then(targetNode => {\n if (!this._handler) {\n //Already disposed\n return\n }\n this._node = targetNode\n this._node.addEventListener(this._type, this._handler, this._options);\n })\n } else if (typeof node === \"function\") {\n this._node = node()\n this._node.addEventListener(this._type, this._handler, this._options);\n } else {\n this._node = node\n this._node.addEventListener(this._type, this._handler, this._options);\n }\n listeners += 1\n //console.log(listeners)\n }\n\n dispose(): void {\n if (!this._handler) {\n // Already disposed\n return;\n }\n if (this._node) {\n listeners -= 1\n this._node.removeEventListener(this._type, this._handler, this._options);\n }\n // Prevent leakers from holding on to the dom or handler func\n this._node = undefined;\n this._handler = undefined;\n //console.log(listeners)\n }\n}\nexport class DisposableElement extends LitElement {\n private readonly _disposables = new Set<IDisposable>();\n private _isDisposed = false;\n private _disposableListeners: { target: DisposableTarget, event: string, handler: any, options?: AddEventListenerOptions }[] = []\n private _connected: boolean = false;\n /**\n * Creates listeners on a target that will automatically get cleaned up when the element is removed from the DOM. This prevents memory leaks.\n * @param target The element| promise<element> we plan to attach the listener to\n * @param event The event name\n * @param handler The event handler\n */\n public addDisposableListener<K extends keyof GlobalEventHandlersEventMap>(target: DisposableTarget, event: K, handler: (event: GlobalEventHandlersEventMap[K]) => void, options?: AddEventListenerOptions): void\n public addDisposableListener<K extends keyof SpectricGlobalEvents>(target: DisposableTarget, event: K, handler: SpectricGlobalEvents[K], options?: AddEventListenerOptions): void\n public addDisposableListener(target: DisposableTarget, event: string, handler: any, options?: AddEventListenerOptions): void {\n let exists = this._disposableListeners.find(d => d.event === event && d.target === target && d.handler === handler)\n if (exists) {\n console.warn(\"Event handler already exists best practice is to add the this in the constructor\")\n return //Event handler has already been added, maybe they added it in a callback\n }\n this._disposableListeners.push({ target, event, handler, options })\n if (this._connected) {\n this.registerDisposable(new DomListener(target, event, handler, options))\n }\n }\n public registerDisposable<T extends IDisposable>(o: T): T {\n if (!o) {\n return o;\n }\n if ((o as unknown) === this) {\n throw new Error('Cannot register a disposable on itself!');\n }\n if (this._isDisposed) {\n console.warn(new Error('Trying to add a disposable to something that has already been disposed of. The added object will be leaked!').stack);\n } else {\n this._disposables.add(o);\n }\n\n return o;\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n this._connected = true\n this._isDisposed = false\n this._disposableListeners.forEach(({ target, event, handler, options }) => {\n this.registerDisposable(new DomListener(target, event, handler, options))\n })\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n this._connected = false\n this._disposables.forEach(disposable => {\n disposable.dispose()\n })\n this._isDisposed = true;\n }\n\n}","import { CSSResultGroup, html } from 'lit';\nimport { styleMap } from 'lit/directives/style-map.js';\n\nimport style from './button.css';\nimport { customElement, property } from 'lit/decorators.js';\nimport { HTMLElementTagWithEvents, ReactElementWithPropsAndEvents } from './types';\nimport { DomRenderable } from './table';\nimport { TooltipPostionsTypes } from './tooltip';\nimport { DisposableElement } from '../classes/DisposibleElement';\n\nexport enum ButtonSizes {\n large = \"large\",\n medium = \"medium\",\n small = \"small\",\n xsmall = \"xsmall\",\n xxsmall = \"xxsmall\",\n tiny = \"tiny\"\n}\nexport type ButtonSizesTypes = `${ButtonSizes}`\nexport enum ButtonVariants {\n primary = \"primary\",\n secondary = \"secondary\",\n text = \"text\",\n}\n\ntype ButtonVariantsTypes = `${ButtonVariants}`\nexport interface ButtonProps {\n /** Is this the principal call to action on the page? */\n variant?: ButtonVariantsTypes;\n /** What background color to use */\n backgroundColor?: string;\n /** How large should the button be? */\n size?: ButtonSizesTypes;\n label?: string,\n /* should the button be disabled*/\n disabled?: boolean;\n danger?: boolean;\n icon?: boolean\n tooltip?: DomRenderable\n tooltipPosition?: TooltipPostionsTypes\n}\nconst MODES = {\n \"primary\": 'spectric-button--primary',\n \"secondary\": 'spectric-button--secondary',\n \"text\": 'spectric-button--text',\n}\n\n@customElement('spectric-button')\nexport class SpectricButton extends DisposableElement implements ButtonProps {\n\n static styles?: CSSResultGroup | undefined = style;\n @property({ type: String, reflect: true })\n variant: 'primary' | 'secondary' | 'text' = \"primary\";\n @property({ type: Boolean, reflect: true })\n disabled: boolean = false;\n @property({ type: String, reflect: true })\n backgroundColor?: string | undefined;\n @property({ type: String, reflect: true })\n size: ButtonSizesTypes = \"small\";\n @property({ type: String, reflect: true })\n label?: string = \"\";\n @property({ type: Boolean, reflect: true })\n danger = false;\n @property({ type: Boolean, reflect: true })\n icon: boolean = false;\n @property({ type: String, reflect: true })\n tooltip?: DomRenderable;\n @property({ type: String, reflect: true })\n tooltipPosition?: TooltipPostionsTypes = \"right\";\n constructor() {\n super()\n this.addDisposableListener(this, \"click\", this._onClick, { capture: true })\n }\n\n private _onClick = (e: MouseEvent) => {\n if (e instanceof CustomEvent) {\n return\n }\n e.preventDefault()\n e.stopImmediatePropagation()\n e.stopPropagation()\n if (this.disabled) {\n return\n }\n const options: CustomEventInit = {\n bubbles: true,\n composed: true,\n detail: e\n };\n this.dispatchEvent(new CustomEvent<MouseEvent>('click', options));\n }\n\n protected render(): unknown {\n const mode = MODES[this.variant] || 'spectric-button--primary';\n return html`\n ${this.tooltip ? html`<spectric-tooltip .text=${this.tooltip} .position=${this.tooltipPosition || \"right\"} .triggerTarget=${this}></spectric-tooltip>` : null}\n <button\n type=\"button\"\n ?disabled=${this.disabled}\n class=${['spectric-button', `spectric-button-danger--${this.danger || false}`, `spectric-button--${this.size || 'medium'}`, mode].join(' ')}\n style=${styleMap({ backgroundColor: this.backgroundColor })}\n >\n <span class=\"animation\"></span>\n <slot>${this.label}</slot>\n </button>\n `;\n }\n}\n\nexport interface ButtonEventMap {\n //\"aaa\":(event:CustomEvent<ButtonProps>)=>void\n \"click\": (event: CustomEvent<MouseEvent>) => void;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"spectric-button\": HTMLElementTagWithEvents<SpectricButton, ButtonEventMap>\n\n }\n namespace JSX {\n interface IntrinsicElements {\n /**\n * {@link SpectricButton}\n */\n \"spectric-button\": ReactElementWithPropsAndEvents<SpectricButton, ButtonProps, ButtonEventMap>;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * {@link SpectricButton}\n */\n \"spectric-button\": ReactElementWithPropsAndEvents<SpectricButton, ButtonProps, ButtonEventMap>;\n }\n }\n }\n}\n","import{_$LH as o}from\"./lit-html.js\";\n/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{I:t}=o,i=o=>null===o||\"object\"!=typeof o&&\"function\"!=typeof o,n={HTML:1,SVG:2,MATHML:3},e=(o,t)=>void 0===t?void 0!==o?._$litType$:o?._$litType$===t,l=o=>null!=o?._$litType$?.h,c=o=>void 0!==o?._$litDirective$,d=o=>o?._$litDirective$,f=o=>void 0===o.strings,s=()=>document.createComment(\"\"),r=(o,i,n)=>{const e=o._$AA.parentNode,l=void 0===i?o._$AB:i._$AA;if(void 0===n){const i=e.insertBefore(s(),l),c=e.insertBefore(s(),l);n=new t(i,c,o,o.options)}else{const t=n._$AB.nextSibling,i=n._$AM,c=i!==o;if(c){let t;n._$AQ?.(o),n._$AM=o,void 0!==n._$AP&&(t=o._$AU)!==i._$AU&&n._$AP(t)}if(t!==l||c){let o=n._$AA;for(;o!==t;){const t=o.nextSibling;e.insertBefore(o,l),o=t}}}return n},v=(o,t,i=o)=>(o._$AI(t,i),o),u={},m=(o,t=u)=>o._$AH=t,p=o=>o._$AH,M=o=>{o._$AP?.(!1,!0);let t=o._$AA;const i=o._$AB.nextSibling;for(;t!==i;){const o=t.nextSibling;t.remove(),t=o}},h=o=>{o._$AR()};export{n as TemplateResultType,h as clearPart,p as getCommittedValue,d as getDirectiveClass,r as insertPart,l as isCompiledTemplateResult,c as isDirectiveResult,i as isPrimitive,f as isSingleExpression,e as isTemplateResult,M as removePart,v as setChildPartValue,m as setCommittedValue};\n//# sourceMappingURL=directive-helpers.js.map\n","import{isSingleExpression as i}from\"./directive-helpers.js\";import{Directive as t,PartType as e}from\"./directive.js\";export{directive}from\"./directive.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const s=(i,t)=>{const e=i._$AN;if(void 0===e)return!1;for(const i of e)i._$AO?.(t,!1),s(i,t);return!0},o=i=>{let t,e;do{if(void 0===(t=i._$AM))break;e=t._$AN,e.delete(i),i=t}while(0===e?.size)},r=i=>{for(let t;t=i._$AM;i=t){let e=t._$AN;if(void 0===e)t._$AN=e=new Set;else if(e.has(i))break;e.add(i),c(t)}};function h(i){void 0!==this._$AN?(o(this),this._$AM=i,r(this)):this._$AM=i}function n(i,t=!1,e=0){const r=this._$AH,h=this._$AN;if(void 0!==h&&0!==h.size)if(t)if(Array.isArray(r))for(let i=e;i<r.length;i++)s(r[i],!1),o(r[i]);else null!=r&&(s(r,!1),o(r));else s(this,i)}const c=i=>{i.type==e.CHILD&&(i._$AP??=n,i._$AQ??=h)};class f extends t{constructor(){super(...arguments),this._$AN=void 0}_$AT(i,t,e){super._$AT(i,t,e),r(this),this.isConnected=i._$AU}_$AO(i,t=!0){i!==this.isConnected&&(this.isConnected=i,i?this.reconnected?.():this.disconnected?.()),t&&(s(this,i),o(this))}setValue(t){if(i(this._$Ct))this._$Ct._$AI(t,this);else{const i=[...this._$Ct._$AH];i[this._$Ci]=t,this._$Ct._$AI(i,this,0)}}disconnected(){}reconnected(){}}export{f as AsyncDirective,t as Directive,e as PartType};\n//# sourceMappingURL=async-directive.js.map\n","import{nothing as t}from\"../lit-html.js\";import{AsyncDirective as i}from\"../async-directive.js\";import{directive as s}from\"../directive.js\";\n/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const e=()=>new h;class h{}const o=new WeakMap,n=s(class extends i{render(i){return t}update(i,[s]){const e=s!==this.Y;return e&&void 0!==this.Y&&this.rt(void 0),(e||this.lt!==this.ct)&&(this.Y=s,this.ht=i.options?.host,this.rt(this.ct=i.element)),t}rt(t){if(this.isConnected||(t=void 0),\"function\"==typeof this.Y){const i=this.ht??globalThis;let s=o.get(i);void 0===s&&(s=new WeakMap,o.set(i,s)),void 0!==s.get(this.Y)&&this.Y.call(this.ht,void 0),s.set(this.Y,t),void 0!==t&&this.Y.call(this.ht,t)}else this.Y.value=t}get lt(){return\"function\"==typeof this.Y?o.get(this.ht??globalThis)?.get(this.Y):this.Y?.value}disconnected(){this.lt===this.ct&&this.rt(void 0)}reconnected(){this.rt(this.ct)}});export{e as createRef,n as ref};\n//# sourceMappingURL=ref.js.map\n","export const BitArray = class BitArray {\n buffer: ArrayBuffer;\n u8: Uint8Array;\n constructor(buf: ArrayBuffer) {\n this.buffer = buf;\n this.u8 = new Uint8Array(buf);\n return new Proxy(this, {\n get(obj: any, prop) {\n if (!obj[prop]) {\n return obj.getBit(prop);\n } else {\n return obj[prop];\n }\n }\n })\n }\n getBit(idx: number) {\n var v = this.u8[idx >> 3];\n var off = idx & 0x7;\n return (v >> (7 - off)) & 1;\n }\n setBit(idx: number, val: any) {\n var off = idx & 0x7;\n if (val) {\n this.u8[idx >> 3] |= 0x80 >> off;\n } else {\n this.u8[idx >> 3] &= ~(0x80 >> off);\n }\n }\n get length() {\n return this.u8.byteLength * 8;\n }\n set(array: string | any[], start: number) {\n for (let i = start || 0, j = 0, len = array.length; j < len; i++, j++) {\n this.setBit(i, array[j]);\n }\n };\n subarray(start: number, stop: number) {\n let sub = [];\n start = start || 0;\n stop = stop || this.length;\n stop = stop > this.length ? this.length : stop;\n for (let i = start; i < stop; i++) {\n sub.push(this.getBit(i));\n }\n return sub;\n };\n}\n","export const debounce = (func: Function, wait: number) => {\n let timeout: number;\n return (...args: any[]) => {\n clearTimeout(timeout);\n timeout = window.setTimeout(() => func.apply(this, args), wait);\n };\n};\nexport const debounceAnimation = (func: Function) => {\n var animationFrame: number;\n return (...args: any[]) => {\n if (animationFrame) {\n cancelAnimationFrame(animationFrame)\n }\n animationFrame = requestAnimationFrame(() => {\n func.apply(this, args)\n })\n }\n}","import { css, html, PropertyValues } from 'lit';\n\n\nimport { customElement, property, queryAsync } from 'lit/decorators.js';\nimport { createRef, ref, Ref } from 'lit/directives/ref.js';\nimport { BitArray } from \"../classes/BitArray\"\nimport { DisposableElement, IDisposable } from '../classes/DisposibleElement';\nimport { debounceAnimation } from '../utils/debounce';\nimport { HTMLElementTagWithEvents, ReactElementWithPropsAndEvents } from './types';\n\nexport interface BitDisplayProps {\n /** Array buffer to display */\n arrayBuffer: ArrayBuffer;\n /** Bits per line */\n frameWidth?: number;\n /** How many pixels per bit */\n scale?: number;\n /** Width of the display canvas */\n width?: number;\n /** Height of the display canvas */\n height?: number;\n\n}\ntype Position = {\n x: number;\n y: number;\n}\nexport type BitDisplayMouseEvent = {\n position: Position,\n nativeEvent: MouseEvent\n bitIndex: number\n}\nconst events = [\"mousemove\", \"click\", \"dblclick\", \"mousedown\", \"mouseup\", \"contextmenu\"] as const\ntype BitEventHandler = (event: CustomEvent<BitDisplayMouseEvent>) => void\ntype AllEvents = typeof events\n\nexport interface BitDisplayEventMap extends Record<`bit${Capitalize<AllEvents[number]>}`, BitEventHandler> {\n}\n\n\nconst DEFAULT_SIZE = { width: 200, height: 200 }\nconst SCROLLBAR_SIZE = { width: 10, height: 10 }\n/**\n * @fires bitMousemove - emits BitDisplayMouseEvent on mousemove over the canvas\n * @fires bitClick - emits BitDisplayMouseEvent on mouse click on the canvas\n * @fires bitDblclick - emits BitDisplayMouseEvent on mouse double click on the canvas\n * @fires bitMousedown - emits BitDisplayMouseEvent on mouse down onthe canvas\n * @fires bitMouseup - emits BitDisplayMouseEvent on mouse up on the canvas\n * @fires bitContextmenu - emits BitDisplayMouseEvent on mouse right click on the canvas\n */\n@customElement(\"spectric-bit-display\")\nexport class BitDisplayCanvas extends DisposableElement implements BitDisplayProps {\n @property({ type: Object, attribute: false })\n arrayBuffer: ArrayBuffer = new ArrayBuffer(0);\n @property({ type: Number })\n frameWidth: number = 100;\n @property({ type: Number })\n scale: number = 1;\n @property({ type: Number })\n width: number = 200;\n @property({ type: Number })\n height: number = 200;\n static styles = css`\n :host{\n position: relative;\n --border-radius: var(--spectric-border-radius,4em);\n --scroll-color: var(--spectric-background-inverse,#393939);\n --background-color: var(--spectric-background, #ffffff);\n }\n #viewport{\n overflow: scroll;\n position: absolute;\n }\n #fakescrolldiv {\n position: relative;\n overflow-x: hidden;\n overflow-y: hidden;\n z-index:-1;\n }\n canvas{\n position: absolute;\n left:0;\n top:0;\n background-color:var(--background-color);\n }\n ::-webkit-scrollbar {\n height: ${SCROLLBAR_SIZE.height}px;\n width: ${SCROLLBAR_SIZE.width}px;\n\n}\n\n/* Webkit psudo elements don't pick up variables defined by the host */\n::-webkit-scrollbar-thumb {\n background: var(--spectric-background-inverse,#393939);\n border-radius: var(--spectric-border-radius,4em);\n -webkit-border-radius: var(--spectric-border-radius,4em);\n padding-top: 1px;\n padding-bottom: 1px;\n box-shadow: 0 0 1px var(--spectric-primary,#242424) inset;\n}\n::-webkit-scrollbar-thumb:hover {\n background: var(--spectric-primary,#009eb3); \n}\n::-webkit-scrollbar-corner {\n background: var(--spectric-background, #ffffff);\n}\n/* Buttons */\n\n::-webkit-scrollbar-button:single-button {\n background-color: transparent;\n display: block;\n border-style: solid;\n}/* Up */\n::-webkit-scrollbar-button:single-button:vertical:decrement {\n border-width: 0 5px 5px 5px;\n border-color: var(--spectric-background, #ffffff) var(--spectric-background, #ffffff) var(--spectric-background-inverse,#393939) var(--spectric-background, #ffffff);\n}\n::-webkit-scrollbar-button:single-button:vertical:decrement:hover {\n border-color: var(--spectric-background, #ffffff) var(--spectric-background, #ffffff) var(--spectric-primary,#009eb3) var(--spectric-background, #ffffff);\n}\n/* Down */\n::-webkit-scrollbar-button:single-button:vertical:increment {\n border-width: 5px 5px 0 5px;\n border-color: var(--spectric-background-inverse,#393939) var(--spectric-background, #ffffff) transparent var(--spectric-background, #ffffff);\n}\n\n::-webkit-scrollbar-button:vertical:single-button:increment:hover {\n border-color: var(--spectric-primary,#009eb3) var(--spectric-background, #ffffff) transparent var(--spectric-background, #ffffff);\n}\n\n/* Left */\n::-webkit-scrollbar-button:single-button:horizontal:decrement {\n border-width: 5px 5px 5px 0;\n border-color:var(--spectric-background, #ffffff) var(--spectric-background-inverse,#393939) var(--spectric-background, #ffffff) var(--spectric-background, #ffffff);\n\n}\n\n::-webkit-scrollbar-button:single-button:horizontal:decrement:hover {\n border-width: 5px 5px 5px 0;\n border-color:var(--spectric-background, #ffffff) var(--spectric-primary,#009eb3) var(--spectric-background, #ffffff) var(--spectric-background, #ffffff);\n\n}\n\n\n\n/* Right */\n::-webkit-scrollbar-button:single-button:horizontal:increment {\n border-width: 5px 0 5px 5px;\n border-color:var(--spectric-background, #ffffff) var(--spectric-background, #ffffff) var(--spectric-background, #ffffff) var(--spectric-background-inverse,#393939);\n\n}\n\n::-webkit-scrollbar-button:single-button:horizontal:increment:hover {\n border-width: 5px 0 5px 5px;\n border-color:var(--spectric-background, #ffffff) var(--spectric-background, #ffffff) var(--spectric-background, #ffffff) var(--spectric-primary,#009eb3);\n\n}\n\n `\n private state: { scale?: number } = {};\n private yStart: number = 0;\n private xStart: number = 0;\n @queryAsync(\"canvas\")\n private _canvas!: Promise<HTMLCanvasElement>\n private refs: {\n viewport: Ref<HTMLDivElement>,\n canvas: Ref<HTMLCanvasElement>, scrollDiv: Ref<HTMLDivElement>\n } = {\n viewport: createRef(),\n canvas: createRef(),\n scrollDiv: createRef()\n };\n private _bitArray?: any;\n\n private resizeObserver: ResizeObserver & IDisposable;\n private color: string = \"#000000\";\n constructor() {\n super();\n let observer = new ResizeObserver(this.onResize) as any\n observer.dispose = () => {\n this.resizeObserver.disconnect()\n }\n this.resizeObserver = observer\n this.addDisposableListener(document.body, \"theme-change\", this.onThemeChange)\n\n var lastPosition: Partial<Record<AllEvents[number], number>> = {}\n events.forEach(eventName => {\n this.addDisposableListener(this._canvas, eventName, debounceAnimation(async (e: MouseEvent) => {\n e.stopImmediatePropagation()\n e.stopPropagation()\n e.preventDefault()\n var canvas = await (this._canvas)\n let rect = canvas.getBoundingClientRect()\n let position = {\n x: Math.floor(Math.abs(e.clientX - rect.left)),\n y: Math.floor(Math.abs(e.clientY - rect.top))\n };\n let bitIndex = this.canvasPositionToBit(position)\n //If the bit index didn't change we don't need to fire an event, this can happen when the scale is more than 1px \n if (eventName === \"mousemove\" && lastPosition[eventName] == bitIndex) {\n return\n }\n lastPosition[eventName] = bitIndex\n let bitEventName = \"bit\" + String(eventName).charAt(0).toUpperCase() + String(eventName).slice(1)\n if (bitIndex != -1) {\n let event = new CustomEvent<BitDisplayMouseEvent>(bitEventName, {\n detail: { bitIndex, position, nativeEvent: e }\n })\n this.dispatchEvent(event)\n }\n }))\n })\n\n }\n private onThemeChange = () => {\n let cssStyle = getComputedStyle(this);\n if (this.color != cssStyle.color) {\n this.color = cssStyle.color\n this.paint()\n }\n }\n connectedCallback(): void {\n this.onResize()\n super.connectedCallback()\n this.registerDisposable(this.resizeObserver)\n this.resizeObserver.observe(this)\n }\n\n\n protected updated(changedProperties: PropertyValues): void {\n if (changedProperties.has(\"arrayBuffer\")) {\n if (this.arrayBuffer) {\n this._bitArray = new BitArray(this.arrayBuffer);\n }\n }\n const repaintProps = [\"arrayBuffer\", \"scale\", \"frameWidth\", \"width\", \"height\"]\n for (const prop of repaintProps) {\n if (changedProperties.has(prop)) {\n this.paint();\n return\n }\n }\n }\n\n\n private onResize = () => {\n this.calculateViewport();\n }\n canvasPositionToBit(position: { x: number, y: number }) {\n let x = Math.floor(position.x / this.scale)\n let y = Math.floor(position.y / this.scale)\n if (x > this.frameWidth - 1) {\n return -1\n }\n let startBit = this.yStart * this.frameWidth + this.xStart\n return startBit + (y * this.frameWidth + x)\n }\n paint() {\n if (!this.refs.canvas.value || !this._bitArray) {\n return\n }\n const { frameWidth, _bitArray: bitArray } = this;\n if (frameWidth <= 0) {\n return\n }\n this.calculateViewport()\n const { width = DEFAULT_SIZE.width, height = DEFAULT_SIZE.height } = this;\n const scale = this.getPxPerBit()\n const context = this.refs.canvas.value.getContext(\"2d\");\n if (!context) {\n return\n }\n if (this.state.scale != scale) {\n context.reset()\n context.scale(scale, scale);\n }\n let cssStyle = getComputedStyle(this);\n context.fillStyle = cssStyle.color\n context.clearRect(0, 0, width, height);\n let y = 0;\n\n for (\n let i = this.yStart * frameWidth + this.xStart, len = bitArray.length;\n i < len;\n i++\n ) {\n let x = (i % frameWidth) - this.xStart;\n if (x < 0) {\n continue; //Less than 0 we are off screen\n }\n if (Math.floor(x * scale) > width) {\n y++;\n i = y * frameWidth + this.yStart * frameWidth + this.xStart - 1;\n continue; //Don't bother going if it is off screen\n }\n if (Math.floor(y * scale) > height) {\n break; //Don't bother going if it is off screen\n }\n if (bitArray.getBit(i) === 1) {\n context.fillRect(x, y, 1, 1);\n }\n if ((i + 1) % frameWidth === 0 && i >= frameWidth - 1) {\n y++;\n }\n }\n }\n private handleScroll = () => {\n if (!this.refs.viewport.value) {\n return\n }\n const scale = this.getPxPerBit()\n this.yStart = this.refs.viewport.value.scrollTop\n ? Math.floor(this.refs.viewport.value.scrollTop / scale) + 1\n : 0;\n this.xStart = this.refs.viewport.value.scrollLeft\n ? Math.floor(this.refs.viewport.value.scrollLeft / scale) + 1\n : 0;\n this.paint();\n }\n\n getPxPerBit() {\n return this.scale > 0 ? this.scale : 1;\n }\n calculateViewport() {\n const { frameWidth, _bitArray: bitArray } = this;\n if (this.refs.scrollDiv.value) {\n var pxPerBit = this.getPxPerBit();\n const height = (bitArray.length / frameWidth) * pxPerBit;\n const width = frameWidth * pxPerBit;\n const div = this.refs.scrollDiv.value;\n div.style.width = width + \"px\";\n div.style.height = height + \"px\"\n }\n }\n protected render(): unknown {\n //return html`<div>here</div>`\n const { height = DEFAULT_SIZE.height, width = DEFAULT_SIZE.width } = this\n return html`\n <div\n id=\"viewport\"\n ${ref(this.refs.viewport)}\n @scroll=${this.handleScroll}\n style=${`width:${width + SCROLLBAR_SIZE.width}px;height:${height + SCROLLBAR_SIZE.height}px;overflow:auto;position:relative`}\n >\n <div\n id=\"fakescrolldiv\"\n ${ref(this.refs.scrollDiv)}\n >\n </div>\n </div>\n <canvas\n ${ref(this.refs.canvas)}\n width=${width}\n height=${height}\n ></canvas>\n`\n\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"spectric-bit-display\": HTMLElementTagWithEvents<BitDisplayCanvas, BitDisplayEventMap>\n }\n namespace JSX {\n interface IntrinsicElements {\n /**\n * {@link BitDisplayCanvas}\n */\n \"spectric-bit-display\": ReactElementWithPropsAndEvents<BitDisplayCanvas, BitDisplayProps, BitDisplayEventMap>;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * {@link BitDisplayCanvas}\n */\n \"spectric-bit-display\": ReactElementWithPropsAndEvents<BitDisplayCanvas, BitDisplayProps, BitDisplayEventMap>;\n }\n }\n }\n}\n","import { css } from \"lit\";\n\nexport default css`.spectric-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n border-bottom: 1px solid rgba(0, 0, 0, 0.1);\n padding: 15px 20px;\n font-family: 'Nunito Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n}\n\n.spectric-header svg {\n display: inline-block;\n vertical-align: top;\n}\n.spectric-header slot {\n display: inline-block;\n vertical-align: middle;\n}\n.spectric-header h1 {\n display: inline-block;\n vertical-align: middle;\n margin: 6px 0 6px 10px;\n font-weight: 700;\n font-size: 20px;\n line-height: 1;\n}\n\n.spectric-header button + button {\n margin-left: 10px;\n}\n\n.spectric-header .welcome {\n margin-right: 10px;\n color: #333;\n font-size: 14px;\n}\n`","import { html, LitElement, TemplateResult } from 'lit';\n\nimport '.';\nimport { customElement, property } from 'lit/decorators.js';\nimport styles from './header.css';\nimport { HTMLElementTagWithEvents, ReactElementWithPropsAndEvents } from './types';\n\n\n/**\n * Properties defining \n */\nexport interface HeaderProps {\n username?: string;\n /**\n * Shows the login Button\n */\n showLoginButton?: boolean\n /**\n * Shows the create account Button when not logged in\n */\n showCreateAccount?: boolean\n}\nexport interface HeaderSlots {\n /** Main name of the application */\n name?: string | Node | TemplateResult\n /** Slot to the left of the title typically used for app icons, and/or dropdown navigation menus.*/\n branding?: string | Node | TemplateResult\n /** Slot in the center of the header.*/\n center?: string | Node | TemplateResult\n /** slot right of login/out buttons*/\n end?: string | Node | TemplateResult\n}\n\nexport interface HeaderEventMap {\n \"login\": (event: CustomEvent<void>) => void;\n \"logout\": (event: CustomEvent<void>) => void;\n \"createAccount\": (event: CustomEvent<void>) => void\n}\n\n/**\n * @slot name - Main name of the application\n * @slot branding - Slot to the left of the title typically used for app icons, and/or dropdown navigation menus.\n * @slot center - Slot in the center of the header.\n * @slot end - slot right of login/out buttons\n */\n@customElement(\"spectric-header\")\nexport class Header extends LitElement implements HeaderProps {\n static styles = styles\n @property({ type: Boolean, reflect: true }) showCreateAccount: boolean = false;\n @property({ type: Boolean, reflect: true }) showLoginButton: boolean = false;\n @property({ type: String, reflect: true }) username: string = \"\";\n onLogout = () => {\n const options = {\n bubbles: true,\n composed: true,\n };\n this.dispatchEvent(new CustomEvent('logout', options));\n\n }\n onLogin = () => {\n const options = {\n bubbles: true,\n composed: true,\n };\n this.dispatchEvent(new CustomEvent('login', options));\n }\n onCreateAccount = () => {\n const options = {\n bubbles: true,\n composed: true,\n };\n this.dispatchEvent(new CustomEvent('createAccount', options));\n }\n protected render() {\n return html`\n <header>\n <div class=\"spectric-header\">\n <div style=\"flex-grow:1;\">\n <slot name=\"branding\"></slot>\n <h1><slot name=\"name\"></slot></h1>\n <slot name=\"center\"></slot>\n </div>\n ${this.showLoginButton !== false ? html`\n <div>\n ${(this.username && this.username !== \"\")\n ? html`<spectric-button variant=\"secondary\" size=\"small\" @click=${this.onLogout}>Log out</spectric-button>`\n : html`\n ${this.showCreateAccount !== false ? html`<spectric-button variant=\"text\" size=\"small\" @click=${this.onCreateAccount}>Sign up</spectric-button>` : null}\n <spectric-button variant=\"primary\" size=\"small\" @click=${this.onLogin}>Log in</spectric-button>`\n }\n \n \n </div>`: null}\n <slot name=\"end\"></slot>\n </div>\n </header>\n `\n }\n}\n\n\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"spectric-header\": HTMLElementTagWithEvents<Header, HeaderEventMap>\n }\n namespace JSX {\n interface IntrinsicElements {\n /**\n * {@link Header}\n */\n \"spectric-header\": ReactElementWithPropsAndEvents<Header, HeaderProps, HeaderEventMap>;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * {@link Header}\n */\n \"spectric-header\": ReactElementWithPropsAndEvents<Header, HeaderProps, HeaderEventMap>;\n }\n }\n }\n}\n","import { html, LitElement } from 'lit';\nimport { StyleInfo, styleMap } from 'lit/directives/style-map.js';\nimport \"./Button\"\nimport { customElement, property } from 'lit/decorators.js';\nimport { HTMLElementTagWithEvents, ReactElementWithPropsAndEvents } from './types';\n\nexport interface BannerProps {\n /**What is returned in the event details when a banner is dismissed */\n bannerId?: any,\n /** Banner Text to display */\n text?: string;\n /** What background color to use */\n headerStyle?: StyleInfo;\n /** Can be dismissed */\n dismissable?: boolean;\n\n}\n\n\n\nconst DEFAULT_STYLE: StyleInfo = {\n display: \"flex\",\n alignItems: \"center\",\n backgroundColor: \"black\",\n color: \"white\",\n textAlign: \"center\"\n}\n\n/**\n * @slot text - Banner Text content\n */\n@customElement('spectric-banner')\nexport class SpectricBanner extends LitElement implements BannerProps {\n @property({ type: Boolean, reflect: true })\n dismissable: boolean = false;\n //static styles?: CSSResultGroup | undefined = style;\n @property({ type: String, reflect: true })\n text?: string = \"\";\n @property({ type: String, reflect: true })\n bannerId?: string = \"\";\n @property({ type: Object })\n headerStyle?: StyleInfo = {};\n\n @property({ state: true, type: Boolean, attribute: false })\n private _dismissed: boolean = false;\n\n private onDismiss = (e: PointerEvent) => {\n e.preventDefault()\n e.stopPropagation()\n const options = {\n bubbles: true,\n composed: true,\n };\n this._dismissed = true;\n let { bannerId, text, headerStyle, dismissable }: BannerProps = this\n this.dispatchEvent(new CustomEvent<BannerProps>('bannerDismissed', {\n detail: { bannerId, text, headerStyle, dismissable },\n ...options\n }));\n }\n protected render(): unknown {\n if (this._dismissed) {\n return\n }\n return html`\n <header style=${styleMap({ ...DEFAULT_STYLE, ...this.headerStyle })}>\n <div style=\"flex-grow:1\"><slot name=\"text\">${this.text}</slot><slot></slot></div>\n ${this.dismissable ? html`<spectric-button size=\"small\" @click=${this.onDismiss}>X</spectric-button>` : null}\n </header>\n `;\n }\n}\n\nexport interface BannerEventMap {\n 'bannerDismissed': (event: CustomEvent<BannerProps>) => void\n}\n\ndeclare global {\n\n interface HTMLElementTagNameMap {\n \"spectric-banner\": HTMLElementTagWithEvents<SpectricBanner, BannerEventMap>\n }\n\n namespace JSX {\n interface IntrinsicElements {\n /**\n * {@link SpectricBanner}\n */\n \"spectric-banner\": ReactElementWithPropsAndEvents<SpectricBanner, BannerProps, BannerEventMap>;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * {@link SpectricBanner}\n */\n \"spectric-banner\": ReactElementWithPropsAndEvents<SpectricBanner, BannerProps, BannerEventMap>;\n }\n }\n }\n}","import { css } from \"lit\";\nexport default css`\n\n:host {\n height:100vh;\n width: 100%;\n display: flex;\n flex-direction: column;\n font-size: 14px;\n line-height: 24px;\n font-family: 'Nunito Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n --spectric-background: var(--background,#ffffff);\n --spectric-background-hover:var(--background-hover,rgba(141, 141, 141, 0.12));\n --spectric-background-inverse: var(--background-inverse,#f4f4f4);\n --spectric-background-inverse-hover: var(--background-inverse-hover,#474747);\n --spectric-border-radius: var(--border-radius,.4em);\n --spectric-primary:var(--primary,#1ea7fd);\n --spectric-secondary: var(--secondary,#77878b);\n --spectric-tertiary: var(--tertiary,#0f62fe);\n --spectric-disabled: var(--disabled,#c6c6c6);\n\n /* panel */\n --panel-color:var(--spectric-background-inverse);\n --panel-color-inverse:var(--spectric-background);\n --spectric-border-disabled: var(--disabled);\n\n /*inputs*/\n --spectric-input-color: var(--panel-color-inverse);\n --spectric-input-bottom: var(--panel-color);\n\n --spectric-text-on-color: var(--text-on-color,#ffffff);\n --spectric-text-on-color-disabled: var(--text-on-color-disabled,#8d8d8d);\n --spectric-text-placeholder: var(--text-placeholder,rgba(22, 22, 22, 0.4));\n --spectric-text-primary: var(--text-primary,#161616);\n --spectric-text-secondary: var(--text-secondary,#525252);\n /* Buttons */\n --spectric-button-separator: #e0e0e0;\n --spectric-button-primary: var(--primary,#1ea7fd);\n --spectric-button-secondary: var(--secondary,#77878b);\n --spectric-button-tertiary: var(--tertiary);\n --spectric-button-danger-primary: #da1e28;\n --spectric-button-danger-secondary: #da1e28;\n --spectric-button-danger-active: #750e13;\n --spectric-button-primary-active: #002d9c;\n --spectric-button-secondary-active: #6f6f6f;\n --spectric-button-tertiary-active: #002d9c;\n --spectric-button-danger-hover: #b81921;\n --spectric-button-primary-hover: #0050e6;\n --spectric-button-secondary-hover: #474747;\n --spectric-button-tertiary-hover: #0050e6;\n --spectric-text-on-color-disabled: var(--disabled,#c6c6c6)\n --spectric-button-disabled: #c6c6c6;\n}\n*{\n color: var(--spectric-text-primary);\n background-color: var(--spectric-background,rgb(255 255 255 / 60%));\n}\narticle{\n flex-grow:1;\n overflow-y:auto;\n padding-left: calc(var(--spectric-border-radius, 0.4em) + 2px);\n padding-right: calc(var(--spectric-border-radius, 0.4em) + 2px);\n}\n h2 {\n display: inline-block;\n vertical-align: middle;\n margin: 0 0 4px;\n font-weight: 700;\n font-size: 32px;\n line-height: 1;\n}\n\n p {\n margin: 1em 0;\n}\n\n a {\n color: var(--primary);\n text-decoration: var(--primary);\n}\n\n ul {\n margin: 1em 0;\n padding-left: 30px;\n}\n\n li {\n margin-bottom: 8px;\n}\n::-webkit-scrollbar {\n width: 10px;\n }\n\n ::-webkit-scrollbar-thumb {\n background: var(--spectric-background-inverse,#393939);\n border-radius: var(--spectric-border-radius,4em);\n -webkit-border-radius: var(--spectric-border-radius,4em);\n padding-top: 1px;\n padding-bottom: 1px;\n box-shadow: 0 0 1px var(--spectric-primary,#242424) inset;\n}\n::-webkit-scrollbar-thumb:hover {\n background: var(--spectric-primary,#009eb3); \n}\n\n\n ::-webkit-scrollbar-button:single-button {\n background-color: transparent;\n display: block;\n border-style: solid;\n}\n/* Up */\n::-webkit-scrollbar-button:single-button:vertical:decrement {\n border-width: 0 5px 5px 5px;\n border-color: var(--spectric-background, #ffffff) var(--spectric-background, #ffffff) var(--spectric-background-inverse,#393939) var(--spectric-background, #ffffff);\n}\n::-webkit-scrollbar-button:single-button:vertical:decrement:hover {\n border-color: var(--spectric-background, #ffffff) var(--spectric-background, #ffffff) var(--spectric-primary,#009eb3) var(--spectric-background, #ffffff);\n}\n/* Down */\n::-webkit-scrollbar-button:single-button:vertical:increment {\n border-width: 5px 5px 0 5px;\n border-color: var(--spectric-background-inverse,#393939) var(--spectric-background, #ffffff) transparent var(--spectric-background, #ffffff);\n}\n\n::-webkit-scrollbar-button:vertical:single-button:increment:hover {\n border-color: var(--spectric-primary,#009eb3) var(--spectric-background, #ffffff) transparent var(--spectric-background, #ffffff);\n}\n\n/* Left */\n::-webkit-scrollbar-button:single-button:horizontal:decrement {\n border-width: 5px 5px 5px 0;\n border-color:var(--spectric-background, #ffffff) var(--spectric-background-inverse,#393939) var(--spectric-background, #ffffff) var(--spectric-background, #ffffff);\n\n}\n\n::-webkit-scrollbar-button:single-button:horizontal:decrement:hover {\n border-width: 5px 5px 5px 0;\n border-color:var(--spectric-background, #ffffff) var(--spectric-primary,#009eb3) var(--spectric-background, #ffffff) var(--spectric-background, #ffffff);\n\n}\n\n\n\n/* Right */\n::-webkit-scrollbar-button:single-button:horizontal:increment {\n border-width: 5px 0 5px 5px;\n border-color:var(--spectric-background, #ffffff) var(--spectric-background, #ffffff) var(--spectric-background, #ffffff) var(--spectric-primary,#009eb3);\n\n}\n\n::-webkit-scrollbar-button:single-button:horizontal:increment:hover {\n border-width: 5px 0 5px 5px;\n border-color:var(--spectric-background, #ffffff) var(--spectric-background, #ffffff) var(--spectric-background, #ffffff) var(--spectric-background-inverse-hover,#474747);\n\n}\n\n`;","import{nothing as t}from\"../lit-html.js\";\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o=o=>o??t;export{o as ifDefined};\n//# sourceMappingURL=if-defined.js.map\n","import { ElementPart, Part } from 'lit';\nimport { nothing } from 'lit';\nimport { AsyncDirective, directive } from 'lit/async-directive.js';\n\n\n\n/**\n * Usage:\n * import { html, render } from 'lit';\n * import { spreadProps } from '@spectric/ui';\n *\n * render(\n * html`\n * <div\n * ${spreadProps({\n * prop1: 'prop1',\n * prop2: ['Prop', '2'],\n * prop3: {\n * prop: 3,\n * }\n * })}\n * ></div>\n * `,\n * document.body,\n * );\n */\nexport class SpreadPropsDirective extends AsyncDirective {\n host!: EventTarget | object | Element;\n element!: Element;\n prevData: any = {};\n\n render(_spreadData: any) {\n return nothing;\n }\n update(part: Part, [spreadData]: Parameters<this['render']>) {\n if (this.element !== (part as ElementPart).element) {\n this.element = (part as ElementPart).element;\n }\n this.host = part.options?.host || this.element;\n this.apply(spreadData);\n this.groom(spreadData);\n this.prevData = { ...spreadData };\n }\n\n apply(data: any) {\n if (!data) return;\n const { element } = this;\n for (const key in data) {\n const value = data[key];\n if ((element as any)[key] === value) {\n continue;\n }\n // @ts-ignore\n element[key] = value;\n }\n }\n\n groom(data: any) {\n const { prevData, element } = this;\n if (!prevData) return;\n for (const key in prevData) {\n //@ts-ignore\n if (!data || (!(key in data) && element[key] === prevData[key])) {\n // @ts-ignore\n element[key] = undefined;\n }\n }\n }\n}\n\nexport const spreadProps = directive(SpreadPropsDirective);","import { StyleInfo } from \"lit/directives/style-map.js\";\n\n/*\n\n[US] Department of Defense (DoD)\n\nCONTROLLED UNCLASSIFIED INFORMATION (CUI, color code: #3D1E5A)\nCLASSIFIED (color code: #723D9A)\nUNCLASSIFIED (U, color code: #007A33)\nCONFIDENTIAL (C, color code: #0033A0)\nSECRET (S, color code: #C8102E)\nTOP SECRET (TS, color code: #FF671F)\nTOP SECRET//SENSITIVE COMPARTMENT INFORMATION (TS//SCI, color code: #F7EA48)\nNOTICE: According to CI Policy Publications Update (dodcui.mil), the CUI is not a CNSI classification.\nThe cyber intel classification banner is designed to fulfill the requirements of Executive Order 13526, ODNI CG v2.1 § 2.3.1, 32 CFR Part 2001.23 / Part 2002.16.a.3, DoDI 5200.48, DoD Manual 5200.1R, ISOO Rev4, STIG V-6146, STIG V-222643, and ECML-1 for marking/labeling sensitive/classified information electronically.\n\n[UK] Government Communications Headquarters (GCHQ)\n\nPROTECTIVE MARKING NOT SET (color code: #616161)\nUK OFFICIAL (color code: #2B71C7)\nUK OFFICIAL SENSITIVE (color code: #2B71C7)\nUK SECRET (color code: #F39C2C)\nUK TOP SECRET (color code: #AA0000)\nNOTICE: The above color code is defined by the UK Secret Intelligence Service (MI6) – Intelligence Community Design System.\n\n[CA] Canadian Security Intelligence Service (CSIS)\n\nPROTECTED A (color code: #227ABC)\nPROTECTED B (color code: #900FB5)\nPROTECTED C (color code: #460FB5)\nCONFIDENTIAL (color code: #0033a0)\nSECRET (color code: #c8102e)\nTOP SECRET (color code: #ff671f)\nNOTICE: The above color code is defined by the Government of Canada.\n\n[AU] Australian Secret Intelligence Service (ASIS)\n\nUNOFFICIAL\nOFFICIAL\nOFFICIAL: Sensitive\nConfidential (color code: #4F81BD)\nSECRET (color code: #E5B8B7)\nTOP SECRET (color code: #AA0000)\nNOTICE: The above color code is defined by the Australian Government Attorney-General’s Department | Protective Security Policy Framework | Policy 8 – Classification System.\n*/\nexport enum ClassificationVariants {\n None = \"none\",\n Uscui = \"us.cui\",\n Usclassified = \"us.classified\",\n Usunclassified = \"us.unclassified\",\n Usconfidential = \"us.confidential\",\n Ussecret = \"us.secret\",\n Ustopsecret = \"us.topsecret\",\n UstopsecretSi = \"us.topsecret.si\",\n Uknotset = \"uk.notset\",\n Ukofficial = \"uk.official\",\n Uksecret = \"uk.secret\",\n Uktopsecret = \"uk.topsecret\",\n Caprotected_a = \"ca.protected_a\",\n Caprotected_b = \"ca.protected_b\",\n Caprotected_c = \"ca.protected_c\",\n Caconfidential = \"ca.confidential\",\n Casecret = \"ca.secret\",\n Catopsecret = \"ca.topsecret\",\n Auunofficial = \"au.unofficial\",\n Auofficial = \"au.official\",\n Auofficialsensitive = \"au.officialsensitive\",\n Auconfidential = \"au.confidential\",\n Ausecret = \"au.secret\",\n Autopsecret = \"au.topsecret\",\n}\nexport type Classifications = `${ClassificationVariants}`\nexport const ClassificationStyles: Record<Classifications, StyleInfo> = {\n \"none\": {\n\n },\n //US Department of Defense spec CFR-2002-title31-vol1-sec2-7\n \"us.cui\": { //controlled unclassified information\n color: \"white\",\n backgroundColor: \"#3D1E5A\",\n content: \"Controlled Unclassified Information\"\n },\n \"us.classified\": {\n color: \"white\",\n backgroundColor: \"#723D9A\",\n content: \"Classified\"\n },\n \"us.unclassified\": {\n color: \"white\",\n backgroundColor: \"#007A33\",\n content: \"Unclassified\"\n },\n \"us.confidential\": {\n color: \"white\",\n backgroundColor: \"#0033A0\",\n content: \"Confidential\"\n },\n \"us.secret\": {\n color: \"white\",\n backgroundColor: \"#C8102E\",\n content: \"Secret\"\n },\n \"us.topsecret\": {\n color: \"white\",\n backgroundColor: \"#FF671F\",\n content: \"Top Secret\"\n },\n \"us.topsecret.si\": {\n color: \"black\",\n backgroundColor: \"#F7EA48\",\n content: \"Top Secret//SI\"\n },\n \"uk.notset\": {\n color: \"white\",\n backgroundColor: \" #616161\",\n content: \"Not Set\"\n\n },\n \"uk.official\": {\n color: \"white\",\n backgroundColor: \"#2B71C7\",\n content: \"For Offical Use\"\n },\n \"uk.secret\": {\n color: \"white\",\n backgroundColor: \"#F39C2C\",\n content: \"Secret\"\n },\n \"uk.topsecret\": {\n color: \"white\",\n backgroundColor: \"#AA0000\",\n content: \"Top Secret\"\n },\n \"ca.protected_a\": {\n color: \"white\",\n backgroundColor: \"#227ABC\",\n content: \"PROTECTED A\"\n },\n \"ca.protected_b\": {\n color: \"white\",\n backgroundColor: \"#900FB5\",\n content: \"PROTECTED B\"\n },\n \"ca.protected_c\": {\n color: \"white\",\n backgroundColor: \"#460FB5\",\n content: \"PROTECTED C\"\n },\n \"ca.confidential\": {\n color: \"white\",\n backgroundColor: \"#0033a0\",\n content: \"Confidential\"\n },\n \"ca.secret\": {\n color: \"white\",\n backgroundColor: \"#c8102e\",\n content: \"Secret\"\n },\n \"ca.topsecret\": {\n color: \"white\",\n backgroundColor: \"#ff671f\",\n content: \"Top Secret\"\n },\n \"au.unofficial\": {\n color: \"#666\",\n backgroundColor: \"#ffffffff\",\n content: \"Unofficial\"\n },\n \"au.official\": {\n color: \"#666\",\n backgroundColor: \"#ffffffff\",\n content: \"Official\"\n },\n \"au.officialsensitive\": {\n color: \"#666\",\n backgroundColor: \"#ffffffff\",\n content: \"Official Sentitive\"\n },\n \"au.confidential\": {\n color: \"white\",\n backgroundColor: \"#4F81BD\",\n content: \"Confidential\"\n },\n \"au.secret\": {\n color: \"black\",\n backgroundColor: \" #E5B8B7\",\n content: \"Secret\"\n },\n \"au.topsecret\": {\n color: \"black\",\n backgroundColor: \"#AA0000\",\n content: \"Top Secret\"\n },\n}","import { CSSResultGroup, html, LitElement } from 'lit';\n\nimport { HeaderEventMap, HeaderProps, HeaderSlots } from './Header';\nimport { BannerEventMap, BannerProps } from './Banner';\nimport \"./Banner\"\nimport styles from './page.css';\nimport { customElement } from 'lit/decorators/custom-element.js';\nimport { property } from 'lit/decorators/property.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { spreadProps } from '../utils/spread';\nimport { Classifications, ClassificationVariants } from './configurations/classifications';\nimport { ClassificationStyles } from './configurations/classifications';\nimport { KnownThemes, ThemeEventMap } from './ThemeProvider';\nimport { HTMLElementTagWithEvents, ReactElementWithPropsAndEvents } from './types';\n\n\nexport interface PageBanners {\n classification?: { type: Classifications, text: string }\n notifications?: BannerProps[]\n}\nexport interface PageProps extends HeaderProps {\n theme?: KnownThemes\n showHeader?: boolean\n /** Will control if the top navbar will stay at the top or scroll with the main content */\n headerSticky?: boolean\n classificationLevel?: Classifications\n /** Overrides the default classification banner text */\n classificationText: string\n notifications?: BannerProps[]\n}\n\nexport interface PageSlots extends HeaderSlots {\n /** @description Application Main Conent */\n content?: Node | TemplateStringsArray | string\n}\n\n\n\n/**\n * Spectric page is a basic component that will put all content into an area that expands to fill the whole screen. It calculates the size of the banners and headers for you.\n * \n * It exposes css properties to style all the spectric compenents contained within\n * \n * This component does not fire any events directly but sub components do. See HeaderEventMap & ThemeEventMap & BannerEventMap for full list of events\n * @slot - Main content\n * @slot content - Main content\n * @slot name - Main name of the application\n * @slot branding - Slot to the left of the title typically used for app icons, and/or dropdown navigation menus.\n * @slot center - Slot in the center of the header.\n * @slot end - slot right of login/out buttons\n * @cssprop [--primary=#1ea7fd] - primary color\n * @cssprop [--secondary=#1ea7fd] - secondary color\n * @cssprop [--tertiary=#1ea7fd] - tertiary color\n * @cssprop [--disabled=#1ea7fd] - disabled color\n * @cssprop [--text-primary=#1ea7fd] - text colors\n * @cssprop [--text-secondary=#1ea7fd] - text colors\n * @cssprop [--text-on-color=#ffffff] - color of text on color\n * @cssprop [--background=#1ea7fd] - background color\n * @cssprop [--background-inverse=#f4f4f4] - Even Panel colors\n * @cssprop [--border-radius=0.4em] - sets global border radius\n * @see Events {@link SpectricEventsMaps}\n */\n@customElement(\"spectric-page\")\nexport class SpectricPage extends LitElement implements PageProps {\n static styles?: CSSResultGroup | undefined = styles;\n\n @property({ type: Boolean, reflect: true }) showHeader: boolean = true;\n @property({ type: Boolean, reflect: true }) headerSticky: boolean = true;\n @property({ type: String, reflect: true }) classificationLevel?: Classifications = ClassificationVariants.None;\n @property({ type: String, reflect: true }) classificationText: string = \"\";\n @property({ type: Array, reflect: true }) notifications: BannerProps[] = [];\n @property({ type: Boolean, reflect: true }) showCreateAccount: boolean = false;\n @property({ type: Boolean, reflect: true }) showLoginButton: boolean = true;\n @property({ type: String, reflect: true }) username: string = \"\";\n /** If a theme other than light is provided that will be used ad css properties will be ignored */\n @property({ type: String, reflect: true }) theme?: KnownThemes\n // protected createRenderRoot(): HTMLElement | DocumentFragment {\n // return this\n // }\n protected render() {\n if (this.classificationLevel && !ClassificationStyles[this.classificationLevel]) {\n console.warn(\"Unknown classification\", this.classificationLevel)\n this.classificationLevel = ClassificationVariants.None\n }\n const classificationText = this.classificationLevel ? this.classificationText || ClassificationStyles[this.classificationLevel].content : \"\"\n const header = this.showHeader ? html`<spectric-header ?showCreateAccount=${this.showCreateAccount} .showLoginButton=${this.showLoginButton} username=${ifDefined(this.username)}>\n <slot name=\"branding\" slot=\"branding\"></slot>\n <slot name=\"name\" slot=\"name\"></slot>\n <slot name=\"center\" slot=\"center\"></slot>\n <slot name=\"end\" slot=\"end\"></slot>\n </spectric-header>`: null\n return html`\n ${this.classificationLevel && classificationText ? html`\n <!-- Classification Banner -->\n <spectric-banner ${spreadProps({ text: classificationText, headerStyle: ClassificationStyles[this.classificationLevel] })}></spectric-banner>\n `\n : null}\n <spectric-theme theme=${ifDefined(this.theme)}>\n ${this.notifications ? this.notifications.map((n) => {\n return html`<spectric-banner ${spreadProps(n)} ></spectric-banner>`\n }) : null}\n ${this.headerSticky ? header : null}\n <article>\n ${this.headerSticky ? null : header}\n <section class=\"spectric-page\">\n <slot name=\"content\"></slot>\n <slot></slot>\n </section>\n </article>\n </spectric-theme>\n ${this.classificationLevel && classificationText ?\n html`<spectric-banner ${spreadProps({ text: classificationText, headerStyle: ClassificationStyles[this.classificationLevel] })}></spectric-banner>` :\n null\n }\n\n `\n }\n}\n\n// let p = document.createElement(\"spectric-page\")\n// p.addEventListener(\"theme-change\",(e)=>{\n\n// })\n// let t = document.createElement(\"spectric-theme\")\n// t.addEventListener(\"theme-change\",(e)=>{})\n// interface SpectricEventsMaps extends HeaderEventMap,ThemeEventMap,BannerEventMap {\n\n// }\ntype SpectricEventsMaps = HeaderEventMap & ThemeEventMap & BannerEventMap\n\ndeclare global {\n interface HTMLElementTagNameMap {\n /**\n * {@link SpectricPage}\n */\n \"spectric-page\": HTMLElementTagWithEvents<SpectricPage, SpectricEventsMaps>\n }\n namespace JSX {\n interface IntrinsicElements {\n /**\n * {@link SpectricPage}\n */\n \"spectric-page\": ReactElementWithPropsAndEvents<SpectricPage, PageProps, SpectricEventsMaps>;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * {@link SpectricPage}\n */\n \"spectric-page\": ReactElementWithPropsAndEvents<SpectricPage, PageProps, SpectricEventsMaps>;\n }\n }\n }\n}\n\n","import { html, LitElement, PropertyValues, TemplateResult } from 'lit';\nimport \"./input.css\"\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { ReactElementWithPropsAndEvents } from './types';\nimport { ButtonSizesTypes } from './Button';\n\nexport enum InputVariants {\n Text = 'text',\n TextArea = 'text-area',\n number = 'number',\n //checkbox = \"checkbox\",\n color = \"color\",\n date = \"date\",//replace default eventually with custom\n datetime = \"datetime-local\",//replace default eventually with custom\n email = \"email\",\n file = \"file\",//display drop area\n hidden = \"hidden\",//display drop area\n password = \"password\",\n checkbox = \"checkbox\"\n\n}\ntype InputVariantsTypes = `${InputVariants}`\nexport interface InputProps {\n /** Input type */\n variant?: InputVariantsTypes;\n /**Label to display above the input */\n label?: string,\n /**placeholder text to display*/\n placeholder?: string,\n /* should be disabled?*/\n disabled?: boolean,\n /* should be readonly*/\n readonly?: boolean,\n /**\n * The helper text.\n */\n\n helperText?: string,\n /**\n * Specify if the currently value is invalid.\n */\n invalid?: boolean,\n /**\n * Message which is displayed if the value is invalid.\n */\n invalidText?: string | TemplateResult<1>,\n /**\n * Max character count allowed for input. This is needed in order for enableCounter to display\n */\n maxCount?: number,\n /**\n* Boolean property to set the required status\n*/\n required?: boolean,\n /**\n* Shows a button to display the password\n*/\n showPasswordVisibilityToggle?: boolean;\n\n /**\n * Name for the input used for form data events //TODO make sure this works\n */\n name?: string;\n\n /**\n * Pattern to validate the input against for HTML validity checking\n */\n\n pattern?: string;\n /**\n * The sets the autocomplete for the input.\n */\n autocomplete?: HTMLInputElement['autocomplete'];\n}\n@customElement('spectric-input')\nexport class SpectricInput extends LitElement implements InputProps {\n @property({ type: Boolean, reflect: true })\n checked?: boolean;\n size?: ButtonSizesTypes;\n //static styles?: CSSResultGroup | undefined = style;\n protected createRenderRoot(): HTMLElement | DocumentFragment {\n return this\n }\n @property({ type: String, reflect: true })\n placeholder: string = \"\";\n @property({ type: Boolean, reflect: true })\n readonly: boolean = false;\n @property({ type: String, reflect: true })\n variant: InputVariantsTypes = \"text\";\n @property({ type: Boolean, reflect: true })\n disabled: boolean = false;\n @property({ type: String, reflect: true })\n label: string = \"\";\n\n /**\n * \"Hide password\" tooltip text on password visibility toggle\n */\n @property()\n hidePasswordLabel = 'Hide';\n\n /**\n * \"Show password\" tooltip text on password visibility toggle\n */\n @property()\n showPasswordLabel = 'Show';\n\n /**\n * Boolean property to render password visibility toggle\n */\n @property({\n type: Boolean,\n reflect: true,\n })\n showPasswordVisibilityToggle = true;\n\n /**\n * The helper text.\n */\n @property({ type: String, reflect: true })\n helperText = '';\n\n /**\n * Specify if the currently value is invalid.\n */\n @property({ type: Boolean, reflect: true })\n invalid = false;\n\n /**\n * Boolean property to set the required status\n */\n @property({ type: Boolean, reflect: true })\n required = false;\n /**\n * Message which is displayed if the value is invalid.\n */\n @property({ type: String, reflect: true })\n invalidText: InputProps[\"invalidText\"] = '';\n /**\n * Name for the input used for form data events //TODO make sure this works\n */\n @property()\n name = '';\n\n /**\n * Pattern to validate the input against for HTML validity checking\n */\n @property()\n pattern = '';\n @property({ type: Number, reflect: true })\n maxCount: number = 0;\n /**\n* The internal value.\n*/\n protected _value: string | boolean | number = '';\n private _showPassword: boolean = false;\n /**\n * The sets the autocomplete for the input.\n */\n @property({ reflect: true })\n autocomplete: HTMLInputElement['autocomplete'] = \"off\";\n get selectionStart() {\n if (!this._input) {\n return null\n }\n return this._input.selectionStart\n }\n /**\n * The value of the input.\n */\n @property({ reflect: true })\n get value() {\n //pull directly from the input\n if (this._input) {\n if (this.variant == InputVariants.number) {\n return parseFloat(this._input.value)\n }\n return this._input.value;\n }\n // but before then _value will work fine\n return this._value;\n }\n\n set value(value) {\n const oldValue = this._value;\n this._value = value;\n this.requestUpdate('value', oldValue);\n // we set the value directly on the input (when available)\n // so that programatic manipulation updates the UI correctly\n if (this._input) {\n this._input.value = String(value);\n }\n }\n blur(): void {\n if (this._input) {\n this._input.blur()\n }\n }\n focus(options?: FocusOptions): void {\n if (this._input) {\n //Sometimes the input will get auto focused after a modal closes but the cursor isn't set. we need to blur then refocus to get the cursor\n this._input.blur()\n this._input.focus(options)\n }\n }\n setSelectionRange(start: number, end: number, direction: \"forward\" | \"backward\" | \"none\" = \"none\") {\n if (!this._input) {\n return\n }\n this._input.setSelectionRange(start, end, direction)\n }\n /**\n * Handles `oninput` event on the `<input>`.\n */\n protected _handleInput = ({ target }: Event) => {\n const input = (target as HTMLInputElement)\n this.value = input.value;\n this.invalid = !input.validity.valid\n }\n /**\n * The underlying input element\n */\n @query('input')\n protected _input?: HTMLInputElement;\n\n private handleTogglePasswordVisibility = () => {\n this._showPassword = !this._showPassword;\n this.requestUpdate()\n }\n protected updated(changedProperties: PropertyValues): void {\n if (changedProperties.has(\"checked\")) {\n this.dispatchEvent(new Event(\"change\", { bubbles: true }))\n }\n }\n protected render(): unknown {\n switch (this.variant) {\n case InputVariants.Text:\n case InputVariants.password:\n case InputVariants.number:\n //case InputVariants.checkbox:\n case InputVariants.email:\n //cases below should be replaces with a custom input for uniformity across browsers\n case InputVariants.date://replace with custom date picker \n case InputVariants.datetime://replace with custom date picker \n case InputVariants.file://replace with drag and drop location and custom select file button\n case InputVariants.color: //replace with custom color picker\n return html`\n <div class=\"inputWrapper\">\n <div class=\"text-input__label-helper-wrapper\">\n <div class=\"--text-input__label-wrapper\">\n ${this.label} ${this.maxCount > 0 && this._value ? `${(this._value as String).length}/${this.maxCount}` : null}\n </div> \n </div>\n <div class=\"fieldwrapper\">\n <div ?data-invalid=\"${this.invalid}\" class=\"inputContainer\">\n <input\n ?data-invalid=\"${this.invalid}\"\n ?disabled=\"${this.disabled}\"\n aria-describedby=\"helper-text\"\n id=\"input\"\n name=\"${ifNonEmpty(this.name)}\"\n pattern=\"${ifNonEmpty(this.pattern)}\"\n placeholder=\"${ifNonEmpty(this.placeholder)}\"\n autocomplete=\"${ifNonEmpty(this.autocomplete)}\"\n ?readonly=\"${this.readonly}\"\n ?required=\"${this.required}\"\n type=\"${ifNonEmpty(\n this.variant !== InputVariants.password ?\n this.variant :\n this._showPassword ? InputVariants.Text : InputVariants.password)}\"\n .value=\"${this._value as string}\"\n maxlength=\"${ifNonEmpty(this.maxCount > 0 ? this.maxCount : undefined)}\"\n @input=\"${this._handleInput}\" \n @change=${() => {\n this.dispatchEvent(new Event(\"change\", { bubbles: true }))\n }}\n />\n \n ${this.variant === String(InputVariants.password) && this.showPasswordVisibilityToggle\n ? html`\n <spectric-button\n size=\"small\"\n type=\"button\"\n ?disabled=\"${this.disabled}\"\n @click=${this.handleTogglePasswordVisibility}>\n ${this._showPassword ? this.hidePasswordLabel : this.showPasswordLabel}\n </spectric-button>\n `\n : null}\n </div>\n <div\n id=\"helper-text\"\n >\n <slot name=\"helper-text\"> ${this.invalid ? this.invalidText : this.helperText} </slot>\n </div>\n\n </div>\n </div>\n `;\n\n case InputVariants.hidden:\n return html`<input type=\"hidden\"></input>`\n\n case InputVariants.checkbox:\n\n return html`\n <div class=\"checkbox\">\n <spectric-button @click=${() => {\n this.checked = !this.checked;\n this.value = Boolean(this.checked);\n }} icon size=${this.size || \"xxsmall\"} variant=${this.checked ? \"primary\" : \"secondary\"}>${this.checked ? '✓' : \"\\u00A0\"}</spectric-button>\n ${this.invalid || this.helperText ? html`<spectric-tooltip text=${this.invalid || this.helperText}></spectric-tooltip>` : null}\n ${this.label}\n </div>\n </label>\n `\n default:\n break;\n }\n return `Not yet implemented ${this.variant}`\n }\n}\n\n\n\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"spectric-input\": SpectricInput\n }\n namespace JSX {\n interface IntrinsicElements {\n /**\n * {@link SpectricInput}\n */\n \"spectric-input\": ReactElementWithPropsAndEvents<SpectricInput, InputProps>\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * {@link SpectricInput}\n */\n \"spectric-input\": ReactElementWithPropsAndEvents<SpectricInput, InputProps>;\n }\n }\n }\n}\n\n\nconst ifNonEmpty = (value: any) =>\n ifDefined(value === '' ? undefined : (value ?? undefined));","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\n\n\n\nconst endOfInputText = 'end of input';\n\nconst grammarRuleTranslations: Record<string, string> = {\n fieldName: 'field name',\n value: 'value',\n literal: 'literal',\n whitespace: 'whitespace',\n};\n\ninterface DQLSyntaxErrorData extends Error {\n found: string;\n expected: DQLSyntaxErrorExpected[] | null;\n location: any;\n}\n\ninterface DQLSyntaxErrorExpected {\n description: string;\n}\n\nexport class DQLSyntaxError extends Error {\n shortMessage: string;\n\n constructor(error: DQLSyntaxErrorData, expression: any) {\n let message = error.message;\n if (error.expected) {\n const translatedExpectations = error.expected.map((expected) => {\n return grammarRuleTranslations[expected.description] || expected.description;\n });\n\n const translatedExpectationText = translatedExpectations.join(', ');\n let foundInput = error.found ? `\"${error.found}\"` : endOfInputText;\n message = `Expected ${translatedExpectationText} but ${foundInput} found.`\n }\n\n const fullMessage = [message, expression, '-'.repeat(error.location.start.offset) + '^'].join(\n '\\n'\n );\n\n super(fullMessage);\n this.name = 'DQLSyntaxError';\n this.shortMessage = message;\n }\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { LiteralTypeBuildNode } from './types';\n\nexport function buildNode(value: LiteralTypeBuildNode['value']): LiteralTypeBuildNode {\n return {\n type: 'literal',\n value,\n };\n}\n\nexport function toOpenSearchQuery(node: LiteralTypeBuildNode): LiteralTypeBuildNode['value'] {\n return node.value;\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\nexport const {\n SyntaxError,\n parse\n} = (function () {\n \"use strict\";\n\n /*\n * Generated by PEG.js 0.9.0.\n *\n * http://pegjs.org/\n */\n\n function peg$subclass(child, parent) {\n function ctor() { this.constructor = child; }\n ctor.prototype = parent.prototype;\n child.prototype = new ctor();\n }\n\n function peg$SyntaxError(message, expected, found, location) {\n this.message = message;\n this.expected = expected;\n this.found = found;\n this.location = location;\n this.name = \"SyntaxError\";\n\n if (typeof Error.captureStackTrace === \"function\") {\n Error.captureStackTrace(this, peg$SyntaxError);\n }\n }\n\n peg$subclass(peg$SyntaxError, Error);\n\n function peg$parse(input) {\n var options = arguments.length > 1 ? arguments[1] : {},\n parser = this,\n\n peg$FAILED = {},\n\n peg$startRuleFunctions = { start: peg$parsestart, Literal: peg$parseLiteral },\n peg$startRuleFunction = peg$parsestart,\n\n peg$c0 = function (query, trailing) {\n if (trailing.type === 'cursor') {\n return {\n ...trailing,\n suggestionTypes: ['conjunction']\n };\n }\n if (query !== null) return query;\n return nodeTypes.function.buildNode('is', '*', '*');\n },\n peg$c1 = function () { return errorOnLuceneSyntax; },\n peg$c2 = function (left, right) {\n const cursor = [left, right].find(node => node.type === 'cursor');\n if (cursor) return cursor;\n return buildFunctionNode('or', [left, right]);\n },\n peg$c3 = function (left, right) {\n const cursor = [left, right].find(node => node.type === 'cursor');\n if (cursor) return cursor;\n return buildFunctionNode('and', [left, right]);\n },\n peg$c4 = function (query) {\n if (query.type === 'cursor') return query;\n return buildFunctionNode('not', [query]);\n },\n peg$c5 = \"(\",\n peg$c6 = { type: \"literal\", value: \"(\", description: \"\\\"(\\\"\" },\n peg$c7 = \")\",\n peg$c8 = { type: \"literal\", value: \")\", description: \"\\\")\\\"\" },\n peg$c9 = function (query, trailing) {\n if (trailing.type === 'cursor') {\n return {\n ...trailing,\n suggestionTypes: ['conjunction']\n };\n }\n return query;\n },\n peg$c10 = \":\",\n peg$c11 = { type: \"literal\", value: \":\", description: \"\\\":\\\"\" },\n peg$c12 = \"{\",\n peg$c13 = { type: \"literal\", value: \"{\", description: \"\\\"{\\\"\" },\n peg$c14 = \"}\",\n peg$c15 = { type: \"literal\", value: \"}\", description: \"\\\"}\\\"\" },\n peg$c16 = function (field, query, trailing) {\n if (query.type === 'cursor') {\n return {\n ...query,\n nestedPath: query.nestedPath ? `${field.value}.${query.nestedPath}` : field.value,\n }\n };\n\n if (trailing.type === 'cursor') {\n return {\n ...trailing,\n suggestionTypes: ['conjunction']\n };\n }\n return buildFunctionNode('nested', [field, query]);\n },\n peg$c17 = { type: \"other\", description: \"fieldName\" },\n peg$c18 = function (field, operator, value) {\n if (value.type === 'cursor') {\n return {\n ...value,\n suggestionTypes: ['conjunction']\n };\n }\n const range = buildNamedArgNode(operator, value);\n return buildFunctionNode('range', [field, range]);\n },\n peg$c19 = function (field, partial) {\n if (partial.type === 'cursor') {\n return {\n ...partial,\n fieldName: field.value,\n suggestionTypes: ['value', 'conjunction']\n };\n }\n return partial(field);\n },\n peg$c20 = function (partial) {\n if (partial.type === 'cursor') {\n const fieldName = `${partial.prefix}${partial.suffix}`.trim();\n return {\n ...partial,\n fieldName,\n suggestionTypes: ['field', 'operator', 'conjunction']\n };\n }\n const field = buildLiteralNode(null);\n return partial(field);\n },\n peg$c21 = function (partial, trailing) {\n if (trailing.type === 'cursor') {\n return {\n ...trailing,\n suggestionTypes: ['conjunction']\n };\n }\n return partial;\n },\n peg$c22 = function (partialLeft, partialRight) {\n const cursor = [partialLeft, partialRight].find(node => node.type === 'cursor');\n if (cursor) {\n return {\n ...cursor,\n suggestionTypes: ['value']\n };\n }\n return (field) => buildFunctionNode('or', [partialLeft(field), partialRight(field)]);\n },\n peg$c23 = function (partialLeft, partialRight) {\n const cursor = [partialLeft, partialRight].find(node => node.type === 'cursor');\n if (cursor) {\n return {\n ...cursor,\n suggestionTypes: ['value']\n };\n }\n return (field) => buildFunctionNode('and', [partialLeft(field), partialRight(field)]);\n },\n peg$c24 = function (partial) {\n if (partial.type === 'cursor') {\n return {\n ...list,\n suggestionTypes: ['value']\n };\n }\n return (field) => buildFunctionNode('not', [partial(field)]);\n },\n peg$c25 = { type: \"other\", description: \"value\" },\n peg$c26 = function (value) {\n if (value.type === 'cursor') return value;\n const isPhrase = buildLiteralNode(true);\n return (field) => buildFunctionNode('is', [field, value, isPhrase]);\n },\n peg$c27 = function (value) {\n if (value.type === 'cursor') return value;\n\n if (!allowLeadingWildcards && value.type === 'wildcard' && nodeTypes.wildcard.hasLeadingWildcard(value)) {\n error('Leading wildcards are disabled. See query:allowLeadingWildcards in Advanced Settings.');\n }\n\n const isPhrase = buildLiteralNode(false);\n return (field) => buildFunctionNode('is', [field, value, isPhrase]);\n },\n peg$c28 = { type: \"other\", description: \"OR\" },\n peg$c29 = \"or\",\n peg$c30 = { type: \"literal\", value: \"or\", description: \"\\\"or\\\"\" },\n peg$c31 = { type: \"other\", description: \"AND\" },\n peg$c32 = \"and\",\n peg$c33 = { type: \"literal\", value: \"and\", description: \"\\\"and\\\"\" },\n peg$c34 = { type: \"other\", description: \"NOT\" },\n peg$c35 = \"not\",\n peg$c36 = { type: \"literal\", value: \"not\", description: \"\\\"not\\\"\" },\n peg$c37 = { type: \"other\", description: \"literal\" },\n peg$c38 = \"\\\"\",\n peg$c39 = { type: \"literal\", value: \"\\\"\", description: \"\\\"\\\\\\\"\\\"\" },\n peg$c40 = function (prefix, cursor, suffix) {\n const { start, end } = location();\n return {\n type: 'cursor',\n start: start.offset,\n end: end.offset - cursor.length,\n prefix: prefix.join(''),\n suffix: suffix.join(''),\n text: text().replace(cursor, '')\n };\n },\n peg$c41 = function (chars) {\n return buildLiteralNode(chars.join(''));\n },\n peg$c42 = \"\\\\\",\n peg$c43 = { type: \"literal\", value: \"\\\\\", description: \"\\\"\\\\\\\\\\\"\" },\n peg$c44 = /^[\\\\\"]/,\n peg$c45 = { type: \"class\", value: \"[\\\\\\\\\\\"]\", description: \"[\\\\\\\\\\\"]\" },\n peg$c46 = function (char) { return char; },\n peg$c47 = /^[^\"]/,\n peg$c48 = { type: \"class\", value: \"[^\\\"]\", description: \"[^\\\"]\" },\n peg$c49 = function (chars) {\n const sequence = chars.join('').trim();\n if (sequence === 'null') return buildLiteralNode(null);\n if (sequence === 'true') return buildLiteralNode(true);\n if (sequence === 'false') return buildLiteralNode(false);\n if (chars.includes(wildcardSymbol)) return buildWildcardNode(sequence);\n const isNumberPattern = /^(-?[1-9]+\\d*([.]\\d+)?)$|^(-?0[.]\\d*[1-9]+)$|^0$|^0.0$|^[.]\\d{1,}$/;\n return buildLiteralNode(\n isNumberPattern.test(sequence)\n ? isFinite(sequence) && (sequence > Number.MAX_SAFE_INTEGER || sequence < Number.MIN_SAFE_INTEGER)\n ? BigInt(sequence)\n : Number(sequence)\n : sequence\n );\n },\n peg$c50 = { type: \"any\", description: \"any character\" },\n peg$c51 = \"*\",\n peg$c52 = { type: \"literal\", value: \"*\", description: \"\\\"*\\\"\" },\n peg$c53 = function () { return wildcardSymbol; },\n peg$c54 = \"\\\\t\",\n peg$c55 = { type: \"literal\", value: \"\\\\t\", description: \"\\\"\\\\\\\\t\\\"\" },\n peg$c56 = function () { return '\\t'; },\n peg$c57 = \"\\\\r\",\n peg$c58 = { type: \"literal\", value: \"\\\\r\", description: \"\\\"\\\\\\\\r\\\"\" },\n peg$c59 = function () { return '\\r'; },\n peg$c60 = \"\\\\n\",\n peg$c61 = { type: \"literal\", value: \"\\\\n\", description: \"\\\"\\\\\\\\n\\\"\" },\n peg$c62 = function () { return '\\n'; },\n peg$c63 = function (keyword) { return keyword; },\n peg$c64 = /^[\\\\():<>\"*{}]/,\n peg$c65 = { type: \"class\", value: \"[\\\\\\\\():<>\\\"*{}]\", description: \"[\\\\\\\\():<>\\\"*{}]\" },\n peg$c66 = \"<=\",\n peg$c67 = { type: \"literal\", value: \"<=\", description: \"\\\"<=\\\"\" },\n peg$c68 = function () { return 'lte'; },\n peg$c69 = \">=\",\n peg$c70 = { type: \"literal\", value: \">=\", description: \"\\\">=\\\"\" },\n peg$c71 = function () { return 'gte'; },\n peg$c72 = \"<\",\n peg$c73 = { type: \"literal\", value: \"<\", description: \"\\\"<\\\"\" },\n peg$c74 = function () { return 'lt'; },\n peg$c75 = \">\",\n peg$c76 = { type: \"literal\", value: \">\", description: \"\\\">\\\"\" },\n peg$c77 = function () { return 'gt'; },\n peg$c78 = { type: \"other\", description: \"whitespace\" },\n peg$c79 = /^[ \\t\\r\\n]/,\n peg$c80 = { type: \"class\", value: \"[\\\\ \\\\t\\\\r\\\\n]\", description: \"[\\\\ \\\\t\\\\r\\\\n]\" },\n peg$c81 = function () { return parseCursor; },\n peg$c82 = \"@kuery-cursor@\",\n peg$c83 = { type: \"literal\", value: \"@kuery-cursor@\", description: \"\\\"@kuery-cursor@\\\"\" },\n peg$c84 = function () { return cursorSymbol; },\n peg$c85 = \"||\",\n peg$c86 = { type: \"literal\", value: \"||\", description: \"\\\"||\\\"\" },\n peg$c87 = function () {\n error('LuceneOr');\n },\n peg$c88 = \"&&\",\n peg$c89 = { type: \"literal\", value: \"&&\", description: \"\\\"&&\\\"\" },\n peg$c90 = function () {\n error('LuceneAnd');\n },\n peg$c91 = \"+\",\n peg$c92 = { type: \"literal\", value: \"+\", description: \"\\\"+\\\"\" },\n peg$c93 = \"-\",\n peg$c94 = { type: \"literal\", value: \"-\", description: \"\\\"-\\\"\" },\n peg$c95 = function () {\n error('LuceneNot');\n },\n peg$c96 = \"!\",\n peg$c97 = { type: \"literal\", value: \"!\", description: \"\\\"!\\\"\" },\n peg$c98 = \"_exists_\",\n peg$c99 = { type: \"literal\", value: \"_exists_\", description: \"\\\"_exists_\\\"\" },\n peg$c100 = function () {\n error('LuceneExists');\n },\n peg$c101 = function () {\n error('LuceneRange');\n },\n peg$c102 = \"?\",\n peg$c103 = { type: \"literal\", value: \"?\", description: \"\\\"?\\\"\" },\n peg$c104 = function () {\n error('LuceneWildcard');\n },\n peg$c105 = \"/\",\n peg$c106 = { type: \"literal\", value: \"/\", description: \"\\\"/\\\"\" },\n peg$c107 = /^[^\\/]/,\n peg$c108 = { type: \"class\", value: \"[^/]\", description: \"[^/]\" },\n peg$c109 = function () {\n error('LuceneRegex');\n },\n peg$c110 = \"~\",\n peg$c111 = { type: \"literal\", value: \"~\", description: \"\\\"~\\\"\" },\n peg$c112 = /^[0-9]/,\n peg$c113 = { type: \"class\", value: \"[0-9]\", description: \"[0-9]\" },\n peg$c114 = function () {\n error('LuceneFuzzy');\n },\n peg$c115 = function () {\n error('LuceneProximity');\n },\n peg$c116 = \"^\",\n peg$c117 = { type: \"literal\", value: \"^\", description: \"\\\"^\\\"\" },\n peg$c118 = function () {\n error('LuceneBoost');\n },\n peg$c119 = function () { return char; },\n peg$c120 = \"=\",\n peg$c121 = { type: \"literal\", value: \"=\", description: \"\\\"=\\\"\" },\n peg$c122 = \"[\",\n peg$c123 = { type: \"literal\", value: \"[\", description: \"\\\"[\\\"\" },\n peg$c124 = \"]\",\n peg$c125 = { type: \"literal\", value: \"]\", description: \"\\\"]\\\"\" },\n peg$c126 = \"TO\",\n peg$c127 = { type: \"literal\", value: \"TO\", description: \"\\\"TO\\\"\" },\n\n peg$currPos = 0,\n peg$savedPos = 0,\n peg$posDetailsCache = [{ line: 1, column: 1, seenCR: false }],\n peg$maxFailPos = 0,\n peg$maxFailExpected = [],\n peg$silentFails = 0,\n\n peg$result;\n\n if (\"startRule\" in options) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n }\n\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n\n function text() {\n return input.substring(peg$savedPos, peg$currPos);\n }\n\n function location() {\n return peg$computeLocation(peg$savedPos, peg$currPos);\n }\n\n function expected(description) {\n throw peg$buildException(\n null,\n [{ type: \"other\", description: description }],\n input.substring(peg$savedPos, peg$currPos),\n peg$computeLocation(peg$savedPos, peg$currPos)\n );\n }\n\n function error(message) {\n throw peg$buildException(\n message,\n null,\n input.substring(peg$savedPos, peg$currPos),\n peg$computeLocation(peg$savedPos, peg$currPos)\n );\n }\n\n function peg$computePosDetails(pos) {\n var details = peg$posDetailsCache[pos],\n p, ch;\n\n if (details) {\n return details;\n } else {\n p = pos - 1;\n while (!peg$posDetailsCache[p]) {\n p--;\n }\n\n details = peg$posDetailsCache[p];\n details = {\n line: details.line,\n column: details.column,\n seenCR: details.seenCR\n };\n\n while (p < pos) {\n ch = input.charAt(p);\n if (ch === \"\\n\") {\n if (!details.seenCR) { details.line++; }\n details.column = 1;\n details.seenCR = false;\n } else if (ch === \"\\r\" || ch === \"\\u2028\" || ch === \"\\u2029\") {\n details.line++;\n details.column = 1;\n details.seenCR = true;\n } else {\n details.column++;\n details.seenCR = false;\n }\n\n p++;\n }\n\n peg$posDetailsCache[pos] = details;\n return details;\n }\n }\n\n function peg$computeLocation(startPos, endPos) {\n var startPosDetails = peg$computePosDetails(startPos),\n endPosDetails = peg$computePosDetails(endPos);\n\n return {\n start: {\n offset: startPos,\n line: startPosDetails.line,\n column: startPosDetails.column\n },\n end: {\n offset: endPos,\n line: endPosDetails.line,\n column: endPosDetails.column\n }\n };\n }\n\n function peg$fail(expected) {\n if (peg$currPos < peg$maxFailPos) { return; }\n\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n\n peg$maxFailExpected.push(expected);\n }\n\n function peg$buildException(message, expected, found, location) {\n function cleanupExpected(expected) {\n var i = 1;\n\n expected.sort(function (a, b) {\n if (a.description < b.description) {\n return -1;\n } else if (a.description > b.description) {\n return 1;\n } else {\n return 0;\n }\n });\n\n while (i < expected.length) {\n if (expected[i - 1] === expected[i]) {\n expected.splice(i, 1);\n } else {\n i++;\n }\n }\n }\n\n function buildMessage(expected, found) {\n function stringEscape(s) {\n function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); }\n\n return s\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\x08/g, '\\\\b')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\f/g, '\\\\f')\n .replace(/\\r/g, '\\\\r')\n .replace(/[\\x00-\\x07\\x0B\\x0E\\x0F]/g, function (ch) { return '\\\\x0' + hex(ch); })\n .replace(/[\\x10-\\x1F\\x80-\\xFF]/g, function (ch) { return '\\\\x' + hex(ch); })\n .replace(/[\\u0100-\\u0FFF]/g, function (ch) { return '\\\\u0' + hex(ch); })\n .replace(/[\\u1000-\\uFFFF]/g, function (ch) { return '\\\\u' + hex(ch); });\n }\n\n var expectedDescs = new Array(expected.length),\n expectedDesc, foundDesc, i;\n\n for (i = 0; i < expected.length; i++) {\n expectedDescs[i] = expected[i].description;\n }\n\n expectedDesc = expected.length > 1\n ? expectedDescs.slice(0, -1).join(\", \")\n + \" or \"\n + expectedDescs[expected.length - 1]\n : expectedDescs[0];\n\n foundDesc = found ? \"\\\"\" + stringEscape(found) + \"\\\"\" : \"end of input\";\n\n return \"Expected \" + expectedDesc + \" but \" + foundDesc + \" found.\";\n }\n\n if (expected !== null) {\n cleanupExpected(expected);\n }\n\n return new peg$SyntaxError(\n message !== null ? message : buildMessage(expected, found),\n expected,\n found,\n location\n );\n }\n\n function peg$parsestart() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseSpace();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseSpace();\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseOrQuery();\n if (s2 === peg$FAILED) {\n s2 = null;\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parseOptionalSpace();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c0(s2, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseOrQuery() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n peg$savedPos = peg$currPos;\n s1 = peg$c1();\n if (s1) {\n s1 = void 0;\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseLuceneQuery();\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseAndQuery();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseOr();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseOrQuery();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c2(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parseAndQuery();\n }\n }\n\n return s0;\n }\n\n function peg$parseAndQuery() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseNotQuery();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseAnd();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseAndQuery();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c3(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parseNotQuery();\n }\n\n return s0;\n }\n\n function peg$parseNotQuery() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = peg$parseNot();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseSubQuery();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c4(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parseSubQuery();\n }\n\n return s0;\n }\n\n function peg$parseSubQuery() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 40) {\n s1 = peg$c5;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c6); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseSpace();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseSpace();\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parseOrQuery();\n if (s3 !== peg$FAILED) {\n s4 = peg$parseOptionalSpace();\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 41) {\n s5 = peg$c7;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c9(s3, s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parseNestedQuery();\n }\n\n return s0;\n }\n\n function peg$parseNestedQuery() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;\n\n s0 = peg$currPos;\n s1 = peg$parseField();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseSpace();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseSpace();\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s3 = peg$c10;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c11); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parseSpace();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parseSpace();\n }\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 123) {\n s5 = peg$c12;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c13); }\n }\n if (s5 !== peg$FAILED) {\n s6 = [];\n s7 = peg$parseSpace();\n while (s7 !== peg$FAILED) {\n s6.push(s7);\n s7 = peg$parseSpace();\n }\n if (s6 !== peg$FAILED) {\n s7 = peg$parseOrQuery();\n if (s7 !== peg$FAILED) {\n s8 = peg$parseOptionalSpace();\n if (s8 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s9 = peg$c14;\n peg$currPos++;\n } else {\n s9 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c15); }\n }\n if (s9 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c16(s1, s7, s8);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parseExpression();\n }\n\n return s0;\n }\n\n function peg$parseExpression() {\n var s0;\n\n s0 = peg$parseFieldRangeExpression();\n if (s0 === peg$FAILED) {\n s0 = peg$parseFieldValueExpression();\n if (s0 === peg$FAILED) {\n s0 = peg$parseValueExpression();\n }\n }\n\n return s0;\n }\n\n function peg$parseField() {\n var s0, s1;\n\n peg$silentFails++;\n s0 = peg$parseLiteral();\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c17); }\n }\n\n return s0;\n }\n\n function peg$parseFieldRangeExpression() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parseField();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseSpace();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseSpace();\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parseRangeOperator();\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parseSpace();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parseSpace();\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parseLiteral();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c18(s1, s3, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseFieldValueExpression() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parseField();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseSpace();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseSpace();\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s3 = peg$c10;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c11); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parseSpace();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parseSpace();\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parseListOfValues();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c19(s1, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseValueExpression() {\n var s0, s1;\n\n s0 = peg$currPos;\n s1 = peg$parseValue();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c20(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseListOfValues() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 40) {\n s1 = peg$c5;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c6); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseSpace();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseSpace();\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parseOrListOfValues();\n if (s3 !== peg$FAILED) {\n s4 = peg$parseOptionalSpace();\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 41) {\n s5 = peg$c7;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c21(s3, s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parseValue();\n }\n\n return s0;\n }\n\n function peg$parseOrListOfValues() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseAndListOfValues();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseOr();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseOrListOfValues();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c22(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parseAndListOfValues();\n }\n\n return s0;\n }\n\n function peg$parseAndListOfValues() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseNotListOfValues();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseAnd();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseAndListOfValues();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c23(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parseNotListOfValues();\n }\n\n return s0;\n }\n\n function peg$parseNotListOfValues() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = peg$parseNot();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseListOfValues();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c24(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parseListOfValues();\n }\n\n return s0;\n }\n\n function peg$parseValue() {\n var s0, s1;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = peg$parseQuotedString();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c26(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseUnquotedLiteral();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c27(s1);\n }\n s0 = s1;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c25); }\n }\n\n return s0;\n }\n\n function peg$parseOr() {\n var s0, s1, s2, s3, s4;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseSpace();\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseSpace();\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n if (input.substr(peg$currPos, 2).toLowerCase() === peg$c29) {\n s2 = input.substr(peg$currPos, 2);\n peg$currPos += 2;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c30); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseSpace();\n if (s4 !== peg$FAILED) {\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseSpace();\n }\n } else {\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n s1 = [s1, s2, s3];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n peg$savedPos = peg$currPos;\n s1 = peg$c1();\n if (s1) {\n s1 = void 0;\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseLuceneOr();\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c28); }\n }\n\n return s0;\n }\n\n function peg$parseAnd() {\n var s0, s1, s2, s3, s4;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseSpace();\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseSpace();\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n if (input.substr(peg$currPos, 3).toLowerCase() === peg$c32) {\n s2 = input.substr(peg$currPos, 3);\n peg$currPos += 3;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c33); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseSpace();\n if (s4 !== peg$FAILED) {\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseSpace();\n }\n } else {\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n s1 = [s1, s2, s3];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n peg$savedPos = peg$currPos;\n s1 = peg$c1();\n if (s1) {\n s1 = void 0;\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseLuceneAnd();\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c31); }\n }\n\n return s0;\n }\n\n function peg$parseNot() {\n var s0, s1, s2, s3;\n\n peg$silentFails++;\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 3).toLowerCase() === peg$c35) {\n s1 = input.substr(peg$currPos, 3);\n peg$currPos += 3;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c36); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseSpace();\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseSpace();\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n peg$savedPos = peg$currPos;\n s1 = peg$c1();\n if (s1) {\n s1 = void 0;\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseLuceneNot();\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c34); }\n }\n\n return s0;\n }\n\n function peg$parseLiteral() {\n var s0, s1;\n\n peg$silentFails++;\n s0 = peg$parseQuotedString();\n if (s0 === peg$FAILED) {\n s0 = peg$parseUnquotedLiteral();\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c37); }\n }\n\n return s0;\n }\n\n function peg$parseQuotedString() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 34) {\n s1 = peg$c38;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c39); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseQuotedCharacter();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseQuotedCharacter();\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parseCursor();\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parseQuotedCharacter();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parseQuotedCharacter();\n }\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 34) {\n s5 = peg$c38;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c39); }\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c40(s2, s3, s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 34) {\n s1 = peg$c38;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c39); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseQuotedCharacter();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseQuotedCharacter();\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 34) {\n s3 = peg$c38;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c39); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c41(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parseQuotedCharacter() {\n var s0, s1, s2;\n\n s0 = peg$parseEscapedWhitespace();\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 92) {\n s1 = peg$c42;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c43); }\n }\n if (s1 !== peg$FAILED) {\n if (peg$c44.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c45); }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c46(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$currPos;\n peg$silentFails++;\n s2 = peg$parseCursor();\n peg$silentFails--;\n if (s2 === peg$FAILED) {\n s1 = void 0;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n if (peg$c47.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c48); }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c46(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseUnquotedLiteral() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseUnquotedCharacter();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseUnquotedCharacter();\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseCursor();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseUnquotedCharacter();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseUnquotedCharacter();\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c40(s1, s2, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseUnquotedCharacter();\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseUnquotedCharacter();\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c49(s1);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parseUnquotedCharacter() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$parseEscapedWhitespace();\n if (s0 === peg$FAILED) {\n s0 = peg$parseEscapedSpecialCharacter();\n if (s0 === peg$FAILED) {\n s0 = peg$parseEscapedKeyword();\n if (s0 === peg$FAILED) {\n s0 = peg$parseWildcard();\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$currPos;\n peg$silentFails++;\n s2 = peg$parseSpecialCharacter();\n peg$silentFails--;\n if (s2 === peg$FAILED) {\n s1 = void 0;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseKeyword();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n peg$silentFails++;\n s4 = peg$parseCursor();\n peg$silentFails--;\n if (s4 === peg$FAILED) {\n s3 = void 0;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c50); }\n }\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c46(s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseWildcard() {\n var s0, s1;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 42) {\n s1 = peg$c51;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c52); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c53();\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseOptionalSpace() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseSpace();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseSpace();\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseCursor();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseSpace();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseSpace();\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c40(s1, s2, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = [];\n s1 = peg$parseSpace();\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$parseSpace();\n }\n }\n\n return s0;\n }\n\n function peg$parseEscapedWhitespace() {\n var s0, s1;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c54) {\n s1 = peg$c54;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c55); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c56();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c57) {\n s1 = peg$c57;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c58); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c59();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c60) {\n s1 = peg$c60;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c61); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c62();\n }\n s0 = s1;\n }\n }\n\n return s0;\n }\n\n function peg$parseEscapedSpecialCharacter() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 92) {\n s1 = peg$c42;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c43); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseSpecialCharacter();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c46(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseEscapedKeyword() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 92) {\n s1 = peg$c42;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c43); }\n }\n if (s1 !== peg$FAILED) {\n if (input.substr(peg$currPos, 2).toLowerCase() === peg$c29) {\n s2 = input.substr(peg$currPos, 2);\n peg$currPos += 2;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c30); }\n }\n if (s2 === peg$FAILED) {\n if (input.substr(peg$currPos, 3).toLowerCase() === peg$c32) {\n s2 = input.substr(peg$currPos, 3);\n peg$currPos += 3;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c33); }\n }\n if (s2 === peg$FAILED) {\n if (input.substr(peg$currPos, 3).toLowerCase() === peg$c35) {\n s2 = input.substr(peg$currPos, 3);\n peg$currPos += 3;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c36); }\n }\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c63(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKeyword() {\n var s0;\n\n s0 = peg$parseOr();\n if (s0 === peg$FAILED) {\n s0 = peg$parseAnd();\n if (s0 === peg$FAILED) {\n s0 = peg$parseNot();\n }\n }\n\n return s0;\n }\n\n function peg$parseSpecialCharacter() {\n var s0;\n\n if (peg$c64.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c65); }\n }\n\n return s0;\n }\n\n function peg$parseRangeOperator() {\n var s0, s1;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c66) {\n s1 = peg$c66;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c67); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c68();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c69) {\n s1 = peg$c69;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c70); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c71();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 60) {\n s1 = peg$c72;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c73); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c74();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 62) {\n s1 = peg$c75;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c76); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c77();\n }\n s0 = s1;\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseSpace() {\n var s0, s1;\n\n peg$silentFails++;\n if (peg$c79.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c80); }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c78); }\n }\n\n return s0;\n }\n\n function peg$parseCursor() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n peg$savedPos = peg$currPos;\n s1 = peg$c81();\n if (s1) {\n s1 = void 0;\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n if (input.substr(peg$currPos, 14) === peg$c82) {\n s2 = peg$c82;\n peg$currPos += 14;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c83); }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c84();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseLuceneOr() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseSpace();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseSpace();\n }\n if (s1 !== peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c85) {\n s2 = peg$c85;\n peg$currPos += 2;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c86); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseSpace();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseSpace();\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c87();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseLuceneAnd() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseSpace();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseSpace();\n }\n if (s1 !== peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c88) {\n s2 = peg$c88;\n peg$currPos += 2;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c89); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseSpace();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseSpace();\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c90();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 43) {\n s1 = peg$c91;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c92); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c90();\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parseLuceneNot() {\n var s0, s1;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 45) {\n s1 = peg$c93;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c94); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c95();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 33) {\n s1 = peg$c96;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c97); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c95();\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parseLuceneQuery() {\n var s0;\n\n s0 = peg$parseLuceneFieldQuery();\n if (s0 === peg$FAILED) {\n s0 = peg$parseLuceneValue();\n if (s0 === peg$FAILED) {\n s0 = peg$parseLuceneExists();\n }\n }\n\n return s0;\n }\n\n function peg$parseLuceneFieldQuery() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parseLuceneLiteral();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseSpace();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseSpace();\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s3 = peg$c10;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c11); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parseSpace();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parseSpace();\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parseLuceneValue();\n if (s5 !== peg$FAILED) {\n s1 = [s1, s2, s3, s4, s5];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseLuceneValue() {\n var s0;\n\n s0 = peg$parseLuceneRange();\n if (s0 === peg$FAILED) {\n s0 = peg$parseLuceneWildcard();\n if (s0 === peg$FAILED) {\n s0 = peg$parseLuceneRegex();\n if (s0 === peg$FAILED) {\n s0 = peg$parseLuceneFuzzy();\n if (s0 === peg$FAILED) {\n s0 = peg$parseLuceneProximity();\n if (s0 === peg$FAILED) {\n s0 = peg$parseLuceneBoost();\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseLuceneExists() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 8) === peg$c98) {\n s1 = peg$c98;\n peg$currPos += 8;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c99); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseSpace();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseSpace();\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s3 = peg$c10;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c11); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parseSpace();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parseSpace();\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parseLuceneLiteral();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c100();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseLuceneRange() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n s1 = peg$parseRangeOperator();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseSpace();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseSpace();\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parseLuceneLiteral();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c101();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseLuceneRangeStart();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseSpace();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseSpace();\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parseLuceneLiteral();\n if (s3 !== peg$FAILED) {\n s4 = peg$parseLuceneTo();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseLuceneLiteral();\n if (s5 !== peg$FAILED) {\n s6 = peg$parseLuceneRangeEnd();\n if (s6 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c101();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parseLuceneWildcard() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseLuceneUnquotedCharacter();\n if (s2 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 42) {\n s2 = peg$c51;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c52); }\n }\n }\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseLuceneUnquotedCharacter();\n if (s2 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 42) {\n s2 = peg$c51;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c52); }\n }\n }\n }\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 63) {\n s2 = peg$c102;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c103); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseLuceneWildcard();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseLuceneWildcard();\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c104();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseLuceneRegex() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 47) {\n s1 = peg$c105;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c106); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n if (peg$c107.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c108); }\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n if (peg$c107.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c108); }\n }\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 47) {\n s3 = peg$c105;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c106); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c109();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseLuceneFuzzy() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$parseLuceneUnquotedLiteral();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 126) {\n s2 = peg$c110;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c111); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n if (peg$c112.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c113); }\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n if (peg$c112.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c113); }\n }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c114();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseLuceneProximity() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$parseQuotedString();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 126) {\n s2 = peg$c110;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c111); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n if (peg$c112.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c113); }\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n if (peg$c112.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c113); }\n }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c115();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseLuceneBoost() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$parseLuceneLiteral();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 94) {\n s2 = peg$c116;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c117); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n if (peg$c112.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c113); }\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n if (peg$c112.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c113); }\n }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c118();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseLuceneLiteral() {\n var s0;\n\n s0 = peg$parseQuotedString();\n if (s0 === peg$FAILED) {\n s0 = peg$parseLuceneUnquotedLiteral();\n }\n\n return s0;\n }\n\n function peg$parseLuceneUnquotedLiteral() {\n var s0, s1;\n\n s0 = [];\n s1 = peg$parseLuceneUnquotedCharacter();\n if (s1 !== peg$FAILED) {\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$parseLuceneUnquotedCharacter();\n }\n } else {\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseLuceneUnquotedCharacter() {\n var s0, s1, s2, s3;\n\n s0 = peg$parseEscapedWhitespace();\n if (s0 === peg$FAILED) {\n s0 = peg$parseEscapedLuceneSpecialCharacter();\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$currPos;\n peg$silentFails++;\n s2 = peg$parseLuceneSpecialCharacter();\n peg$silentFails--;\n if (s2 === peg$FAILED) {\n s1 = void 0;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseLuceneKeyword();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c50); }\n }\n if (s3 !== peg$FAILED) {\n s1 = [s1, s2, s3];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseLuceneKeyword() {\n var s0;\n\n s0 = peg$parseOr();\n if (s0 === peg$FAILED) {\n s0 = peg$parseAnd();\n if (s0 === peg$FAILED) {\n s0 = peg$parseLuceneOr();\n if (s0 === peg$FAILED) {\n s0 = peg$parseLuceneAnd();\n if (s0 === peg$FAILED) {\n s0 = peg$parseLuceneNot();\n if (s0 === peg$FAILED) {\n s0 = peg$parseLuceneTo();\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseEscapedLuceneSpecialCharacter() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 92) {\n s1 = peg$c42;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c43); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseLuceneSpecialCharacter();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c119();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseLuceneSpecialCharacter() {\n var s0;\n\n if (input.charCodeAt(peg$currPos) === 43) {\n s0 = peg$c91;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c92); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 45) {\n s0 = peg$c93;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c94); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 61) {\n s0 = peg$c120;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c121); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 62) {\n s0 = peg$c75;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c76); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 60) {\n s0 = peg$c72;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c73); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 33) {\n s0 = peg$c96;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c97); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 40) {\n s0 = peg$c5;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c6); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 41) {\n s0 = peg$c7;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 123) {\n s0 = peg$c12;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c13); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s0 = peg$c14;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c15); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 91) {\n s0 = peg$c122;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c123); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 93) {\n s0 = peg$c124;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c125); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 94) {\n s0 = peg$c116;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c117); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 34) {\n s0 = peg$c38;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c39); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 126) {\n s0 = peg$c110;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c111); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 42) {\n s0 = peg$c51;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c52); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 63) {\n s0 = peg$c102;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c103); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s0 = peg$c10;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c11); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 92) {\n s0 = peg$c42;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c43); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 47) {\n s0 = peg$c105;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c106); }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseLuceneTo() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseSpace();\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseSpace();\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c126) {\n s2 = peg$c126;\n peg$currPos += 2;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c127); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseSpace();\n if (s4 !== peg$FAILED) {\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseSpace();\n }\n } else {\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n s1 = [s1, s2, s3];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseLuceneRangeStart() {\n var s0;\n\n if (input.charCodeAt(peg$currPos) === 91) {\n s0 = peg$c122;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c123); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 123) {\n s0 = peg$c12;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c13); }\n }\n }\n\n return s0;\n }\n\n function peg$parseLuceneRangeEnd() {\n var s0;\n\n if (input.charCodeAt(peg$currPos) === 93) {\n s0 = peg$c124;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c125); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s0 = peg$c14;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c15); }\n }\n }\n\n return s0;\n }\n\n\n const { errorOnLuceneSyntax, parseCursor, cursorSymbol, allowLeadingWildcards = true, helpers: { nodeTypes } } = options;\n const buildFunctionNode = nodeTypes.function.buildNodeWithArgumentNodes;\n const buildLiteralNode = nodeTypes.literal.buildNode;\n const buildWildcardNode = nodeTypes.wildcard.buildNode;\n const buildNamedArgNode = nodeTypes.namedArg.buildNode;\n const { wildcardSymbol } = nodeTypes.wildcard;\n\n\n peg$result = peg$startRuleFunction();\n\n if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n return peg$result;\n } else {\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n peg$fail({ type: \"end\", description: \"end of input\" });\n }\n\n throw peg$buildException(\n null,\n peg$maxFailExpected,\n peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\n peg$maxFailPos < input.length\n ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n );\n }\n }\n\n return {\n SyntaxError: peg$SyntaxError,\n parse: peg$parse\n };\n})();\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { nodeTypes } from '../node_types/index';\nimport { DQLSyntaxError } from '../kuery_syntax_error';\nimport { KueryNode, DslQuery, KueryParseOptions } from '../types';\n\n\n// @ts-ignore\nimport { parse as parseKuery } from './_generated_/kuery';\nimport { JsonObject, IIndexPattern, FieldTypes } from '../../..';\n\nconst fromExpression = (\n expression: string | DslQuery,\n parseOptions: Partial<KueryParseOptions> = {},\n parse: Function = parseKuery\n): KueryNode => {\n if (typeof expression === 'undefined') {\n throw new Error('expression must be a string, got undefined instead');\n }\n\n return parse(expression, { ...parseOptions, helpers: { nodeTypes } });\n};\n\nexport const fromLiteralExpression = (\n expression: string | DslQuery,\n parseOptions: Partial<KueryParseOptions> = {}\n): KueryNode => {\n return fromExpression(\n expression,\n {\n ...parseOptions,\n startRule: 'Literal',\n },\n parseKuery\n );\n};\n\nexport const fromKueryExpression = (\n expression: string | DslQuery,\n parseOptions: Partial<KueryParseOptions> = {}\n): KueryNode => {\n try {\n return fromExpression(expression, parseOptions, parseKuery);\n } catch (error: any) {\n if (error.name === 'SyntaxError') {\n throw new DQLSyntaxError(error, expression);\n } else {\n throw error;\n }\n }\n};\n\nexport const doesKueryExpressionHaveLuceneSyntaxError = (\n expression: string | DslQuery\n): boolean => {\n try {\n fromExpression(expression, { errorOnLuceneSyntax: true }, parseKuery);\n return false;\n } catch (e: any) {\n return (e).message.startsWith('Lucene');\n }\n};\n\n/**\n * @params {String} indexPattern\n * @params {Object} config - contains the dateFormatTZ\n *\n * IndexPattern isn't required, but if you pass one in, we can be more intelligent\n * about how we craft the queries (e.g. scripted fields)\n */\nexport const toOpenSearchQuery = (\n node: KueryNode,\n indexPattern?: IIndexPattern | FieldTypes[],\n config?: Record<string, any>,\n context?: Record<string, any>\n): JsonObject => {\n indexPattern = undefined; //for now lets just set this to undefined until we can refactor to not need the rest of open search\n if (!node || !node.type || !nodeTypes[node.type]) {\n return toOpenSearchQuery(nodeTypes.function.buildNode('and', []), indexPattern);\n }\n\n const nodeType = (nodeTypes[node.type] as unknown) as any;\n\n return nodeType.toOpenSearchQuery(node, indexPattern, config, context);\n};\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { fromLiteralExpression } from '../ast/ast';\nimport { WildcardTypeBuildNode } from './types';\nimport { KueryNode } from '..';\n\nexport const wildcardSymbol = '@kuery-wildcard@';\n\n// Copied from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions\nfunction escapeRegExp(str: string) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'); // $& means the whole matched string\n}\n\n// See https://opensearch.org/docs/latest/opensearch/query-dsl/term/#regex\nfunction escapeQueryString(str: string) {\n return str.replace(/[+-=&|><!(){}[\\]^\"~*?:\\\\/]/g, '\\\\$&'); // $& means the whole matched string\n}\n\nexport function buildNode(value: string): WildcardTypeBuildNode | KueryNode {\n if (!value.includes(wildcardSymbol)) {\n return fromLiteralExpression(value);\n }\n\n return {\n type: 'wildcard',\n value,\n };\n}\n\nexport function test(node: any, str: string): boolean {\n const { value } = node;\n const regex = value.split(wildcardSymbol).map(escapeRegExp).join('[\\\\s\\\\S]*');\n const regexp = new RegExp(`^${regex}$`);\n return regexp.test(str);\n}\n\nexport function toOpenSearchQuery(node: any): string {\n const { value } = node;\n return value.split(wildcardSymbol).join('*');\n}\n\nexport function toQueryStringQuery(node: any): string {\n const { value } = node;\n return value.split(wildcardSymbol).map(escapeQueryString).join('*');\n}\n\nexport function hasLeadingWildcard(node: any): boolean {\n const { value } = node;\n // A lone wildcard turns into an `exists` query, so we're only concerned with\n // leading wildcards followed by additional characters.\n return value.startsWith(wildcardSymbol) && value.replace(wildcardSymbol, '').length > 0;\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport * as literal from '../../node_types/literal';\nimport * as wildcard from '../../node_types/wildcard';\nimport { KueryNode, IIndexPattern } from '../../../..';\nimport { LiteralTypeBuildNode } from '../../node_types/types';\n\nexport function getFields(node: KueryNode, indexPattern?: IIndexPattern) {\n if (!indexPattern) return [];\n if (node.type === 'literal') {\n const fieldName = literal.toOpenSearchQuery(node as LiteralTypeBuildNode);\n const field = indexPattern.fields.find((fld) => fld.name === fieldName);\n if (!field) {\n return [];\n }\n return [field];\n } else if (node.type === 'wildcard') {\n const fields = indexPattern.fields.filter((fld) => wildcard.test(node, fld.name));\n return fields;\n }\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\n\nexport function getTimeZoneFromSettings(dateFormatTZ: string) {\n\n return dateFormatTZ;//always use zulu\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { getFields } from './get_fields';\nimport { IIndexPattern, KueryNode } from '../../../../types';\n\nexport function getFullFieldNameNode(\n rootNameNode: any,\n indexPattern?: IIndexPattern,\n nestedPath?: string\n): KueryNode {\n const fullFieldNameNode = {\n ...rootNameNode,\n value: nestedPath ? `${nestedPath}.${rootNameNode.value}` : rootNameNode.value,\n };\n\n // Wildcards can easily include nested and non-nested fields. There isn't a good way to let\n // users handle this themselves so we automatically add nested queries in this scenario and skip the\n // error checking below.\n if (!indexPattern || (fullFieldNameNode.type === 'wildcard' && !nestedPath)) {\n return fullFieldNameNode;\n }\n const fields = getFields(fullFieldNameNode, indexPattern);\n\n const errors = fields!.reduce((acc: any, field: any) => {\n const nestedPathFromField =\n field.subType && field.subType.nested ? field.subType.nested.path : undefined;\n\n if (nestedPath && !nestedPathFromField) {\n return [\n ...acc,\n `${field.name} is not a nested field but is in nested group \"${nestedPath}\" in the DQL expression.`,\n ];\n }\n\n if (nestedPathFromField && !nestedPath) {\n return [\n ...acc,\n `${field.name} is a nested field, but is not in a nested group in the DQL expression.`,\n ];\n }\n\n if (nestedPathFromField !== nestedPath) {\n return [\n ...acc,\n `Nested field ${field.name\n } is being queried with the incorrect nested path. The correct path is ${field.subType!.nested!.path\n }.`,\n ];\n }\n\n return acc;\n }, []);\n\n if (errors.length > 0) {\n throw new Error(errors.join('\\n'));\n }\n\n return fullFieldNameNode;\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { getFields } from './utils/get_fields';\nimport { getTimeZoneFromSettings } from '../../utils';\nimport { getFullFieldNameNode } from './utils/get_full_field_name_node';\nimport { IIndexPattern, KueryNode, IFieldType } from '../../..';\n\nimport * as ast from '../ast';\n\nimport * as literal from '../node_types/literal';\nimport * as wildcard from '../node_types/wildcard';\n\nexport function buildNodeParams(fieldName: string, value: any, isPhrase: boolean = false) {\n if (fieldName === undefined) {\n throw new Error('fieldName is a required argument');\n }\n if (value === undefined) {\n throw new Error('value is a required argument');\n }\n const fieldNode =\n typeof fieldName === 'string'\n ? ast.fromLiteralExpression(fieldName)\n : literal.buildNode(fieldName);\n const valueNode =\n typeof value === 'string' ? ast.fromLiteralExpression(value) : literal.buildNode(value);\n const isPhraseNode = literal.buildNode(isPhrase);\n return {\n arguments: [fieldNode, valueNode, isPhraseNode],\n };\n}\n\nexport function toOpenSearchQuery(\n node: KueryNode,\n indexPattern?: IIndexPattern,\n config: Record<string, any> = {},\n context: Record<string, any> = {}\n) {\n const {\n arguments: [fieldNameArg, valueArg, isPhraseArg],\n } = node;\n const fullFieldNameArg = getFullFieldNameNode(\n fieldNameArg,\n indexPattern,\n context?.nested ? context.nested.path : undefined\n );\n const fieldName = ast.toOpenSearchQuery(fullFieldNameArg);\n const value = !(valueArg === undefined) ? ast.toOpenSearchQuery(valueArg) : valueArg;\n const type = isPhraseArg.value ? 'phrase' : 'best_fields';\n if (fullFieldNameArg.value === null) {\n if (valueArg.type === 'wildcard') {\n return {\n query_string: {\n query: wildcard.toQueryStringQuery(valueArg),\n },\n };\n }\n\n return {\n multi_match: {\n type,\n query: value,\n lenient: true,\n },\n };\n }\n\n const fields = indexPattern ? getFields(fullFieldNameArg, indexPattern) : [];\n // If no fields are found in the index pattern we send through the given field name as-is. We do this to preserve\n // the behaviour of lucene on dashboards where there are panels based on different index patterns that have different\n // fields. If a user queries on a field that exists in one pattern but not the other, the index pattern without the\n // field should return no results. It's debatable whether this is desirable, but it's been that way forever, so we'll\n // keep things familiar for now.\n if (fields && fields.length === 0) {\n fields.push({\n name: (ast.toOpenSearchQuery(fullFieldNameArg) as unknown) as string,\n scripted: false,\n type: '',\n });\n }\n\n const isExistsQuery = valueArg.type === 'wildcard' && (value as any) === '*';\n const isAllFieldsQuery =\n (fullFieldNameArg.type === 'wildcard' && ((fieldName as unknown) as string) === '*') ||\n (fields && indexPattern && fields.length === indexPattern.fields.length);\n const isMatchAllQuery = isExistsQuery && isAllFieldsQuery;\n\n if (isMatchAllQuery) {\n return { match_all: {} };\n }\n\n const queries = fields!.reduce((accumulator: any, field: IFieldType) => {\n const wrapWithNestedQuery = (query: any) => {\n // Wildcards can easily include nested and non-nested fields. There isn't a good way to let\n // users handle this themselves so we automatically add nested queries in this scenario.\n if (\n !(fullFieldNameArg.type === 'wildcard') ||\n !field.subType?.nested ||\n context?.nested\n ) {\n return query;\n } else {\n return {\n nested: {\n path: field.subType!.nested!.path,\n query,\n score_mode: 'none',\n },\n };\n }\n };\n\n if (field.scripted) {\n return [] //don't support\n // // Exists queries don't make sense for scripted fields\n // if (!isExistsQuery) {\n // return [\n // ...accumulator,\n // {\n // script: {\n // ...getPhraseScript(field, value as any),\n // },\n // },\n // ];\n // }\n } else if (isExistsQuery) {\n return [\n ...accumulator,\n wrapWithNestedQuery({\n exists: {\n field: field.name,\n },\n }),\n ];\n } else if (valueArg.type === 'wildcard') {\n return [\n ...accumulator,\n wrapWithNestedQuery({\n query_string: {\n fields: [field.name],\n query: wildcard.toQueryStringQuery(valueArg),\n },\n }),\n ];\n } else if (field.type === 'date') {\n /*\n If we detect that it's a date field and the user wants an exact date, we need to convert the query to both >= and <= the value provided to force a range query. This is because match and match_phrase queries do not accept a timezone parameter.\n dateFormatTZ can have the value of 'Browser', in which case we guess the timezone using moment.tz.guess.\n */\n const timeZoneParam = config.dateFormatTZ\n ? { time_zone: getTimeZoneFromSettings(config!.dateFormatTZ) }\n : {};\n return [\n ...accumulator,\n wrapWithNestedQuery({\n range: {\n [field.name]: {\n gte: value,\n lte: value,\n ...timeZoneParam,\n },\n },\n }),\n ];\n } else {\n const queryType = type === 'phrase' ? 'match_phrase' : 'match';\n return [\n ...accumulator,\n wrapWithNestedQuery({\n [queryType]: {\n [field.name]: value,\n },\n }),\n ];\n }\n }, []);\n\n return {\n bool: {\n should: queries || [],\n minimum_should_match: 1,\n },\n };\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport * as ast from '../ast';\nimport { IIndexPattern, KueryNode } from '../../..';\n\nexport function buildNodeParams(children: KueryNode[]) {\n return {\n arguments: children,\n };\n}\n\nexport function toOpenSearchQuery(\n node: KueryNode,\n indexPattern?: IIndexPattern,\n config: Record<string, any> = {},\n context: Record<string, any> = {}\n) {\n const children = node.arguments || [];\n\n return {\n bool: {\n filter: children.map((child: KueryNode) => {\n return ast.toOpenSearchQuery(child, indexPattern, config, context);\n }),\n },\n };\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport * as ast from '../ast';\nimport { IIndexPattern, KueryNode } from '../../..';\n\nexport function buildNodeParams(children: KueryNode[]) {\n return {\n arguments: children,\n };\n}\n\nexport function toOpenSearchQuery(\n node: KueryNode,\n indexPattern?: IIndexPattern,\n config: Record<string, any> = {},\n context: Record<string, any> = {}\n) {\n const children = node.arguments || [];\n\n return {\n bool: {\n should: children.map((child: KueryNode) => {\n return ast.toOpenSearchQuery(child, indexPattern, config, context);\n }),\n minimum_should_match: 1,\n },\n };\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport * as ast from '../ast';\nimport { IIndexPattern, KueryNode } from '../../..';\n\nexport function buildNodeParams(child: KueryNode) {\n return {\n arguments: [child],\n };\n}\n\nexport function toOpenSearchQuery(\n node: KueryNode,\n indexPattern?: IIndexPattern,\n config: Record<string, any> = {},\n context: Record<string, any> = {}\n) {\n const [argument] = node.arguments;\n\n return {\n bool: {\n must_not: ast.toOpenSearchQuery(argument, indexPattern, config, context),\n },\n };\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\n\nimport { nodeTypes } from '../node_types';\nimport * as ast from '../ast';\n\nimport { getFields } from './utils/get_fields';\nimport { getTimeZoneFromSettings } from '../../utils';\nimport { getFullFieldNameNode } from './utils/get_full_field_name_node';\nimport { IIndexPattern, KueryNode, IFieldType } from '../../..';\n\nfunction pick(object: Record<string, any>, ...options: string[]) {\n let out: Record<string, any> = {}\n for (let op of options) {\n out[op] = object[op]\n }\n return out\n}\nexport function buildNodeParams(fieldName: string, params: any) {\n const paramsToMap = pick(params, 'gt', 'lt', 'gte', 'lte', 'format');\n const fieldNameArg =\n typeof fieldName === 'string'\n ? ast.fromLiteralExpression(fieldName)\n : nodeTypes.literal.buildNode(fieldName);\n\n const args = Object.entries(paramsToMap).map((input) => {\n let [key, value]: [string, number | string] = input\n return nodeTypes.namedArg.buildNode(key, value);\n });\n\n return {\n arguments: [fieldNameArg, ...args],\n };\n}\n\nexport function toOpenSearchQuery(\n node: KueryNode,\n indexPattern?: IIndexPattern,\n config: Record<string, any> = {},\n context: Record<string, any> = {}\n) {\n const [fieldNameArg, ...args] = node.arguments;\n const fullFieldNameArg = getFullFieldNameNode(\n fieldNameArg,\n indexPattern,\n context?.nested ? context.nested.path : undefined\n );\n const fields = indexPattern ? getFields(fullFieldNameArg, indexPattern) : [];\n const namedArgs = extractArguments(args);\n const queryParams = Object.fromEntries(Object.entries(namedArgs).map(([key, arg]) => {\n return [key, ast.toOpenSearchQuery(arg as KueryNode)];\n }));\n\n // If no fields are found in the index pattern we send through the given field name as-is. We do this to preserve\n // the behaviour of lucene on dashboards where there are panels based on different index patterns that have different\n // fields. If a user queries on a field that exists in one pattern but not the other, the index pattern without the\n // field should return no results. It's debatable whether this is desirable, but it's been that way forever, so we'll\n // keep things familiar for now.\n if (fields && fields.length === 0) {\n fields.push({\n name: (ast.toOpenSearchQuery(fullFieldNameArg) as unknown) as string,\n scripted: false,\n type: '',\n });\n }\n\n const queries = fields!.map((field: IFieldType) => {\n const wrapWithNestedQuery = (query: any) => {\n // Wildcards can easily include nested and non-nested fields. There isn't a good way to let\n // users handle this themselves so we automatically add nested queries in this scenario.\n if (\n !(fullFieldNameArg.type === 'wildcard') ||\n !field.subType?.nested ||\n context!.nested\n ) {\n return query;\n } else {\n return {\n nested: {\n path: field.subType!.nested!.path,\n query,\n score_mode: 'none',\n },\n };\n }\n };\n\n if (field.scripted) {\n return {} //Don't support this\n\n } else if (field.type === 'date') {\n const timeZoneParam = config.dateFormatTZ\n ? { time_zone: getTimeZoneFromSettings(config!.dateFormatTZ) }\n : {};\n return wrapWithNestedQuery({\n range: {\n [field.name]: {\n ...queryParams,\n ...timeZoneParam,\n },\n },\n });\n }\n return wrapWithNestedQuery({\n range: {\n [field.name]: queryParams,\n },\n });\n });\n\n return {\n bool: {\n should: queries,\n minimum_should_match: 1,\n },\n };\n}\n\nfunction extractArguments(args: any) {\n if ((args.gt && args.gte) || (args.lt && args.lte)) {\n throw new Error('range ends cannot be both inclusive and exclusive');\n }\n\n const unnamedArgOrder = ['gte', 'lte', 'format'];\n\n return args.reduce((acc: any, arg: any, index: number) => {\n if (arg.type === 'namedArg') {\n acc[arg.name] = arg.value;\n } else {\n acc[unnamedArgOrder[index]] = arg;\n }\n\n return acc;\n }, {});\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport * as literal from '../node_types/literal';\nimport { IIndexPattern, KueryNode, IFieldType } from '../../../';\n\nexport function buildNodeParams(fieldName: string) {\n return {\n arguments: [literal.buildNode(fieldName)],\n };\n}\n\nexport function toOpenSearchQuery(\n node: KueryNode,\n indexPattern?: IIndexPattern,//@ts-ignore\n config: Record<string, any> = {},\n context: Record<string, any> = {}\n) {\n const {\n arguments: [fieldNameArg],\n } = node;\n const fullFieldNameArg = {\n ...fieldNameArg,\n value: context?.nested ? `${context.nested.path}.${fieldNameArg.value}` : fieldNameArg.value,\n };\n const fieldName = literal.toOpenSearchQuery(fullFieldNameArg);\n const field = (indexPattern?.fields || []).find((fld: IFieldType) => fld.name === fieldName);\n\n if (field && (field as IFieldType).scripted) {\n throw new Error(`Exists query does not support scripted fields`);\n }\n return {\n exists: { field: fieldName },\n };\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport * as ast from '../ast';\nimport * as literal from '../node_types/literal';\nimport { IIndexPattern, KueryNode } from '../../..';\n\nexport function buildNodeParams(path: any, child: any) {\n const pathNode =\n typeof path === 'string' ? ast.fromLiteralExpression(path) : literal.buildNode(path);\n return {\n arguments: [pathNode, child],\n };\n}\n\nexport function toOpenSearchQuery(\n node: KueryNode,\n indexPattern?: IIndexPattern,\n config: Record<string, any> = {},\n context: Record<string, any> = {}\n) {\n const [path, child] = node.arguments;\n const stringPath = ast.toOpenSearchQuery(path);\n const fullPath = context?.nested?.path ? `${context.nested.path}.${stringPath}` : stringPath;\n\n return {\n nested: {\n path: fullPath,\n query: ast.toOpenSearchQuery(child, indexPattern, config, {\n ...context,\n nested: { path: fullPath },\n }),\n score_mode: 'none',\n },\n };\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport * as is from './is';\nimport * as and from './and';\nimport * as or from './or';\nimport * as not from './not';\nimport * as range from './range';\nimport * as exists from './exists';\nimport * as nested from './nested';\n\nexport const functions: any = {\n is,\n and,\n or,\n not,\n range,\n exists,\n nested,\n};\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\n\nimport { functions } from '../functions';\nimport { IIndexPattern, KueryNode } from '../../..';\nimport { FunctionName, FunctionTypeBuildNode } from './types';\n\nexport function buildNode(functionName: FunctionName, ...args: any[]) {\n const kueryFunction = functions[functionName];\n if (kueryFunction === undefined) {\n throw new Error(`Unknown function \"${functionName}\"`);\n }\n\n return {\n type: 'function' as 'function',\n function: functionName,\n // This requires better typing of the different typings and their return types.\n // @ts-ignore\n ...kueryFunction.buildNodeParams(...args),\n };\n}\n\n// Mainly only useful in the grammar where we'll already have real argument nodes in hand\nexport function buildNodeWithArgumentNodes(\n functionName: FunctionName,\n args: any[]\n): FunctionTypeBuildNode {\n if (functions[functionName] === undefined) {\n throw new Error(`Unknown function \"${functionName}\"`);\n }\n\n return {\n type: 'function',\n function: functionName,\n arguments: args,\n };\n}\n\nexport function toOpenSearchQuery(\n node: KueryNode,\n indexPattern?: IIndexPattern,\n config?: Record<string, any>,\n context?: Record<string, any>\n) {\n const kueryFunction = functions[node.function as FunctionName];\n return kueryFunction.toOpenSearchQuery(node, indexPattern, config, context);\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport * as ast from '../ast';\nimport { nodeTypes } from '.';\nimport { NamedArgTypeBuildNode } from './types';\nimport { JsonObject } from '../../../types';\n\nexport function buildNode(name: string, value: any): NamedArgTypeBuildNode {\n const argumentNode = value.type === 'literal' ? value : nodeTypes.literal.buildNode(value);\n return {\n type: 'namedArg',\n name,\n value: argumentNode,\n };\n}\n\nexport function toOpenSearchQuery(node: any): JsonObject {\n return ast.toOpenSearchQuery(node.value);\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport * as functionType from './function';\nimport * as literal from './literal';\nimport * as namedArg from './named_arg';\nimport * as wildcard from './wildcard';\nimport { NodeTypes } from './types';\n\nexport * from \"./types\"\n\nexport const nodeTypes: NodeTypes = {\n // This requires better typing of the different typings and their return types.\n // @ts-ignore\n function: functionType,\n literal,\n namedArg,\n wildcard,\n};\n","\nimport { FieldTypes, KueryNode } from '../..';\nimport { wildcardSymbol } from '../kuery/node_types/wildcard';\n\nexport const KQL_WILDCARD_SYMBOL = wildcardSymbol;\nexport const KQL_NODE_TYPE_WILDCARD = 'wildcard';\nexport type FunctionName = 'is' | 'and' | 'or' | 'not' | 'range' | 'exists' | 'nested';\nconst and = (node: KueryNode, fields?: FieldTypes[]) => {\n const children = node.arguments || [];\n return (\n '(' +\n children\n .map((child: KueryNode) => {\n return toCql(child, fields);\n })\n .join(' AND ') +\n ')'\n );\n};\nconst is = (node: KueryNode, fields?: FieldTypes[]) => {\n var {\n arguments: [fieldNameArg, valueArg, isValue],\n } = node;\n let operator = '=';\n if (valueArg.type === 'wildcard') {\n operator = '';\n }\n let value = toCql(valueArg);\n isValue = isValue.value || typeof value === \"string\";\n if (valueArg.type === 'literal' && isValue) {\n value = `'${value}'`; //should be quoted\n }\n if (valueArg.type === 'literal' && !isValue) {\n value = `${value}`; //shouldn't be quoted\n }\n let fieldName = toCql(fieldNameArg);\n if (fieldName == null) {\n //this isn't possible if we don't have the names of all the fields.\n //if we have all the fields we can do a list of or statements (field ILIKE \"%value%\")\n if (fields && isValue) {\n return `(${fields.filter(f => f.type === \"string\").map(field => `${field.name} ILIKE '%${valueArg.value}%'`).join(\" OR \")})`\n }\n if (fields && !isValue && (valueArg.value === true || valueArg.value === false)) {\n return `(${fields.filter(f => f.type === \"boolean\").map(field => `${field.name}=${valueArg.value}`).join(\" OR \")})`\n }\n return \"\"\n }\n return fieldName + operator + value;\n};\n\nconst or = (node: KueryNode, fields?: FieldTypes[]) => {\n const children = node.arguments || [];\n return (\n '(' +\n children\n .map((child: KueryNode) => {\n return toCql(child, fields);\n })\n .join(' OR ') +\n ')'\n );\n};\nconst not = (node: KueryNode, fields?: FieldTypes[]) => {\n const [argument] = node.arguments;\n return 'NOT (' + toCql(argument, fields) + ')';\n};\n\nconst AST_TO_CQL = {\n gt: '>',\n lt: '<',\n gte: '>=',\n lte: '<=',\n};\nconst range = (node: KueryNode,) => {\n\n const [fieldNameArg, operator] = node.arguments;\n let valueArg = operator.value\n // @ts-ignore\n const opsign = AST_TO_CQL[operator.name];\n let value = toCql(valueArg);\n if (valueArg.type === 'literal') {\n value = `${value}`;\n }\n return `${fieldNameArg.value} ${opsign} ${value}`;\n};\nconst exists = (node: KueryNode) => {\n const [fieldNameArg] = node.arguments;\n return `${fieldNameArg.value} IS NOT NULL`;\n};\nconst nested = (node: KueryNode) => {\n //nested types don't exist in CQL\n console.warn(\"Nested types dont exist in CQL\", node)\n return \"\"\n}\nexport const functions = {\n is,\n and,\n or,\n not,\n range,\n exists,\n nested\n};\nconst nodeTypes = {\n function: (node: KueryNode, fields?: FieldTypes[]) => {\n // @ts-ignore\n return functions[node.function as FunctionName](node, fields);\n },\n literal: (node: KueryNode) => {\n return node.value;\n },\n wildcard: (node: KueryNode) => {\n const { value } = node;\n return ` LIKE '${value.split(KQL_WILDCARD_SYMBOL).join('%')}'`;\n },\n};\n\nexport const toCql = (node: KueryNode, fields?: FieldTypes[]): string => {\n //@ts-ignore\n const nodeType = nodeTypes[node.type] as unknown as any;\n return nodeType(node, fields);\n};\n","/* eslint-disable @kbn/eslint/require-license-header */\nimport { FieldTypes, KueryNode } from '../..';\nimport { wildcardSymbol } from '../kuery/node_types/wildcard';\n\nexport const KQL_WILDCARD_SYMBOL = wildcardSymbol;\nexport const KQL_NODE_TYPE_WILDCARD = 'wildcard';\nexport type FunctionName = 'is' | 'and' | 'or' | 'not' | 'range' | 'exists' | 'nested';\nconst and = (node: KueryNode) => {\n const children = node.arguments || [];\n let query: any = { \"$and\": children.map((c: KueryNode) => toMongo(c)) }\n\n return query;\n};\nconst is = (node: KueryNode) => {\n const {\n arguments: [fieldNameArg, valueArg],\n } = node;\n\n let value = toMongo(valueArg);\n const isExistsQuery = valueArg.type === 'wildcard' && (valueArg.value as any) === '@kuery-wildcard@';\n if (isExistsQuery) {\n return exists(node)\n }\n let query: any = {}\n query[toMongo(fieldNameArg)] = { \"$eq\": value }\n return query;\n};\n\nconst or = (node: KueryNode) => {\n const children = node.arguments || [];\n return {\n \"$or\": children\n .map((child: KueryNode) => {\n return toMongo(child);\n })\n }\n\n};\nconst not = (node: KueryNode) => {\n const [fieldNameArg] = node.arguments;\n let query: any = {};\n query = { \"$ne\": toMongo(fieldNameArg) }\n return query;\n};\n\nconst AST_TO_CQL = {\n gt: '$gt',\n lt: '$lt',\n gte: '$gte',\n lte: '$lte',\n};\nconst range = (node: KueryNode) => {\n const [fieldNameArg, operator] = node.arguments;\n let valueArg = operator.value\n // @ts-ignore\n const opsign = AST_TO_CQL[operator.name];\n let value = toMongo(valueArg);\n\n let query: any = {}\n query[fieldNameArg.value] = {}\n query[fieldNameArg.value][opsign] = value\n return query\n\n\n};\nconst exists = (node: KueryNode) => {\n const [fieldNameArg] = node.arguments;\n return { [toMongo(fieldNameArg)]: { $ne: null } }\n};\n\nconst nested = (node: KueryNode) => {\n\n console.warn(\"TODO Implement nested search\", node)\n return \"\"\n}\nexport const functions = {\n is,\n and,\n or,\n not,\n range,\n exists,\n nested\n};\nconst nodeTypes = {\n function: (node: KueryNode) => {\n // @ts-ignore\n return functions[node.function as FunctionName](node);\n },\n literal: (node: KueryNode) => {\n return node.value;\n },\n wildcard: (node: KueryNode) => {\n const { value } = node;\n return `/${value.split(KQL_WILDCARD_SYMBOL).join('.*')}/`;\n },\n};\n\nexport const toMongo = (node: KueryNode, fields?: FieldTypes[]): string => {\n //@ts-ignore\n const nodeType = nodeTypes[node.type] as unknown as any;\n return nodeType(node, fields);\n};\n","import { css } from \"lit\";\n\nexport const style = css`\n:host {\n --dialog-padding: var(--spectric-dialog-padding, 5px);\n --dialog-background:var(--spectric-background,rgb(246, 249, 252));\n}\ndialog {\n border: 0px solid var(--background-inverse);\n --spectric-background: var(--dialog-background);\n --panel-color:var(--dialog-background);\n padding: 0;\n border-radius: var(--spectric-border-radius);\n overflow:hidden;\n\n}\ndialog[open]{\n display:flex;\n}\nspectric-panel{\n margin:0px\n}\ndialog::backdrop {\n background-color: transparent;\n}\ndialog.backdrop::backdrop {\n background-color: rgba(0, 0, 0, 0.5);\n}\n.modal{\n display: flex;\n overflow: hidden;\n flex-direction: column;\n height: 100%;\n}\n.content{\n flex-shrink: 1;\n overflow: auto;\n}\n\nh3 {\n padding: 1em var(--dialog-padding);\n margin: 0;\n}\n\nspectric-button{\n position: absolute;\n right: 0;\n top: 0;\n}\n`;","import { CSSResultGroup, html, LitElement, PropertyValues, render } from 'lit';\nimport \"../Button\";\nimport { customElement, property, queryAsync } from 'lit/decorators.js';\nimport { style } from './dialog.css';\nimport { HTMLElementTagWithEvents, ReactElementWithPropsAndEvents } from '../types';\nexport const DialogElementTag = \"spectric-dialog\"\nexport type { DialogProps as Props, DialogEvents }\ninterface DialogProps {\n open?: boolean;\n dismissable?: boolean;\n hideBackdrop?: boolean;\n title?: string;\n closeOnEscape?: boolean;\n closeOnOutsideClick?: boolean;\n}\n\n\n\n/**\n * Dialog Element\n * @slot title - sets the title of the dialog attribute/property can also be use for setting the title to a string\n */\n@customElement(DialogElementTag)\nexport class DialogElement extends LitElement implements DialogProps {\n static styles: CSSResultGroup = style;\n static display(props: DialogProps, body: any) {\n let dialog = document.createElement(DialogElementTag);\n dialog.addEventListener(\"close\", () => {\n dialog.remove()\n });\n for (let prop in props) {\n //@ts-ignore\n dialog[prop] = props[prop];\n }\n let frag = document.createDocumentFragment()\n render(body, frag);\n dialog.appendChild(frag)\n dialog.open = true;\n document.body.appendChild(dialog)\n return dialog\n }\n @property({ type: Boolean, reflect: true })\n open: boolean = false;\n\n @property({ type: Boolean, reflect: true })\n dismissable: boolean = true;\n\n @property({ type: Boolean, reflect: true })\n hideBackdrop: boolean = false;\n\n @property({ type: String, reflect: true })\n title: string = \"\";\n\n @property({ type: Boolean, reflect: true })\n closeOnEscape: boolean = true;\n\n @property({ type: Boolean, reflect: true })\n closeOnOutsideClick: boolean = true;\n\n @queryAsync(\"dialog\")\n dialogElement!: Promise<HTMLDialogElement>;\n\n connectedCallback(): void {\n super.connectedCallback();\n this.dialogElement.then(dialog => dialog.addEventListener('keydown', this._handleKeyDown));\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n this.dialogElement.then(dialog => dialog.removeEventListener('keydown', this._handleKeyDown));\n }\n\n protected updated(_changedProperties: PropertyValues): void {\n if (_changedProperties.has(\"open\")) {\n this.dialogElement.then(dialog => {\n if (this.open) {\n dialog.showModal();\n } else {\n dialog.close();\n }\n });\n }\n }\n\n private clickHandler = async (e: PointerEvent): Promise<void> => {\n const dialog = await this.dialogElement;\n if (!this.dismissable || !this.closeOnOutsideClick) {\n return;\n }\n if (dialog === e.target) {\n // clicked on backdrop\n this.open = false;\n }\n };\n\n private _handleKeyDown = (e: KeyboardEvent): void => {\n if (!this.closeOnEscape) {\n e.preventDefault()\n }\n if (this.open && this.closeOnEscape && e.key === 'Escape') {\n this.open = false;\n }\n };\n\n private _onClose = (e: PointerEvent): void => {\n e.preventDefault();\n e.stopPropagation();\n this.open = false;\n this.dispatchEvent(new CustomEvent('close', {\n bubbles: true,\n composed: true,\n }));\n };\n\n protected render(): unknown {\n return html`\n <dialog class=${this.hideBackdrop ? '' : 'backdrop'} @close=${this._onClose} @click=${this.clickHandler}>\n <spectric-panel>\n <div class=\"modal\">\n ${this.dismissable ? html`<spectric-button variant=\"text\" size=\"small\" @click=${() => { this.open = false }}>X</spectric-button>` : null}\n <h3 >\n <slot name=\"title\">\n ${this.title.length ? this.title : null}\n </slot>\n </h3>\n\n <div class=\"content\"><slot></slot></div>\n <div class=\"footer\"><slot name=\"footer\"></slot></div>\n </div>\n </spectric-panel>\n </dialog>\n `;\n }\n}\n\ninterface DialogEvents {\n 'close': (event: CustomEvent) => void;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [DialogElementTag]: HTMLElementTagWithEvents<DialogElement, DialogEvents>\n\n }\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link DialogElement}\n */\n [DialogElementTag]: ReactElementWithPropsAndEvents<DialogElement, DialogProps, DialogEvents>;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link DialogElement}\n */\n [DialogElementTag]: ReactElementWithPropsAndEvents<DialogElement, DialogProps, DialogEvents>\n }\n }\n }\n}\n","import { html, LitElement, PropertyValues } from \"lit\";\nimport * as kuery from \"./querylanguage/kuery\"\nimport { customElement, property, query, queryAsync, state } from \"lit/decorators.js\";\nimport { SpectricInput } from \"../input\";\nimport { JsonObject } from \"./types\";\nimport { HTMLElementTagWithEvents, ReactElementWithPropsAndEvents } from \"../types\";\nimport \"./QueryBar.css\"\nimport { DialogElement } from \"../dialog\";\nimport { createRef, ref } from \"lit/directives/ref.js\";\nimport { SpectricButton } from \"../Button\";\nexport type FieldTypes = {\n name: string;\n type: \"string\" | \"number\" | \"boolean\"\n format?: \"date-time\"\n}\ntype SuggestionType = 'conjunction' | \"field\" | 'operator' | 'value'\ntype Suggestion = {\n fieldName: string\n end: number\n prefix: string\n start: number\n suffix: string\n suggestionTypes: (SuggestionType)[]\n text: string\n type: \"cursor\"\n}\nexport enum SupportedLanguages {\n MONGO = \"toMongo\",\n CQL = \"toCql\",\n DSL = \"toDSL\",\n AST = \"AST\"\n}\ntype SupportedLanguagesTypes = `${SupportedLanguages}`\ninterface QueryEventMap {\n \"change\": (event: CustomEvent<string | kuery.KueryNode | JsonObject>) => void;\n}\n\nexport interface IQueryProps {\n /**\n * The output of the query in a specific format\n */\n outputLanguage?: SupportedLanguagesTypes;\n /**\n * The output of the query\n */\n value?: string;\n /**\n * Fields that are used for the auto complete\n */\n fields?: FieldTypes[];\n /**\n * Callback that will provide values for specific fields\n */\n getValuesForField?: (field: string, text: string) => Promise<string[]>;\n\n /**\n * Input placeholder\n */\n placeholder?: string;\n}\ntype LabelValue = {\n label?: string;\n value: string;\n}\ntype Completion = LabelValue & {\n start: number;\n end: number;\n type: SuggestionType\n onSelect?: () => Promise<string | undefined | number>\n}\nconst NumberOperators: Record<string, LabelValue> = {\n \"eq\": { value: \" : \", label: \" equals some value\" },\n \"gt\": { value: \" > \", label: \" is greater than some value\" },\n \"lt\": { value: \" < \", label: \" is less than some value\" },\n \"gte\": { value: \" >= \", label: \" is greater than or equal to some value\" },\n \"lte\": { value: \" <= \", label: \" is less than or equal to some value\" }\n}\nconst StringOperators: Record<string, LabelValue> = {\n \"eq\": { value: \": \", label: \" equals some value\" },\n \"exists\": { value: \": *\", label: \" exists in any form\" }\n}\nconst BoolOperators: LabelValue[] = [{ value: \": true\", label: \" value is true\" },\n{ value: \": false\", label: \"value is false\" }\n]\n//Date operators are the same as number but we want a string value\nconst DateOperators: Record<string, LabelValue> = Object.fromEntries(Object.entries(NumberOperators).map(([key, labelValue]) => [key, { value: labelValue.value, label: (labelValue.label || \"\").replace(\"value\", \"date-time\") }]))\n/**\n * The Query component will take Opensearch Dashboard Query language and transform it into various outputs\n */\n@customElement('spectric-query')\nexport class SpectricQuery extends LitElement implements IQueryProps {\n private uuid: string;\n @property({ type: String, reflect: true })\n placeholder: string = \"\";\n constructor() {\n super()\n this.uuid = crypto.randomUUID()\n }\n protected createRenderRoot(): HTMLElement | DocumentFragment {\n return this\n }\n\n /**\n * The internal value.\n */\n protected _value: string = '';\n private suggestion?: Suggestion;\n /**\n * The value of the input.\n */\n @property({ type: String, reflect: true })\n value = \"\"\n @property({ type: String, reflect: true })\n outputLanguage: SupportedLanguagesTypes = \"AST\";\n @state()\n private completions: Completion[] = [];\n @state()\n private completionIndex = 0;\n @property({ type: Array, reflect: true })\n fields: FieldTypes[] = [];\n\n @query(\".autocomplete\")\n _autocomplete?: HTMLDivElement\n\n @queryAsync(\".autocomplete\")\n //@ts-expect-error\n _asyncAutocomplete: Promise<HTMLDivElement>\n\n /**\n * The underlying input element\n */\n @query('spectric-input')\n protected _input!: SpectricInput;\n _parseQuery = (e: InputEvent | undefined = undefined) => {\n let ast;\n if (e && e?.currentTarget) {\n this.value = (e.currentTarget as HTMLInputElement).value\n }\n if (this.value) {\n try {\n if (e && e.data == \"(\") {\n //Auto close parentheses or parsing and suggestions fail\n this.value = this.value + \" )\"\n this._input.setSelectionRange(this.value.length - 2, this.value.length - 2)\n }\n let value = this.value;\n if (this._input.selectionStart !== null) {\n value = value.substring(0, this._input.selectionStart) + \"@kuery-cursor@\" + value.substring(this._input.selectionStart)\n }\n //FIXME: make auto complete work well.\n let suggestions = kuery.parse(value, { parseCursor: true, cursorSymbol: \"@kuery-cursor@\", allowLeadingWildcards: false }) as unknown as Suggestion;\n this.autoComplete(suggestions)\n } catch (error: any) {\n // this.completions = []\n // this._input.invalid = true;\n // let [expect, _, arrow] = e.message.split(\"\\n\")\n // this._input.invalidText = html`&#160;&#160;${arrow} ${expect}`;\n return\n }\n }\n try {\n ast = kuery.parse(this.value, { allowLeadingWildcards: false });\n } catch (error: any) {\n return\n }\n let output\n if (this.outputLanguage == \"AST\") {\n output = ast\n } else {\n output = kuery[this.outputLanguage](ast, this.fields)\n }\n let event = new CustomEvent(\"change\", { detail: output })\n this.dispatchEvent(event)\n }\n\n getValuesForField = async (field: string, text: string): Promise<string[]> => {\n console.log(\"getValuesForField isn't set no values returned\", field, text)\n return []\n }\n async autoComplete(suggestion: Suggestion) {\n this.completions = []\n if (suggestion.type !== \"cursor\") {\n return\n }\n let completions = []\n this.suggestion = suggestion\n let { start, end } = suggestion\n for (let type of suggestion.suggestionTypes) {\n if (type == \"conjunction\" && suggestion.text.endsWith(' ')) {\n completions.push(...[\"and \", \"or \"].map(value => ({ type, value, start: end, end: end })))\n }\n if (type === \"field\") {\n let fieldCompletions = this.fields.filter(field => field.name.includes(suggestion.fieldName) || field.name.includes(suggestion.prefix)).map(f => {\n return [{ type, value: f.name, start, end }]\n }).flat()\n completions.push(...fieldCompletions)\n }\n if (type === \"operator\") {\n let fieldType = this.fields.find(field => field.name === suggestion.fieldName);\n if (fieldType) {\n if (fieldType.type === \"number\") {\n completions.push(...Object.values(NumberOperators).map(value => ({ type, ...value, start: end, end: end })))\n } else if (fieldType.type === \"string\") {\n if (fieldType.format === \"date-time\") {\n completions.push(...Object.values(DateOperators).map(value => ({\n type, ...value, start: end, end: end, onSelect: async () => {\n let values = await this.getValuesForField(suggestion.fieldName, suggestion.prefix);\n if (values.length === 0) {\n values = [\"now-1m\", \"now-1d\", \"now-1M\",]\n }\n let value: string | undefined;\n let buttonRef = createRef<SpectricButton>()\n await new Promise((resolve) => {\n let dialog = DialogElement.display({}, html`\n <div class=\"query-bar-date-quick-select\">\n ${values.map(v => html`<a href=\"#\" @click=${(e: MouseEvent) => {\n e.preventDefault()\n value = `\"${v}\"`;\n resolve(value); dialog.open = false\n }}>${v}</a>`)}\n </div>\n <spectric-input variant=\"datetime-local\" @change=${(e: any) => {\n\n if (!e.target) {\n return\n }\n let date = (new Date(e.target.value + \":00.000Z\")).toISOString()\n value = `\"${date}\"`\n buttonRef.value!.disabled = value === undefined\n }}></spectric-input>\n <spectric-button ${ref(buttonRef)} .disabled=${true} @click=${() => { resolve(value); dialog.open = false }}>Submit</spectric-button>\n `)\n })\n return value\n }\n })))\n } else {\n completions.push(...Object.values(StringOperators).map(value => ({ type, ...value, start: end, end: end })))\n }\n } else if (fieldType.type === \"boolean\") {\n completions.push(...BoolOperators.map(value => ({ type, ...value, start: end, end: end })))\n }\n }\n }\n if (type === \"value\") {\n let fieldType = this.fields.find(field => field.name === suggestion.fieldName);\n if (fieldType && fieldType.type == \"boolean\") {\n completions.push({ type, value: \"true\", start, end }, { type, value: \"false\", start, end })\n } else {\n console.log(`invoke callback to get values for ${suggestion.fieldName}`)\n let values = await this.getValuesForField(suggestion.fieldName, suggestion.prefix);\n if (fieldType?.type === \"string\") {\n //quote the values\n values = values.map(v => `\"${v}\"`)\n }\n completions.push(...values.map(value => ({ type, value, start, end })))\n }\n\n }\n }\n this.completions = completions\n if (this.completions.length && this._autocomplete) {\n let { width, left, bottom } = this._input.getBoundingClientRect();\n this._autocomplete.showPopover();\n //Older firefox doesn't support anchor positions using css properties so manually position here\n if (!(\"anchorName\" in document.documentElement.style)) {\n this._autocomplete.style.left = `${left + 3.75}px`\n this._autocomplete.style.top = `${bottom}px`\n }\n this._autocomplete.style.width = `${width - 15}px`;\n }\n }\n protected updated(changed: PropertyValues): void {\n if (changed.has(\"outputLanguage\")) {\n this._parseQuery()\n }\n }\n _selectCompletion = async () => {\n if (!this.suggestion) {\n return\n }\n let completion = this.completions[this.completionIndex]\n\n let prefix = this.value.substring(0, completion.start) +\n completion.value\n let insertIndex = prefix.length\n let afterStart = this.value.substring(completion.end)\n if (completion.value.includes(afterStart)) {\n this.value = prefix\n } else {\n this.value = prefix + this.value.substring(completion.end)\n }\n //Important if the underlying inputs value hasn't been set the setSelectionRange will fail to set a range greater than the inputs current value\n this._input.value = this.value\n this._input.setSelectionRange(insertIndex, insertIndex)\n if (completion.onSelect) {\n let value = await completion.onSelect()\n if (value !== undefined) {\n this.value += value\n setTimeout(() => { this._input.focus(); })\n }\n }\n this.completionIndex = 0;\n this.completions = []\n this._parseQuery()\n this._input.focus()\n }\n _handleArrows = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n this.completions = []; //Escape closes the popover toplayer lets ensure the completions aren't selectable\n }\n if (e.key == \"ArrowLeft\" || e.key === \"ArrowRight\") {\n setTimeout(this._parseQuery, 100)\n }\n if (!this.completions.length) {\n return\n }\n if ([\"ArrowUp\", \"ArrowDown\", 'Enter', \"Tab\"].includes(e.key) && this.suggestion) {\n e.preventDefault();\n if (e.key === \"ArrowDown\" || e.key === \"Tab\") {\n this.completionIndex += 1;\n if (this.completionIndex > this.completions.length - 1) {\n this.completionIndex = 0\n }\n }\n if (e.key === \"ArrowUp\") {\n this.completionIndex -= 1;\n if (this.completionIndex < 0) {\n this.completionIndex = this.completions.length - 1\n }\n }\n\n this._asyncAutocomplete?.then(element => {\n let active = element.querySelector(\".option.active\");\n if (active) {\n active.scrollIntoView({ block: \"nearest\" })\n }\n })\n\n if (e.key === \"Enter\") {\n this._selectCompletion()\n }\n }\n }\n protected render() {\n return html`\n <spectric-input .value=${this.value} .placeholder=${this.placeholder} style=${`anchor-name:--${this.uuid};`} autocomplete=\"off\" @input=${this._parseQuery} @keydown=${this._handleArrows} @change=${(e: Event) => e.stopPropagation()}></spectric-input>\n <div class=\"autocomplete\" popover style=${`position-anchor: --${this.uuid};`}>\n ${this.completions.map((option: Completion, index) =>\n html`<div @click=${() => {\n this.completionIndex = index;\n this._selectCompletion()\n }} class=${this.completionIndex == index ? \"option active\" : \"option\"}><span class=\"optiontype ${option.type}\">${option.type}</span> <span class=\"value\">${option.value}</span> <span class=\"label\">${option.label}</span></span> </div></div>`\n )}\n </div>`\n }\n}\n\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"spectric-query\": HTMLElementTagWithEvents<SpectricQuery, QueryEventMap>\n }\n namespace JSX {\n interface IntrinsicElements {\n /**\n * {@link SpectricQuery}\n */\n \"spectric-query\": ReactElementWithPropsAndEvents<SpectricQuery, IQueryProps, QueryEventMap>\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * {@link SpectricQuery}\n */\n \"spectric-query\": ReactElementWithPropsAndEvents<SpectricQuery, IQueryProps, QueryEventMap>;\n }\n }\n }\n}\n","import { css } from \"lit\";\n\nconst even = css`\n border-color: color-mix(in hsl, var(--panel-color, #0b0b0b), var(--spectric-input-color, #000000) 3%);\n background-color: var(--panel-color,#0b0b0b);\n --spectric-input-color: var(--spectric-background);\n color:var(--text-secondary,#3c4c5b);\n --spectric-text-primary:var(--text-primary);\n --spectric-text-secondary:var(--text-secondary);\n filter: drop-shadow(0px 1px 3px color-mix(in srgb, var(--text-secondary, #3c4c5b), transparent 50%));\n`\nconst odd = css`\n border-color: color-mix(in hsl, var(--panel-color-inverse,#f4f4f4), var(--spectric-input-color, #000000) 3%);\n background-color: var(--panel-color-inverse,#0b0b0b);\n color:var(--text-primary,#3c4c5b);\n --spectric-input-color: var(--panel-color);\n --spectric-text-primary:var(--text-secondary);\n --spectric-text-secondary:var(--text-primary);\n filter: drop-shadow(0px 1px 3px color-mix(in srgb, var(--text-primary, #3c4c5b), transparent 70%));\n `\nexport default css`\n:host{\n display:block;\n border:2px solid black;\n margin: 5px;\n border-radius:var(--spectric-border-radius,0.4em);\n padding: calc(var(--spectric-border-radius,0.4em) + 2px);\n\n}\n:host(spectric-panel[level='0']) {\n ${even};\n}\n\n:host(spectric-panel[level='1']) {\n ${odd};\n}\n\n:host(spectric-panel[level='2']) {\n ${even};\n}\n:host(spectric-panel[level='3']) {\n ${odd};\n}\n`","import { CSSResultGroup, html, LitElement } from 'lit';\nimport styles from './panel.css.ts';\nimport { customElement } from 'lit/decorators/custom-element.js';\nimport { property } from 'lit/decorators/property.js';\n\n\n\n\n/**\n * Spectric Panel visually seperates content areas and automatically adjusts the component colors that are nested inside.\n * */\n@customElement(\"spectric-panel\")\nexport class SpectricPanel extends LitElement {\n static styles?: CSSResultGroup | undefined = styles;\n\n /**\n * Specify the layer level and override any existing levels based on hierarchy\n */\n @property({ type: Number, reflect: true })\n level = 0;\n\n @property({ attribute: false })\n layers?: NodeListOf<SpectricPanel>;\n\n updated() {\n if (!this.layers) {\n this.layers = this.querySelectorAll(\n \"spectric-panel\"\n );\n }\n\n this.layers.forEach((item: SpectricPanel) => {\n (item).setAttribute(\n 'level',\n ((this.level + 1) % 4).toString()\n );\n });\n\n this.dispatchEvent(\n new CustomEvent(\"use-layer\", {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n layer: this,\n level: this.level,\n },\n })\n );\n }\n\n render() {\n return html` <slot></slot> `;\n }\n\n}","import { css, CSSResultGroup, html, LitElement, PropertyValues } from 'lit';\nimport { customElement } from 'lit/decorators/custom-element.js';\nimport { property } from 'lit/decorators/property.js';\nimport { HTMLElementTagWithEvents, ReactElementWithPropsAndEvents } from './types';\n\n\n\nexport interface CSSProps {\n \"--primary\": string,\n \"--secondary\": string,\n \"--tertiary\": string,\n \"--disabled\": string,\n \"--background\": string,\n \"--background-inverse\": string,\n \"--text-primary\": string\n \"--text-secondary\": string\n \"--text-on-color\": string\n \"--border-radius\": string\n}\ntype InputType = {\n control: \"color\" | \"text\"\n}\nexport const CSSPropsControls: Record<keyof CSSProps, InputType> = {\n \"--primary\": { control: \"color\" },\n \"--secondary\": { control: \"color\" },\n \"--tertiary\": { control: \"color\" },\n \"--disabled\": { control: \"color\" },\n \"--background\": { control: \"color\" },\n \"--background-inverse\": { control: \"color\" },\n \"--text-primary\": { control: \"color\" },\n \"--text-secondary\": { control: \"color\" },\n \"--text-on-color\": { control: \"color\" },\n \"--border-radius\": { control: \"text\" },\n}\nconst dark = {\n \"--secondary\": \"#77878b\",\n \"--tertiary\": \"#c7c7c7\",\n \"--disabled\": \"#000000\",\n \"--text-primary\": \"#cccccc\",\n \"--text-secondary\": \"#cccccc\",\n \"--text-on-color\": \"#ededed\",\n \"--background\": \"#181818\",\n \"--background-inverse\": \"#37373d\",\n}\nconst spectric = {\n ...dark,\n \"--primary\": \"#ffd45a\",\n \"--text-on-color\": \"#4f4f4f\",\n}\nconst Themes = {\n undefined: {},\n light: {},\n dark,\n spectric,\n spectricFlat: {\n ...spectric,\n \"--border-radius\": \"1px\",\n }\n} as const\nexport type KnownThemes = keyof typeof Themes\n\nexport const ThemeSelections = Object.fromEntries(Object.keys(Themes).map(k => [k, k])) as { [k in keyof typeof Themes]: k }\n\ntype ThemeProps = {\n theme?: KnownThemes\n}\n\n\nconst theme = `\n --spectric-background: var(--background,#ffffff);\n --spectric-background-hover:var(--background-hover,rgba(141, 141, 141, 0.12));\n --spectric-background-inverse: var(--background-inverse,#f4f4f4);\n --spectric-background-inverse-hover: var(--background-inverse-hover,#474747);\n --spectric-border-radius: var(--border-radius,.4em);\n --spectric-primary:var(--primary,#1ea7fd);\n --spectric-secondary: var(--secondary,#77878b);\n --spectric-tertiary: var(--tertiary,#0f62fe);\n --spectric-disabled: var(--disabled,#c6c6c6);\n\n /* panel */\n --panel-color:var(--spectric-background-inverse);\n --panel-color-inverse:var(--spectric-background);\n --spectric-border-disabled: var(--disabled);\n\n /*inputs*/\n --spectric-input-color: var(--panel-color-inverse);\n --spectric-input-bottom: var(--panel-color);\n\n --spectric-text-on-color: var(--text-on-color,#ffffff);\n --spectric-text-on-color-disabled: var(--text-on-color-disabled,#8d8d8d);\n --spectric-text-placeholder: var(--text-placeholder,rgba(22, 22, 22, 0.4));\n --spectric-text-primary: var(--text-primary,#161616);\n --spectric-text-secondary: var(--text-secondary,#525252);\n /* Buttons */\n --spectric-button-separator: #e0e0e0;\n --spectric-button-primary: var(--primary,#1ea7fd);\n --spectric-button-secondary: var(--secondary,#77878b);\n --spectric-button-tertiary: var(--tertiary);\n --spectric-button-danger-primary: #da1e28;\n --spectric-button-danger-secondary: #da1e28;\n --spectric-button-danger-active: #750e13;\n --spectric-button-primary-active: #002d9c;\n --spectric-button-secondary-active: #6f6f6f;\n --spectric-button-tertiary-active: #002d9c;\n --spectric-button-danger-hover: #b81921;\n --spectric-button-primary-hover: #0050e6;\n --spectric-button-secondary-hover: #474747;\n --spectric-button-tertiary-hover: #0050e6;\n --spectric-text-on-color-disabled: var(--disabled,#c6c6c6)\n --spectric-button-disabled: #c6c6c6;\n color: var(--spectric-text-primary);\n `\n\nexport interface ThemeChangeEvent {\n old?: string,\n new?: string\n}\n\nexport interface ThemeEventMap {\n \"theme-change\": (event: CustomEvent<ThemeChangeEvent>) => void;\n}\n\n\n@customElement(\"spectric-theme\")\nexport class SpectricThemeProvider extends LitElement {\n static styles?: CSSResultGroup | undefined = css`:host{\n display:contents;\n}`;\n @property({ reflect: true }) theme: KnownThemes = \"undefined\";\n protected updated(_changedProperties: PropertyValues): void {\n if (_changedProperties.has(\"theme\") && this.theme != _changedProperties.get(\"theme\")) {\n const eventDetails: ThemeChangeEvent = {\n old: _changedProperties.get(\"theme\"),\n new: this.theme\n };\n this.dispatchEvent(new CustomEvent<ThemeChangeEvent>(\"theme-change\", { detail: eventDetails, bubbles: true, composed: true }))\n }\n }\n protected render() {\n let currentTheme = Object.keys(Themes).includes(this.theme) ? this.theme : \"undefined\"\n let style = Object.entries(\n Themes[currentTheme]\n )\n .map(entry => `${entry[0]}:${entry[1]};`)\n .join(\"\\n\")\n\n return html`\n ${this.theme && this.theme !== \"light\" ? html`\n <style>:host{\n ${style};\n ${theme}\n }\n /* Webkit psudo elements don't pick up variables defined by the host */\n::-webkit-scrollbar-thumb {\n background: var(--spectric-background-inverse,#393939);\n border-radius: var(--spectric-border-radius,4em);\n -webkit-border-radius: var(--spectric-border-radius,4em);\n padding-top: 1px;\n padding-bottom: 1px;\n}\n::-webkit-scrollbar-thumb:hover {\n background: var(--spectric-background-inverse-hover,#474747);\n\n}\n::-webkit-scrollbar-corner {\n background: var(--spectric-background, #ffffff);\n}\n/* Buttons */\n\n::-webkit-scrollbar-button:single-button {\n background-color: transparent;\n display: block;\n border-style: solid;\n}\n/* Up */\n::-webkit-scrollbar-button:single-button:vertical:decrement {\n border-width: 0 5px 5px 5px;\n border-color: var(--spectric-background, #ffffff) var(--spectric-background, #ffffff) var(--spectric-background-inverse,#393939) var(--spectric-background, #ffffff);\n}\n::-webkit-scrollbar-button:single-button:vertical:decrement:hover {\n border-color: var(--spectric-background, #ffffff) var(--spectric-background, #ffffff) var(--spectric-background-inverse-hover,#474747) var(--spectric-background, #ffffff);\n}\n/* Down */\n::-webkit-scrollbar-button:single-button:vertical:increment {\n border-width: 5px 5px 0 5px;\n border-color: var(--spectric-background-inverse,#393939) var(--spectric-background, #ffffff) transparent var(--spectric-background, #ffffff);\n}\n\n::-webkit-scrollbar-button:vertical:single-button:increment:hover {\n border-color: var(--spectric-background-inverse-hover,#474747) var(--spectric-background, #ffffff) transparent var(--spectric-background, #ffffff);\n}\n\n/* Left */\n::-webkit-scrollbar-button:single-button:horizontal:decrement {\n border-width: 5px 5px 5px 0;\n border-color:var(--spectric-background, #ffffff) var(--spectric-background-inverse,#393939) var(--spectric-background, #ffffff) var(--spectric-background, #ffffff);\n\n}\n\n::-webkit-scrollbar-button:single-button:horizontal:decrement:hover {\n border-width: 5px 5px 5px 0;\n border-color:var(--spectric-background, #ffffff) var(--spectric-background-inverse-hover,#474747) var(--spectric-background, #ffffff) var(--spectric-background, #ffffff);\n\n}\n\n\n\n/* Right */\n::-webkit-scrollbar-button:single-button:horizontal:increment {\n border-width: 5px 0 5px 5px;\n border-color:var(--spectric-background, #ffffff) var(--spectric-background, #ffffff) var(--spectric-background, #ffffff) var(--spectric-background-inverse,#393939);\n\n}\n\n::-webkit-scrollbar-button:single-button:horizontal:increment:hover {\n border-width: 5px 0 5px 5px;\n border-color:var(--spectric-background, #ffffff) var(--spectric-background, #ffffff) var(--spectric-background, #ffffff) var(--spectric-background-inverse-hover,#474747);\n\n}\n</style>`: null}\n <slot></slot>\n `\n }\n}\n\ndeclare global {\n //Add events that bubble up to a \"global events map\"\n interface SpectricGlobalEvents extends ThemeEventMap { }\n interface HTMLElementTagNameMap {\n \"spectric-theme\": HTMLElementTagWithEvents<SpectricThemeProvider, ThemeEventMap>\n }\n namespace JSX {\n interface IntrinsicElements {\n /**\n * {@link SpectricThemeProvider}\n */\n \"spectric-theme\": ReactElementWithPropsAndEvents<SpectricThemeProvider, ThemeProps, ThemeEventMap>;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * {@link SpectricThemeProvider}\n */\n \"spectric-theme\": ReactElementWithPropsAndEvents<SpectricThemeProvider, ThemeProps, ThemeEventMap>;\n }\n }\n }\n}\n\n","import { css } from \"lit\";\n\nexport const style = css`\n :host {\n display: block;\n height: 100%;\n width: 100%;\n\n }\n .split-view {\n display: flex;\n height: 100%;\n width: 100%;\n position:relative;\n }\n .split-view.active{\n cursor:ew-resize;\n }\n .split-view.active.vertical{\n cursor:ns-resize;\n }\n .split-view.vertical {\n flex-direction: column;\n }\n .panel {\n flex: 1;\n overflow: auto;\n }\n .splitter {\n border-radius: var(--spectric-border-radius, .4em);\n background-color: var(--spectric-input-color,#ccc);\n user-select: none;\n transition: background-color 100ms linear;\n }\n \n .splitter.invisible {\n background-color: #00000000;\n }\n .splitter:hover {\n background-color: var(--spectric-button-primary, #1ea7fd);\n transition: background-color 500ms linear;\n }\n .splitter.active {\n background-color: var(--spectric-button-primary, #1ea7fd);\n transition: background-color 500ms linear;\n }\n .split-view > .error-display{\n display:none;\n position:absolute;\n top:0;\n right:0\n }\n .split-view.error > .error-display{\n display:inline-block;\n\n }\n .split-view.vertical .splitter {\n cursor: ns-resize;\n height: 5px;\n width: 100%;\n }\n .split-view:not(.vertical) .splitter {\n width: 5px;\n cursor: ew-resize;\n }\n `;","import { html, PropertyValues, } from 'lit-element';\nimport { DisposableElement } from '../../classes/DisposibleElement';\nimport { customElement, property, query, queryAsync, state } from 'lit/decorators.js';\n\nimport { style } from './splitview.css';\nimport { HTMLElementTagWithEvents, ReactElementWithPropsAndEvents } from '../types';\nimport { debounceAnimation } from '../../utils/debounce';\n\nexport enum Orientations {\n horizontal = \"horizontal\",\n vertical = \"vertical\"\n}\nexport interface SplitViewProps {\n /** Controls the orientation of the splitter handle */\n orientation?: `${Orientations}`;\n /** the percentage to split the view default: 50*/\n percentage?: number\n /** Should the splitter handle be invisible? */\n invisible?: boolean\n /** Clamps the minimum split percentage default: 10 */\n min?: number\n /** Clamps the maximum split percentage default: 90 */\n max?: number\n /** save and load split state to localstorage splitter must have an id attribute default: true */\n useSavedState?: boolean\n}\nexport const ElementTag = 'spectric-splitview'\n/**\n * Split view will take a container and split it horizontally or vertically. This element can only have two children.\n * If you supply the **id** attribute on the split view element it will save and load the state keeping the user defined position\n * @slot - Element can only take 2 HTMLElements.\n */\n@customElement(ElementTag)\nexport class SplitView extends DisposableElement implements SplitViewProps {\n\n @property({ type: String }) orientation = 'horizontal' as Orientations;\n\n @property({ type: Number, reflect: true }) percentage: SplitViewProps['percentage'] = 50;\n\n @property({ type: Boolean }) invisible: SplitViewProps['invisible'] = false;\n static styles = style\n\n @property({ type: Number, reflect: true }) min: number = 10;\n @property({ type: Number, reflect: true }) max: number = 90;\n @property({ type: Boolean, reflect: true }) useSavedState: SplitViewProps['useSavedState'] = true;\n\n @state()\n private isDragging: boolean = false;\n @state()\n private _error: string | false = false;\n @queryAsync(\".splitter\")\n private _splitter!: Promise<HTMLElement>\n\n @query(\"slot[name='panel1']\")\n private _panel1!: HTMLSlotElement\n @query(\"slot[name='panel2']\")\n private _panel2!: HTMLSlotElement\n constructor() {\n super()\n let id = this.getAttribute(\"id\");\n if (id && this.useSavedState) {\n let savedValue = localStorage.getItem(`splitview-${id}`)\n if (savedValue) {\n this.percentage = parseFloat(savedValue)\n }\n }\n this.addDisposableListener(this._splitter, \"mousedown\", () => {\n this.isDragging = true;\n })\n /**\n * On double click set percentage to 50%\n */\n this.addDisposableListener(this._splitter, \"dblclick\", () => {\n this.percentage = 50\n this._emitChange()\n })\n this.addDisposableListener(document.body, \"mousemove\", this._onMouseMove)\n this.addDisposableListener(document.body, 'mouseup', () => {\n this.isDragging = false;\n });\n }\n\n protected updated(changedProperties: PropertyValues): void {\n if (changedProperties.has(\"percentage\")) {\n this.percentage = Math.min(Math.max(Number(this.percentage), this.min), this.max)\n }\n }\n _emitChange = () => {\n let { percentage, orientation, invisible, min, max, useSavedState } = this\n let id = this.getAttribute(\"id\");\n if (id && this.useSavedState) {\n localStorage.setItem(`splitview-${id}`, String(percentage))\n }\n /** CustomEvent\\<SplitViewProps\\> Fired every time there is a change to the split percentage */\n this.dispatchEvent(new CustomEvent<SplitViewProps>(\"change\", { detail: { orientation, percentage, invisible, min, max, useSavedState } }))\n }\n _onMouseMove = debounceAnimation((e: MouseEvent) => {\n if (this.isDragging) {\n const rect = this.getBoundingClientRect();\n let offset: number;\n let percentage: number;\n if (this.orientation === 'horizontal') {\n offset = e.clientX - rect.left;\n percentage = (offset / rect.width) * 100;\n } else {\n offset = e.clientY - rect.top;\n percentage = (offset / rect.height) * 100;\n }\n //clamp to min/mix of the split\n percentage = Math.min(Math.max(percentage, this.min), this.max)\n this.percentage = percentage\n this._emitChange()\n }\n });\n private _assignSlot = (e: Event) => {\n if (!e.target) {\n return\n }\n let slot = e.target as HTMLSlotElement;\n let nodes = slot.assignedNodes().filter(n => n instanceof HTMLElement);\n if (nodes.length > 2) {\n console.log(\"cannot assign more than 2 elements to a split view\")\n }\n nodes.forEach(element => {\n if (this._panel1.assignedNodes().length === 0) {\n element.slot = \"panel1\"\n return\n }\n if (this._panel2.assignedNodes().length === 0) {\n element.slot = \"panel2\"\n return\n }\n this._error = \"Too many element assigned to split view splitter can only have a maximum of 2 children\"\n console.warn(\"Too many element assigned to split view splitter can only have a maximum of 2 children\")\n }\n )\n }\n render() {\n return html`\n <div class=\"split-view ${this.orientation} ${this._error ? \"error\" : \"\"} ${this.isDragging ? \"active\" : \"\"}\" style=\"--split-percentage: ${this.percentage}%;\">\n <span class=\"error-display\">${this._error}</span>\n <div class=\"panel\" style=\"${this.orientation === 'horizontal' ? 'flex: var(--split-percentage, 50%)' : 'max-height: var(--split-percentage, 50%)'}\">\n <slot name=\"panel1\"></slot>\n </div>\n <div class=\"splitter ${this.invisible ? \"invisible\" : \"\"} ${this.isDragging ? \"active\" : \"\"}\"></div>\n <div class=\"panel\" style=\"${this.orientation === 'horizontal' ? 'flex: calc(100% - var(--split-percentage, 50%))' : 'max-height: calc(100% - var(--split-percentage, 50%))'}\">\n <slot name=\"panel2\"></slot>\n </div>\n </div>\n <slot @slotchange=${this._assignSlot} style=\"display:none\"></slot>\n `;\n }\n}\n\nexport interface SplitViewEvents {\n 'change': (event: CustomEvent<SplitViewProps>) => void;\n}\n\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [ElementTag]: HTMLElementTagWithEvents<SplitView, SplitViewEvents>\n\n }\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link SplitView}\n */\n [ElementTag]: ReactElementWithPropsAndEvents<SplitView, SplitViewProps, SplitViewEvents>;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link SplitView}\n */\n [ElementTag]: ReactElementWithPropsAndEvents<SplitView, SplitViewProps, SplitViewEvents>\n }\n }\n }\n}\n","import { html, LitElement, PropertyValues } from 'lit';\nimport \"../Button\";\nimport { customElement, property, query, } from 'lit/decorators.js';\nimport { HTMLElementTagWithEvents, ReactElementWithPropsAndEvents } from '../types';\nexport const PaginationElementTag = \"spectric-pagination\"\nimport \"./pagination.css\"\nimport { ButtonSizesTypes } from '../Button';\nexport type { PaginationProps, PaginationChangeProps, PaginationEvents }\n\ninterface PaginationChangeProps {\n page?: number;\n pageSize?: number;\n}\n\ninterface PaginationProps extends PaginationChangeProps {\n size?: ButtonSizesTypes\n totalItems?: number\n pageSizeOptions?: number[]\n}\n\nconsole.log(\"Pagination\")\n\n/**\n * Pagination Element\n */\n@customElement(PaginationElementTag)\nexport class PaginationElement extends LitElement implements PaginationProps {\n @property({ type: Number, reflect: true })\n page: number = 1;\n\n @property({ type: Number, reflect: true })\n pageSize: number = 10;\n\n @property({ type: Number, reflect: true })\n totalItems?: number;\n\n @property({ type: Array })\n pageSizeOptions = [10, 20, 50, 100, 1000];\n\n @query(\"select\")\n select?: HTMLSelectElement\n /**\n * Size of the pagination buttons\n */\n @property({ type: String, reflect: true })\n size: ButtonSizesTypes = \"xsmall\"\n protected createRenderRoot(): HTMLElement | DocumentFragment {\n return this\n }\n protected updated(_changedProperties: PropertyValues): void {\n if (_changedProperties.has(\"pageSize\") && !this.pageSizeOptions.includes(this.pageSize)) {\n this.pageSizeOptions = [...this.pageSizeOptions, this.pageSize].sort((a, b) => a - b)\n /**\n * If an option isn't present in the select options list it cannot update its value until after the option is present.\n * We requests an animation frame to make sure we the value was set correctly after the option is added. We update it if the value is incorrect\n */\n requestAnimationFrame(() => {\n if (this.select && this.select.value !== String(this.pageSize)) {\n this.select.value = String(this.pageSize)\n }\n })\n }\n }\n private _handlePageUp = () => {\n this.page += 1\n this._emitChange()\n }\n private _handlePageDown = () => {\n this.page -= 1\n this._emitChange()\n }\n private _handleSizeChange = (e: any) => {\n e.stopPropagation()\n e.preventDefault()\n let value = parseInt(e.target.value)\n this.pageSize = value\n this._emitChange()\n }\n private _emitChange = () => {\n let { page, pageSize } = this\n this.dispatchEvent(new CustomEvent<PaginationChangeProps>(\"change\", { detail: { page, pageSize } }))\n }\n protected render(): unknown {\n let nextPage = (this.page) * this.pageSize\n let nextPageDisabled = true\n\n if (this.totalItems && nextPage < this.totalItems) {\n nextPageDisabled = false\n }\n let pageText = \"\"\n if (this.totalItems) {\n pageText = `${this.page} of ${Math.ceil(this.totalItems / this.pageSize)}`\n }\n return html`\n <div class=\"spectric-pagination-container\">\n <div>\n <!-- TODO/FIXME Make a select component and use it for cross browser styling-->\n <select @change=${this._handleSizeChange} .value=${String(this.pageSize)}>\n ${this.pageSizeOptions.map(size => html`<option .value=${String(size)} class=${String(size) === String(this.pageSize) ? \"selected\" : \"\"}>${size}</option>`)}\n </select>\n </div>\n ${this.totalItems ? html`\n <div class=\"spectric-pagination-text\">${`Items ${(this.page - 1) * this.pageSize}-${Math.min(this.page * this.pageSize, this.totalItems)} of ${this.totalItems}`}</div>\n <div class=\"spectric-pagination-container\">\n <div>\n ${pageText}\n </div>\n <div>\n <spectric-button size=${this.size} ?disabled=${this.page === 1} @click=${this._handlePageDown} icon>🠈</spectric-button>\n <spectric-button size=${this.size} ?disabled=${nextPageDisabled} @click=${this._handlePageUp} icon>🠊</spectric-button>\n </div>\n </div>\n `: null}\n </div>\n `;\n }\n}\n\ninterface PaginationEvents {\n 'change': (event: CustomEvent<PaginationChangeProps>) => void;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [PaginationElementTag]: HTMLElementTagWithEvents<PaginationElement, PaginationEvents>\n\n }\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link PaginationElement}\n */\n [PaginationElementTag]: ReactElementWithPropsAndEvents<PaginationElement, PaginationProps, PaginationEvents>;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link PaginationElement}\n */\n [PaginationElementTag]: ReactElementWithPropsAndEvents<PaginationElement, PaginationProps, PaginationEvents>\n }\n }\n }\n}\n","import { html, LitElement } from 'lit';\nimport \"../pagination\";\nimport { customElement, property, } from 'lit/decorators.js';\nimport { HTMLElementTagWithEvents, ReactElementWithPropsAndEvents } from '../types';\nimport \"./table.css\"\nexport const TableHeaderElementTag = \"spectric-table-header\"\nimport { ColumnSettings, TableSortDirection } from './table';\n\n\ninterface HeaderProps<T> {\n columns: ColumnSettings<T>[]\n}\n\n/**\n * Pagination Element\n */\n@customElement(TableHeaderElementTag)\nexport class TableHeaderElement<T> extends LitElement implements HeaderProps<T> {\n @property({ type: Array, attribute: false })\n columns: ColumnSettings<T>[] = [];\n\n protected createRenderRoot(): HTMLElement | DocumentFragment {\n return this\n }\n _handleSortChange = (column: ColumnSettings<T>) => {\n column = JSON.parse(JSON.stringify(column))// Clone the column to not mutate the original object\n if (!column.sortable) {\n return\n }\n if (column.sortDirection === TableSortDirection.none || column.sortDirection === undefined) {\n column.sortDirection = TableSortDirection.ascending\n } else if (column.sortDirection === TableSortDirection.ascending) {\n column.sortDirection = TableSortDirection.descending\n } else if (column.sortDirection === TableSortDirection.descending) {\n column.sortDirection = TableSortDirection.none\n }\n this.dispatchEvent(new CustomEvent<ColumnSettings<T>>(\"sortChange\", {\n composed: true,\n bubbles: true,\n detail: column\n }))\n }\n protected render(): unknown {\n return html`\n <tr>\n ${this.columns.map(column => {\n let classes = [\"header-contents\"]\n if (column.filterable) {\n //classes.push(\"filterable\")\n }\n if (column.sortable) {\n classes.push(\"sortable\")\n }\n let columnWidth = column.width ? `width:${column.width}px;` : \"\"\n let sortDirection = column.sortDirection === TableSortDirection.ascending ? `🠉` : column.sortDirection == TableSortDirection.descending ? `🠋` : ``\n let sortClass = column.sortDirection || TableSortDirection.none\n return html`\n <td @click=${() => this._handleSortChange(column)} style=\"${columnWidth}\">\n <div class=${classes.join(\" \")} >${column.title || column.key} \n <span class=\"sort-direction ${sortClass}\">${sortDirection}</span>\n </div>\n </td>`\n })}\n </tr>\n `\n }\n}\n\ninterface TableHeaderEvents {\n 'sortChange': (event: CustomEvent<ColumnSettings<any>>) => void; //TODO sort events\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [TableHeaderElementTag]: HTMLElementTagWithEvents<TableHeaderElement<any>, TableHeaderEvents>\n\n }\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link DialogElement}\n */\n [TableHeaderElementTag]: ReactElementWithPropsAndEvents<TableHeaderElement<any>, HeaderProps<any>, TableHeaderEvents>;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link DialogElement}\n */\n [TableHeaderElementTag]: ReactElementWithPropsAndEvents<TableHeaderElement<any>, HeaderProps<any>, TableHeaderEvents>\n }\n }\n }\n}\n","import{render as t,nothing as i}from\"../lit-html.js\";import{directive as s,Directive as e}from\"../directive.js\";import{isTemplateResult as o,getCommittedValue as n,setCommittedValue as r,insertPart as l,clearPart as c,isCompiledTemplateResult as u}from\"../directive-helpers.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const d=t=>u(t)?t._$litType$.h:t.strings,h=s(class extends e{constructor(t){super(t),this.et=new WeakMap}render(t){return[t]}update(s,[e]){const u=o(this.it)?d(this.it):null,h=o(e)?d(e):null;if(null!==u&&(null===h||u!==h)){const e=n(s).pop();let o=this.et.get(u);if(void 0===o){const s=document.createDocumentFragment();o=t(i,s),o.setConnected(!1),this.et.set(u,o)}r(o,[e]),l(o,void 0,e)}if(null!==h){if(null===u||u!==h){const t=this.et.get(h);if(void 0!==t){const i=n(t).pop();c(s),l(s,void 0,i),r(s,[i])}}this.it=e}else this.it=void 0;return this.render(e)}});export{h as cache};\n//# sourceMappingURL=cache.js.map\n","import { html, LitElement, PropertyValues } from 'lit';\nimport { customElement, property, query, } from 'lit/decorators.js';\nimport { HTMLElementTagWithEvents, ReactElementWithPropsAndEvents } from '../types';\nexport const TableCellElementTag = \"spectric-table-cell\"\nimport { ColumnSettings, TableElement } from './table';\nimport { cache } from 'lit/directives/cache.js';\nimport { StyleInfo, styleMap } from 'lit/directives/style-map.js';\n\ninterface CellProps<T> {\n column: ColumnSettings<T>\n row: T\n}\n\nexport type FilterEvent<T> = {\n value?: T,\n include: boolean\n column: ColumnSettings<T>\n row: T\n}\n\n/**\n * Pagination Element\n */\n@customElement(TableCellElementTag)\nexport class TableCellElement<T> extends LitElement implements CellProps<T> {\n @property({ type: Object, attribute: false })\n row!: T;\n\n @property({ type: Number, attribute: false })\n index!: number;\n @property({ type: Object, attribute: false })\n column!: ColumnSettings<T>;\n columns!: ColumnSettings<T>[];\n table!: TableElement<T>\n\n @query(\"td\")\n td!: HTMLTableCellElement\n styleRules: StyleInfo = { whiteSpace: \"\", width: \"\" };\n protected createRenderRoot(): HTMLElement | DocumentFragment {\n return this\n }\n protected updated(_changedProperties: PropertyValues): void {\n\n }\n _emitFilter(filter: FilterEvent<T>) {\n this.dispatchEvent(new CustomEvent<FilterEvent<T>>(\"filter\", {\n composed: true,\n bubbles: true,\n detail: filter\n }))\n }\n _handleFilterOut = () => {\n let value = undefined;\n if (this.column.key && typeof this.row === \"object\") {\n value = rowGetValue(this.row as Record<any, any>, this.column.key)\n }\n this._emitFilter({\n include: false,\n row: this.row,\n value,\n column: this.column\n })\n\n }\n _handleFilterFor = () => {\n let value = undefined;\n if (this.column.key && typeof this.row === \"object\") {\n value = rowGetValue(this.row as Record<any, any>, this.column.key)\n }\n this._emitFilter({\n include: true,\n row: this.row,\n value,\n column: this.column\n })\n }\n protected render(): unknown {\n let rendered\n if (this.column.render) {\n rendered = this.column.render(this.row, this.index, this.table)\n } else if (this.column.key && typeof this.row === 'object') {\n rendered = rowGetValue(this.row as any, this.column.key)\n } else {\n rendered = html`error`\n }\n let classes = [\"cell-contents\"]\n if (this.column.filterable) {\n classes.push(\"filterable\")\n }\n\n let filterButtons = cache(this.column.filterable\n ? html`<div class=\"table-cell-actions\">\n <spectric-button @click=${this._handleFilterOut} size=\"tiny\" variant=\"text\" icon tooltip=\"Filter Out Value\">-</spectric-button>\n <spectric-button @click=${this._handleFilterFor} size=\"tiny\" variant=\"text\" icon tooltip=\"Filter For Value\">+</spectric-button></div>`\n : null\n )\n this.styleRules = {\n width: this.column.width ? this.column.width + \"px\" : \"\",\n whiteSpace: this.column.whiteSpace || \"\"\n }\n return html`\n <td style=${styleMap(this.styleRules)}>\n ${filterButtons}\n <div class=${classes.join(\" \")}>${rendered}</div>\n </td>\n `\n }\n\n}\n\ninterface TableBodyEvents {\n 'filter': (event: CustomEvent<ColumnSettings<any>>) => void; //TODO filter events\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [TableCellElementTag]: HTMLElementTagWithEvents<TableCellElement<any>, TableBodyEvents>\n\n }\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link DialogElement}\n */\n [TableCellElementTag]: ReactElementWithPropsAndEvents<TableCellElement<any>, CellProps<any>, TableBodyEvents>;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link DialogElement}\n */\n [TableCellElementTag]: ReactElementWithPropsAndEvents<TableCellElement<any>, CellProps<any>, TableBodyEvents>\n }\n }\n }\n}\n\n\nexport const rowGetValue = (context: Record<string, any>, key: string) => {\n let path = key.split(\".\")\n let value = context[path[0]]\n if (value === null || value === undefined) {\n return value\n }\n if (path.length > 1) {\n value = rowGetValue(value, path.slice(1).join(\".\"))\n }\n return value\n}","import{noChange as e}from\"../lit-html.js\";import{directive as s,Directive as t,PartType as r}from\"../directive.js\";import{getCommittedValue as l,setChildPartValue as o,insertPart as i,removePart as n,setCommittedValue as f}from\"../directive-helpers.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst u=(e,s,t)=>{const r=new Map;for(let l=s;l<=t;l++)r.set(e[l],l);return r},c=s(class extends t{constructor(e){if(super(e),e.type!==r.CHILD)throw Error(\"repeat() can only be used in text expressions\")}dt(e,s,t){let r;void 0===t?t=s:void 0!==s&&(r=s);const l=[],o=[];let i=0;for(const s of e)l[i]=r?r(s,i):i,o[i]=t(s,i),i++;return{values:o,keys:l}}render(e,s,t){return this.dt(e,s,t).values}update(s,[t,r,c]){const d=l(s),{values:p,keys:a}=this.dt(t,r,c);if(!Array.isArray(d))return this.ut=a,p;const h=this.ut??=[],v=[];let m,y,x=0,j=d.length-1,k=0,w=p.length-1;for(;x<=j&&k<=w;)if(null===d[x])x++;else if(null===d[j])j--;else if(h[x]===a[k])v[k]=o(d[x],p[k]),x++,k++;else if(h[j]===a[w])v[w]=o(d[j],p[w]),j--,w--;else if(h[x]===a[w])v[w]=o(d[x],p[w]),i(s,v[w+1],d[x]),x++,w--;else if(h[j]===a[k])v[k]=o(d[j],p[k]),i(s,d[x],d[j]),j--,k++;else if(void 0===m&&(m=u(a,k,w),y=u(h,x,j)),m.has(h[x]))if(m.has(h[j])){const e=y.get(a[k]),t=void 0!==e?d[e]:null;if(null===t){const e=i(s,d[x]);o(e,p[k]),v[k]=e}else v[k]=o(t,p[k]),i(s,d[x],t),d[e]=null;k++}else n(d[j]),j--;else n(d[x]),x++;for(;k<=w;){const e=i(s,v[w+1]);o(e,p[k]),v[k++]=e}for(;x<=j;){const e=d[x++];null!==e&&n(e)}return this.ut=a,f(s,v),e}});export{c as repeat};\n//# sourceMappingURL=repeat.js.map\n","import { html, LitElement, PropertyValues } from 'lit';\nimport { customElement, property, } from 'lit/decorators.js';\nimport { HTMLElementTagWithEvents, ReactElementWithPropsAndEvents } from '../types';\nexport const TableBodyElementTag = \"spectric-table-body\"\nimport \"./cell\"\nimport { ColumnSettings, TableElement } from './table';\nimport { repeat } from 'lit/directives/repeat.js';\n\ninterface BodyProps<T> {\n columns: ColumnSettings<T>[]\n data: T[]\n}\n\n\n/**\n * Table Body Element\n */\n@customElement(TableBodyElementTag)\nexport class TableBodyElement<T> extends LitElement implements BodyProps<T> {\n @property({ type: Array, attribute: false })\n data: T[] = [];\n @property({ type: Array, attribute: false })\n columns: ColumnSettings<T>[] = [];\n table!: TableElement<T>\n protected createRenderRoot(): HTMLElement | DocumentFragment {\n return this\n }\n protected firstUpdated(_changedProperties: PropertyValues): void {\n if (this.data.length > 100) {\n console.warn(\"Table is rendering excessive amounts of data to the DOM you should set rowHeight and use a virtualized scroll or use pagination\")\n }\n }\n protected render(): unknown {\n return html`\n <body>\n ${repeat(this.data, (row, index) => html`\n <tr class=\"${index % 2 === 0 ? \"odd\" : \"\"}\">\n ${repeat(this.columns, (col) => {\n return html`<spectric-table-cell .column=${col} .index=${index} .row=${row} .columns=${this.columns}></spectric-table-cell>`\n })}\n </tr>`)}\n\n </body>\n `\n\n }\n\n}\n\ninterface TableBodyEvents {\n //'sort': (event: CustomEvent<ColumnSettings<any>>) => void; //TODO sort events\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [TableBodyElementTag]: HTMLElementTagWithEvents<TableBodyElement<any>, TableBodyEvents>\n\n }\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link DialogElement}\n */\n [TableBodyElementTag]: ReactElementWithPropsAndEvents<TableBodyElement<any>, BodyProps<any>, TableBodyEvents>;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link DialogElement}\n */\n [TableBodyElementTag]: ReactElementWithPropsAndEvents<TableBodyElement<any>, BodyProps<any>, TableBodyEvents>\n }\n }\n }\n}\n","import { html } from 'lit';\nimport { customElement, property, } from 'lit/decorators.js';\nimport { HTMLElementTagWithEvents, ReactElementWithPropsAndEvents } from '../types';\nexport const TableBodyElementTag = \"spectric-table-virtual-body\"\nimport \"./cell\"\nimport { ColumnSettings, TableElement } from './table';\nimport { repeat } from 'lit/directives/repeat.js';\nimport { DisposableElement } from '../../classes/DisposibleElement';\nimport \"./virtualBody.css\"\ninterface BodyProps<T> {\n columns: ColumnSettings<T>[]\n data: T[]\n rowHeight: number\n}\n\n\n/**\n * Table Body Element\n */\n@customElement(TableBodyElementTag)\nexport class TableVirtualBodyElement<T> extends DisposableElement implements BodyProps<T> {\n @property({ type: Array, attribute: false })\n data: T[] = [];\n @property({ type: Array, attribute: false })\n columns: ColumnSettings<T>[] = [];\n @property({ type: Number, attribute: false })\n rowHeight: number = 30;\n\n @property({ type: Number, state: true })\n startIndex: number = 0\n\n table!: TableElement<T>\n constructor() {\n super()\n this.addDisposableListener(() => this.table.querySelector(\".table-wrapper\")!, \"scroll\", () => {\n const scrollTop = this.table.querySelector(\".table-wrapper\")!.scrollTop;\n requestAnimationFrame(() => {\n this.startIndex = Math.floor(scrollTop / this.rowHeight);\n })\n })\n }\n protected firstUpdated(): void {\n this.columns.forEach(col => {\n if (!col.width) {\n console.warn(\"When using virtual scrolling it is recomended to set the width of the columns to prevent columns widths from jittering during scroll\")\n }\n })\n }\n protected createRenderRoot(): HTMLElement | DocumentFragment {\n return this\n }\n protected render(): unknown {\n let totalRows = this.data.length\n let buffer = 10 // Have a buffer of rows to prevent column jitter\n let headerHeight = this.table.querySelector(\"spectric-table-header\")!.clientHeight\n let viewport = this.table.querySelector(\".table-wrapper\")!\n let startIndex = Math.max(this.startIndex - buffer, 0) //pad the front with 10 rows\n const rowsThatFit = Math.ceil((viewport.clientHeight - headerHeight) / this.rowHeight);\n const endIndex = Math.min(startIndex + rowsThatFit + buffer, totalRows);\n const visibleRows = endIndex - startIndex\n let totalHeight = totalRows * this.rowHeight\n let beforeHeight = (startIndex * this.rowHeight) + (viewport.scrollTop - (startIndex * this.rowHeight))\n if (endIndex === totalRows) {\n beforeHeight = (startIndex * this.rowHeight)\n }\n let visibleHeight = (visibleRows * this.rowHeight)\n let afterHeight = totalHeight - beforeHeight - visibleHeight\n let spacerElementBefore = this.startIndex != 0 ? html`\n <tr style=\"height:${beforeHeight}px\" class=\"virtual-scroll-spacer\">\n <td colspan=\"${this.columns.length}\"></td></tr>` : null\n\n let spacerElementAfter = html`\n <tr style=\"height:${afterHeight}px\" class=\"virtual-scroll-spacer\">\n <td colspan=\"${this.columns.length}\"></td></tr>`\n return html`\n <div style=\"height:${totalHeight}px;position: absolute;overflow-x: hidden;overflow-y: hidden;z-index:-1;width:1px;\"></div>\n <tbody>\n ${spacerElementBefore}\n </tbody>\n <div style=\"display:table-row-group;max-height:${visibleHeight}px; overflow:hidden;\">\n\n ${repeat(this.data.slice(Math.max(startIndex, 0), endIndex), (row, index) => html`\n <tr class=\"${(index + startIndex) % 2 === 0 ? \"odd\" : \"\"}\">\n ${repeat(this.columns, (col) => {\n return html`<spectric-table-cell .column=${col} .row=${row} .index=${index + startIndex} .columns=${this.columns}></spectric-table-cell>`\n })}\n </tr>`)\n }\n </div>\n <tbody>\n ${afterHeight > 0 ? spacerElementAfter : null}\n</tbody>\n\n `\n\n }\n\n}\n\ninterface TableBodyEvents {\n //'sort': (event: CustomEvent<ColumnSettings<any>>) => void; //TODO sort events\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [TableBodyElementTag]: HTMLElementTagWithEvents<TableVirtualBodyElement<any>, TableBodyEvents>\n\n }\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link DialogElement}\n */\n [TableBodyElementTag]: ReactElementWithPropsAndEvents<TableVirtualBodyElement<any>, BodyProps<any>, TableBodyEvents>;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link DialogElement}\n */\n [TableBodyElementTag]: ReactElementWithPropsAndEvents<TableVirtualBodyElement<any>, BodyProps<any>, TableBodyEvents>\n }\n }\n }\n}\n","import { once } from \"../../utils/once\";\nimport { rowGetValue } from \"./cell\";\nimport { ColumnSettings, TableSortDirection } from \"./table\";\n\n/**\n * Creates a chain of sort functions so you can perform multi column sorting.\n */\nexport const createSortChain = <T>(sorts: ColumnSettings<T>[]) => {\n return sorts.map(({ key, sortDirection, compareFn }) => {\n return (a: T, b: T) => {\n if (!key) {\n return undefined\n }\n let v1 = rowGetValue(a as Record<string, any>, key)\n let v2 = rowGetValue(b as Record<string, any>, key)\n if (compareFn) {\n return compareFn(a, b)\n }\n if (typeof v1 === \"number\" || typeof v1 === \"bigint\" || typeof v1 === \"boolean\") {\n //@ts-ignore\n let sort: number = v1 - v2 as unknown as number\n if (sortDirection === TableSortDirection.descending) {\n sort = sort * -1\n }\n return sort\n } else if (typeof v1 === \"string\") {\n return v1.localeCompare(v2) * (sortDirection === TableSortDirection.descending ? -1 : 1)\n }\n once(() => { console.error(`Unable to sort type ${typeof v1}`) })\n return undefined\n\n }\n })\n}","import { html, LitElement, PropertyValues, render, TemplateResult } from 'lit';\nimport \"../pagination\";\nimport \"./header\"\nimport \"./body\"\nimport { customElement, property, state, } from 'lit/decorators.js';\nimport { HTMLElementTagWithEvents, ReactElementWithPropsAndEvents } from '../types';\nimport \"./virtualBody\"\nimport \"./table.css\"\nexport const TableElementTag = \"spectric-table\"\nimport { spreadProps } from '../../utils/spread';\nimport { PaginationChangeProps, PaginationProps } from '../pagination';\nimport { FilterEvent } from './cell';\nimport { createSortChain } from './sorting';\n\nexport type { TableProps, TableEvents }\n\nexport type DomRenderable = HTMLElement | TemplateResult | string | number | null\nexport enum TableSelectOptions {\n multi = \"multi\",\n single = \"single\",\n none = \"none\"\n}\n\nexport enum TableSortOption {\n multi = \"multi\",\n single = \"single\",\n}\nexport type TableSortOptionTypes = `${TableSortOption}`\nexport enum TableSortDirection {\n ascending = \"ascending\",\n descending = \"descending\",\n none = \"none\"\n}\nexport type TableSortDirectionTypes = `${TableSortDirection}`\nexport type ColumnSettings<T> = {\n width?: number\n whiteSpace?: \"nowrap\";\n hidden?: boolean\n sortable?: boolean\n sortDirection?: TableSortDirectionTypes\n filterable?: boolean\n title?: DomRenderable\n /**\n * Key to used for getting data from an object for a cell \n */\n key?: string\n /**\n * Render function to render a table cell for displaying custom html\n */\n render?: (row: T, index: number, table: TableElement<T>) => DomRenderable\n /**\n * Custom comparator function for sorting\n */\n compareFn?: ((a: T, b: T) => number) | undefined\n}\nexport type TableSelectOptionsTypes = `${TableSelectOptions}`\nexport interface TableDataOptions<T> {\n pagination?: PaginationProps\n columns: ColumnSettings<T>[]\n}\ninterface TableProps<T> extends TableDataOptions<T> {\n data: T[]\n select: TableSelectOptionsTypes\n sort?: TableSortOptionTypes\n rowHeight?: number\n}\n\ntype DomEvent<T> = Event & {\n target: T\n}\n/**\n * React example\n * <iframe width=\"100%\" height=\"400px\" src=\"https://stackblitz.com/edit/react-ts-2ue7azag?ctl=1&embed=1&file=App.tsx&hideExplorer=1&hideNavigation=1\"/>\n *\n */\n@customElement(TableElementTag)\nexport class TableElement<T> extends LitElement implements TableProps<T> {\n @property({ type: Array, attribute: false })\n data: T[] = [];\n @property({ type: Object, attribute: false })\n pagination?: PaginationProps;\n @property({ attribute: false })\n columns: ColumnSettings<T>[] = [];\n @property({ type: String, reflect: true })\n select: TableSelectOptionsTypes = TableSelectOptions.none;\n @property({ type: String, reflect: true })\n sort: TableSortOptionTypes = TableSortOption.single;\n\n /**\n * Needed for virtualization \n */\n @property({ type: Number, reflect: true })\n rowHeight: number = 25;\n\n static getDefaultDataSorterAndPaginatior<T>(data: T[]) {\n return (props: TableDataOptions<T>) => {\n let sorts = props.columns.filter(column => column.sortable && column.sortDirection && column.sortDirection !== TableSortDirection.none)\n let rows = [...data] // Need to copy the array to prevent mutating the ordering of the original data\n if (sorts.length) {\n let sortChain = createSortChain(sorts)\n rows.sort((a, b) => {\n for (let sort of sortChain) {\n let result = sort(a, b)\n if (result) {\n return result\n }\n }\n return 0\n })\n }\n\n if (!props.pagination) {\n return rows\n }\n let { page, pageSize } = props.pagination\n if (!page || !pageSize) {\n return rows\n }\n return !props.pagination ? rows : rows.slice((page - 1) * pageSize, (page) * pageSize)\n }\n }\n\n private _handlePaginationChange = (e: CustomEvent<PaginationChangeProps>) => {\n if (this.pagination) {\n let pagination = { ...this.pagination, ...e.detail }\n\n let { totalItems, page, pageSize } = pagination\n if (totalItems && page && pageSize && ((page - 1) * pageSize) > totalItems) {\n pagination.page = 1\n }\n this.pagination = pagination\n }\n this.dispatchEvent(new CustomEvent<PaginationChangeProps>(\"paginationChange\", { detail: e.detail }))\n this._emitChange()\n };\n private _handleSortChange = (e: CustomEvent<ColumnSettings<T>>) => {\n let columnSetting = e.detail\n let column = this.columns.find(col => col.key == columnSetting.key)\n if (!column) {\n console.warn(\"Unable to find sort column\")\n return\n }\n if (this.sort == TableSortOption.single) {\n //Single column sort so we reset the sort direction for all columns\n this.columns.forEach(col => {\n col.sortDirection = TableSortDirection.none\n })\n }\n column.sortDirection = columnSetting.sortDirection;\n this.columns = [...this.columns]\n this._emitChange()\n }\n\n private _emitChange = () => {\n let { pagination, columns } = this\n this.dispatchEvent(new CustomEvent<TableDataOptions<T>>(\"change\", { detail: { pagination, columns } }))\n }\n //@ts-ignore\n private __DO_NOT_USE_filter = () => {\n //This is only here to auto document events that bubble up from lower components\n this.dispatchEvent(new CustomEvent<FilterEvent<T>>(\"filter\"))\n this.dispatchEvent(new CustomEvent<ColumnSettings<T>>(\"sortChange\"))\n }\n @state()\n private selected: T[] = [];\n protected createRenderRoot(): HTMLElement | DocumentFragment {\n return this\n }\n deselectAll() {\n this.selected = []\n this.dispatchEvent(new CustomEvent(\"selected\", { detail: this.selected }))\n }\n selectAll() {\n this.selected = [...this.data]\n this.dispatchEvent(new CustomEvent(\"selected\", { detail: this.selected }))\n }\n _handleSelectAllChange = (e: DomEvent<HTMLInputElement>) => {\n e.stopPropagation()\n if (e.target.checked) {\n this.selectAll()\n } else {\n this.deselectAll()\n }\n }\n protected update(changedProperties: PropertyValues): void {\n if (changedProperties.has(\"select\")) {\n if (this.select === \"single\" && this.selected.length > 1) {\n this.selected = [this.selected[0]]\n this.dispatchEvent(new CustomEvent(\"selected\", { detail: [...this.selected] }))\n }\n }\n super.update(changedProperties)\n }\n protected render(): unknown {\n let columns = this.columns.filter(column => !column.hidden)\n if (this.select !== TableSelectOptions.none) {\n columns.unshift({\n title: this.select === \"multi\" ? html`<spectric-input variant=\"checkbox\" @change=${this._handleSelectAllChange} .helperText=${\"Select All\"}></spectric-input>` : null,\n render: (row) => {\n let container = document.createElement(\"div\")\n let checked = this.selected.includes(row)\n let template = html`<spectric-input variant=\"checkbox\" class=\"table-checkbox-${this.select}\" ${spreadProps({ checked })} @change=${(e: DomEvent<HTMLInputElement>) => {\n e.stopPropagation()\n let index = this.selected.findIndex(value => value === row)\n if (e.target.checked && index !== -1) {\n return\n }\n else if (!e.target.checked && index === -1) {\n return\n }\n else if (!e.target.checked && index !== -1) {\n this.selected.splice(index, 1)\n }\n if (e.target.checked) {\n if (this.select === \"single\") {\n this.selected = []\n }\n this.selected.push(row)\n }\n this.dispatchEvent(new CustomEvent(\"selected\", { detail: [...this.selected] }))\n }}></spectric-input>`\n render(template, container)\n return template\n }\n })\n }\n const tdBorderAndPadding = 4;\n return html`\n <div class=\"table-wrapper\" style=\"--rowHeight:${this.rowHeight - tdBorderAndPadding}px\">\n <div role=\"table\">\n <spectric-table-header .columns=${columns} @sortChange=${this._handleSortChange}></spectric-table-header>\n ${this.rowHeight >= 25 && this.data.length >= 100 ?\n html`<spectric-table-virtual-body .columns=${columns} .data=${this.data} .table=${this} .rowHeight=${this.rowHeight}></spectric-table-virtual-body>` :\n html`<spectric-table-body .columns=${columns} .data=${this.data} .table=${this}></spectric-table-body>`\n }\n </div>\n </div>\n ${this.pagination ? html`<spectric-pagination ${spreadProps(this.pagination)} @change=${this._handlePaginationChange}></spectric-pagination>` : null}\n `;\n }\n}\n\ninterface TableEvents {\n 'change': (event: CustomEvent<TableDataOptions<any>>) => void;\n 'paginationChange': (event: CustomEvent<PaginationChangeProps>) => void;\n 'filter': (event: CustomEvent<FilterEvent<any>>) => void;\n 'sortChange': (event: CustomEvent<ColumnSettings<any>>) => void;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [TableElementTag]: HTMLElementTagWithEvents<TableElement<any>, TableEvents>\n\n }\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link TableElement}\n */\n [TableElementTag]: ReactElementWithPropsAndEvents<TableElement<any>, TableProps<any>, TableEvents>;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link TableElement}\n */\n [TableElementTag]: ReactElementWithPropsAndEvents<TableElement<any>, TableProps<any>, TableEvents>\n }\n }\n }\n}\n","\nimport { customElement, property } from 'lit/decorators.js';\nimport { HTMLElementTagWithEvents, ReactElementWithPropsAndEvents } from '../types';\nimport \"./tooltip.css\"\nexport const TooltipElementTag = \"spectric-tooltip\"\nimport { css, CSSResultGroup, html, render } from \"lit-element\";\nimport { DomRenderable } from \"../table\";\nimport { DisposableElement } from '../../classes/DisposibleElement';\nexport type { TooltipProps, TooltipEvents }\nexport enum TooltipPostions {\n top = \"top\",\n bottom = \"bottom\",\n left = \"left\",\n right = \"right\",\n mouse = \"mouse\"\n}\n\nexport type TooltipPostionsTypes = `${TooltipPostions}`\ninterface TooltipProps {\n /**\n * How long you need to hover before the tooltip displays\n */\n delay?: number;\n /**\n * How long the fade in animation should run\n */\n animationDuration?: number;\n /**\n * Tooltip contents\n */\n text: DomRenderable\n /**\n * Where to anchor the tooltip\n */\n position?: TooltipPostionsTypes\n /**\n * Sets a max width for the contents you can disable this by setting to 0 or -1\n */\n maxWidth?: number\n /**\n * Container the tool tip will be attached to. \n */\n portalTarget?: HTMLElement\n\n /** \n * The element that triggers the tooltip. This is used for special cases like in the shadow dom if you want to target a host element instead of the immediate parent element\n */\n triggerTarget?: HTMLElement\n}\n\n/**\n * Spectric tooltip will add a tooltip to any container \n */\n@customElement(TooltipElementTag)\nexport class TooltipElement extends DisposableElement implements TooltipProps {\n @property({ type: Number, reflect: true })\n delay: number = 100;\n @property({ type: Number, reflect: true })\n animationDuration: number = 0;\n @property({ type: String, reflect: false })\n text: DomRenderable = \"\";\n @property({ type: String, reflect: true })\n position: TooltipPostionsTypes = \"right\";\n @property({ type: Number, reflect: true })\n maxWidth?: number = 300;\n private portalElement!: HTMLDivElement\n private mouseLocation?: { left: number; top: number; };\n static styles?: CSSResultGroup | undefined = css`:host{max-height: 0px;\n max-width: 0px;\n display: none;\n pointer-events:none;}`;\n @property({ attribute: false })\n portalTarget: HTMLElement = document.body\n private timer?: number;\n private open: boolean = false;\n private mouseframe?: number;\n /**\n * @default parentElement\n */\n @property({ attribute: false })\n triggerTarget!: HTMLElement;\n private get target() {\n return this.triggerTarget || this.parentElement\n }\n constructor() {\n super()\n this.addDisposableListener(() => this.target, \"mousemove\", this._getMousePosition)\n this.addDisposableListener(() => this.target, \"mouseover\", this.showToolTip)\n this.addDisposableListener(() => this.target, \"mouseleave\", this._hideTooltip)\n }\n connectedCallback(): void {\n super.connectedCallback()\n this.portalElement = document.createElement(\"div\")\n this.portalElement.className = \"spectric-tooltip-portal\"\n }\n disconnectedCallback(): void {\n super.disconnectedCallback();\n this.portalElement.remove()\n //@ts-ignore\n this.portalElement = undefined\n }\n private _getMousePosition = (ev: MouseEvent) => {\n this.mouseLocation = {\n left: ev.clientX,\n top: ev.clientY\n }\n if (this.position == \"mouse\" && this.open && !this.mouseframe) {\n this.mouseframe = requestAnimationFrame(() => this.positionTooltip())\n }\n }\n _hideTooltip = () => {\n if (this.timer) {\n clearTimeout(this.timer)\n }\n this.open = false\n this.portalElement.remove()\n }\n private showToolTip = async () => {\n if (this.timer) {\n clearTimeout(this.timer)\n }\n await new Promise(resolve => {\n this.timer = window.setTimeout(resolve, this.delay)\n })\n this.portalElement.style.pointerEvents = \"none\"\n this.portalElement.className = `spectric-tooltip-portal ${this.position}`\n const tooltip = html`<div class=\"tooltip-container\">\n <span class=\"tooltip-caret\"></span>\n <div class=\"tooltip-content\">${this.text}</div>\n </div>`\n render(tooltip, this.portalElement)\n //with the delay it is possible that the triggering element was removed or hidden lets check that it is visible\n if (!this.target || !this.target.checkVisibility()) {\n return\n }\n //We need to append our tooltip and let the css updates apply before we can take measurements\n this.portalTarget.appendChild(this.portalElement)\n this.open = true\n requestAnimationFrame(this.positionTooltip)\n }\n private applyStyle = (style: Record<string, string>) => {\n Object.entries(style).forEach(([prop, value]) => {\n this.portalElement.style.setProperty(prop, value)\n })\n }\n private positionTooltip = () => {\n if (!this.target) {\n //We got detached before the animation frame completed\n return\n }\n //Since we are attaching to a body we need to send the correct styles from the target portion of the dom to the portal element\n let computedStyle = getComputedStyle(this)\n let styles = {\n \"--spectric-primary\": computedStyle.getPropertyValue(\"--spectric-primary\"),\n \"--spectric-background-inverse\": computedStyle.getPropertyValue(\"--spectric-background-inverse\"),\n \"--spectric-background-hover\": computedStyle.getPropertyValue(\"--spectric-background-hover\"),\n \"--spectric-text-on-color\": computedStyle.getPropertyValue(\"--spectric-text-on-color\"),\n \"--spectric-border-radius\": computedStyle.getPropertyValue(\"--spectric-border-radius\"),\n }\n const bounds = this.target.getBoundingClientRect()\n const portalBounds = this.portalElement.getBoundingClientRect()\n if (this.target !== document.body) {\n if (this.maxWidth && this.maxWidth > 0) {\n portalBounds.width = Math.min(portalBounds.width, this.maxWidth)\n }\n }\n let location: {\n left: string;\n top: string;\n };\n if (this.position === \"mouse\" && this.mouseLocation) {\n this.mouseframe = undefined\n location = { left: this.mouseLocation.left + 10 + \"px\", top: this.mouseLocation.top - (portalBounds.height / 2) + \"px\" }\n } else if (this.position === \"top\") {\n location = {\n top: bounds.top - portalBounds.height + \"px\",\n left: (bounds.left + (bounds.width / 2)) - (portalBounds.width / 2) + \"px\"\n }\n } else if (this.position === \"bottom\") {\n location = {\n top: bounds.bottom + \"px\",\n left: (bounds.left + (bounds.width / 2)) - (portalBounds.width / 2) + \"px\"\n }\n } else if (this.position === \"left\") {\n location = {\n top: Math.max(0, bounds.top + bounds.height / 2 - portalBounds.height / 2) + \"px\",\n left: bounds.left - (portalBounds.width) + \"px\"\n }\n } else if (this.position === \"right\") {\n location = {\n top: Math.max(0, bounds.top + bounds.height / 2 - portalBounds.height / 2) + \"px\",\n left: bounds.right + \"px\"\n }\n } else {\n location = { left: \"0px\", top: \"0px\" };\n console.error(\"Unknown position... Maybe we sould implement auto?\")\n }\n this.applyStyle({ ...styles, ...location })\n if (this.position !== \"mouse\") {\n this.portalElement.animate({ opacity: [0, 1] }, { duration: this.animationDuration })\n }\n }\n protected render() {\n //We don't need to render anything here this is just a placeholder element the content is displayed in a portal attached to the body.\n // See showTooltip for the real rendering\n return html`<!-- ToolTip -->`\n }\n}\n\n\ninterface TooltipEvents {\n //'open': (event: CustomEvent<{ pagination: PaginationChangeProps }>) => void;\n //'filter': (event: CustomEvent<FilterEvent>) => void;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [TooltipElementTag]: HTMLElementTagWithEvents<TooltipElement, TooltipEvents>\n\n }\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link TooltipElement}\n */\n [TooltipElementTag]: ReactElementWithPropsAndEvents<TooltipElement, TooltipProps, TooltipEvents>;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link TooltipElement}\n */\n [TooltipElementTag]: ReactElementWithPropsAndEvents<TooltipElement, TooltipProps, TooltipEvents>\n }\n }\n }\n}\n"],"names":["t","e","s","o","n$6","r","n","i","S","c","h","a","l","p","d","u","f","y","b","_a","v","_","m","g","$","x","T","E","A","C","P","V","N","H","I","L","k","_b","R","z","M","Z","j","B","r$5","i$1","style$2","css","DomListener","node","type","handler","options","targetNode","DisposableElement","LitElement","target","event","disposable","ButtonSizes","ButtonVariants","MODES","SpectricButton","mode","html","styleMap","exports","style","__decorateClass","property","customElement","h$1","BitArray","buf","obj","prop","idx","off","val","array","start","len","stop","sub","debounceAnimation","func","animationFrame","args","events","DEFAULT_SIZE","SCROLLBAR_SIZE","BitDisplayCanvas","createRef","cssStyle","scale","observer","lastPosition","eventName","canvas","rect","position","bitIndex","bitEventName","changedProperties","repaintProps","frameWidth","bitArray","width","height","context","pxPerBit","div","ref","queryAsync","styles$2","Header","styles","DEFAULT_STYLE","SpectricBanner","bannerId","text","headerStyle","dismissable","styles$1","SpreadPropsDirective","AsyncDirective","_spreadData","nothing","part","spreadData","data","element","key","value","prevData","spreadProps","directive","ClassificationVariants","ClassificationStyles","SpectricPage","classificationText","header","ifDefined","InputVariants","SpectricInput","input","oldValue","end","direction","ifNonEmpty","query","endOfInputText","grammarRuleTranslations","DQLSyntaxError","error","expression","message","translatedExpectationText","expected","foundInput","fullMessage","buildNode","toOpenSearchQuery","SyntaxError","parse","peg$subclass","child","parent","ctor","peg$SyntaxError","found","location","peg$parse","peg$FAILED","peg$startRuleFunctions","peg$parsestart","peg$parseLiteral","peg$startRuleFunction","peg$c0","trailing","nodeTypes","peg$c1","errorOnLuceneSyntax","peg$c2","left","right","cursor","buildFunctionNode","peg$c3","peg$c4","peg$c5","peg$c6","peg$c7","peg$c8","peg$c9","peg$c10","peg$c11","peg$c12","peg$c13","peg$c14","peg$c15","peg$c16","field","peg$c17","peg$c18","operator","range","buildNamedArgNode","peg$c19","partial","peg$c20","fieldName","buildLiteralNode","peg$c21","peg$c22","partialLeft","partialRight","peg$c23","peg$c24","peg$c25","peg$c26","isPhrase","peg$c27","allowLeadingWildcards","peg$c28","peg$c29","peg$c30","peg$c31","peg$c32","peg$c33","peg$c34","peg$c35","peg$c36","peg$c37","peg$c38","peg$c39","peg$c40","prefix","suffix","peg$c41","chars","peg$c42","peg$c43","peg$c44","peg$c45","peg$c46","char","peg$c47","peg$c48","peg$c49","sequence","wildcardSymbol","buildWildcardNode","peg$c50","peg$c51","peg$c52","peg$c53","peg$c54","peg$c55","peg$c56","peg$c57","peg$c58","peg$c59","peg$c60","peg$c61","peg$c62","peg$c63","keyword","peg$c64","peg$c65","peg$c66","peg$c67","peg$c68","peg$c69","peg$c70","peg$c71","peg$c72","peg$c73","peg$c74","peg$c75","peg$c76","peg$c77","peg$c78","peg$c79","peg$c80","peg$c81","parseCursor","peg$c82","peg$c83","peg$c84","cursorSymbol","peg$c85","peg$c86","peg$c87","peg$c88","peg$c89","peg$c90","peg$c91","peg$c92","peg$c93","peg$c94","peg$c95","peg$c96","peg$c97","peg$c98","peg$c99","peg$c100","peg$c101","peg$c102","peg$c103","peg$c104","peg$c105","peg$c106","peg$c107","peg$c108","peg$c109","peg$c110","peg$c111","peg$c112","peg$c113","peg$c114","peg$c115","peg$c116","peg$c117","peg$c118","peg$c119","peg$c120","peg$c121","peg$c122","peg$c123","peg$c124","peg$c125","peg$c126","peg$c127","peg$currPos","peg$savedPos","peg$posDetailsCache","peg$maxFailPos","peg$maxFailExpected","peg$silentFails","peg$result","peg$computeLocation","peg$buildException","peg$computePosDetails","pos","details","ch","startPos","endPos","startPosDetails","endPosDetails","peg$fail","cleanupExpected","buildMessage","stringEscape","hex","expectedDescs","expectedDesc","foundDesc","s0","s1","s2","s3","peg$parseSpace","peg$parseOrQuery","peg$parseOptionalSpace","peg$parseLuceneQuery","peg$parseAndQuery","peg$parseOr","peg$parseNotQuery","peg$parseAnd","peg$parseNot","peg$parseSubQuery","s4","s5","peg$parseNestedQuery","s6","s7","s8","s9","peg$parseField","peg$parseExpression","peg$parseFieldRangeExpression","peg$parseFieldValueExpression","peg$parseValueExpression","peg$parseRangeOperator","peg$parseListOfValues","peg$parseValue","peg$parseOrListOfValues","peg$parseAndListOfValues","peg$parseNotListOfValues","peg$parseQuotedString","peg$parseUnquotedLiteral","peg$parseLuceneOr","peg$parseLuceneAnd","peg$parseLuceneNot","peg$parseQuotedCharacter","peg$parseCursor","peg$parseEscapedWhitespace","peg$parseUnquotedCharacter","peg$parseEscapedSpecialCharacter","peg$parseEscapedKeyword","peg$parseWildcard","peg$parseSpecialCharacter","peg$parseKeyword","peg$parseLuceneFieldQuery","peg$parseLuceneValue","peg$parseLuceneExists","peg$parseLuceneLiteral","peg$parseLuceneRange","peg$parseLuceneWildcard","peg$parseLuceneRegex","peg$parseLuceneFuzzy","peg$parseLuceneProximity","peg$parseLuceneBoost","peg$parseLuceneRangeStart","peg$parseLuceneTo","peg$parseLuceneRangeEnd","peg$parseLuceneUnquotedCharacter","peg$parseLuceneUnquotedLiteral","peg$parseEscapedLuceneSpecialCharacter","peg$parseLuceneSpecialCharacter","peg$parseLuceneKeyword","fromExpression","parseOptions","parseKuery","fromLiteralExpression","fromKueryExpression","doesKueryExpressionHaveLuceneSyntaxError","indexPattern","config","escapeRegExp","str","escapeQueryString","test","regex","toQueryStringQuery","hasLeadingWildcard","getFields","literal.toOpenSearchQuery","fld","wildcard.test","getTimeZoneFromSettings","dateFormatTZ","getFullFieldNameNode","rootNameNode","nestedPath","fullFieldNameNode","errors","acc","nestedPathFromField","buildNodeParams","fieldNode","ast.fromLiteralExpression","literal.buildNode","valueNode","isPhraseNode","fieldNameArg","valueArg","isPhraseArg","fullFieldNameArg","ast.toOpenSearchQuery","wildcard.toQueryStringQuery","fields","isExistsQuery","isAllFieldsQuery","accumulator","wrapWithNestedQuery","timeZoneParam","queryType","children","argument","pick","object","out","op","params","paramsToMap","namedArgs","extractArguments","queryParams","arg","unnamedArgOrder","index","path","stringPath","fullPath","functions","is","and","or","not","exists","nested","functionName","kueryFunction","buildNodeWithArgumentNodes","name","argumentNode","functionType","literal","wildcard","KQL_WILDCARD_SYMBOL","toCql","isValue","AST_TO_CQL","opsign","nodeType","toMongo","DialogElementTag","DialogElement","dialog","props","body","frag","render","_changedProperties","SupportedLanguages","NumberOperators","StringOperators","BoolOperators","DateOperators","labelValue","SpectricQuery","ast","suggestions","kuery.parse","output","kuery","completion","insertIndex","afterStart","active","suggestion","completions","fieldCompletions","fieldType","values","buttonRef","resolve","bottom","changed","option","state","even","odd","SpectricPanel","item","CSSPropsControls","dark","spectric","Themes","ThemeSelections","theme","SpectricThemeProvider","eventDetails","currentTheme","entry","Orientations","ElementTag","SplitView","percentage","orientation","invisible","min","max","useSavedState","id","offset","nodes","savedValue","PaginationElementTag","PaginationElement","page","pageSize","nextPage","nextPageDisabled","pageText","size","TableHeaderElementTag","TableHeaderElement","column","TableSortDirection","classes","columnWidth","sortDirection","sortClass","TableCellElementTag","TableCellElement","rowGetValue","filter","rendered","filterButtons","cache","w","TableBodyElementTag","TableBodyElement","repeat","row","col","TableVirtualBodyElement","scrollTop","totalRows","buffer","headerHeight","viewport","startIndex","rowsThatFit","endIndex","visibleRows","totalHeight","beforeHeight","visibleHeight","afterHeight","spacerElementBefore","spacerElementAfter","createSortChain","sorts","compareFn","v1","v2","sort","TableElementTag","TableSelectOptions","TableSortOption","TableElement","pagination","totalItems","columnSetting","columns","rows","sortChain","result","container","checked","template","TooltipElementTag","TooltipPostions","TooltipElement","ev","tooltip","computedStyle","bounds","portalBounds"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,7,8,9,10,11,12,15,16,17,25,61,63]}
1
+ {"version":3,"file":"index.umd.js","sources":["../node_modules/@lit/reactive-element/css-tag.js","../node_modules/@lit/reactive-element/reactive-element.js","../node_modules/lit-html/lit-html.js","../node_modules/lit-element/lit-element.js","../node_modules/lit-html/directive.js","../node_modules/lit-html/directives/style-map.js","../src/components/button.css.ts","../node_modules/@lit/reactive-element/decorators/custom-element.js","../node_modules/@lit/reactive-element/decorators/property.js","../node_modules/@lit/reactive-element/decorators/state.js","../node_modules/@lit/reactive-element/decorators/event-options.js","../node_modules/@lit/reactive-element/decorators/base.js","../node_modules/@lit/reactive-element/decorators/query.js","../node_modules/@lit/reactive-element/decorators/query-async.js","../src/classes/DisposibleElement.ts","../src/components/Button.ts","../node_modules/lit-html/directive-helpers.js","../node_modules/lit-html/async-directive.js","../node_modules/lit-html/directives/ref.js","../src/classes/BitArray.ts","../src/utils/debounce.ts","../src/components/Bitdisplay.ts","../src/components/header.css.ts","../src/components/Header.ts","../src/components/Banner.ts","../src/components/page.css.ts","../node_modules/lit-html/directives/if-defined.js","../src/utils/spread.ts","../src/components/configurations/classifications.ts","../src/components/Page.ts","../src/components/input.ts","../src/components/query_bar/querylanguage/kuery/kuery_syntax_error.ts","../src/components/query_bar/querylanguage/kuery/node_types/literal.ts","../src/components/query_bar/querylanguage/kuery/ast/_generated_/kuery.js","../src/components/query_bar/querylanguage/kuery/ast/ast.ts","../src/components/query_bar/querylanguage/kuery/node_types/wildcard.ts","../src/components/query_bar/querylanguage/kuery/functions/utils/get_fields.ts","../src/components/query_bar/querylanguage/utils.ts","../src/components/query_bar/querylanguage/kuery/functions/utils/get_full_field_name_node.ts","../src/components/query_bar/querylanguage/kuery/functions/is.ts","../src/components/query_bar/querylanguage/kuery/functions/and.ts","../src/components/query_bar/querylanguage/kuery/functions/or.ts","../src/components/query_bar/querylanguage/kuery/functions/not.ts","../src/components/query_bar/querylanguage/kuery/functions/range.ts","../src/components/query_bar/querylanguage/kuery/functions/exists.ts","../src/components/query_bar/querylanguage/kuery/functions/nested.ts","../src/components/query_bar/querylanguage/kuery/functions/index.ts","../src/components/query_bar/querylanguage/kuery/node_types/function.ts","../src/components/query_bar/querylanguage/kuery/node_types/named_arg.ts","../src/components/query_bar/querylanguage/kuery/node_types/index.ts","../src/components/query_bar/querylanguage/outputTypes/toCQL.ts","../src/components/query_bar/querylanguage/outputTypes/toMongo.ts","../src/components/dialog/dialog.css.ts","../src/components/dialog/dialog.ts","../src/components/query_bar/QueryBar.ts","../src/components/panel.css.ts","../src/components/Panel.ts","../src/components/ThemeProvider.ts","../src/components/splitview/splitview.css.ts","../src/components/splitview/splitview.ts","../src/components/pagination/pagination.ts","../src/components/table/header.ts","../node_modules/lit-html/directives/cache.js","../src/components/table/cell.ts","../node_modules/lit-html/directives/repeat.js","../src/components/table/body.ts","../src/components/table/virtualBody.ts","../src/utils/once.ts","../src/components/table/sorting.ts","../src/components/table/table.ts","../src/components/tooltip/popover.ts","../src/components/tooltip/tooltip.ts","../src/components/color_picker/ColorPicker.ts","../src/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,s=Symbol(),o=new WeakMap;class n{constructor(t,e,o){if(this._$cssResult$=!0,o!==s)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=o.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&o.set(s,t))}return t}toString(){return this.cssText}}const r=t=>new n(\"string\"==typeof t?t:t+\"\",void 0,s),i=(t,...e)=>{const o=1===t.length?t[0]:e.reduce(((e,s,o)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(s)+t[o+1]),t[0]);return new n(o,t,s)},S=(s,o)=>{if(e)s.adoptedStyleSheets=o.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet));else for(const e of o){const o=document.createElement(\"style\"),n=t.litNonce;void 0!==n&&o.setAttribute(\"nonce\",n),o.textContent=e.cssText,s.appendChild(o)}},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t;export{n as CSSResult,S as adoptStyles,i as css,c as getCompatibleStyle,e as supportsAdoptingStyleSheets,r as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n","import{getCompatibleStyle as t,adoptStyles as s}from\"./css-tag.js\";export{CSSResult,adoptStyles,css,getCompatibleStyle,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{is:i,defineProperty:e,getOwnPropertyDescriptor:r,getOwnPropertyNames:h,getOwnPropertySymbols:o,getPrototypeOf:n}=Object,a=globalThis,c=a.trustedTypes,l=c?c.emptyScript:\"\",p=a.reactiveElementPolyfillSupport,d=(t,s)=>t,u={toAttribute(t,s){switch(s){case Boolean:t=t?l:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,s){let i=t;switch(s){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},f=(t,s)=>!i(t,s),y={attribute:!0,type:String,converter:u,reflect:!1,hasChanged:f};Symbol.metadata??=Symbol(\"metadata\"),a.litPropertyMetadata??=new WeakMap;class b extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,s=y){if(s.state&&(s.attribute=!1),this._$Ei(),this.elementProperties.set(t,s),!s.noAccessor){const i=Symbol(),r=this.getPropertyDescriptor(t,i,s);void 0!==r&&e(this.prototype,t,r)}}static getPropertyDescriptor(t,s,i){const{get:e,set:h}=r(this.prototype,t)??{get(){return this[s]},set(t){this[s]=t}};return{get(){return e?.call(this)},set(s){const r=e?.call(this);h.call(this,s),this.requestUpdate(t,r,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??y}static _$Ei(){if(this.hasOwnProperty(d(\"elementProperties\")))return;const t=n(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(d(\"finalized\")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(d(\"properties\"))){const t=this.properties,s=[...h(t),...o(t)];for(const i of s)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const s=litPropertyMetadata.get(t);if(void 0!==s)for(const[t,i]of s)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,s]of this.elementProperties){const i=this._$Eu(t,s);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(s){const i=[];if(Array.isArray(s)){const e=new Set(s.flat(1/0).reverse());for(const s of e)i.unshift(t(s))}else void 0!==s&&i.push(t(s));return i}static _$Eu(t,s){const i=s.attribute;return!1===i?void 0:\"string\"==typeof i?i:\"string\"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((t=>t(this)))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,s=this.constructor.elementProperties;for(const i of s.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return s(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((t=>t.hostConnected?.()))}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach((t=>t.hostDisconnected?.()))}attributeChangedCallback(t,s,i){this._$AK(t,i)}_$EC(t,s){const i=this.constructor.elementProperties.get(t),e=this.constructor._$Eu(t,i);if(void 0!==e&&!0===i.reflect){const r=(void 0!==i.converter?.toAttribute?i.converter:u).toAttribute(s,i.type);this._$Em=t,null==r?this.removeAttribute(e):this.setAttribute(e,r),this._$Em=null}}_$AK(t,s){const i=this.constructor,e=i._$Eh.get(t);if(void 0!==e&&this._$Em!==e){const t=i.getPropertyOptions(e),r=\"function\"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:u;this._$Em=e,this[e]=r.fromAttribute(s,t.type),this._$Em=null}}requestUpdate(t,s,i){if(void 0!==t){if(i??=this.constructor.getPropertyOptions(t),!(i.hasChanged??f)(this[t],s))return;this.P(t,s,i)}!1===this.isUpdatePending&&(this._$ES=this._$ET())}P(t,s,i){this._$AL.has(t)||this._$AL.set(t,s),!0===i.reflect&&this._$Em!==t&&(this._$Ej??=new Set).add(t)}async _$ET(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,s]of this._$Ep)this[t]=s;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[s,i]of t)!0!==i.wrapped||this._$AL.has(s)||void 0===this[s]||this.P(s,this[s],i)}let t=!1;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),this._$EO?.forEach((t=>t.hostUpdate?.())),this.update(s)):this._$EU()}catch(s){throw t=!1,this._$EU(),s}t&&this._$AE(s)}willUpdate(t){}_$AE(t){this._$EO?.forEach((t=>t.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Ej&&=this._$Ej.forEach((t=>this._$EC(t,this[t]))),this._$EU()}updated(t){}firstUpdated(t){}}b.elementStyles=[],b.shadowRootOptions={mode:\"open\"},b[d(\"elementProperties\")]=new Map,b[d(\"finalized\")]=new Map,p?.({ReactiveElement:b}),(a.reactiveElementVersions??=[]).push(\"2.0.4\");export{b as ReactiveElement,u as defaultConverter,f as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,i=t.trustedTypes,s=i?i.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,e=\"$lit$\",h=`lit$${Math.random().toFixed(9).slice(2)}$`,o=\"?\"+h,n=`<${o}>`,r=document,l=()=>r.createComment(\"\"),c=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,a=Array.isArray,u=t=>a(t)||\"function\"==typeof t?.[Symbol.iterator],d=\"[ \\t\\n\\f\\r]\",f=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,v=/-->/g,_=/>/g,m=RegExp(`>|${d}(?:([^\\\\s\"'>=/]+)(${d}*=${d}*(?:[^ \\t\\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`,\"g\"),p=/'/g,g=/\"/g,$=/^(?:script|style|textarea|title)$/i,y=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),x=y(1),b=y(2),w=y(3),T=Symbol.for(\"lit-noChange\"),E=Symbol.for(\"lit-nothing\"),A=new WeakMap,C=r.createTreeWalker(r,129);function P(t,i){if(!a(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return void 0!==s?s.createHTML(i):i}const V=(t,i)=>{const s=t.length-1,o=[];let r,l=2===i?\"<svg>\":3===i?\"<math>\":\"\",c=f;for(let i=0;i<s;i++){const s=t[i];let a,u,d=-1,y=0;for(;y<s.length&&(c.lastIndex=y,u=c.exec(s),null!==u);)y=c.lastIndex,c===f?\"!--\"===u[1]?c=v:void 0!==u[1]?c=_:void 0!==u[2]?($.test(u[2])&&(r=RegExp(\"</\"+u[2],\"g\")),c=m):void 0!==u[3]&&(c=m):c===m?\">\"===u[0]?(c=r??f,d=-1):void 0===u[1]?d=-2:(d=c.lastIndex-u[2].length,a=u[1],c=void 0===u[3]?m:'\"'===u[3]?g:p):c===g||c===p?c=m:c===v||c===_?c=f:(c=m,r=void 0);const x=c===m&&t[i+1].startsWith(\"/>\")?\" \":\"\";l+=c===f?s+n:d>=0?(o.push(a),s.slice(0,d)+e+s.slice(d)+h+x):s+h+(-2===d?i:x)}return[P(t,l+(t[s]||\"<?>\")+(2===i?\"</svg>\":3===i?\"</math>\":\"\")),o]};class N{constructor({strings:t,_$litType$:s},n){let r;this.parts=[];let c=0,a=0;const u=t.length-1,d=this.parts,[f,v]=V(t,s);if(this.el=N.createElement(f,n),C.currentNode=this.el.content,2===s||3===s){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(r=C.nextNode())&&d.length<u;){if(1===r.nodeType){if(r.hasAttributes())for(const t of r.getAttributeNames())if(t.endsWith(e)){const i=v[a++],s=r.getAttribute(t).split(h),e=/([.?@])?(.*)/.exec(i);d.push({type:1,index:c,name:e[2],strings:s,ctor:\".\"===e[1]?H:\"?\"===e[1]?I:\"@\"===e[1]?L:k}),r.removeAttribute(t)}else t.startsWith(h)&&(d.push({type:6,index:c}),r.removeAttribute(t));if($.test(r.tagName)){const t=r.textContent.split(h),s=t.length-1;if(s>0){r.textContent=i?i.emptyScript:\"\";for(let i=0;i<s;i++)r.append(t[i],l()),C.nextNode(),d.push({type:2,index:++c});r.append(t[s],l())}}}else if(8===r.nodeType)if(r.data===o)d.push({type:2,index:c});else{let t=-1;for(;-1!==(t=r.data.indexOf(h,t+1));)d.push({type:7,index:c}),t+=h.length-1}c++}}static createElement(t,i){const s=r.createElement(\"template\");return s.innerHTML=t,s}}function S(t,i,s=t,e){if(i===T)return i;let h=void 0!==e?s._$Co?.[e]:s._$Cl;const o=c(i)?void 0:i._$litDirective$;return h?.constructor!==o&&(h?._$AO?.(!1),void 0===o?h=void 0:(h=new o(t),h._$AT(t,s,e)),void 0!==e?(s._$Co??=[])[e]=h:s._$Cl=h),void 0!==h&&(i=S(t,h._$AS(t,i.values),h,e)),i}class M{constructor(t,i){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){const{el:{content:i},parts:s}=this._$AD,e=(t?.creationScope??r).importNode(i,!0);C.currentNode=e;let h=C.nextNode(),o=0,n=0,l=s[0];for(;void 0!==l;){if(o===l.index){let i;2===l.type?i=new R(h,h.nextSibling,this,t):1===l.type?i=new l.ctor(h,l.name,l.strings,this,t):6===l.type&&(i=new z(h,this,t)),this._$AV.push(i),l=s[++n]}o!==l?.index&&(h=C.nextNode(),o++)}return C.currentNode=r,e}p(t){let i=0;for(const s of this._$AV)void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,i),i+=s.strings.length-2):s._$AI(t[i])),i++}}class R{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(t,i,s,e){this.type=2,this._$AH=E,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=s,this.options=e,this._$Cv=e?.isConnected??!0}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===t?.nodeType&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=S(this,t,i),c(t)?t===E||null==t||\"\"===t?(this._$AH!==E&&this._$AR(),this._$AH=E):t!==this._$AH&&t!==T&&this._(t):void 0!==t._$litType$?this.$(t):void 0!==t.nodeType?this.T(t):u(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==E&&c(this._$AH)?this._$AA.nextSibling.data=t:this.T(r.createTextNode(t)),this._$AH=t}$(t){const{values:i,_$litType$:s}=t,e=\"number\"==typeof s?this._$AC(t):(void 0===s.el&&(s.el=N.createElement(P(s.h,s.h[0]),this.options)),s);if(this._$AH?._$AD===e)this._$AH.p(i);else{const t=new M(e,this),s=t.u(this.options);t.p(i),this.T(s),this._$AH=t}}_$AC(t){let i=A.get(t.strings);return void 0===i&&A.set(t.strings,i=new N(t)),i}k(t){a(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let s,e=0;for(const h of t)e===i.length?i.push(s=new R(this.O(l()),this.O(l()),this,this.options)):s=i[e],s._$AI(h),e++;e<i.length&&(this._$AR(s&&s._$AB.nextSibling,e),i.length=e)}_$AR(t=this._$AA.nextSibling,i){for(this._$AP?.(!1,!0,i);t&&t!==this._$AB;){const i=t.nextSibling;t.remove(),t=i}}setConnected(t){void 0===this._$AM&&(this._$Cv=t,this._$AP?.(t))}}class k{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,i,s,e,h){this.type=1,this._$AH=E,this._$AN=void 0,this.element=t,this.name=i,this._$AM=e,this.options=h,s.length>2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=E}_$AI(t,i=this,s,e){const h=this.strings;let o=!1;if(void 0===h)t=S(this,t,i,0),o=!c(t)||t!==this._$AH&&t!==T,o&&(this._$AH=t);else{const e=t;let n,r;for(t=h[0],n=0;n<h.length-1;n++)r=S(this,e[s+n],i,n),r===T&&(r=this._$AH[n]),o||=!c(r)||r!==this._$AH[n],r===E?t=E:t!==E&&(t+=(r??\"\")+h[n+1]),this._$AH[n]=r}o&&!e&&this.j(t)}j(t){t===E?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??\"\")}}class H extends k{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===E?void 0:t}}class I extends k{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==E)}}class L extends k{constructor(t,i,s,e,h){super(t,i,s,e,h),this.type=5}_$AI(t,i=this){if((t=S(this,t,i,0)??E)===T)return;const s=this._$AH,e=t===E&&s!==E||t.capture!==s.capture||t.once!==s.once||t.passive!==s.passive,h=t!==E&&(s===E||e);e&&this.element.removeEventListener(this.name,this,s),h&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){\"function\"==typeof this._$AH?this._$AH.call(this.options?.host??this.element,t):this._$AH.handleEvent(t)}}class z{constructor(t,i,s){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(t){S(this,t)}}const Z={M:e,P:h,A:o,C:1,L:V,R:M,D:u,V:S,I:R,H:k,N:I,U:L,B:H,F:z},j=t.litHtmlPolyfillSupport;j?.(N,R),(t.litHtmlVersions??=[]).push(\"3.2.1\");const B=(t,i,s)=>{const e=s?.renderBefore??i;let h=e._$litPart$;if(void 0===h){const t=s?.renderBefore??null;e._$litPart$=h=new R(i.insertBefore(l(),t),t,void 0,s??{})}return h._$AI(t),h};export{Z as _$LH,x as html,w as mathml,T as noChange,E as nothing,B as render,b as svg};\n//# sourceMappingURL=lit-html.js.map\n","import{ReactiveElement as t}from\"@lit/reactive-element\";export*from\"@lit/reactive-element\";import{render as e,noChange as s}from\"lit-html\";export*from\"lit-html\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class r extends t{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){const t=super.createRenderRoot();return this.renderOptions.renderBefore??=t.firstChild,t}update(t){const s=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=e(s,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return s}}r._$litElement$=!0,r[\"finalized\"]=!0,globalThis.litElementHydrateSupport?.({LitElement:r});const i=globalThis.litElementPolyfillSupport;i?.({LitElement:r});const o={_$AK:(t,e,s)=>{t._$AK(e,s)},_$AL:t=>t._$AL};(globalThis.litElementVersions??=[]).push(\"4.1.1\");export{r as LitElement,o as _$LE};\n//# sourceMappingURL=lit-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},e=t=>(...e)=>({_$litDirective$:t,values:e});class i{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,i){this._$Ct=t,this._$AM=e,this._$Ci=i}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}export{i as Directive,t as PartType,e as directive};\n//# sourceMappingURL=directive.js.map\n","import{noChange as t}from\"../lit-html.js\";import{directive as e,Directive as r,PartType as s}from\"../directive.js\";\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const n=\"important\",i=\" !\"+n,o=e(class extends r{constructor(t){if(super(t),t.type!==s.ATTRIBUTE||\"style\"!==t.name||t.strings?.length>2)throw Error(\"The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.\")}render(t){return Object.keys(t).reduce(((e,r)=>{const s=t[r];return null==s?e:e+`${r=r.includes(\"-\")?r:r.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,\"-$&\").toLowerCase()}:${s};`}),\"\")}update(e,[r]){const{style:s}=e.element;if(void 0===this.ft)return this.ft=new Set(Object.keys(r)),this.render(r);for(const t of this.ft)null==r[t]&&(this.ft.delete(t),t.includes(\"-\")?s.removeProperty(t):s[t]=null);for(const t in r){const e=r[t];if(null!=e){this.ft.add(t);const r=\"string\"==typeof e&&e.endsWith(i);t.includes(\"-\")||r?s.setProperty(t,r?e.slice(0,-11):e,r?n:\"\"):s[t]=e}}return t}});export{o as styleMap};\n//# sourceMappingURL=style-map.js.map\n","import { css } from 'lit';\nexport default css`\n:host{\n display: inline-block;\n --text-on-color: var(--spectric-text-on-color, #ffffff);\n --text-on-color-disabled: var(--spectric-text-on-color-disabled, #8d8d8d);\n --text-placeholder: var(--spectric-text-placeholder, rgba(22, 22, 22, 0.4));\n --text-primary: var(--spectric-text-primary, #161616);\n --text-secondary: var(--spectric-text-secondary, #525252);\n --button-border-radius: var(--spectric-border-radius,.4em);\n --button-separator: var(--spectric-button-separator, #e0e0e0);\n --button-primary: var(--spectric-button-primary,#1ea7fd);\n --button-secondary: var(--spectric-button-secondary, #77878b);\n --button-tertiary: var(--spectric-button-tertiary, #0f62fe);\n --button-danger-primary: var(--spectric-button-danger-primary, #da1e28);\n --button-danger-secondary: var(--spectric-button-danger-secondary, #da1e28);\n --button-danger-active: var(--spectric-button-danger-active, #750e13);\n --button-primary-active: var(--spectric-button-primary-active, #002d9c);\n --button-secondary-active: var(--spectric-button-secondary-active, #6f6f6f);\n --button-tertiary-active: var(--spectric-button-tertiary-active, #002d9c);\n --button-danger-hover: var(--spectric-button-danger-hover, #b81921);\n --button-primary-hover: var(--spectric-button-primary-hover, #0050e6);\n --button-secondary-hover: var(--spectric-button-secondary-hover, #474747);\n --button-tertiary-hover: var(--spectric-button-tertiary-hover, #0050e6);\n --button-disabled: var(--spectric-button-disabled, #cfcbcb4d);\n}\n:host([disabled]) { \n cursor: not-allowed;\n}\n\n:host([disabled]) .animation{ \n visibility:hidden;\n}\n\n.spectric-button {\n pointer-events:none;\n position: relative;\n display: inline-block;\n cursor: pointer;\n border: 0;\n border-radius: var(--button-border-radius);\n font-weight: 700;\n line-height: 2em;\n font-family: 'Nunito Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n overflow:hidden;\n}\n.animation{\n pointer-events: none;\n transition: background-color 0.3s cubic-bezier(0.25, 0.8, 0.5, 1), opacity 0.4s cubic-bezier(0.25, 0.8, 0.5, 1);\n width: 100%;\n height: 100%;\n position: absolute;\n left: 0;\n top: 0;\n}\n.animation::before {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0 /* rtl:ignore */;\n width: 100%;\n height: 100%;\n}\n:host(:active) .animation::after {\n box-shadow: 0 0 0 0 black;\n position: absolute;\n opacity: 1;\n transition: 0s;\n}\n.animation::after{\n content: \"\";\n display: block;\n position: absolute;\n border-radius: var(--border-radius);\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n opacity: 0;\n transition: all .5s;\n box-shadow: 0 0 30px black inset;\n}\n.spectric-button.spectric-button--secondary .animation::after , .spectric-button.spectric-button--text .animation::after {\n box-shadow: 0 0 30px white inset;\n}\n\n:host([icon]) .spectric-button {\n padding: unset;\n display: flex;\n align-items: center;\n justify-content: center;\n -webkit-user-select: none; /* For Safari */\n -moz-user-select: none; /* For Firefox */\n -ms-user-select: none; /* For IE 10+ */\n user-select: none; /* Standard syntax */\n}\n\n\n\n/* :host([icon][size=\"small\"]){\n height:12px;\n width:12px;\n}\n\n:host([icon][size=\"medium\"]){\n height:14px;\n width:14px;\n}\n\n:host([icon][size=\"large\"]){\n width: 48px;\n height: 48px;\n} */\n:host([icon][size=\"tiny\"]) .spectric-button{\n width: 10px;\n height: 10px;\n}\n:host([icon][size=\"xxsmall\"]) .spectric-button{\n width: 20px;\n height: 20px;\n}\n:host([icon][size=\"xsmall\"]) .spectric-button{\n width: 28px;\n height: 28px;\n}\n:host([icon][size=\"small\"]) .spectric-button{\n width: 34px;\n height: 34px;\n}\n:host([icon][size=\"medium\"]) .spectric-button{\n width: 40px;\n height: 40px;\n}\n\n:host([icon][size=\"large\"]) .spectric-button{\n width: 48px;\n height: 48px;\n}\n\n.spectric-button:disabled{\n cursor: not-allowed;\n pointer-events: none;\n filter: contrast(0.5);\n /* background-color:var(--button-disabled); */\n color:var(--text-on-color-disabled);\n}\n.spectric-button.spectric-button--primary:disabled{\n\n background-color:var(--button-disabled);\n\n}\n.spectric-button:disabled .animation , :host(:disabled:hover) .animation{\nbackground-color: rgba(0, 0, 0, 0);\nopacity:1\n}\n.spectric-button-danger--true:hover{\n background-color:var(--button-danger-hover);\n}\n.spectric-button--primary.spectric-button-danger--true {\n background-color:var(--button-danger-primary);\n box-shadow:none;\n}\n.spectric-button--secondary.spectric-button-danger--true {\n color: var(--text-on-color);\n background-color:color-mix(in srgb, var(--button-danger-primary) 70%, transparent);\n box-shadow:none;\n}\n.spectric-button--text.spectric-button-danger--true {\n color:var(--button-danger-primary);\n\n}\n:host(:hover) .spectric-button--text.spectric-button-danger--true {\n background-color:var(--button-danger-primary);\n color:var(--text-on-color)\n}\n:host(:hover) .animation{\n background: currentColor;\n opacity: 0.15;\n}\n.spectric-button--primary {\n box-shadow: color-mix(in srgb, var(--button-primary) 50%, transparent) 0px 0px 0px 1px inset;\n background-color: var(--button-primary);\n color: var(--text-on-color);\n}\n:host > .spectric-button--primary:focus {\n outline-color: var(--button-secondary);\n outline-width: thin;\n outline-style: solid;\n}\n:host > .spectric-button--secondary:focus {\n outline-color: var(--button-primary);\n outline-width: thin;\n outline-style: solid;\n}\n:host > .spectric-button--text:focus {\n outline-color: var(--button-primary);\n outline-width: thin;\n outline-style: solid;\n}\n/* :host([variant=\"text\"]):focus-within:focus,button:focus, button:focus-within, button:focus-visible{\n outline-color: red;\n} */\n.spectric-button--secondary {\n background-color:transparent;\n box-shadow: var(--button-secondary) 0px 0px 0px 1px inset;\n color: var(--button-secondary);\n}\n.spectric-button--text {\n background-color: transparent;\n color: var(--text-secondary);\n}\n.spectric-button--tiny {\n font-size: 10px;\n line-height: 10px;\n height: 10px;\n display: flex;\n align-content: center;\n align-items: center;\n}\n.spectric-button--xxsmall {\n padding: 5px 6px;\n font-size: 10px;\n line-height: 8px;\n}\n.spectric-button--xsmall {\n padding: 5px 8px;\n font-size: 10px;\n font-size: 12px;\n line-height: 14px;\n}\n.spectric-button--small {\n padding: 5px 10px;\n font-size: 12px;\n}\n.spectric-button--medium {\n padding: 6px 17px;\n font-size: 14px;\n}\n.spectric-button--large {\n padding: 7px 24px;\n font-size: 16px;\n}\n`","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=t=>(e,o)=>{void 0!==o?o.addInitializer((()=>{customElements.define(t,e)})):customElements.define(t,e)};export{t as customElement};\n//# sourceMappingURL=custom-element.js.map\n","import{defaultConverter as t,notEqual as e}from\"../reactive-element.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o={attribute:!0,type:String,converter:t,reflect:!1,hasChanged:e},r=(t=o,e,r)=>{const{kind:n,metadata:i}=r;let s=globalThis.litPropertyMetadata.get(i);if(void 0===s&&globalThis.litPropertyMetadata.set(i,s=new Map),s.set(r.name,t),\"accessor\"===n){const{name:o}=r;return{set(r){const n=e.get.call(this);e.set.call(this,r),this.requestUpdate(o,n,t)},init(e){return void 0!==e&&this.P(o,void 0,t),e}}}if(\"setter\"===n){const{name:o}=r;return function(r){const n=this[o];e.call(this,r),this.requestUpdate(o,n,t)}}throw Error(\"Unsupported decorator location: \"+n)};function n(t){return(e,o)=>\"object\"==typeof o?r(t,e,o):((t,e,o)=>{const r=e.hasOwnProperty(o);return e.constructor.createProperty(o,r?{...t,wrapped:!0}:t),r?Object.getOwnPropertyDescriptor(e,o):void 0})(t,e,o)}export{n as property,r as standardProperty};\n//# sourceMappingURL=property.js.map\n","import{property as t}from\"./property.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function r(r){return t({...r,state:!0,attribute:!1})}export{r as state};\n//# sourceMappingURL=state.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nfunction t(t){return(n,o)=>{const c=\"function\"==typeof n?n:n[o];Object.assign(c,t)}}export{t as eventOptions};\n//# sourceMappingURL=event-options.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst e=(e,t,c)=>(c.configurable=!0,c.enumerable=!0,Reflect.decorate&&\"object\"!=typeof t&&Object.defineProperty(e,t,c),c);export{e as desc};\n//# sourceMappingURL=base.js.map\n","import{desc as t}from\"./base.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function e(e,r){return(n,s,i)=>{const o=t=>t.renderRoot?.querySelector(e)??null;if(r){const{get:e,set:r}=\"object\"==typeof s?n:i??(()=>{const t=Symbol();return{get(){return this[t]},set(e){this[t]=e}}})();return t(n,s,{get(){let t=e.call(this);return void 0===t&&(t=o(this),(null!==t||this.hasUpdated)&&r.call(this,t)),t}})}return t(n,s,{get(){return o(this)}})}}export{e as query};\n//# sourceMappingURL=query.js.map\n","import{desc as t}from\"./base.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nfunction r(r){return(n,e)=>t(n,e,{async get(){return await this.updateComplete,this.renderRoot?.querySelector(r)??null}})}export{r as queryAsync};\n//# sourceMappingURL=query-async.js.map\n","import { LitElement } from \"lit-element/lit-element.js\";\n\nexport interface IDisposable {\n dispose(): void;\n}\ntype DisposableTarget = HTMLElement | Promise<HTMLElement> | (() => HTMLElement)\nlet listeners = 0;\nexport const getListeners = () => {\n return listeners\n}\nclass DomListener implements IDisposable {\n\n private _handler?: (e: any) => void;\n private _node?: EventTarget;\n private readonly _type: string;\n private readonly _options: boolean | AddEventListenerOptions;\n\n constructor(node: DisposableTarget, type: string, handler: (e: any) => void, options?: boolean | AddEventListenerOptions) {\n\n this._handler = handler;\n this._type = type;\n this._handler = handler;\n this._options = (options || false);\n if (node instanceof Promise) {\n node.then(targetNode => {\n if (!this._handler) {\n //Already disposed\n return\n }\n this._node = targetNode\n this._node.addEventListener(this._type, this._handler, this._options);\n })\n } else if (typeof node === \"function\") {\n this._node = node()\n this._node.addEventListener(this._type, this._handler, this._options);\n } else {\n this._node = node\n this._node.addEventListener(this._type, this._handler, this._options);\n }\n listeners += 1\n //console.log(listeners)\n }\n\n dispose(): void {\n if (!this._handler) {\n // Already disposed\n return;\n }\n if (this._node) {\n listeners -= 1\n this._node.removeEventListener(this._type, this._handler, this._options);\n }\n // Prevent leakers from holding on to the dom or handler func\n this._node = undefined;\n this._handler = undefined;\n //console.log(listeners)\n }\n}\nexport class DisposableElement extends LitElement {\n private readonly _disposables = new Set<IDisposable>();\n private _isDisposed = false;\n private _disposableListeners: { target: DisposableTarget, event: string, handler: any, options?: AddEventListenerOptions }[] = []\n private _connected: boolean = false;\n /**\n * Creates listeners on a target that will automatically get cleaned up when the element is removed from the DOM. This prevents memory leaks.\n * @param target The element| promise<element> we plan to attach the listener to\n * @param event The event name\n * @param handler The event handler\n */\n public addDisposableListener<K extends keyof GlobalEventHandlersEventMap>(target: DisposableTarget, event: K, handler: (event: GlobalEventHandlersEventMap[K]) => void, options?: AddEventListenerOptions): void\n public addDisposableListener<K extends keyof SpectricGlobalEvents>(target: DisposableTarget, event: K, handler: SpectricGlobalEvents[K], options?: AddEventListenerOptions): void\n public addDisposableListener(target: DisposableTarget, event: string, handler: any, options?: AddEventListenerOptions): void {\n let exists = this._disposableListeners.find(d => d.event === event && d.target === target && d.handler === handler)\n if (exists) {\n console.warn(\"Event handler already exists best practice is to add the this in the constructor\")\n return //Event handler has already been added, maybe they added it in a callback\n }\n this._disposableListeners.push({ target, event, handler, options })\n if (this._connected) {\n this.registerDisposable(new DomListener(target, event, handler, options))\n }\n }\n public registerDisposable<T extends IDisposable>(o: T): T {\n if (!o) {\n return o;\n }\n if ((o as unknown) === this) {\n throw new Error('Cannot register a disposable on itself!');\n }\n if (this._isDisposed) {\n console.warn(new Error('Trying to add a disposable to something that has already been disposed of. The added object will be leaked!').stack);\n } else {\n this._disposables.add(o);\n }\n\n return o;\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n this._connected = true\n this._isDisposed = false\n this._disposableListeners.forEach(({ target, event, handler, options }) => {\n this.registerDisposable(new DomListener(target, event, handler, options))\n })\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n this._connected = false\n this._disposables.forEach(disposable => {\n disposable.dispose()\n })\n this._isDisposed = true;\n }\n\n}","import { CSSResultGroup, html } from 'lit';\nimport { styleMap } from 'lit/directives/style-map.js';\n\nimport style from './button.css';\nimport { customElement, property } from 'lit/decorators.js';\nimport { HTMLElementTagWithEvents, ReactElementWithPropsAndEvents } from './types';\nimport { DomRenderable } from './table';\nimport { TooltipPostionsTypes } from './tooltip';\nimport { DisposableElement } from '../classes/DisposibleElement';\n\nexport enum ButtonSizes {\n large = \"large\",\n medium = \"medium\",\n small = \"small\",\n xsmall = \"xsmall\",\n xxsmall = \"xxsmall\",\n tiny = \"tiny\"\n}\nexport type ButtonSizesTypes = `${ButtonSizes}`\nexport enum ButtonVariants {\n primary = \"primary\",\n secondary = \"secondary\",\n text = \"text\",\n}\n\ntype ButtonVariantsTypes = `${ButtonVariants}`\nexport interface ButtonProps {\n /** Is this the principal call to action on the page? */\n variant?: ButtonVariantsTypes;\n /** What background color to use */\n backgroundColor?: string;\n /** How large should the button be? */\n size?: ButtonSizesTypes;\n label?: string,\n /* should the button be disabled*/\n disabled?: boolean;\n danger?: boolean;\n icon?: boolean\n tooltip?: DomRenderable\n tooltipPosition?: TooltipPostionsTypes\n}\nconst MODES = {\n \"primary\": 'spectric-button--primary',\n \"secondary\": 'spectric-button--secondary',\n \"text\": 'spectric-button--text',\n}\n\n@customElement('spectric-button')\nexport class SpectricButton extends DisposableElement implements ButtonProps {\n\n static styles?: CSSResultGroup | undefined = style;\n @property({ type: String, reflect: true })\n variant: 'primary' | 'secondary' | 'text' = \"primary\";\n @property({ type: Boolean, reflect: true })\n disabled: boolean = false;\n @property({ type: String, reflect: true })\n backgroundColor?: string | undefined;\n @property({ type: String, reflect: true })\n size: ButtonSizesTypes = \"small\";\n @property({ type: String, reflect: true })\n label?: string = \"\";\n @property({ type: Boolean, reflect: true })\n danger = false;\n @property({ type: Boolean, reflect: true })\n icon: boolean = false;\n @property({ type: String, reflect: true })\n tooltip?: DomRenderable;\n @property({ type: String, reflect: true })\n tooltipPosition?: TooltipPostionsTypes = \"right\";\n constructor() {\n super()\n this.addDisposableListener(this, \"click\", this._onClick, { capture: true })\n }\n\n private _onClick = (e: MouseEvent) => {\n if (e instanceof CustomEvent) {\n return\n }\n e.preventDefault()\n e.stopImmediatePropagation()\n e.stopPropagation()\n if (this.disabled) {\n return\n }\n const options: CustomEventInit = {\n bubbles: true,\n composed: true,\n detail: e\n };\n this.dispatchEvent(new CustomEvent<MouseEvent>('click', options));\n }\n\n protected render(): unknown {\n const mode = MODES[this.variant] || 'spectric-button--primary';\n return html`\n ${this.tooltip ? html`<spectric-tooltip .text=${this.tooltip} .position=${this.tooltipPosition || \"right\"} .triggerTarget=${this}></spectric-tooltip>` : null}\n <button\n type=\"button\"\n ?disabled=${this.disabled}\n class=${['spectric-button', `spectric-button-danger--${this.danger || false}`, `spectric-button--${this.size || 'medium'}`, mode].join(' ')}\n style=${styleMap({ backgroundColor: this.backgroundColor })}\n >\n <span class=\"animation\"></span>\n <slot>${this.label}</slot>\n </button>\n `;\n }\n}\n\nexport interface ButtonEventMap {\n //\"aaa\":(event:CustomEvent<ButtonProps>)=>void\n \"click\": (event: CustomEvent<MouseEvent>) => void;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"spectric-button\": HTMLElementTagWithEvents<SpectricButton, ButtonEventMap>\n\n }\n namespace JSX {\n interface IntrinsicElements {\n /**\n * {@link SpectricButton}\n */\n \"spectric-button\": ReactElementWithPropsAndEvents<SpectricButton, ButtonProps, ButtonEventMap>;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * {@link SpectricButton}\n */\n \"spectric-button\": ReactElementWithPropsAndEvents<SpectricButton, ButtonProps, ButtonEventMap>;\n }\n }\n }\n}\n","import{_$LH as o}from\"./lit-html.js\";\n/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{I:t}=o,i=o=>null===o||\"object\"!=typeof o&&\"function\"!=typeof o,n={HTML:1,SVG:2,MATHML:3},e=(o,t)=>void 0===t?void 0!==o?._$litType$:o?._$litType$===t,l=o=>null!=o?._$litType$?.h,c=o=>void 0!==o?._$litDirective$,d=o=>o?._$litDirective$,f=o=>void 0===o.strings,s=()=>document.createComment(\"\"),r=(o,i,n)=>{const e=o._$AA.parentNode,l=void 0===i?o._$AB:i._$AA;if(void 0===n){const i=e.insertBefore(s(),l),c=e.insertBefore(s(),l);n=new t(i,c,o,o.options)}else{const t=n._$AB.nextSibling,i=n._$AM,c=i!==o;if(c){let t;n._$AQ?.(o),n._$AM=o,void 0!==n._$AP&&(t=o._$AU)!==i._$AU&&n._$AP(t)}if(t!==l||c){let o=n._$AA;for(;o!==t;){const t=o.nextSibling;e.insertBefore(o,l),o=t}}}return n},v=(o,t,i=o)=>(o._$AI(t,i),o),u={},m=(o,t=u)=>o._$AH=t,p=o=>o._$AH,M=o=>{o._$AP?.(!1,!0);let t=o._$AA;const i=o._$AB.nextSibling;for(;t!==i;){const o=t.nextSibling;t.remove(),t=o}},h=o=>{o._$AR()};export{n as TemplateResultType,h as clearPart,p as getCommittedValue,d as getDirectiveClass,r as insertPart,l as isCompiledTemplateResult,c as isDirectiveResult,i as isPrimitive,f as isSingleExpression,e as isTemplateResult,M as removePart,v as setChildPartValue,m as setCommittedValue};\n//# sourceMappingURL=directive-helpers.js.map\n","import{isSingleExpression as i}from\"./directive-helpers.js\";import{Directive as t,PartType as e}from\"./directive.js\";export{directive}from\"./directive.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const s=(i,t)=>{const e=i._$AN;if(void 0===e)return!1;for(const i of e)i._$AO?.(t,!1),s(i,t);return!0},o=i=>{let t,e;do{if(void 0===(t=i._$AM))break;e=t._$AN,e.delete(i),i=t}while(0===e?.size)},r=i=>{for(let t;t=i._$AM;i=t){let e=t._$AN;if(void 0===e)t._$AN=e=new Set;else if(e.has(i))break;e.add(i),c(t)}};function h(i){void 0!==this._$AN?(o(this),this._$AM=i,r(this)):this._$AM=i}function n(i,t=!1,e=0){const r=this._$AH,h=this._$AN;if(void 0!==h&&0!==h.size)if(t)if(Array.isArray(r))for(let i=e;i<r.length;i++)s(r[i],!1),o(r[i]);else null!=r&&(s(r,!1),o(r));else s(this,i)}const c=i=>{i.type==e.CHILD&&(i._$AP??=n,i._$AQ??=h)};class f extends t{constructor(){super(...arguments),this._$AN=void 0}_$AT(i,t,e){super._$AT(i,t,e),r(this),this.isConnected=i._$AU}_$AO(i,t=!0){i!==this.isConnected&&(this.isConnected=i,i?this.reconnected?.():this.disconnected?.()),t&&(s(this,i),o(this))}setValue(t){if(i(this._$Ct))this._$Ct._$AI(t,this);else{const i=[...this._$Ct._$AH];i[this._$Ci]=t,this._$Ct._$AI(i,this,0)}}disconnected(){}reconnected(){}}export{f as AsyncDirective,t as Directive,e as PartType};\n//# sourceMappingURL=async-directive.js.map\n","import{nothing as t}from\"../lit-html.js\";import{AsyncDirective as i}from\"../async-directive.js\";import{directive as s}from\"../directive.js\";\n/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const e=()=>new h;class h{}const o=new WeakMap,n=s(class extends i{render(i){return t}update(i,[s]){const e=s!==this.Y;return e&&void 0!==this.Y&&this.rt(void 0),(e||this.lt!==this.ct)&&(this.Y=s,this.ht=i.options?.host,this.rt(this.ct=i.element)),t}rt(t){if(this.isConnected||(t=void 0),\"function\"==typeof this.Y){const i=this.ht??globalThis;let s=o.get(i);void 0===s&&(s=new WeakMap,o.set(i,s)),void 0!==s.get(this.Y)&&this.Y.call(this.ht,void 0),s.set(this.Y,t),void 0!==t&&this.Y.call(this.ht,t)}else this.Y.value=t}get lt(){return\"function\"==typeof this.Y?o.get(this.ht??globalThis)?.get(this.Y):this.Y?.value}disconnected(){this.lt===this.ct&&this.rt(void 0)}reconnected(){this.rt(this.ct)}});export{e as createRef,n as ref};\n//# sourceMappingURL=ref.js.map\n","export const BitArray = class BitArray {\n buffer: ArrayBuffer;\n u8: Uint8Array;\n constructor(buf: ArrayBuffer) {\n this.buffer = buf;\n this.u8 = new Uint8Array(buf);\n return new Proxy(this, {\n get(obj: any, prop) {\n if (!obj[prop]) {\n return obj.getBit(prop);\n } else {\n return obj[prop];\n }\n }\n })\n }\n getBit(idx: number) {\n var v = this.u8[idx >> 3];\n var off = idx & 0x7;\n return (v >> (7 - off)) & 1;\n }\n setBit(idx: number, val: any) {\n var off = idx & 0x7;\n if (val) {\n this.u8[idx >> 3] |= 0x80 >> off;\n } else {\n this.u8[idx >> 3] &= ~(0x80 >> off);\n }\n }\n get length() {\n return this.u8.byteLength * 8;\n }\n set(array: string | any[], start: number) {\n for (let i = start || 0, j = 0, len = array.length; j < len; i++, j++) {\n this.setBit(i, array[j]);\n }\n };\n subarray(start: number, stop: number) {\n let sub = [];\n start = start || 0;\n stop = stop || this.length;\n stop = stop > this.length ? this.length : stop;\n for (let i = start; i < stop; i++) {\n sub.push(this.getBit(i));\n }\n return sub;\n };\n}\n","export const debounce = (func: Function, wait: number) => {\n let timeout: number;\n return (...args: any[]) => {\n clearTimeout(timeout);\n timeout = window.setTimeout(() => func.apply(this, args), wait);\n };\n};\nexport const debounceAnimation = (func: Function) => {\n var animationFrame: number;\n return (...args: any[]) => {\n if (animationFrame) {\n cancelAnimationFrame(animationFrame)\n }\n animationFrame = requestAnimationFrame(() => {\n func.apply(this, args)\n })\n }\n}","import { css, html, PropertyValues } from 'lit';\n\n\nimport { customElement, property, queryAsync } from 'lit/decorators.js';\nimport { createRef, ref, Ref } from 'lit/directives/ref.js';\nimport { BitArray } from \"../classes/BitArray\"\nimport { DisposableElement, IDisposable } from '../classes/DisposibleElement';\nimport { debounceAnimation } from '../utils/debounce';\nimport { HTMLElementTagWithEvents, ReactElementWithPropsAndEvents } from './types';\n\nexport interface BitDisplayProps {\n /** Array buffer to display */\n arrayBuffer: ArrayBuffer;\n /** Bits per line */\n frameWidth?: number;\n /** How many pixels per bit */\n scale?: number;\n /** Width of the display canvas */\n width?: number;\n /** Height of the display canvas */\n height?: number;\n\n}\ntype Position = {\n x: number;\n y: number;\n}\nexport type BitDisplayMouseEvent = {\n position: Position,\n nativeEvent: MouseEvent\n bitIndex: number\n}\nconst events = [\"mousemove\", \"click\", \"dblclick\", \"mousedown\", \"mouseup\", \"contextmenu\"] as const\ntype BitEventHandler = (event: CustomEvent<BitDisplayMouseEvent>) => void\ntype AllEvents = typeof events\n\nexport interface BitDisplayEventMap extends Record<`bit${Capitalize<AllEvents[number]>}`, BitEventHandler> {\n}\n\n\nconst DEFAULT_SIZE = { width: 200, height: 200 }\nconst SCROLLBAR_SIZE = { width: 10, height: 10 }\n/**\n * @fires bitMousemove - emits BitDisplayMouseEvent on mousemove over the canvas\n * @fires bitClick - emits BitDisplayMouseEvent on mouse click on the canvas\n * @fires bitDblclick - emits BitDisplayMouseEvent on mouse double click on the canvas\n * @fires bitMousedown - emits BitDisplayMouseEvent on mouse down onthe canvas\n * @fires bitMouseup - emits BitDisplayMouseEvent on mouse up on the canvas\n * @fires bitContextmenu - emits BitDisplayMouseEvent on mouse right click on the canvas\n */\n@customElement(\"spectric-bit-display\")\nexport class BitDisplayCanvas extends DisposableElement implements BitDisplayProps {\n @property({ type: Object, attribute: false })\n arrayBuffer: ArrayBuffer = new ArrayBuffer(0);\n @property({ type: Number })\n frameWidth: number = 100;\n @property({ type: Number })\n scale: number = 1;\n @property({ type: Number })\n width: number = 200;\n @property({ type: Number })\n height: number = 200;\n static styles = css`\n :host{\n position: relative;\n --border-radius: var(--spectric-border-radius,4em);\n --scroll-color: var(--spectric-background-inverse,#393939);\n --background-color: var(--spectric-background, #ffffff);\n }\n #viewport{\n overflow: scroll;\n position: absolute;\n }\n #fakescrolldiv {\n position: relative;\n overflow-x: hidden;\n overflow-y: hidden;\n z-index:-1;\n }\n canvas{\n position: absolute;\n left:0;\n top:0;\n background-color:var(--background-color);\n }\n ::-webkit-scrollbar {\n height: ${SCROLLBAR_SIZE.height}px;\n width: ${SCROLLBAR_SIZE.width}px;\n\n}\n\n/* Webkit psudo elements don't pick up variables defined by the host */\n::-webkit-scrollbar-thumb {\n background: var(--spectric-background-inverse,#393939);\n border-radius: var(--spectric-border-radius,4em);\n -webkit-border-radius: var(--spectric-border-radius,4em);\n padding-top: 1px;\n padding-bottom: 1px;\n box-shadow: 0 0 1px var(--spectric-primary,#242424) inset;\n}\n::-webkit-scrollbar-thumb:hover {\n background: var(--spectric-primary,#009eb3); \n}\n::-webkit-scrollbar-corner {\n background: var(--spectric-background, #ffffff);\n}\n/* Buttons */\n\n::-webkit-scrollbar-button:single-button {\n background-color: transparent;\n display: block;\n border-style: solid;\n}/* Up */\n::-webkit-scrollbar-button:single-button:vertical:decrement {\n border-width: 0 5px 5px 5px;\n border-color: var(--spectric-background, #ffffff) var(--spectric-background, #ffffff) var(--spectric-background-inverse,#393939) var(--spectric-background, #ffffff);\n}\n::-webkit-scrollbar-button:single-button:vertical:decrement:hover {\n border-color: var(--spectric-background, #ffffff) var(--spectric-background, #ffffff) var(--spectric-primary,#009eb3) var(--spectric-background, #ffffff);\n}\n/* Down */\n::-webkit-scrollbar-button:single-button:vertical:increment {\n border-width: 5px 5px 0 5px;\n border-color: var(--spectric-background-inverse,#393939) var(--spectric-background, #ffffff) transparent var(--spectric-background, #ffffff);\n}\n\n::-webkit-scrollbar-button:vertical:single-button:increment:hover {\n border-color: var(--spectric-primary,#009eb3) var(--spectric-background, #ffffff) transparent var(--spectric-background, #ffffff);\n}\n\n/* Left */\n::-webkit-scrollbar-button:single-button:horizontal:decrement {\n border-width: 5px 5px 5px 0;\n border-color:var(--spectric-background, #ffffff) var(--spectric-background-inverse,#393939) var(--spectric-background, #ffffff) var(--spectric-background, #ffffff);\n\n}\n\n::-webkit-scrollbar-button:single-button:horizontal:decrement:hover {\n border-width: 5px 5px 5px 0;\n border-color:var(--spectric-background, #ffffff) var(--spectric-primary,#009eb3) var(--spectric-background, #ffffff) var(--spectric-background, #ffffff);\n\n}\n\n\n\n/* Right */\n::-webkit-scrollbar-button:single-button:horizontal:increment {\n border-width: 5px 0 5px 5px;\n border-color:var(--spectric-background, #ffffff) var(--spectric-background, #ffffff) var(--spectric-background, #ffffff) var(--spectric-background-inverse,#393939);\n\n}\n\n::-webkit-scrollbar-button:single-button:horizontal:increment:hover {\n border-width: 5px 0 5px 5px;\n border-color:var(--spectric-background, #ffffff) var(--spectric-background, #ffffff) var(--spectric-background, #ffffff) var(--spectric-primary,#009eb3);\n\n}\n\n `\n private state: { scale?: number } = {};\n private yStart: number = 0;\n private xStart: number = 0;\n @queryAsync(\"canvas\")\n private _canvas!: Promise<HTMLCanvasElement>\n private refs: {\n viewport: Ref<HTMLDivElement>,\n canvas: Ref<HTMLCanvasElement>, scrollDiv: Ref<HTMLDivElement>\n } = {\n viewport: createRef(),\n canvas: createRef(),\n scrollDiv: createRef()\n };\n private _bitArray?: any;\n\n private resizeObserver: ResizeObserver & IDisposable;\n private color: string = \"#000000\";\n constructor() {\n super();\n let observer = new ResizeObserver(this.onResize) as any\n observer.dispose = () => {\n this.resizeObserver.disconnect()\n }\n this.resizeObserver = observer\n this.addDisposableListener(document.body, \"theme-change\", this.onThemeChange)\n\n var lastPosition: Partial<Record<AllEvents[number], number>> = {}\n events.forEach(eventName => {\n this.addDisposableListener(this._canvas, eventName, debounceAnimation(async (e: MouseEvent) => {\n e.stopImmediatePropagation()\n e.stopPropagation()\n e.preventDefault()\n var canvas = await (this._canvas)\n let rect = canvas.getBoundingClientRect()\n let position = {\n x: Math.floor(Math.abs(e.clientX - rect.left)),\n y: Math.floor(Math.abs(e.clientY - rect.top))\n };\n let bitIndex = this.canvasPositionToBit(position)\n //If the bit index didn't change we don't need to fire an event, this can happen when the scale is more than 1px \n if (eventName === \"mousemove\" && lastPosition[eventName] == bitIndex) {\n return\n }\n lastPosition[eventName] = bitIndex\n let bitEventName = \"bit\" + String(eventName).charAt(0).toUpperCase() + String(eventName).slice(1)\n if (bitIndex != -1) {\n let event = new CustomEvent<BitDisplayMouseEvent>(bitEventName, {\n detail: { bitIndex, position, nativeEvent: e }\n })\n this.dispatchEvent(event)\n }\n }))\n })\n\n }\n private onThemeChange = () => {\n let cssStyle = getComputedStyle(this);\n if (this.color != cssStyle.color) {\n this.color = cssStyle.color\n this.paint()\n }\n }\n connectedCallback(): void {\n this.onResize()\n super.connectedCallback()\n this.registerDisposable(this.resizeObserver)\n this.resizeObserver.observe(this)\n }\n\n\n protected updated(changedProperties: PropertyValues): void {\n if (changedProperties.has(\"arrayBuffer\")) {\n if (this.arrayBuffer) {\n this._bitArray = new BitArray(this.arrayBuffer);\n }\n }\n const repaintProps = [\"arrayBuffer\", \"scale\", \"frameWidth\", \"width\", \"height\"]\n for (const prop of repaintProps) {\n if (changedProperties.has(prop)) {\n this.paint();\n return\n }\n }\n }\n\n\n private onResize = () => {\n this.calculateViewport();\n }\n canvasPositionToBit(position: { x: number, y: number }) {\n let x = Math.floor(position.x / this.scale)\n let y = Math.floor(position.y / this.scale)\n if (x > this.frameWidth - 1) {\n return -1\n }\n let startBit = this.yStart * this.frameWidth + this.xStart\n return startBit + (y * this.frameWidth + x)\n }\n paint() {\n if (!this.refs.canvas.value || !this._bitArray) {\n return\n }\n const { frameWidth, _bitArray: bitArray } = this;\n if (frameWidth <= 0) {\n return\n }\n this.calculateViewport()\n const { width = DEFAULT_SIZE.width, height = DEFAULT_SIZE.height } = this;\n const scale = this.getPxPerBit()\n const context = this.refs.canvas.value.getContext(\"2d\");\n if (!context) {\n return\n }\n if (this.state.scale != scale) {\n context.reset()\n context.scale(scale, scale);\n }\n let cssStyle = getComputedStyle(this);\n context.fillStyle = cssStyle.color\n context.clearRect(0, 0, width, height);\n let y = 0;\n\n for (\n let i = this.yStart * frameWidth + this.xStart, len = bitArray.length;\n i < len;\n i++\n ) {\n let x = (i % frameWidth) - this.xStart;\n if (x < 0) {\n continue; //Less than 0 we are off screen\n }\n if (Math.floor(x * scale) > width) {\n y++;\n i = y * frameWidth + this.yStart * frameWidth + this.xStart - 1;\n continue; //Don't bother going if it is off screen\n }\n if (Math.floor(y * scale) > height) {\n break; //Don't bother going if it is off screen\n }\n if (bitArray.getBit(i) === 1) {\n context.fillRect(x, y, 1, 1);\n }\n if ((i + 1) % frameWidth === 0 && i >= frameWidth - 1) {\n y++;\n }\n }\n }\n private handleScroll = () => {\n if (!this.refs.viewport.value) {\n return\n }\n const scale = this.getPxPerBit()\n this.yStart = this.refs.viewport.value.scrollTop\n ? Math.floor(this.refs.viewport.value.scrollTop / scale) + 1\n : 0;\n this.xStart = this.refs.viewport.value.scrollLeft\n ? Math.floor(this.refs.viewport.value.scrollLeft / scale) + 1\n : 0;\n this.paint();\n }\n\n getPxPerBit() {\n return this.scale > 0 ? this.scale : 1;\n }\n calculateViewport() {\n const { frameWidth, _bitArray: bitArray } = this;\n if (this.refs.scrollDiv.value) {\n var pxPerBit = this.getPxPerBit();\n const height = (bitArray.length / frameWidth) * pxPerBit;\n const width = frameWidth * pxPerBit;\n const div = this.refs.scrollDiv.value;\n div.style.width = width + \"px\";\n div.style.height = height + \"px\"\n }\n }\n protected render(): unknown {\n //return html`<div>here</div>`\n const { height = DEFAULT_SIZE.height, width = DEFAULT_SIZE.width } = this\n return html`\n <div\n id=\"viewport\"\n ${ref(this.refs.viewport)}\n @scroll=${this.handleScroll}\n style=${`width:${width + SCROLLBAR_SIZE.width}px;height:${height + SCROLLBAR_SIZE.height}px;overflow:auto;position:relative`}\n >\n <div\n id=\"fakescrolldiv\"\n ${ref(this.refs.scrollDiv)}\n >\n </div>\n </div>\n <canvas\n ${ref(this.refs.canvas)}\n width=${width}\n height=${height}\n ></canvas>\n`\n\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"spectric-bit-display\": HTMLElementTagWithEvents<BitDisplayCanvas, BitDisplayEventMap>\n }\n namespace JSX {\n interface IntrinsicElements {\n /**\n * {@link BitDisplayCanvas}\n */\n \"spectric-bit-display\": ReactElementWithPropsAndEvents<BitDisplayCanvas, BitDisplayProps, BitDisplayEventMap>;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * {@link BitDisplayCanvas}\n */\n \"spectric-bit-display\": ReactElementWithPropsAndEvents<BitDisplayCanvas, BitDisplayProps, BitDisplayEventMap>;\n }\n }\n }\n}\n","import { css } from \"lit\";\n\nexport default css`.spectric-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n border-bottom: 1px solid rgba(0, 0, 0, 0.1);\n padding: 15px 20px;\n font-family: 'Nunito Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n}\n\n.spectric-header svg {\n display: inline-block;\n vertical-align: top;\n}\n.spectric-header slot {\n display: inline-block;\n vertical-align: middle;\n}\n.spectric-header h1 {\n display: inline-block;\n vertical-align: middle;\n margin: 6px 0 6px 10px;\n font-weight: 700;\n font-size: 20px;\n line-height: 1;\n}\n\n.spectric-header button + button {\n margin-left: 10px;\n}\n\n.spectric-header .welcome {\n margin-right: 10px;\n color: #333;\n font-size: 14px;\n}\n`","import { html, LitElement, TemplateResult } from 'lit';\n\nimport '.';\nimport { customElement, property } from 'lit/decorators.js';\nimport styles from './header.css';\nimport { HTMLElementTagWithEvents, ReactElementWithPropsAndEvents } from './types';\n\n\n/**\n * Properties defining \n */\nexport interface HeaderProps {\n username?: string;\n /**\n * Shows the login Button\n */\n showLoginButton?: boolean\n /**\n * Shows the create account Button when not logged in\n */\n showCreateAccount?: boolean\n}\nexport interface HeaderSlots {\n /** Main name of the application */\n name?: string | Node | TemplateResult\n /** Slot to the left of the title typically used for app icons, and/or dropdown navigation menus.*/\n branding?: string | Node | TemplateResult\n /** Slot in the center of the header.*/\n center?: string | Node | TemplateResult\n /** slot right of login/out buttons*/\n end?: string | Node | TemplateResult\n}\n\nexport interface HeaderEventMap {\n \"login\": (event: CustomEvent<void>) => void;\n \"logout\": (event: CustomEvent<void>) => void;\n \"createAccount\": (event: CustomEvent<void>) => void\n}\n\n/**\n * @slot name - Main name of the application\n * @slot branding - Slot to the left of the title typically used for app icons, and/or dropdown navigation menus.\n * @slot center - Slot in the center of the header.\n * @slot end - slot right of login/out buttons\n */\n@customElement(\"spectric-header\")\nexport class Header extends LitElement implements HeaderProps {\n static styles = styles\n @property({ type: Boolean, reflect: true }) showCreateAccount: boolean = false;\n @property({ type: Boolean, reflect: true }) showLoginButton: boolean = false;\n @property({ type: String, reflect: true }) username: string = \"\";\n onLogout = () => {\n const options = {\n bubbles: true,\n composed: true,\n };\n this.dispatchEvent(new CustomEvent('logout', options));\n\n }\n onLogin = () => {\n const options = {\n bubbles: true,\n composed: true,\n };\n this.dispatchEvent(new CustomEvent('login', options));\n }\n onCreateAccount = () => {\n const options = {\n bubbles: true,\n composed: true,\n };\n this.dispatchEvent(new CustomEvent('createAccount', options));\n }\n protected render() {\n return html`\n <header>\n <div class=\"spectric-header\">\n <div style=\"flex-grow:1;\">\n <slot name=\"branding\"></slot>\n <h1><slot name=\"name\"></slot></h1>\n <slot name=\"center\"></slot>\n </div>\n ${this.showLoginButton !== false ? html`\n <div>\n ${(this.username && this.username !== \"\")\n ? html`<spectric-button variant=\"secondary\" size=\"small\" @click=${this.onLogout}>Log out</spectric-button>`\n : html`\n ${this.showCreateAccount !== false ? html`<spectric-button variant=\"text\" size=\"small\" @click=${this.onCreateAccount}>Sign up</spectric-button>` : null}\n <spectric-button variant=\"primary\" size=\"small\" @click=${this.onLogin}>Log in</spectric-button>`\n }\n \n \n </div>`: null}\n <slot name=\"end\"></slot>\n </div>\n </header>\n `\n }\n}\n\n\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"spectric-header\": HTMLElementTagWithEvents<Header, HeaderEventMap>\n }\n namespace JSX {\n interface IntrinsicElements {\n /**\n * {@link Header}\n */\n \"spectric-header\": ReactElementWithPropsAndEvents<Header, HeaderProps, HeaderEventMap>;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * {@link Header}\n */\n \"spectric-header\": ReactElementWithPropsAndEvents<Header, HeaderProps, HeaderEventMap>;\n }\n }\n }\n}\n","import { html, LitElement } from 'lit';\nimport { StyleInfo, styleMap } from 'lit/directives/style-map.js';\nimport \"./Button\"\nimport { customElement, property } from 'lit/decorators.js';\nimport { HTMLElementTagWithEvents, ReactElementWithPropsAndEvents } from './types';\n\nexport interface BannerProps {\n /**What is returned in the event details when a banner is dismissed */\n bannerId?: any,\n /** Banner Text to display */\n text?: string;\n /** What background color to use */\n headerStyle?: StyleInfo;\n /** Can be dismissed */\n dismissable?: boolean;\n\n}\n\n\n\nconst DEFAULT_STYLE: StyleInfo = {\n display: \"flex\",\n alignItems: \"center\",\n backgroundColor: \"black\",\n color: \"white\",\n textAlign: \"center\"\n}\n\n/**\n * @slot text - Banner Text content\n */\n@customElement('spectric-banner')\nexport class SpectricBanner extends LitElement implements BannerProps {\n @property({ type: Boolean, reflect: true })\n dismissable: boolean = false;\n //static styles?: CSSResultGroup | undefined = style;\n @property({ type: String, reflect: true })\n text?: string = \"\";\n @property({ type: String, reflect: true })\n bannerId?: string = \"\";\n @property({ type: Object })\n headerStyle?: StyleInfo = {};\n\n @property({ state: true, type: Boolean, attribute: false })\n private _dismissed: boolean = false;\n\n private onDismiss = (e: PointerEvent) => {\n e.preventDefault()\n e.stopPropagation()\n const options = {\n bubbles: true,\n composed: true,\n };\n this._dismissed = true;\n let { bannerId, text, headerStyle, dismissable }: BannerProps = this\n this.dispatchEvent(new CustomEvent<BannerProps>('bannerDismissed', {\n detail: { bannerId, text, headerStyle, dismissable },\n ...options\n }));\n }\n protected render(): unknown {\n if (this._dismissed) {\n return\n }\n return html`\n <header style=${styleMap({ ...DEFAULT_STYLE, ...this.headerStyle })}>\n <div style=\"flex-grow:1\"><slot name=\"text\">${this.text}</slot><slot></slot></div>\n ${this.dismissable ? html`<spectric-button size=\"small\" @click=${this.onDismiss}>X</spectric-button>` : null}\n </header>\n `;\n }\n}\n\nexport interface BannerEventMap {\n 'bannerDismissed': (event: CustomEvent<BannerProps>) => void\n}\n\ndeclare global {\n\n interface HTMLElementTagNameMap {\n \"spectric-banner\": HTMLElementTagWithEvents<SpectricBanner, BannerEventMap>\n }\n\n namespace JSX {\n interface IntrinsicElements {\n /**\n * {@link SpectricBanner}\n */\n \"spectric-banner\": ReactElementWithPropsAndEvents<SpectricBanner, BannerProps, BannerEventMap>;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * {@link SpectricBanner}\n */\n \"spectric-banner\": ReactElementWithPropsAndEvents<SpectricBanner, BannerProps, BannerEventMap>;\n }\n }\n }\n}","import { css } from \"lit\";\nexport default css`\n\n:host {\n height:100vh;\n width: 100%;\n display: flex;\n flex-direction: column;\n font-size: 14px;\n line-height: 24px;\n font-family: 'Nunito Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n --spectric-background: var(--background,#ffffff);\n --spectric-background-hover:var(--background-hover,rgba(141, 141, 141, 0.12));\n --spectric-background-inverse: var(--background-inverse,#f4f4f4);\n --spectric-background-inverse-hover: var(--background-inverse-hover,#474747);\n --spectric-border-radius: var(--border-radius,.4em);\n --spectric-primary:var(--primary,#1ea7fd);\n --spectric-secondary: var(--secondary,#77878b);\n --spectric-tertiary: var(--tertiary,#0f62fe);\n --spectric-disabled: var(--disabled,#c6c6c6);\n\n /* panel */\n --panel-color:var(--spectric-background-inverse);\n --panel-color-inverse:var(--spectric-background);\n --spectric-border-disabled: var(--disabled);\n\n /*inputs*/\n --spectric-input-color: var(--panel-color-inverse);\n --spectric-input-bottom: var(--panel-color);\n\n --spectric-text-on-color: var(--text-on-color,#ffffff);\n --spectric-text-on-color-disabled: var(--text-on-color-disabled,#8d8d8d);\n --spectric-text-placeholder: var(--text-placeholder,rgba(22, 22, 22, 0.4));\n --spectric-text-primary: var(--text-primary,#161616);\n --spectric-text-secondary: var(--text-secondary,#525252);\n /* Buttons */\n --spectric-button-separator: #e0e0e0;\n --spectric-button-primary: var(--primary,#1ea7fd);\n --spectric-button-secondary: var(--secondary,#77878b);\n --spectric-button-tertiary: var(--tertiary);\n --spectric-button-danger-primary: #da1e28;\n --spectric-button-danger-secondary: #da1e28;\n --spectric-button-danger-active: #750e13;\n --spectric-button-primary-active: #002d9c;\n --spectric-button-secondary-active: #6f6f6f;\n --spectric-button-tertiary-active: #002d9c;\n --spectric-button-danger-hover: #b81921;\n --spectric-button-primary-hover: #0050e6;\n --spectric-button-secondary-hover: #474747;\n --spectric-button-tertiary-hover: #0050e6;\n --spectric-text-on-color-disabled: var(--disabled,#c6c6c6)\n --spectric-button-disabled: #c6c6c6;\n}\n*{\n color: var(--spectric-text-primary);\n background-color: var(--spectric-background,rgb(255 255 255 / 60%));\n}\narticle{\n flex-grow:1;\n overflow-y:auto;\n padding-left: calc(var(--spectric-border-radius, 0.4em) + 2px);\n padding-right: calc(var(--spectric-border-radius, 0.4em) + 2px);\n}\n h2 {\n display: inline-block;\n vertical-align: middle;\n margin: 0 0 4px;\n font-weight: 700;\n font-size: 32px;\n line-height: 1;\n}\n\n p {\n margin: 1em 0;\n}\n\n a {\n color: var(--primary);\n text-decoration: var(--primary);\n}\n\n ul {\n margin: 1em 0;\n padding-left: 30px;\n}\n\n li {\n margin-bottom: 8px;\n}\n::-webkit-scrollbar {\n width: 10px;\n }\n\n ::-webkit-scrollbar-thumb {\n background: var(--spectric-background-inverse,#393939);\n border-radius: var(--spectric-border-radius,4em);\n -webkit-border-radius: var(--spectric-border-radius,4em);\n padding-top: 1px;\n padding-bottom: 1px;\n box-shadow: 0 0 1px var(--spectric-primary,#242424) inset;\n}\n::-webkit-scrollbar-thumb:hover {\n background: var(--spectric-primary,#009eb3); \n}\n\n\n ::-webkit-scrollbar-button:single-button {\n background-color: transparent;\n display: block;\n border-style: solid;\n}\n/* Up */\n::-webkit-scrollbar-button:single-button:vertical:decrement {\n border-width: 0 5px 5px 5px;\n border-color: var(--spectric-background, #ffffff) var(--spectric-background, #ffffff) var(--spectric-background-inverse,#393939) var(--spectric-background, #ffffff);\n}\n::-webkit-scrollbar-button:single-button:vertical:decrement:hover {\n border-color: var(--spectric-background, #ffffff) var(--spectric-background, #ffffff) var(--spectric-primary,#009eb3) var(--spectric-background, #ffffff);\n}\n/* Down */\n::-webkit-scrollbar-button:single-button:vertical:increment {\n border-width: 5px 5px 0 5px;\n border-color: var(--spectric-background-inverse,#393939) var(--spectric-background, #ffffff) transparent var(--spectric-background, #ffffff);\n}\n\n::-webkit-scrollbar-button:vertical:single-button:increment:hover {\n border-color: var(--spectric-primary,#009eb3) var(--spectric-background, #ffffff) transparent var(--spectric-background, #ffffff);\n}\n\n/* Left */\n::-webkit-scrollbar-button:single-button:horizontal:decrement {\n border-width: 5px 5px 5px 0;\n border-color:var(--spectric-background, #ffffff) var(--spectric-background-inverse,#393939) var(--spectric-background, #ffffff) var(--spectric-background, #ffffff);\n\n}\n\n::-webkit-scrollbar-button:single-button:horizontal:decrement:hover {\n border-width: 5px 5px 5px 0;\n border-color:var(--spectric-background, #ffffff) var(--spectric-primary,#009eb3) var(--spectric-background, #ffffff) var(--spectric-background, #ffffff);\n\n}\n\n\n\n/* Right */\n::-webkit-scrollbar-button:single-button:horizontal:increment {\n border-width: 5px 0 5px 5px;\n border-color:var(--spectric-background, #ffffff) var(--spectric-background, #ffffff) var(--spectric-background, #ffffff) var(--spectric-primary,#009eb3);\n\n}\n\n::-webkit-scrollbar-button:single-button:horizontal:increment:hover {\n border-width: 5px 0 5px 5px;\n border-color:var(--spectric-background, #ffffff) var(--spectric-background, #ffffff) var(--spectric-background, #ffffff) var(--spectric-background-inverse-hover,#474747);\n\n}\n\n`;","import{nothing as t}from\"../lit-html.js\";\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o=o=>o??t;export{o as ifDefined};\n//# sourceMappingURL=if-defined.js.map\n","import { ElementPart, Part } from 'lit';\nimport { nothing } from 'lit';\nimport { AsyncDirective, directive } from 'lit/async-directive.js';\n\n\n\n/**\n * Usage:\n * import { html, render } from 'lit';\n * import { spreadProps } from '@spectric/ui';\n *\n * render(\n * html`\n * <div\n * ${spreadProps({\n * prop1: 'prop1',\n * prop2: ['Prop', '2'],\n * prop3: {\n * prop: 3,\n * }\n * })}\n * ></div>\n * `,\n * document.body,\n * );\n */\nexport class SpreadPropsDirective extends AsyncDirective {\n host!: EventTarget | object | Element;\n element!: Element;\n prevData: any = {};\n\n render(_spreadData: any) {\n return nothing;\n }\n update(part: Part, [spreadData]: Parameters<this['render']>) {\n if (this.element !== (part as ElementPart).element) {\n this.element = (part as ElementPart).element;\n }\n this.host = part.options?.host || this.element;\n this.apply(spreadData);\n this.groom(spreadData);\n this.prevData = { ...spreadData };\n }\n\n apply(data: any) {\n if (!data) return;\n const { element } = this;\n for (const key in data) {\n const value = data[key];\n if ((element as any)[key] === value) {\n continue;\n }\n // @ts-ignore\n element[key] = value;\n }\n }\n\n groom(data: any) {\n const { prevData, element } = this;\n if (!prevData) return;\n for (const key in prevData) {\n //@ts-ignore\n if (!data || (!(key in data) && element[key] === prevData[key])) {\n // @ts-ignore\n element[key] = undefined;\n }\n }\n }\n}\n\nexport const spreadProps = directive(SpreadPropsDirective);","import { StyleInfo } from \"lit/directives/style-map.js\";\n\n/*\n\n[US] Department of Defense (DoD)\n\nCONTROLLED UNCLASSIFIED INFORMATION (CUI, color code: #3D1E5A)\nCLASSIFIED (color code: #723D9A)\nUNCLASSIFIED (U, color code: #007A33)\nCONFIDENTIAL (C, color code: #0033A0)\nSECRET (S, color code: #C8102E)\nTOP SECRET (TS, color code: #FF671F)\nTOP SECRET//SENSITIVE COMPARTMENT INFORMATION (TS//SCI, color code: #F7EA48)\nNOTICE: According to CI Policy Publications Update (dodcui.mil), the CUI is not a CNSI classification.\nThe cyber intel classification banner is designed to fulfill the requirements of Executive Order 13526, ODNI CG v2.1 § 2.3.1, 32 CFR Part 2001.23 / Part 2002.16.a.3, DoDI 5200.48, DoD Manual 5200.1R, ISOO Rev4, STIG V-6146, STIG V-222643, and ECML-1 for marking/labeling sensitive/classified information electronically.\n\n[UK] Government Communications Headquarters (GCHQ)\n\nPROTECTIVE MARKING NOT SET (color code: #616161)\nUK OFFICIAL (color code: #2B71C7)\nUK OFFICIAL SENSITIVE (color code: #2B71C7)\nUK SECRET (color code: #F39C2C)\nUK TOP SECRET (color code: #AA0000)\nNOTICE: The above color code is defined by the UK Secret Intelligence Service (MI6) – Intelligence Community Design System.\n\n[CA] Canadian Security Intelligence Service (CSIS)\n\nPROTECTED A (color code: #227ABC)\nPROTECTED B (color code: #900FB5)\nPROTECTED C (color code: #460FB5)\nCONFIDENTIAL (color code: #0033a0)\nSECRET (color code: #c8102e)\nTOP SECRET (color code: #ff671f)\nNOTICE: The above color code is defined by the Government of Canada.\n\n[AU] Australian Secret Intelligence Service (ASIS)\n\nUNOFFICIAL\nOFFICIAL\nOFFICIAL: Sensitive\nConfidential (color code: #4F81BD)\nSECRET (color code: #E5B8B7)\nTOP SECRET (color code: #AA0000)\nNOTICE: The above color code is defined by the Australian Government Attorney-General’s Department | Protective Security Policy Framework | Policy 8 – Classification System.\n*/\nexport enum ClassificationVariants {\n None = \"none\",\n Uscui = \"us.cui\",\n Usclassified = \"us.classified\",\n Usunclassified = \"us.unclassified\",\n Usconfidential = \"us.confidential\",\n Ussecret = \"us.secret\",\n Ustopsecret = \"us.topsecret\",\n UstopsecretSi = \"us.topsecret.si\",\n Uknotset = \"uk.notset\",\n Ukofficial = \"uk.official\",\n Uksecret = \"uk.secret\",\n Uktopsecret = \"uk.topsecret\",\n Caprotected_a = \"ca.protected_a\",\n Caprotected_b = \"ca.protected_b\",\n Caprotected_c = \"ca.protected_c\",\n Caconfidential = \"ca.confidential\",\n Casecret = \"ca.secret\",\n Catopsecret = \"ca.topsecret\",\n Auunofficial = \"au.unofficial\",\n Auofficial = \"au.official\",\n Auofficialsensitive = \"au.officialsensitive\",\n Auconfidential = \"au.confidential\",\n Ausecret = \"au.secret\",\n Autopsecret = \"au.topsecret\",\n}\nexport type Classifications = `${ClassificationVariants}`\nexport const ClassificationStyles: Record<Classifications, StyleInfo> = {\n \"none\": {\n\n },\n //US Department of Defense spec CFR-2002-title31-vol1-sec2-7\n \"us.cui\": { //controlled unclassified information\n color: \"white\",\n backgroundColor: \"#3D1E5A\",\n content: \"Controlled Unclassified Information\"\n },\n \"us.classified\": {\n color: \"white\",\n backgroundColor: \"#723D9A\",\n content: \"Classified\"\n },\n \"us.unclassified\": {\n color: \"white\",\n backgroundColor: \"#007A33\",\n content: \"Unclassified\"\n },\n \"us.confidential\": {\n color: \"white\",\n backgroundColor: \"#0033A0\",\n content: \"Confidential\"\n },\n \"us.secret\": {\n color: \"white\",\n backgroundColor: \"#C8102E\",\n content: \"Secret\"\n },\n \"us.topsecret\": {\n color: \"white\",\n backgroundColor: \"#FF671F\",\n content: \"Top Secret\"\n },\n \"us.topsecret.si\": {\n color: \"black\",\n backgroundColor: \"#F7EA48\",\n content: \"Top Secret//SI\"\n },\n \"uk.notset\": {\n color: \"white\",\n backgroundColor: \" #616161\",\n content: \"Not Set\"\n\n },\n \"uk.official\": {\n color: \"white\",\n backgroundColor: \"#2B71C7\",\n content: \"For Offical Use\"\n },\n \"uk.secret\": {\n color: \"white\",\n backgroundColor: \"#F39C2C\",\n content: \"Secret\"\n },\n \"uk.topsecret\": {\n color: \"white\",\n backgroundColor: \"#AA0000\",\n content: \"Top Secret\"\n },\n \"ca.protected_a\": {\n color: \"white\",\n backgroundColor: \"#227ABC\",\n content: \"PROTECTED A\"\n },\n \"ca.protected_b\": {\n color: \"white\",\n backgroundColor: \"#900FB5\",\n content: \"PROTECTED B\"\n },\n \"ca.protected_c\": {\n color: \"white\",\n backgroundColor: \"#460FB5\",\n content: \"PROTECTED C\"\n },\n \"ca.confidential\": {\n color: \"white\",\n backgroundColor: \"#0033a0\",\n content: \"Confidential\"\n },\n \"ca.secret\": {\n color: \"white\",\n backgroundColor: \"#c8102e\",\n content: \"Secret\"\n },\n \"ca.topsecret\": {\n color: \"white\",\n backgroundColor: \"#ff671f\",\n content: \"Top Secret\"\n },\n \"au.unofficial\": {\n color: \"#666\",\n backgroundColor: \"#ffffffff\",\n content: \"Unofficial\"\n },\n \"au.official\": {\n color: \"#666\",\n backgroundColor: \"#ffffffff\",\n content: \"Official\"\n },\n \"au.officialsensitive\": {\n color: \"#666\",\n backgroundColor: \"#ffffffff\",\n content: \"Official Sentitive\"\n },\n \"au.confidential\": {\n color: \"white\",\n backgroundColor: \"#4F81BD\",\n content: \"Confidential\"\n },\n \"au.secret\": {\n color: \"black\",\n backgroundColor: \" #E5B8B7\",\n content: \"Secret\"\n },\n \"au.topsecret\": {\n color: \"black\",\n backgroundColor: \"#AA0000\",\n content: \"Top Secret\"\n },\n}","import { CSSResultGroup, html, LitElement } from 'lit';\n\nimport { HeaderEventMap, HeaderProps, HeaderSlots } from './Header';\nimport { BannerEventMap, BannerProps } from './Banner';\nimport \"./Banner\"\nimport styles from './page.css';\nimport { customElement } from 'lit/decorators/custom-element.js';\nimport { property } from 'lit/decorators/property.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { spreadProps } from '../utils/spread';\nimport { Classifications, ClassificationVariants } from './configurations/classifications';\nimport { ClassificationStyles } from './configurations/classifications';\nimport { KnownThemes, ThemeEventMap } from './ThemeProvider';\nimport { HTMLElementTagWithEvents, ReactElementWithPropsAndEvents } from './types';\n\n\nexport interface PageBanners {\n classification?: { type: Classifications, text: string }\n notifications?: BannerProps[]\n}\nexport interface PageProps extends HeaderProps {\n theme?: KnownThemes\n showHeader?: boolean\n /** Will control if the top navbar will stay at the top or scroll with the main content */\n headerSticky?: boolean\n classificationLevel?: Classifications\n /** Overrides the default classification banner text */\n classificationText: string\n notifications?: BannerProps[]\n}\n\nexport interface PageSlots extends HeaderSlots {\n /** @description Application Main Conent */\n content?: Node | TemplateStringsArray | string\n}\n\n\n\n/**\n * Spectric page is a basic component that will put all content into an area that expands to fill the whole screen. It calculates the size of the banners and headers for you.\n * \n * It exposes css properties to style all the spectric compenents contained within\n * \n * This component does not fire any events directly but sub components do. See HeaderEventMap & ThemeEventMap & BannerEventMap for full list of events\n * @slot - Main content\n * @slot content - Main content\n * @slot name - Main name of the application\n * @slot branding - Slot to the left of the title typically used for app icons, and/or dropdown navigation menus.\n * @slot center - Slot in the center of the header.\n * @slot end - slot right of login/out buttons\n * @cssprop [--primary=#1ea7fd] - primary color\n * @cssprop [--secondary=#1ea7fd] - secondary color\n * @cssprop [--tertiary=#1ea7fd] - tertiary color\n * @cssprop [--disabled=#1ea7fd] - disabled color\n * @cssprop [--text-primary=#1ea7fd] - text colors\n * @cssprop [--text-secondary=#1ea7fd] - text colors\n * @cssprop [--text-on-color=#ffffff] - color of text on color\n * @cssprop [--background=#1ea7fd] - background color\n * @cssprop [--background-inverse=#f4f4f4] - Even Panel colors\n * @cssprop [--border-radius=0.4em] - sets global border radius\n * @see Events {@link SpectricEventsMaps}\n */\n@customElement(\"spectric-page\")\nexport class SpectricPage extends LitElement implements PageProps {\n static styles?: CSSResultGroup | undefined = styles;\n\n @property({ type: Boolean, reflect: true }) showHeader: boolean = true;\n @property({ type: Boolean, reflect: true }) headerSticky: boolean = true;\n @property({ type: String, reflect: true }) classificationLevel?: Classifications = ClassificationVariants.None;\n @property({ type: String, reflect: true }) classificationText: string = \"\";\n @property({ type: Array, reflect: true }) notifications: BannerProps[] = [];\n @property({ type: Boolean, reflect: true }) showCreateAccount: boolean = false;\n @property({ type: Boolean, reflect: true }) showLoginButton: boolean = true;\n @property({ type: String, reflect: true }) username: string = \"\";\n /** If a theme other than light is provided that will be used ad css properties will be ignored */\n @property({ type: String, reflect: true }) theme?: KnownThemes\n // protected createRenderRoot(): HTMLElement | DocumentFragment {\n // return this\n // }\n protected render() {\n if (this.classificationLevel && !ClassificationStyles[this.classificationLevel]) {\n console.warn(\"Unknown classification\", this.classificationLevel)\n this.classificationLevel = ClassificationVariants.None\n }\n const classificationText = this.classificationLevel ? this.classificationText || ClassificationStyles[this.classificationLevel].content : \"\"\n const header = this.showHeader ? html`<spectric-header ?showCreateAccount=${this.showCreateAccount} .showLoginButton=${this.showLoginButton} username=${ifDefined(this.username)}>\n <slot name=\"branding\" slot=\"branding\"></slot>\n <slot name=\"name\" slot=\"name\"></slot>\n <slot name=\"center\" slot=\"center\"></slot>\n <slot name=\"end\" slot=\"end\"></slot>\n </spectric-header>`: null\n return html`\n ${this.classificationLevel && classificationText ? html`\n <!-- Classification Banner -->\n <spectric-banner ${spreadProps({ text: classificationText, headerStyle: ClassificationStyles[this.classificationLevel] })}></spectric-banner>\n `\n : null}\n <spectric-theme theme=${ifDefined(this.theme)}>\n ${this.notifications ? this.notifications.map((n) => {\n return html`<spectric-banner ${spreadProps(n)} ></spectric-banner>`\n }) : null}\n ${this.headerSticky ? header : null}\n <article>\n ${this.headerSticky ? null : header}\n <section class=\"spectric-page\">\n <slot name=\"content\"></slot>\n <slot></slot>\n </section>\n </article>\n </spectric-theme>\n ${this.classificationLevel && classificationText ?\n html`<spectric-banner ${spreadProps({ text: classificationText, headerStyle: ClassificationStyles[this.classificationLevel] })}></spectric-banner>` :\n null\n }\n\n `\n }\n}\n\n// let p = document.createElement(\"spectric-page\")\n// p.addEventListener(\"theme-change\",(e)=>{\n\n// })\n// let t = document.createElement(\"spectric-theme\")\n// t.addEventListener(\"theme-change\",(e)=>{})\n// interface SpectricEventsMaps extends HeaderEventMap,ThemeEventMap,BannerEventMap {\n\n// }\ntype SpectricEventsMaps = HeaderEventMap & ThemeEventMap & BannerEventMap\n\ndeclare global {\n interface HTMLElementTagNameMap {\n /**\n * {@link SpectricPage}\n */\n \"spectric-page\": HTMLElementTagWithEvents<SpectricPage, SpectricEventsMaps>\n }\n namespace JSX {\n interface IntrinsicElements {\n /**\n * {@link SpectricPage}\n */\n \"spectric-page\": ReactElementWithPropsAndEvents<SpectricPage, PageProps, SpectricEventsMaps>;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * {@link SpectricPage}\n */\n \"spectric-page\": ReactElementWithPropsAndEvents<SpectricPage, PageProps, SpectricEventsMaps>;\n }\n }\n }\n}\n\n","import { html, LitElement, PropertyValues, TemplateResult } from 'lit';\nimport \"./input.css\"\nimport { customElement, eventOptions, property, query } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { ReactElementWithPropsAndEvents } from './types';\nimport { ButtonSizesTypes } from './Button';\nimport { DomEvent } from './table';\nimport { SpectricColorPicker } from './color_picker/ColorPicker';\n\nexport enum InputVariants {\n Text = 'text',\n TextArea = 'text-area',\n number = 'number',\n //checkbox = \"checkbox\",\n color = \"color\",\n date = \"date\",//replace default eventually with custom\n datetime = \"datetime-local\",//replace default eventually with custom\n email = \"email\",\n file = \"file\",//display drop area\n hidden = \"hidden\",//display drop area\n password = \"password\",\n checkbox = \"checkbox\",\n range = \"range\"\n\n}\ntype InputVariantsTypes = `${InputVariants}`\nexport interface InputProps {\n /** Input type */\n variant?: InputVariantsTypes;\n /**Label to display above the input */\n label?: string,\n /**placeholder text to display*/\n placeholder?: string,\n /* should be disabled?*/\n disabled?: boolean,\n /* should be readonly*/\n readonly?: boolean,\n /**\n * The helper text.\n */\n\n helperText?: string,\n /**\n * Specify if the currently value is invalid.\n */\n invalid?: boolean,\n /**\n * Message which is displayed if the value is invalid.\n */\n invalidText?: string | TemplateResult<1>,\n /**\n * Max character count allowed for input. This is needed in order for enableCounter to display\n */\n maxCount?: number,\n /**\n* Boolean property to set the required status\n*/\n required?: boolean,\n /**\n* Shows a button to display the password\n*/\n showPasswordVisibilityToggle?: boolean;\n\n /**\n * Name for the input used for form data events //TODO make sure this works\n */\n name?: string;\n\n /**\n * Pattern to validate the input against for HTML validity checking\n */\n\n pattern?: string;\n /**\n * The sets the autocomplete for the input.\n */\n autocomplete?: HTMLInputElement['autocomplete'];\n}\n@customElement('spectric-input')\nexport class SpectricInput extends LitElement implements InputProps {\n @property({ type: Boolean, reflect: true })\n checked?: boolean;\n size?: ButtonSizesTypes;\n //static styles?: CSSResultGroup | undefined = style;\n protected createRenderRoot(): HTMLElement | DocumentFragment {\n return this\n }\n @property({ type: String, reflect: true })\n placeholder: string = \"\";\n @property({ type: Boolean, reflect: true })\n readonly: boolean = false;\n @property({ type: String, reflect: true })\n variant: InputVariantsTypes = \"text\";\n @property({ type: Boolean, reflect: true })\n disabled: boolean = false;\n @property({ type: String, reflect: true })\n label: string = \"\";\n\n /**\n * \"Hide password\" tooltip text on password visibility toggle\n */\n @property()\n hidePasswordLabel = 'Hide';\n\n /**\n * \"Show password\" tooltip text on password visibility toggle\n */\n @property()\n showPasswordLabel = 'Show';\n\n /**\n * Boolean property to render password visibility toggle\n */\n @property({\n type: Boolean,\n reflect: true,\n })\n showPasswordVisibilityToggle = true;\n\n /**\n * The helper text.\n */\n @property({ type: String, reflect: true })\n helperText = '';\n\n /**\n * Specify if the currently value is invalid.\n */\n @property({ type: Boolean, reflect: true })\n invalid = false;\n\n /**\n * Boolean property to set the required status\n */\n @property({ type: Boolean, reflect: true })\n required = false;\n /**\n * Message which is displayed if the value is invalid.\n */\n @property({ type: String, reflect: true })\n invalidText: InputProps[\"invalidText\"] = '';\n /**\n * Name for the input used for form data events //TODO make sure this works\n */\n @property()\n name = '';\n\n /**\n * Pattern to validate the input against for HTML validity checking\n */\n @property()\n pattern = '';\n @property({ type: Number, reflect: true })\n maxCount: number = 0;\n /**\n* The internal value.\n*/\n protected _value: string | boolean | number = '';\n private _showPassword: boolean = false;\n /**\n * The sets the autocomplete for the input.\n */\n @property({ reflect: true })\n autocomplete: HTMLInputElement['autocomplete'] = \"off\";\n get selectionStart() {\n if (!this._input) {\n return null\n }\n return this._input.selectionStart\n }\n /**\n * The value of the input.\n */\n @property({ reflect: true })\n get value() {\n //pull directly from the input\n if (this._input) {\n if (this.variant == InputVariants.number) {\n return parseFloat(this._input.value)\n }\n return this._input.value;\n }\n // but before then _value will work fine\n return this._value;\n }\n\n set value(value) {\n const oldValue = this._value;\n this._value = value;\n this.requestUpdate('value', oldValue);\n // we set the value directly on the input (when available)\n // so that programatic manipulation updates the UI correctly\n if (this._input) {\n this._input.value = String(value);\n }\n }\n blur(): void {\n if (this._input) {\n this._input.blur()\n }\n }\n focus(options?: FocusOptions): void {\n if (this._input) {\n //Sometimes the input will get auto focused after a modal closes but the cursor isn't set. we need to blur then refocus to get the cursor\n this._input.blur()\n this._input.focus(options)\n }\n }\n setSelectionRange(start: number, end: number, direction: \"forward\" | \"backward\" | \"none\" = \"none\") {\n if (!this._input) {\n return\n }\n this._input.setSelectionRange(start, end, direction)\n }\n /**\n * Handles `oninput` event on the `<input>`.\n */\n protected _handleInput = ({ target }: Event) => {\n const input = (target as HTMLInputElement)\n this.value = input.value;\n this.invalid = !input.validity.valid\n }\n /**\n * The underlying input element\n */\n @query('input')\n protected _input?: HTMLInputElement;\n\n private handleTogglePasswordVisibility = () => {\n this._showPassword = !this._showPassword;\n this.requestUpdate()\n }\n protected updated(changedProperties: PropertyValues): void {\n if (changedProperties.has(\"checked\")) {\n this.dispatchEvent(new Event(\"change\", { bubbles: true }))\n }\n }\n @eventOptions({ capture: true })\n _handleChange(e: Event) {\n e.stopPropagation()\n this.dispatchEvent(new Event(\"change\", { bubbles: true }))\n }\n protected render(): unknown {\n switch (this.variant) {\n case InputVariants.Text:\n case InputVariants.password:\n case InputVariants.number:\n //case InputVariants.checkbox:\n case InputVariants.email:\n //cases below should be replaces with a custom input for uniformity across browsers\n case InputVariants.date://replace with custom date picker \n case InputVariants.datetime://replace with custom date picker \n case InputVariants.file://replace with drag and drop location and custom select file button\n case InputVariants.range:\n return html`\n <div class=\"inputWrapper\">\n <div class=\"text-input__label-helper-wrapper\">\n <div class=\"--text-input__label-wrapper\">\n ${this.label} ${this.maxCount > 0 && this._value ? `${(this._value as String).length}/${this.maxCount}` : null}\n </div> \n </div>\n <div class=\"fieldwrapper\">\n <div ?data-invalid=\"${this.invalid}\" class=\"inputContainer\">\n <input\n ?data-invalid=\"${this.invalid}\"\n ?disabled=\"${this.disabled}\"\n aria-describedby=\"helper-text\"\n id=\"input\"\n name=\"${ifNonEmpty(this.name)}\"\n pattern=\"${ifNonEmpty(this.pattern)}\"\n placeholder=\"${ifNonEmpty(this.placeholder)}\"\n autocomplete=\"${ifNonEmpty(this.autocomplete)}\"\n ?readonly=\"${this.readonly}\"\n ?required=\"${this.required}\"\n type=\"${ifNonEmpty(\n this.variant !== InputVariants.password ?\n this.variant :\n this._showPassword ? InputVariants.Text : InputVariants.password)}\"\n .value=\"${this._value as string}\"\n maxlength=\"${ifNonEmpty(this.maxCount > 0 ? this.maxCount : undefined)}\"\n @input=\"${this._handleInput}\" \n @change=${this._handleChange}\n />\n \n ${this.variant === String(InputVariants.password) && this.showPasswordVisibilityToggle\n ? html`\n <spectric-button\n size=\"small\"\n type=\"button\"\n ?disabled=\"${this.disabled}\"\n @click=${this.handleTogglePasswordVisibility}>\n ${this._showPassword ? this.hidePasswordLabel : this.showPasswordLabel}\n </spectric-button>\n `\n : null}\n </div>\n <div\n id=\"helper-text\"\n class=\"${this.helperText || this.invalid ? \"\" : \"hidden\"}\"\n >\n <slot name=\"helper-text\"> ${this.invalid ? this.invalidText : this.helperText} </slot>\n </div>\n\n </div>\n </div>\n `;\n\n case InputVariants.color: //replace with custom color picker\n return html`<div class=\"inputWrapper\">\n <div class=\"text-input__label-helper-wrapper\">\n <div class=\"--text-input__label-wrapper\">\n ${this.label} ${this.maxCount > 0 && this._value ? `${(this._value as String).length}/${this.maxCount}` : null}\n </div> \n </div>\n <div class=\"fieldwrapper\">\n <div ?data-invalid=\"${this.invalid}\" class=\"inputContainer\">\n <spectric-colorpicker @change=${(e: DomEvent<SpectricColorPicker>) => { this.value = e.target.value; this._handleChange(e) }}></spectric-colorpicker>\n </div>\n <div\n id=\"helper-text\"\n class=\"${this.helperText || this.invalid ? \"\" : \"hidden\"}\"\n >\n <slot name=\"helper-text\"> ${this.invalid ? this.invalidText : this.helperText} </slot>\n </div>\n\n </div>\n </div>`\n case InputVariants.hidden:\n return html`<input type=\"hidden\"/>`\n\n case InputVariants.checkbox:\n\n return html`\n <div class=\"checkbox\">\n <spectric-button @click=${() => {\n this.checked = !this.checked;\n this.value = Boolean(this.checked);\n }} icon size=${this.size || \"xxsmall\"} variant=${this.checked ? \"primary\" : \"secondary\"}>${this.checked ? '✓' : \"\\u00A0\"}</spectric-button>\n ${this.invalid || this.helperText ? html`<spectric-tooltip text=${this.invalid || this.helperText}></spectric-tooltip>` : null}\n ${this.label}\n </div>\n </label>\n `\n default:\n break;\n }\n return `Not yet implemented ${this.variant}`\n }\n}\n\n\n\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"spectric-input\": SpectricInput\n }\n namespace JSX {\n interface IntrinsicElements {\n /**\n * {@link SpectricInput}\n */\n \"spectric-input\": ReactElementWithPropsAndEvents<SpectricInput, InputProps>\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * {@link SpectricInput}\n */\n \"spectric-input\": ReactElementWithPropsAndEvents<SpectricInput, InputProps>;\n }\n }\n }\n}\n\n\nconst ifNonEmpty = (value: any) =>\n ifDefined(value === '' ? undefined : (value ?? undefined));","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\n\n\n\nconst endOfInputText = 'end of input';\n\nconst grammarRuleTranslations: Record<string, string> = {\n fieldName: 'field name',\n value: 'value',\n literal: 'literal',\n whitespace: 'whitespace',\n};\n\ninterface DQLSyntaxErrorData extends Error {\n found: string;\n expected: DQLSyntaxErrorExpected[] | null;\n location: any;\n}\n\ninterface DQLSyntaxErrorExpected {\n description: string;\n}\n\nexport class DQLSyntaxError extends Error {\n shortMessage: string;\n\n constructor(error: DQLSyntaxErrorData, expression: any) {\n let message = error.message;\n if (error.expected) {\n const translatedExpectations = error.expected.map((expected) => {\n return grammarRuleTranslations[expected.description] || expected.description;\n });\n\n const translatedExpectationText = translatedExpectations.join(', ');\n let foundInput = error.found ? `\"${error.found}\"` : endOfInputText;\n message = `Expected ${translatedExpectationText} but ${foundInput} found.`\n }\n\n const fullMessage = [message, expression, '-'.repeat(error.location.start.offset) + '^'].join(\n '\\n'\n );\n\n super(fullMessage);\n this.name = 'DQLSyntaxError';\n this.shortMessage = message;\n }\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { LiteralTypeBuildNode } from './types';\n\nexport function buildNode(value: LiteralTypeBuildNode['value']): LiteralTypeBuildNode {\n return {\n type: 'literal',\n value,\n };\n}\n\nexport function toOpenSearchQuery(node: LiteralTypeBuildNode): LiteralTypeBuildNode['value'] {\n return node.value;\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\nexport const {\n SyntaxError,\n parse\n} = (function () {\n \"use strict\";\n\n /*\n * Generated by PEG.js 0.9.0.\n *\n * http://pegjs.org/\n */\n\n function peg$subclass(child, parent) {\n function ctor() { this.constructor = child; }\n ctor.prototype = parent.prototype;\n child.prototype = new ctor();\n }\n\n function peg$SyntaxError(message, expected, found, location) {\n this.message = message;\n this.expected = expected;\n this.found = found;\n this.location = location;\n this.name = \"SyntaxError\";\n\n if (typeof Error.captureStackTrace === \"function\") {\n Error.captureStackTrace(this, peg$SyntaxError);\n }\n }\n\n peg$subclass(peg$SyntaxError, Error);\n\n function peg$parse(input) {\n var options = arguments.length > 1 ? arguments[1] : {},\n parser = this,\n\n peg$FAILED = {},\n\n peg$startRuleFunctions = { start: peg$parsestart, Literal: peg$parseLiteral },\n peg$startRuleFunction = peg$parsestart,\n\n peg$c0 = function (query, trailing) {\n if (trailing.type === 'cursor') {\n return {\n ...trailing,\n suggestionTypes: ['conjunction']\n };\n }\n if (query !== null) return query;\n return nodeTypes.function.buildNode('is', '*', '*');\n },\n peg$c1 = function () { return errorOnLuceneSyntax; },\n peg$c2 = function (left, right) {\n const cursor = [left, right].find(node => node.type === 'cursor');\n if (cursor) return cursor;\n return buildFunctionNode('or', [left, right]);\n },\n peg$c3 = function (left, right) {\n const cursor = [left, right].find(node => node.type === 'cursor');\n if (cursor) return cursor;\n return buildFunctionNode('and', [left, right]);\n },\n peg$c4 = function (query) {\n if (query.type === 'cursor') return query;\n return buildFunctionNode('not', [query]);\n },\n peg$c5 = \"(\",\n peg$c6 = { type: \"literal\", value: \"(\", description: \"\\\"(\\\"\" },\n peg$c7 = \")\",\n peg$c8 = { type: \"literal\", value: \")\", description: \"\\\")\\\"\" },\n peg$c9 = function (query, trailing) {\n if (trailing.type === 'cursor') {\n return {\n ...trailing,\n suggestionTypes: ['conjunction']\n };\n }\n return query;\n },\n peg$c10 = \":\",\n peg$c11 = { type: \"literal\", value: \":\", description: \"\\\":\\\"\" },\n peg$c12 = \"{\",\n peg$c13 = { type: \"literal\", value: \"{\", description: \"\\\"{\\\"\" },\n peg$c14 = \"}\",\n peg$c15 = { type: \"literal\", value: \"}\", description: \"\\\"}\\\"\" },\n peg$c16 = function (field, query, trailing) {\n if (query.type === 'cursor') {\n return {\n ...query,\n nestedPath: query.nestedPath ? `${field.value}.${query.nestedPath}` : field.value,\n }\n };\n\n if (trailing.type === 'cursor') {\n return {\n ...trailing,\n suggestionTypes: ['conjunction']\n };\n }\n return buildFunctionNode('nested', [field, query]);\n },\n peg$c17 = { type: \"other\", description: \"fieldName\" },\n peg$c18 = function (field, operator, value) {\n if (value.type === 'cursor') {\n return {\n ...value,\n suggestionTypes: ['conjunction']\n };\n }\n const range = buildNamedArgNode(operator, value);\n return buildFunctionNode('range', [field, range]);\n },\n peg$c19 = function (field, partial) {\n if (partial.type === 'cursor') {\n return {\n ...partial,\n fieldName: field.value,\n suggestionTypes: ['value', 'conjunction']\n };\n }\n return partial(field);\n },\n peg$c20 = function (partial) {\n if (partial.type === 'cursor') {\n const fieldName = `${partial.prefix}${partial.suffix}`.trim();\n return {\n ...partial,\n fieldName,\n suggestionTypes: ['field', 'operator', 'conjunction']\n };\n }\n const field = buildLiteralNode(null);\n return partial(field);\n },\n peg$c21 = function (partial, trailing) {\n if (trailing.type === 'cursor') {\n return {\n ...trailing,\n suggestionTypes: ['conjunction']\n };\n }\n return partial;\n },\n peg$c22 = function (partialLeft, partialRight) {\n const cursor = [partialLeft, partialRight].find(node => node.type === 'cursor');\n if (cursor) {\n return {\n ...cursor,\n suggestionTypes: ['value']\n };\n }\n return (field) => buildFunctionNode('or', [partialLeft(field), partialRight(field)]);\n },\n peg$c23 = function (partialLeft, partialRight) {\n const cursor = [partialLeft, partialRight].find(node => node.type === 'cursor');\n if (cursor) {\n return {\n ...cursor,\n suggestionTypes: ['value']\n };\n }\n return (field) => buildFunctionNode('and', [partialLeft(field), partialRight(field)]);\n },\n peg$c24 = function (partial) {\n if (partial.type === 'cursor') {\n return {\n ...list,\n suggestionTypes: ['value']\n };\n }\n return (field) => buildFunctionNode('not', [partial(field)]);\n },\n peg$c25 = { type: \"other\", description: \"value\" },\n peg$c26 = function (value) {\n if (value.type === 'cursor') return value;\n const isPhrase = buildLiteralNode(true);\n return (field) => buildFunctionNode('is', [field, value, isPhrase]);\n },\n peg$c27 = function (value) {\n if (value.type === 'cursor') return value;\n\n if (!allowLeadingWildcards && value.type === 'wildcard' && nodeTypes.wildcard.hasLeadingWildcard(value)) {\n error('Leading wildcards are disabled. See query:allowLeadingWildcards in Advanced Settings.');\n }\n\n const isPhrase = buildLiteralNode(false);\n return (field) => buildFunctionNode('is', [field, value, isPhrase]);\n },\n peg$c28 = { type: \"other\", description: \"OR\" },\n peg$c29 = \"or\",\n peg$c30 = { type: \"literal\", value: \"or\", description: \"\\\"or\\\"\" },\n peg$c31 = { type: \"other\", description: \"AND\" },\n peg$c32 = \"and\",\n peg$c33 = { type: \"literal\", value: \"and\", description: \"\\\"and\\\"\" },\n peg$c34 = { type: \"other\", description: \"NOT\" },\n peg$c35 = \"not\",\n peg$c36 = { type: \"literal\", value: \"not\", description: \"\\\"not\\\"\" },\n peg$c37 = { type: \"other\", description: \"literal\" },\n peg$c38 = \"\\\"\",\n peg$c39 = { type: \"literal\", value: \"\\\"\", description: \"\\\"\\\\\\\"\\\"\" },\n peg$c40 = function (prefix, cursor, suffix) {\n const { start, end } = location();\n return {\n type: 'cursor',\n start: start.offset,\n end: end.offset - cursor.length,\n prefix: prefix.join(''),\n suffix: suffix.join(''),\n text: text().replace(cursor, '')\n };\n },\n peg$c41 = function (chars) {\n return buildLiteralNode(chars.join(''));\n },\n peg$c42 = \"\\\\\",\n peg$c43 = { type: \"literal\", value: \"\\\\\", description: \"\\\"\\\\\\\\\\\"\" },\n peg$c44 = /^[\\\\\"]/,\n peg$c45 = { type: \"class\", value: \"[\\\\\\\\\\\"]\", description: \"[\\\\\\\\\\\"]\" },\n peg$c46 = function (char) { return char; },\n peg$c47 = /^[^\"]/,\n peg$c48 = { type: \"class\", value: \"[^\\\"]\", description: \"[^\\\"]\" },\n peg$c49 = function (chars) {\n const sequence = chars.join('').trim();\n if (sequence === 'null') return buildLiteralNode(null);\n if (sequence === 'true') return buildLiteralNode(true);\n if (sequence === 'false') return buildLiteralNode(false);\n if (chars.includes(wildcardSymbol)) return buildWildcardNode(sequence);\n const isNumberPattern = /^(-?[1-9]+\\d*([.]\\d+)?)$|^(-?0[.]\\d*[1-9]+)$|^0$|^0.0$|^[.]\\d{1,}$/;\n return buildLiteralNode(\n isNumberPattern.test(sequence)\n ? isFinite(sequence) && (sequence > Number.MAX_SAFE_INTEGER || sequence < Number.MIN_SAFE_INTEGER)\n ? BigInt(sequence)\n : Number(sequence)\n : sequence\n );\n },\n peg$c50 = { type: \"any\", description: \"any character\" },\n peg$c51 = \"*\",\n peg$c52 = { type: \"literal\", value: \"*\", description: \"\\\"*\\\"\" },\n peg$c53 = function () { return wildcardSymbol; },\n peg$c54 = \"\\\\t\",\n peg$c55 = { type: \"literal\", value: \"\\\\t\", description: \"\\\"\\\\\\\\t\\\"\" },\n peg$c56 = function () { return '\\t'; },\n peg$c57 = \"\\\\r\",\n peg$c58 = { type: \"literal\", value: \"\\\\r\", description: \"\\\"\\\\\\\\r\\\"\" },\n peg$c59 = function () { return '\\r'; },\n peg$c60 = \"\\\\n\",\n peg$c61 = { type: \"literal\", value: \"\\\\n\", description: \"\\\"\\\\\\\\n\\\"\" },\n peg$c62 = function () { return '\\n'; },\n peg$c63 = function (keyword) { return keyword; },\n peg$c64 = /^[\\\\():<>\"*{}]/,\n peg$c65 = { type: \"class\", value: \"[\\\\\\\\():<>\\\"*{}]\", description: \"[\\\\\\\\():<>\\\"*{}]\" },\n peg$c66 = \"<=\",\n peg$c67 = { type: \"literal\", value: \"<=\", description: \"\\\"<=\\\"\" },\n peg$c68 = function () { return 'lte'; },\n peg$c69 = \">=\",\n peg$c70 = { type: \"literal\", value: \">=\", description: \"\\\">=\\\"\" },\n peg$c71 = function () { return 'gte'; },\n peg$c72 = \"<\",\n peg$c73 = { type: \"literal\", value: \"<\", description: \"\\\"<\\\"\" },\n peg$c74 = function () { return 'lt'; },\n peg$c75 = \">\",\n peg$c76 = { type: \"literal\", value: \">\", description: \"\\\">\\\"\" },\n peg$c77 = function () { return 'gt'; },\n peg$c78 = { type: \"other\", description: \"whitespace\" },\n peg$c79 = /^[ \\t\\r\\n]/,\n peg$c80 = { type: \"class\", value: \"[\\\\ \\\\t\\\\r\\\\n]\", description: \"[\\\\ \\\\t\\\\r\\\\n]\" },\n peg$c81 = function () { return parseCursor; },\n peg$c82 = \"@kuery-cursor@\",\n peg$c83 = { type: \"literal\", value: \"@kuery-cursor@\", description: \"\\\"@kuery-cursor@\\\"\" },\n peg$c84 = function () { return cursorSymbol; },\n peg$c85 = \"||\",\n peg$c86 = { type: \"literal\", value: \"||\", description: \"\\\"||\\\"\" },\n peg$c87 = function () {\n error('LuceneOr');\n },\n peg$c88 = \"&&\",\n peg$c89 = { type: \"literal\", value: \"&&\", description: \"\\\"&&\\\"\" },\n peg$c90 = function () {\n error('LuceneAnd');\n },\n peg$c91 = \"+\",\n peg$c92 = { type: \"literal\", value: \"+\", description: \"\\\"+\\\"\" },\n peg$c93 = \"-\",\n peg$c94 = { type: \"literal\", value: \"-\", description: \"\\\"-\\\"\" },\n peg$c95 = function () {\n error('LuceneNot');\n },\n peg$c96 = \"!\",\n peg$c97 = { type: \"literal\", value: \"!\", description: \"\\\"!\\\"\" },\n peg$c98 = \"_exists_\",\n peg$c99 = { type: \"literal\", value: \"_exists_\", description: \"\\\"_exists_\\\"\" },\n peg$c100 = function () {\n error('LuceneExists');\n },\n peg$c101 = function () {\n error('LuceneRange');\n },\n peg$c102 = \"?\",\n peg$c103 = { type: \"literal\", value: \"?\", description: \"\\\"?\\\"\" },\n peg$c104 = function () {\n error('LuceneWildcard');\n },\n peg$c105 = \"/\",\n peg$c106 = { type: \"literal\", value: \"/\", description: \"\\\"/\\\"\" },\n peg$c107 = /^[^\\/]/,\n peg$c108 = { type: \"class\", value: \"[^/]\", description: \"[^/]\" },\n peg$c109 = function () {\n error('LuceneRegex');\n },\n peg$c110 = \"~\",\n peg$c111 = { type: \"literal\", value: \"~\", description: \"\\\"~\\\"\" },\n peg$c112 = /^[0-9]/,\n peg$c113 = { type: \"class\", value: \"[0-9]\", description: \"[0-9]\" },\n peg$c114 = function () {\n error('LuceneFuzzy');\n },\n peg$c115 = function () {\n error('LuceneProximity');\n },\n peg$c116 = \"^\",\n peg$c117 = { type: \"literal\", value: \"^\", description: \"\\\"^\\\"\" },\n peg$c118 = function () {\n error('LuceneBoost');\n },\n peg$c119 = function () { return char; },\n peg$c120 = \"=\",\n peg$c121 = { type: \"literal\", value: \"=\", description: \"\\\"=\\\"\" },\n peg$c122 = \"[\",\n peg$c123 = { type: \"literal\", value: \"[\", description: \"\\\"[\\\"\" },\n peg$c124 = \"]\",\n peg$c125 = { type: \"literal\", value: \"]\", description: \"\\\"]\\\"\" },\n peg$c126 = \"TO\",\n peg$c127 = { type: \"literal\", value: \"TO\", description: \"\\\"TO\\\"\" },\n\n peg$currPos = 0,\n peg$savedPos = 0,\n peg$posDetailsCache = [{ line: 1, column: 1, seenCR: false }],\n peg$maxFailPos = 0,\n peg$maxFailExpected = [],\n peg$silentFails = 0,\n\n peg$result;\n\n if (\"startRule\" in options) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n }\n\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n\n function text() {\n return input.substring(peg$savedPos, peg$currPos);\n }\n\n function location() {\n return peg$computeLocation(peg$savedPos, peg$currPos);\n }\n\n function expected(description) {\n throw peg$buildException(\n null,\n [{ type: \"other\", description: description }],\n input.substring(peg$savedPos, peg$currPos),\n peg$computeLocation(peg$savedPos, peg$currPos)\n );\n }\n\n function error(message) {\n throw peg$buildException(\n message,\n null,\n input.substring(peg$savedPos, peg$currPos),\n peg$computeLocation(peg$savedPos, peg$currPos)\n );\n }\n\n function peg$computePosDetails(pos) {\n var details = peg$posDetailsCache[pos],\n p, ch;\n\n if (details) {\n return details;\n } else {\n p = pos - 1;\n while (!peg$posDetailsCache[p]) {\n p--;\n }\n\n details = peg$posDetailsCache[p];\n details = {\n line: details.line,\n column: details.column,\n seenCR: details.seenCR\n };\n\n while (p < pos) {\n ch = input.charAt(p);\n if (ch === \"\\n\") {\n if (!details.seenCR) { details.line++; }\n details.column = 1;\n details.seenCR = false;\n } else if (ch === \"\\r\" || ch === \"\\u2028\" || ch === \"\\u2029\") {\n details.line++;\n details.column = 1;\n details.seenCR = true;\n } else {\n details.column++;\n details.seenCR = false;\n }\n\n p++;\n }\n\n peg$posDetailsCache[pos] = details;\n return details;\n }\n }\n\n function peg$computeLocation(startPos, endPos) {\n var startPosDetails = peg$computePosDetails(startPos),\n endPosDetails = peg$computePosDetails(endPos);\n\n return {\n start: {\n offset: startPos,\n line: startPosDetails.line,\n column: startPosDetails.column\n },\n end: {\n offset: endPos,\n line: endPosDetails.line,\n column: endPosDetails.column\n }\n };\n }\n\n function peg$fail(expected) {\n if (peg$currPos < peg$maxFailPos) { return; }\n\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n\n peg$maxFailExpected.push(expected);\n }\n\n function peg$buildException(message, expected, found, location) {\n function cleanupExpected(expected) {\n var i = 1;\n\n expected.sort(function (a, b) {\n if (a.description < b.description) {\n return -1;\n } else if (a.description > b.description) {\n return 1;\n } else {\n return 0;\n }\n });\n\n while (i < expected.length) {\n if (expected[i - 1] === expected[i]) {\n expected.splice(i, 1);\n } else {\n i++;\n }\n }\n }\n\n function buildMessage(expected, found) {\n function stringEscape(s) {\n function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); }\n\n return s\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\x08/g, '\\\\b')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\f/g, '\\\\f')\n .replace(/\\r/g, '\\\\r')\n .replace(/[\\x00-\\x07\\x0B\\x0E\\x0F]/g, function (ch) { return '\\\\x0' + hex(ch); })\n .replace(/[\\x10-\\x1F\\x80-\\xFF]/g, function (ch) { return '\\\\x' + hex(ch); })\n .replace(/[\\u0100-\\u0FFF]/g, function (ch) { return '\\\\u0' + hex(ch); })\n .replace(/[\\u1000-\\uFFFF]/g, function (ch) { return '\\\\u' + hex(ch); });\n }\n\n var expectedDescs = new Array(expected.length),\n expectedDesc, foundDesc, i;\n\n for (i = 0; i < expected.length; i++) {\n expectedDescs[i] = expected[i].description;\n }\n\n expectedDesc = expected.length > 1\n ? expectedDescs.slice(0, -1).join(\", \")\n + \" or \"\n + expectedDescs[expected.length - 1]\n : expectedDescs[0];\n\n foundDesc = found ? \"\\\"\" + stringEscape(found) + \"\\\"\" : \"end of input\";\n\n return \"Expected \" + expectedDesc + \" but \" + foundDesc + \" found.\";\n }\n\n if (expected !== null) {\n cleanupExpected(expected);\n }\n\n return new peg$SyntaxError(\n message !== null ? message : buildMessage(expected, found),\n expected,\n found,\n location\n );\n }\n\n function peg$parsestart() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseSpace();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseSpace();\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseOrQuery();\n if (s2 === peg$FAILED) {\n s2 = null;\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parseOptionalSpace();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c0(s2, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseOrQuery() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n peg$savedPos = peg$currPos;\n s1 = peg$c1();\n if (s1) {\n s1 = void 0;\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseLuceneQuery();\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseAndQuery();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseOr();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseOrQuery();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c2(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parseAndQuery();\n }\n }\n\n return s0;\n }\n\n function peg$parseAndQuery() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseNotQuery();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseAnd();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseAndQuery();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c3(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parseNotQuery();\n }\n\n return s0;\n }\n\n function peg$parseNotQuery() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = peg$parseNot();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseSubQuery();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c4(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parseSubQuery();\n }\n\n return s0;\n }\n\n function peg$parseSubQuery() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 40) {\n s1 = peg$c5;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c6); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseSpace();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseSpace();\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parseOrQuery();\n if (s3 !== peg$FAILED) {\n s4 = peg$parseOptionalSpace();\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 41) {\n s5 = peg$c7;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c9(s3, s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parseNestedQuery();\n }\n\n return s0;\n }\n\n function peg$parseNestedQuery() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;\n\n s0 = peg$currPos;\n s1 = peg$parseField();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseSpace();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseSpace();\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s3 = peg$c10;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c11); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parseSpace();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parseSpace();\n }\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 123) {\n s5 = peg$c12;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c13); }\n }\n if (s5 !== peg$FAILED) {\n s6 = [];\n s7 = peg$parseSpace();\n while (s7 !== peg$FAILED) {\n s6.push(s7);\n s7 = peg$parseSpace();\n }\n if (s6 !== peg$FAILED) {\n s7 = peg$parseOrQuery();\n if (s7 !== peg$FAILED) {\n s8 = peg$parseOptionalSpace();\n if (s8 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s9 = peg$c14;\n peg$currPos++;\n } else {\n s9 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c15); }\n }\n if (s9 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c16(s1, s7, s8);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parseExpression();\n }\n\n return s0;\n }\n\n function peg$parseExpression() {\n var s0;\n\n s0 = peg$parseFieldRangeExpression();\n if (s0 === peg$FAILED) {\n s0 = peg$parseFieldValueExpression();\n if (s0 === peg$FAILED) {\n s0 = peg$parseValueExpression();\n }\n }\n\n return s0;\n }\n\n function peg$parseField() {\n var s0, s1;\n\n peg$silentFails++;\n s0 = peg$parseLiteral();\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c17); }\n }\n\n return s0;\n }\n\n function peg$parseFieldRangeExpression() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parseField();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseSpace();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseSpace();\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parseRangeOperator();\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parseSpace();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parseSpace();\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parseLiteral();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c18(s1, s3, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseFieldValueExpression() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parseField();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseSpace();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseSpace();\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s3 = peg$c10;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c11); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parseSpace();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parseSpace();\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parseListOfValues();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c19(s1, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseValueExpression() {\n var s0, s1;\n\n s0 = peg$currPos;\n s1 = peg$parseValue();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c20(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseListOfValues() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 40) {\n s1 = peg$c5;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c6); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseSpace();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseSpace();\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parseOrListOfValues();\n if (s3 !== peg$FAILED) {\n s4 = peg$parseOptionalSpace();\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 41) {\n s5 = peg$c7;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c21(s3, s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parseValue();\n }\n\n return s0;\n }\n\n function peg$parseOrListOfValues() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseAndListOfValues();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseOr();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseOrListOfValues();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c22(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parseAndListOfValues();\n }\n\n return s0;\n }\n\n function peg$parseAndListOfValues() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseNotListOfValues();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseAnd();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseAndListOfValues();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c23(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parseNotListOfValues();\n }\n\n return s0;\n }\n\n function peg$parseNotListOfValues() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = peg$parseNot();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseListOfValues();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c24(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parseListOfValues();\n }\n\n return s0;\n }\n\n function peg$parseValue() {\n var s0, s1;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = peg$parseQuotedString();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c26(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseUnquotedLiteral();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c27(s1);\n }\n s0 = s1;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c25); }\n }\n\n return s0;\n }\n\n function peg$parseOr() {\n var s0, s1, s2, s3, s4;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseSpace();\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseSpace();\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n if (input.substr(peg$currPos, 2).toLowerCase() === peg$c29) {\n s2 = input.substr(peg$currPos, 2);\n peg$currPos += 2;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c30); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseSpace();\n if (s4 !== peg$FAILED) {\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseSpace();\n }\n } else {\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n s1 = [s1, s2, s3];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n peg$savedPos = peg$currPos;\n s1 = peg$c1();\n if (s1) {\n s1 = void 0;\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseLuceneOr();\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c28); }\n }\n\n return s0;\n }\n\n function peg$parseAnd() {\n var s0, s1, s2, s3, s4;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseSpace();\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseSpace();\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n if (input.substr(peg$currPos, 3).toLowerCase() === peg$c32) {\n s2 = input.substr(peg$currPos, 3);\n peg$currPos += 3;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c33); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseSpace();\n if (s4 !== peg$FAILED) {\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseSpace();\n }\n } else {\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n s1 = [s1, s2, s3];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n peg$savedPos = peg$currPos;\n s1 = peg$c1();\n if (s1) {\n s1 = void 0;\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseLuceneAnd();\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c31); }\n }\n\n return s0;\n }\n\n function peg$parseNot() {\n var s0, s1, s2, s3;\n\n peg$silentFails++;\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 3).toLowerCase() === peg$c35) {\n s1 = input.substr(peg$currPos, 3);\n peg$currPos += 3;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c36); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseSpace();\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseSpace();\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n peg$savedPos = peg$currPos;\n s1 = peg$c1();\n if (s1) {\n s1 = void 0;\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseLuceneNot();\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c34); }\n }\n\n return s0;\n }\n\n function peg$parseLiteral() {\n var s0, s1;\n\n peg$silentFails++;\n s0 = peg$parseQuotedString();\n if (s0 === peg$FAILED) {\n s0 = peg$parseUnquotedLiteral();\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c37); }\n }\n\n return s0;\n }\n\n function peg$parseQuotedString() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 34) {\n s1 = peg$c38;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c39); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseQuotedCharacter();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseQuotedCharacter();\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parseCursor();\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parseQuotedCharacter();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parseQuotedCharacter();\n }\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 34) {\n s5 = peg$c38;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c39); }\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c40(s2, s3, s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 34) {\n s1 = peg$c38;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c39); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseQuotedCharacter();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseQuotedCharacter();\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 34) {\n s3 = peg$c38;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c39); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c41(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parseQuotedCharacter() {\n var s0, s1, s2;\n\n s0 = peg$parseEscapedWhitespace();\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 92) {\n s1 = peg$c42;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c43); }\n }\n if (s1 !== peg$FAILED) {\n if (peg$c44.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c45); }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c46(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$currPos;\n peg$silentFails++;\n s2 = peg$parseCursor();\n peg$silentFails--;\n if (s2 === peg$FAILED) {\n s1 = void 0;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n if (peg$c47.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c48); }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c46(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseUnquotedLiteral() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseUnquotedCharacter();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseUnquotedCharacter();\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseCursor();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseUnquotedCharacter();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseUnquotedCharacter();\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c40(s1, s2, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseUnquotedCharacter();\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseUnquotedCharacter();\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c49(s1);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parseUnquotedCharacter() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$parseEscapedWhitespace();\n if (s0 === peg$FAILED) {\n s0 = peg$parseEscapedSpecialCharacter();\n if (s0 === peg$FAILED) {\n s0 = peg$parseEscapedKeyword();\n if (s0 === peg$FAILED) {\n s0 = peg$parseWildcard();\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$currPos;\n peg$silentFails++;\n s2 = peg$parseSpecialCharacter();\n peg$silentFails--;\n if (s2 === peg$FAILED) {\n s1 = void 0;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseKeyword();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n peg$silentFails++;\n s4 = peg$parseCursor();\n peg$silentFails--;\n if (s4 === peg$FAILED) {\n s3 = void 0;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c50); }\n }\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c46(s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseWildcard() {\n var s0, s1;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 42) {\n s1 = peg$c51;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c52); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c53();\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseOptionalSpace() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseSpace();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseSpace();\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseCursor();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseSpace();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseSpace();\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c40(s1, s2, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = [];\n s1 = peg$parseSpace();\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$parseSpace();\n }\n }\n\n return s0;\n }\n\n function peg$parseEscapedWhitespace() {\n var s0, s1;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c54) {\n s1 = peg$c54;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c55); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c56();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c57) {\n s1 = peg$c57;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c58); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c59();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c60) {\n s1 = peg$c60;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c61); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c62();\n }\n s0 = s1;\n }\n }\n\n return s0;\n }\n\n function peg$parseEscapedSpecialCharacter() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 92) {\n s1 = peg$c42;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c43); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseSpecialCharacter();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c46(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseEscapedKeyword() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 92) {\n s1 = peg$c42;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c43); }\n }\n if (s1 !== peg$FAILED) {\n if (input.substr(peg$currPos, 2).toLowerCase() === peg$c29) {\n s2 = input.substr(peg$currPos, 2);\n peg$currPos += 2;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c30); }\n }\n if (s2 === peg$FAILED) {\n if (input.substr(peg$currPos, 3).toLowerCase() === peg$c32) {\n s2 = input.substr(peg$currPos, 3);\n peg$currPos += 3;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c33); }\n }\n if (s2 === peg$FAILED) {\n if (input.substr(peg$currPos, 3).toLowerCase() === peg$c35) {\n s2 = input.substr(peg$currPos, 3);\n peg$currPos += 3;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c36); }\n }\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c63(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKeyword() {\n var s0;\n\n s0 = peg$parseOr();\n if (s0 === peg$FAILED) {\n s0 = peg$parseAnd();\n if (s0 === peg$FAILED) {\n s0 = peg$parseNot();\n }\n }\n\n return s0;\n }\n\n function peg$parseSpecialCharacter() {\n var s0;\n\n if (peg$c64.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c65); }\n }\n\n return s0;\n }\n\n function peg$parseRangeOperator() {\n var s0, s1;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c66) {\n s1 = peg$c66;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c67); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c68();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c69) {\n s1 = peg$c69;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c70); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c71();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 60) {\n s1 = peg$c72;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c73); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c74();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 62) {\n s1 = peg$c75;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c76); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c77();\n }\n s0 = s1;\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseSpace() {\n var s0, s1;\n\n peg$silentFails++;\n if (peg$c79.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c80); }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c78); }\n }\n\n return s0;\n }\n\n function peg$parseCursor() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n peg$savedPos = peg$currPos;\n s1 = peg$c81();\n if (s1) {\n s1 = void 0;\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n if (input.substr(peg$currPos, 14) === peg$c82) {\n s2 = peg$c82;\n peg$currPos += 14;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c83); }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c84();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseLuceneOr() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseSpace();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseSpace();\n }\n if (s1 !== peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c85) {\n s2 = peg$c85;\n peg$currPos += 2;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c86); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseSpace();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseSpace();\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c87();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseLuceneAnd() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseSpace();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseSpace();\n }\n if (s1 !== peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c88) {\n s2 = peg$c88;\n peg$currPos += 2;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c89); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseSpace();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseSpace();\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c90();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 43) {\n s1 = peg$c91;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c92); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c90();\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parseLuceneNot() {\n var s0, s1;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 45) {\n s1 = peg$c93;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c94); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c95();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 33) {\n s1 = peg$c96;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c97); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c95();\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parseLuceneQuery() {\n var s0;\n\n s0 = peg$parseLuceneFieldQuery();\n if (s0 === peg$FAILED) {\n s0 = peg$parseLuceneValue();\n if (s0 === peg$FAILED) {\n s0 = peg$parseLuceneExists();\n }\n }\n\n return s0;\n }\n\n function peg$parseLuceneFieldQuery() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parseLuceneLiteral();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseSpace();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseSpace();\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s3 = peg$c10;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c11); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parseSpace();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parseSpace();\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parseLuceneValue();\n if (s5 !== peg$FAILED) {\n s1 = [s1, s2, s3, s4, s5];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseLuceneValue() {\n var s0;\n\n s0 = peg$parseLuceneRange();\n if (s0 === peg$FAILED) {\n s0 = peg$parseLuceneWildcard();\n if (s0 === peg$FAILED) {\n s0 = peg$parseLuceneRegex();\n if (s0 === peg$FAILED) {\n s0 = peg$parseLuceneFuzzy();\n if (s0 === peg$FAILED) {\n s0 = peg$parseLuceneProximity();\n if (s0 === peg$FAILED) {\n s0 = peg$parseLuceneBoost();\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseLuceneExists() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 8) === peg$c98) {\n s1 = peg$c98;\n peg$currPos += 8;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c99); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseSpace();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseSpace();\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s3 = peg$c10;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c11); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parseSpace();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parseSpace();\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parseLuceneLiteral();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c100();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseLuceneRange() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n s1 = peg$parseRangeOperator();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseSpace();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseSpace();\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parseLuceneLiteral();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c101();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseLuceneRangeStart();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseSpace();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseSpace();\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parseLuceneLiteral();\n if (s3 !== peg$FAILED) {\n s4 = peg$parseLuceneTo();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseLuceneLiteral();\n if (s5 !== peg$FAILED) {\n s6 = peg$parseLuceneRangeEnd();\n if (s6 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c101();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parseLuceneWildcard() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseLuceneUnquotedCharacter();\n if (s2 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 42) {\n s2 = peg$c51;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c52); }\n }\n }\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseLuceneUnquotedCharacter();\n if (s2 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 42) {\n s2 = peg$c51;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c52); }\n }\n }\n }\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 63) {\n s2 = peg$c102;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c103); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseLuceneWildcard();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseLuceneWildcard();\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c104();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseLuceneRegex() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 47) {\n s1 = peg$c105;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c106); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n if (peg$c107.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c108); }\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n if (peg$c107.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c108); }\n }\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 47) {\n s3 = peg$c105;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c106); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c109();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseLuceneFuzzy() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$parseLuceneUnquotedLiteral();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 126) {\n s2 = peg$c110;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c111); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n if (peg$c112.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c113); }\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n if (peg$c112.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c113); }\n }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c114();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseLuceneProximity() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$parseQuotedString();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 126) {\n s2 = peg$c110;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c111); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n if (peg$c112.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c113); }\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n if (peg$c112.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c113); }\n }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c115();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseLuceneBoost() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$parseLuceneLiteral();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 94) {\n s2 = peg$c116;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c117); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n if (peg$c112.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c113); }\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n if (peg$c112.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c113); }\n }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c118();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseLuceneLiteral() {\n var s0;\n\n s0 = peg$parseQuotedString();\n if (s0 === peg$FAILED) {\n s0 = peg$parseLuceneUnquotedLiteral();\n }\n\n return s0;\n }\n\n function peg$parseLuceneUnquotedLiteral() {\n var s0, s1;\n\n s0 = [];\n s1 = peg$parseLuceneUnquotedCharacter();\n if (s1 !== peg$FAILED) {\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$parseLuceneUnquotedCharacter();\n }\n } else {\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseLuceneUnquotedCharacter() {\n var s0, s1, s2, s3;\n\n s0 = peg$parseEscapedWhitespace();\n if (s0 === peg$FAILED) {\n s0 = peg$parseEscapedLuceneSpecialCharacter();\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$currPos;\n peg$silentFails++;\n s2 = peg$parseLuceneSpecialCharacter();\n peg$silentFails--;\n if (s2 === peg$FAILED) {\n s1 = void 0;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseLuceneKeyword();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c50); }\n }\n if (s3 !== peg$FAILED) {\n s1 = [s1, s2, s3];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseLuceneKeyword() {\n var s0;\n\n s0 = peg$parseOr();\n if (s0 === peg$FAILED) {\n s0 = peg$parseAnd();\n if (s0 === peg$FAILED) {\n s0 = peg$parseLuceneOr();\n if (s0 === peg$FAILED) {\n s0 = peg$parseLuceneAnd();\n if (s0 === peg$FAILED) {\n s0 = peg$parseLuceneNot();\n if (s0 === peg$FAILED) {\n s0 = peg$parseLuceneTo();\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseEscapedLuceneSpecialCharacter() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 92) {\n s1 = peg$c42;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c43); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseLuceneSpecialCharacter();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c119();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseLuceneSpecialCharacter() {\n var s0;\n\n if (input.charCodeAt(peg$currPos) === 43) {\n s0 = peg$c91;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c92); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 45) {\n s0 = peg$c93;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c94); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 61) {\n s0 = peg$c120;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c121); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 62) {\n s0 = peg$c75;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c76); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 60) {\n s0 = peg$c72;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c73); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 33) {\n s0 = peg$c96;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c97); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 40) {\n s0 = peg$c5;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c6); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 41) {\n s0 = peg$c7;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 123) {\n s0 = peg$c12;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c13); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s0 = peg$c14;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c15); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 91) {\n s0 = peg$c122;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c123); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 93) {\n s0 = peg$c124;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c125); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 94) {\n s0 = peg$c116;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c117); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 34) {\n s0 = peg$c38;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c39); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 126) {\n s0 = peg$c110;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c111); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 42) {\n s0 = peg$c51;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c52); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 63) {\n s0 = peg$c102;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c103); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s0 = peg$c10;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c11); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 92) {\n s0 = peg$c42;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c43); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 47) {\n s0 = peg$c105;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c106); }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseLuceneTo() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseSpace();\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseSpace();\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c126) {\n s2 = peg$c126;\n peg$currPos += 2;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c127); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseSpace();\n if (s4 !== peg$FAILED) {\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseSpace();\n }\n } else {\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n s1 = [s1, s2, s3];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseLuceneRangeStart() {\n var s0;\n\n if (input.charCodeAt(peg$currPos) === 91) {\n s0 = peg$c122;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c123); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 123) {\n s0 = peg$c12;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c13); }\n }\n }\n\n return s0;\n }\n\n function peg$parseLuceneRangeEnd() {\n var s0;\n\n if (input.charCodeAt(peg$currPos) === 93) {\n s0 = peg$c124;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c125); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s0 = peg$c14;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c15); }\n }\n }\n\n return s0;\n }\n\n\n const { errorOnLuceneSyntax, parseCursor, cursorSymbol, allowLeadingWildcards = true, helpers: { nodeTypes } } = options;\n const buildFunctionNode = nodeTypes.function.buildNodeWithArgumentNodes;\n const buildLiteralNode = nodeTypes.literal.buildNode;\n const buildWildcardNode = nodeTypes.wildcard.buildNode;\n const buildNamedArgNode = nodeTypes.namedArg.buildNode;\n const { wildcardSymbol } = nodeTypes.wildcard;\n\n\n peg$result = peg$startRuleFunction();\n\n if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n return peg$result;\n } else {\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n peg$fail({ type: \"end\", description: \"end of input\" });\n }\n\n throw peg$buildException(\n null,\n peg$maxFailExpected,\n peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\n peg$maxFailPos < input.length\n ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n );\n }\n }\n\n return {\n SyntaxError: peg$SyntaxError,\n parse: peg$parse\n };\n})();\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { nodeTypes } from '../node_types/index';\nimport { DQLSyntaxError } from '../kuery_syntax_error';\nimport { KueryNode, DslQuery, KueryParseOptions } from '../types';\n\n\n// @ts-ignore\nimport { parse as parseKuery } from './_generated_/kuery';\nimport { JsonObject, IIndexPattern, FieldTypes } from '../../..';\n\nconst fromExpression = (\n expression: string | DslQuery,\n parseOptions: Partial<KueryParseOptions> = {},\n parse: Function = parseKuery\n): KueryNode => {\n if (typeof expression === 'undefined') {\n throw new Error('expression must be a string, got undefined instead');\n }\n\n return parse(expression, { ...parseOptions, helpers: { nodeTypes } });\n};\n\nexport const fromLiteralExpression = (\n expression: string | DslQuery,\n parseOptions: Partial<KueryParseOptions> = {}\n): KueryNode => {\n return fromExpression(\n expression,\n {\n ...parseOptions,\n startRule: 'Literal',\n },\n parseKuery\n );\n};\n\nexport const fromKueryExpression = (\n expression: string | DslQuery,\n parseOptions: Partial<KueryParseOptions> = {}\n): KueryNode => {\n try {\n return fromExpression(expression, parseOptions, parseKuery);\n } catch (error: any) {\n if (error.name === 'SyntaxError') {\n throw new DQLSyntaxError(error, expression);\n } else {\n throw error;\n }\n }\n};\n\nexport const doesKueryExpressionHaveLuceneSyntaxError = (\n expression: string | DslQuery\n): boolean => {\n try {\n fromExpression(expression, { errorOnLuceneSyntax: true }, parseKuery);\n return false;\n } catch (e: any) {\n return (e).message.startsWith('Lucene');\n }\n};\n\n/**\n * @params {String} indexPattern\n * @params {Object} config - contains the dateFormatTZ\n *\n * IndexPattern isn't required, but if you pass one in, we can be more intelligent\n * about how we craft the queries (e.g. scripted fields)\n */\nexport const toOpenSearchQuery = (\n node: KueryNode,\n indexPattern?: IIndexPattern | FieldTypes[],\n config?: Record<string, any>,\n context?: Record<string, any>\n): JsonObject => {\n indexPattern = undefined; //for now lets just set this to undefined until we can refactor to not need the rest of open search\n if (!node || !node.type || !nodeTypes[node.type]) {\n return toOpenSearchQuery(nodeTypes.function.buildNode('and', []), indexPattern);\n }\n\n const nodeType = (nodeTypes[node.type] as unknown) as any;\n\n return nodeType.toOpenSearchQuery(node, indexPattern, config, context);\n};\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { fromLiteralExpression } from '../ast/ast';\nimport { WildcardTypeBuildNode } from './types';\nimport { KueryNode } from '..';\n\nexport const wildcardSymbol = '@kuery-wildcard@';\n\n// Copied from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions\nfunction escapeRegExp(str: string) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'); // $& means the whole matched string\n}\n\n// See https://opensearch.org/docs/latest/opensearch/query-dsl/term/#regex\nfunction escapeQueryString(str: string) {\n return str.replace(/[+-=&|><!(){}[\\]^\"~*?:\\\\/]/g, '\\\\$&'); // $& means the whole matched string\n}\n\nexport function buildNode(value: string): WildcardTypeBuildNode | KueryNode {\n if (!value.includes(wildcardSymbol)) {\n return fromLiteralExpression(value);\n }\n\n return {\n type: 'wildcard',\n value,\n };\n}\n\nexport function test(node: any, str: string): boolean {\n const { value } = node;\n const regex = value.split(wildcardSymbol).map(escapeRegExp).join('[\\\\s\\\\S]*');\n const regexp = new RegExp(`^${regex}$`);\n return regexp.test(str);\n}\n\nexport function toOpenSearchQuery(node: any): string {\n const { value } = node;\n return value.split(wildcardSymbol).join('*');\n}\n\nexport function toQueryStringQuery(node: any): string {\n const { value } = node;\n return value.split(wildcardSymbol).map(escapeQueryString).join('*');\n}\n\nexport function hasLeadingWildcard(node: any): boolean {\n const { value } = node;\n // A lone wildcard turns into an `exists` query, so we're only concerned with\n // leading wildcards followed by additional characters.\n return value.startsWith(wildcardSymbol) && value.replace(wildcardSymbol, '').length > 0;\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport * as literal from '../../node_types/literal';\nimport * as wildcard from '../../node_types/wildcard';\nimport { KueryNode, IIndexPattern } from '../../../..';\nimport { LiteralTypeBuildNode } from '../../node_types/types';\n\nexport function getFields(node: KueryNode, indexPattern?: IIndexPattern) {\n if (!indexPattern) return [];\n if (node.type === 'literal') {\n const fieldName = literal.toOpenSearchQuery(node as LiteralTypeBuildNode);\n const field = indexPattern.fields.find((fld) => fld.name === fieldName);\n if (!field) {\n return [];\n }\n return [field];\n } else if (node.type === 'wildcard') {\n const fields = indexPattern.fields.filter((fld) => wildcard.test(node, fld.name));\n return fields;\n }\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\n\nexport function getTimeZoneFromSettings(dateFormatTZ: string) {\n\n return dateFormatTZ;//always use zulu\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { getFields } from './get_fields';\nimport { IIndexPattern, KueryNode } from '../../../../types';\n\nexport function getFullFieldNameNode(\n rootNameNode: any,\n indexPattern?: IIndexPattern,\n nestedPath?: string\n): KueryNode {\n const fullFieldNameNode = {\n ...rootNameNode,\n value: nestedPath ? `${nestedPath}.${rootNameNode.value}` : rootNameNode.value,\n };\n\n // Wildcards can easily include nested and non-nested fields. There isn't a good way to let\n // users handle this themselves so we automatically add nested queries in this scenario and skip the\n // error checking below.\n if (!indexPattern || (fullFieldNameNode.type === 'wildcard' && !nestedPath)) {\n return fullFieldNameNode;\n }\n const fields = getFields(fullFieldNameNode, indexPattern);\n\n const errors = fields!.reduce((acc: any, field: any) => {\n const nestedPathFromField =\n field.subType && field.subType.nested ? field.subType.nested.path : undefined;\n\n if (nestedPath && !nestedPathFromField) {\n return [\n ...acc,\n `${field.name} is not a nested field but is in nested group \"${nestedPath}\" in the DQL expression.`,\n ];\n }\n\n if (nestedPathFromField && !nestedPath) {\n return [\n ...acc,\n `${field.name} is a nested field, but is not in a nested group in the DQL expression.`,\n ];\n }\n\n if (nestedPathFromField !== nestedPath) {\n return [\n ...acc,\n `Nested field ${field.name\n } is being queried with the incorrect nested path. The correct path is ${field.subType!.nested!.path\n }.`,\n ];\n }\n\n return acc;\n }, []);\n\n if (errors.length > 0) {\n throw new Error(errors.join('\\n'));\n }\n\n return fullFieldNameNode;\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { getFields } from './utils/get_fields';\nimport { getTimeZoneFromSettings } from '../../utils';\nimport { getFullFieldNameNode } from './utils/get_full_field_name_node';\nimport { IIndexPattern, KueryNode, IFieldType } from '../../..';\n\nimport * as ast from '../ast';\n\nimport * as literal from '../node_types/literal';\nimport * as wildcard from '../node_types/wildcard';\n\nexport function buildNodeParams(fieldName: string, value: any, isPhrase: boolean = false) {\n if (fieldName === undefined) {\n throw new Error('fieldName is a required argument');\n }\n if (value === undefined) {\n throw new Error('value is a required argument');\n }\n const fieldNode =\n typeof fieldName === 'string'\n ? ast.fromLiteralExpression(fieldName)\n : literal.buildNode(fieldName);\n const valueNode =\n typeof value === 'string' ? ast.fromLiteralExpression(value) : literal.buildNode(value);\n const isPhraseNode = literal.buildNode(isPhrase);\n return {\n arguments: [fieldNode, valueNode, isPhraseNode],\n };\n}\n\nexport function toOpenSearchQuery(\n node: KueryNode,\n indexPattern?: IIndexPattern,\n config: Record<string, any> = {},\n context: Record<string, any> = {}\n) {\n const {\n arguments: [fieldNameArg, valueArg, isPhraseArg],\n } = node;\n const fullFieldNameArg = getFullFieldNameNode(\n fieldNameArg,\n indexPattern,\n context?.nested ? context.nested.path : undefined\n );\n const fieldName = ast.toOpenSearchQuery(fullFieldNameArg);\n const value = !(valueArg === undefined) ? ast.toOpenSearchQuery(valueArg) : valueArg;\n const type = isPhraseArg.value ? 'phrase' : 'best_fields';\n if (fullFieldNameArg.value === null) {\n if (valueArg.type === 'wildcard') {\n return {\n query_string: {\n query: wildcard.toQueryStringQuery(valueArg),\n },\n };\n }\n\n return {\n multi_match: {\n type,\n query: value,\n lenient: true,\n },\n };\n }\n\n const fields = indexPattern ? getFields(fullFieldNameArg, indexPattern) : [];\n // If no fields are found in the index pattern we send through the given field name as-is. We do this to preserve\n // the behaviour of lucene on dashboards where there are panels based on different index patterns that have different\n // fields. If a user queries on a field that exists in one pattern but not the other, the index pattern without the\n // field should return no results. It's debatable whether this is desirable, but it's been that way forever, so we'll\n // keep things familiar for now.\n if (fields && fields.length === 0) {\n fields.push({\n name: (ast.toOpenSearchQuery(fullFieldNameArg) as unknown) as string,\n scripted: false,\n type: '',\n });\n }\n\n const isExistsQuery = valueArg.type === 'wildcard' && (value as any) === '*';\n const isAllFieldsQuery =\n (fullFieldNameArg.type === 'wildcard' && ((fieldName as unknown) as string) === '*') ||\n (fields && indexPattern && fields.length === indexPattern.fields.length);\n const isMatchAllQuery = isExistsQuery && isAllFieldsQuery;\n\n if (isMatchAllQuery) {\n return { match_all: {} };\n }\n\n const queries = fields!.reduce((accumulator: any, field: IFieldType) => {\n const wrapWithNestedQuery = (query: any) => {\n // Wildcards can easily include nested and non-nested fields. There isn't a good way to let\n // users handle this themselves so we automatically add nested queries in this scenario.\n if (\n !(fullFieldNameArg.type === 'wildcard') ||\n !field.subType?.nested ||\n context?.nested\n ) {\n return query;\n } else {\n return {\n nested: {\n path: field.subType!.nested!.path,\n query,\n score_mode: 'none',\n },\n };\n }\n };\n\n if (field.scripted) {\n return [] //don't support\n // // Exists queries don't make sense for scripted fields\n // if (!isExistsQuery) {\n // return [\n // ...accumulator,\n // {\n // script: {\n // ...getPhraseScript(field, value as any),\n // },\n // },\n // ];\n // }\n } else if (isExistsQuery) {\n return [\n ...accumulator,\n wrapWithNestedQuery({\n exists: {\n field: field.name,\n },\n }),\n ];\n } else if (valueArg.type === 'wildcard') {\n return [\n ...accumulator,\n wrapWithNestedQuery({\n query_string: {\n fields: [field.name],\n query: wildcard.toQueryStringQuery(valueArg),\n },\n }),\n ];\n } else if (field.type === 'date') {\n /*\n If we detect that it's a date field and the user wants an exact date, we need to convert the query to both >= and <= the value provided to force a range query. This is because match and match_phrase queries do not accept a timezone parameter.\n dateFormatTZ can have the value of 'Browser', in which case we guess the timezone using moment.tz.guess.\n */\n const timeZoneParam = config.dateFormatTZ\n ? { time_zone: getTimeZoneFromSettings(config!.dateFormatTZ) }\n : {};\n return [\n ...accumulator,\n wrapWithNestedQuery({\n range: {\n [field.name]: {\n gte: value,\n lte: value,\n ...timeZoneParam,\n },\n },\n }),\n ];\n } else {\n const queryType = type === 'phrase' ? 'match_phrase' : 'match';\n return [\n ...accumulator,\n wrapWithNestedQuery({\n [queryType]: {\n [field.name]: value,\n },\n }),\n ];\n }\n }, []);\n\n return {\n bool: {\n should: queries || [],\n minimum_should_match: 1,\n },\n };\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport * as ast from '../ast';\nimport { IIndexPattern, KueryNode } from '../../..';\n\nexport function buildNodeParams(children: KueryNode[]) {\n return {\n arguments: children,\n };\n}\n\nexport function toOpenSearchQuery(\n node: KueryNode,\n indexPattern?: IIndexPattern,\n config: Record<string, any> = {},\n context: Record<string, any> = {}\n) {\n const children = node.arguments || [];\n\n return {\n bool: {\n filter: children.map((child: KueryNode) => {\n return ast.toOpenSearchQuery(child, indexPattern, config, context);\n }),\n },\n };\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport * as ast from '../ast';\nimport { IIndexPattern, KueryNode } from '../../..';\n\nexport function buildNodeParams(children: KueryNode[]) {\n return {\n arguments: children,\n };\n}\n\nexport function toOpenSearchQuery(\n node: KueryNode,\n indexPattern?: IIndexPattern,\n config: Record<string, any> = {},\n context: Record<string, any> = {}\n) {\n const children = node.arguments || [];\n\n return {\n bool: {\n should: children.map((child: KueryNode) => {\n return ast.toOpenSearchQuery(child, indexPattern, config, context);\n }),\n minimum_should_match: 1,\n },\n };\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport * as ast from '../ast';\nimport { IIndexPattern, KueryNode } from '../../..';\n\nexport function buildNodeParams(child: KueryNode) {\n return {\n arguments: [child],\n };\n}\n\nexport function toOpenSearchQuery(\n node: KueryNode,\n indexPattern?: IIndexPattern,\n config: Record<string, any> = {},\n context: Record<string, any> = {}\n) {\n const [argument] = node.arguments;\n\n return {\n bool: {\n must_not: ast.toOpenSearchQuery(argument, indexPattern, config, context),\n },\n };\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\n\nimport { nodeTypes } from '../node_types';\nimport * as ast from '../ast';\n\nimport { getFields } from './utils/get_fields';\nimport { getTimeZoneFromSettings } from '../../utils';\nimport { getFullFieldNameNode } from './utils/get_full_field_name_node';\nimport { IIndexPattern, KueryNode, IFieldType } from '../../..';\n\nfunction pick(object: Record<string, any>, ...options: string[]) {\n let out: Record<string, any> = {}\n for (let op of options) {\n out[op] = object[op]\n }\n return out\n}\nexport function buildNodeParams(fieldName: string, params: any) {\n const paramsToMap = pick(params, 'gt', 'lt', 'gte', 'lte', 'format');\n const fieldNameArg =\n typeof fieldName === 'string'\n ? ast.fromLiteralExpression(fieldName)\n : nodeTypes.literal.buildNode(fieldName);\n\n const args = Object.entries(paramsToMap).map((input) => {\n let [key, value]: [string, number | string] = input\n return nodeTypes.namedArg.buildNode(key, value);\n });\n\n return {\n arguments: [fieldNameArg, ...args],\n };\n}\n\nexport function toOpenSearchQuery(\n node: KueryNode,\n indexPattern?: IIndexPattern,\n config: Record<string, any> = {},\n context: Record<string, any> = {}\n) {\n const [fieldNameArg, ...args] = node.arguments;\n const fullFieldNameArg = getFullFieldNameNode(\n fieldNameArg,\n indexPattern,\n context?.nested ? context.nested.path : undefined\n );\n const fields = indexPattern ? getFields(fullFieldNameArg, indexPattern) : [];\n const namedArgs = extractArguments(args);\n const queryParams = Object.fromEntries(Object.entries(namedArgs).map(([key, arg]) => {\n return [key, ast.toOpenSearchQuery(arg as KueryNode)];\n }));\n\n // If no fields are found in the index pattern we send through the given field name as-is. We do this to preserve\n // the behaviour of lucene on dashboards where there are panels based on different index patterns that have different\n // fields. If a user queries on a field that exists in one pattern but not the other, the index pattern without the\n // field should return no results. It's debatable whether this is desirable, but it's been that way forever, so we'll\n // keep things familiar for now.\n if (fields && fields.length === 0) {\n fields.push({\n name: (ast.toOpenSearchQuery(fullFieldNameArg) as unknown) as string,\n scripted: false,\n type: '',\n });\n }\n\n const queries = fields!.map((field: IFieldType) => {\n const wrapWithNestedQuery = (query: any) => {\n // Wildcards can easily include nested and non-nested fields. There isn't a good way to let\n // users handle this themselves so we automatically add nested queries in this scenario.\n if (\n !(fullFieldNameArg.type === 'wildcard') ||\n !field.subType?.nested ||\n context!.nested\n ) {\n return query;\n } else {\n return {\n nested: {\n path: field.subType!.nested!.path,\n query,\n score_mode: 'none',\n },\n };\n }\n };\n\n if (field.scripted) {\n return {} //Don't support this\n\n } else if (field.type === 'date') {\n const timeZoneParam = config.dateFormatTZ\n ? { time_zone: getTimeZoneFromSettings(config!.dateFormatTZ) }\n : {};\n return wrapWithNestedQuery({\n range: {\n [field.name]: {\n ...queryParams,\n ...timeZoneParam,\n },\n },\n });\n }\n return wrapWithNestedQuery({\n range: {\n [field.name]: queryParams,\n },\n });\n });\n\n return {\n bool: {\n should: queries,\n minimum_should_match: 1,\n },\n };\n}\n\nfunction extractArguments(args: any) {\n if ((args.gt && args.gte) || (args.lt && args.lte)) {\n throw new Error('range ends cannot be both inclusive and exclusive');\n }\n\n const unnamedArgOrder = ['gte', 'lte', 'format'];\n\n return args.reduce((acc: any, arg: any, index: number) => {\n if (arg.type === 'namedArg') {\n acc[arg.name] = arg.value;\n } else {\n acc[unnamedArgOrder[index]] = arg;\n }\n\n return acc;\n }, {});\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport * as literal from '../node_types/literal';\nimport { IIndexPattern, KueryNode, IFieldType } from '../../../';\n\nexport function buildNodeParams(fieldName: string) {\n return {\n arguments: [literal.buildNode(fieldName)],\n };\n}\n\nexport function toOpenSearchQuery(\n node: KueryNode,\n indexPattern?: IIndexPattern,//@ts-ignore\n config: Record<string, any> = {},\n context: Record<string, any> = {}\n) {\n const {\n arguments: [fieldNameArg],\n } = node;\n const fullFieldNameArg = {\n ...fieldNameArg,\n value: context?.nested ? `${context.nested.path}.${fieldNameArg.value}` : fieldNameArg.value,\n };\n const fieldName = literal.toOpenSearchQuery(fullFieldNameArg);\n const field = (indexPattern?.fields || []).find((fld: IFieldType) => fld.name === fieldName);\n\n if (field && (field as IFieldType).scripted) {\n throw new Error(`Exists query does not support scripted fields`);\n }\n return {\n exists: { field: fieldName },\n };\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport * as ast from '../ast';\nimport * as literal from '../node_types/literal';\nimport { IIndexPattern, KueryNode } from '../../..';\n\nexport function buildNodeParams(path: any, child: any) {\n const pathNode =\n typeof path === 'string' ? ast.fromLiteralExpression(path) : literal.buildNode(path);\n return {\n arguments: [pathNode, child],\n };\n}\n\nexport function toOpenSearchQuery(\n node: KueryNode,\n indexPattern?: IIndexPattern,\n config: Record<string, any> = {},\n context: Record<string, any> = {}\n) {\n const [path, child] = node.arguments;\n const stringPath = ast.toOpenSearchQuery(path);\n const fullPath = context?.nested?.path ? `${context.nested.path}.${stringPath}` : stringPath;\n\n return {\n nested: {\n path: fullPath,\n query: ast.toOpenSearchQuery(child, indexPattern, config, {\n ...context,\n nested: { path: fullPath },\n }),\n score_mode: 'none',\n },\n };\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport * as is from './is';\nimport * as and from './and';\nimport * as or from './or';\nimport * as not from './not';\nimport * as range from './range';\nimport * as exists from './exists';\nimport * as nested from './nested';\n\nexport const functions: any = {\n is,\n and,\n or,\n not,\n range,\n exists,\n nested,\n};\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\n\nimport { functions } from '../functions';\nimport { IIndexPattern, KueryNode } from '../../..';\nimport { FunctionName, FunctionTypeBuildNode } from './types';\n\nexport function buildNode(functionName: FunctionName, ...args: any[]) {\n const kueryFunction = functions[functionName];\n if (kueryFunction === undefined) {\n throw new Error(`Unknown function \"${functionName}\"`);\n }\n\n return {\n type: 'function' as 'function',\n function: functionName,\n // This requires better typing of the different typings and their return types.\n // @ts-ignore\n ...kueryFunction.buildNodeParams(...args),\n };\n}\n\n// Mainly only useful in the grammar where we'll already have real argument nodes in hand\nexport function buildNodeWithArgumentNodes(\n functionName: FunctionName,\n args: any[]\n): FunctionTypeBuildNode {\n if (functions[functionName] === undefined) {\n throw new Error(`Unknown function \"${functionName}\"`);\n }\n\n return {\n type: 'function',\n function: functionName,\n arguments: args,\n };\n}\n\nexport function toOpenSearchQuery(\n node: KueryNode,\n indexPattern?: IIndexPattern,\n config?: Record<string, any>,\n context?: Record<string, any>\n) {\n const kueryFunction = functions[node.function as FunctionName];\n return kueryFunction.toOpenSearchQuery(node, indexPattern, config, context);\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport * as ast from '../ast';\nimport { nodeTypes } from '.';\nimport { NamedArgTypeBuildNode } from './types';\nimport { JsonObject } from '../../../types';\n\nexport function buildNode(name: string, value: any): NamedArgTypeBuildNode {\n const argumentNode = value.type === 'literal' ? value : nodeTypes.literal.buildNode(value);\n return {\n type: 'namedArg',\n name,\n value: argumentNode,\n };\n}\n\nexport function toOpenSearchQuery(node: any): JsonObject {\n return ast.toOpenSearchQuery(node.value);\n}\n","/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * The OpenSearch Contributors require contributions made to\n * this file be licensed under the Apache-2.0 license or a\n * compatible open source license.\n *\n * Any modifications Copyright OpenSearch Contributors. See\n * GitHub history for details.\n */\n\n/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport * as functionType from './function';\nimport * as literal from './literal';\nimport * as namedArg from './named_arg';\nimport * as wildcard from './wildcard';\nimport { NodeTypes } from './types';\n\nexport * from \"./types\"\n\nexport const nodeTypes: NodeTypes = {\n // This requires better typing of the different typings and their return types.\n // @ts-ignore\n function: functionType,\n literal,\n namedArg,\n wildcard,\n};\n","\nimport { FieldTypes, KueryNode } from '../..';\nimport { wildcardSymbol } from '../kuery/node_types/wildcard';\n\nexport const KQL_WILDCARD_SYMBOL = wildcardSymbol;\nexport const KQL_NODE_TYPE_WILDCARD = 'wildcard';\nexport type FunctionName = 'is' | 'and' | 'or' | 'not' | 'range' | 'exists' | 'nested';\nconst and = (node: KueryNode, fields?: FieldTypes[]) => {\n const children = node.arguments || [];\n return (\n '(' +\n children\n .map((child: KueryNode) => {\n return toCql(child, fields);\n })\n .join(' AND ') +\n ')'\n );\n};\nconst is = (node: KueryNode, fields?: FieldTypes[]) => {\n var {\n arguments: [fieldNameArg, valueArg, isValue],\n } = node;\n let operator = '=';\n if (valueArg.type === 'wildcard') {\n operator = '';\n }\n let value = toCql(valueArg);\n isValue = isValue.value || typeof value === \"string\";\n if (valueArg.type === 'literal' && isValue) {\n value = `'${value}'`; //should be quoted\n }\n if (valueArg.type === 'literal' && !isValue) {\n value = `${value}`; //shouldn't be quoted\n }\n let fieldName = toCql(fieldNameArg);\n if (fieldName == null) {\n //this isn't possible if we don't have the names of all the fields.\n //if we have all the fields we can do a list of or statements (field ILIKE \"%value%\")\n if (fields && isValue) {\n return `(${fields.filter(f => f.type === \"string\").map(field => `${field.name} ILIKE '%${valueArg.value}%'`).join(\" OR \")})`\n }\n if (fields && !isValue && (valueArg.value === true || valueArg.value === false)) {\n return `(${fields.filter(f => f.type === \"boolean\").map(field => `${field.name}=${valueArg.value}`).join(\" OR \")})`\n }\n return \"\"\n }\n return fieldName + operator + value;\n};\n\nconst or = (node: KueryNode, fields?: FieldTypes[]) => {\n const children = node.arguments || [];\n return (\n '(' +\n children\n .map((child: KueryNode) => {\n return toCql(child, fields);\n })\n .join(' OR ') +\n ')'\n );\n};\nconst not = (node: KueryNode, fields?: FieldTypes[]) => {\n const [argument] = node.arguments;\n return 'NOT (' + toCql(argument, fields) + ')';\n};\n\nconst AST_TO_CQL = {\n gt: '>',\n lt: '<',\n gte: '>=',\n lte: '<=',\n};\nconst range = (node: KueryNode,) => {\n\n const [fieldNameArg, operator] = node.arguments;\n let valueArg = operator.value\n // @ts-ignore\n const opsign = AST_TO_CQL[operator.name];\n let value = toCql(valueArg);\n if (valueArg.type === 'literal') {\n value = `${value}`;\n }\n return `${fieldNameArg.value} ${opsign} ${value}`;\n};\nconst exists = (node: KueryNode) => {\n const [fieldNameArg] = node.arguments;\n return `${fieldNameArg.value} IS NOT NULL`;\n};\nconst nested = (node: KueryNode) => {\n //nested types don't exist in CQL\n console.warn(\"Nested types dont exist in CQL\", node)\n return \"\"\n}\nexport const functions = {\n is,\n and,\n or,\n not,\n range,\n exists,\n nested\n};\nconst nodeTypes = {\n function: (node: KueryNode, fields?: FieldTypes[]) => {\n // @ts-ignore\n return functions[node.function as FunctionName](node, fields);\n },\n literal: (node: KueryNode) => {\n return node.value;\n },\n wildcard: (node: KueryNode) => {\n const { value } = node;\n return ` LIKE '${value.split(KQL_WILDCARD_SYMBOL).join('%')}'`;\n },\n};\n\nexport const toCql = (node: KueryNode, fields?: FieldTypes[]): string => {\n //@ts-ignore\n const nodeType = nodeTypes[node.type] as unknown as any;\n return nodeType(node, fields);\n};\n","/* eslint-disable @kbn/eslint/require-license-header */\nimport { FieldTypes, KueryNode } from '../..';\nimport { wildcardSymbol } from '../kuery/node_types/wildcard';\n\nexport const KQL_WILDCARD_SYMBOL = wildcardSymbol;\nexport const KQL_NODE_TYPE_WILDCARD = 'wildcard';\nexport type FunctionName = 'is' | 'and' | 'or' | 'not' | 'range' | 'exists' | 'nested';\nconst and = (node: KueryNode) => {\n const children = node.arguments || [];\n let query: any = { \"$and\": children.map((c: KueryNode) => toMongo(c)) }\n\n return query;\n};\nconst is = (node: KueryNode) => {\n const {\n arguments: [fieldNameArg, valueArg],\n } = node;\n\n let value = toMongo(valueArg);\n const isExistsQuery = valueArg.type === 'wildcard' && (valueArg.value as any) === '@kuery-wildcard@';\n if (isExistsQuery) {\n return exists(node)\n }\n let query: any = {}\n query[toMongo(fieldNameArg)] = { \"$eq\": value }\n return query;\n};\n\nconst or = (node: KueryNode) => {\n const children = node.arguments || [];\n return {\n \"$or\": children\n .map((child: KueryNode) => {\n return toMongo(child);\n })\n }\n\n};\nconst not = (node: KueryNode) => {\n const [fieldNameArg] = node.arguments;\n let query: any = {};\n query = { \"$ne\": toMongo(fieldNameArg) }\n return query;\n};\n\nconst AST_TO_CQL = {\n gt: '$gt',\n lt: '$lt',\n gte: '$gte',\n lte: '$lte',\n};\nconst range = (node: KueryNode) => {\n const [fieldNameArg, operator] = node.arguments;\n let valueArg = operator.value\n // @ts-ignore\n const opsign = AST_TO_CQL[operator.name];\n let value = toMongo(valueArg);\n\n let query: any = {}\n query[fieldNameArg.value] = {}\n query[fieldNameArg.value][opsign] = value\n return query\n\n\n};\nconst exists = (node: KueryNode) => {\n const [fieldNameArg] = node.arguments;\n return { [toMongo(fieldNameArg)]: { $ne: null } }\n};\n\nconst nested = (node: KueryNode) => {\n\n console.warn(\"TODO Implement nested search\", node)\n return \"\"\n}\nexport const functions = {\n is,\n and,\n or,\n not,\n range,\n exists,\n nested\n};\nconst nodeTypes = {\n function: (node: KueryNode) => {\n // @ts-ignore\n return functions[node.function as FunctionName](node);\n },\n literal: (node: KueryNode) => {\n return node.value;\n },\n wildcard: (node: KueryNode) => {\n const { value } = node;\n return `/${value.split(KQL_WILDCARD_SYMBOL).join('.*')}/`;\n },\n};\n\nexport const toMongo = (node: KueryNode, fields?: FieldTypes[]): string => {\n //@ts-ignore\n const nodeType = nodeTypes[node.type] as unknown as any;\n return nodeType(node, fields);\n};\n","import { css } from \"lit\";\n\nexport const style = css`\n:host {\n --dialog-padding: var(--spectric-dialog-padding, 5px);\n --dialog-background:var(--spectric-background,rgb(246, 249, 252));\n}\ndialog {\n border: 0px solid var(--background-inverse);\n --spectric-background: var(--dialog-background);\n --panel-color:var(--dialog-background);\n padding: 0;\n border-radius: var(--spectric-border-radius);\n overflow:hidden;\n\n}\ndialog[open]{\n display:flex;\n}\nspectric-panel{\n margin:0px\n}\ndialog::backdrop {\n background-color: transparent;\n}\ndialog.backdrop::backdrop {\n background-color: rgba(0, 0, 0, 0.5);\n}\n.modal{\n display: flex;\n overflow: hidden;\n flex-direction: column;\n height: 100%;\n}\n.content{\n flex-shrink: 1;\n overflow: auto;\n}\n\nh3 {\n padding: 1em var(--dialog-padding);\n margin: 0;\n}\n\nspectric-button{\n position: absolute;\n right: 0;\n top: 0;\n}\n`;","import { CSSResultGroup, html, LitElement, PropertyValues, render } from 'lit';\nimport \"../Button\";\nimport { customElement, property, queryAsync } from 'lit/decorators.js';\nimport { style } from './dialog.css';\nimport { HTMLElementTagWithEvents, ReactElementWithPropsAndEvents } from '../types';\nexport const DialogElementTag = \"spectric-dialog\"\nexport type { DialogProps as Props, DialogEvents }\ninterface DialogProps {\n open?: boolean;\n dismissable?: boolean;\n hideBackdrop?: boolean;\n title?: string;\n closeOnEscape?: boolean;\n closeOnOutsideClick?: boolean;\n}\n\n\n\n/**\n * Dialog Element\n * @slot title - sets the title of the dialog attribute/property can also be use for setting the title to a string\n */\n@customElement(DialogElementTag)\nexport class DialogElement extends LitElement implements DialogProps {\n static styles: CSSResultGroup = style;\n static display(props: DialogProps, body: any) {\n let dialog = document.createElement(DialogElementTag);\n dialog.addEventListener(\"close\", () => {\n dialog.remove()\n });\n for (let prop in props) {\n //@ts-ignore\n dialog[prop] = props[prop];\n }\n let frag = document.createDocumentFragment()\n render(body, frag);\n dialog.appendChild(frag)\n dialog.open = true;\n document.body.appendChild(dialog)\n return dialog\n }\n @property({ type: Boolean, reflect: true })\n open: boolean = false;\n\n @property({ type: Boolean, reflect: true })\n dismissable: boolean = true;\n\n @property({ type: Boolean, reflect: true })\n hideBackdrop: boolean = false;\n\n @property({ type: String, reflect: true })\n title: string = \"\";\n\n @property({ type: Boolean, reflect: true })\n closeOnEscape: boolean = true;\n\n @property({ type: Boolean, reflect: true })\n closeOnOutsideClick: boolean = true;\n\n @queryAsync(\"dialog\")\n dialogElement!: Promise<HTMLDialogElement>;\n\n connectedCallback(): void {\n super.connectedCallback();\n this.dialogElement.then(dialog => dialog.addEventListener('keydown', this._handleKeyDown));\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n this.dialogElement.then(dialog => dialog.removeEventListener('keydown', this._handleKeyDown));\n }\n\n protected updated(_changedProperties: PropertyValues): void {\n if (_changedProperties.has(\"open\")) {\n this.dialogElement.then(dialog => {\n if (this.open) {\n dialog.showModal();\n } else {\n dialog.close();\n }\n });\n }\n }\n\n private clickHandler = async (e: PointerEvent): Promise<void> => {\n const dialog = await this.dialogElement;\n if (!this.dismissable || !this.closeOnOutsideClick) {\n return;\n }\n if (dialog === e.target) {\n // clicked on backdrop\n this.open = false;\n }\n };\n\n private _handleKeyDown = (e: KeyboardEvent): void => {\n if (!this.closeOnEscape) {\n e.preventDefault()\n }\n if (this.open && this.closeOnEscape && e.key === 'Escape') {\n this.open = false;\n }\n };\n\n private _onClose = (e: PointerEvent): void => {\n e.preventDefault();\n e.stopPropagation();\n this.open = false;\n this.dispatchEvent(new CustomEvent('close', {\n bubbles: true,\n composed: true,\n }));\n };\n\n protected render(): unknown {\n return html`\n <dialog class=${this.hideBackdrop ? '' : 'backdrop'} @close=${this._onClose} @click=${this.clickHandler}>\n <spectric-panel>\n <div class=\"modal\">\n ${this.dismissable ? html`<spectric-button variant=\"text\" size=\"small\" @click=${() => { this.open = false }}>X</spectric-button>` : null}\n <h3 >\n <slot name=\"title\">\n ${this.title.length ? this.title : null}\n </slot>\n </h3>\n\n <div class=\"content\"><slot></slot></div>\n <div class=\"footer\"><slot name=\"footer\"></slot></div>\n </div>\n </spectric-panel>\n </dialog>\n `;\n }\n}\n\ninterface DialogEvents {\n 'close': (event: CustomEvent) => void;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [DialogElementTag]: HTMLElementTagWithEvents<DialogElement, DialogEvents>\n\n }\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link DialogElement}\n */\n [DialogElementTag]: ReactElementWithPropsAndEvents<DialogElement, DialogProps, DialogEvents>;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link DialogElement}\n */\n [DialogElementTag]: ReactElementWithPropsAndEvents<DialogElement, DialogProps, DialogEvents>\n }\n }\n }\n}\n","import { html, LitElement, PropertyValues } from \"lit\";\nimport * as kuery from \"./querylanguage/kuery\"\nimport { customElement, property, query, queryAsync, state } from \"lit/decorators.js\";\nimport { SpectricInput } from \"../input\";\nimport { JsonObject } from \"./types\";\nimport { HTMLElementTagWithEvents, ReactElementWithPropsAndEvents } from \"../types\";\nimport \"./QueryBar.css\"\nimport { DialogElement } from \"../dialog\";\nimport { createRef, ref } from \"lit/directives/ref.js\";\nimport { SpectricButton } from \"../Button\";\nexport type FieldTypes = {\n name: string;\n type: \"string\" | \"number\" | \"boolean\"\n format?: \"date-time\"\n}\ntype SuggestionType = 'conjunction' | \"field\" | 'operator' | 'value'\ntype Suggestion = {\n fieldName: string\n end: number\n prefix: string\n start: number\n suffix: string\n suggestionTypes: (SuggestionType)[]\n text: string\n type: \"cursor\"\n}\nexport enum SupportedLanguages {\n MONGO = \"toMongo\",\n CQL = \"toCql\",\n DSL = \"toDSL\",\n AST = \"AST\"\n}\ntype SupportedLanguagesTypes = `${SupportedLanguages}`\ninterface QueryEventMap {\n \"change\": (event: CustomEvent<string | kuery.KueryNode | JsonObject>) => void;\n}\n\nexport interface IQueryProps {\n /**\n * The output of the query in a specific format\n */\n outputLanguage?: SupportedLanguagesTypes;\n /**\n * The output of the query\n */\n value?: string;\n /**\n * Fields that are used for the auto complete\n */\n fields?: FieldTypes[];\n /**\n * Callback that will provide values for specific fields\n */\n getValuesForField?: (field: string, text: string) => Promise<string[]>;\n\n /**\n * Input placeholder\n */\n placeholder?: string;\n}\ntype LabelValue = {\n label?: string;\n value: string;\n}\ntype Completion = LabelValue & {\n start: number;\n end: number;\n type: SuggestionType\n onSelect?: () => Promise<string | undefined | number>\n}\nconst NumberOperators: Record<string, LabelValue> = {\n \"eq\": { value: \" : \", label: \" equals some value\" },\n \"gt\": { value: \" > \", label: \" is greater than some value\" },\n \"lt\": { value: \" < \", label: \" is less than some value\" },\n \"gte\": { value: \" >= \", label: \" is greater than or equal to some value\" },\n \"lte\": { value: \" <= \", label: \" is less than or equal to some value\" }\n}\nconst StringOperators: Record<string, LabelValue> = {\n \"eq\": { value: \": \", label: \" equals some value\" },\n \"exists\": { value: \": *\", label: \" exists in any form\" }\n}\nconst BoolOperators: LabelValue[] = [{ value: \": true\", label: \" value is true\" },\n{ value: \": false\", label: \"value is false\" }\n]\n//Date operators are the same as number but we want a string value\nconst DateOperators: Record<string, LabelValue> = Object.fromEntries(Object.entries(NumberOperators).map(([key, labelValue]) => [key, { value: labelValue.value, label: (labelValue.label || \"\").replace(\"value\", \"date-time\") }]))\n/**\n * The Query component will take Opensearch Dashboard Query language and transform it into various outputs\n */\n@customElement('spectric-query')\nexport class SpectricQuery extends LitElement implements IQueryProps {\n private uuid: string;\n @property({ type: String, reflect: true })\n placeholder: string = \"\";\n constructor() {\n super()\n this.uuid = crypto.randomUUID()\n }\n protected createRenderRoot(): HTMLElement | DocumentFragment {\n return this\n }\n\n /**\n * The internal value.\n */\n protected _value: string = '';\n private suggestion?: Suggestion;\n /**\n * The value of the input.\n */\n @property({ type: String, reflect: true })\n value = \"\"\n @property({ type: String, reflect: true })\n outputLanguage: SupportedLanguagesTypes = \"AST\";\n @state()\n private completions: Completion[] = [];\n @state()\n private completionIndex = 0;\n @property({ type: Array, reflect: true })\n fields: FieldTypes[] = [];\n\n @query(\".autocomplete\")\n _autocomplete?: HTMLDivElement\n\n @queryAsync(\".autocomplete\")\n //@ts-expect-error\n _asyncAutocomplete: Promise<HTMLDivElement>\n\n /**\n * The underlying input element\n */\n @query('spectric-input')\n protected _input!: SpectricInput;\n _parseQuery = (e: InputEvent | undefined = undefined) => {\n let ast;\n if (e && e?.currentTarget) {\n this.value = (e.currentTarget as HTMLInputElement).value\n }\n if (this.value) {\n try {\n if (e && e.data == \"(\") {\n //Auto close parentheses or parsing and suggestions fail\n this.value = this.value + \" )\"\n this._input.setSelectionRange(this.value.length - 2, this.value.length - 2)\n }\n let value = this.value;\n if (this._input.selectionStart !== null) {\n value = value.substring(0, this._input.selectionStart) + \"@kuery-cursor@\" + value.substring(this._input.selectionStart)\n }\n //FIXME: make auto complete work well.\n let suggestions = kuery.parse(value, { parseCursor: true, cursorSymbol: \"@kuery-cursor@\", allowLeadingWildcards: false }) as unknown as Suggestion;\n this.autoComplete(suggestions)\n } catch (error: any) {\n // this.completions = []\n // this._input.invalid = true;\n // let [expect, _, arrow] = e.message.split(\"\\n\")\n // this._input.invalidText = html`&#160;&#160;${arrow} ${expect}`;\n return\n }\n }\n try {\n ast = kuery.parse(this.value, { allowLeadingWildcards: false });\n } catch (error: any) {\n return\n }\n let output\n if (this.outputLanguage == \"AST\") {\n output = ast\n } else {\n output = kuery[this.outputLanguage](ast, this.fields)\n }\n let event = new CustomEvent(\"change\", { detail: output })\n this.dispatchEvent(event)\n }\n\n getValuesForField = async (field: string, text: string): Promise<string[]> => {\n console.log(\"getValuesForField isn't set no values returned\", field, text)\n return []\n }\n async autoComplete(suggestion: Suggestion) {\n this.completions = []\n if (suggestion.type !== \"cursor\") {\n return\n }\n let completions = []\n this.suggestion = suggestion\n let { start, end } = suggestion\n for (let type of suggestion.suggestionTypes) {\n if (type == \"conjunction\" && suggestion.text.endsWith(' ')) {\n completions.push(...[\"and \", \"or \"].map(value => ({ type, value, start: end, end: end })))\n }\n if (type === \"field\") {\n let fieldCompletions = this.fields.filter(field => field.name.includes(suggestion.fieldName) || field.name.includes(suggestion.prefix)).map(f => {\n return [{ type, value: f.name, start, end }]\n }).flat()\n completions.push(...fieldCompletions)\n }\n if (type === \"operator\") {\n let fieldType = this.fields.find(field => field.name === suggestion.fieldName);\n if (fieldType) {\n if (fieldType.type === \"number\") {\n completions.push(...Object.values(NumberOperators).map(value => ({ type, ...value, start: end, end: end })))\n } else if (fieldType.type === \"string\") {\n if (fieldType.format === \"date-time\") {\n completions.push(...Object.values(DateOperators).map(value => ({\n type, ...value, start: end, end: end, onSelect: async () => {\n let values = await this.getValuesForField(suggestion.fieldName, suggestion.prefix);\n if (values.length === 0) {\n values = [\"now-1m\", \"now-1d\", \"now-1M\",]\n }\n let value: string | undefined;\n let buttonRef = createRef<SpectricButton>()\n await new Promise((resolve) => {\n let dialog = DialogElement.display({}, html`\n <div class=\"query-bar-date-quick-select\">\n ${values.map(v => html`<a href=\"#\" @click=${(e: MouseEvent) => {\n e.preventDefault()\n value = `\"${v}\"`;\n resolve(value); dialog.open = false\n }}>${v}</a>`)}\n </div>\n <spectric-input variant=\"datetime-local\" @change=${(e: any) => {\n\n if (!e.target) {\n return\n }\n let date = (new Date(e.target.value + \":00.000Z\")).toISOString()\n value = `\"${date}\"`\n buttonRef.value!.disabled = value === undefined\n }}></spectric-input>\n <spectric-button ${ref(buttonRef)} .disabled=${true} @click=${() => { resolve(value); dialog.open = false }}>Submit</spectric-button>\n `)\n })\n return value\n }\n })))\n } else {\n completions.push(...Object.values(StringOperators).map(value => ({ type, ...value, start: end, end: end })))\n }\n } else if (fieldType.type === \"boolean\") {\n completions.push(...BoolOperators.map(value => ({ type, ...value, start: end, end: end })))\n }\n }\n }\n if (type === \"value\") {\n let fieldType = this.fields.find(field => field.name === suggestion.fieldName);\n if (fieldType && fieldType.type == \"boolean\") {\n completions.push({ type, value: \"true\", start, end }, { type, value: \"false\", start, end })\n } else {\n console.log(`invoke callback to get values for ${suggestion.fieldName}`)\n let values = await this.getValuesForField(suggestion.fieldName, suggestion.prefix);\n if (fieldType?.type === \"string\") {\n //quote the values\n values = values.map(v => `\"${v}\"`)\n }\n completions.push(...values.map(value => ({ type, value, start, end })))\n }\n\n }\n }\n this.completions = completions\n if (this.completions.length && this._autocomplete) {\n let { width, left, bottom } = this._input.getBoundingClientRect();\n this._autocomplete.showPopover();\n //Older firefox doesn't support anchor positions using css properties so manually position here\n if (!(\"anchorName\" in document.documentElement.style)) {\n this._autocomplete.style.left = `${left + 3.75}px`\n this._autocomplete.style.top = `${bottom}px`\n }\n this._autocomplete.style.width = `${width - 15}px`;\n }\n }\n protected updated(changed: PropertyValues): void {\n if (changed.has(\"outputLanguage\")) {\n this._parseQuery()\n }\n }\n _selectCompletion = async () => {\n if (!this.suggestion) {\n return\n }\n let completion = this.completions[this.completionIndex]\n\n let prefix = this.value.substring(0, completion.start) +\n completion.value\n let insertIndex = prefix.length\n let afterStart = this.value.substring(completion.end)\n if (completion.value.includes(afterStart)) {\n this.value = prefix\n } else {\n this.value = prefix + this.value.substring(completion.end)\n }\n //Important if the underlying inputs value hasn't been set the setSelectionRange will fail to set a range greater than the inputs current value\n this._input.value = this.value\n this._input.setSelectionRange(insertIndex, insertIndex)\n if (completion.onSelect) {\n let value = await completion.onSelect()\n if (value !== undefined) {\n this.value += value\n setTimeout(() => { this._input.focus(); })\n }\n }\n this.completionIndex = 0;\n this.completions = []\n this._parseQuery()\n this._input.focus()\n }\n _handleArrows = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n this.completions = []; //Escape closes the popover toplayer lets ensure the completions aren't selectable\n }\n if (e.key == \"ArrowLeft\" || e.key === \"ArrowRight\") {\n setTimeout(this._parseQuery, 100)\n }\n if (!this.completions.length) {\n return\n }\n if ([\"ArrowUp\", \"ArrowDown\", 'Enter', \"Tab\"].includes(e.key) && this.suggestion) {\n e.preventDefault();\n if (e.key === \"ArrowDown\" || e.key === \"Tab\") {\n this.completionIndex += 1;\n if (this.completionIndex > this.completions.length - 1) {\n this.completionIndex = 0\n }\n }\n if (e.key === \"ArrowUp\") {\n this.completionIndex -= 1;\n if (this.completionIndex < 0) {\n this.completionIndex = this.completions.length - 1\n }\n }\n\n this._asyncAutocomplete?.then(element => {\n let active = element.querySelector(\".option.active\");\n if (active) {\n active.scrollIntoView({ block: \"nearest\" })\n }\n })\n\n if (e.key === \"Enter\") {\n this._selectCompletion()\n }\n }\n }\n protected render() {\n return html`\n <spectric-input .value=${this.value} .placeholder=${this.placeholder} style=${`anchor-name:--${this.uuid};`} autocomplete=\"off\" @input=${this._parseQuery} @keydown=${this._handleArrows} @change=${(e: Event) => e.stopPropagation()}></spectric-input>\n <div class=\"autocomplete\" popover style=${`position-anchor: --${this.uuid};`}>\n ${this.completions.map((option: Completion, index) =>\n html`<div @click=${() => {\n this.completionIndex = index;\n this._selectCompletion()\n }} class=${this.completionIndex == index ? \"option active\" : \"option\"}><span class=\"optiontype ${option.type}\">${option.type}</span> <span class=\"value\">${option.value}</span> <span class=\"label\">${option.label}</span></span> </div></div>`\n )}\n </div>`\n }\n}\n\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"spectric-query\": HTMLElementTagWithEvents<SpectricQuery, QueryEventMap>\n }\n namespace JSX {\n interface IntrinsicElements {\n /**\n * {@link SpectricQuery}\n */\n \"spectric-query\": ReactElementWithPropsAndEvents<SpectricQuery, IQueryProps, QueryEventMap>\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * {@link SpectricQuery}\n */\n \"spectric-query\": ReactElementWithPropsAndEvents<SpectricQuery, IQueryProps, QueryEventMap>;\n }\n }\n }\n}\n","import { css } from \"lit\";\n\nconst even = css`\n border-color: color-mix(in hsl, var(--panel-color, #0b0b0b), var(--spectric-input-color, #000000) 3%);\n background-color: var(--panel-color,#0b0b0b);\n --spectric-input-color: var(--spectric-background);\n color:var(--text-secondary,#3c4c5b);\n --spectric-text-primary:var(--text-primary);\n --spectric-text-secondary:var(--text-secondary);\n filter: drop-shadow(0px 1px 3px color-mix(in srgb, var(--text-secondary, #3c4c5b), transparent 50%));\n`\nconst odd = css`\n border-color: color-mix(in hsl, var(--panel-color-inverse,#f4f4f4), var(--spectric-input-color, #000000) 3%);\n background-color: var(--panel-color-inverse,#0b0b0b);\n color:var(--text-primary,#3c4c5b);\n --spectric-input-color: var(--panel-color);\n --spectric-text-primary:var(--text-secondary);\n --spectric-text-secondary:var(--text-primary);\n filter: drop-shadow(0px 1px 3px color-mix(in srgb, var(--text-primary, #3c4c5b), transparent 70%));\n `\nexport default css`\n:host{\n display:block;\n border:2px solid black;\n margin: 5px;\n border-radius:var(--spectric-border-radius,0.4em);\n padding: calc(var(--spectric-border-radius,0.4em) + 2px);\n\n}\n:host(spectric-panel[level='0']) {\n ${even};\n}\n\n:host(spectric-panel[level='1']) {\n ${odd};\n}\n\n:host(spectric-panel[level='2']) {\n ${even};\n}\n:host(spectric-panel[level='3']) {\n ${odd};\n}\n`","import { CSSResultGroup, html, LitElement } from 'lit';\nimport styles from './panel.css.ts';\nimport { customElement } from 'lit/decorators/custom-element.js';\nimport { property } from 'lit/decorators/property.js';\n\n\n\n\n/**\n * Spectric Panel visually seperates content areas and automatically adjusts the component colors that are nested inside.\n * */\n@customElement(\"spectric-panel\")\nexport class SpectricPanel extends LitElement {\n static styles?: CSSResultGroup | undefined = styles;\n\n /**\n * Specify the layer level and override any existing levels based on hierarchy\n */\n @property({ type: Number, reflect: true })\n level = 0;\n\n @property({ attribute: false })\n layers?: NodeListOf<SpectricPanel>;\n\n updated() {\n if (!this.layers) {\n this.layers = this.querySelectorAll(\n \"spectric-panel\"\n );\n }\n\n this.layers.forEach((item: SpectricPanel) => {\n (item).setAttribute(\n 'level',\n ((this.level + 1) % 4).toString()\n );\n });\n\n this.dispatchEvent(\n new CustomEvent(\"use-layer\", {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n layer: this,\n level: this.level,\n },\n })\n );\n }\n\n render() {\n return html` <slot></slot> `;\n }\n\n}","import { css, CSSResultGroup, html, LitElement, PropertyValues } from 'lit';\nimport { customElement } from 'lit/decorators/custom-element.js';\nimport { property } from 'lit/decorators/property.js';\nimport { HTMLElementTagWithEvents, ReactElementWithPropsAndEvents } from './types';\n\n\n\nexport interface CSSProps {\n \"--primary\": string,\n \"--secondary\": string,\n \"--tertiary\": string,\n \"--disabled\": string,\n \"--background\": string,\n \"--background-inverse\": string,\n \"--text-primary\": string\n \"--text-secondary\": string\n \"--text-on-color\": string\n \"--border-radius\": string\n}\ntype InputType = {\n control: \"color\" | \"text\"\n}\nexport const CSSPropsControls: Record<keyof CSSProps, InputType> = {\n \"--primary\": { control: \"color\" },\n \"--secondary\": { control: \"color\" },\n \"--tertiary\": { control: \"color\" },\n \"--disabled\": { control: \"color\" },\n \"--background\": { control: \"color\" },\n \"--background-inverse\": { control: \"color\" },\n \"--text-primary\": { control: \"color\" },\n \"--text-secondary\": { control: \"color\" },\n \"--text-on-color\": { control: \"color\" },\n \"--border-radius\": { control: \"text\" },\n}\nconst dark = {\n \"--secondary\": \"#77878b\",\n \"--tertiary\": \"#c7c7c7\",\n \"--disabled\": \"#000000\",\n \"--text-primary\": \"#cccccc\",\n \"--text-secondary\": \"#cccccc\",\n \"--text-on-color\": \"#ededed\",\n \"--background\": \"#181818\",\n \"--background-inverse\": \"#37373d\",\n}\nconst spectric = {\n ...dark,\n \"--primary\": \"#ffd45a\",\n \"--text-on-color\": \"#4f4f4f\",\n}\nconst Themes = {\n undefined: {},\n light: {},\n dark,\n spectric,\n spectricFlat: {\n ...spectric,\n \"--border-radius\": \"1px\",\n }\n} as const\nexport type KnownThemes = keyof typeof Themes\n\nexport const ThemeSelections = Object.fromEntries(Object.keys(Themes).map(k => [k, k])) as { [k in keyof typeof Themes]: k }\n\ntype ThemeProps = {\n theme?: KnownThemes\n}\n\n\nconst theme = `\n --spectric-background: var(--background,#ffffff);\n --spectric-background-hover:var(--background-hover,rgba(141, 141, 141, 0.12));\n --spectric-background-inverse: var(--background-inverse,#f4f4f4);\n --spectric-background-inverse-hover: var(--background-inverse-hover,#474747);\n --spectric-border-radius: var(--border-radius,.4em);\n --spectric-primary:var(--primary,#1ea7fd);\n --spectric-secondary: var(--secondary,#77878b);\n --spectric-tertiary: var(--tertiary,#0f62fe);\n --spectric-disabled: var(--disabled,#c6c6c6);\n\n /* panel */\n --panel-color:var(--spectric-background-inverse);\n --panel-color-inverse:var(--spectric-background);\n --spectric-border-disabled: var(--disabled);\n\n /*inputs*/\n --spectric-input-color: var(--panel-color-inverse);\n --spectric-input-bottom: var(--panel-color);\n\n --spectric-text-on-color: var(--text-on-color,#ffffff);\n --spectric-text-on-color-disabled: var(--text-on-color-disabled,#8d8d8d);\n --spectric-text-placeholder: var(--text-placeholder,rgba(22, 22, 22, 0.4));\n --spectric-text-primary: var(--text-primary,#161616);\n --spectric-text-secondary: var(--text-secondary,#525252);\n /* Buttons */\n --spectric-button-separator: #e0e0e0;\n --spectric-button-primary: var(--primary,#1ea7fd);\n --spectric-button-secondary: var(--secondary,#77878b);\n --spectric-button-tertiary: var(--tertiary);\n --spectric-button-danger-primary: #da1e28;\n --spectric-button-danger-secondary: #da1e28;\n --spectric-button-danger-active: #750e13;\n --spectric-button-primary-active: #002d9c;\n --spectric-button-secondary-active: #6f6f6f;\n --spectric-button-tertiary-active: #002d9c;\n --spectric-button-danger-hover: #b81921;\n --spectric-button-primary-hover: #0050e6;\n --spectric-button-secondary-hover: #474747;\n --spectric-button-tertiary-hover: #0050e6;\n --spectric-text-on-color-disabled: var(--disabled,#c6c6c6)\n --spectric-button-disabled: #c6c6c6;\n color: var(--spectric-text-primary);\n `\n\nexport interface ThemeChangeEvent {\n old?: string,\n new?: string\n}\n\nexport interface ThemeEventMap {\n \"theme-change\": (event: CustomEvent<ThemeChangeEvent>) => void;\n}\n\n\n@customElement(\"spectric-theme\")\nexport class SpectricThemeProvider extends LitElement {\n static styles?: CSSResultGroup | undefined = css`:host{\n display:contents;\n}`;\n @property({ reflect: true }) theme: KnownThemes = \"undefined\";\n protected updated(_changedProperties: PropertyValues): void {\n if (_changedProperties.has(\"theme\") && this.theme != _changedProperties.get(\"theme\")) {\n const eventDetails: ThemeChangeEvent = {\n old: _changedProperties.get(\"theme\"),\n new: this.theme\n };\n this.dispatchEvent(new CustomEvent<ThemeChangeEvent>(\"theme-change\", { detail: eventDetails, bubbles: true, composed: true }))\n }\n }\n protected render() {\n let currentTheme = Object.keys(Themes).includes(this.theme) ? this.theme : \"undefined\"\n let style = Object.entries(\n Themes[currentTheme]\n )\n .map(entry => `${entry[0]}:${entry[1]};`)\n .join(\"\\n\")\n\n return html`\n ${this.theme && this.theme !== \"light\" ? html`\n <style>:host{\n ${style};\n ${theme}\n }\n /* Webkit psudo elements don't pick up variables defined by the host */\n::-webkit-scrollbar-thumb {\n background: var(--spectric-background-inverse,#393939);\n border-radius: var(--spectric-border-radius,4em);\n -webkit-border-radius: var(--spectric-border-radius,4em);\n padding-top: 1px;\n padding-bottom: 1px;\n}\n::-webkit-scrollbar-thumb:hover {\n background: var(--spectric-background-inverse-hover,#474747);\n\n}\n::-webkit-scrollbar-corner {\n background: var(--spectric-background, #ffffff);\n}\n/* Buttons */\n\n::-webkit-scrollbar-button:single-button {\n background-color: transparent;\n display: block;\n border-style: solid;\n}\n/* Up */\n::-webkit-scrollbar-button:single-button:vertical:decrement {\n border-width: 0 5px 5px 5px;\n border-color: var(--spectric-background, #ffffff) var(--spectric-background, #ffffff) var(--spectric-background-inverse,#393939) var(--spectric-background, #ffffff);\n}\n::-webkit-scrollbar-button:single-button:vertical:decrement:hover {\n border-color: var(--spectric-background, #ffffff) var(--spectric-background, #ffffff) var(--spectric-background-inverse-hover,#474747) var(--spectric-background, #ffffff);\n}\n/* Down */\n::-webkit-scrollbar-button:single-button:vertical:increment {\n border-width: 5px 5px 0 5px;\n border-color: var(--spectric-background-inverse,#393939) var(--spectric-background, #ffffff) transparent var(--spectric-background, #ffffff);\n}\n\n::-webkit-scrollbar-button:vertical:single-button:increment:hover {\n border-color: var(--spectric-background-inverse-hover,#474747) var(--spectric-background, #ffffff) transparent var(--spectric-background, #ffffff);\n}\n\n/* Left */\n::-webkit-scrollbar-button:single-button:horizontal:decrement {\n border-width: 5px 5px 5px 0;\n border-color:var(--spectric-background, #ffffff) var(--spectric-background-inverse,#393939) var(--spectric-background, #ffffff) var(--spectric-background, #ffffff);\n\n}\n\n::-webkit-scrollbar-button:single-button:horizontal:decrement:hover {\n border-width: 5px 5px 5px 0;\n border-color:var(--spectric-background, #ffffff) var(--spectric-background-inverse-hover,#474747) var(--spectric-background, #ffffff) var(--spectric-background, #ffffff);\n\n}\n\n\n\n/* Right */\n::-webkit-scrollbar-button:single-button:horizontal:increment {\n border-width: 5px 0 5px 5px;\n border-color:var(--spectric-background, #ffffff) var(--spectric-background, #ffffff) var(--spectric-background, #ffffff) var(--spectric-background-inverse,#393939);\n\n}\n\n::-webkit-scrollbar-button:single-button:horizontal:increment:hover {\n border-width: 5px 0 5px 5px;\n border-color:var(--spectric-background, #ffffff) var(--spectric-background, #ffffff) var(--spectric-background, #ffffff) var(--spectric-background-inverse-hover,#474747);\n\n}\n</style>`: null}\n <slot></slot>\n `\n }\n}\n\ndeclare global {\n //Add events that bubble up to a \"global events map\"\n interface SpectricGlobalEvents extends ThemeEventMap { }\n interface HTMLElementTagNameMap {\n \"spectric-theme\": HTMLElementTagWithEvents<SpectricThemeProvider, ThemeEventMap>\n }\n namespace JSX {\n interface IntrinsicElements {\n /**\n * {@link SpectricThemeProvider}\n */\n \"spectric-theme\": ReactElementWithPropsAndEvents<SpectricThemeProvider, ThemeProps, ThemeEventMap>;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * {@link SpectricThemeProvider}\n */\n \"spectric-theme\": ReactElementWithPropsAndEvents<SpectricThemeProvider, ThemeProps, ThemeEventMap>;\n }\n }\n }\n}\n\n","import { css } from \"lit\";\n\nexport const style = css`\n :host {\n display: block;\n height: 100%;\n width: 100%;\n\n }\n .split-view {\n display: flex;\n height: 100%;\n width: 100%;\n position:relative;\n }\n .split-view.active{\n cursor:ew-resize;\n }\n .split-view.active.vertical{\n cursor:ns-resize;\n }\n .split-view.vertical {\n flex-direction: column;\n }\n .panel {\n flex: 1;\n overflow: auto;\n }\n .splitter {\n border-radius: var(--spectric-border-radius, .4em);\n background-color: var(--spectric-input-color,#ccc);\n user-select: none;\n transition: background-color 100ms linear;\n }\n \n .splitter.invisible {\n background-color: #00000000;\n }\n .splitter:hover {\n background-color: var(--spectric-button-primary, #1ea7fd);\n transition: background-color 500ms linear;\n }\n .splitter.active {\n background-color: var(--spectric-button-primary, #1ea7fd);\n transition: background-color 500ms linear;\n }\n .split-view > .error-display{\n display:none;\n position:absolute;\n top:0;\n right:0\n }\n .split-view.error > .error-display{\n display:inline-block;\n\n }\n .split-view.vertical .splitter {\n cursor: ns-resize;\n height: 5px;\n width: 100%;\n }\n .split-view:not(.vertical) .splitter {\n width: 5px;\n cursor: ew-resize;\n }\n `;","import { html, PropertyValues, } from 'lit-element';\nimport { DisposableElement } from '../../classes/DisposibleElement';\nimport { customElement, property, query, queryAsync, state } from 'lit/decorators.js';\n\nimport { style } from './splitview.css';\nimport { HTMLElementTagWithEvents, ReactElementWithPropsAndEvents } from '../types';\nimport { debounceAnimation } from '../../utils/debounce';\n\nexport enum Orientations {\n horizontal = \"horizontal\",\n vertical = \"vertical\"\n}\nexport interface SplitViewProps {\n /** Controls the orientation of the splitter handle */\n orientation?: `${Orientations}`;\n /** the percentage to split the view default: 50*/\n percentage?: number\n /** Should the splitter handle be invisible? */\n invisible?: boolean\n /** Clamps the minimum split percentage default: 10 */\n min?: number\n /** Clamps the maximum split percentage default: 90 */\n max?: number\n /** save and load split state to localstorage splitter must have an id attribute default: true */\n useSavedState?: boolean\n}\nexport const ElementTag = 'spectric-splitview'\n/**\n * Split view will take a container and split it horizontally or vertically. This element can only have two children.\n * If you supply the **id** attribute on the split view element it will save and load the state keeping the user defined position\n * @slot - Element can only take 2 HTMLElements.\n */\n@customElement(ElementTag)\nexport class SplitView extends DisposableElement implements SplitViewProps {\n\n @property({ type: String }) orientation = 'horizontal' as Orientations;\n\n @property({ type: Number, reflect: true }) percentage: SplitViewProps['percentage'] = 50;\n\n @property({ type: Boolean }) invisible: SplitViewProps['invisible'] = false;\n static styles = style\n\n @property({ type: Number, reflect: true }) min: number = 10;\n @property({ type: Number, reflect: true }) max: number = 90;\n @property({ type: Boolean, reflect: true }) useSavedState: SplitViewProps['useSavedState'] = true;\n\n @state()\n private isDragging: boolean = false;\n @state()\n private _error: string | false = false;\n @queryAsync(\".splitter\")\n private _splitter!: Promise<HTMLElement>\n\n @query(\"slot[name='panel1']\")\n private _panel1!: HTMLSlotElement\n @query(\"slot[name='panel2']\")\n private _panel2!: HTMLSlotElement\n constructor() {\n super()\n let id = this.getAttribute(\"id\");\n if (id && this.useSavedState) {\n let savedValue = localStorage.getItem(`splitview-${id}`)\n if (savedValue) {\n this.percentage = parseFloat(savedValue)\n }\n }\n this.addDisposableListener(this._splitter, \"mousedown\", () => {\n this.isDragging = true;\n })\n /**\n * On double click set percentage to 50%\n */\n this.addDisposableListener(this._splitter, \"dblclick\", () => {\n this.percentage = 50\n this._emitChange()\n })\n this.addDisposableListener(document.body, \"mousemove\", this._onMouseMove)\n this.addDisposableListener(document.body, 'mouseup', () => {\n this.isDragging = false;\n });\n }\n\n protected updated(changedProperties: PropertyValues): void {\n if (changedProperties.has(\"percentage\")) {\n this.percentage = Math.min(Math.max(Number(this.percentage), this.min), this.max)\n }\n }\n _emitChange = () => {\n let { percentage, orientation, invisible, min, max, useSavedState } = this\n let id = this.getAttribute(\"id\");\n if (id && this.useSavedState) {\n localStorage.setItem(`splitview-${id}`, String(percentage))\n }\n /** CustomEvent\\<SplitViewProps\\> Fired every time there is a change to the split percentage */\n this.dispatchEvent(new CustomEvent<SplitViewProps>(\"change\", { detail: { orientation, percentage, invisible, min, max, useSavedState } }))\n }\n _onMouseMove = debounceAnimation((e: MouseEvent) => {\n if (this.isDragging) {\n const rect = this.getBoundingClientRect();\n let offset: number;\n let percentage: number;\n if (this.orientation === 'horizontal') {\n offset = e.clientX - rect.left;\n percentage = (offset / rect.width) * 100;\n } else {\n offset = e.clientY - rect.top;\n percentage = (offset / rect.height) * 100;\n }\n //clamp to min/mix of the split\n percentage = Math.min(Math.max(percentage, this.min), this.max)\n this.percentage = percentage\n this._emitChange()\n }\n });\n private _assignSlot = (e: Event) => {\n if (!e.target) {\n return\n }\n let slot = e.target as HTMLSlotElement;\n let nodes = slot.assignedNodes().filter(n => n instanceof HTMLElement);\n if (nodes.length > 2) {\n console.log(\"cannot assign more than 2 elements to a split view\")\n }\n nodes.forEach(element => {\n if (this._panel1.assignedNodes().length === 0) {\n element.slot = \"panel1\"\n return\n }\n if (this._panel2.assignedNodes().length === 0) {\n element.slot = \"panel2\"\n return\n }\n this._error = \"Too many element assigned to split view splitter can only have a maximum of 2 children\"\n console.warn(\"Too many element assigned to split view splitter can only have a maximum of 2 children\")\n }\n )\n }\n render() {\n return html`\n <div class=\"split-view ${this.orientation} ${this._error ? \"error\" : \"\"} ${this.isDragging ? \"active\" : \"\"}\" style=\"--split-percentage: ${this.percentage}%;\">\n <span class=\"error-display\">${this._error}</span>\n <div class=\"panel\" style=\"${this.orientation === 'horizontal' ? 'flex: var(--split-percentage, 50%)' : 'max-height: var(--split-percentage, 50%)'}\">\n <slot name=\"panel1\"></slot>\n </div>\n <div class=\"splitter ${this.invisible ? \"invisible\" : \"\"} ${this.isDragging ? \"active\" : \"\"}\"></div>\n <div class=\"panel\" style=\"${this.orientation === 'horizontal' ? 'flex: calc(100% - var(--split-percentage, 50%))' : 'max-height: calc(100% - var(--split-percentage, 50%))'}\">\n <slot name=\"panel2\"></slot>\n </div>\n </div>\n <slot @slotchange=${this._assignSlot} style=\"display:none\"></slot>\n `;\n }\n}\n\nexport interface SplitViewEvents {\n 'change': (event: CustomEvent<SplitViewProps>) => void;\n}\n\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [ElementTag]: HTMLElementTagWithEvents<SplitView, SplitViewEvents>\n\n }\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link SplitView}\n */\n [ElementTag]: ReactElementWithPropsAndEvents<SplitView, SplitViewProps, SplitViewEvents>;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link SplitView}\n */\n [ElementTag]: ReactElementWithPropsAndEvents<SplitView, SplitViewProps, SplitViewEvents>\n }\n }\n }\n}\n","import { html, LitElement, PropertyValues } from 'lit';\nimport \"../Button\";\nimport { customElement, property, query, } from 'lit/decorators.js';\nimport { HTMLElementTagWithEvents, ReactElementWithPropsAndEvents } from '../types';\nexport const PaginationElementTag = \"spectric-pagination\"\nimport \"./pagination.css\"\nimport { ButtonSizesTypes } from '../Button';\nexport type { PaginationProps, PaginationChangeProps, PaginationEvents }\n\ninterface PaginationChangeProps {\n page?: number;\n pageSize?: number;\n}\n\ninterface PaginationProps extends PaginationChangeProps {\n size?: ButtonSizesTypes\n totalItems?: number\n pageSizeOptions?: number[]\n}\n\nconsole.log(\"Pagination\")\n\n/**\n * Pagination Element\n */\n@customElement(PaginationElementTag)\nexport class PaginationElement extends LitElement implements PaginationProps {\n @property({ type: Number, reflect: true })\n page: number = 1;\n\n @property({ type: Number, reflect: true })\n pageSize: number = 10;\n\n @property({ type: Number, reflect: true })\n totalItems?: number;\n\n @property({ type: Array })\n pageSizeOptions = [10, 20, 50, 100, 1000];\n\n @query(\"select\")\n select?: HTMLSelectElement\n /**\n * Size of the pagination buttons\n */\n @property({ type: String, reflect: true })\n size: ButtonSizesTypes = \"xsmall\"\n protected createRenderRoot(): HTMLElement | DocumentFragment {\n return this\n }\n protected updated(_changedProperties: PropertyValues): void {\n if (_changedProperties.has(\"pageSize\") && !this.pageSizeOptions.includes(this.pageSize)) {\n this.pageSizeOptions = [...this.pageSizeOptions, this.pageSize].sort((a, b) => a - b)\n /**\n * If an option isn't present in the select options list it cannot update its value until after the option is present.\n * We requests an animation frame to make sure we the value was set correctly after the option is added. We update it if the value is incorrect\n */\n requestAnimationFrame(() => {\n if (this.select && this.select.value !== String(this.pageSize)) {\n this.select.value = String(this.pageSize)\n }\n })\n }\n }\n private _handlePageUp = () => {\n this.page += 1\n this._emitChange()\n }\n private _handlePageDown = () => {\n this.page -= 1\n this._emitChange()\n }\n private _handleSizeChange = (e: any) => {\n e.stopPropagation()\n e.preventDefault()\n let value = parseInt(e.target.value)\n this.pageSize = value\n this._emitChange()\n }\n private _emitChange = () => {\n let { page, pageSize } = this\n this.dispatchEvent(new CustomEvent<PaginationChangeProps>(\"change\", { detail: { page, pageSize } }))\n }\n protected render(): unknown {\n let nextPage = (this.page) * this.pageSize\n let nextPageDisabled = true\n\n if (this.totalItems && nextPage < this.totalItems) {\n nextPageDisabled = false\n }\n let pageText = \"\"\n if (this.totalItems) {\n pageText = `${this.page} of ${Math.ceil(this.totalItems / this.pageSize)}`\n }\n return html`\n <div class=\"spectric-pagination-container\">\n <div>\n <!-- TODO/FIXME Make a select component and use it for cross browser styling-->\n <select @change=${this._handleSizeChange} .value=${String(this.pageSize)}>\n ${this.pageSizeOptions.map(size => html`<option .value=${String(size)} class=${String(size) === String(this.pageSize) ? \"selected\" : \"\"}>${size}</option>`)}\n </select>\n </div>\n ${this.totalItems ? html`\n <div class=\"spectric-pagination-text\">${`Items ${(this.page - 1) * this.pageSize}-${Math.min(this.page * this.pageSize, this.totalItems)} of ${this.totalItems}`}</div>\n <div class=\"spectric-pagination-container\">\n <div>\n ${pageText}\n </div>\n <div>\n <spectric-button size=${this.size} ?disabled=${this.page === 1} @click=${this._handlePageDown} icon>🠈</spectric-button>\n <spectric-button size=${this.size} ?disabled=${nextPageDisabled} @click=${this._handlePageUp} icon>🠊</spectric-button>\n </div>\n </div>\n `: null}\n </div>\n `;\n }\n}\n\ninterface PaginationEvents {\n 'change': (event: CustomEvent<PaginationChangeProps>) => void;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [PaginationElementTag]: HTMLElementTagWithEvents<PaginationElement, PaginationEvents>\n\n }\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link PaginationElement}\n */\n [PaginationElementTag]: ReactElementWithPropsAndEvents<PaginationElement, PaginationProps, PaginationEvents>;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link PaginationElement}\n */\n [PaginationElementTag]: ReactElementWithPropsAndEvents<PaginationElement, PaginationProps, PaginationEvents>\n }\n }\n }\n}\n","import { html } from \"lit\";\nimport \"../pagination\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport {\n HTMLElementTagWithEvents,\n ReactElementWithPropsAndEvents,\n} from \"../types\";\nimport \"./table.css\";\nimport \"./header.css\";\nexport const TableHeaderElementTag = \"spectric-table-header\";\nimport { ColumnSettings, TableSortDirection } from \"./table\";\nimport { DisposableElement } from \"../../classes\";\n\ninterface HeaderProps<T> {\n columns: ColumnSettings<T>[];\n}\n\n/**\n * Pagination Element\n */\n@customElement(TableHeaderElementTag)\nexport class TableHeaderElement<T>\n extends DisposableElement\n implements HeaderProps<T> {\n @property({ type: Array, attribute: false })\n columns: ColumnSettings<T>[] = [];\n @state()\n private _resizeStart?: { event: MouseEvent; column: ColumnSettings<T> };\n constructor() {\n super();\n this.addDisposableListener(\n () => document.body,\n \"mouseup\",\n this._handleResizeEnd\n );\n }\n protected createRenderRoot(): HTMLElement | DocumentFragment {\n return this;\n }\n _handleSortChange = (column: ColumnSettings<T>) => {\n if (this._resizeStart) {\n return;\n }\n column = JSON.parse(JSON.stringify(column)); // Clone the column to not mutate the original object\n if (!column.sortable) {\n return;\n }\n if (\n column.sortDirection === TableSortDirection.none ||\n column.sortDirection === undefined\n ) {\n column.sortDirection = TableSortDirection.ascending;\n } else if (column.sortDirection === TableSortDirection.ascending) {\n column.sortDirection = TableSortDirection.descending;\n } else if (column.sortDirection === TableSortDirection.descending) {\n column.sortDirection = TableSortDirection.none;\n }\n this.dispatchEvent(\n new CustomEvent<ColumnSettings<T>>(\"sortChange\", {\n composed: true,\n bubbles: true,\n detail: column,\n })\n );\n };\n _handleResizeStart = (event: MouseEvent, column: ColumnSettings<T>) => {\n this._resizeStart = { event, column };\n };\n _handleResizeEnd = (e: MouseEvent) => {\n if (!this._resizeStart) {\n return;\n }\n let delta = e.pageX - this._resizeStart?.event.pageX;\n let before = this._resizeStart.column.width;\n console.log(delta);\n if (this._resizeStart.column.width) {\n this._resizeStart.column.width = this._resizeStart.column.width + delta;\n } else {\n let cell = (this._resizeStart.event.target as HTMLDivElement).closest(\n \"td\"\n ) as HTMLTableCellElement;\n this._resizeStart.column.width =\n cell.getBoundingClientRect().width + delta;\n }\n console.log(before, this._resizeStart.column.width);\n this.dispatchEvent(\n new CustomEvent(\"columnResize\", { detail: this._resizeStart.column })\n );\n //We wrap this to ensure any sort events get fired before we are done FIXME?\n requestAnimationFrame(() => {\n this._resizeStart = undefined;\n //Clear any text that got selected during column resize\n if (window.getSelection) {\n let selection = window.getSelection();\n if (selection) {\n selection.removeAllRanges();\n }\n }\n })\n };\n protected render(): unknown {\n return html`\n <tr>\n ${this.columns.map(column => this.renderCell(column))}\n </tr>\n `;\n }\n private renderCell(column: ColumnSettings<T>) {\n let classes = [\"header-contents\"];\n if (column.filterable) {\n //classes.push(\"filterable\")\n }\n if (column.sortable) {\n classes.push(\"sortable\");\n }\n if (this._resizeStart) {\n classes.push(\"resizing\");\n }\n let columnWidth = column.width\n ? `min-width:${column.width}px;max-width:${column.width}px;`\n : \"\";\n let sortDirection =\n column.sortDirection === TableSortDirection.ascending\n ? `🠉`\n : column.sortDirection == TableSortDirection.descending\n ? `🠋`\n : ``;\n let sortClass = column.sortDirection || TableSortDirection.none;\n let resizable =\n column.allowResize || column.allowResize === undefined;\n let resizeHandle = resizable\n ? html`<div\n class=\"header-resize-handle\"\n @mousedown=${(e: MouseEvent) => {\n this._handleResizeStart(e, column);\n }}\n @mouseup=${this._handleResizeEnd}\n ></div>`\n : null\n return html` <td\n @click=${() => this._handleSortChange(column)}\n style=\"${columnWidth}\"\n >\n ${resizeHandle}\n <div class=${classes.join(\" \")}>\n ${column.title || column.key}\n <span class=\"sort-direction ${sortClass}\">${sortDirection}</span>\n </div>\n </td>`;\n }\n}\n\ninterface TableHeaderEvents {\n sortChange: (event: CustomEvent<ColumnSettings<any>>) => void; //TODO sort events\n columnResize: (event: CustomEvent<ColumnSettings<any>>) => void;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [TableHeaderElementTag]: HTMLElementTagWithEvents<\n TableHeaderElement<any>,\n TableHeaderEvents\n >;\n }\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link DialogElement}\n */\n [TableHeaderElementTag]: ReactElementWithPropsAndEvents<\n TableHeaderElement<any>,\n HeaderProps<any>,\n TableHeaderEvents\n >;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link DialogElement}\n */\n [TableHeaderElementTag]: ReactElementWithPropsAndEvents<\n TableHeaderElement<any>,\n HeaderProps<any>,\n TableHeaderEvents\n >;\n }\n }\n }\n}\n","import{render as t,nothing as i}from\"../lit-html.js\";import{directive as s,Directive as e}from\"../directive.js\";import{isTemplateResult as o,getCommittedValue as n,setCommittedValue as r,insertPart as l,clearPart as c,isCompiledTemplateResult as u}from\"../directive-helpers.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const d=t=>u(t)?t._$litType$.h:t.strings,h=s(class extends e{constructor(t){super(t),this.et=new WeakMap}render(t){return[t]}update(s,[e]){const u=o(this.it)?d(this.it):null,h=o(e)?d(e):null;if(null!==u&&(null===h||u!==h)){const e=n(s).pop();let o=this.et.get(u);if(void 0===o){const s=document.createDocumentFragment();o=t(i,s),o.setConnected(!1),this.et.set(u,o)}r(o,[e]),l(o,void 0,e)}if(null!==h){if(null===u||u!==h){const t=this.et.get(h);if(void 0!==t){const i=n(t).pop();c(s),l(s,void 0,i),r(s,[i])}}this.it=e}else this.it=void 0;return this.render(e)}});export{h as cache};\n//# sourceMappingURL=cache.js.map\n","import { html, LitElement, PropertyValues } from 'lit';\nimport { customElement, property, query, state, } from 'lit/decorators.js';\nimport { HTMLElementTagWithEvents, ReactElementWithPropsAndEvents } from '../types';\nexport const TableCellElementTag = \"spectric-table-cell\"\nimport { ColumnSettings, DomRenderable, SpectricTableElement } from './table';\nimport { cache } from 'lit/directives/cache.js';\nimport { StyleInfo, styleMap } from 'lit/directives/style-map.js';\n\ninterface CellProps<T> {\n column: ColumnSettings<T>\n row: T\n}\n\nexport type FilterEvent<T> = {\n value?: T,\n include: boolean\n column: ColumnSettings<T>\n row: T\n}\n\n/**\n * Pagination Element\n */\n@customElement(TableCellElementTag)\nexport class TableCellElement<T> extends LitElement implements CellProps<T> {\n @property({ type: Object, attribute: false })\n row!: T;\n\n @property({ type: Number, attribute: false })\n index!: number;\n @property({ type: Object, attribute: false })\n column!: ColumnSettings<T>;\n columns!: ColumnSettings<T>[];\n table!: SpectricTableElement<T>\n\n @state()\n overflow: DomRenderable = \"\"\n @query(\"td\")\n td!: HTMLTableCellElement\n styleRules: StyleInfo = { whiteSpace: \"\", width: \"\" };\n protected createRenderRoot(): HTMLElement | DocumentFragment {\n return this\n }\n protected updated(_changedProperties: PropertyValues): void {\n\n }\n _emitFilter(filter: FilterEvent<T>) {\n this.dispatchEvent(new CustomEvent<FilterEvent<T>>(\"filter\", {\n composed: true,\n bubbles: true,\n detail: filter\n }))\n }\n _handleFilterOut = () => {\n let value = undefined;\n if (this.column.key && typeof this.row === \"object\") {\n value = rowGetValue(this.row as Record<any, any>, this.column.key)\n }\n this._emitFilter({\n include: false,\n row: this.row,\n value,\n column: this.column\n })\n\n }\n _handleFilterFor = () => {\n let value = undefined;\n if (this.column.key && typeof this.row === \"object\") {\n value = rowGetValue(this.row as Record<any, any>, this.column.key)\n }\n this._emitFilter({\n include: true,\n row: this.row,\n value,\n column: this.column\n })\n }\n _displayTooltip = () => {\n let div = this.querySelector(\"div.cell-contents\")\n let span = this.querySelector(\"span\")\n if (div && span) {\n let spanBounds = span.getBoundingClientRect()\n let divBounds = div.getBoundingClientRect()\n if ((spanBounds.width * spanBounds.height) > (divBounds.width * divBounds.height)) {\n console.log(\"We need to show a tooltip witht he content because we are overflowing\")\n this.overflow = this.getRenderedValue()\n this.updateComplete.then(() => {\n let tooltip = this.querySelector(\"spectric-tooltip\")\n if (tooltip) {\n tooltip.showToolTip()\n }\n })\n } else {\n this.overflow = \"\"\n }\n }\n }\n getRenderedValue() {\n let rendered\n if (this.column.render) {\n rendered = this.column.render(this.row, this.index, this.table)\n } else if (this.column.key && typeof this.row === 'object') {\n rendered = rowGetValue(this.row as any, this.column.key)\n } else {\n rendered = html`error`\n }\n return rendered\n }\n protected render(): unknown {\n let rendered = this.getRenderedValue()\n let classes = [\"cell-contents\"]\n if (this.column.filterable) {\n classes.push(\"filterable\")\n }\n\n let filterButtons = cache(this.column.filterable\n ? html`<div class=\"table-cell-actions\">\n <spectric-button @click=${this._handleFilterOut} size=\"tiny\" variant=\"text\" icon tooltip=\"Filter Out Value\">-</spectric-button>\n <spectric-button @click=${this._handleFilterFor} size=\"tiny\" variant=\"text\" icon tooltip=\"Filter For Value\">+</spectric-button></div>`\n : null\n )\n this.styleRules = {\n width: this.column.width ? this.column.width + \"px\" : null,\n whiteSpace: this.column.whiteSpace || null\n }\n return html`\n <td style=${styleMap(this.styleRules)} @mouseenter=${this._displayTooltip}>\n ${filterButtons}\n <div class=${classes.join(\" \")}>${this.overflow ? html`<spectric-tooltip .text=${this.overflow}></spectric-tooltip>` : null}<span>${rendered}</span></div>\n </td>\n `\n }\n\n}\n\ninterface TableBodyEvents {\n 'filter': (event: CustomEvent<ColumnSettings<any>>) => void; //TODO filter events\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [TableCellElementTag]: HTMLElementTagWithEvents<TableCellElement<any>, TableBodyEvents>\n\n }\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link DialogElement}\n */\n [TableCellElementTag]: ReactElementWithPropsAndEvents<TableCellElement<any>, CellProps<any>, TableBodyEvents>;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link DialogElement}\n */\n [TableCellElementTag]: ReactElementWithPropsAndEvents<TableCellElement<any>, CellProps<any>, TableBodyEvents>\n }\n }\n }\n}\n\n\nexport const rowGetValue = (context: Record<string, any>, key: string) => {\n let path = key.split(\".\")\n let value = context[path[0]]\n if (value === null || value === undefined) {\n return value\n }\n if (path.length > 1) {\n value = rowGetValue(value, path.slice(1).join(\".\"))\n }\n return value\n}","import{noChange as e}from\"../lit-html.js\";import{directive as s,Directive as t,PartType as r}from\"../directive.js\";import{getCommittedValue as l,setChildPartValue as o,insertPart as i,removePart as n,setCommittedValue as f}from\"../directive-helpers.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst u=(e,s,t)=>{const r=new Map;for(let l=s;l<=t;l++)r.set(e[l],l);return r},c=s(class extends t{constructor(e){if(super(e),e.type!==r.CHILD)throw Error(\"repeat() can only be used in text expressions\")}dt(e,s,t){let r;void 0===t?t=s:void 0!==s&&(r=s);const l=[],o=[];let i=0;for(const s of e)l[i]=r?r(s,i):i,o[i]=t(s,i),i++;return{values:o,keys:l}}render(e,s,t){return this.dt(e,s,t).values}update(s,[t,r,c]){const d=l(s),{values:p,keys:a}=this.dt(t,r,c);if(!Array.isArray(d))return this.ut=a,p;const h=this.ut??=[],v=[];let m,y,x=0,j=d.length-1,k=0,w=p.length-1;for(;x<=j&&k<=w;)if(null===d[x])x++;else if(null===d[j])j--;else if(h[x]===a[k])v[k]=o(d[x],p[k]),x++,k++;else if(h[j]===a[w])v[w]=o(d[j],p[w]),j--,w--;else if(h[x]===a[w])v[w]=o(d[x],p[w]),i(s,v[w+1],d[x]),x++,w--;else if(h[j]===a[k])v[k]=o(d[j],p[k]),i(s,d[x],d[j]),j--,k++;else if(void 0===m&&(m=u(a,k,w),y=u(h,x,j)),m.has(h[x]))if(m.has(h[j])){const e=y.get(a[k]),t=void 0!==e?d[e]:null;if(null===t){const e=i(s,d[x]);o(e,p[k]),v[k]=e}else v[k]=o(t,p[k]),i(s,d[x],t),d[e]=null;k++}else n(d[j]),j--;else n(d[x]),x++;for(;k<=w;){const e=i(s,v[w+1]);o(e,p[k]),v[k++]=e}for(;x<=j;){const e=d[x++];null!==e&&n(e)}return this.ut=a,f(s,v),e}});export{c as repeat};\n//# sourceMappingURL=repeat.js.map\n","import { html, LitElement, PropertyValues } from 'lit';\nimport { customElement, property, } from 'lit/decorators.js';\nimport { HTMLElementTagWithEvents, ReactElementWithPropsAndEvents } from '../types';\nexport const TableBodyElementTag = \"spectric-table-body\"\nimport \"./cell\"\nimport { ColumnSettings, SpectricTableElement } from './table';\nimport { repeat } from 'lit/directives/repeat.js';\n\ninterface BodyProps<T> {\n columns: ColumnSettings<T>[]\n data: T[]\n}\n\n\n/**\n * Table Body Element\n */\n@customElement(TableBodyElementTag)\nexport class TableBodyElement<T> extends LitElement implements BodyProps<T> {\n @property({ type: Array, attribute: false })\n data: T[] = [];\n @property({ type: Array, attribute: false })\n columns: ColumnSettings<T>[] = [];\n table!: SpectricTableElement<T>\n protected createRenderRoot(): HTMLElement | DocumentFragment {\n return this\n }\n protected firstUpdated(_changedProperties: PropertyValues): void {\n if (this.data.length > 100) {\n console.warn(\"Table is rendering excessive amounts of data to the DOM you should set rowHeight and use a virtualized scroll or use pagination\")\n }\n }\n protected render(): unknown {\n return html`\n <body>\n ${repeat(this.data, (row, index) => html`\n <tr class=\"${index % 2 === 0 ? \"odd\" : \"\"}\">\n ${repeat(this.columns, (col) => {\n return html`<spectric-table-cell .column=${col} .index=${index} .row=${row} .columns=${this.columns}></spectric-table-cell>`\n })}\n </tr>`)}\n\n </body>\n `\n\n }\n\n}\n\ninterface TableBodyEvents {\n //'sort': (event: CustomEvent<ColumnSettings<any>>) => void; //TODO sort events\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [TableBodyElementTag]: HTMLElementTagWithEvents<TableBodyElement<any>, TableBodyEvents>\n\n }\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link DialogElement}\n */\n [TableBodyElementTag]: ReactElementWithPropsAndEvents<TableBodyElement<any>, BodyProps<any>, TableBodyEvents>;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link DialogElement}\n */\n [TableBodyElementTag]: ReactElementWithPropsAndEvents<TableBodyElement<any>, BodyProps<any>, TableBodyEvents>\n }\n }\n }\n}\n","import { html } from 'lit';\nimport { customElement, property, } from 'lit/decorators.js';\nimport { HTMLElementTagWithEvents, ReactElementWithPropsAndEvents } from '../types';\nexport const TableBodyElementTag = \"spectric-table-virtual-body\"\nimport \"./cell\"\nimport { ColumnSettings, SpectricTableElement } from './table';\nimport { repeat } from 'lit/directives/repeat.js';\nimport { DisposableElement } from '../../classes/DisposibleElement';\nimport \"./virtualBody.css\"\ninterface BodyProps<T> {\n columns: ColumnSettings<T>[]\n data: T[]\n rowHeight: number\n}\n\n\n/**\n * Table Body Element\n */\n@customElement(TableBodyElementTag)\nexport class TableVirtualBodyElement<T> extends DisposableElement implements BodyProps<T> {\n @property({ type: Array, attribute: false })\n data: T[] = [];\n @property({ type: Array, attribute: false })\n columns: ColumnSettings<T>[] = [];\n @property({ type: Number, attribute: false })\n rowHeight: number = 30;\n\n @property({ type: Number, state: true })\n startIndex: number = 0\n\n table!: SpectricTableElement<T>\n constructor() {\n super()\n this.addDisposableListener(() => this.table.querySelector(\".table-wrapper\")!, \"scroll\", () => {\n const scrollTop = this.table.querySelector(\".table-wrapper\")!.scrollTop;\n requestAnimationFrame(() => {\n this.startIndex = Math.floor(scrollTop / this.rowHeight);\n })\n })\n }\n protected firstUpdated(): void {\n this.columns.forEach(col => {\n if (!col.width) {\n console.warn(\"When using virtual scrolling it is recomended to set the width of the columns to prevent columns widths from jittering during scroll\")\n }\n })\n }\n protected createRenderRoot(): HTMLElement | DocumentFragment {\n return this\n }\n protected render(): unknown {\n let totalRows = this.data.length\n let buffer = 10 // Have a buffer of rows to prevent column jitter\n let headerHeight = this.table.querySelector(\"spectric-table-header\")!.clientHeight\n let viewport = this.table.querySelector(\".table-wrapper\")!\n let startIndex = Math.max(this.startIndex - buffer, 0) //pad the front with 10 rows\n const rowsThatFit = Math.ceil((viewport.clientHeight - headerHeight) / this.rowHeight);\n const endIndex = Math.min(startIndex + rowsThatFit + buffer, totalRows);\n const visibleRows = endIndex - startIndex\n let totalHeight = totalRows * this.rowHeight\n let beforeHeight = (startIndex * this.rowHeight) + (viewport.scrollTop - (startIndex * this.rowHeight))\n if (endIndex === totalRows) {\n beforeHeight = (startIndex * this.rowHeight)\n }\n let visibleHeight = (visibleRows * this.rowHeight)\n let afterHeight = totalHeight - beforeHeight - visibleHeight\n let spacerElementBefore = this.startIndex != 0 ? html`\n <tr style=\"height:${beforeHeight}px\" class=\"virtual-scroll-spacer\">\n <td colspan=\"${this.columns.length}\"></td></tr>` : null\n\n let spacerElementAfter = html`\n <tr style=\"height:${afterHeight}px\" class=\"virtual-scroll-spacer\">\n <td colspan=\"${this.columns.length}\"></td></tr>`\n return html`\n <div style=\"height:${totalHeight}px;position: absolute;overflow-x: hidden;overflow-y: hidden;z-index:-1;width:1px;\"></div>\n <tbody>\n ${spacerElementBefore}\n </tbody>\n <div style=\"display:table-row-group;max-height:${visibleHeight}px; overflow:hidden;\">\n\n ${repeat(this.data.slice(Math.max(startIndex, 0), endIndex), (row, index) => html`\n <tr class=\"${(index + startIndex) % 2 === 0 ? \"odd\" : \"\"}\">\n ${repeat(this.columns, (col) => {\n return html`<spectric-table-cell .column=${col} .row=${row} .index=${index + startIndex} .columns=${this.columns}></spectric-table-cell>`\n })}\n </tr>`)\n }\n </div>\n <tbody>\n ${afterHeight > 0 ? spacerElementAfter : null}\n</tbody>\n\n `\n\n }\n\n}\n\ninterface TableBodyEvents {\n //'sort': (event: CustomEvent<ColumnSettings<any>>) => void; //TODO sort events\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [TableBodyElementTag]: HTMLElementTagWithEvents<TableVirtualBodyElement<any>, TableBodyEvents>\n\n }\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link DialogElement}\n */\n [TableBodyElementTag]: ReactElementWithPropsAndEvents<TableVirtualBodyElement<any>, BodyProps<any>, TableBodyEvents>;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link DialogElement}\n */\n [TableBodyElementTag]: ReactElementWithPropsAndEvents<TableVirtualBodyElement<any>, BodyProps<any>, TableBodyEvents>\n }\n }\n }\n}\n","export function once(func: Function) {\n let hasBeenCalled = false;\n let result: any;\n return function (...args: any[]) {\n if (!hasBeenCalled) {\n hasBeenCalled = true;\n //@ts-ignore\n result = func.apply(this, args);\n }\n return result;\n };\n}\n","import { once } from \"../../utils/once\";\nimport { rowGetValue } from \"./cell\";\nimport { ColumnSettings, TableSortDirection } from \"./table\";\n\n/**\n * Creates a chain of sort functions so you can perform multi column sorting.\n */\nexport const createSortChain = <T>(sorts: ColumnSettings<T>[]) => {\n return sorts.map(({ key, sortDirection, compareFn }) => {\n return (a: T, b: T) => {\n if (!key) {\n return undefined\n }\n let v1 = rowGetValue(a as Record<string, any>, key)\n let v2 = rowGetValue(b as Record<string, any>, key)\n if (compareFn) {\n return compareFn(a, b)\n }\n if (typeof v1 === \"number\" || typeof v1 === \"bigint\" || typeof v1 === \"boolean\") {\n //@ts-ignore\n let sort: number = v1 - v2 as unknown as number\n if (sortDirection === TableSortDirection.descending) {\n sort = sort * -1\n }\n return sort\n } else if (typeof v1 === \"string\") {\n return v1.localeCompare(v2) * (sortDirection === TableSortDirection.descending ? -1 : 1)\n }\n once(() => { console.error(`Unable to sort type ${typeof v1}`) })\n return undefined\n\n }\n })\n}","import { html, LitElement, PropertyValues, render, TemplateResult } from 'lit';\nimport \"../pagination\";\nimport \"./header\"\nimport \"./body\"\nimport { customElement, property, state, } from 'lit/decorators.js';\nimport { HTMLElementTagWithEvents, ReactElementWithPropsAndEvents } from '../types';\nimport \"./virtualBody\"\nimport \"./table.css\"\nexport const TableElementTag = \"spectric-table\"\nimport { spreadProps } from '../../utils/spread';\nimport { PaginationChangeProps, PaginationProps } from '../pagination';\nimport { FilterEvent } from './cell';\nimport { createSortChain } from './sorting';\n\nexport type { TableProps, TableEvents }\n\nexport type DomRenderable = HTMLElement | TemplateResult | string | number | null\nexport enum TableSelectOptions {\n multi = \"multi\",\n single = \"single\",\n none = \"none\"\n}\n\nexport enum TableSortOption {\n multi = \"multi\",\n single = \"single\",\n}\nexport type TableSortOptionTypes = `${TableSortOption}`\nexport enum TableSortDirection {\n ascending = \"ascending\",\n descending = \"descending\",\n none = \"none\"\n}\nexport type TableSortDirectionTypes = `${TableSortDirection}`\nexport type ColumnSettings<T> = {\n width?: number\n /**\n * Enabled/disables resizing by dragging column header Default true\n */\n allowResize?: boolean\n whiteSpace?: \"nowrap\";\n hidden?: boolean\n sortable?: boolean\n sortDirection?: TableSortDirectionTypes\n filterable?: boolean\n title?: DomRenderable\n /**\n * Key to used for getting data from an object for a cell \n */\n key?: string\n /**\n * Render function to render a table cell for displaying custom html\n */\n render?: (row: T, index: number, table: SpectricTableElement<T>) => DomRenderable\n /**\n * Custom comparator function for sorting\n */\n compareFn?: ((a: T, b: T) => number) | undefined\n}\nexport type TableSelectOptionsTypes = `${TableSelectOptions}`\nexport interface TableDataOptions<T> {\n pagination?: PaginationProps\n columns: ColumnSettings<T>[]\n sortOrder?: string[]\n}\ninterface TableProps<T> extends TableDataOptions<T> {\n data: T[]\n select: TableSelectOptionsTypes\n sort?: TableSortOptionTypes\n rowHeight?: number\n}\n\nexport type DomEvent<T> = Event & {\n target: T\n}\n/**\n * React example\n * <iframe width=\"100%\" height=\"400px\" src=\"https://stackblitz.com/edit/react-ts-2ue7azag?ctl=1&embed=1&file=App.tsx&hideExplorer=1&hideNavigation=1\"/>\n *\n */\n@customElement(TableElementTag)\nexport class SpectricTableElement<T = any> extends LitElement implements TableProps<T> {\n @property({ type: Array, attribute: false })\n data: T[] = [];\n @property({ type: Object, attribute: false })\n pagination?: PaginationProps;\n @property({ attribute: false })\n columns: ColumnSettings<T>[] = [];\n @property({ type: String, reflect: true })\n select: TableSelectOptionsTypes = TableSelectOptions.none;\n @property({ type: String, reflect: true })\n sort: TableSortOptionTypes = TableSortOption.single;\n\n @property({ type: Array, reflect: false })\n sortOrder: string[] = [];\n /**\n * Needed for virtualization \n */\n @property({ type: Number, reflect: true })\n rowHeight: number = 25;\n /**\n * Needed for virtualization \n */\n @property({ type: Number, reflect: true })\n fontSize: number = 16;\n\n static getDefaultDataSorterAndPaginatior<T>(data: T[]) {\n return (props: TableDataOptions<T>) => {\n //let sorts = props.columns.filter(column => column.sortable && column.sortDirection && column.sortDirection !== TableSortDirection.none)\n let sorts = (props.sortOrder || []).map(key => props.columns.find(col => col.key === key) as ColumnSettings<T>)\n let rows = [...data] // Need to copy the array to prevent mutating the ordering of the original data\n if (sorts.length) {\n let sortChain = createSortChain(sorts)\n rows.sort((a, b) => {\n for (let sort of sortChain) {\n let result = sort(a, b)\n if (result) {\n return result\n }\n }\n return 0\n })\n }\n\n if (!props.pagination) {\n return rows\n }\n let { page, pageSize } = props.pagination\n if (!page || !pageSize) {\n return rows\n }\n return !props.pagination ? rows : rows.slice((page - 1) * pageSize, (page) * pageSize)\n }\n }\n\n private _handlePaginationChange = (e: CustomEvent<PaginationChangeProps>) => {\n if (this.pagination) {\n let pagination = { ...this.pagination, ...e.detail }\n\n let { totalItems, page, pageSize } = pagination\n if (totalItems && page && pageSize && ((page - 1) * pageSize) > totalItems) {\n pagination.page = 1\n }\n this.pagination = pagination\n }\n this.dispatchEvent(new CustomEvent<PaginationChangeProps>(\"paginationChange\", { detail: e.detail }))\n this._emitChange()\n };\n private _handleSortChange = (e: CustomEvent<ColumnSettings<T>>) => {\n let columnSetting = e.detail\n let column = this.columns.find(col => col.key == columnSetting.key)\n if (!column || column.key === undefined) {\n console.warn(\"Unable to find sort column\")\n return\n }\n if (this.sort == TableSortOption.single) {\n //Single column sort so we reset the sort direction for all columns\n this.columns.forEach(col => {\n col.sortDirection = TableSortDirection.none\n })\n this.sortOrder = []\n }\n column.sortDirection = columnSetting.sortDirection;\n if (!column.sortDirection || column.sortDirection === \"none\") {\n let index = this.sortOrder.findIndex(col => col === column.key)\n if (index !== -1) {\n this.sortOrder.splice(index, 1)\n }\n } else {\n let index = this.sortOrder.findIndex(col => col === column.key)\n if (index === -1) {\n this.sortOrder = [...this.sortOrder, column.key]\n }\n }\n this.columns = [...this.columns]\n this._emitChange()\n }\n private _handleColumnResize = (e: CustomEvent<ColumnSettings<T>>) => {\n let columnSetting = e.detail\n let index = this.columns.findIndex(col => col.key == columnSetting.key)\n this.columns[index] = { ...this.columns[index] }\n this.columns = [...this.columns]\n this._emitChange()\n }\n\n private _emitChange = () => {\n let { pagination, columns, sortOrder } = this\n this.dispatchEvent(new CustomEvent<TableDataOptions<T>>(\"change\", { detail: { pagination, columns, sortOrder } }))\n }\n //@ts-ignore\n private __DO_NOT_USE_filter = () => {\n //This is only here to auto document events that bubble up from lower components\n this.dispatchEvent(new CustomEvent<FilterEvent<T>>(\"filter\"))\n this.dispatchEvent(new CustomEvent<ColumnSettings<T>>(\"sortChange\"))\n }\n @state()\n private selected: T[] = [];\n protected createRenderRoot(): HTMLElement | DocumentFragment {\n return this\n }\n deselectAll() {\n this.selected = []\n this.dispatchEvent(new CustomEvent(\"selected\", { detail: this.selected }))\n }\n selectAll() {\n this.selected = [...this.data]\n this.dispatchEvent(new CustomEvent(\"selected\", { detail: this.selected }))\n }\n _handleSelectAllChange = (e: DomEvent<HTMLInputElement>) => {\n e.stopPropagation()\n if (e.target.checked) {\n this.selectAll()\n } else {\n this.deselectAll()\n }\n }\n protected update(changedProperties: PropertyValues): void {\n if (changedProperties.has(\"select\")) {\n if (this.select === \"single\" && this.selected.length > 1) {\n this.selected = [this.selected[0]]\n this.dispatchEvent(new CustomEvent(\"selected\", { detail: [...this.selected] }))\n }\n }\n super.update(changedProperties)\n }\n protected render(): unknown {\n let columns = this.columns.filter(column => !column.hidden)\n if (this.select !== TableSelectOptions.none) {\n columns.unshift({\n title: this.select === \"multi\" ? html`<spectric-input variant=\"checkbox\" @change=${this._handleSelectAllChange} .helperText=${\"Select All\"}></spectric-input>` : null,\n render: (row) => {\n let container = document.createElement(\"div\")\n let checked = this.selected.includes(row)\n let template = html`<spectric-input variant=\"checkbox\" class=\"table-checkbox-${this.select}\" ${spreadProps({ checked })} @change=${(e: DomEvent<HTMLInputElement>) => {\n e.stopPropagation()\n let index = this.selected.findIndex(value => value === row)\n if (e.target.checked && index !== -1) {\n return\n }\n else if (!e.target.checked && index === -1) {\n return\n }\n else if (!e.target.checked && index !== -1) {\n this.selected.splice(index, 1)\n }\n if (e.target.checked) {\n if (this.select === \"single\") {\n this.selected = []\n }\n this.selected.push(row)\n }\n this.dispatchEvent(new CustomEvent(\"selected\", { detail: [...this.selected] }))\n }}></spectric-input>`\n render(template, container)\n return template\n }\n })\n }\n const tdBorderAndPadding = 4;\n let rowHeight = this.rowHeight - tdBorderAndPadding;\n if (rowHeight < this.fontSize + tdBorderAndPadding) {\n rowHeight = this.fontSize + tdBorderAndPadding\n }\n return html`\n <div class=\"table-wrapper\" style=\"--rowHeight:${rowHeight}px;--fontSize:${this.fontSize}px;--lineClamp:${Math.floor(rowHeight / this.fontSize)}\">\n <div role=\"table\">\n <spectric-table-header .columns=${columns} @sortChange=${this._handleSortChange} @columnResize=${this._handleColumnResize}></spectric-table-header>\n <spectric-table-virtual-body .columns=${columns} .data=${this.data} .table=${this} .rowHeight=${rowHeight}></spectric-table-virtual-body>\n </div>\n </div>\n ${this.pagination ? html`<spectric-pagination ${spreadProps(this.pagination)} @change=${this._handlePaginationChange}></spectric-pagination>` : null}\n `;\n }\n}\n\ninterface TableEvents {\n 'change': (event: CustomEvent<TableDataOptions<any>>) => void;\n 'paginationChange': (event: CustomEvent<PaginationChangeProps>) => void;\n 'filter': (event: CustomEvent<FilterEvent<any>>) => void;\n 'sortChange': (event: CustomEvent<ColumnSettings<any>>) => void;\n 'selected': (event: CustomEvent<any[]>) => void;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [TableElementTag]: HTMLElementTagWithEvents<SpectricTableElement<any>, TableEvents>\n\n }\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link TableElement}\n */\n [TableElementTag]: ReactElementWithPropsAndEvents<SpectricTableElement<any>, TableProps<any>, TableEvents>;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link TableElement}\n */\n [TableElementTag]: ReactElementWithPropsAndEvents<SpectricTableElement<any>, TableProps<any>, TableEvents>\n }\n }\n }\n}\n","\nimport { customElement, property } from 'lit/decorators.js';\nimport \"./tooltip.css\"\nexport const PopoverElementTag = \"spectric-popover\"\nimport { css, CSSResultGroup, html, render } from \"lit-element\";\nimport { DomRenderable } from \"../table\";\nimport { DisposableElement } from '../../classes/DisposibleElement';\nexport type { TooltipProps, TooltipEvents }\nexport enum TooltipPostions {\n top = \"top\",\n bottom = \"bottom\",\n left = \"left\",\n right = \"right\",\n mouse = \"mouse\"\n}\n\nexport type TooltipPostionsTypes = `${TooltipPostions}`\ninterface TooltipProps {\n /**\n * How long you need to hover before the tooltip displays\n */\n delay?: number;\n /**\n * How long the fade in animation should run\n */\n animationDuration?: number;\n /**\n * Tooltip contents\n */\n text: DomRenderable\n /**\n * Where to anchor the tooltip\n */\n position?: TooltipPostionsTypes\n /**\n * Sets a max width for the contents you can disable this by setting to 0 or -1\n */\n maxWidth?: number\n /**\n * Container the tool tip will be attached to. \n */\n portalTarget?: HTMLElement\n\n /** \n * The element that triggers the tooltip. This is used for special cases like in the shadow dom if you want to target a host element instead of the immediate parent element\n */\n triggerTarget?: HTMLElement\n}\n\n/**\n * Spectric tooltip will add a tooltip to any container \n */\n@customElement(PopoverElementTag)\nexport class PopoverElement extends DisposableElement implements TooltipProps {\n @property({ type: Number, reflect: true })\n delay: number = 100;\n @property({ type: Number, reflect: true })\n animationDuration: number = 0;\n @property({ type: String, reflect: false })\n text: DomRenderable = \"\";\n @property({ type: String, reflect: true })\n position: TooltipPostionsTypes = \"right\";\n @property({ type: Number, reflect: true })\n maxWidth?: number = 300;\n protected portalElement!: HTMLDivElement\n protected mouseLocation?: { left: number; top: number; };\n static styles?: CSSResultGroup | undefined = css`:host{max-height: 0px;\n max-width: 0px;\n display: none;\n pointer-events:none;}`;\n @property({ attribute: false })\n portalTarget: HTMLElement = document.body\n protected timer?: number;\n protected open: boolean = false;\n protected mouseframe?: number;\n /**\n * @default parentElement\n */\n @property({ attribute: false })\n triggerTarget!: HTMLElement;\n protected get target() {\n return this.triggerTarget || this.parentElement\n }\n constructor() {\n super()\n /**\n * Public method to trigger showing the tooltip programatically \n */\n this.showPopover = this.showPopover.bind(this)\n this.hidePopover = this.hidePopover.bind(this)\n this.addDisposableListener(() => this.target, \"mousemove\", this._getMousePosition)\n }\n connectedCallback(): void {\n super.connectedCallback()\n this.portalElement = document.createElement(\"div\")\n this.portalElement.className = \"spectric-tooltip-portal\"\n console.log(\"connected\")\n }\n disconnectedCallback(): void {\n super.disconnectedCallback();\n this.portalElement.remove()\n //@ts-ignore\n this.portalElement = undefined\n }\n protected _getMousePosition = (ev: MouseEvent) => {\n this.mouseLocation = {\n left: ev.clientX,\n top: ev.clientY\n }\n if (this.position == \"mouse\" && this.open && !this.mouseframe) {\n this.mouseframe = requestAnimationFrame(() => this.positionTooltip())\n }\n }\n /**\n * Public method to trigger hide the tooltip programatically \n */\n public hidePopover() {\n if (this.timer) {\n clearTimeout(this.timer)\n }\n this.open = false\n this.portalElement.remove()\n }\n /**\n * Public method to trigger showing the tooltip programatically \n */\n public async showPopover() {\n if (this.timer) {\n clearTimeout(this.timer)\n }\n await new Promise(resolve => {\n this.timer = window.setTimeout(resolve, this.delay)\n })\n this.portalElement.className = `spectric-popover-portal ${this.position}`\n const tooltip = html`<div class=\"tooltip-container\">\n <span class=\"tooltip-caret\"></span>\n <div class=\"tooltip-content\">${this.text}</div>\n </div>`\n render(tooltip, this.portalElement)\n //with the delay it is possible that the triggering element was removed or hidden lets check that it is visible\n if (!this.target || !this.target.checkVisibility()) {\n return\n }\n //We need to append our tooltip and let the css updates apply before we can take measurements\n this.portalTarget.appendChild(this.portalElement)\n this.open = true\n requestAnimationFrame(this.positionTooltip)\n }\n protected applyStyle = (style: Record<string, string>) => {\n Object.entries(style).forEach(([prop, value]) => {\n this.portalElement.style.setProperty(prop, value)\n })\n }\n protected positionTooltip = () => {\n if (!this.target) {\n //We got detached before the animation frame completed\n return\n }\n //Since we are attaching to a body we need to send the correct styles from the target portion of the dom to the portal element\n let computedStyle = getComputedStyle(this)\n let styles = {\n \"--spectric-primary\": computedStyle.getPropertyValue(\"--spectric-primary\"),\n \"--spectric-background-inverse\": computedStyle.getPropertyValue(\"--spectric-background-inverse\"),\n \"--spectric-background-hover\": computedStyle.getPropertyValue(\"--spectric-background-hover\"),\n \"--spectric-text-on-color\": computedStyle.getPropertyValue(\"--spectric-text-on-color\"),\n \"--spectric-border-radius\": computedStyle.getPropertyValue(\"--spectric-border-radius\"),\n }\n const bounds = this.target.getBoundingClientRect()\n const portalBounds = this.portalElement.getBoundingClientRect()\n if (this.target !== document.body) {\n if (this.maxWidth && this.maxWidth > 0) {\n portalBounds.width = Math.min(portalBounds.width, this.maxWidth)\n }\n }\n let location: {\n left: string;\n top: string;\n };\n if (this.position === \"mouse\" && this.mouseLocation) {\n this.mouseframe = undefined\n location = { left: this.mouseLocation.left + 10 + \"px\", top: this.mouseLocation.top - (portalBounds.height / 2) + \"px\" }\n } else if (this.position === \"top\") {\n location = {\n top: bounds.top - portalBounds.height + \"px\",\n left: (bounds.left + (bounds.width / 2)) - (portalBounds.width / 2) + \"px\"\n }\n } else if (this.position === \"bottom\") {\n location = {\n top: bounds.bottom + \"px\",\n left: (bounds.left + (bounds.width / 2)) - (portalBounds.width / 2) + \"px\"\n }\n } else if (this.position === \"left\") {\n location = {\n top: Math.max(0, bounds.top + bounds.height / 2 - portalBounds.height / 2) + \"px\",\n left: bounds.left - (portalBounds.width) + \"px\"\n }\n } else if (this.position === \"right\") {\n location = {\n top: Math.max(0, bounds.top + bounds.height / 2 - portalBounds.height / 2) + \"px\",\n left: bounds.right + \"px\"\n }\n } else {\n location = { left: \"0px\", top: \"0px\" };\n console.error(\"Unknown position... Maybe we sould implement auto?\")\n }\n this.applyStyle({ ...styles, ...location })\n if (this.position !== \"mouse\") {\n this.portalElement.animate({ opacity: [0, 1] }, { duration: this.animationDuration })\n }\n }\n protected render() {\n //We don't need to render anything here this is just a placeholder element the content is displayed in a portal attached to the body.\n // See showTooltip for the real rendering\n return html`<!-- ToolTip -->`\n }\n}\n\ninterface TooltipEvents {\n //'open': (event: CustomEvent<{ pagination: PaginationChangeProps }>) => void;\n //'filter': (event: CustomEvent<FilterEvent>) => void;\n}\n","\nimport { customElement, property } from 'lit/decorators.js';\nimport { HTMLElementTagWithEvents, ReactElementWithPropsAndEvents } from '../types';\nimport \"./tooltip.css\"\nexport const TooltipElementTag = \"spectric-tooltip\"\nimport { css, CSSResultGroup, html } from \"lit-element\";\nimport { DomRenderable } from \"../table\";\nimport { PopoverElement } from './popover';\nexport type { TooltipProps, TooltipEvents }\nexport enum TooltipPostions {\n top = \"top\",\n bottom = \"bottom\",\n left = \"left\",\n right = \"right\",\n mouse = \"mouse\"\n}\n\nexport type TooltipPostionsTypes = `${TooltipPostions}`\ninterface TooltipProps {\n /**\n * How long you need to hover before the tooltip displays\n */\n delay?: number;\n /**\n * How long the fade in animation should run\n */\n animationDuration?: number;\n /**\n * Tooltip contents\n */\n text: DomRenderable\n /**\n * Where to anchor the tooltip\n */\n position?: TooltipPostionsTypes\n /**\n * Sets a max width for the contents you can disable this by setting to 0 or -1\n */\n maxWidth?: number\n /**\n * Container the tool tip will be attached to. \n */\n portalTarget?: HTMLElement\n\n /** \n * The element that triggers the tooltip. This is used for special cases like in the shadow dom if you want to target a host element instead of the immediate parent element\n */\n triggerTarget?: HTMLElement\n}\n\n/**\n * Spectric tooltip will add a tooltip to any container \n */\n@customElement(TooltipElementTag)\nexport class TooltipElement extends PopoverElement implements TooltipProps {\n @property({ type: Number, reflect: true })\n delay: number = 100;\n @property({ type: Number, reflect: true })\n animationDuration: number = 0;\n @property({ type: String, reflect: false })\n text: DomRenderable = \"\";\n @property({ type: String, reflect: true })\n position: TooltipPostionsTypes = \"right\";\n @property({ type: Number, reflect: true })\n maxWidth?: number = 300;\n portalElement!: HTMLDivElement\n mouseLocation?: { left: number; top: number; };\n static styles?: CSSResultGroup | undefined = css`:host{max-height: 0px;\n max-width: 0px;\n display: none;\n pointer-events:none;}`;\n @property({ attribute: false })\n portalTarget: HTMLElement = document.body\n timer?: number;\n open: boolean = false;\n mouseframe?: number;\n /**\n * @default parentElement\n */\n @property({ attribute: false })\n triggerTarget!: HTMLElement;\n constructor() {\n super()\n this.addDisposableListener(() => this.target, \"mouseover\", this.showToolTip)\n this.addDisposableListener(() => this.target, \"mouseleave\", this.hidePopover)\n }\n\n /**\n * Public method to trigger showing the tooltip programatically \n */\n public async showToolTip() {\n await super.showPopover()\n this.portalElement.classList.add(\"spectric-tooltip-portal\")\n }\n\n protected render() {\n //We don't need to render anything here this is just a placeholder element the content is displayed in a portal attached to the body.\n // See showTooltip for the real rendering\n return html`<!-- ToolTip -->`\n }\n}\n\n\ninterface TooltipEvents {\n //'open': (event: CustomEvent<{ pagination: PaginationChangeProps }>) => void;\n //'filter': (event: CustomEvent<FilterEvent>) => void;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [TooltipElementTag]: HTMLElementTagWithEvents<TooltipElement, TooltipEvents>\n\n }\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link TooltipElement}\n */\n [TooltipElementTag]: ReactElementWithPropsAndEvents<TooltipElement, TooltipProps, TooltipEvents>;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link TooltipElement}\n */\n [TooltipElementTag]: ReactElementWithPropsAndEvents<TooltipElement, TooltipProps, TooltipEvents>\n }\n }\n }\n}\n","import { html, LitElement, PropertyValues, TemplateResult } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { HTMLElementTagWithEvents, ReactElementWithPropsAndEvents } from '../types';\nimport { PopoverElement } from '../tooltip/popover';\nimport { createRef, ref } from 'lit/directives/ref.js';\nimport { DomEvent, } from '../table';\nimport { SpectricInput } from '../input';\nimport \"./ColorPicker.css\"\nexport interface ColorPickerProps {\n /**Color in hex*/\n value?: string,\n showAlpha?: boolean\n}\n\n@customElement('spectric-colorpicker')\nexport class SpectricColorPicker extends LitElement implements ColorPickerProps {\n @property({ type: String, reflect: true })\n value = \"#FF0000FF\"\n @property({ type: Boolean, reflect: true })\n showAlpha = true\n @state()\n private hue: number = 0;\n @state()\n private alpha: number = 1;\n @state()\n private saturation: number = 1;\n @state()\n private lightness: number = 1;\n private canvas = createRef<HTMLCanvasElement>()\n private original?: string;\n /**is mouse down on saturation/light canvas? */\n private sldown: boolean = false;\n\n protected createRenderRoot(): HTMLElement | DocumentFragment {\n return this\n }\n\n protected update(changedProperties: PropertyValues): void {\n if (changedProperties.has(\"value\")) {\n let { h, s, l, a } = hexToHsl(this.value)\n this.hue = h\n this.saturation = s;\n this.lightness = l;\n this.alpha = a\n this.renderHueSaturationGrid()\n }\n super.update(changedProperties)\n }\n private renderHueSaturationGrid() {\n console.log(\"canvas render\")\n if (!this.canvas.value) {\n return\n }\n let canvas: HTMLCanvasElement = this.canvas.value;\n let ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n return\n }\n let xpix = this.canvas.value.width / 100\n let ypix = this.canvas.value.height / 100\n let x = 0,\n y = 0; //pixel size\n for (let m of hslGen(this.hue)) {\n ctx.fillStyle = m;\n ctx.fillRect(x, y, xpix, ypix); //Need to made this a 2d saturation, light graph\n x += xpix;\n x = x % (xpix * 101);\n if (!x)\n y += ypix;\n }\n }\n _handleSaturationLightnessClick = (e: PointerEvent) => {\n if (!this.canvas.value) {\n return\n }\n let { offsetX, offsetY } = e\n this.saturation = offsetX / this.canvas.value.width\n this.lightness = (this.canvas.value.height - offsetY) / this.canvas.value.height\n this.updateValue()\n }\n _handleHueChange = (e: DomEvent<SpectricInput>) => {\n this.hue = (parseInt(String(e.target.value)) / 100) * 360\n e.target.style.setProperty(\"accent-color\", `hsl(${this.hue}deg 100% 50%)`)\n this.renderHueSaturationGrid()\n this.updateValue()\n }\n private updateValue() {\n this.value = hslToHex(this.hue, this.saturation * 100, this.lightness * 100) + (Math.round(this.alpha * 255).toString(16).padStart(2, \"0\"))\n }\n _handleAlphaChange = (e: DomEvent<SpectricInput>) => {\n this.alpha = parseInt(String(e.target.value)) / 100\n console.log(this.alpha, e)\n this.updateValue()\n }\n _handleApply = () => {\n console.log(this.hue, this.saturation, this.lightness, this.alpha)\n this.updateValue()\n console.log(this.value)\n this.querySelector<PopoverElement>(\"spectric-popover\")?.hidePopover()\n }\n _cancel = () => {\n if (this.original) {\n this.value = this.original\n }\n this.querySelector<PopoverElement>(\"spectric-popover\")?.hidePopover()\n }\n _openPopover = async () => {\n this.original = this.value\n this.querySelector<PopoverElement>(\"spectric-popover\")?.showPopover()\n while (!this.canvas.value) {\n await new Promise(resolve => setTimeout(resolve, 100))\n }\n this.renderHueSaturationGrid()\n }\n protected getPopover(): TemplateResult {\n return html`\n <spectric-input label=\"Hue\" class=\"hue-gradient\" variant=\"range\" .value=${this.hue || 0} style=\"accent-color:hsl(${this.hue}deg 100% 50%)\" @change=${this._handleHueChange}></spectric-input>\n <canvas ${ref(this.canvas)} width=200 height=100 class=\"saturation-lightness-grid\" @click=${this._handleSaturationLightnessClick}\n @mousedown=${() => { this.sldown = true }} \n @mouseup=${() => this.sldown = false}\n @mousemove=${(e: PointerEvent) => { if (this.sldown) { this._handleSaturationLightnessClick(e) } }}\n ></canvas>\n <spectric-input class=\"alpha-gradient\" ?hidden=${!this.showAlpha} label=\"Opacity\" variant=\"range\" .value=${(this.alpha || 1) * 100} @change=${this._handleAlphaChange}></spectric-input>\n <div class=\"color-picker-footer\">\n <spectric-button @click=${this._handleApply}>Apply</spectric-button>\n <spectric-button variant=\"secondary\" @click=${this._cancel}>Cancel</spectric-button>\n </div>\n `\n }\n\n protected render(): unknown {\n return html`\n <spectric-button variant=\"text\" @click=${this._openPopover}>\n <spectric-popover .text=${this.getPopover()} icon variant=\"text\"></spectric-popover>\n <div style=\"width:15px;height:15px;background-color:${this.value}\"></div>\n </spectric-button>\n `;\n }\n}\n\nfunction* hslGen(hue: number) {\n for (let l = 100; l >= 0; l--) {\n for (let s = 0; s <= 100; s++) {\n yield `hsl(${hue}, ${s}%, ${l}%)`;\n }\n }\n}\nfunction hslToHex(h: number, s: number, l: number) {\n l /= 100;\n const a = s * Math.min(l, 1 - l) / 100;\n const f = (n: number) => {\n const k = (n + h / 30) % 12;\n const color = l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return Math.round(255 * color).toString(16).padStart(2, '0'); // convert to Hex and prefix \"0\" if needed\n };\n return `#${f(0)}${f(8)}${f(4)}`;\n}\nfunction hexToHsl(hex: string) {\n // Convert hex to RGB\n let r = 0, g = 0, b = 0, a = 255;\n if (hex.length === 4 || hex.length === 5) { // Handle shorthand hex codes like #F0C\n r = parseInt(hex[1] + hex[1], 16);\n g = parseInt(hex[2] + hex[2], 16);\n b = parseInt(hex[3] + hex[3], 16);\n if (hex.length === 5) {\n a = parseInt(hex[4] + hex[4], 16);\n }\n } else if (hex.length === 7 || hex.length === 9) { // Handle full hex codes like #FF00CC\n r = parseInt(hex.substring(1, 3), 16);\n g = parseInt(hex.substring(3, 5), 16);\n b = parseInt(hex.substring(5, 7), 16);\n if (hex.length === 9) {\n a = parseInt(hex.substring(7, 9), 16);\n }\n }\n\n // Normalize RGB values to a range of 0-1\n r /= 255;\n g /= 255;\n b /= 255;\n a /= 255\n // Find min and max values among R, G, B\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n\n let h = 0, s = 0, l = (max + min) / 2;\n\n if (max === min) {\n // Achromatic (grayscale)\n h = 0;\n s = 0;\n } else {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n\n // Convert Hue to degrees\n h = Math.round(h * 360);\n\n //leave sla as 0-1\n return { h, s, l, a };\n}\nexport interface ColorPickerEventMap {\n 'change': (event: CustomEvent<ColorPickerProps>) => void\n}\n\ndeclare global {\n\n interface HTMLElementTagNameMap {\n \"spectric-colorpicker\": HTMLElementTagWithEvents<SpectricColorPicker, ColorPickerEventMap>\n }\n\n namespace JSX {\n interface IntrinsicElements {\n /**\n * {@link SpectricColorPicker}\n */\n \"spectric-colorpicker\": ReactElementWithPropsAndEvents<SpectricColorPicker, ColorPickerProps, ColorPickerEventMap>;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * {@link SpectricColorPicker}\n */\n \"spectric-colorpicker\": ReactElementWithPropsAndEvents<SpectricColorPicker, ColorPickerProps, ColorPickerEventMap>;\n }\n }\n }\n}","export * from \"./components\"\nexport * from \"./classes\"\nexport * from \"./utils\"\nimport * as classes from \"./classes\"\nimport * as components from \"./components\"\nimport * as utils from \"./utils\"\nconst module = { ...classes, ...components, ...utils }\nexport default module"],"names":["t","e","s","o","n$6","r","n","i","S","c","h","a","l","p","d","u","f","y","b","_a","v","_","m","g","$","x","T","E","A","C","P","V","N","H","I","L","k","_b","R","z","M","Z","j","B","r$5","i$1","style$2","css","listeners","getListeners","DomListener","node","type","handler","options","targetNode","DisposableElement","LitElement","target","event","disposable","ButtonSizes","ButtonVariants","MODES","SpectricButton","mode","html","styleMap","exports","style","__decorateClass","property","customElement","h$1","BitArray","buf","obj","prop","idx","off","val","array","start","len","stop","sub","debounce","func","wait","timeout","args","debounceAnimation","animationFrame","events","DEFAULT_SIZE","SCROLLBAR_SIZE","BitDisplayCanvas","createRef","cssStyle","scale","observer","lastPosition","eventName","canvas","rect","position","bitIndex","bitEventName","changedProperties","repaintProps","frameWidth","bitArray","width","height","context","pxPerBit","div","ref","queryAsync","styles$2","Header","styles","DEFAULT_STYLE","SpectricBanner","bannerId","text","headerStyle","dismissable","styles$1","SpreadPropsDirective","AsyncDirective","_spreadData","nothing","part","spreadData","data","element","key","value","prevData","spreadProps","directive","ClassificationVariants","ClassificationStyles","SpectricPage","classificationText","header","ifDefined","InputVariants","SpectricInput","input","oldValue","end","direction","ifNonEmpty","query","eventOptions","endOfInputText","grammarRuleTranslations","DQLSyntaxError","error","expression","message","translatedExpectationText","expected","foundInput","fullMessage","buildNode","toOpenSearchQuery","SyntaxError","parse","peg$subclass","child","parent","ctor","peg$SyntaxError","found","location","peg$parse","peg$FAILED","peg$startRuleFunctions","peg$parsestart","peg$parseLiteral","peg$startRuleFunction","peg$c0","trailing","nodeTypes","peg$c1","errorOnLuceneSyntax","peg$c2","left","right","cursor","buildFunctionNode","peg$c3","peg$c4","peg$c5","peg$c6","peg$c7","peg$c8","peg$c9","peg$c10","peg$c11","peg$c12","peg$c13","peg$c14","peg$c15","peg$c16","field","peg$c17","peg$c18","operator","range","buildNamedArgNode","peg$c19","partial","peg$c20","fieldName","buildLiteralNode","peg$c21","peg$c22","partialLeft","partialRight","peg$c23","peg$c24","peg$c25","peg$c26","isPhrase","peg$c27","allowLeadingWildcards","peg$c28","peg$c29","peg$c30","peg$c31","peg$c32","peg$c33","peg$c34","peg$c35","peg$c36","peg$c37","peg$c38","peg$c39","peg$c40","prefix","suffix","peg$c41","chars","peg$c42","peg$c43","peg$c44","peg$c45","peg$c46","char","peg$c47","peg$c48","peg$c49","sequence","wildcardSymbol","buildWildcardNode","peg$c50","peg$c51","peg$c52","peg$c53","peg$c54","peg$c55","peg$c56","peg$c57","peg$c58","peg$c59","peg$c60","peg$c61","peg$c62","peg$c63","keyword","peg$c64","peg$c65","peg$c66","peg$c67","peg$c68","peg$c69","peg$c70","peg$c71","peg$c72","peg$c73","peg$c74","peg$c75","peg$c76","peg$c77","peg$c78","peg$c79","peg$c80","peg$c81","parseCursor","peg$c82","peg$c83","peg$c84","cursorSymbol","peg$c85","peg$c86","peg$c87","peg$c88","peg$c89","peg$c90","peg$c91","peg$c92","peg$c93","peg$c94","peg$c95","peg$c96","peg$c97","peg$c98","peg$c99","peg$c100","peg$c101","peg$c102","peg$c103","peg$c104","peg$c105","peg$c106","peg$c107","peg$c108","peg$c109","peg$c110","peg$c111","peg$c112","peg$c113","peg$c114","peg$c115","peg$c116","peg$c117","peg$c118","peg$c119","peg$c120","peg$c121","peg$c122","peg$c123","peg$c124","peg$c125","peg$c126","peg$c127","peg$currPos","peg$savedPos","peg$posDetailsCache","peg$maxFailPos","peg$maxFailExpected","peg$silentFails","peg$result","peg$computeLocation","peg$buildException","peg$computePosDetails","pos","details","ch","startPos","endPos","startPosDetails","endPosDetails","peg$fail","cleanupExpected","buildMessage","stringEscape","hex","expectedDescs","expectedDesc","foundDesc","s0","s1","s2","s3","peg$parseSpace","peg$parseOrQuery","peg$parseOptionalSpace","peg$parseLuceneQuery","peg$parseAndQuery","peg$parseOr","peg$parseNotQuery","peg$parseAnd","peg$parseNot","peg$parseSubQuery","s4","s5","peg$parseNestedQuery","s6","s7","s8","s9","peg$parseField","peg$parseExpression","peg$parseFieldRangeExpression","peg$parseFieldValueExpression","peg$parseValueExpression","peg$parseRangeOperator","peg$parseListOfValues","peg$parseValue","peg$parseOrListOfValues","peg$parseAndListOfValues","peg$parseNotListOfValues","peg$parseQuotedString","peg$parseUnquotedLiteral","peg$parseLuceneOr","peg$parseLuceneAnd","peg$parseLuceneNot","peg$parseQuotedCharacter","peg$parseCursor","peg$parseEscapedWhitespace","peg$parseUnquotedCharacter","peg$parseEscapedSpecialCharacter","peg$parseEscapedKeyword","peg$parseWildcard","peg$parseSpecialCharacter","peg$parseKeyword","peg$parseLuceneFieldQuery","peg$parseLuceneValue","peg$parseLuceneExists","peg$parseLuceneLiteral","peg$parseLuceneRange","peg$parseLuceneWildcard","peg$parseLuceneRegex","peg$parseLuceneFuzzy","peg$parseLuceneProximity","peg$parseLuceneBoost","peg$parseLuceneRangeStart","peg$parseLuceneTo","peg$parseLuceneRangeEnd","peg$parseLuceneUnquotedCharacter","peg$parseLuceneUnquotedLiteral","peg$parseEscapedLuceneSpecialCharacter","peg$parseLuceneSpecialCharacter","peg$parseLuceneKeyword","fromExpression","parseOptions","parseKuery","fromLiteralExpression","fromKueryExpression","doesKueryExpressionHaveLuceneSyntaxError","indexPattern","config","escapeRegExp","str","escapeQueryString","test","regex","toQueryStringQuery","hasLeadingWildcard","getFields","literal.toOpenSearchQuery","fld","wildcard.test","getTimeZoneFromSettings","dateFormatTZ","getFullFieldNameNode","rootNameNode","nestedPath","fullFieldNameNode","errors","acc","nestedPathFromField","buildNodeParams","fieldNode","ast.fromLiteralExpression","literal.buildNode","valueNode","isPhraseNode","fieldNameArg","valueArg","isPhraseArg","fullFieldNameArg","ast.toOpenSearchQuery","wildcard.toQueryStringQuery","fields","isExistsQuery","isAllFieldsQuery","accumulator","wrapWithNestedQuery","timeZoneParam","queryType","children","argument","pick","object","out","op","params","paramsToMap","namedArgs","extractArguments","queryParams","arg","unnamedArgOrder","index","path","stringPath","fullPath","functions","is","and","or","not","exists","nested","functionName","kueryFunction","buildNodeWithArgumentNodes","name","argumentNode","functionType","literal","wildcard","KQL_WILDCARD_SYMBOL","toCql","isValue","AST_TO_CQL","opsign","nodeType","toMongo","DialogElementTag","DialogElement","dialog","props","body","frag","render","_changedProperties","SupportedLanguages","NumberOperators","StringOperators","BoolOperators","DateOperators","labelValue","SpectricQuery","ast","suggestions","kuery.parse","output","kuery","completion","insertIndex","afterStart","active","suggestion","completions","fieldCompletions","fieldType","values","buttonRef","resolve","bottom","changed","option","state","even","odd","SpectricPanel","item","CSSPropsControls","dark","spectric","Themes","ThemeSelections","theme","SpectricThemeProvider","eventDetails","currentTheme","entry","Orientations","ElementTag","SplitView","percentage","orientation","invisible","min","max","useSavedState","id","offset","nodes","savedValue","PaginationElementTag","PaginationElement","page","pageSize","nextPage","nextPageDisabled","pageText","size","TableHeaderElementTag","TableHeaderElement","column","TableSortDirection","delta","before","cell","selection","classes","columnWidth","sortDirection","sortClass","resizeHandle","TableCellElementTag","TableCellElement","rowGetValue","span","spanBounds","divBounds","tooltip","filter","rendered","filterButtons","cache","w","TableBodyElementTag","TableBodyElement","repeat","row","col","TableVirtualBodyElement","scrollTop","totalRows","buffer","headerHeight","viewport","startIndex","rowsThatFit","endIndex","visibleRows","totalHeight","beforeHeight","visibleHeight","afterHeight","spacerElementBefore","spacerElementAfter","once","hasBeenCalled","result","createSortChain","sorts","compareFn","v1","v2","sort","TableElementTag","TableSelectOptions","TableSortOption","SpectricTableElement","pagination","totalItems","columnSetting","columns","sortOrder","rows","sortChain","container","checked","template","tdBorderAndPadding","rowHeight","PopoverElementTag","PopoverElement","ev","computedStyle","bounds","portalBounds","TooltipElementTag","TooltipPostions","TooltipElement","SpectricColorPicker","offsetX","offsetY","hexToHsl","ctx","xpix","ypix","hslGen","hslToHex","hue","color","module"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,7,8,9,10,11,12,13,16,17,18,26,62,64]}