@spectric/ui 0.0.25 → 0.0.27

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.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/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","../node_modules/@terraformer/wkt/dist/t-wkt.esm.js","../src/components/query_bar/querylanguage/kuery/functions/geospatial.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/query_bar/querylanguage/outputTypes/toHTML.ts","../src/components/dialog/dialog.css.ts","../src/components/panel.css.ts","../src/components/Panel.ts","../src/components/dialog/dialog.ts","../src/components/query_bar/dateTimePopup.ts","../src/components/query_bar/geojsonPopup.ts","../src/components/symbols.ts","../node_modules/lit-html/directives/unsafe-html.js","../src/components/query_bar/QueryBar.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/components/calendar/calendar.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 font-size:8px;\n line-height:8px\n}\n:host([icon][size=\"xxsmall\"]) .spectric-button{\n width: 16px;\n height: 16px;\n font-size: 10px;\n line-height: 10px;\n}\n:host([icon][size=\"xsmall\"]) .spectric-button{\n width: 28px;\n height: 28px;\n font-size: 16px;\n line-height: 16px;\n}\n:host([icon][size=\"small\"]) .spectric-button{\n width: 34px;\n height: 34px;\n font-size: 20px;\n line-height: 20px;\n\n}\n:host([icon][size=\"medium\"]) .spectric-button{\n width: 40px;\n height: 40px;\n font-size: 28px;\n line-height: 28px;\n}\n\n:host([icon][size=\"large\"]) .spectric-button{\n width: 48px;\n height: 48px;\n line-height: 32px;\n font-size: 32px;\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, PropertyValues, render } 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 this._onClick = this._onClick.bind(this)\n }\n\n //@eventOptions({ capture: true })\n private _onClick(e: MouseEvent) {\n if (e instanceof CustomEvent) {\n return\n }\n if (this.disabled) {\n e.preventDefault()\n e.stopImmediatePropagation()\n e.stopPropagation()\n return\n }\n\n }\n protected updated(_changedProperties: PropertyValues): void {\n if (this.tooltip && this.tooltip !== \"\") {\n render(html`<spectric-tooltip slot=\"tooltip\" .text=${this.tooltip} .position=${this.tooltipPosition || \"right\"}></spectric-tooltip>`, this)\n }\n }\n protected render(): unknown {\n const mode = MODES[this.variant] || 'spectric-button--primary';\n return html`\n <slot name=\"tooltip\"></slot>\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 {\n HTMLElementTagWithEvents,\n ReactElementWithPropsAndEvents,\n} 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\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(\n new CustomEvent<BannerProps>(\"bannerDismissed\", {\n detail: { bannerId, text, headerStyle, dismissable },\n ...options,\n })\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\">\n <slot name=\"text\">${this.text}</slot><slot></slot>\n </div>\n ${this.dismissable\n ? html`<spectric-button size=\"small\" @click=${this.onDismiss} icon\n >X</spectric-button\n >`\n : null}\n </header>\n `;\n }\n}\n\nexport interface BannerEventMap {\n bannerDismissed: (event: CustomEvent<BannerProps>) => void;\n}\n\ndeclare global {\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<\n SpectricBanner,\n BannerProps,\n BannerEventMap\n >;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * {@link SpectricBanner}\n */\n \"spectric-banner\": ReactElementWithPropsAndEvents<\n SpectricBanner,\n BannerProps,\n BannerEventMap\n >;\n }\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 {\n customElement,\n eventOptions,\n property,\n query,\n} 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\";\nimport { PopoverElement } from \"./tooltip/popover\";\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 datePopup = \"popup-date\",\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}\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 = false;\n size?: ButtonSizesTypes;\n files: FileList | null = null;\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(\n start: number,\n end: number,\n direction: \"forward\" | \"backward\" | \"none\" = \"none\"\n ) {\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 }: DomEvent<HTMLInputElement>) => {\n const input = target;\n if (this.variant == InputVariants.file) {\n this.files = input.files;\n } else {\n this.value = input.value;\n }\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 (\n changedProperties.has(\"checked\") &&\n changedProperties.get(\"checked\") !== undefined\n ) {\n //this.dispatchEvent(new Event(\"change\", { bubbles: true }));\n }\n }\n @eventOptions({ capture: true })\n _handleChange(e: DomEvent<HTMLInputElement | SpectricColorPicker>) {\n e.stopPropagation();\n if (this.variant === InputVariants.file) {\n this.files = (e.target as HTMLInputElement).files;\n } else {\n this.value = e.target.value;\n }\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\n }\n protected render(): unknown {\n const calendar = html`<spectric-calendar\n .popup=${this.variant === InputVariants.datePopup}\n @select=${(e: CustomEvent<Date>) => {\n this.value = e.detail.toISOString();\n this.querySelector<PopoverElement>(\"spectric-popover\")?.hidePopover();\n }}\n >\n </spectric-calendar>`;\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.datePopup: //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}\n ${this.maxCount > 0 && this._value\n ? `${(this._value as String).length}/${this.maxCount}`\n : null}\n </div>\n </div>\n <div class=\"fieldwrapper\">\n <div ?data-invalid=\"${this.invalid}\" class=\"inputContainer\">\n ${this.variant === \"date\" ? calendar : null}\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 !== InputVariants.date\n ? this.variant\n : InputVariants.Text\n : this._showPassword\n ? InputVariants.Text\n : InputVariants.password\n )}\"\n .value=\"${this._value as string}\"\n maxlength=\"${ifNonEmpty(\n this.maxCount > 0 ? this.maxCount : undefined\n )}\"\n @input=\"${this._handleInput}\"\n @change=${this._handleChange}\n />\n\n ${this.variant === String(InputVariants.datePopup)\n ? calendar\n : null}\n ${this.variant === String(InputVariants.password) &&\n this.showPasswordVisibilityToggle\n ? html`\n <spectric-button\n icon\n class=\"input-button-right\"\n size=\"small\"\n type=\"button\"\n ?disabled=\"${this.disabled}\"\n @click=${this.handleTogglePasswordVisibility}\n >\n ${this._showPassword\n ? this.hidePasswordLabel\n : 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\">\n ${this.invalid ? this.invalidText : this.helperText}\n </slot>\n </div>\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} ${\n this.maxCount > 0 && this._value\n ? `${(this._value as String).length}/${this.maxCount}`\n : null\n }\n </div> \n </div>\n <div class=\"fieldwrapper\">\n <div ?data-invalid=\"${this.invalid}\" class=\"inputContainer\">\n <input type=\"hidden\" .value=${String(this.value)} > </input>\n <spectric-colorpicker \n @cancel=${(e: DomEvent<SpectricColorPicker>) => {\n this.value = e.target.value;\n }}\n @change=${(e: DomEvent<SpectricColorPicker>) => {\n e.stopPropagation();\n this.value = e.target.value;\n this._handleChange(e);\n }} .value=${String(this.value)}></spectric-colorpicker>\n </div>\n <div\n id=\"helper-text\"\n class=\"${this.helperText || this.invalid ? \"\" : \"hidden\"}\"\n >\n <slot name=\"helper-text\"> ${\n this.invalid ? this.invalidText : this.helperText\n } </slot>\n </div>\n\n </div>\n </div>`;\n case InputVariants.hidden:\n return html`<input type=\"hidden\" />`;\n\n case InputVariants.checkbox:\n return html`\n <div class=\"checkbox\">\n <spectric-button \n .tooltip=${this.helperText}\n @click=${() => {\n this.checked = !this.checked;\n this.value = Boolean(this.checked);\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\n }} icon size=${this.size || \"xxsmall\"} variant=${\n this.checked ? \"primary\" : \"secondary\"\n }>${this.checked ? \"✓\" : \"\\u00A0\"}</spectric-button>\n ${this.label.length ? html`<span>${this.label}</span>` : null}\n </div>\n </label>\n `;\n default:\n break;\n }\n return `Not yet implemented ${this.variant}`;\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<\n SpectricInput,\n InputProps\n >;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * {@link SpectricInput}\n */\n \"spectric-input\": ReactElementWithPropsAndEvents<\n SpectricInput,\n InputProps\n >;\n }\n }\n }\n}\n\nconst ifNonEmpty = (value: any) =>\n ifDefined(value === \"\" ? undefined : value ?? undefined);\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\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 Spectric Labs */\n\nexport const {\n parse\n} = // @generated by Peggy 5.0.6.\n//\n// https://peggyjs.org/\n(function() {\n \"use strict\";\nclass peg$SyntaxError extends SyntaxError {\n constructor(message, expected, found, location) {\n super(message);\n this.expected = expected;\n this.found = found;\n this.location = location;\n this.name = \"SyntaxError\";\n }\n\n format(sources) {\n let str = \"Error: \" + this.message;\n if (this.location) {\n let src = null;\n const st = sources.find(s => s.source === this.location.source);\n if (st) {\n src = st.text.split(/\\r\\n|\\n|\\r/g);\n }\n const s = this.location.start;\n const offset_s = (this.location.source && (typeof this.location.source.offset === \"function\"))\n ? this.location.source.offset(s)\n : s;\n const loc = this.location.source + \":\" + offset_s.line + \":\" + offset_s.column;\n if (src) {\n const e = this.location.end;\n const filler = \"\".padEnd(offset_s.line.toString().length, \" \");\n const line = src[s.line - 1];\n const last = s.line === e.line ? e.column : line.length + 1;\n const hatLen = (last - s.column) || 1;\n str += \"\\n --> \" + loc + \"\\n\"\n + filler + \" |\\n\"\n + offset_s.line + \" | \" + line + \"\\n\"\n + filler + \" | \" + \"\".padEnd(s.column - 1, \" \")\n + \"\".padEnd(hatLen, \"^\");\n } else {\n str += \"\\n at \" + loc;\n }\n }\n return str;\n }\n\n static buildMessage(expected, found) {\n function hex(ch) {\n return ch.codePointAt(0).toString(16).toUpperCase();\n }\n\n const nonPrintable = Object.prototype.hasOwnProperty.call(RegExp.prototype, \"unicode\")\n ? new RegExp(\"[\\\\p{C}\\\\p{Mn}\\\\p{Mc}]\", \"gu\")\n : null;\n function unicodeEscape(s) {\n if (nonPrintable) {\n return s.replace(nonPrintable, ch => \"\\\\u{\" + hex(ch) + \"}\");\n }\n return s;\n }\n\n function literalEscape(s) {\n return unicodeEscape(s\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\"/g, \"\\\\\\\"\")\n .replace(/\\0/g, \"\\\\0\")\n .replace(/\\t/g, \"\\\\t\")\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\r/g, \"\\\\r\")\n .replace(/[\\x00-\\x0F]/g, ch => \"\\\\x0\" + hex(ch))\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, ch => \"\\\\x\" + hex(ch)));\n }\n\n function classEscape(s) {\n return unicodeEscape(s\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\\]/g, \"\\\\]\")\n .replace(/\\^/g, \"\\\\^\")\n .replace(/-/g, \"\\\\-\")\n .replace(/\\0/g, \"\\\\0\")\n .replace(/\\t/g, \"\\\\t\")\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\r/g, \"\\\\r\")\n .replace(/[\\x00-\\x0F]/g, ch => \"\\\\x0\" + hex(ch))\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, ch => \"\\\\x\" + hex(ch)));\n }\n\n const DESCRIBE_EXPECTATION_FNS = {\n literal(expectation) {\n return \"\\\"\" + literalEscape(expectation.text) + \"\\\"\";\n },\n\n class(expectation) {\n const escapedParts = expectation.parts.map(\n part => (Array.isArray(part)\n ? classEscape(part[0]) + \"-\" + classEscape(part[1])\n : classEscape(part))\n );\n\n return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts.join(\"\") + \"]\" + (expectation.unicode ? \"u\" : \"\");\n },\n\n any() {\n return \"any character\";\n },\n\n end() {\n return \"end of input\";\n },\n\n other(expectation) {\n return expectation.description;\n },\n };\n\n function describeExpectation(expectation) {\n return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);\n }\n\n function describeExpected(expected) {\n const descriptions = expected.map(describeExpectation);\n descriptions.sort();\n\n if (descriptions.length > 0) {\n let j = 1;\n for (let i = 1; i < descriptions.length; i++) {\n if (descriptions[i - 1] !== descriptions[i]) {\n descriptions[j] = descriptions[i];\n j++;\n }\n }\n descriptions.length = j;\n }\n\n switch (descriptions.length) {\n case 1:\n return descriptions[0];\n\n case 2:\n return descriptions[0] + \" or \" + descriptions[1];\n\n default:\n return descriptions.slice(0, -1).join(\", \")\n + \", or \"\n + descriptions[descriptions.length - 1];\n }\n }\n\n function describeFound(found) {\n return found ? \"\\\"\" + literalEscape(found) + \"\\\"\" : \"end of input\";\n }\n\n return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n }\n}\n\nfunction peg$parse(input, options) {\n options = options !== undefined ? options : {};\n\n const peg$FAILED = {};\n const peg$source = options.grammarSource;\n\n const peg$startRuleFunctions = {\n start: peg$parsestart,\n Literal: peg$parseLiteral,\n };\n let peg$startRuleFunction = peg$parsestart;\n\n const peg$c0 = \"(\";\n const peg$c1 = \")\";\n const peg$c2 = \":\";\n const peg$c3 = \"{\";\n const peg$c4 = \"}\";\n const peg$c5 = \"or\";\n const peg$c6 = \"and\";\n const peg$c7 = \"not\";\n const peg$c8 = \".\";\n const peg$c9 = \"\\\"\";\n const peg$c10 = \"\\\\\";\n const peg$c11 = \"*\";\n const peg$c12 = \"\\\\t\";\n const peg$c13 = \"\\\\r\";\n const peg$c14 = \"\\\\n\";\n const peg$c15 = \"<@\";\n const peg$c16 = \"<=\";\n const peg$c17 = \">=\";\n const peg$c18 = \"<\";\n const peg$c19 = \">\";\n const peg$c20 = \"\\xA9kuery-cursor\\xA9\";\n\n const peg$r0 = /^[0-9]/;\n const peg$r1 = /^[\\\\\"]/;\n const peg$r2 = /^[^\"]/;\n const peg$r3 = /^[\\\\():<>\"*{}]/;\n const peg$r4 = /^[ \\t\\r\\n]/;\n\n const peg$e0 = peg$literalExpectation(\"(\", false);\n const peg$e1 = peg$literalExpectation(\")\", false);\n const peg$e2 = peg$literalExpectation(\":\", false);\n const peg$e3 = peg$literalExpectation(\"{\", false);\n const peg$e4 = peg$literalExpectation(\"}\", false);\n const peg$e5 = peg$otherExpectation(\"fieldName\");\n const peg$e6 = peg$otherExpectation(\"value\");\n const peg$e7 = peg$otherExpectation(\"OR\");\n const peg$e8 = peg$literalExpectation(\"or\", true);\n const peg$e9 = peg$otherExpectation(\"AND\");\n const peg$e10 = peg$literalExpectation(\"and\", true);\n const peg$e11 = peg$otherExpectation(\"NOT\");\n const peg$e12 = peg$literalExpectation(\"not\", true);\n const peg$e13 = peg$otherExpectation(\"literal\");\n const peg$e14 = peg$literalExpectation(\".\", false);\n const peg$e15 = peg$classExpectation([[\"0\", \"9\"]], false, false, false);\n const peg$e16 = peg$literalExpectation(\"\\\"\", false);\n const peg$e17 = peg$literalExpectation(\"\\\\\", false);\n const peg$e18 = peg$classExpectation([\"\\\\\", \"\\\"\"], false, false, false);\n const peg$e19 = peg$classExpectation([\"\\\"\"], true, false, false);\n const peg$e20 = peg$anyExpectation();\n const peg$e21 = peg$literalExpectation(\"*\", false);\n const peg$e22 = peg$literalExpectation(\"\\\\t\", false);\n const peg$e23 = peg$literalExpectation(\"\\\\r\", false);\n const peg$e24 = peg$literalExpectation(\"\\\\n\", false);\n const peg$e25 = peg$classExpectation([\"\\\\\", \"(\", \")\", \":\", \"<\", \">\", \"\\\"\", \"*\", \"{\", \"}\"], false, false, false);\n const peg$e26 = peg$literalExpectation(\"<@\", false);\n const peg$e27 = peg$literalExpectation(\"<=\", false);\n const peg$e28 = peg$literalExpectation(\">=\", false);\n const peg$e29 = peg$literalExpectation(\"<\", false);\n const peg$e30 = peg$literalExpectation(\">\", false);\n const peg$e31 = peg$otherExpectation(\"whitespace\");\n const peg$e32 = peg$classExpectation([\" \", \"\\t\", \"\\r\", \"\\n\"], false, false, false);\n const peg$e33 = peg$literalExpectation(\"\\xA9kuery-cursor\\xA9\", false);\n\n function peg$f0(query, trailing) {\n if (trailing.type === 'cursor') {\n return {\n ...trailing,\n suggestionTypes: ['conjunction'],\n rule:\"start\"\n };\n }\n if (query !== null) return query;\n return nodeTypes.function.buildNode('is', '*', '*');\n }\n function peg$f1(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 function peg$f2(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 function peg$f3(query) {\n if (query.type === 'cursor') return query;\n return buildFunctionNode('not', [query]);\n }\n function peg$f4(query, trailing) {\n if (trailing.type === 'cursor') {\n return {\n ...trailing,\n suggestionTypes: ['conjunction'],\n rule:\"SubQuery\"\n };\n }\n group++\n return {...query,group};\n }\n function peg$f5(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 function peg$f6(field, operator, value) {\n if (value.type === 'cursor') {\n return {\n ...value,\n fieldName: field.value,\n suggestionTypes: ['geo_value','conjunction'],\n rule:\"FieldGeoSpatialExpression\"\n };\n }\n return {\n type: 'function',\n function: 'geospatial',\n arguments: [field,operator, value],\n }\n \n }\n function peg$f7(field, operator, partial) {\n if (partial.type === 'cursor') {\n return {\n ...partial,\n fieldName: field.value,\n suggestionTypes: ['geo_value', 'conjunction'],\n rule:\"FieldMultiGeoSpatialExpression\"\n };\n }\n const range = buildNamedArgNode(operator, partial(field))\n const listItems = partial(field)\n if(listItems.function == \"is\"){\n \t//One Item in the list\n return buildFunctionNode('geospatial', [field,operator, listItems.arguments[1]]);\n }\n return {...listItems,arguments:listItems.arguments.map(a=> buildFunctionNode('geospatial', {\n type: 'function',\n function: 'geospatial',\n arguments: [field,operator, a.arguments[1]],\n }))}\n }\n function peg$f8(field, operator, value) {\n if (value.type === 'cursor') {\n return {\n ...value,\n fieldName: field.value,\n suggestionTypes: ['value','conjunction'],\n rule:\"FieldRangeExpression\"\n };\n }\n const range = buildNamedArgNode(operator, value);\n return buildFunctionNode('range', [field, range]);\n }\n function peg$f9(field, partial) {\n if (partial.type === 'cursor') {\n if(partial.prefix.includes(wildcardSymbol)){\n return {\n ...partial,\n fieldName: field.value,\n suggestionTypes: ['conjunction'],\n rule:\"FieldValueExpression\"\n }\n }\n return {\n ...partial,\n fieldName: field.value,\n suggestionTypes: ['value', 'conjunction'],\n rule:\"FieldValueExpression\"\n };\n }\n return partial(field);\n }\n function peg$f10(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 rule:\"ValueExpression\"\n };\n }\n const field = buildLiteralNode(null);\n return partial(field);\n }\n function peg$f11(partial, trailing) {\n if (trailing.type === 'cursor') {\n return {\n ...trailing,\n suggestionTypes: ['conjunction'],\n rule:\"ListOfValues\"\n };\n }\n return partial;\n }\n function peg$f12(partialLeft, partialRight) {\n const cursor = [partialLeft, partialRight].find(node => node.type === 'cursor');\n if (cursor) {\n return {\n ...cursor,\n suggestionTypes: ['value'],\n rule:\"OrListOfValues\"\n };\n }\n group++\n return (field) => ({...buildFunctionNode('or', [partialLeft(field), partialRight(field)]),group});\n }\n function peg$f13(partialLeft, partialRight) {\n const cursor = [partialLeft, partialRight].find(node => node.type === 'cursor');\n if (cursor) {\n return {\n ...cursor,\n suggestionTypes: ['value'],\n rule:\"AndListOfValues\"\n };\n }\n group++\n return (field) => ({...buildFunctionNode('and', [partialLeft(field), partialRight(field)]),group});\n }\n function peg$f14(partial) {\n if (partial.type === 'cursor') {\n return {\n ...list,\n suggestionTypes: ['value'],\n rule:\"NotListOfValues\"\n };\n }\n return (field) => buildFunctionNode('not', [partial(field)]);\n }\n function peg$f15(value) {\n if (value.type === 'cursor') return value;\n const isPhrase = buildLiteralNode(true);\n return (field) => buildFunctionNode('is', [field, value, isPhrase]);\n }\n function peg$f16(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 function peg$f17() { return parseFloat(text()); }\n function peg$f18() { return parseInt(text(), 10); }\n function peg$f19(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 rule:\"QuotedString\"\n };\n }\n function peg$f20(chars) {\n return buildLiteralNode(chars.join(''));\n }\n function peg$f21(char) { return char; }\n function peg$f22(char) { return char; }\n function peg$f23(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 rule:\"UnquotedLiteral\"\n };\n }\n function peg$f24(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 function peg$f25(char) { return char; }\n function peg$f26() { return wildcardSymbol; }\n function peg$f27(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 rule:\"OptionalSpace\"\n };\n }\n function peg$f28() { return '\\t'; }\n function peg$f29() { return '\\r'; }\n function peg$f30() { return '\\n'; }\n function peg$f31(char) { return char; }\n function peg$f32(keyword) { return keyword; }\n function peg$f33() { return 'within'; }\n function peg$f34() { return 'lte'; }\n function peg$f35() { return 'gte'; }\n function peg$f36() { return 'lt'; }\n function peg$f37() { return 'gt'; }\n function peg$f38() { return parseCursor; }\n function peg$f39() { return cursorSymbol; }\n let peg$currPos = options.peg$currPos | 0;\n let peg$savedPos = peg$currPos;\n const peg$posDetailsCache = [{ line: 1, column: 1 }];\n let peg$maxFailPos = peg$currPos;\n let peg$maxFailExpected = options.peg$maxFailExpected || [];\n let peg$silentFails = options.peg$silentFails | 0;\n\n let peg$result;\n\n if (options.startRule) {\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 offset() {\n return peg$savedPos;\n }\n\n function range() {\n return {\n source: peg$source,\n start: peg$savedPos,\n end: peg$currPos,\n };\n }\n\n function location() {\n return peg$computeLocation(peg$savedPos, peg$currPos);\n }\n\n function expected(description, location) {\n location = location !== undefined\n ? location\n : peg$computeLocation(peg$savedPos, peg$currPos);\n\n throw peg$buildStructuredError(\n [peg$otherExpectation(description)],\n input.substring(peg$savedPos, peg$currPos),\n location\n );\n }\n\n function error(message, location) {\n location = location !== undefined\n ? location\n : peg$computeLocation(peg$savedPos, peg$currPos);\n\n throw peg$buildSimpleError(message, location);\n }\n\n function peg$getUnicode(pos = peg$currPos) {\n const cp = input.codePointAt(pos);\n if (cp === undefined) {\n return \"\";\n }\n return String.fromCodePoint(cp);\n }\n\n function peg$literalExpectation(text, ignoreCase) {\n return { type: \"literal\", text, ignoreCase };\n }\n\n function peg$classExpectation(parts, inverted, ignoreCase, unicode) {\n return { type: \"class\", parts, inverted, ignoreCase, unicode };\n }\n\n function peg$anyExpectation() {\n return { type: \"any\" };\n }\n\n function peg$endExpectation() {\n return { type: \"end\" };\n }\n\n function peg$otherExpectation(description) {\n return { type: \"other\", description };\n }\n\n function peg$computePosDetails(pos) {\n let details = peg$posDetailsCache[pos];\n let p;\n\n if (details) {\n return details;\n } else {\n if (pos >= peg$posDetailsCache.length) {\n p = peg$posDetailsCache.length - 1;\n } else {\n p = pos;\n while (!peg$posDetailsCache[--p]) {}\n }\n\n details = peg$posDetailsCache[p];\n details = {\n line: details.line,\n column: details.column,\n };\n\n while (p < pos) {\n if (input.charCodeAt(p) === 10) {\n details.line++;\n details.column = 1;\n } else {\n details.column++;\n }\n\n p++;\n }\n\n peg$posDetailsCache[pos] = details;\n\n return details;\n }\n }\n\n function peg$computeLocation(startPos, endPos, offset) {\n const startPosDetails = peg$computePosDetails(startPos);\n const endPosDetails = peg$computePosDetails(endPos);\n\n const res = {\n source: peg$source,\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 if (offset && peg$source && (typeof peg$source.offset === \"function\")) {\n res.start = peg$source.offset(res.start);\n res.end = peg$source.offset(res.end);\n }\n return res;\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$buildSimpleError(message, location) {\n return new peg$SyntaxError(message, null, null, location);\n }\n\n function peg$buildStructuredError(expected, found, location) {\n return new peg$SyntaxError(\n peg$SyntaxError.buildMessage(expected, found),\n expected,\n found,\n location\n );\n }\n\n function peg$parsestart() {\n let 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 s2 = peg$parseOrQuery();\n if (s2 === peg$FAILED) {\n s2 = null;\n }\n s3 = peg$parseOptionalSpace();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f0(s2, s3);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseOrQuery() {\n let s0, s1, s2, s3;\n\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 s0 = peg$f1(s1, s3);\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 return s0;\n }\n\n function peg$parseAndQuery() {\n let 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 s0 = peg$f2(s1, s3);\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 let 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 s0 = peg$f3(s2);\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 let s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 40) {\n s1 = peg$c0;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e0); }\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 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$c1;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e1); }\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f4(s3, s4);\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 let 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 (input.charCodeAt(peg$currPos) === 58) {\n s3 = peg$c2;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\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 (input.charCodeAt(peg$currPos) === 123) {\n s5 = peg$c3;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e3); }\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 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$c4;\n peg$currPos++;\n } else {\n s9 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e4); }\n }\n if (s9 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f5(s1, s7, s8);\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 let s0;\n\n s0 = peg$parseFieldGeoSpatialExpression();\n if (s0 === peg$FAILED) {\n s0 = peg$parseFieldMultiGeoSpatialExpression();\n if (s0 === peg$FAILED) {\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 }\n\n return s0;\n }\n\n function peg$parseField() {\n let 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$e5); }\n }\n\n return s0;\n }\n\n function peg$parseFieldGeoSpatialExpression() {\n let 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 s3 = peg$parseGeoSpatialOperator();\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 s5 = peg$parseLiteral();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f6(s1, s3, s5);\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$parseFieldMultiGeoSpatialExpression() {\n let 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 s3 = peg$parseGeoSpatialOperator();\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 s5 = peg$parseListOfValues();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f7(s1, s3, s5);\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$parseFieldRangeExpression() {\n let 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 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 s5 = peg$parseNumberOrQuotedString();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f8(s1, s3, s5);\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 let 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 (input.charCodeAt(peg$currPos) === 58) {\n s3 = peg$c2;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\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 s5 = peg$parseListOfValues();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f9(s1, s5);\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 let s0, s1;\n\n s0 = peg$currPos;\n s1 = peg$parseValue();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f10(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseListOfValues() {\n let s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 40) {\n s1 = peg$c0;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e0); }\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 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$c1;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e1); }\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f11(s3, s4);\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 let 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 s0 = peg$f12(s1, s3);\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 let 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 s0 = peg$f13(s1, s3);\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 let 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 s0 = peg$f14(s2);\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 let 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$f15(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$f16(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$e6); }\n }\n\n return s0;\n }\n\n function peg$parseOr() {\n let 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 s2 = input.substr(peg$currPos, 2);\n if (s2.toLowerCase() === peg$c5) {\n peg$currPos += (2);\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e8); }\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 peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e7); }\n }\n\n return s0;\n }\n\n function peg$parseAnd() {\n let 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 s2 = input.substr(peg$currPos, 3);\n if (s2.toLowerCase() === peg$c6) {\n peg$currPos += (3);\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e10); }\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 peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e9); }\n }\n\n return s0;\n }\n\n function peg$parseNot() {\n let s0, s1, s2, s3;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = input.substr(peg$currPos, 3);\n if (s1.toLowerCase() === peg$c7) {\n peg$currPos += (3);\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e12); }\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 peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e11); }\n }\n\n return s0;\n }\n\n function peg$parseLiteral() {\n let 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$e13); }\n }\n\n return s0;\n }\n\n function peg$parseNumber() {\n let s0;\n\n s0 = peg$parseFloat();\n if (s0 === peg$FAILED) {\n s0 = peg$parseInteger();\n }\n\n return s0;\n }\n\n function peg$parseFloat() {\n let s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$parseInteger();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 46) {\n s2 = peg$c8;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e14); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = input.charAt(peg$currPos);\n if (peg$r0.test(s4)) {\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e15); }\n }\n if (s4 !== peg$FAILED) {\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = input.charAt(peg$currPos);\n if (peg$r0.test(s4)) {\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e15); }\n }\n }\n } else {\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f17();\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$parseInteger() {\n let s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = input.charAt(peg$currPos);\n if (peg$r0.test(s2)) {\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e15); }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = input.charAt(peg$currPos);\n if (peg$r0.test(s2)) {\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e15); }\n }\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f18();\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseQuotedString() {\n let s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 34) {\n s1 = peg$c9;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e16); }\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 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 (input.charCodeAt(peg$currPos) === 34) {\n s5 = peg$c9;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e16); }\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f19(s2, s3, s4);\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$c9;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e16); }\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 (input.charCodeAt(peg$currPos) === 34) {\n s3 = peg$c9;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e16); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f20(s2);\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$parseNumberOrQuotedString() {\n let s0;\n\n s0 = peg$parseNumber();\n if (s0 === peg$FAILED) {\n s0 = peg$parseQuotedString();\n if (s0 === peg$FAILED) {\n s0 = peg$parseOptionalSpace();\n }\n }\n\n return s0;\n }\n\n function peg$parseQuotedCharacter() {\n let 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$c10;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e17); }\n }\n if (s1 !== peg$FAILED) {\n s2 = input.charAt(peg$currPos);\n if (peg$r1.test(s2)) {\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e18); }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f21(s2);\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 = undefined;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s2 = input.charAt(peg$currPos);\n if (peg$r2.test(s2)) {\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e19); }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f22(s2);\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 let 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 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 peg$savedPos = s0;\n s0 = peg$f23(s1, s2, s3);\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$f24(s1);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parseUnquotedCharacter() {\n let 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 = undefined;\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 = undefined;\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 = undefined;\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$e20); }\n }\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f25(s4);\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 let s0, s1;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 42) {\n s1 = peg$c11;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e21); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f26();\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseOptionalSpace() {\n let 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 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 peg$savedPos = s0;\n s0 = peg$f27(s1, s2, s3);\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 let s0, s1;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c12) {\n s1 = peg$c12;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e22); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f28();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c13) {\n s1 = peg$c13;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e23); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f29();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c14) {\n s1 = peg$c14;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e24); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f30();\n }\n s0 = s1;\n }\n }\n\n return s0;\n }\n\n function peg$parseEscapedSpecialCharacter() {\n let s0, s1, s2;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 92) {\n s1 = peg$c10;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e17); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseSpecialCharacter();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f31(s2);\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 let s0, s1, s2;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 92) {\n s1 = peg$c10;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e17); }\n }\n if (s1 !== peg$FAILED) {\n s2 = input.substr(peg$currPos, 2);\n if (s2.toLowerCase() === peg$c5) {\n peg$currPos += (2);\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e8); }\n }\n if (s2 === peg$FAILED) {\n s2 = input.substr(peg$currPos, 3);\n if (s2.toLowerCase() === peg$c6) {\n peg$currPos += (3);\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e10); }\n }\n if (s2 === peg$FAILED) {\n s2 = input.substr(peg$currPos, 3);\n if (s2.toLowerCase() === peg$c7) {\n peg$currPos += (3);\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e12); }\n }\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f32(s2);\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 let 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 let s0;\n\n s0 = input.charAt(peg$currPos);\n if (peg$r3.test(s0)) {\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e25); }\n }\n\n return s0;\n }\n\n function peg$parseGeoSpatialOperator() {\n let s0, s1;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c15) {\n s1 = peg$c15;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e26); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f33();\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseRangeOperator() {\n let s0, s1;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c16) {\n s1 = peg$c16;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e27); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f34();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c17) {\n s1 = peg$c17;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e28); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f35();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 60) {\n s1 = peg$c18;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e29); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f36();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 62) {\n s1 = peg$c19;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e30); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f37();\n }\n s0 = s1;\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseSpace() {\n let s0, s1;\n\n peg$silentFails++;\n s0 = input.charAt(peg$currPos);\n if (peg$r4.test(s0)) {\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e32); }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e31); }\n }\n\n return s0;\n }\n\n function peg$parseCursor() {\n let s0, s1, s2;\n\n s0 = peg$currPos;\n peg$savedPos = peg$currPos;\n s1 = peg$f38();\n if (s1) {\n s1 = undefined;\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n if (input.substr(peg$currPos, 14) === peg$c20) {\n s2 = peg$c20;\n peg$currPos += 14;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e33); }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f39();\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\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 var group = 0\n\n peg$result = peg$startRuleFunction();\n\n const peg$success = (peg$result !== peg$FAILED && peg$currPos === input.length);\n function peg$throw() {\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n peg$fail(peg$endExpectation());\n }\n\n throw peg$buildStructuredError(\n peg$maxFailExpected,\n peg$maxFailPos < input.length ? peg$getUnicode(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 if (options.peg$library) {\n return /** @type {any} */ ({\n peg$result,\n peg$currPos,\n peg$FAILED,\n peg$maxFailExpected,\n peg$maxFailPos,\n peg$success,\n peg$throw: peg$success ? undefined : peg$throw,\n });\n }\n if (peg$success) {\n return peg$result;\n } else {\n peg$throw();\n }\n}\n return {\n StartRules: [\"start\", \"Literal\"],\n SyntaxError: peg$SyntaxError,\n parse: peg$parse,\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 { nodeTypes } from \"../node_types/index\";\nimport { DQLSyntaxError } from \"../kuery_syntax_error\";\nimport { KueryNode, DslQuery, KueryParseOptions } from \"../types\";\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(\n nodeTypes.function.buildNode(\"and\", []),\n indexPattern\n );\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\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","/* @preserve\n* @terraformer/wkt - v2.2.0 - MIT\n* Copyright (c) 2012-2024 Environmental Systems Research Institute, Inc.\n* Wed May 15 2024 14:35:51 GMT-0700 (Pacific Daylight Time)\n*/\n/* global parser */ // via jison\n\n/* Copyright (c) 2012-2020 Environmental Systems Research Institute, Inc.\n * MIT */\n\n/** @module Terraformer */\n\nvar o = function o(k, v, _o, l) {\n for (_o = _o || {}, l = k.length; l--; _o[k[l]] = v);\n return _o;\n },\n $V0 = [1, 9],\n $V1 = [1, 10],\n $V2 = [1, 11],\n $V3 = [1, 12],\n $V4 = [1, 13],\n $V5 = [1, 14],\n $V6 = [1, 15],\n $V7 = [1, 60],\n $V8 = [5, 15, 19],\n $V9 = [1, 67],\n $Va = [1, 73],\n $Vb = [1, 87],\n $Vc = [1, 104],\n $Vd = [15, 19],\n $Ve = [1, 110],\n $Vf = [1, 116],\n $Vg = [1, 130],\n $Vh = [1, 136];\nvar parser = {\n trace: function trace() {},\n yy: {},\n symbols_: {\n \"error\": 2,\n \"expressions\": 3,\n \"point\": 4,\n \"EOF\": 5,\n \"linestring\": 6,\n \"polygon\": 7,\n \"multipoint\": 8,\n \"multilinestring\": 9,\n \"multipolygon\": 10,\n \"geometrycollection\": 11,\n \"coordinate\": 12,\n \"DOUBLE_TOK\": 13,\n \"ptarray\": 14,\n \"COMMA\": 15,\n \"ring_list\": 16,\n \"ring\": 17,\n \"(\": 18,\n \")\": 19,\n \"POINT\": 20,\n \"Z\": 21,\n \"ZM\": 22,\n \"M\": 23,\n \"EMPTY\": 24,\n \"point_untagged\": 25,\n \"polygon_list\": 26,\n \"polygon_untagged\": 27,\n \"point_list\": 28,\n \"LINESTRING\": 29,\n \"POLYGON\": 30,\n \"MULTIPOINT\": 31,\n \"MULTILINESTRING\": 32,\n \"MULTIPOLYGON\": 33,\n \"geometry\": 34,\n \"geometry_collection\": 35,\n \"GEOMETRYCOLLECTION\": 36,\n \"$accept\": 0,\n \"$end\": 1\n },\n terminals_: {\n 2: \"error\",\n 5: \"EOF\",\n 13: \"DOUBLE_TOK\",\n 15: \"COMMA\",\n 18: \"(\",\n 19: \")\",\n 20: \"POINT\",\n 21: \"Z\",\n 22: \"ZM\",\n 23: \"M\",\n 24: \"EMPTY\",\n 29: \"LINESTRING\",\n 30: \"POLYGON\",\n 31: \"MULTIPOINT\",\n 32: \"MULTILINESTRING\",\n 33: \"MULTIPOLYGON\",\n 36: \"GEOMETRYCOLLECTION\"\n },\n productions_: [0, [3, 2], [3, 2], [3, 2], [3, 2], [3, 2], [3, 2], [3, 2], [12, 2], [12, 3], [12, 4], [14, 3], [14, 1], [16, 3], [16, 1], [17, 3], [4, 4], [4, 5], [4, 5], [4, 5], [4, 2], [25, 1], [25, 3], [26, 3], [26, 1], [27, 3], [28, 3], [28, 1], [6, 4], [6, 5], [6, 5], [6, 5], [6, 2], [7, 4], [7, 5], [7, 5], [7, 5], [7, 2], [8, 4], [8, 5], [8, 5], [8, 5], [8, 2], [9, 4], [9, 5], [9, 5], [9, 5], [9, 2], [10, 4], [10, 5], [10, 5], [10, 5], [10, 2], [34, 1], [34, 1], [34, 1], [34, 1], [34, 1], [34, 1], [34, 1], [35, 3], [35, 1], [11, 4], [11, 5], [11, 5], [11, 5], [11, 2]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $ /* vstack */, _$ /* lstack */) {\n /* this == yyval */\n\n var $0 = $.length - 1;\n switch (yystate) {\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 6:\n case 7:\n return $[$0 - 1];\n case 8:\n this.$ = new PointArray([Number($[$0 - 1]), Number($[$0])]);\n break;\n case 9:\n this.$ = new PointArray([Number($[$0 - 2]), Number($[$0 - 1]), Number($[$0])]);\n break;\n case 10:\n this.$ = new PointArray([Number($[$0 - 3]), Number($[$0 - 2]), Number($[$0 - 1]), Number($[$0])]);\n break;\n case 11:\n case 26:\n this.$ = $[$0 - 2].addPoint($[$0]);\n break;\n case 12:\n case 21:\n case 27:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n case 58:\n case 59:\n this.$ = $[$0];\n break;\n case 13:\n this.$ = $[$0 - 2].addRing($[$0]);\n break;\n case 14:\n this.$ = new RingList($[$0]);\n break;\n case 15:\n this.$ = new Ring($[$0 - 1]);\n break;\n case 16:\n this.$ = {\n \"type\": \"Point\",\n \"coordinates\": $[$0 - 1].data[0]\n };\n break;\n case 17:\n this.$ = {\n \"type\": \"Point\",\n \"coordinates\": $[$0 - 1].data[0],\n \"properties\": {\n z: true\n }\n };\n break;\n case 18:\n this.$ = {\n \"type\": \"Point\",\n \"coordinates\": $[$0 - 1].data[0],\n \"properties\": {\n z: true,\n m: true\n }\n };\n break;\n case 19:\n this.$ = {\n \"type\": \"Point\",\n \"coordinates\": $[$0 - 1].data[0],\n \"properties\": {\n m: true\n }\n };\n break;\n case 20:\n this.$ = {\n \"type\": \"Point\",\n \"coordinates\": []\n };\n break;\n case 22:\n case 25:\n this.$ = $[$0 - 1];\n break;\n case 23:\n this.$ = $[$0 - 2].addPolygon($[$0]);\n break;\n case 24:\n this.$ = new PolygonList($[$0]);\n break;\n case 28:\n this.$ = {\n \"type\": \"LineString\",\n \"coordinates\": $[$0 - 1].data\n };\n break;\n case 29:\n this.$ = {\n \"type\": \"LineString\",\n \"coordinates\": $[$0 - 1].data,\n \"properties\": {\n z: true\n }\n };\n break;\n case 30:\n this.$ = {\n \"type\": \"LineString\",\n \"coordinates\": $[$0 - 1].data,\n \"properties\": {\n m: true\n }\n };\n break;\n case 31:\n this.$ = {\n \"type\": \"LineString\",\n \"coordinates\": $[$0 - 1].data,\n \"properties\": {\n z: true,\n m: true\n }\n };\n break;\n case 32:\n this.$ = {\n \"type\": \"LineString\",\n \"coordinates\": []\n };\n break;\n case 33:\n this.$ = {\n \"type\": \"Polygon\",\n \"coordinates\": $[$0 - 1].toJSON()\n };\n break;\n case 34:\n this.$ = {\n \"type\": \"Polygon\",\n \"coordinates\": $[$0 - 1].toJSON(),\n \"properties\": {\n z: true\n }\n };\n break;\n case 35:\n this.$ = {\n \"type\": \"Polygon\",\n \"coordinates\": $[$0 - 1].toJSON(),\n \"properties\": {\n m: true\n }\n };\n break;\n case 36:\n this.$ = {\n \"type\": \"Polygon\",\n \"coordinates\": $[$0 - 1].toJSON(),\n \"properties\": {\n z: true,\n m: true\n }\n };\n break;\n case 37:\n this.$ = {\n \"type\": \"Polygon\",\n \"coordinates\": []\n };\n break;\n case 38:\n this.$ = {\n \"type\": \"MultiPoint\",\n \"coordinates\": $[$0 - 1].data\n };\n break;\n case 39:\n this.$ = {\n \"type\": \"MultiPoint\",\n \"coordinates\": $[$0 - 1].data,\n \"properties\": {\n z: true\n }\n };\n break;\n case 40:\n this.$ = {\n \"type\": \"MultiPoint\",\n \"coordinates\": $[$0 - 1].data,\n \"properties\": {\n m: true\n }\n };\n break;\n case 41:\n this.$ = {\n \"type\": \"MultiPoint\",\n \"coordinates\": $[$0 - 1].data,\n \"properties\": {\n z: true,\n m: true\n }\n };\n break;\n case 42:\n this.$ = {\n \"type\": \"MultiPoint\",\n \"coordinates\": []\n };\n break;\n case 43:\n this.$ = {\n \"type\": \"MultiLineString\",\n \"coordinates\": $[$0 - 1].toJSON()\n };\n break;\n case 44:\n this.$ = {\n \"type\": \"MultiLineString\",\n \"coordinates\": $[$0 - 1].toJSON(),\n \"properties\": {\n z: true\n }\n };\n break;\n case 45:\n this.$ = {\n \"type\": \"MultiLineString\",\n \"coordinates\": $[$0 - 1].toJSON(),\n \"properties\": {\n m: true\n }\n };\n break;\n case 46:\n this.$ = {\n \"type\": \"MultiLineString\",\n \"coordinates\": $[$0 - 1].toJSON(),\n \"properties\": {\n z: true,\n m: true\n }\n };\n break;\n case 47:\n this.$ = {\n \"type\": \"MultiLineString\",\n \"coordinates\": []\n };\n break;\n case 48:\n this.$ = {\n \"type\": \"MultiPolygon\",\n \"coordinates\": $[$0 - 1].toJSON()\n };\n break;\n case 49:\n this.$ = {\n \"type\": \"MultiPolygon\",\n \"coordinates\": $[$0 - 1].toJSON(),\n \"properties\": {\n z: true\n }\n };\n break;\n case 50:\n this.$ = {\n \"type\": \"MultiPolygon\",\n \"coordinates\": $[$0 - 1].toJSON(),\n \"properties\": {\n m: true\n }\n };\n break;\n case 51:\n this.$ = {\n \"type\": \"MultiPolygon\",\n \"coordinates\": $[$0 - 1].toJSON(),\n \"properties\": {\n z: true,\n m: true\n }\n };\n break;\n case 52:\n this.$ = {\n \"type\": \"MultiPolygon\",\n \"coordinates\": []\n };\n break;\n case 60:\n this.$ = $[$0 - 2].addGeometry($[$0]);\n break;\n case 61:\n this.$ = new GeometryList($[$0]);\n break;\n case 62:\n this.$ = {\n \"type\": \"GeometryCollection\",\n \"geometries\": $[$0 - 1].toJSON()\n };\n break;\n case 63:\n this.$ = {\n \"type\": \"GeometryCollection\",\n \"geometries\": $[$0 - 1].toJSON(),\n \"properties\": {\n z: true\n }\n };\n break;\n case 64:\n this.$ = {\n \"type\": \"GeometryCollection\",\n \"geometries\": $[$0 - 1].toJSON(),\n \"properties\": {\n m: true\n }\n };\n break;\n case 65:\n this.$ = {\n \"type\": \"GeometryCollection\",\n \"geometries\": $[$0 - 1].toJSON(),\n \"properties\": {\n z: true,\n m: true\n }\n };\n break;\n case 66:\n this.$ = {\n \"type\": \"GeometryCollection\",\n \"geometries\": []\n };\n break;\n }\n },\n table: [{\n 3: 1,\n 4: 2,\n 6: 3,\n 7: 4,\n 8: 5,\n 9: 6,\n 10: 7,\n 11: 8,\n 20: $V0,\n 29: $V1,\n 30: $V2,\n 31: $V3,\n 32: $V4,\n 33: $V5,\n 36: $V6\n }, {\n 1: [3]\n }, {\n 5: [1, 16]\n }, {\n 5: [1, 17]\n }, {\n 5: [1, 18]\n }, {\n 5: [1, 19]\n }, {\n 5: [1, 20]\n }, {\n 5: [1, 21]\n }, {\n 5: [1, 22]\n }, {\n 18: [1, 23],\n 21: [1, 24],\n 22: [1, 25],\n 23: [1, 26],\n 24: [1, 27]\n }, {\n 18: [1, 28],\n 21: [1, 29],\n 22: [1, 31],\n 23: [1, 30],\n 24: [1, 32]\n }, {\n 18: [1, 33],\n 21: [1, 34],\n 22: [1, 36],\n 23: [1, 35],\n 24: [1, 37]\n }, {\n 18: [1, 38],\n 21: [1, 39],\n 22: [1, 41],\n 23: [1, 40],\n 24: [1, 42]\n }, {\n 18: [1, 43],\n 21: [1, 44],\n 22: [1, 46],\n 23: [1, 45],\n 24: [1, 47]\n }, {\n 18: [1, 48],\n 21: [1, 49],\n 22: [1, 51],\n 23: [1, 50],\n 24: [1, 52]\n }, {\n 18: [1, 53],\n 21: [1, 54],\n 22: [1, 56],\n 23: [1, 55],\n 24: [1, 57]\n }, {\n 1: [2, 1]\n }, {\n 1: [2, 2]\n }, {\n 1: [2, 3]\n }, {\n 1: [2, 4]\n }, {\n 1: [2, 5]\n }, {\n 1: [2, 6]\n }, {\n 1: [2, 7]\n }, {\n 12: 59,\n 13: $V7,\n 14: 58\n }, {\n 18: [1, 61]\n }, {\n 18: [1, 62]\n }, {\n 18: [1, 63]\n }, o($V8, [2, 20]), {\n 12: 66,\n 13: $V7,\n 18: $V9,\n 25: 65,\n 28: 64\n }, {\n 18: [1, 68]\n }, {\n 18: [1, 69]\n }, {\n 18: [1, 70]\n }, o($V8, [2, 32]), {\n 16: 71,\n 17: 72,\n 18: $Va\n }, {\n 18: [1, 74]\n }, {\n 18: [1, 75]\n }, {\n 18: [1, 76]\n }, o($V8, [2, 37]), {\n 12: 66,\n 13: $V7,\n 18: $V9,\n 25: 65,\n 28: 77\n }, {\n 18: [1, 78]\n }, {\n 18: [1, 79]\n }, {\n 18: [1, 80]\n }, o($V8, [2, 42]), {\n 16: 81,\n 17: 72,\n 18: $Va\n }, {\n 18: [1, 82]\n }, {\n 18: [1, 83]\n }, {\n 18: [1, 84]\n }, o($V8, [2, 47]), {\n 18: $Vb,\n 26: 85,\n 27: 86\n }, {\n 18: [1, 88]\n }, {\n 18: [1, 89]\n }, {\n 18: [1, 90]\n }, o($V8, [2, 52]), {\n 4: 93,\n 6: 94,\n 7: 95,\n 8: 96,\n 9: 97,\n 10: 98,\n 11: 99,\n 20: $V0,\n 29: $V1,\n 30: $V2,\n 31: $V3,\n 32: $V4,\n 33: $V5,\n 34: 92,\n 35: 91,\n 36: $V6\n }, {\n 18: [1, 100]\n }, {\n 18: [1, 101]\n }, {\n 18: [1, 102]\n }, o($V8, [2, 66]), {\n 15: $Vc,\n 19: [1, 103]\n }, o($Vd, [2, 12]), {\n 13: [1, 105]\n }, {\n 12: 59,\n 13: $V7,\n 14: 106\n }, {\n 12: 59,\n 13: $V7,\n 14: 107\n }, {\n 12: 59,\n 13: $V7,\n 14: 108\n }, {\n 15: $Ve,\n 19: [1, 109]\n }, o($Vd, [2, 27]), o($Vd, [2, 21]), {\n 12: 111,\n 13: $V7\n }, {\n 12: 66,\n 13: $V7,\n 18: $V9,\n 25: 65,\n 28: 112\n }, {\n 12: 66,\n 13: $V7,\n 18: $V9,\n 25: 65,\n 28: 113\n }, {\n 12: 66,\n 13: $V7,\n 18: $V9,\n 25: 65,\n 28: 114\n }, {\n 15: $Vf,\n 19: [1, 115]\n }, o($Vd, [2, 14]), {\n 12: 59,\n 13: $V7,\n 14: 117\n }, {\n 16: 118,\n 17: 72,\n 18: $Va\n }, {\n 16: 119,\n 17: 72,\n 18: $Va\n }, {\n 16: 120,\n 17: 72,\n 18: $Va\n }, {\n 15: $Ve,\n 19: [1, 121]\n }, {\n 12: 66,\n 13: $V7,\n 18: $V9,\n 25: 65,\n 28: 122\n }, {\n 12: 66,\n 13: $V7,\n 18: $V9,\n 25: 65,\n 28: 123\n }, {\n 12: 66,\n 13: $V7,\n 18: $V9,\n 25: 65,\n 28: 124\n }, {\n 15: $Vf,\n 19: [1, 125]\n }, {\n 16: 126,\n 17: 72,\n 18: $Va\n }, {\n 16: 127,\n 17: 72,\n 18: $Va\n }, {\n 16: 128,\n 17: 72,\n 18: $Va\n }, {\n 15: $Vg,\n 19: [1, 129]\n }, o($Vd, [2, 24]), {\n 16: 131,\n 17: 72,\n 18: $Va\n }, {\n 18: $Vb,\n 26: 132,\n 27: 86\n }, {\n 18: $Vb,\n 26: 133,\n 27: 86\n }, {\n 18: $Vb,\n 26: 134,\n 27: 86\n }, {\n 15: $Vh,\n 19: [1, 135]\n }, o($Vd, [2, 61]), o($Vd, [2, 53]), o($Vd, [2, 54]), o($Vd, [2, 55]), o($Vd, [2, 56]), o($Vd, [2, 57]), o($Vd, [2, 58]), o($Vd, [2, 59]), {\n 4: 93,\n 6: 94,\n 7: 95,\n 8: 96,\n 9: 97,\n 10: 98,\n 11: 99,\n 20: $V0,\n 29: $V1,\n 30: $V2,\n 31: $V3,\n 32: $V4,\n 33: $V5,\n 34: 92,\n 35: 137,\n 36: $V6\n }, {\n 4: 93,\n 6: 94,\n 7: 95,\n 8: 96,\n 9: 97,\n 10: 98,\n 11: 99,\n 20: $V0,\n 29: $V1,\n 30: $V2,\n 31: $V3,\n 32: $V4,\n 33: $V5,\n 34: 92,\n 35: 138,\n 36: $V6\n }, {\n 4: 93,\n 6: 94,\n 7: 95,\n 8: 96,\n 9: 97,\n 10: 98,\n 11: 99,\n 20: $V0,\n 29: $V1,\n 30: $V2,\n 31: $V3,\n 32: $V4,\n 33: $V5,\n 34: 92,\n 35: 139,\n 36: $V6\n }, o($V8, [2, 16]), {\n 12: 140,\n 13: $V7\n }, o($Vd, [2, 8], {\n 13: [1, 141]\n }), {\n 15: $Vc,\n 19: [1, 142]\n }, {\n 15: $Vc,\n 19: [1, 143]\n }, {\n 15: $Vc,\n 19: [1, 144]\n }, o($V8, [2, 28]), {\n 12: 66,\n 13: $V7,\n 18: $V9,\n 25: 145\n }, {\n 19: [1, 146]\n }, {\n 15: $Ve,\n 19: [1, 147]\n }, {\n 15: $Ve,\n 19: [1, 148]\n }, {\n 15: $Ve,\n 19: [1, 149]\n }, o($V8, [2, 33]), {\n 17: 150,\n 18: $Va\n }, {\n 15: $Vc,\n 19: [1, 151]\n }, {\n 15: $Vf,\n 19: [1, 152]\n }, {\n 15: $Vf,\n 19: [1, 153]\n }, {\n 15: $Vf,\n 19: [1, 154]\n }, o($V8, [2, 38]), {\n 15: $Ve,\n 19: [1, 155]\n }, {\n 15: $Ve,\n 19: [1, 156]\n }, {\n 15: $Ve,\n 19: [1, 157]\n }, o($V8, [2, 43]), {\n 15: $Vf,\n 19: [1, 158]\n }, {\n 15: $Vf,\n 19: [1, 159]\n }, {\n 15: $Vf,\n 19: [1, 160]\n }, o($V8, [2, 48]), {\n 18: $Vb,\n 27: 161\n }, {\n 15: $Vf,\n 19: [1, 162]\n }, {\n 15: $Vg,\n 19: [1, 163]\n }, {\n 15: $Vg,\n 19: [1, 164]\n }, {\n 15: $Vg,\n 19: [1, 165]\n }, o($V8, [2, 62]), {\n 4: 93,\n 6: 94,\n 7: 95,\n 8: 96,\n 9: 97,\n 10: 98,\n 11: 99,\n 20: $V0,\n 29: $V1,\n 30: $V2,\n 31: $V3,\n 32: $V4,\n 33: $V5,\n 34: 166,\n 36: $V6\n }, {\n 15: $Vh,\n 19: [1, 167]\n }, {\n 15: $Vh,\n 19: [1, 168]\n }, {\n 15: $Vh,\n 19: [1, 169]\n }, o($Vd, [2, 11]), o($Vd, [2, 9], {\n 13: [1, 170]\n }), o($V8, [2, 17]), o($V8, [2, 18]), o($V8, [2, 19]), o($Vd, [2, 26]), o($Vd, [2, 22]), o($V8, [2, 29]), o($V8, [2, 30]), o($V8, [2, 31]), o($Vd, [2, 13]), o($Vd, [2, 15]), o($V8, [2, 34]), o($V8, [2, 35]), o($V8, [2, 36]), o($V8, [2, 39]), o($V8, [2, 40]), o($V8, [2, 41]), o($V8, [2, 44]), o($V8, [2, 45]), o($V8, [2, 46]), o($Vd, [2, 23]), o($Vd, [2, 25]), o($V8, [2, 49]), o($V8, [2, 50]), o($V8, [2, 51]), o($Vd, [2, 60]), o($V8, [2, 63]), o($V8, [2, 64]), o($V8, [2, 65]), o($Vd, [2, 10])],\n defaultActions: {\n 16: [2, 1],\n 17: [2, 2],\n 18: [2, 3],\n 19: [2, 4],\n 20: [2, 5],\n 21: [2, 6],\n 22: [2, 7]\n },\n parseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this,\n stack = [0],\n vstack = [null],\n lstack = [],\n table = this.table,\n yytext = '',\n yylineno = 0,\n yyleng = 0,\n TERROR = 2,\n EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = {\n yy: {}\n };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n var lex = function lex() {\n var token;\n token = lexer.lex() || EOF;\n if (typeof token !== 'number') {\n token = self.symbols_[token] || token;\n }\n return token;\n };\n var symbol,\n state,\n action,\n r,\n yyval = {},\n p,\n len,\n newState,\n expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];\n }\n r = this.performAction.apply(yyval, [yytext, yyleng, yylineno, sharedState.yy, action[1], vstack, lstack].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = function () {\n var lexer = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function setInput(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function input() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function unput(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function more() {\n this._more = true;\n return this;\n },\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: function reject() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n },\n // retain first n characters of the match\n less: function less(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function pastInput() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...' : '') + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function upcomingInput() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function showPosition() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function test_match(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n // return next match in input\n next: function next() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: {},\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n // ignore\n break;\n case 1:\n return 18;\n case 2:\n return 19;\n case 3:\n return 13;\n case 4:\n return 20;\n case 5:\n return 29;\n case 6:\n return 30;\n case 7:\n return 31;\n case 8:\n return 32;\n case 9:\n return 33;\n case 10:\n return 36;\n case 11:\n return 15;\n case 12:\n return 24;\n case 13:\n return 23;\n case 14:\n return 21;\n case 15:\n return 22;\n case 16:\n return 5;\n case 17:\n return \"INVALID\";\n }\n },\n rules: [/^(?:\\s+)/, /^(?:\\()/, /^(?:\\))/, /^(?:-?[0-9]+(\\.[0-9]+)?([eE][\\-\\+]?[0-9]+)?)/, /^(?:POINT\\b)/, /^(?:LINESTRING\\b)/, /^(?:POLYGON\\b)/, /^(?:MULTIPOINT\\b)/, /^(?:MULTILINESTRING\\b)/, /^(?:MULTIPOLYGON\\b)/, /^(?:GEOMETRYCOLLECTION\\b)/, /^(?:,)/, /^(?:EMPTY\\b)/, /^(?:M\\b)/, /^(?:Z\\b)/, /^(?:ZM\\b)/, /^(?:$)/, /^(?:.)/],\n conditions: {\n \"INITIAL\": {\n \"rules\": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17],\n \"inclusive\": true\n }\n }\n };\n return lexer;\n}();\nparser.lexer = lexer;\nfunction Parser() {\n this.yy = {};\n}\nParser.prototype = parser;\nparser.Parser = Parser;\n\n// surface parsing errors to calling code https://github.com/zaach/jison/issues/218\nparser.yy.parseError = function (err) {\n throw err;\n};\nfunction PointArray(point) {\n this.data = [point];\n this.type = 'PointArray';\n}\nPointArray.prototype.addPoint = function (point) {\n if (point.type === 'PointArray') {\n this.data = this.data.concat(point.data);\n } else {\n this.data.push(point);\n }\n return this;\n};\nPointArray.prototype.toJSON = function () {\n return this.data;\n};\nfunction Ring(point) {\n this.data = point;\n this.type = 'Ring';\n}\nRing.prototype.toJSON = function () {\n var data = [];\n for (var i = 0; i < this.data.data.length; i++) {\n data.push(this.data.data[i]);\n }\n return data;\n};\nfunction RingList(ring) {\n this.data = [ring];\n this.type = 'RingList';\n}\nRingList.prototype.addRing = function (ring) {\n this.data.push(ring);\n return this;\n};\nRingList.prototype.toJSON = function () {\n var data = [];\n for (var i = 0; i < this.data.length; i++) {\n data.push(this.data[i].toJSON());\n }\n if (data.length === 1) {\n return data;\n } else {\n return data;\n }\n};\nfunction GeometryList(geometry) {\n this.data = [geometry];\n this.type = 'GeometryList';\n}\nGeometryList.prototype.addGeometry = function (geometry) {\n this.data.push(geometry);\n return this;\n};\nGeometryList.prototype.toJSON = function () {\n return this.data;\n};\nfunction PolygonList(polygon) {\n this.data = [polygon];\n this.type = 'PolygonList';\n}\nPolygonList.prototype.addPolygon = function (polygon) {\n this.data.push(polygon);\n return this;\n};\nPolygonList.prototype.toJSON = function () {\n var data = [];\n for (var i = 0; i < this.data.length; i++) {\n data = data.concat([this.data[i].toJSON()]);\n }\n return data;\n};\n\n/**\n * Converts a [WKT](https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry) geometry into a GeoJSON geometry.\n * @function\n * @param {string} WKT - The input WKT geometry.\n * @return {object} GeoJSON.\n *\n * ```js\n * import { wktToGeoJSON } from \"@terraformer/wkt\"\n *\n * wktToGeoJSON(\"POINT (-122.6764 45.5165)\");\n *\n * >> { \"type\": \"Point\", \"coordinates\": [ -122.6764, 45.5165 ] }\n * ```\n */\nvar wktToGeoJSON = function wktToGeoJSON(element) {\n var res;\n try {\n res = parser.parse(element);\n } catch (err) {\n throw Error('Unable to parse: ' + err);\n }\n return res;\n};\nvar arrayToRing = function arrayToRing(arr) {\n var parts = [];\n var ret = '';\n for (var i = 0; i < arr.length; i++) {\n parts.push(arr[i].join(' '));\n }\n ret += '(' + parts.join(', ') + ')';\n return ret;\n};\nvar pointToWKTPoint = function pointToWKTPoint(geojson) {\n var ret = 'POINT ';\n if (geojson.coordinates === undefined || geojson.coordinates.length === 0) {\n ret += 'EMPTY';\n return ret;\n } else if (geojson.coordinates.length === 3) {\n // 3d or time? default to 3d\n if (geojson.properties && geojson.properties.m === true) {\n ret += 'M ';\n } else {\n ret += 'Z ';\n }\n } else if (geojson.coordinates.length === 4) {\n // 3d and time\n ret += 'ZM ';\n }\n\n // include coordinates\n ret += '(' + geojson.coordinates.join(' ') + ')';\n return ret;\n};\nvar lineStringToWKTLineString = function lineStringToWKTLineString(geojson) {\n var ret = 'LINESTRING ';\n if (geojson.coordinates === undefined || geojson.coordinates.length === 0 || geojson.coordinates[0].length === 0) {\n ret += 'EMPTY';\n return ret;\n } else if (geojson.coordinates[0].length === 3) {\n if (geojson.properties && geojson.properties.m === true) {\n ret += 'M ';\n } else {\n ret += 'Z ';\n }\n } else if (geojson.coordinates[0].length === 4) {\n ret += 'ZM ';\n }\n ret += arrayToRing(geojson.coordinates);\n return ret;\n};\nvar polygonToWKTPolygon = function polygonToWKTPolygon(geojson) {\n var ret = 'POLYGON ';\n if (geojson.coordinates === undefined || geojson.coordinates.length === 0 || geojson.coordinates[0].length === 0) {\n ret += 'EMPTY';\n return ret;\n } else if (geojson.coordinates[0][0].length === 3) {\n if (geojson.properties && geojson.properties.m === true) {\n ret += 'M ';\n } else {\n ret += 'Z ';\n }\n } else if (geojson.coordinates[0][0].length === 4) {\n ret += 'ZM ';\n }\n ret += '(';\n var parts = [];\n for (var i = 0; i < geojson.coordinates.length; i++) {\n parts.push(arrayToRing(geojson.coordinates[i]));\n }\n ret += parts.join(', ');\n ret += ')';\n return ret;\n};\nvar multiPointToWKTMultiPoint = function multiPointToWKTMultiPoint(geojson) {\n var ret = 'MULTIPOINT ';\n if (geojson.coordinates === undefined || geojson.coordinates.length === 0 || geojson.coordinates[0].length === 0) {\n ret += 'EMPTY';\n return ret;\n } else if (geojson.coordinates[0].length === 3) {\n if (geojson.properties && geojson.properties.m === true) {\n ret += 'M ';\n } else {\n ret += 'Z ';\n }\n } else if (geojson.coordinates[0].length === 4) {\n ret += 'ZM ';\n }\n ret += arrayToRing(geojson.coordinates);\n return ret;\n};\nvar multiLineStringToWKTMultiLineString = function multiLineStringToWKTMultiLineString(geojson) {\n var ret = 'MULTILINESTRING ';\n if (geojson.coordinates === undefined || geojson.coordinates.length === 0 || geojson.coordinates[0].length === 0) {\n ret += 'EMPTY';\n return ret;\n } else if (geojson.coordinates[0][0].length === 3) {\n if (geojson.properties && geojson.properties.m === true) {\n ret += 'M ';\n } else {\n ret += 'Z ';\n }\n } else if (geojson.coordinates[0][0].length === 4) {\n ret += 'ZM ';\n }\n ret += '(';\n var parts = [];\n for (var i = 0; i < geojson.coordinates.length; i++) {\n parts.push(arrayToRing(geojson.coordinates[i]));\n }\n ret += parts.join(', ');\n ret += ')';\n return ret;\n};\nvar multiPolygonToWKTMultiPolygon = function multiPolygonToWKTMultiPolygon(geojson) {\n var ret = 'MULTIPOLYGON ';\n if (geojson.coordinates === undefined || geojson.coordinates.length === 0 || geojson.coordinates[0].length === 0) {\n ret += 'EMPTY';\n return ret;\n } else if (geojson.coordinates[0][0][0].length === 3) {\n if (geojson.properties && geojson.properties.m === true) {\n ret += 'M ';\n } else {\n ret += 'Z ';\n }\n } else if (geojson.coordinates[0][0][0].length === 4) {\n ret += 'ZM ';\n }\n ret += '(';\n var inner = [];\n for (var c = 0; c < geojson.coordinates.length; c++) {\n var it = '(';\n var parts = [];\n for (var i = 0; i < geojson.coordinates[c].length; i++) {\n parts.push(arrayToRing(geojson.coordinates[c][i]));\n }\n it += parts.join(', ');\n it += ')';\n inner.push(it);\n }\n ret += inner.join(', ');\n ret += ')';\n return ret;\n};\n\n/**\n * Converts a GeoJSON geometry or GeometryCollection into a [WKT](https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry) string.\n * @function\n * @param {object} GeoJSON - The input GeoJSON geometry or GeometryCollection.\n * @return {string} WKT.\n * ```js\n * import { geojsonToWKT } from \"@terraformer/wkt\"\n *\n * const geojsonPoint = {\n * \"type\": \"Point\",\n * \"coordinates\": [-122.6764, 45.5165]\n * }\n *\n * geojsonToWKT(geojsonPoint)\n *\n * >> \"POINT (-122.6764 45.5165)\"\n * ```\n */\nvar geojsonToWKT = function geojsonToWKT(geojson) {\n switch (geojson.type) {\n case 'Point':\n return pointToWKTPoint(geojson);\n case 'LineString':\n return lineStringToWKTLineString(geojson);\n case 'Polygon':\n return polygonToWKTPolygon(geojson);\n case 'MultiPoint':\n return multiPointToWKTMultiPoint(geojson);\n case 'MultiLineString':\n return multiLineStringToWKTMultiLineString(geojson);\n case 'MultiPolygon':\n return multiPolygonToWKTMultiPolygon(geojson);\n case 'GeometryCollection':\n var ret = 'GEOMETRYCOLLECTION';\n var parts = [];\n for (var i = 0; i < geojson.geometries.length; i++) {\n parts.push(geojsonToWKT(geojson.geometries[i]));\n }\n return ret + '(' + parts.join(', ') + ')';\n default:\n throw Error('Unknown Type: ' + geojson.type);\n }\n};\n\nexport { Parser, geojsonToWKT, parser, wktToGeoJSON };\n","import { wktToGeoJSON } from \"@terraformer/wkt\";\nimport { KueryNode } from \"../types\";\nexport function toOpenSearchQuery(node: KueryNode) {\n const [fieldNameArg, operator, value] = node.arguments;\n\n return {\n bool: {\n must: [\n {\n exists: {\n field: fieldNameArg.value,\n },\n },\n {\n geo_shape: {\n [fieldNameArg.value]: {\n relation: operator,\n shape: wktToGeoJSON(value.value),\n },\n },\n },\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 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\";\nimport * as geospatial from \"./geospatial\";\n\nexport const functions: any = {\n is,\n and,\n or,\n not,\n range,\n exists,\n nested,\n geospatial,\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","import { 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 =\n | \"is\"\n | \"and\"\n | \"or\"\n | \"not\"\n | \"range\"\n | \"exists\"\n | \"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\n .filter((f) => f.type === \"string\")\n .map((field) => `${field.name} ILIKE '%${valueArg.value}%'`)\n .join(\" OR \")})`;\n }\n if (\n fields &&\n !isValue &&\n (valueArg.value === true || valueArg.value === false)\n ) {\n return `(${fields\n .filter((f) => f.type === \"boolean\")\n .map((field) => `${field.name}=${valueArg.value}`)\n .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 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};\nconst geospatial = (node: KueryNode) => {\n const [fieldName, operator, value] = node.arguments;\n console.log(fieldName, operator, value);\n if (operator === \"within\") return `WITHIN(${fieldName.value},${value.value})`;\n throw Error(`Unsupported GEO Operator:${operator}`);\n};\nexport const functions = {\n is,\n and,\n or,\n not,\n range,\n exists,\n nested,\n geospatial,\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\";\nimport { wktToGeoJSON } from \"@terraformer/wkt\";\n\nexport const KQL_WILDCARD_SYMBOL = wildcardSymbol;\nexport const KQL_NODE_TYPE_WILDCARD = \"wildcard\";\nexport type FunctionName =\n | \"is\"\n | \"and\"\n | \"or\"\n | \"not\"\n | \"range\"\n | \"exists\"\n | \"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 =\n valueArg.type === \"wildcard\" &&\n (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.map((child: KueryNode) => {\n return toMongo(child);\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};\nconst exists = (node: KueryNode) => {\n const [fieldNameArg] = node.arguments;\n return { [toMongo(fieldNameArg)]: { $ne: null } };\n};\n\nconst nested = (node: KueryNode) => {\n console.warn(\"TODO Implement nested search\", node);\n return \"\";\n};\nconst geospatial = (node: KueryNode) => {\n const [fieldName, operator, value] = node.arguments;\n if (operator == \"within\") {\n return { [fieldName.value]: { $geoWithin: wktToGeoJSON(value.value) } };\n }\n};\nexport const functions = {\n is,\n and,\n or,\n not,\n range,\n exists,\n nested,\n geospatial,\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 { FieldTypes, GeospatialOperators, KueryNode } from \"../..\";\nimport { LiteralTypeBuildNode } from \"../kuery\";\nimport { wildcardSymbol } from \"../kuery/node_types/wildcard\";\n\nexport const KQL_WILDCARD_SYMBOL = wildcardSymbol;\nexport const KQL_NODE_TYPE_WILDCARD = \"wildcard\";\nexport type FunctionName =\n | \"is\"\n | \"and\"\n | \"or\"\n | \"not\"\n | \"range\"\n | \"exists\"\n | \"nested\";\nconst and = (node: KueryNode, fields?: FieldTypes[]) => {\n const children = node.arguments || [];\n let html =\n \"<span class='and-expression'>\" +\n children\n .map((child: KueryNode) => {\n return toHTML(child, fields);\n })\n .join(\" AND \") +\n \"</span>\";\n if (node.group !== undefined) {\n try {\n let { fieldName, values } = groupVariables(children);\n return `<span class=\"or-expression\">${fieldName}:(${values.join(\n \" OR \"\n )})</span>`;\n } catch (error) {\n console.log(error);\n }\n return `( ${html} )`;\n }\n return html;\n};\n\nconst or = (node: KueryNode, fields?: FieldTypes[]) => {\n const children = node.arguments || [];\n let args = children\n .map((child: KueryNode) => {\n return toHTML(child, fields);\n })\n .join(\" OR \");\n let html = `<span class=\"or-expression\">${args}</span>`;\n if (node.group !== undefined) {\n try {\n let { fieldName, values } = groupVariables(children);\n return `<span class=\"or-expression\">${fieldName}:(${values.join(\n \" OR \"\n )})</span>`;\n } catch (error) {\n console.log(error);\n }\n return `( ${html} )`;\n }\n\n return html;\n};\n\nconst extractLiteralValue = (\n fieldName: string,\n valueArg: LiteralTypeBuildNode,\n isPhrase: LiteralTypeBuildNode,\n fields?: FieldTypes[]\n) => {\n let value = toHTML(valueArg);\n if (isPhrase.value) {\n value = `\"${value}\"`;\n }\n if (fields && fields.find((f) => f.name === fieldName)?.type === \"boolean\") {\n value = `<span class=\"value-constant\">${valueArg.value}</span>`;\n }\n return `<span class=\"expression-value\">${value}</span>`;\n};\nconst extractFieldName = (fieldNameArg: any) => {\n let fieldName = toHTML(fieldNameArg);\n return `<span class=\"field-name\">${fieldName}</span>`;\n};\nconst is = (node: KueryNode, fields?: FieldTypes[]) => {\n var {\n arguments: [fieldNameArg, valueArg, isPhrase],\n } = node;\n let operator = \":\";\n let fieldName = extractFieldName(fieldNameArg);\n let value = extractLiteralValue(fieldName, valueArg, isPhrase, fields);\n return `<span class=\"is-expression\">${fieldName}${operator}${value}</span>`;\n};\n\nconst not = (node: KueryNode, fields?: FieldTypes[]) => {\n const [argument] = node.arguments;\n return `<span class=\"not-expression\">not ${toHTML(argument, fields)}</span>`;\n};\n\nconst groupVariables = (\n nodes: KueryNode[],\n fieldName: string | undefined = undefined,\n fields?: FieldTypes[]\n) => {\n let values: string[] = [];\n if (!fieldName && nodes[0].function == \"is\") {\n fieldName = extractFieldName(nodes[0].arguments[0]);\n }\n if (!fieldName) {\n throw Error(\n \"Cannot group variables because they don't have a groupable field\"\n );\n }\n for (let node of nodes) {\n var {\n arguments: [fieldNameArg, valueArg, isPhrase],\n } = node;\n if (node.function == \"is\") {\n if (extractFieldName(fieldNameArg) !== fieldName) {\n throw Error(\n \"Cannot group variables because they aren't for the same field\"\n );\n }\n let value = extractLiteralValue(fieldName, valueArg, isPhrase, fields);\n values.push(value);\n } else if (node.function === \"or\" || node.function === \"and\") {\n let grouped = groupVariables(node.arguments, fieldName, fields);\n values.push(...grouped.values);\n } else {\n throw Error(\n \"Cannot group variables because they aren't for the same field\"\n );\n }\n }\n return { fieldName, values };\n};\n\nconst AST_TO_CQL = {\n gt: \">\",\n lt: \"<\",\n gte: \">=\",\n 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 = toHTML(valueArg);\n if (valueArg.type === \"literal\") {\n value = `${value}`;\n }\n //double check that its a number else quote it\n if (Number.isNaN(parseFloat(value))) {\n value = `<span class=\"expression-value\">\"${value}\"</span>`;\n }\n return `<span class=\"range-expression\"><span class=\"field-name\">${fieldNameArg.value}</span> ${opsign} <span class=\"field-numeric\">${value}</span></span>`;\n};\n\nconst exists = (node: KueryNode) => {\n const [fieldNameArg] = node.arguments;\n return `<span class=\"exists-expression\"><span class=\"field-name\">${fieldNameArg.value}</span>: *</span>`;\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};\nconst geospatial = (node: KueryNode) => {\n const [fieldName, operator, value] = node.arguments;\n console.log(fieldName, operator, value);\n let opsine = GeospatialOperators[operator].value;\n return `<span><span class=\"field-name\">${fieldName.value}</span> ${opsine}<span title=\"${value.value}\">--GEOMETRY--</span></span>`;\n};\nexport const functions = {\n is,\n and,\n or,\n not,\n range,\n exists,\n nested,\n geospatial,\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 `<span class=\"wild-card\">${value\n .split(KQL_WILDCARD_SYMBOL)\n .join(\"*\")}</span>`;\n },\n};\n\nexport const toHTML = (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 --dialog-border-radius: var(--spectric-border-radius, 0.4em);\n }\n dialog {\n border: 0px;\n --spectric-background: var(--dialog-background);\n --panel-color: var(--dialog-background);\n padding: 0;\n border-radius: var(--dialog-border-radius);\n overflow: hidden;\n }\n dialog[open] {\n display: flex;\n }\n spectric-panel {\n margin: 0px;\n }\n dialog::backdrop {\n background-color: transparent;\n }\n dialog.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\n h3 {\n padding: 1em var(--dialog-padding);\n margin: 0;\n }\n\n spectric-button {\n position: absolute;\n right: 0;\n top: 0;\n }\n`;\n","import { css } from \"lit\";\n\nconst even = css`\n --panel-color: var(--spectric-background,#f4f4f4);\n --panel-color-inverse: var(--spectric-background-inverse,#ffffff);\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(--panel-color-inverse);\n color:var(--text-secondary,#3c4c5b);\n --spectric-text-primary:var(--text-primary,#161616);\n --spectric-text-secondary:var(--text-secondary,#525252);\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,#525252);\n --spectric-text-secondary:var(--text-primary,#161616);\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, PropertyValues } from 'lit';\nimport styles from './panel.css.ts';\nimport { customElement } from 'lit/decorators/custom-element.js';\nimport { property } from 'lit/decorators/property.js';\nimport { DisposableElement } from '../classes/DisposibleElement.ts';\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 DisposableElement {\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 constructor() {\n super()\n //@ts-ignore FIXME, make DisposableElement generic and add event map to DisposableElement so it knows about the events and the eveent handlers\n this.addDisposableListener(this, \"layer-add\", () => {\n this.layers = this.querySelectorAll(\"spectric-panel\")\n }, { capture: true })\n }\n connectedCallback(): void {\n super.connectedCallback()\n this.dispatchEvent(\n new CustomEvent(\"layer-add\", {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n layer: this,\n level: this.level,\n },\n })\n );\n }\n update(changed: PropertyValues) {\n this.layers = this.querySelectorAll(\n \"spectric-panel\"\n );\n this.layers.forEach((item: SpectricPanel) => {\n (item).setAttribute(\n 'level',\n ((this.level + 1) % 4).toString()\n );\n });\n super.update(changed)\n }\n\n render() {\n return html` <slot></slot> `;\n }\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 {\n HTMLElementTagWithEvents,\n ReactElementWithPropsAndEvents,\n} from \"../types\";\nimport \"../Panel\";\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 * 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 * @slot footer - Space at the bottom of the dialog that you can put buttons or other tools\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) =>\n dialog.addEventListener(\"keydown\", this._handleKeyDown)\n );\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n this.dialogElement.then((dialog) =>\n dialog.removeEventListener(\"keydown\", this._handleKeyDown)\n );\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(\n new CustomEvent(\"close\", {\n bubbles: true,\n composed: true,\n })\n );\n };\n\n protected render(): unknown {\n return html`\n <dialog\n class=${this.hideBackdrop ? \"\" : \"backdrop\"}\n @close=${this._onClose}\n @click=${this.clickHandler}\n >\n <spectric-panel>\n <div class=\"modal\">\n ${this.dismissable\n ? html`<spectric-button\n variant=\"text\"\n size=\"xsmall\"\n @click=${() => {\n this.open = false;\n }}\n icon\n >X</spectric-button\n >`\n : 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 namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link DialogElement}\n */\n [DialogElementTag]: ReactElementWithPropsAndEvents<\n DialogElement,\n DialogProps,\n DialogEvents\n >;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link DialogElement}\n */\n [DialogElementTag]: ReactElementWithPropsAndEvents<\n DialogElement,\n DialogProps,\n DialogEvents\n >;\n }\n }\n }\n}\n","import { html } from \"lit\";\nimport { DialogElement } from \"../dialog/dialog\";\nimport { createRef, ref } from \"lit/directives/ref.js\";\nimport { SpectricButton } from \"../Button\";\nimport { LabelValuesOrStrings, toLabelValue } from \"./QueryBar\";\n\nexport const DateTimePopup = async (values: LabelValuesOrStrings) => {\n let value: string | undefined;\n let buttonRef = createRef<SpectricButton>();\n\n await new Promise((resolve) => {\n let dialog = DialogElement.display(\n {},\n html`\n <div class=\"query-bar-date-quick-select\">\n ${values.map((v) => {\n let labelValue = toLabelValue(v);\n return html`<a\n href=\"#\"\n @click=${(e: MouseEvent) => {\n e.preventDefault();\n value = `\"${labelValue.label}\"`;\n resolve(value);\n dialog.open = false;\n }}\n >${labelValue.value}</a\n >`;\n })}\n </div>\n <spectric-input\n variant=\"datetime-local\"\n @change=${(e: any) => {\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 }}\n ></spectric-input>\n <spectric-button\n ${ref(buttonRef)}\n .disabled=${true}\n @click=${() => {\n resolve(value);\n dialog.open = false;\n }}\n >Submit</spectric-button\n >\n `\n );\n });\n return value;\n};\n","import { html } from \"lit\";\nimport { DialogElement } from \"../dialog/dialog\";\nimport { createRef, ref } from \"lit/directives/ref.js\";\nimport { SpectricButton } from \"../Button\";\nimport { LabelValuesOrStrings, toLabelValue } from \"./QueryBar\";\n\nexport const GeoJSONPopup = async (values: LabelValuesOrStrings) => {\n let value: string | undefined;\n let buttonRef = createRef<SpectricButton>();\n\n await new Promise((resolve) => {\n let dialog = DialogElement.display(\n {},\n html`\n <div class=\"query-bar-date-quick-select\">\n ${values.map((v) => {\n let labelValue = toLabelValue(v);\n return html`<a\n href=\"#\"\n @click=${(e: MouseEvent) => {\n e.preventDefault();\n value = `\"${labelValue.value}\"`;\n resolve(value);\n dialog.open = false;\n }}\n >${labelValue.label}</a\n >`;\n })}\n </div>\n <div>TODO DISPLAY MAP with drawing tools HERE!!</div>\n <spectric-button\n ${ref(buttonRef)}\n .disabled=${true}\n @click=${() => {\n resolve(value);\n dialog.open = false;\n }}\n >Submit</spectric-button\n >\n `\n );\n });\n return value;\n};\n","export const EDIT = \"🖉\";\nexport const DELETE = \"🗑\";\nexport const ARROW_LEFT = \"🠈\";\nexport const ARROW_RIGHT = \"🠊\";\nexport const ARROW_UP = \"🠉\";\nexport const ARROW_DOWN = \"🠋\";\n","import{nothing as t,noChange as i}from\"../lit-html.js\";import{Directive as r,PartType as s,directive as n}from\"../directive.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class e extends r{constructor(i){if(super(i),this.it=t,i.type!==s.CHILD)throw Error(this.constructor.directiveName+\"() can only be used in child bindings\")}render(r){if(r===t||null==r)return this._t=void 0,this.it=r;if(r===i)return r;if(\"string\"!=typeof r)throw Error(this.constructor.directiveName+\"() called with a non-string value\");if(r===this.it)return this._t;this.it=r;const s=[r];return s.raw=s,this._t={_$litType$:this.constructor.resultType,strings:s,values:[]}}}e.directiveName=\"unsafeHTML\",e.resultType=1;const o=n(e);export{e as UnsafeHTMLDirective,o as unsafeHTML};\n//# sourceMappingURL=unsafe-html.js.map\n","import { html, LitElement, PropertyValues } from \"lit\";\nimport * as kuery from \"./querylanguage/kuery\";\nimport {\n customElement,\n property,\n query,\n queryAsync,\n state,\n} from \"lit/decorators.js\";\nimport { SpectricInput } from \"../input\";\nimport { JsonObject } from \"./types\";\nimport {\n HTMLElementTagWithEvents,\n ReactElementWithPropsAndEvents,\n} from \"../types\";\nimport \"./QueryBar.css\";\nimport { PopoverElement } from \"../tooltip/popover\";\n\nimport { DateTimePopup } from \"./dateTimePopup\";\nimport { GeoJSONPopup } from \"./geojsonPopup\";\nimport { DELETE, EDIT } from \"../symbols\";\nimport { unsafeHTML } from \"lit/directives/unsafe-html.js\";\nexport type FieldTypes = {\n name: string;\n type: \"string\" | \"number\" | \"boolean\" | \"integer\" | \"object\";\n format?: \"date-time\" | \"geojson\";\n};\ntype SuggestionType =\n | \"conjunction\"\n | \"field\"\n | \"operator\"\n | \"value\"\n | \"geo_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?: (\n field: string,\n text: string\n ) => Promise<LabelValuesOrStrings>;\n\n /**\n * Input placeholder\n */\n placeholder?: string;\n}\ntype LabelValue = {\n label?: string;\n value: string;\n};\nexport type LabelValueOrString = LabelValue | string;\nexport type LabelValuesOrStrings = (LabelValue | string)[];\ntype Completion = LabelValue & {\n start: number;\n end: number;\n type: SuggestionType;\n onSelect?: () => Promise<string | undefined | number>;\n};\nexport const toLabelValue = (value: LabelValueOrString) => {\n if (typeof value === \"string\") {\n return { label: value, value };\n }\n return { label: value.label || value.value, value: value.value };\n};\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};\nexport const GeospatialOperators: Record<string, LabelValue> = {\n within: { value: \" <@ \", label: \" is contained within geometry\" },\n};\nconst ObjectOperators: Record<string, LabelValue> = {\n exists: { value: \": *\", label: \" exists in any form\" },\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[] = [\n { 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(\n Object.entries(NumberOperators).map(([key, labelValue]) => [\n key,\n {\n value: labelValue.value,\n label: (labelValue.label || \"\").replace(\"value\", \"date-time\"),\n },\n ])\n);\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 @state()\n valueHelper: any;\n @state()\n highlightedSyntax: any;\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?: PopoverElement;\n @query(\".valueHelper\")\n _valueHelper?: PopoverElement;\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 _checkClickLocation = async (e: MouseEvent) => {\n console.log(e);\n let suggestion: Suggestion | null = null;\n try {\n suggestion = this._getSuggestion();\n } catch (error) {\n console.log(error);\n }\n if (!suggestion) {\n return;\n }\n this._showValueHelper(suggestion);\n };\n _setValue = (value: string | undefined, suggestion: Suggestion) => {\n if (value !== undefined) {\n this.value =\n this.value.substring(0, suggestion.start) +\n value +\n this.value.substring(suggestion.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(\n suggestion.start + value.length,\n suggestion.start + value.length\n );\n if (this._valueHelper) {\n this._valueHelper.hidePopover();\n }\n }\n };\n /**\n * Value helper is a popover above the query bar that will help users set/change/clear the value if it is complex (like date time or geoshape)\n * @param suggestion\n */\n _showValueHelper = async (suggestion: Suggestion) => {\n this.valueHelper = undefined;\n if (!suggestion || suggestion.start === suggestion.end) {\n return;\n }\n let field = this.fields.find(\n (field) => field.name === suggestion.fieldName\n );\n\n if (!field) {\n return;\n }\n let values = await this.getValuesForField(\n suggestion.fieldName,\n suggestion.prefix\n );\n if (field.format === \"date-time\" && !values.length) {\n values = [\"now-1m\", \"now-1d\", \"now-1M\"];\n }\n let modalFunction:\n | ((values: LabelValuesOrStrings) => Promise<string | undefined>)\n | undefined = undefined;\n if (field.format == \"date-time\") {\n modalFunction = DateTimePopup;\n } else if (field.format == \"geojson\") {\n modalFunction = GeoJSONPopup;\n }\n if (!this.completions.length && !this._autocomplete?.isOpen()) {\n this.valueHelper = html`<div>\n <spectric-button\n tooltip=\"Delete Value\"\n tooltipPosition=\"top\"\n icon\n size=\"xsmall\"\n @click=${() => {\n this._setValue(\"\", suggestion);\n }}\n >${DELETE}</spectric-button\n >\n ${modalFunction\n ? html`<spectric-button\n icon\n tooltip=\"Edit Value\"\n tooltipPosition=\"top\"\n size=\"xsmall\"\n @click=${async () => {\n this._setValue(await modalFunction(values), suggestion);\n }}\n >${EDIT}</spectric-button\n >`\n : null}\n </div>`;\n this._valueHelper?.showPopover();\n }\n };\n _getSuggestion = () => {\n let value = this.value;\n if (this._input.selectionStart !== null) {\n value =\n value.substring(0, this._input.selectionStart) +\n \"©kuery-cursor©\" +\n value.substring(this._input.selectionStart);\n }\n //FIXME: make auto complete work well.\n let suggestion = kuery.parse(value, {\n parseCursor: true,\n cursorSymbol: \"©kuery-cursor©\",\n allowLeadingWildcards: false,\n }) as unknown as Suggestion;\n this._showValueHelper(suggestion);\n return suggestion;\n };\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(\n this.value.length - 2,\n this.value.length - 2\n );\n }\n let suggestions = this._getSuggestion();\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 if (this.value.trim().length) {\n this.highlightedSyntax = unsafeHTML(kuery.toHTML(ast, this.fields));\n }else{\n this.highlightedSyntax = \"\"\n }\n this.dispatchEvent(event);\n };\n\n getValuesForField = async (\n field: string,\n text: string\n ): Promise<LabelValuesOrStrings> => {\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: Completion[] = [];\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(\n ...[\"and \", \"or \"].map((value) => ({\n type,\n value,\n start: end,\n end: end,\n }))\n );\n }\n if (type === \"field\") {\n let fieldCompletions = this.fields\n .filter(\n (field) =>\n field.name.includes(suggestion.fieldName) ||\n field.name.includes(suggestion.prefix)\n )\n .map((f) => {\n return [{ type, value: f.name, start, end }];\n })\n .flat();\n completions.push(...fieldCompletions);\n }\n if (type === \"operator\") {\n let fieldType = this.fields.find(\n (field) => field.name === suggestion.fieldName\n );\n if (fieldType) {\n if ([\"number\", \"integer\"].includes(fieldType.type)) {\n completions.push(\n ...Object.values(NumberOperators).map((value) => ({\n type,\n ...value,\n start: end,\n end: end,\n }))\n );\n } else if (fieldType.type === \"object\") {\n if (fieldType.format == \"geojson\") {\n completions.push(\n ...Object.values(GeospatialOperators).map((value) => ({\n type,\n ...value,\n start: end,\n end: end,\n onSelect: async () => {\n let values = await this.getValuesForField(\n suggestion.fieldName,\n suggestion.prefix\n );\n return await GeoJSONPopup(values);\n },\n }))\n );\n }\n completions.push(\n ...Object.values(ObjectOperators).map((value) => ({\n type,\n ...value,\n start: end,\n end: end,\n }))\n );\n } else if (fieldType.type === \"string\") {\n if (fieldType.format === \"date-time\") {\n completions.push(\n ...Object.values(DateOperators).map((value) => ({\n type,\n ...value,\n start: end,\n end: end,\n onSelect: async () => {\n let values = await this.getValuesForField(\n suggestion.fieldName,\n suggestion.prefix\n );\n if (values.length === 0) {\n values = [\"now-1m\", \"now-1d\", \"now-1M\"];\n }\n let value = await DateTimePopup(values);\n return value;\n },\n }))\n );\n } else {\n completions.push(\n ...Object.values(StringOperators).map((value) => ({\n type,\n ...value,\n start: end,\n end: end,\n }))\n );\n }\n } else if (fieldType.type === \"boolean\") {\n completions.push(\n ...BoolOperators.map((value) => ({\n type,\n ...value,\n start: end,\n end: end,\n }))\n );\n }\n }\n }\n if (type === \"value\") {\n let fieldType = this.fields.find(\n (field) => field.name === suggestion.fieldName\n );\n if (\n (fieldType && fieldType.type == \"number\") ||\n fieldType?.type == \"integer\"\n ) {\n //Do nothing for numbers... Maybe show a min/max?\n } else if (fieldType && fieldType.type == \"boolean\") {\n completions.push(\n { type, value: \"true\", start, end },\n { type, value: \"false\", start, end }\n );\n } else {\n console.log(\n `invoke callback to get values for ${suggestion.fieldName}`\n );\n let values = await this.getValuesForField(\n suggestion.fieldName,\n suggestion.prefix\n );\n if (fieldType?.type === \"string\") {\n //quote the values\n values = values.map((v) => `\"${v}\"`);\n }\n completions.push(\n ...values\n .map(toLabelValue)\n .map((value) => ({ type, value: value.value, start, end }))\n );\n }\n }\n }\n this.completions = completions;\n if (this.completions.length && this._autocomplete) {\n this._valueHelper?.hidePopover();\n let { width } = this._input.getBoundingClientRect();\n this._autocomplete.maxWidth = width;\n this._autocomplete.showPopover();\n\n this._autocomplete.style.width = `${width - 15}px`;\n let popover = this._autocomplete.querySelector<HTMLElement>(\"[popover]\");\n if (popover) {\n popover.style.width = `${width - 15}px`;\n }\n } else {\n this._autocomplete?.hidePopover();\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) + 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 value = String(value);\n this.value += value;\n this._input.setSelectionRange(\n insertIndex + value.length,\n insertIndex + value.length\n );\n }\n }\n this._autocomplete?.hidePopover();\n this.completionIndex = 0;\n this.completions = [];\n setTimeout(() => {\n this._parseQuery();\n this._input.focus();\n this._showValueHelper(this._getSuggestion());\n });\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 (\n [\"ArrowUp\", \"ArrowDown\", \"Enter\", \"Tab\"].includes(e.key) &&\n this.suggestion\n ) {\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 <div class=\"syntax-highlighter\">${this.highlightedSyntax}</div>\n <spectric-input\n .value=${this.value}\n .placeholder=${this.placeholder}\n style=${`anchor-name:--${this.uuid};`}\n autocomplete=\"off\"\n @input=${this._parseQuery}\n @keydown=${this._handleArrows}\n @change=${(e: Event) => e.stopPropagation()}\n @click=${this._checkClickLocation}\n ></spectric-input>\n <spectric-popover\n class=\"valueHelper\"\n .text=${this.valueHelper}\n position=\"top\"\n ></spectric-popover>\n <spectric-popover\n position=\"bottom\"\n class=\"autocomplete\"\n .text=${this.completions.map(\n (option: Completion, index) =>\n html`<div\n @click=${() => {\n this.completionIndex = index;\n this._selectCompletion();\n }}\n class=${this.completionIndex == index\n ? \"option active\"\n : \"option\"}\n >\n <span class=\"optiontype ${option.type}\">${option.type}</span>\n <span class=\"value\">${option.value}</span>\n <span class=\"label\">${option.label}</span>\n </div> `\n )}\n >\n </spectric-popover>\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<\n SpectricQuery,\n IQueryProps,\n QueryEventMap\n >;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * {@link SpectricQuery}\n */\n \"spectric-query\": ReactElementWithPropsAndEvents<\n SpectricQuery,\n IQueryProps,\n QueryEventMap\n >;\n }\n }\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\nexport const SPECTRIC_CSS_VARIABLES = [\"--spectric-background\",\n \"--spectric-background-hover\",\n \"--spectric-background-inverse\",\n \"--spectric-background-inverse-hover\",\n \"--spectric-border-radius\",\n \"--spectric-primary\",\n \"--spectric-secondary\",\n \"--spectric-tertiary\",\n \"--spectric-disabled\",\n \"--panel-color\",\n \"--panel-color-inverse\",\n \"--spectric-border-disabled\",\n \"--spectric-input-color\",\n \"--spectric-input-bottom\",\n \"--spectric-text-on-color\",\n \"--spectric-text-on-color-disabled\",\n \"--spectric-text-placeholder\",\n \"--spectric-text-primary\",\n \"--spectric-text-secondary\",\n \"--spectric-button-separator\",\n \"--spectric-button-primary\",\n \"--spectric-button-secondary\",\n \"--spectric-button-tertiary\",\n \"--spectric-button-danger-primary\",\n \"--spectric-button-danger-secondary\",\n \"--spectric-button-danger-active\",\n \"--spectric-button-primary-active\",\n \"--spectric-button-secondary-active\",\n \"--spectric-button-tertiary-active\",\n \"--spectric-button-danger-hover\",\n \"--spectric-button-primary-hover\",\n \"--spectric-button-secondary-hover\",\n \"--spectric-button-tertiary-hover\",\n \"--spectric-text-on-color-disabled\"]\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 {\n HTMLElementTagWithEvents,\n ReactElementWithPropsAndEvents,\n} from \"../types\";\nexport const PaginationElementTag = \"spectric-pagination\";\nimport \"./pagination.css\";\nimport { ButtonSizesTypes } from \"../Button\";\nimport { ARROW_LEFT, ARROW_RIGHT } from \"../symbols\";\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\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 update(_changedProperties: PropertyValues): void {\n if (\n _changedProperties.has(\"pageSize\") &&\n !this.pageSizeOptions.includes(this.pageSize)\n ) {\n this.pageSizeOptions = [...this.pageSizeOptions, this.pageSize].sort(\n (a, b) => a - b\n );\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 super.update(_changedProperties);\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(\n new CustomEvent<PaginationChangeProps>(\"change\", {\n detail: { page, pageSize },\n })\n );\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(\n this.totalItems / this.pageSize\n )}`;\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\n @change=${this._handleSizeChange}\n .value=${String(this.pageSize)}\n >\n ${this.pageSizeOptions.map(\n (size) =>\n html`<option\n .value=${String(size)}\n class=${String(size) === String(this.pageSize)\n ? \"selected\"\n : \"\"}\n >\n ${size}\n </option>`\n )}\n </select>\n </div>\n ${this.totalItems\n ? html`\n <div class=\"spectric-pagination-text\">\n ${`Items ${(this.page - 1) * this.pageSize}-${Math.min(\n this.page * this.pageSize,\n this.totalItems\n )} of ${this.totalItems}`}\n </div>\n <div class=\"spectric-pagination-container\">\n <div>${pageText}</div>\n <div>\n <spectric-button\n size=${this.size}\n ?disabled=${this.page === 1}\n @click=${this._handlePageDown}\n icon\n >${ARROW_LEFT}</spectric-button\n >\n <spectric-button\n size=${this.size}\n ?disabled=${nextPageDisabled}\n @click=${this._handlePageUp}\n icon\n >${ARROW_RIGHT}</spectric-button\n >\n </div>\n </div>\n `\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<\n PaginationElement,\n PaginationEvents\n >;\n }\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link PaginationElement}\n */\n [PaginationElementTag]: ReactElementWithPropsAndEvents<\n PaginationElement,\n PaginationProps,\n PaginationEvents\n >;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link PaginationElement}\n */\n [PaginationElementTag]: ReactElementWithPropsAndEvents<\n PaginationElement,\n PaginationProps,\n PaginationEvents\n >;\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 {\n ColumnSettings,\n SpectricTableElement,\n TableSortDirection,\n} from \"./table\";\nimport { DisposableElement } from \"../../classes\";\nimport { ARROW_DOWN, ARROW_UP } from \"../symbols\";\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{\n @property({ type: Array, attribute: false })\n columns: ColumnSettings<T>[] = [];\n @state()\n private _resizeStart?: { event: MouseEvent; column: ColumnSettings<T> };\n @property({ type: Object, attribute: false })\n table!: SpectricTableElement<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 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 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 ? ARROW_UP\n : column.sortDirection == TableSortDirection.descending\n ? ARROW_DOWN\n : ``;\n let sortClass = column.sortDirection || TableSortDirection.none;\n let resizable = 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 let title = column.title || column.key;\n if (typeof title == \"function\") {\n title = title(this.table) || undefined;\n }\n return html` <td\n @click=${() => this._handleSortChange(column)}\n style=\"${columnWidth}\"\n >\n ${resizeHandle}\n <div class=${classes.join(\" \")}>\n ${title}\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 {\n HTMLElementTagWithEvents,\n ReactElementWithPropsAndEvents,\n} 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 @property({ type: Object, attribute: false })\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 _emitFilter(filter: FilterEvent<T>) {\n this.dispatchEvent(\n new CustomEvent<FilterEvent<T>>(\"filter\", {\n composed: true,\n bubbles: true,\n detail: filter,\n })\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 _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 _displayOverflowTooltip = () => {\n if (this.column.disableCellOverflowTooltip) {\n this.overflow = null;\n return;\n }\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 (\n spanBounds.width * spanBounds.height >\n divBounds.width * divBounds.height\n ) {\n console.log(\n \"We need to show a tooltip with the content because we are overflowing\"\n );\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 || this.column.cellActions?.length) {\n classes.push(\"hasActions\");\n }\n const buttonSize = this.table.getCellActionButtonSize();\n let filterButtons = cache(\n this.column.filterable\n ? html`\n <spectric-button\n @click=${this._handleFilterOut}\n .size=${buttonSize}\n variant=\"text\"\n icon\n tooltip=\"Filter Out Value\"\n >-</spectric-button\n >\n <spectric-button\n @click=${this._handleFilterFor}\n .size=${buttonSize}\n variant=\"text\"\n icon\n tooltip=\"Filter For Value\"\n >+</spectric-button\n >\n `\n : null\n );\n\n let actions = (this.column.cellActions || []).map((action) => {\n return html`<spectric-button\n @click=${() => action.onClick(this.row, this.column)}\n .size=${buttonSize}\n variant=\"text\"\n icon\n .tooltip=${action.tooltip}\n >${action.icon}</spectric-button\n >`;\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\n style=${styleMap(this.styleRules)}\n @mouseenter=${this._displayOverflowTooltip}\n >\n <div class=\"table-cell-actions ${buttonSize}\">\n ${actions} ${filterButtons}\n </div>\n <div class=${classes.join(\" \")}>\n ${this.overflow\n ? html`<spectric-tooltip .text=${this.overflow}></spectric-tooltip>`\n : null}<span>${rendered}</span>\n </div>\n </td>\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<\n TableCellElement<any>,\n TableBodyEvents\n >;\n }\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link DialogElement}\n */\n [TableCellElementTag]: ReactElementWithPropsAndEvents<\n TableCellElement<any>,\n CellProps<any>,\n TableBodyEvents\n >;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link DialogElement}\n */\n [TableCellElementTag]: ReactElementWithPropsAndEvents<\n TableCellElement<any>,\n CellProps<any>,\n 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};\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 {\n HTMLElementTagWithEvents,\n ReactElementWithPropsAndEvents,\n} from \"../types\";\nexport const TableBodyElementTag = \"spectric-table-virtual-body\";\nimport \"./cell\";\nimport {\n ColumnSettings,\n SpectricTableElement,\n TD_BorderAndPadding,\n} 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 * Table Body Element\n */\n@customElement(TableBodyElementTag)\nexport class TableVirtualBodyElement<T>\n extends DisposableElement\n implements BodyProps<T>\n{\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 @property({ type: Object, attribute: false })\n table!: SpectricTableElement<T>;\n columnsMeasured: boolean = false;\n constructor() {\n super();\n let lastScroll = 0;\n this.addDisposableListener(\n () => this.table.querySelector(\".table-wrapper\")!,\n \"scroll\",\n () => {\n const scrollTop = this.table.querySelector(\".table-wrapper\")!.scrollTop;\n // Prevent changing the start index if the scroll hasn't changed more than at at least 1/4 a row\n // I think I have bad math that is causing a new scroll event due to a couple pixel height difference after I create the spacers\n if (Math.abs(lastScroll - scrollTop) <= this.rowHeight / 4) {\n return;\n }\n lastScroll = scrollTop;\n this.startIndex = Math.floor(scrollTop / this.rowHeight);\n }\n );\n }\n protected updated(): void {\n if (this.columnsMeasured === false) {\n let tr = this.querySelector(\"tr\");\n let cells = tr?.querySelectorAll(\"spectric-table-cell td\");\n if (tr && cells && cells.length) {\n this.columns.forEach((col, index) => {\n if (!col.width || col.width === 0) {\n let rect = cells[index].getBoundingClientRect();\n if (rect.width > 0) {\n this.columnsMeasured = true;\n col.width = rect.width - TD_BorderAndPadding;\n }\n }\n });\n if (this.columnsMeasured) {\n this.columns = [...this.columns];\n }\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(\n \"spectric-table-header\"\n )!.clientHeight;\n let viewport = this.table.querySelector(\".table-wrapper\")!;\n let startIndex = Math.max(this.startIndex, 0);\n const rowsThatFit = Math.ceil(\n (viewport.clientHeight - headerHeight) / this.rowHeight\n );\n const endIndex = Math.min(startIndex + rowsThatFit + buffer, totalRows);\n const visibleRows = endIndex - startIndex;\n let totalHeight = totalRows * this.rowHeight;\n let beforeHeight =\n startIndex * this.rowHeight +\n (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 =\n startIndex != 0\n ? html` <tr\n style=\"height:${beforeHeight}px\"\n class=\"virtual-scroll-spacer\"\n >\n <td colspan=\"${this.columns.length}\"></td>\n </tr>`\n : null;\n\n let spacerElementAfter = html` <tr\n style=\"height:${afterHeight}px\"\n class=\"virtual-scroll-spacer\"\n >\n <td colspan=\"${this.columns.length}\"></td>\n </tr>`;\n return html`\n <div\n style=\"height:${totalHeight}px;position: absolute;overflow-x: hidden;overflow-y: hidden;z-index:-1;width:1px;\"\n ></div>\n <tbody>\n ${spacerElementBefore}\n </tbody>\n <div\n style=\"display:table-row-group;max-height:${visibleHeight}px; overflow:hidden;\"\n >\n ${repeat(\n this.data.slice(Math.max(startIndex, 0), endIndex),\n (row, index) => html` <tr\n class=\"${(index + startIndex) % 2 === 0 ? \"odd\" : \"\"}\"\n >\n ${repeat(this.columns, (col) => {\n return html`<spectric-table-cell\n .column=${col}\n .row=${row}\n .index=${index + startIndex}\n .columns=${this.columns}\n .table=${this.table}\n ></spectric-table-cell>`;\n })}\n </tr>`\n )}\n </div>\n <tbody>\n ${afterHeight > 0 ? spacerElementAfter : null}\n </tbody>\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<\n TableVirtualBodyElement<any>,\n TableBodyEvents\n >;\n }\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link DialogElement}\n */\n [TableBodyElementTag]: ReactElementWithPropsAndEvents<\n TableVirtualBodyElement<any>,\n BodyProps<any>,\n TableBodyEvents\n >;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link DialogElement}\n */\n [TableBodyElementTag]: ReactElementWithPropsAndEvents<\n TableVirtualBodyElement<any>,\n BodyProps<any>,\n TableBodyEvents\n >;\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, TemplateResult } from \"lit\";\nimport \"../pagination\";\nimport \"./header\";\nimport \"./body\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport {\n HTMLElementTagWithEvents,\n ReactElementWithPropsAndEvents,\n} 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\";\nimport { ButtonSizesTypes } from \"../Button\";\n\nexport type { TableProps, TableEvents };\n\nexport type DomRenderable =\n | HTMLElement\n | TemplateResult\n | string\n | number\n | null\n | undefined;\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 CellAction<T> = {\n tooltip: DomRenderable;\n icon: DomRenderable;\n onClick: (row: T, column: ColumnSettings<T>) => void;\n};\nexport type ColumnSettings<T> = {\n [TABLE_CREATED_SELECTION_COLUMN]?: boolean;\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 disableCellOverflowTooltip?: boolean;\n cellActions?: CellAction<T>[];\n title?: DomRenderable | ((table: SpectricTableElement<T>) => 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?: (\n row: T,\n index: number,\n table: SpectricTableElement<T>\n ) => 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\nexport const TD_BorderAndPadding = 4;\nconst TABLE_CREATED_SELECTION_COLUMN = Symbol(\n \"spectric-table-selection-column\"\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>\n extends LitElement\n implements TableProps<T>\n{\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 protected cellActionButtonSize: ButtonSizesTypes = \"xxsmall\";\n getCellActionButtonSize() {\n return this.cellActionButtonSize;\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(\n (key) =>\n props.columns.find((col) => col.key === key) as ColumnSettings<T>\n );\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\n ? rows\n : 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 (\n totalItems &&\n page &&\n pageSize &&\n (page - 1) * pageSize > totalItems\n ) {\n pagination.page = 1;\n }\n this.pagination = pagination;\n }\n this.dispatchEvent(\n new CustomEvent<PaginationChangeProps>(\"paginationChange\", {\n detail: e.detail,\n })\n );\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(\n new CustomEvent<TableDataOptions<T>>(\"change\", {\n detail: { pagination, columns, sortOrder },\n })\n );\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 private forceRefreshofSelectionColumn() {\n // Because lit reuses dom elements for speed/effeciency it wont update unless the props are a different object.\n // So we set the selection colum to a \"new object\" to force the rerender\n let index = this.columns.findIndex(\n (col) => col[TABLE_CREATED_SELECTION_COLUMN]\n );\n if (index !== -1) {\n this.columns[index] = { ...this.selectColumnConfig };\n this.columns = [...this.columns];\n }\n }\n setSelected(selected: T[]) {\n this.selected = selected;\n this.forceRefreshofSelectionColumn();\n }\n getSelected() {\n return this.selected;\n }\n deselectAll() {\n this.setSelected([]);\n this.dispatchEvent(new CustomEvent(\"selected\", { detail: this.selected }));\n }\n selectAll() {\n this.setSelected([...this.data]);\n this.dispatchEvent(new CustomEvent(\"selected\", { detail: this.selected }));\n }\n async scrollToRow(row: T | number) {\n let index: number = -1;\n if (Number.isInteger(row)) {\n index = row as number;\n } else {\n index = this.data.findIndex((value) => value === row);\n }\n if (index !== -1) {\n let body = this.querySelector(\"spectric-table-virtual-body\");\n let wrapper = this.querySelector(\".table-wrapper\")!;\n let scrollPosition = index * this._getRowHeight();\n wrapper.scrollTo({\n top: scrollPosition,\n behavior: \"smooth\",\n });\n //Wait for the smooth scroll to complete. Scroll to doesn't return a promise so we must manually check periodically\n for (let wait = 0; wait < 100; wait++) {\n await new Promise((resolve) => setTimeout(resolve, 10));\n if (wrapper.scrollTop == scrollPosition) {\n console.log(\"Scroll complete\");\n break;\n }\n }\n if (body) {\n //Highlight the row we scrolled to\n requestAnimationFrame(() => {\n let rows = [...body.querySelectorAll(\"tr\")];\n rows = rows.filter(\n (row) => row.querySelector(\"spectric-table-cell\")?.index === index\n );\n if (rows.length) {\n rows[0].animate(\n [{ backgroundColor: \"red\" }, { backgroundColor: \"unset\" }],\n { duration: 200, iterations: 5 }\n );\n }\n });\n }\n }\n }\n _getRowHeight = () => {\n let rowHeight = this.rowHeight - TD_BorderAndPadding;\n if (rowHeight < this.fontSize + TD_BorderAndPadding) {\n rowHeight = this.fontSize + TD_BorderAndPadding;\n }\n return rowHeight;\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 private selectColumnConfig: ColumnSettings<T> = {\n [TABLE_CREATED_SELECTION_COLUMN]: true,\n allowResize: false,\n filterable: false,\n width: 39,\n title: (table: SpectricTableElement<T>) => {\n return table.select === TableSelectOptions.multi\n ? html`<spectric-input\n variant=\"checkbox\"\n @change=${table._handleSelectAllChange}\n ${spreadProps({\n checked: table.selected.length === table.data.length,\n })}\n .helperText=${\"Select All\"}\n ></spectric-input>`\n : null;\n },\n render: (row: T, _index, table) => {\n let checked = table.selected.includes(row);\n let template = html`<spectric-input\n variant=\"checkbox\"\n class=\"table-checkbox-${table.select}\"\n .helperText=${\"\"}\n ${spreadProps({ checked })}\n @change=${(e: DomEvent<HTMLInputElement>) => {\n e.stopPropagation();\n let index = table.selected.findIndex((value) => value === row);\n if (e.target.checked && index !== -1) {\n return;\n } else if (!e.target.checked && index === -1) {\n return;\n } else if (!e.target.checked && index !== -1) {\n table.selected.splice(index, 1);\n }\n if (e.target.checked) {\n if (table.select === \"single\") {\n table.selected = [];\n }\n table.selected.push(row);\n }\n table.setSelected([...table.selected]);\n table.dispatchEvent(\n new CustomEvent(\"selected\", { detail: [...table.selected] })\n );\n }}\n ></spectric-input>`;\n return template;\n },\n };\n protected update(changedProperties: PropertyValues): void {\n if (changedProperties.has(\"data\")) {\n this.selected = this.data.reduce((a, row) => {\n if (this.selected.includes(row)) {\n a.push(row);\n }\n return a;\n }, [] as T[]);\n }\n if (changedProperties.has(\"columns\")) {\n if (this.select !== TableSelectOptions.none) {\n if (!this.columns.find((col) => col[TABLE_CREATED_SELECTION_COLUMN])) {\n this.columns.unshift(this.selectColumnConfig);\n }\n }\n }\n if (changedProperties.has(\"select\")) {\n let selectIndex = this.columns.findIndex(\n (col) => col[TABLE_CREATED_SELECTION_COLUMN]\n );\n if (this.select !== TableSelectOptions.none) {\n this.forceRefreshofSelectionColumn();\n if (!this.columns.find((col) => col[TABLE_CREATED_SELECTION_COLUMN])) {\n this.columns.unshift(this.selectColumnConfig);\n this.columns = [...this.columns];\n }\n } else {\n if (selectIndex !== -1) {\n this.columns.splice(selectIndex, 1);\n this.columns = [...this.columns];\n this.setSelected([]);\n }\n }\n if (\n this.select === TableSelectOptions.single &&\n this.selected.length > 1\n ) {\n this.setSelected([this.selected[0]]);\n this.dispatchEvent(\n new CustomEvent(\"selected\", { detail: [this.selected[0]] })\n );\n }\n }\n super.update(changedProperties);\n }\n protected render(): unknown {\n let columns = this.columns.filter((column) => !column.hidden);\n let rowHeight = this._getRowHeight();\n return html`\n <div\n class=\"table-wrapper\"\n style=\"--rowHeight:${rowHeight}px;--fontSize:${this\n .fontSize}px;--lineClamp:${Math.floor(rowHeight / this.fontSize)}\"\n >\n <div role=\"table\">\n <spectric-table-header\n .columns=${columns}\n .table=${this}\n @sortChange=${this._handleSortChange}\n @columnResize=${this._handleColumnResize}\n ></spectric-table-header>\n <spectric-table-virtual-body\n .columns=${columns}\n .data=${this.data}\n .table=${this}\n .rowHeight=${rowHeight}\n ></spectric-table-virtual-body>\n </div>\n </div>\n ${this.pagination\n ? html`<spectric-pagination\n ${spreadProps(this.pagination)}\n @change=${this._handlePaginationChange}\n ></spectric-pagination>`\n : 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<\n SpectricTableElement<any>,\n TableEvents\n >;\n }\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link TableElement}\n */\n [TableElementTag]: ReactElementWithPropsAndEvents<\n SpectricTableElement<any>,\n TableProps<any>,\n TableEvents\n >;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link TableElement}\n */\n [TableElementTag]: ReactElementWithPropsAndEvents<\n SpectricTableElement<any>,\n TableProps<any>,\n TableEvents\n >;\n }\n }\n }\n}\n","import { customElement, property, query } from \"lit/decorators.js\";\nimport \"./tooltip.css\";\nexport const PopoverElementTag = \"spectric-popover\";\nimport { css, CSSResultGroup, html } from \"lit-element\";\nimport { DomRenderable } from \"../table\";\nimport { DisposableElement } from \"../../classes/DisposibleElement\";\nimport {\n HTMLElementTagWithEvents,\n ReactElementWithPropsAndEvents,\n} from \"../types\";\nexport type { TooltipProps, PopOverEvents };\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 mouseOffsetX?: number;\n mouseOffsetY?: number;\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 @property({ type: Number, reflect: false })\n mouseOffsetX = 10;\n @property({ type: Number, reflect: false })\n mouseOffsetY = 0;\n @query(\".spectric-popover-portal\")\n protected portalElement!: HTMLDivElement;\n protected mouseLocation?: { left: number; top: number };\n static styles?: CSSResultGroup | undefined = css`\n :host {\n max-height: 0px;\n max-width: 0px;\n display: none;\n pointer-events: none;\n }\n `;\n @property({ attribute: false })\n portalTarget: HTMLElement = document.body;\n protected timer?: number;\n protected open: boolean = false;\n protected mouseframe?: number;\n isOpen() {\n return this.open;\n }\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(\n () => this.target,\n \"mousemove\",\n this._getMousePosition\n );\n }\n protected createRenderRoot(): HTMLElement | DocumentFragment {\n return this;\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 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.hidePopover();\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 if (!this.isConnected) {\n return;\n }\n this.portalElement.showPopover();\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\n let styles: Record<string, string> = {};\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 = {\n left: this.mouseLocation.left + this.mouseOffsetX + \"px\",\n top:\n this.mouseLocation.top +\n this.mouseOffsetY -\n portalBounds.height / 2 +\n \"px\",\n };\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:\n Math.max(\n 0,\n bounds.top + bounds.height / 2 - portalBounds.height / 2\n ) + \"px\",\n left: bounds.left - portalBounds.width + \"px\",\n };\n } else if (this.position === \"right\") {\n location = {\n top:\n Math.max(\n 0,\n bounds.top + bounds.height / 2 - portalBounds.height / 2\n ) + \"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(\n { opacity: [0, 1] },\n { duration: this.animationDuration }\n );\n }\n };\n protected render() {\n return html`<!-- ToolTip -->\n <div class=\"spectric-popover-portal ${this.position}\" popover>\n <div class=\"tooltip-container\">\n <span class=\"tooltip-caret\"></span>\n <div class=\"tooltip-content\">${this.text}<slot></slot></div>\n </div>\n </div>`;\n }\n}\n\ninterface PopOverEvents {\n //'open': (event: CustomEvent<{ pagination: PaginationChangeProps }>) => void;\n //'filter': (event: CustomEvent<FilterEvent>) => void;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [PopoverElementTag]: HTMLElementTagWithEvents<\n PopoverElement,\n PopOverEvents\n >;\n }\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link TooltipElement}\n */\n [PopoverElementTag]: ReactElementWithPropsAndEvents<\n PopoverElement,\n TooltipProps,\n PopOverEvents\n >;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link TooltipElement}\n */\n [PopoverElementTag]: ReactElementWithPropsAndEvents<\n PopoverElement,\n TooltipProps,\n PopOverEvents\n >;\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 } from \"lit-element\";\nimport { DomRenderable } from \"../table\";\nimport { PopoverElement, TooltipProps } 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}`\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.showToolTip = this.showToolTip.bind(this)\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\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, eventOptions, 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//Not all browsers support eyedropper\ninterface EyeDropper {\n new(): EyeDropper;\n\n /**\n * Opens the eyedropper mode, allowing the user to select a color from the screen.\n * Returns a Promise that resolves with an object containing the selected color in sRGB hexadecimal format.\n * The Promise rejects if the user cancels the eyedropper mode (e.g., by pressing Escape).\n */\n open(): Promise<{ sRGBHex: string }>;\n}\n\ndeclare var EyeDropper: EyeDropper;\nlet eyedropper: EyeDropper | undefined\nif (window.hasOwnProperty(\"EyeDropper\")) {\n eyedropper = new EyeDropper()\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 constructor() {\n super()\n this._handleAlphaChange = this._handleAlphaChange.bind(this)\n this._handleHueChange = this._handleHueChange.bind(this)\n this._handleApply = this._handleApply.bind(this)\n this._cancel = this._cancel.bind(this)\n this._handleSaturationLightnessClick = this._handleSaturationLightnessClick.bind(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 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 @eventOptions({ capture: true })\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 @eventOptions({ capture: true })\n _handleHueChange(e: DomEvent<SpectricInput>) {\n e.stopPropagation()\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 let hex = hslToHex(this.hue, this.saturation * 100, this.lightness * 100) + (Math.round(this.alpha * 255).toString(16).padStart(2, \"0\"))\n this.value = hex\n }\n @eventOptions({ capture: true })\n _handleAlphaChange(e: DomEvent<SpectricInput>) {\n e.stopPropagation()\n this.alpha = parseInt(String(e.target.value)) / 100\n this.updateValue()\n }\n @eventOptions({ capture: true })\n _handleApply() {\n this.updateValue()\n this.querySelector<PopoverElement>(\"spectric-popover\")?.hidePopover()\n this.dispatchEvent(new Event(\"change\", { bubbles: true }))\n }\n @eventOptions({ capture: true })\n _cancel() {\n if (this.original) {\n this.value = this.original\n }\n this.querySelector<PopoverElement>(\"spectric-popover\")?.hidePopover()\n this.dispatchEvent(new Event(\"cancel\"))\n }\n @eventOptions({ capture: true })\n async _openPopover() {\n let popover = this.querySelector<PopoverElement>(\"spectric-popover\")\n if (!popover || popover.isOpen()) {\n return\n }\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=\"color-picker-saturation-lightness-grid\" @click=${this._handleSaturationLightnessClick}\n @mousedown=${(e: MouseEvent) => {\n this.sldown = true\n e.preventDefault()\n e.stopPropagation()\n }} \n @mouseup=${(e: MouseEvent) => {\n this.sldown = false\n e.preventDefault()\n e.stopPropagation()\n }}\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 icon class=\"color-picker-eyedropper ${eyedropper === undefined ? \"hidden\" : \"\"}\" @click=${async () => {\n if (eyedropper) {\n let result = await eyedropper?.open()\n let { h, s, l, a } = hexToHsl(result.sRGBHex);\n this.hue = h\n this.saturation = s\n this.lightness = l\n this.alpha = a\n this.updateValue()\n }\n }}>${eyedropper_icon}</spectric-button>\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=\"secondary\" @click=${this._openPopover} icon>\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}\nconst eyedropper_icon = html`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 256\" height=\"15\" width=\"15\" fill=\"currentColor\"><path d=\"M222,67.34a33.81,33.81,0,0,0-10.64-24.25C198.12,30.56,176.68,31,163.54,44.18L142.82,65l-.63-.63a22,22,0,0,0-31.11,0l-9,9a14,14,0,0,0,0,19.81l3.47,3.47L53.14,149.1a37.79,37.79,0,0,0-9.84,36.73l-8.31,19a11.68,11.68,0,0,0,2.46,13A13.91,13.91,0,0,0,47.32,222,14.15,14.15,0,0,0,53,220.82L71,212.92a37.92,37.92,0,0,0,35.84-10.07l52.44-52.46,3.47,3.48a14,14,0,0,0,19.8,0l9-9a22,22,0,0,0,0-31.12l-.66-.66L212,91.85A33.76,33.76,0,0,0,222,67.34Zm-123.61,127a26,26,0,0,1-26,6.47,6,6,0,0,0-4.16.24l-20,8.75a2,2,0,0,1-2.09-.31l9.12-20.9a5.94,5.94,0,0,0,.19-4.31,25.88,25.88,0,0,1,6.26-26.72l52.44-52.45,36.76,36.78Zm105.16-111L178.17,108.9a6,6,0,0,0,0,8.47l4.88,4.89a10,10,0,0,1,0,14.15l-9,9a2,2,0,0,1-2.82,0l-60.69-60.7a2,2,0,0,1,0-2.83l9-9a10,10,0,0,1,14.14,0l4.89,4.89a6,6,0,0,0,4.24,1.75h0a6,6,0,0,0,4.25-1.77L172,52.66c8.58-8.58,22.52-9,31.08-.85a22,22,0,0,1,.44,31.57Z\"/></svg>`\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}","import { html, PropertyValues } from \"lit\";\nimport { customElement, queryAsync, property, state } from \"lit/decorators.js\";\nimport \"./calendar.css\";\nimport { DisposableElement } from \"../../classes\";\nimport { debounceAnimation } from \"../../utils\";\nimport {\n HTMLElementTagWithEvents,\n ReactElementWithPropsAndEvents,\n} from \"../types\";\nimport { SpectricButton } from \"../Button\";\nimport { PopoverElement } from \"../tooltip/popover\";\nimport { DomEvent } from \"../table\";\nexport interface SpectricCalendarProps {\n /**\n * Sets the starting day for the calendar (default:Today)\n */\n currentDate?: Date | string | number;\n /**\n * Will display a button with a popup\n */\n popup?: boolean;\n disabled?: boolean;\n}\n\n@customElement(\"spectric-calendar\")\nexport class SpectricCalendar extends DisposableElement {\n @queryAsync(\".days\")\n calendarElement!: Promise<HTMLDivElement>;\n\n constructor() {\n super();\n this.addDisposableListener(\n this.calendarElement,\n \"mousemove\",\n this.handleMouseMove\n );\n this.addDisposableListener(\n this.calendarElement,\n \"mouseleave\",\n this.resetMouseMove\n );\n }\n @property({ attribute: false })\n currentDate?: Date | string | number = new Date();\n @state()\n private date: Date = new Date()\n @property({ type: Boolean, reflect: true })\n popup: boolean = false;\n @property({ type: Boolean, reflect: true })\n disabled: boolean = false;\n protected createRenderRoot(): HTMLElement | DocumentFragment {\n return this;\n }\n private getMonthDays(year: number, month: number): (number | \"\")[] {\n const date = new Date(year, month, 1);\n const days: (number | \"\")[] = [];\n const firstDay = date.getUTCDay();\n const lastDate = new Date(year, month + 1, 0).getUTCDate();\n\n for (let i = 0; i < firstDay; i++) {\n days.push(\"\");\n }\n\n for (let i = 1; i <= lastDate; i++) {\n days.push(i);\n }\n\n return days;\n }\n\n private changeMonth(offset: number): void {\n const newDate = new Date(this.date);\n newDate.setUTCMonth(newDate.getUTCMonth() + offset);\n this.currentDate = newDate;\n }\n\n private changeYear(event: Event): void {\n const selectedYear = parseInt(\n (event.target as HTMLSelectElement).value,\n 10\n );\n const newDate = new Date(this.date);\n newDate.setUTCFullYear(selectedYear);\n this.currentDate = newDate;\n }\n\n private handleMouseMove = debounceAnimation(async (e: MouseEvent) => {\n const target = await this.calendarElement;\n const rect = target.getBoundingClientRect();\n const x = ((e.clientX - rect.left) / rect.width) * 100;\n const y = ((e.clientY - rect.top) / rect.height) * 100;\n target.style.setProperty(\"--x\", `${x}%`);\n target.style.setProperty(\"--y\", `${y}%`);\n });\n\n private resetMouseMove = async () => {\n const target = await this.calendarElement;\n target.style.setProperty(\"--x\", `200%`);\n target.style.setProperty(\"--y\", `200%`);\n };\n private selectDay(day: number) {\n let year = this.date.getUTCFullYear();\n let monthIndex = this.date.getUTCMonth();\n let hours = this.date.getUTCHours()\n let minutes = this.date.getUTCMinutes()\n let seconds = this.date.getUTCSeconds()\n let ms = this.date.getUTCMilliseconds()\n let date = new Date();\n date.setUTCFullYear(year, monthIndex, day);\n date.setUTCHours(hours, minutes, seconds, ms);\n console.log(date.toISOString(), year, monthIndex, day)\n this.date = date\n let popover = this.querySelector<PopoverElement>(\"spectric-popover\");\n if (popover) {\n popover.hidePopover();\n }\n this.dispatchEvent(new CustomEvent(\"select\", { detail: date }));\n }\n protected update(changedProperties: PropertyValues): void {\n if (changedProperties.has(\"currentDate\")) {\n if (this.currentDate === undefined) {\n this.date = new Date()\n } else {\n this.date = new Date(this.currentDate)\n }\n }\n super.update(changedProperties)\n }\n render() {\n const year = this.date.getUTCFullYear();\n const month = this.date.getUTCMonth();\n const day = this.date.getUTCDate()\n this.date.toUTCString()\n const monthName = (new Date(year, month, day)).toLocaleString(\"default\", {\n month: \"long\",\n });\n const days = this.getMonthDays(year, month);\n const yearOptions = Array.from({ length: 21 }, (_, i) => year - 10 + i);\n const calendar = html`<spectric-panel class=\"calendar\">\n <div class=\"header\">\n <spectric-button\n ?disabled=${this.disabled}\n size=\"xsmall\"\n icon\n variant=\"primary\"\n @click=${() => this.changeMonth(-1)}\n >🠈</spectric-button\n >\n <div class=\"month-year\">\n <span>${monthName}</span>\n <select ?disabled=${this.disabled} @change=${this.changeYear}>\n ${yearOptions.map(\n (y) =>\n html`<option value=${y} ?selected=${y === year}>${y}</option>`\n )}\n </select>\n </div>\n <spectric-button ?disabled=${this.disabled} size=\"xsmall\" icon @click=${() => this.changeMonth(1)}\n >🠊</spectric-button\n >\n </div>\n <div class=\"days\">\n ${[\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"].map(\n (day) => html`<div class=\"day\">${day}</div>`\n )}\n ${days.map((date) =>\n date == \"\"\n ? html`<span></span>`\n : html`<spectric-button\n ?disabled=${this.disabled}\n @click=${() => this.selectDay(date)}\n .backgroundColor=${date === day ? undefined : \"var(--spectric-background,#f4f4f4)\"}\n icon\n size=\"xsmall\"\n class=\"date ${date === day ? \"active\" : \"\"}\"\n >${date}</spectric-button\n >`\n )}\n </div>\n </spectric-panel>`;\n if (!this.popup) {\n return calendar;\n }\n return html`\n <spectric-button\n class=\"input-button-right\"\n icon\n size=\"small\"\n variant=\"text\"\n type=\"button\"\n ?disabled=${this.disabled}\n @click=${(e: DomEvent<SpectricButton>) => {\n let popover = this.querySelector<PopoverElement>(\"spectric-popover\");\n if (popover && e.target) {\n popover.triggerTarget = e.target;\n popover.showPopover();\n }\n }}\n ><svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n viewBox=\"0 0 96 96\"\n style=\"\n fill: var(--button-primary, #1ea7fd);\n \"\n >\n <defs>\n <rect id=\"vcalendar-b\" width=\"64\" height=\"78\" x=\"0\" y=\"0\"></rect>\n <filter\n id=\"vcalendar-a\"\n width=\"110.9%\"\n height=\"109%\"\n x=\"-5.5%\"\n y=\"-3.2%\"\n filterUnits=\"objectBoundingBox\"\n >\n <feOffset\n dy=\"1\"\n in=\"SourceAlpha\"\n result=\"shadowOffsetOuter1\"\n ></feOffset>\n <feGaussianBlur\n in=\"shadowOffsetOuter1\"\n result=\"shadowBlurOuter1\"\n stdDeviation=\"1\"\n ></feGaussianBlur>\n <feColorMatrix\n in=\"shadowBlurOuter1\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2 0\"\n ></feColorMatrix>\n </filter>\n </defs>\n <g fill-rule=\"evenodd\">\n <path\n d=\"M36,36 L36,36.9983345 C36,38.642909 37.3431458,40 39,40 C40.6684055,40 42,38.6561086 42,36.9983345 L42,36 L54,36 L54,36.9983345 C54,38.642909 55.3431458,40 57,40 C58.6684055,40 60,38.6561086 60,36.9983345 L60,36 L64.0132046,36 C65.1104814,36 66,36.8892617 66,38.0017433 L66,65.9982567 C66,67.103789 65.1101074,68 64.0132046,68 L31.9867954,68 C30.8895186,68 30,67.1107383 30,65.9982567 L30,38.0017433 C30,36.896211 30.8898926,36 31.9867954,36 L36,36 Z M64,42 L32,42 L32,66 L64,66 L64,42 Z M50,56 L50,60 L46,60 L46,56 L50,56 Z M40,56 L40,60 L36,60 L36,56 L40,56 Z M60,56 L60,60 L56,60 L56,56 L60,56 Z M40,48 L40,52 L36,52 L36,48 L40,48 Z M50,48 L50,52 L46,52 L46,48 L50,48 Z M60,48 L60,52 L56,52 L56,48 L60,48 Z M39,32 C39.5522847,32 40,32.4509752 40,32.990778 L40,37.009222 C40,37.5173285 39.6172798,37.9361019 39.1173326,37.9933343 L39,38 C38.4477153,38 38,37.5490248 38,37.009222 L38,32.990778 C38,32.4826715 38.3827202,32.0638981 38.8826674,32.0066657 L39,32 Z M57,32 C57.5522847,32 58,32.4509752 58,32.990778 L58,37.009222 C58,37.5173285 57.6172798,37.9361019 57.1173326,37.9933343 L57,38 C56.4477153,38 56,37.5490248 56,37.009222 L56,32.990778 C56,32.4826715 56.3827202,32.0638981 56.8826674,32.0066657 L57,32 Z\"\n ></path>\n </g></svg>\n </spectric-button>\n <spectric-popover position=\"left\" .text=${calendar}></spectric-popover>\n `;\n }\n}\n\ninterface CalendarEvents {\n select: (event: CustomEvent<Date>) => void;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"spectric-calendar\": HTMLElementTagWithEvents<\n SpectricCalendar,\n CalendarEvents\n >;\n }\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link SpectricCalendar}\n */\n \"spectric-calendar\": ReactElementWithPropsAndEvents<\n SpectricCalendar,\n SpectricCalendarProps,\n CalendarEvents\n >;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link SpectricCalendar}\n */\n \"spectric-calendar\": ReactElementWithPropsAndEvents<\n SpectricCalendar,\n SpectricCalendarProps,\n CalendarEvents\n >;\n }\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","_changedProperties","render","html","mode","styleMap","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","calendar","ifNonEmpty","query","eventOptions","endOfInputText","grammarRuleTranslations","DQLSyntaxError","error","expression","message","translatedExpectationText","expected","foundInput","fullMessage","buildNode","toOpenSearchQuery","parse","peg$SyntaxError","found","location","sources","str","src","st","offset_s","loc","filler","line","hatLen","hex","ch","nonPrintable","unicodeEscape","literalEscape","classEscape","DESCRIBE_EXPECTATION_FNS","expectation","escapedParts","describeExpectation","describeExpected","descriptions","describeFound","peg$parse","peg$FAILED","peg$source","peg$startRuleFunctions","peg$parsestart","peg$parseLiteral","peg$startRuleFunction","peg$c0","peg$c1","peg$c2","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","peg$c17","peg$c18","peg$c19","peg$c20","peg$r0","peg$r1","peg$r2","peg$r3","peg$r4","peg$e0","peg$literalExpectation","peg$e1","peg$e2","peg$e3","peg$e4","peg$e5","peg$otherExpectation","peg$e6","peg$e7","peg$e8","peg$e9","peg$e10","peg$e11","peg$e12","peg$e13","peg$e14","peg$e15","peg$classExpectation","peg$e16","peg$e17","peg$e18","peg$e19","peg$e20","peg$anyExpectation","peg$e21","peg$e22","peg$e23","peg$e24","peg$e25","peg$e26","peg$e27","peg$e28","peg$e29","peg$e30","peg$e31","peg$e32","peg$e33","peg$f0","trailing","nodeTypes","peg$f1","left","right","cursor","buildFunctionNode","peg$f2","peg$f3","peg$f4","group","peg$f5","field","peg$f6","operator","peg$f7","partial","buildNamedArgNode","listItems","peg$f8","range","peg$f9","wildcardSymbol","peg$f10","fieldName","buildLiteralNode","peg$f11","peg$f12","partialLeft","partialRight","peg$f13","peg$f14","peg$f15","isPhrase","peg$f16","allowLeadingWildcards","peg$f17","peg$f18","peg$f19","prefix","suffix","peg$f20","chars","peg$f21","char","peg$f22","peg$f23","peg$f24","sequence","buildWildcardNode","peg$f25","peg$f26","peg$f27","peg$f28","peg$f29","peg$f30","peg$f31","peg$f32","keyword","peg$f33","peg$f34","peg$f35","peg$f36","peg$f37","peg$f38","parseCursor","peg$f39","cursorSymbol","peg$currPos","peg$savedPos","peg$posDetailsCache","peg$maxFailPos","peg$maxFailExpected","peg$silentFails","peg$result","peg$computeLocation","peg$buildSimpleError","peg$getUnicode","pos","cp","ignoreCase","parts","inverted","unicode","peg$endExpectation","description","peg$computePosDetails","details","startPos","endPos","offset","startPosDetails","endPosDetails","peg$fail","peg$buildStructuredError","s0","s1","s2","s3","peg$parseSpace","peg$parseOrQuery","peg$parseOptionalSpace","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$parseFieldGeoSpatialExpression","peg$parseFieldMultiGeoSpatialExpression","peg$parseFieldRangeExpression","peg$parseFieldValueExpression","peg$parseValueExpression","peg$parseGeoSpatialOperator","peg$parseListOfValues","peg$parseRangeOperator","peg$parseNumberOrQuotedString","peg$parseValue","peg$parseOrListOfValues","peg$parseAndListOfValues","peg$parseNotListOfValues","peg$parseQuotedString","peg$parseUnquotedLiteral","peg$parseNumber","peg$parseFloat","peg$parseInteger","peg$parseQuotedCharacter","peg$parseCursor","peg$parseEscapedWhitespace","peg$parseUnquotedCharacter","peg$parseEscapedSpecialCharacter","peg$parseEscapedKeyword","peg$parseWildcard","peg$parseSpecialCharacter","peg$parseKeyword","errorOnLuceneSyntax","peg$success","peg$throw","fromExpression","parseOptions","parseKuery","fromLiteralExpression","fromKueryExpression","doesKueryExpressionHaveLuceneSyntaxError","indexPattern","config","escapeRegExp","escapeQueryString","test","regex","toQueryStringQuery","hasLeadingWildcard","getFields","literal.toOpenSearchQuery","fld","wildcard.test","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","child","argument","pick","object","out","op","params","paramsToMap","namedArgs","extractArguments","queryParams","arg","unnamedArgOrder","index","path","stringPath","fullPath","_o","$V0","$V1","$V2","$V3","$V4","$V5","$V6","$V7","$V8","$V9","$Va","$Vb","$Vc","$Vd","$Ve","$Vf","$Vg","$Vh","parser","yytext","yyleng","yylineno","yy","yystate","_$","$0","PointArray","RingList","Ring","PolygonList","GeometryList","hash","self","stack","vstack","lstack","table","TERROR","EOF","lexer","sharedState","yyloc","ranges","lex","token","symbol","state","action","yyval","newState","errStr","lines","oldLines","past","next","pre","match","indexed_rule","backup","tempMatch","rules","condition","yy_","$avoiding_name_collisions","YY_START","Parser","err","point","ring","geometry","polygon","wktToGeoJSON","res","functions","is","and","or","not","exists","nested","geospatial","functionName","kueryFunction","buildNodeWithArgumentNodes","name","argumentNode","functionType","literal","namedArg","wildcard","KQL_WILDCARD_SYMBOL","toCql","isValue","AST_TO_CQL","opsign","nodeType","toMongo","toHTML","values","groupVariables","extractLiteralValue","extractFieldName","nodes","grouped","opsine","GeospatialOperators","even","odd","SpectricPanel","changed","item","DialogElementTag","DialogElement","dialog","props","body","frag","DateTimePopup","buttonRef","resolve","labelValue","toLabelValue","GeoJSONPopup","EDIT","DELETE","ARROW_LEFT","ARROW_RIGHT","ARROW_UP","ARROW_DOWN","SupportedLanguages","NumberOperators","ObjectOperators","StringOperators","BoolOperators","DateOperators","SpectricQuery","suggestion","modalFunction","kuery.parse","ast","suggestions","output","kuery","unsafeHTML","kuery.toHTML","completion","insertIndex","afterStart","active","completions","fieldCompletions","fieldType","popover","option","CSSPropsControls","dark","spectric","Themes","ThemeSelections","SPECTRIC_CSS_VARIABLES","theme","SpectricThemeProvider","eventDetails","currentTheme","entry","Orientations","ElementTag","SplitView","percentage","orientation","invisible","min","max","useSavedState","id","savedValue","PaginationElementTag","PaginationElement","page","pageSize","nextPage","nextPageDisabled","pageText","size","TableHeaderElementTag","TableHeaderElement","column","TableSortDirection","delta","cell","selection","classes","columnWidth","sortDirection","sortClass","resizeHandle","title","TableCellElementTag","TableCellElement","rowGetValue","span","spanBounds","divBounds","tooltip","filter","rendered","buttonSize","filterButtons","cache","actions","w","TableBodyElementTag","TableBodyElement","repeat","row","col","TableVirtualBodyElement","lastScroll","scrollTop","tr","cells","TD_BorderAndPadding","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","TABLE_CREATED_SELECTION_COLUMN","SpectricTableElement","pagination","totalItems","columnSetting","columns","sortOrder","rowHeight","_index","checked","rows","sortChain","selected","wrapper","scrollPosition","selectIndex","PopoverElementTag","PopoverElement","ev","bounds","portalBounds","TooltipElementTag","TooltipPostions","TooltipElement","eyedropper","SpectricColorPicker","hexToHsl","ctx","xpix","ypix","hslGen","offsetX","offsetY","hslToHex","eyedropper_icon","hue","color","SpectricCalendar","year","month","date","days","firstDay","lastDate","newDate","selectedYear","day","monthIndex","hours","minutes","seconds","ms","monthName","yearOptions","module","components","utils"],"mappings":"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A;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAA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","x_google_ignoreList":[0,1,2,3,4,5,7,8,9,10,11,12,13,16,17,18,26,45,61,68,70]}
1
+ {"version":3,"file":"index.es.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/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","../node_modules/@terraformer/wkt/dist/t-wkt.esm.js","../src/components/query_bar/querylanguage/kuery/functions/geospatial.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/query_bar/querylanguage/outputTypes/toHTML.ts","../src/components/dialog/dialog.css.ts","../src/components/panel.css.ts","../src/components/Panel.ts","../src/components/dialog/dialog.ts","../src/components/query_bar/dateTimePopup.ts","../src/components/query_bar/geojsonPopup.ts","../src/components/symbols.ts","../node_modules/lit-html/directives/unsafe-html.js","../src/components/query_bar/QueryBar.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/components/calendar/calendar.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 font-size:8px;\n line-height:8px\n}\n:host([icon][size=\"xxsmall\"]) .spectric-button{\n width: 16px;\n height: 16px;\n font-size: 10px;\n line-height: 10px;\n}\n:host([icon][size=\"xsmall\"]) .spectric-button{\n width: 28px;\n height: 28px;\n font-size: 16px;\n line-height: 16px;\n}\n:host([icon][size=\"small\"]) .spectric-button{\n width: 34px;\n height: 34px;\n font-size: 20px;\n line-height: 20px;\n\n}\n:host([icon][size=\"medium\"]) .spectric-button{\n width: 40px;\n height: 40px;\n font-size: 28px;\n line-height: 28px;\n}\n\n:host([icon][size=\"large\"]) .spectric-button{\n width: 48px;\n height: 48px;\n line-height: 32px;\n font-size: 32px;\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, PropertyValues, render } 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 this._onClick = this._onClick.bind(this)\n }\n\n //@eventOptions({ capture: true })\n private _onClick(e: MouseEvent) {\n if (e instanceof CustomEvent) {\n return\n }\n if (this.disabled) {\n e.preventDefault()\n e.stopImmediatePropagation()\n e.stopPropagation()\n return\n }\n\n }\n protected updated(_changedProperties: PropertyValues): void {\n if (this.tooltip && this.tooltip !== \"\") {\n render(html`<spectric-tooltip slot=\"tooltip\" .text=${this.tooltip} .position=${this.tooltipPosition || \"right\"}></spectric-tooltip>`, this)\n }\n }\n protected render(): unknown {\n const mode = MODES[this.variant] || 'spectric-button--primary';\n return html`\n <slot name=\"tooltip\"></slot>\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 {\n HTMLElementTagWithEvents,\n ReactElementWithPropsAndEvents,\n} 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\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(\n new CustomEvent<BannerProps>(\"bannerDismissed\", {\n detail: { bannerId, text, headerStyle, dismissable },\n ...options,\n })\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\">\n <slot name=\"text\">${this.text}</slot><slot></slot>\n </div>\n ${this.dismissable\n ? html`<spectric-button size=\"small\" @click=${this.onDismiss} icon\n >X</spectric-button\n >`\n : null}\n </header>\n `;\n }\n}\n\nexport interface BannerEventMap {\n bannerDismissed: (event: CustomEvent<BannerProps>) => void;\n}\n\ndeclare global {\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<\n SpectricBanner,\n BannerProps,\n BannerEventMap\n >;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * {@link SpectricBanner}\n */\n \"spectric-banner\": ReactElementWithPropsAndEvents<\n SpectricBanner,\n BannerProps,\n BannerEventMap\n >;\n }\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 {\n customElement,\n eventOptions,\n property,\n query,\n} 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\";\nimport { PopoverElement } from \"./tooltip/popover\";\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 datePopup = \"popup-date\",\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}\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 spellcheck?: HTMLInputElement[\"spellcheck\"];\n}\n@customElement(\"spectric-input\")\nexport class SpectricInput extends LitElement implements InputProps {\n @property({ type: Boolean, reflect: true })\n checked?: boolean = false;\n size?: ButtonSizesTypes;\n files: FileList | null = null;\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\n /**\n * The sets the autocomplete for the input.\n */\n @property({ reflect: true, type: Boolean })\n spellcheck: HTMLInputElement[\"spellcheck\"] = true;\n\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(\n start: number,\n end: number,\n direction: \"forward\" | \"backward\" | \"none\" = \"none\"\n ) {\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 }: DomEvent<HTMLInputElement>) => {\n const input = target;\n if (this.variant == InputVariants.file) {\n this.files = input.files;\n } else {\n this.value = input.value;\n }\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 (\n changedProperties.has(\"checked\") &&\n changedProperties.get(\"checked\") !== undefined\n ) {\n //this.dispatchEvent(new Event(\"change\", { bubbles: true }));\n }\n }\n @eventOptions({ capture: true })\n _handleChange(e: DomEvent<HTMLInputElement | SpectricColorPicker>) {\n e.stopPropagation();\n if (this.variant === InputVariants.file) {\n this.files = (e.target as HTMLInputElement).files;\n } else {\n this.value = e.target.value;\n }\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\n }\n protected render(): unknown {\n const calendar = html`<spectric-calendar\n .popup=${this.variant === InputVariants.datePopup}\n @select=${(e: CustomEvent<Date>) => {\n this.value = e.detail.toISOString();\n this.querySelector<PopoverElement>(\"spectric-popover\")?.hidePopover();\n }}\n >\n </spectric-calendar>`;\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.datePopup: //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}\n ${this.maxCount > 0 && this._value\n ? `${(this._value as String).length}/${this.maxCount}`\n : null}\n </div>\n </div>\n <div class=\"fieldwrapper\">\n <div ?data-invalid=\"${this.invalid}\" class=\"inputContainer\">\n ${this.variant === \"date\" ? calendar : null}\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 spellcheck=${this.spellcheck}\n ?readonly=\"${this.readonly}\"\n ?required=\"${this.required}\"\n type=\"${ifNonEmpty(\n this.variant !== InputVariants.password\n ? this.variant !== InputVariants.date\n ? this.variant\n : InputVariants.Text\n : this._showPassword\n ? InputVariants.Text\n : InputVariants.password\n )}\"\n .value=\"${this._value as string}\"\n maxlength=\"${ifNonEmpty(\n this.maxCount > 0 ? this.maxCount : undefined\n )}\"\n @input=\"${this._handleInput}\"\n @change=${this._handleChange}\n />\n\n ${this.variant === String(InputVariants.datePopup)\n ? calendar\n : null}\n ${this.variant === String(InputVariants.password) &&\n this.showPasswordVisibilityToggle\n ? html`\n <spectric-button\n icon\n class=\"input-button-right\"\n size=\"small\"\n type=\"button\"\n ?disabled=\"${this.disabled}\"\n @click=${this.handleTogglePasswordVisibility}\n >\n ${this._showPassword\n ? this.hidePasswordLabel\n : 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\">\n ${this.invalid ? this.invalidText : this.helperText}\n </slot>\n </div>\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} ${\n this.maxCount > 0 && this._value\n ? `${(this._value as String).length}/${this.maxCount}`\n : null\n }\n </div> \n </div>\n <div class=\"fieldwrapper\">\n <div ?data-invalid=\"${this.invalid}\" class=\"inputContainer\">\n <input type=\"hidden\" .value=${String(this.value)} > </input>\n <spectric-colorpicker \n @cancel=${(e: DomEvent<SpectricColorPicker>) => {\n this.value = e.target.value;\n }}\n @change=${(e: DomEvent<SpectricColorPicker>) => {\n e.stopPropagation();\n this.value = e.target.value;\n this._handleChange(e);\n }} .value=${String(this.value)}></spectric-colorpicker>\n </div>\n <div\n id=\"helper-text\"\n class=\"${this.helperText || this.invalid ? \"\" : \"hidden\"}\"\n >\n <slot name=\"helper-text\"> ${\n this.invalid ? this.invalidText : this.helperText\n } </slot>\n </div>\n\n </div>\n </div>`;\n case InputVariants.hidden:\n return html`<input type=\"hidden\" />`;\n\n case InputVariants.checkbox:\n return html`\n <div class=\"checkbox\">\n <spectric-button \n .tooltip=${this.helperText}\n @click=${() => {\n this.checked = !this.checked;\n this.value = Boolean(this.checked);\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\n }} icon size=${this.size || \"xxsmall\"} variant=${\n this.checked ? \"primary\" : \"secondary\"\n }>${this.checked ? \"✓\" : \"\\u00A0\"}</spectric-button>\n ${this.label.length ? html`<span>${this.label}</span>` : null}\n </div>\n </label>\n `;\n default:\n break;\n }\n return `Not yet implemented ${this.variant}`;\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<\n SpectricInput,\n InputProps\n >;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * {@link SpectricInput}\n */\n \"spectric-input\": ReactElementWithPropsAndEvents<\n SpectricInput,\n InputProps\n >;\n }\n }\n }\n}\n\nconst ifNonEmpty = (value: any) =>\n ifDefined(value === \"\" ? undefined : value ?? undefined);\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\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 Spectric Labs */\n\nexport const {\n parse\n} = // @generated by Peggy 5.0.6.\n//\n// https://peggyjs.org/\n(function() {\n \"use strict\";\nclass peg$SyntaxError extends SyntaxError {\n constructor(message, expected, found, location) {\n super(message);\n this.expected = expected;\n this.found = found;\n this.location = location;\n this.name = \"SyntaxError\";\n }\n\n format(sources) {\n let str = \"Error: \" + this.message;\n if (this.location) {\n let src = null;\n const st = sources.find(s => s.source === this.location.source);\n if (st) {\n src = st.text.split(/\\r\\n|\\n|\\r/g);\n }\n const s = this.location.start;\n const offset_s = (this.location.source && (typeof this.location.source.offset === \"function\"))\n ? this.location.source.offset(s)\n : s;\n const loc = this.location.source + \":\" + offset_s.line + \":\" + offset_s.column;\n if (src) {\n const e = this.location.end;\n const filler = \"\".padEnd(offset_s.line.toString().length, \" \");\n const line = src[s.line - 1];\n const last = s.line === e.line ? e.column : line.length + 1;\n const hatLen = (last - s.column) || 1;\n str += \"\\n --> \" + loc + \"\\n\"\n + filler + \" |\\n\"\n + offset_s.line + \" | \" + line + \"\\n\"\n + filler + \" | \" + \"\".padEnd(s.column - 1, \" \")\n + \"\".padEnd(hatLen, \"^\");\n } else {\n str += \"\\n at \" + loc;\n }\n }\n return str;\n }\n\n static buildMessage(expected, found) {\n function hex(ch) {\n return ch.codePointAt(0).toString(16).toUpperCase();\n }\n\n const nonPrintable = Object.prototype.hasOwnProperty.call(RegExp.prototype, \"unicode\")\n ? new RegExp(\"[\\\\p{C}\\\\p{Mn}\\\\p{Mc}]\", \"gu\")\n : null;\n function unicodeEscape(s) {\n if (nonPrintable) {\n return s.replace(nonPrintable, ch => \"\\\\u{\" + hex(ch) + \"}\");\n }\n return s;\n }\n\n function literalEscape(s) {\n return unicodeEscape(s\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\"/g, \"\\\\\\\"\")\n .replace(/\\0/g, \"\\\\0\")\n .replace(/\\t/g, \"\\\\t\")\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\r/g, \"\\\\r\")\n .replace(/[\\x00-\\x0F]/g, ch => \"\\\\x0\" + hex(ch))\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, ch => \"\\\\x\" + hex(ch)));\n }\n\n function classEscape(s) {\n return unicodeEscape(s\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\\]/g, \"\\\\]\")\n .replace(/\\^/g, \"\\\\^\")\n .replace(/-/g, \"\\\\-\")\n .replace(/\\0/g, \"\\\\0\")\n .replace(/\\t/g, \"\\\\t\")\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\r/g, \"\\\\r\")\n .replace(/[\\x00-\\x0F]/g, ch => \"\\\\x0\" + hex(ch))\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, ch => \"\\\\x\" + hex(ch)));\n }\n\n const DESCRIBE_EXPECTATION_FNS = {\n literal(expectation) {\n return \"\\\"\" + literalEscape(expectation.text) + \"\\\"\";\n },\n\n class(expectation) {\n const escapedParts = expectation.parts.map(\n part => (Array.isArray(part)\n ? classEscape(part[0]) + \"-\" + classEscape(part[1])\n : classEscape(part))\n );\n\n return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts.join(\"\") + \"]\" + (expectation.unicode ? \"u\" : \"\");\n },\n\n any() {\n return \"any character\";\n },\n\n end() {\n return \"end of input\";\n },\n\n other(expectation) {\n return expectation.description;\n },\n };\n\n function describeExpectation(expectation) {\n return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);\n }\n\n function describeExpected(expected) {\n const descriptions = expected.map(describeExpectation);\n descriptions.sort();\n\n if (descriptions.length > 0) {\n let j = 1;\n for (let i = 1; i < descriptions.length; i++) {\n if (descriptions[i - 1] !== descriptions[i]) {\n descriptions[j] = descriptions[i];\n j++;\n }\n }\n descriptions.length = j;\n }\n\n switch (descriptions.length) {\n case 1:\n return descriptions[0];\n\n case 2:\n return descriptions[0] + \" or \" + descriptions[1];\n\n default:\n return descriptions.slice(0, -1).join(\", \")\n + \", or \"\n + descriptions[descriptions.length - 1];\n }\n }\n\n function describeFound(found) {\n return found ? \"\\\"\" + literalEscape(found) + \"\\\"\" : \"end of input\";\n }\n\n return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n }\n}\n\nfunction peg$parse(input, options) {\n options = options !== undefined ? options : {};\n\n const peg$FAILED = {};\n const peg$source = options.grammarSource;\n\n const peg$startRuleFunctions = {\n start: peg$parsestart,\n Literal: peg$parseLiteral,\n };\n let peg$startRuleFunction = peg$parsestart;\n\n const peg$c0 = \"(\";\n const peg$c1 = \")\";\n const peg$c2 = \":\";\n const peg$c3 = \"{\";\n const peg$c4 = \"}\";\n const peg$c5 = \"or\";\n const peg$c6 = \"and\";\n const peg$c7 = \"not\";\n const peg$c8 = \".\";\n const peg$c9 = \"\\\"\";\n const peg$c10 = \"\\\\\";\n const peg$c11 = \"*\";\n const peg$c12 = \"\\\\t\";\n const peg$c13 = \"\\\\r\";\n const peg$c14 = \"\\\\n\";\n const peg$c15 = \"<@\";\n const peg$c16 = \"<=\";\n const peg$c17 = \">=\";\n const peg$c18 = \"<\";\n const peg$c19 = \">\";\n const peg$c20 = \"\\xA9kuery-cursor\\xA9\";\n\n const peg$r0 = /^[0-9]/;\n const peg$r1 = /^[\\\\\"]/;\n const peg$r2 = /^[^\"]/;\n const peg$r3 = /^[\\\\():<>\"*{}]/;\n const peg$r4 = /^[ \\t\\r\\n]/;\n\n const peg$e0 = peg$literalExpectation(\"(\", false);\n const peg$e1 = peg$literalExpectation(\")\", false);\n const peg$e2 = peg$literalExpectation(\":\", false);\n const peg$e3 = peg$literalExpectation(\"{\", false);\n const peg$e4 = peg$literalExpectation(\"}\", false);\n const peg$e5 = peg$otherExpectation(\"fieldName\");\n const peg$e6 = peg$otherExpectation(\"value\");\n const peg$e7 = peg$otherExpectation(\"OR\");\n const peg$e8 = peg$literalExpectation(\"or\", true);\n const peg$e9 = peg$otherExpectation(\"AND\");\n const peg$e10 = peg$literalExpectation(\"and\", true);\n const peg$e11 = peg$otherExpectation(\"NOT\");\n const peg$e12 = peg$literalExpectation(\"not\", true);\n const peg$e13 = peg$otherExpectation(\"literal\");\n const peg$e14 = peg$literalExpectation(\".\", false);\n const peg$e15 = peg$classExpectation([[\"0\", \"9\"]], false, false, false);\n const peg$e16 = peg$literalExpectation(\"\\\"\", false);\n const peg$e17 = peg$literalExpectation(\"\\\\\", false);\n const peg$e18 = peg$classExpectation([\"\\\\\", \"\\\"\"], false, false, false);\n const peg$e19 = peg$classExpectation([\"\\\"\"], true, false, false);\n const peg$e20 = peg$anyExpectation();\n const peg$e21 = peg$literalExpectation(\"*\", false);\n const peg$e22 = peg$literalExpectation(\"\\\\t\", false);\n const peg$e23 = peg$literalExpectation(\"\\\\r\", false);\n const peg$e24 = peg$literalExpectation(\"\\\\n\", false);\n const peg$e25 = peg$classExpectation([\"\\\\\", \"(\", \")\", \":\", \"<\", \">\", \"\\\"\", \"*\", \"{\", \"}\"], false, false, false);\n const peg$e26 = peg$literalExpectation(\"<@\", false);\n const peg$e27 = peg$literalExpectation(\"<=\", false);\n const peg$e28 = peg$literalExpectation(\">=\", false);\n const peg$e29 = peg$literalExpectation(\"<\", false);\n const peg$e30 = peg$literalExpectation(\">\", false);\n const peg$e31 = peg$otherExpectation(\"whitespace\");\n const peg$e32 = peg$classExpectation([\" \", \"\\t\", \"\\r\", \"\\n\"], false, false, false);\n const peg$e33 = peg$literalExpectation(\"\\xA9kuery-cursor\\xA9\", false);\n\n function peg$f0(query, trailing) {\n if (trailing.type === 'cursor') {\n return {\n ...trailing,\n suggestionTypes: ['conjunction'],\n rule:\"start\"\n };\n }\n if (query !== null) return query;\n return nodeTypes.function.buildNode('is', '*', '*');\n }\n function peg$f1(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 function peg$f2(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 function peg$f3(query) {\n if (query.type === 'cursor') return query;\n return buildFunctionNode('not', [query]);\n }\n function peg$f4(query, trailing) {\n if (trailing.type === 'cursor') {\n return {\n ...trailing,\n suggestionTypes: ['conjunction'],\n rule:\"SubQuery\"\n };\n }\n group++\n return {...query,group};\n }\n function peg$f5(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 function peg$f6(field, operator, value) {\n if (value.type === 'cursor') {\n return {\n ...value,\n fieldName: field.value,\n suggestionTypes: ['geo_value','conjunction'],\n rule:\"FieldGeoSpatialExpression\"\n };\n }\n return {\n type: 'function',\n function: 'geospatial',\n arguments: [field,operator, value],\n }\n \n }\n function peg$f7(field, operator, partial) {\n if (partial.type === 'cursor') {\n return {\n ...partial,\n fieldName: field.value,\n suggestionTypes: ['geo_value', 'conjunction'],\n rule:\"FieldMultiGeoSpatialExpression\"\n };\n }\n const range = buildNamedArgNode(operator, partial(field))\n const listItems = partial(field)\n if(listItems.function == \"is\"){\n \t//One Item in the list\n return buildFunctionNode('geospatial', [field,operator, listItems.arguments[1]]);\n }\n return {...listItems,arguments:listItems.arguments.map(a=> buildFunctionNode('geospatial', {\n type: 'function',\n function: 'geospatial',\n arguments: [field,operator, a.arguments[1]],\n }))}\n }\n function peg$f8(field, operator, value) {\n if (value.type === 'cursor') {\n return {\n ...value,\n fieldName: field.value,\n suggestionTypes: ['value','conjunction'],\n rule:\"FieldRangeExpression\"\n };\n }\n const range = buildNamedArgNode(operator, value);\n return buildFunctionNode('range', [field, range]);\n }\n function peg$f9(field, partial) {\n if (partial.type === 'cursor') {\n if(partial.prefix.includes(wildcardSymbol)){\n return {\n ...partial,\n fieldName: field.value,\n suggestionTypes: ['conjunction'],\n rule:\"FieldValueExpression\"\n }\n }\n return {\n ...partial,\n fieldName: field.value,\n suggestionTypes: ['value', 'conjunction'],\n rule:\"FieldValueExpression\"\n };\n }\n return partial(field);\n }\n function peg$f10(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 rule:\"ValueExpression\"\n };\n }\n const field = buildLiteralNode(null);\n return partial(field);\n }\n function peg$f11(partial, trailing) {\n if (trailing.type === 'cursor') {\n return {\n ...trailing,\n suggestionTypes: ['conjunction'],\n rule:\"ListOfValues\"\n };\n }\n return partial;\n }\n function peg$f12(partialLeft, partialRight) {\n const cursor = [partialLeft, partialRight].find(node => node.type === 'cursor');\n if (cursor) {\n return {\n ...cursor,\n suggestionTypes: ['value'],\n rule:\"OrListOfValues\"\n };\n }\n group++\n return (field) => ({...buildFunctionNode('or', [partialLeft(field), partialRight(field)]),group});\n }\n function peg$f13(partialLeft, partialRight) {\n const cursor = [partialLeft, partialRight].find(node => node.type === 'cursor');\n if (cursor) {\n return {\n ...cursor,\n suggestionTypes: ['value'],\n rule:\"AndListOfValues\"\n };\n }\n group++\n return (field) => ({...buildFunctionNode('and', [partialLeft(field), partialRight(field)]),group});\n }\n function peg$f14(partial) {\n if (partial.type === 'cursor') {\n return {\n ...list,\n suggestionTypes: ['value'],\n rule:\"NotListOfValues\"\n };\n }\n return (field) => buildFunctionNode('not', [partial(field)]);\n }\n function peg$f15(value) {\n if (value.type === 'cursor') return value;\n const isPhrase = buildLiteralNode(true);\n return (field) => buildFunctionNode('is', [field, value, isPhrase]);\n }\n function peg$f16(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 function peg$f17() { return parseFloat(text()); }\n function peg$f18() { return parseInt(text(), 10); }\n function peg$f19(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 rule:\"QuotedString\"\n };\n }\n function peg$f20(chars) {\n return buildLiteralNode(chars.join(''));\n }\n function peg$f21(char) { return char; }\n function peg$f22(char) { return char; }\n function peg$f23(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 rule:\"UnquotedLiteral\"\n };\n }\n function peg$f24(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 function peg$f25(char) { return char; }\n function peg$f26() { return wildcardSymbol; }\n function peg$f27(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 rule:\"OptionalSpace\"\n };\n }\n function peg$f28() { return '\\t'; }\n function peg$f29() { return '\\r'; }\n function peg$f30() { return '\\n'; }\n function peg$f31(char) { return char; }\n function peg$f32(keyword) { return keyword; }\n function peg$f33() { return 'within'; }\n function peg$f34() { return 'lte'; }\n function peg$f35() { return 'gte'; }\n function peg$f36() { return 'lt'; }\n function peg$f37() { return 'gt'; }\n function peg$f38() { return parseCursor; }\n function peg$f39() { return cursorSymbol; }\n let peg$currPos = options.peg$currPos | 0;\n let peg$savedPos = peg$currPos;\n const peg$posDetailsCache = [{ line: 1, column: 1 }];\n let peg$maxFailPos = peg$currPos;\n let peg$maxFailExpected = options.peg$maxFailExpected || [];\n let peg$silentFails = options.peg$silentFails | 0;\n\n let peg$result;\n\n if (options.startRule) {\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 offset() {\n return peg$savedPos;\n }\n\n function range() {\n return {\n source: peg$source,\n start: peg$savedPos,\n end: peg$currPos,\n };\n }\n\n function location() {\n return peg$computeLocation(peg$savedPos, peg$currPos);\n }\n\n function expected(description, location) {\n location = location !== undefined\n ? location\n : peg$computeLocation(peg$savedPos, peg$currPos);\n\n throw peg$buildStructuredError(\n [peg$otherExpectation(description)],\n input.substring(peg$savedPos, peg$currPos),\n location\n );\n }\n\n function error(message, location) {\n location = location !== undefined\n ? location\n : peg$computeLocation(peg$savedPos, peg$currPos);\n\n throw peg$buildSimpleError(message, location);\n }\n\n function peg$getUnicode(pos = peg$currPos) {\n const cp = input.codePointAt(pos);\n if (cp === undefined) {\n return \"\";\n }\n return String.fromCodePoint(cp);\n }\n\n function peg$literalExpectation(text, ignoreCase) {\n return { type: \"literal\", text, ignoreCase };\n }\n\n function peg$classExpectation(parts, inverted, ignoreCase, unicode) {\n return { type: \"class\", parts, inverted, ignoreCase, unicode };\n }\n\n function peg$anyExpectation() {\n return { type: \"any\" };\n }\n\n function peg$endExpectation() {\n return { type: \"end\" };\n }\n\n function peg$otherExpectation(description) {\n return { type: \"other\", description };\n }\n\n function peg$computePosDetails(pos) {\n let details = peg$posDetailsCache[pos];\n let p;\n\n if (details) {\n return details;\n } else {\n if (pos >= peg$posDetailsCache.length) {\n p = peg$posDetailsCache.length - 1;\n } else {\n p = pos;\n while (!peg$posDetailsCache[--p]) {}\n }\n\n details = peg$posDetailsCache[p];\n details = {\n line: details.line,\n column: details.column,\n };\n\n while (p < pos) {\n if (input.charCodeAt(p) === 10) {\n details.line++;\n details.column = 1;\n } else {\n details.column++;\n }\n\n p++;\n }\n\n peg$posDetailsCache[pos] = details;\n\n return details;\n }\n }\n\n function peg$computeLocation(startPos, endPos, offset) {\n const startPosDetails = peg$computePosDetails(startPos);\n const endPosDetails = peg$computePosDetails(endPos);\n\n const res = {\n source: peg$source,\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 if (offset && peg$source && (typeof peg$source.offset === \"function\")) {\n res.start = peg$source.offset(res.start);\n res.end = peg$source.offset(res.end);\n }\n return res;\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$buildSimpleError(message, location) {\n return new peg$SyntaxError(message, null, null, location);\n }\n\n function peg$buildStructuredError(expected, found, location) {\n return new peg$SyntaxError(\n peg$SyntaxError.buildMessage(expected, found),\n expected,\n found,\n location\n );\n }\n\n function peg$parsestart() {\n let 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 s2 = peg$parseOrQuery();\n if (s2 === peg$FAILED) {\n s2 = null;\n }\n s3 = peg$parseOptionalSpace();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f0(s2, s3);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseOrQuery() {\n let s0, s1, s2, s3;\n\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 s0 = peg$f1(s1, s3);\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 return s0;\n }\n\n function peg$parseAndQuery() {\n let 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 s0 = peg$f2(s1, s3);\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 let 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 s0 = peg$f3(s2);\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 let s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 40) {\n s1 = peg$c0;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e0); }\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 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$c1;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e1); }\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f4(s3, s4);\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 let 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 (input.charCodeAt(peg$currPos) === 58) {\n s3 = peg$c2;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\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 (input.charCodeAt(peg$currPos) === 123) {\n s5 = peg$c3;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e3); }\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 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$c4;\n peg$currPos++;\n } else {\n s9 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e4); }\n }\n if (s9 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f5(s1, s7, s8);\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 let s0;\n\n s0 = peg$parseFieldGeoSpatialExpression();\n if (s0 === peg$FAILED) {\n s0 = peg$parseFieldMultiGeoSpatialExpression();\n if (s0 === peg$FAILED) {\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 }\n\n return s0;\n }\n\n function peg$parseField() {\n let 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$e5); }\n }\n\n return s0;\n }\n\n function peg$parseFieldGeoSpatialExpression() {\n let 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 s3 = peg$parseGeoSpatialOperator();\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 s5 = peg$parseLiteral();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f6(s1, s3, s5);\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$parseFieldMultiGeoSpatialExpression() {\n let 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 s3 = peg$parseGeoSpatialOperator();\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 s5 = peg$parseListOfValues();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f7(s1, s3, s5);\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$parseFieldRangeExpression() {\n let 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 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 s5 = peg$parseNumberOrQuotedString();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f8(s1, s3, s5);\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 let 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 (input.charCodeAt(peg$currPos) === 58) {\n s3 = peg$c2;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\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 s5 = peg$parseListOfValues();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f9(s1, s5);\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 let s0, s1;\n\n s0 = peg$currPos;\n s1 = peg$parseValue();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f10(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseListOfValues() {\n let s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 40) {\n s1 = peg$c0;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e0); }\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 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$c1;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e1); }\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f11(s3, s4);\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 let 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 s0 = peg$f12(s1, s3);\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 let 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 s0 = peg$f13(s1, s3);\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 let 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 s0 = peg$f14(s2);\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 let 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$f15(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$f16(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$e6); }\n }\n\n return s0;\n }\n\n function peg$parseOr() {\n let 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 s2 = input.substr(peg$currPos, 2);\n if (s2.toLowerCase() === peg$c5) {\n peg$currPos += (2);\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e8); }\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 peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e7); }\n }\n\n return s0;\n }\n\n function peg$parseAnd() {\n let 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 s2 = input.substr(peg$currPos, 3);\n if (s2.toLowerCase() === peg$c6) {\n peg$currPos += (3);\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e10); }\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 peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e9); }\n }\n\n return s0;\n }\n\n function peg$parseNot() {\n let s0, s1, s2, s3;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = input.substr(peg$currPos, 3);\n if (s1.toLowerCase() === peg$c7) {\n peg$currPos += (3);\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e12); }\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 peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e11); }\n }\n\n return s0;\n }\n\n function peg$parseLiteral() {\n let 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$e13); }\n }\n\n return s0;\n }\n\n function peg$parseNumber() {\n let s0;\n\n s0 = peg$parseFloat();\n if (s0 === peg$FAILED) {\n s0 = peg$parseInteger();\n }\n\n return s0;\n }\n\n function peg$parseFloat() {\n let s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$parseInteger();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 46) {\n s2 = peg$c8;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e14); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = input.charAt(peg$currPos);\n if (peg$r0.test(s4)) {\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e15); }\n }\n if (s4 !== peg$FAILED) {\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = input.charAt(peg$currPos);\n if (peg$r0.test(s4)) {\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e15); }\n }\n }\n } else {\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f17();\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$parseInteger() {\n let s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = input.charAt(peg$currPos);\n if (peg$r0.test(s2)) {\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e15); }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = input.charAt(peg$currPos);\n if (peg$r0.test(s2)) {\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e15); }\n }\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f18();\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseQuotedString() {\n let s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 34) {\n s1 = peg$c9;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e16); }\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 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 (input.charCodeAt(peg$currPos) === 34) {\n s5 = peg$c9;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e16); }\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f19(s2, s3, s4);\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$c9;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e16); }\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 (input.charCodeAt(peg$currPos) === 34) {\n s3 = peg$c9;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e16); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f20(s2);\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$parseNumberOrQuotedString() {\n let s0;\n\n s0 = peg$parseNumber();\n if (s0 === peg$FAILED) {\n s0 = peg$parseQuotedString();\n if (s0 === peg$FAILED) {\n s0 = peg$parseOptionalSpace();\n }\n }\n\n return s0;\n }\n\n function peg$parseQuotedCharacter() {\n let 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$c10;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e17); }\n }\n if (s1 !== peg$FAILED) {\n s2 = input.charAt(peg$currPos);\n if (peg$r1.test(s2)) {\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e18); }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f21(s2);\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 = undefined;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s2 = input.charAt(peg$currPos);\n if (peg$r2.test(s2)) {\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e19); }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f22(s2);\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 let 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 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 peg$savedPos = s0;\n s0 = peg$f23(s1, s2, s3);\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$f24(s1);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parseUnquotedCharacter() {\n let 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 = undefined;\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 = undefined;\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 = undefined;\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$e20); }\n }\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f25(s4);\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 let s0, s1;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 42) {\n s1 = peg$c11;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e21); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f26();\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseOptionalSpace() {\n let 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 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 peg$savedPos = s0;\n s0 = peg$f27(s1, s2, s3);\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 let s0, s1;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c12) {\n s1 = peg$c12;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e22); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f28();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c13) {\n s1 = peg$c13;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e23); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f29();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c14) {\n s1 = peg$c14;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e24); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f30();\n }\n s0 = s1;\n }\n }\n\n return s0;\n }\n\n function peg$parseEscapedSpecialCharacter() {\n let s0, s1, s2;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 92) {\n s1 = peg$c10;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e17); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseSpecialCharacter();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f31(s2);\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 let s0, s1, s2;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 92) {\n s1 = peg$c10;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e17); }\n }\n if (s1 !== peg$FAILED) {\n s2 = input.substr(peg$currPos, 2);\n if (s2.toLowerCase() === peg$c5) {\n peg$currPos += (2);\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e8); }\n }\n if (s2 === peg$FAILED) {\n s2 = input.substr(peg$currPos, 3);\n if (s2.toLowerCase() === peg$c6) {\n peg$currPos += (3);\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e10); }\n }\n if (s2 === peg$FAILED) {\n s2 = input.substr(peg$currPos, 3);\n if (s2.toLowerCase() === peg$c7) {\n peg$currPos += (3);\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e12); }\n }\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f32(s2);\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 let 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 let s0;\n\n s0 = input.charAt(peg$currPos);\n if (peg$r3.test(s0)) {\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e25); }\n }\n\n return s0;\n }\n\n function peg$parseGeoSpatialOperator() {\n let s0, s1;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c15) {\n s1 = peg$c15;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e26); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f33();\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseRangeOperator() {\n let s0, s1;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c16) {\n s1 = peg$c16;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e27); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f34();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c17) {\n s1 = peg$c17;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e28); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f35();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 60) {\n s1 = peg$c18;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e29); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f36();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 62) {\n s1 = peg$c19;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e30); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f37();\n }\n s0 = s1;\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseSpace() {\n let s0, s1;\n\n peg$silentFails++;\n s0 = input.charAt(peg$currPos);\n if (peg$r4.test(s0)) {\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e32); }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e31); }\n }\n\n return s0;\n }\n\n function peg$parseCursor() {\n let s0, s1, s2;\n\n s0 = peg$currPos;\n peg$savedPos = peg$currPos;\n s1 = peg$f38();\n if (s1) {\n s1 = undefined;\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n if (input.substr(peg$currPos, 14) === peg$c20) {\n s2 = peg$c20;\n peg$currPos += 14;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e33); }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f39();\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\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 var group = 0\n\n peg$result = peg$startRuleFunction();\n\n const peg$success = (peg$result !== peg$FAILED && peg$currPos === input.length);\n function peg$throw() {\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n peg$fail(peg$endExpectation());\n }\n\n throw peg$buildStructuredError(\n peg$maxFailExpected,\n peg$maxFailPos < input.length ? peg$getUnicode(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 if (options.peg$library) {\n return /** @type {any} */ ({\n peg$result,\n peg$currPos,\n peg$FAILED,\n peg$maxFailExpected,\n peg$maxFailPos,\n peg$success,\n peg$throw: peg$success ? undefined : peg$throw,\n });\n }\n if (peg$success) {\n return peg$result;\n } else {\n peg$throw();\n }\n}\n return {\n StartRules: [\"start\", \"Literal\"],\n SyntaxError: peg$SyntaxError,\n parse: peg$parse,\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 { nodeTypes } from \"../node_types/index\";\nimport { DQLSyntaxError } from \"../kuery_syntax_error\";\nimport { KueryNode, DslQuery, KueryParseOptions } from \"../types\";\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(\n nodeTypes.function.buildNode(\"and\", []),\n indexPattern\n );\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\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","/* @preserve\n* @terraformer/wkt - v2.2.0 - MIT\n* Copyright (c) 2012-2024 Environmental Systems Research Institute, Inc.\n* Wed May 15 2024 14:35:51 GMT-0700 (Pacific Daylight Time)\n*/\n/* global parser */ // via jison\n\n/* Copyright (c) 2012-2020 Environmental Systems Research Institute, Inc.\n * MIT */\n\n/** @module Terraformer */\n\nvar o = function o(k, v, _o, l) {\n for (_o = _o || {}, l = k.length; l--; _o[k[l]] = v);\n return _o;\n },\n $V0 = [1, 9],\n $V1 = [1, 10],\n $V2 = [1, 11],\n $V3 = [1, 12],\n $V4 = [1, 13],\n $V5 = [1, 14],\n $V6 = [1, 15],\n $V7 = [1, 60],\n $V8 = [5, 15, 19],\n $V9 = [1, 67],\n $Va = [1, 73],\n $Vb = [1, 87],\n $Vc = [1, 104],\n $Vd = [15, 19],\n $Ve = [1, 110],\n $Vf = [1, 116],\n $Vg = [1, 130],\n $Vh = [1, 136];\nvar parser = {\n trace: function trace() {},\n yy: {},\n symbols_: {\n \"error\": 2,\n \"expressions\": 3,\n \"point\": 4,\n \"EOF\": 5,\n \"linestring\": 6,\n \"polygon\": 7,\n \"multipoint\": 8,\n \"multilinestring\": 9,\n \"multipolygon\": 10,\n \"geometrycollection\": 11,\n \"coordinate\": 12,\n \"DOUBLE_TOK\": 13,\n \"ptarray\": 14,\n \"COMMA\": 15,\n \"ring_list\": 16,\n \"ring\": 17,\n \"(\": 18,\n \")\": 19,\n \"POINT\": 20,\n \"Z\": 21,\n \"ZM\": 22,\n \"M\": 23,\n \"EMPTY\": 24,\n \"point_untagged\": 25,\n \"polygon_list\": 26,\n \"polygon_untagged\": 27,\n \"point_list\": 28,\n \"LINESTRING\": 29,\n \"POLYGON\": 30,\n \"MULTIPOINT\": 31,\n \"MULTILINESTRING\": 32,\n \"MULTIPOLYGON\": 33,\n \"geometry\": 34,\n \"geometry_collection\": 35,\n \"GEOMETRYCOLLECTION\": 36,\n \"$accept\": 0,\n \"$end\": 1\n },\n terminals_: {\n 2: \"error\",\n 5: \"EOF\",\n 13: \"DOUBLE_TOK\",\n 15: \"COMMA\",\n 18: \"(\",\n 19: \")\",\n 20: \"POINT\",\n 21: \"Z\",\n 22: \"ZM\",\n 23: \"M\",\n 24: \"EMPTY\",\n 29: \"LINESTRING\",\n 30: \"POLYGON\",\n 31: \"MULTIPOINT\",\n 32: \"MULTILINESTRING\",\n 33: \"MULTIPOLYGON\",\n 36: \"GEOMETRYCOLLECTION\"\n },\n productions_: [0, [3, 2], [3, 2], [3, 2], [3, 2], [3, 2], [3, 2], [3, 2], [12, 2], [12, 3], [12, 4], [14, 3], [14, 1], [16, 3], [16, 1], [17, 3], [4, 4], [4, 5], [4, 5], [4, 5], [4, 2], [25, 1], [25, 3], [26, 3], [26, 1], [27, 3], [28, 3], [28, 1], [6, 4], [6, 5], [6, 5], [6, 5], [6, 2], [7, 4], [7, 5], [7, 5], [7, 5], [7, 2], [8, 4], [8, 5], [8, 5], [8, 5], [8, 2], [9, 4], [9, 5], [9, 5], [9, 5], [9, 2], [10, 4], [10, 5], [10, 5], [10, 5], [10, 2], [34, 1], [34, 1], [34, 1], [34, 1], [34, 1], [34, 1], [34, 1], [35, 3], [35, 1], [11, 4], [11, 5], [11, 5], [11, 5], [11, 2]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $ /* vstack */, _$ /* lstack */) {\n /* this == yyval */\n\n var $0 = $.length - 1;\n switch (yystate) {\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 6:\n case 7:\n return $[$0 - 1];\n case 8:\n this.$ = new PointArray([Number($[$0 - 1]), Number($[$0])]);\n break;\n case 9:\n this.$ = new PointArray([Number($[$0 - 2]), Number($[$0 - 1]), Number($[$0])]);\n break;\n case 10:\n this.$ = new PointArray([Number($[$0 - 3]), Number($[$0 - 2]), Number($[$0 - 1]), Number($[$0])]);\n break;\n case 11:\n case 26:\n this.$ = $[$0 - 2].addPoint($[$0]);\n break;\n case 12:\n case 21:\n case 27:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n case 58:\n case 59:\n this.$ = $[$0];\n break;\n case 13:\n this.$ = $[$0 - 2].addRing($[$0]);\n break;\n case 14:\n this.$ = new RingList($[$0]);\n break;\n case 15:\n this.$ = new Ring($[$0 - 1]);\n break;\n case 16:\n this.$ = {\n \"type\": \"Point\",\n \"coordinates\": $[$0 - 1].data[0]\n };\n break;\n case 17:\n this.$ = {\n \"type\": \"Point\",\n \"coordinates\": $[$0 - 1].data[0],\n \"properties\": {\n z: true\n }\n };\n break;\n case 18:\n this.$ = {\n \"type\": \"Point\",\n \"coordinates\": $[$0 - 1].data[0],\n \"properties\": {\n z: true,\n m: true\n }\n };\n break;\n case 19:\n this.$ = {\n \"type\": \"Point\",\n \"coordinates\": $[$0 - 1].data[0],\n \"properties\": {\n m: true\n }\n };\n break;\n case 20:\n this.$ = {\n \"type\": \"Point\",\n \"coordinates\": []\n };\n break;\n case 22:\n case 25:\n this.$ = $[$0 - 1];\n break;\n case 23:\n this.$ = $[$0 - 2].addPolygon($[$0]);\n break;\n case 24:\n this.$ = new PolygonList($[$0]);\n break;\n case 28:\n this.$ = {\n \"type\": \"LineString\",\n \"coordinates\": $[$0 - 1].data\n };\n break;\n case 29:\n this.$ = {\n \"type\": \"LineString\",\n \"coordinates\": $[$0 - 1].data,\n \"properties\": {\n z: true\n }\n };\n break;\n case 30:\n this.$ = {\n \"type\": \"LineString\",\n \"coordinates\": $[$0 - 1].data,\n \"properties\": {\n m: true\n }\n };\n break;\n case 31:\n this.$ = {\n \"type\": \"LineString\",\n \"coordinates\": $[$0 - 1].data,\n \"properties\": {\n z: true,\n m: true\n }\n };\n break;\n case 32:\n this.$ = {\n \"type\": \"LineString\",\n \"coordinates\": []\n };\n break;\n case 33:\n this.$ = {\n \"type\": \"Polygon\",\n \"coordinates\": $[$0 - 1].toJSON()\n };\n break;\n case 34:\n this.$ = {\n \"type\": \"Polygon\",\n \"coordinates\": $[$0 - 1].toJSON(),\n \"properties\": {\n z: true\n }\n };\n break;\n case 35:\n this.$ = {\n \"type\": \"Polygon\",\n \"coordinates\": $[$0 - 1].toJSON(),\n \"properties\": {\n m: true\n }\n };\n break;\n case 36:\n this.$ = {\n \"type\": \"Polygon\",\n \"coordinates\": $[$0 - 1].toJSON(),\n \"properties\": {\n z: true,\n m: true\n }\n };\n break;\n case 37:\n this.$ = {\n \"type\": \"Polygon\",\n \"coordinates\": []\n };\n break;\n case 38:\n this.$ = {\n \"type\": \"MultiPoint\",\n \"coordinates\": $[$0 - 1].data\n };\n break;\n case 39:\n this.$ = {\n \"type\": \"MultiPoint\",\n \"coordinates\": $[$0 - 1].data,\n \"properties\": {\n z: true\n }\n };\n break;\n case 40:\n this.$ = {\n \"type\": \"MultiPoint\",\n \"coordinates\": $[$0 - 1].data,\n \"properties\": {\n m: true\n }\n };\n break;\n case 41:\n this.$ = {\n \"type\": \"MultiPoint\",\n \"coordinates\": $[$0 - 1].data,\n \"properties\": {\n z: true,\n m: true\n }\n };\n break;\n case 42:\n this.$ = {\n \"type\": \"MultiPoint\",\n \"coordinates\": []\n };\n break;\n case 43:\n this.$ = {\n \"type\": \"MultiLineString\",\n \"coordinates\": $[$0 - 1].toJSON()\n };\n break;\n case 44:\n this.$ = {\n \"type\": \"MultiLineString\",\n \"coordinates\": $[$0 - 1].toJSON(),\n \"properties\": {\n z: true\n }\n };\n break;\n case 45:\n this.$ = {\n \"type\": \"MultiLineString\",\n \"coordinates\": $[$0 - 1].toJSON(),\n \"properties\": {\n m: true\n }\n };\n break;\n case 46:\n this.$ = {\n \"type\": \"MultiLineString\",\n \"coordinates\": $[$0 - 1].toJSON(),\n \"properties\": {\n z: true,\n m: true\n }\n };\n break;\n case 47:\n this.$ = {\n \"type\": \"MultiLineString\",\n \"coordinates\": []\n };\n break;\n case 48:\n this.$ = {\n \"type\": \"MultiPolygon\",\n \"coordinates\": $[$0 - 1].toJSON()\n };\n break;\n case 49:\n this.$ = {\n \"type\": \"MultiPolygon\",\n \"coordinates\": $[$0 - 1].toJSON(),\n \"properties\": {\n z: true\n }\n };\n break;\n case 50:\n this.$ = {\n \"type\": \"MultiPolygon\",\n \"coordinates\": $[$0 - 1].toJSON(),\n \"properties\": {\n m: true\n }\n };\n break;\n case 51:\n this.$ = {\n \"type\": \"MultiPolygon\",\n \"coordinates\": $[$0 - 1].toJSON(),\n \"properties\": {\n z: true,\n m: true\n }\n };\n break;\n case 52:\n this.$ = {\n \"type\": \"MultiPolygon\",\n \"coordinates\": []\n };\n break;\n case 60:\n this.$ = $[$0 - 2].addGeometry($[$0]);\n break;\n case 61:\n this.$ = new GeometryList($[$0]);\n break;\n case 62:\n this.$ = {\n \"type\": \"GeometryCollection\",\n \"geometries\": $[$0 - 1].toJSON()\n };\n break;\n case 63:\n this.$ = {\n \"type\": \"GeometryCollection\",\n \"geometries\": $[$0 - 1].toJSON(),\n \"properties\": {\n z: true\n }\n };\n break;\n case 64:\n this.$ = {\n \"type\": \"GeometryCollection\",\n \"geometries\": $[$0 - 1].toJSON(),\n \"properties\": {\n m: true\n }\n };\n break;\n case 65:\n this.$ = {\n \"type\": \"GeometryCollection\",\n \"geometries\": $[$0 - 1].toJSON(),\n \"properties\": {\n z: true,\n m: true\n }\n };\n break;\n case 66:\n this.$ = {\n \"type\": \"GeometryCollection\",\n \"geometries\": []\n };\n break;\n }\n },\n table: [{\n 3: 1,\n 4: 2,\n 6: 3,\n 7: 4,\n 8: 5,\n 9: 6,\n 10: 7,\n 11: 8,\n 20: $V0,\n 29: $V1,\n 30: $V2,\n 31: $V3,\n 32: $V4,\n 33: $V5,\n 36: $V6\n }, {\n 1: [3]\n }, {\n 5: [1, 16]\n }, {\n 5: [1, 17]\n }, {\n 5: [1, 18]\n }, {\n 5: [1, 19]\n }, {\n 5: [1, 20]\n }, {\n 5: [1, 21]\n }, {\n 5: [1, 22]\n }, {\n 18: [1, 23],\n 21: [1, 24],\n 22: [1, 25],\n 23: [1, 26],\n 24: [1, 27]\n }, {\n 18: [1, 28],\n 21: [1, 29],\n 22: [1, 31],\n 23: [1, 30],\n 24: [1, 32]\n }, {\n 18: [1, 33],\n 21: [1, 34],\n 22: [1, 36],\n 23: [1, 35],\n 24: [1, 37]\n }, {\n 18: [1, 38],\n 21: [1, 39],\n 22: [1, 41],\n 23: [1, 40],\n 24: [1, 42]\n }, {\n 18: [1, 43],\n 21: [1, 44],\n 22: [1, 46],\n 23: [1, 45],\n 24: [1, 47]\n }, {\n 18: [1, 48],\n 21: [1, 49],\n 22: [1, 51],\n 23: [1, 50],\n 24: [1, 52]\n }, {\n 18: [1, 53],\n 21: [1, 54],\n 22: [1, 56],\n 23: [1, 55],\n 24: [1, 57]\n }, {\n 1: [2, 1]\n }, {\n 1: [2, 2]\n }, {\n 1: [2, 3]\n }, {\n 1: [2, 4]\n }, {\n 1: [2, 5]\n }, {\n 1: [2, 6]\n }, {\n 1: [2, 7]\n }, {\n 12: 59,\n 13: $V7,\n 14: 58\n }, {\n 18: [1, 61]\n }, {\n 18: [1, 62]\n }, {\n 18: [1, 63]\n }, o($V8, [2, 20]), {\n 12: 66,\n 13: $V7,\n 18: $V9,\n 25: 65,\n 28: 64\n }, {\n 18: [1, 68]\n }, {\n 18: [1, 69]\n }, {\n 18: [1, 70]\n }, o($V8, [2, 32]), {\n 16: 71,\n 17: 72,\n 18: $Va\n }, {\n 18: [1, 74]\n }, {\n 18: [1, 75]\n }, {\n 18: [1, 76]\n }, o($V8, [2, 37]), {\n 12: 66,\n 13: $V7,\n 18: $V9,\n 25: 65,\n 28: 77\n }, {\n 18: [1, 78]\n }, {\n 18: [1, 79]\n }, {\n 18: [1, 80]\n }, o($V8, [2, 42]), {\n 16: 81,\n 17: 72,\n 18: $Va\n }, {\n 18: [1, 82]\n }, {\n 18: [1, 83]\n }, {\n 18: [1, 84]\n }, o($V8, [2, 47]), {\n 18: $Vb,\n 26: 85,\n 27: 86\n }, {\n 18: [1, 88]\n }, {\n 18: [1, 89]\n }, {\n 18: [1, 90]\n }, o($V8, [2, 52]), {\n 4: 93,\n 6: 94,\n 7: 95,\n 8: 96,\n 9: 97,\n 10: 98,\n 11: 99,\n 20: $V0,\n 29: $V1,\n 30: $V2,\n 31: $V3,\n 32: $V4,\n 33: $V5,\n 34: 92,\n 35: 91,\n 36: $V6\n }, {\n 18: [1, 100]\n }, {\n 18: [1, 101]\n }, {\n 18: [1, 102]\n }, o($V8, [2, 66]), {\n 15: $Vc,\n 19: [1, 103]\n }, o($Vd, [2, 12]), {\n 13: [1, 105]\n }, {\n 12: 59,\n 13: $V7,\n 14: 106\n }, {\n 12: 59,\n 13: $V7,\n 14: 107\n }, {\n 12: 59,\n 13: $V7,\n 14: 108\n }, {\n 15: $Ve,\n 19: [1, 109]\n }, o($Vd, [2, 27]), o($Vd, [2, 21]), {\n 12: 111,\n 13: $V7\n }, {\n 12: 66,\n 13: $V7,\n 18: $V9,\n 25: 65,\n 28: 112\n }, {\n 12: 66,\n 13: $V7,\n 18: $V9,\n 25: 65,\n 28: 113\n }, {\n 12: 66,\n 13: $V7,\n 18: $V9,\n 25: 65,\n 28: 114\n }, {\n 15: $Vf,\n 19: [1, 115]\n }, o($Vd, [2, 14]), {\n 12: 59,\n 13: $V7,\n 14: 117\n }, {\n 16: 118,\n 17: 72,\n 18: $Va\n }, {\n 16: 119,\n 17: 72,\n 18: $Va\n }, {\n 16: 120,\n 17: 72,\n 18: $Va\n }, {\n 15: $Ve,\n 19: [1, 121]\n }, {\n 12: 66,\n 13: $V7,\n 18: $V9,\n 25: 65,\n 28: 122\n }, {\n 12: 66,\n 13: $V7,\n 18: $V9,\n 25: 65,\n 28: 123\n }, {\n 12: 66,\n 13: $V7,\n 18: $V9,\n 25: 65,\n 28: 124\n }, {\n 15: $Vf,\n 19: [1, 125]\n }, {\n 16: 126,\n 17: 72,\n 18: $Va\n }, {\n 16: 127,\n 17: 72,\n 18: $Va\n }, {\n 16: 128,\n 17: 72,\n 18: $Va\n }, {\n 15: $Vg,\n 19: [1, 129]\n }, o($Vd, [2, 24]), {\n 16: 131,\n 17: 72,\n 18: $Va\n }, {\n 18: $Vb,\n 26: 132,\n 27: 86\n }, {\n 18: $Vb,\n 26: 133,\n 27: 86\n }, {\n 18: $Vb,\n 26: 134,\n 27: 86\n }, {\n 15: $Vh,\n 19: [1, 135]\n }, o($Vd, [2, 61]), o($Vd, [2, 53]), o($Vd, [2, 54]), o($Vd, [2, 55]), o($Vd, [2, 56]), o($Vd, [2, 57]), o($Vd, [2, 58]), o($Vd, [2, 59]), {\n 4: 93,\n 6: 94,\n 7: 95,\n 8: 96,\n 9: 97,\n 10: 98,\n 11: 99,\n 20: $V0,\n 29: $V1,\n 30: $V2,\n 31: $V3,\n 32: $V4,\n 33: $V5,\n 34: 92,\n 35: 137,\n 36: $V6\n }, {\n 4: 93,\n 6: 94,\n 7: 95,\n 8: 96,\n 9: 97,\n 10: 98,\n 11: 99,\n 20: $V0,\n 29: $V1,\n 30: $V2,\n 31: $V3,\n 32: $V4,\n 33: $V5,\n 34: 92,\n 35: 138,\n 36: $V6\n }, {\n 4: 93,\n 6: 94,\n 7: 95,\n 8: 96,\n 9: 97,\n 10: 98,\n 11: 99,\n 20: $V0,\n 29: $V1,\n 30: $V2,\n 31: $V3,\n 32: $V4,\n 33: $V5,\n 34: 92,\n 35: 139,\n 36: $V6\n }, o($V8, [2, 16]), {\n 12: 140,\n 13: $V7\n }, o($Vd, [2, 8], {\n 13: [1, 141]\n }), {\n 15: $Vc,\n 19: [1, 142]\n }, {\n 15: $Vc,\n 19: [1, 143]\n }, {\n 15: $Vc,\n 19: [1, 144]\n }, o($V8, [2, 28]), {\n 12: 66,\n 13: $V7,\n 18: $V9,\n 25: 145\n }, {\n 19: [1, 146]\n }, {\n 15: $Ve,\n 19: [1, 147]\n }, {\n 15: $Ve,\n 19: [1, 148]\n }, {\n 15: $Ve,\n 19: [1, 149]\n }, o($V8, [2, 33]), {\n 17: 150,\n 18: $Va\n }, {\n 15: $Vc,\n 19: [1, 151]\n }, {\n 15: $Vf,\n 19: [1, 152]\n }, {\n 15: $Vf,\n 19: [1, 153]\n }, {\n 15: $Vf,\n 19: [1, 154]\n }, o($V8, [2, 38]), {\n 15: $Ve,\n 19: [1, 155]\n }, {\n 15: $Ve,\n 19: [1, 156]\n }, {\n 15: $Ve,\n 19: [1, 157]\n }, o($V8, [2, 43]), {\n 15: $Vf,\n 19: [1, 158]\n }, {\n 15: $Vf,\n 19: [1, 159]\n }, {\n 15: $Vf,\n 19: [1, 160]\n }, o($V8, [2, 48]), {\n 18: $Vb,\n 27: 161\n }, {\n 15: $Vf,\n 19: [1, 162]\n }, {\n 15: $Vg,\n 19: [1, 163]\n }, {\n 15: $Vg,\n 19: [1, 164]\n }, {\n 15: $Vg,\n 19: [1, 165]\n }, o($V8, [2, 62]), {\n 4: 93,\n 6: 94,\n 7: 95,\n 8: 96,\n 9: 97,\n 10: 98,\n 11: 99,\n 20: $V0,\n 29: $V1,\n 30: $V2,\n 31: $V3,\n 32: $V4,\n 33: $V5,\n 34: 166,\n 36: $V6\n }, {\n 15: $Vh,\n 19: [1, 167]\n }, {\n 15: $Vh,\n 19: [1, 168]\n }, {\n 15: $Vh,\n 19: [1, 169]\n }, o($Vd, [2, 11]), o($Vd, [2, 9], {\n 13: [1, 170]\n }), o($V8, [2, 17]), o($V8, [2, 18]), o($V8, [2, 19]), o($Vd, [2, 26]), o($Vd, [2, 22]), o($V8, [2, 29]), o($V8, [2, 30]), o($V8, [2, 31]), o($Vd, [2, 13]), o($Vd, [2, 15]), o($V8, [2, 34]), o($V8, [2, 35]), o($V8, [2, 36]), o($V8, [2, 39]), o($V8, [2, 40]), o($V8, [2, 41]), o($V8, [2, 44]), o($V8, [2, 45]), o($V8, [2, 46]), o($Vd, [2, 23]), o($Vd, [2, 25]), o($V8, [2, 49]), o($V8, [2, 50]), o($V8, [2, 51]), o($Vd, [2, 60]), o($V8, [2, 63]), o($V8, [2, 64]), o($V8, [2, 65]), o($Vd, [2, 10])],\n defaultActions: {\n 16: [2, 1],\n 17: [2, 2],\n 18: [2, 3],\n 19: [2, 4],\n 20: [2, 5],\n 21: [2, 6],\n 22: [2, 7]\n },\n parseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this,\n stack = [0],\n vstack = [null],\n lstack = [],\n table = this.table,\n yytext = '',\n yylineno = 0,\n yyleng = 0,\n TERROR = 2,\n EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = {\n yy: {}\n };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n var lex = function lex() {\n var token;\n token = lexer.lex() || EOF;\n if (typeof token !== 'number') {\n token = self.symbols_[token] || token;\n }\n return token;\n };\n var symbol,\n state,\n action,\n r,\n yyval = {},\n p,\n len,\n newState,\n expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];\n }\n r = this.performAction.apply(yyval, [yytext, yyleng, yylineno, sharedState.yy, action[1], vstack, lstack].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = function () {\n var lexer = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function setInput(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function input() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function unput(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function more() {\n this._more = true;\n return this;\n },\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: function reject() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n },\n // retain first n characters of the match\n less: function less(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function pastInput() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...' : '') + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function upcomingInput() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function showPosition() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function test_match(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n // return next match in input\n next: function next() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: {},\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n // ignore\n break;\n case 1:\n return 18;\n case 2:\n return 19;\n case 3:\n return 13;\n case 4:\n return 20;\n case 5:\n return 29;\n case 6:\n return 30;\n case 7:\n return 31;\n case 8:\n return 32;\n case 9:\n return 33;\n case 10:\n return 36;\n case 11:\n return 15;\n case 12:\n return 24;\n case 13:\n return 23;\n case 14:\n return 21;\n case 15:\n return 22;\n case 16:\n return 5;\n case 17:\n return \"INVALID\";\n }\n },\n rules: [/^(?:\\s+)/, /^(?:\\()/, /^(?:\\))/, /^(?:-?[0-9]+(\\.[0-9]+)?([eE][\\-\\+]?[0-9]+)?)/, /^(?:POINT\\b)/, /^(?:LINESTRING\\b)/, /^(?:POLYGON\\b)/, /^(?:MULTIPOINT\\b)/, /^(?:MULTILINESTRING\\b)/, /^(?:MULTIPOLYGON\\b)/, /^(?:GEOMETRYCOLLECTION\\b)/, /^(?:,)/, /^(?:EMPTY\\b)/, /^(?:M\\b)/, /^(?:Z\\b)/, /^(?:ZM\\b)/, /^(?:$)/, /^(?:.)/],\n conditions: {\n \"INITIAL\": {\n \"rules\": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17],\n \"inclusive\": true\n }\n }\n };\n return lexer;\n}();\nparser.lexer = lexer;\nfunction Parser() {\n this.yy = {};\n}\nParser.prototype = parser;\nparser.Parser = Parser;\n\n// surface parsing errors to calling code https://github.com/zaach/jison/issues/218\nparser.yy.parseError = function (err) {\n throw err;\n};\nfunction PointArray(point) {\n this.data = [point];\n this.type = 'PointArray';\n}\nPointArray.prototype.addPoint = function (point) {\n if (point.type === 'PointArray') {\n this.data = this.data.concat(point.data);\n } else {\n this.data.push(point);\n }\n return this;\n};\nPointArray.prototype.toJSON = function () {\n return this.data;\n};\nfunction Ring(point) {\n this.data = point;\n this.type = 'Ring';\n}\nRing.prototype.toJSON = function () {\n var data = [];\n for (var i = 0; i < this.data.data.length; i++) {\n data.push(this.data.data[i]);\n }\n return data;\n};\nfunction RingList(ring) {\n this.data = [ring];\n this.type = 'RingList';\n}\nRingList.prototype.addRing = function (ring) {\n this.data.push(ring);\n return this;\n};\nRingList.prototype.toJSON = function () {\n var data = [];\n for (var i = 0; i < this.data.length; i++) {\n data.push(this.data[i].toJSON());\n }\n if (data.length === 1) {\n return data;\n } else {\n return data;\n }\n};\nfunction GeometryList(geometry) {\n this.data = [geometry];\n this.type = 'GeometryList';\n}\nGeometryList.prototype.addGeometry = function (geometry) {\n this.data.push(geometry);\n return this;\n};\nGeometryList.prototype.toJSON = function () {\n return this.data;\n};\nfunction PolygonList(polygon) {\n this.data = [polygon];\n this.type = 'PolygonList';\n}\nPolygonList.prototype.addPolygon = function (polygon) {\n this.data.push(polygon);\n return this;\n};\nPolygonList.prototype.toJSON = function () {\n var data = [];\n for (var i = 0; i < this.data.length; i++) {\n data = data.concat([this.data[i].toJSON()]);\n }\n return data;\n};\n\n/**\n * Converts a [WKT](https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry) geometry into a GeoJSON geometry.\n * @function\n * @param {string} WKT - The input WKT geometry.\n * @return {object} GeoJSON.\n *\n * ```js\n * import { wktToGeoJSON } from \"@terraformer/wkt\"\n *\n * wktToGeoJSON(\"POINT (-122.6764 45.5165)\");\n *\n * >> { \"type\": \"Point\", \"coordinates\": [ -122.6764, 45.5165 ] }\n * ```\n */\nvar wktToGeoJSON = function wktToGeoJSON(element) {\n var res;\n try {\n res = parser.parse(element);\n } catch (err) {\n throw Error('Unable to parse: ' + err);\n }\n return res;\n};\nvar arrayToRing = function arrayToRing(arr) {\n var parts = [];\n var ret = '';\n for (var i = 0; i < arr.length; i++) {\n parts.push(arr[i].join(' '));\n }\n ret += '(' + parts.join(', ') + ')';\n return ret;\n};\nvar pointToWKTPoint = function pointToWKTPoint(geojson) {\n var ret = 'POINT ';\n if (geojson.coordinates === undefined || geojson.coordinates.length === 0) {\n ret += 'EMPTY';\n return ret;\n } else if (geojson.coordinates.length === 3) {\n // 3d or time? default to 3d\n if (geojson.properties && geojson.properties.m === true) {\n ret += 'M ';\n } else {\n ret += 'Z ';\n }\n } else if (geojson.coordinates.length === 4) {\n // 3d and time\n ret += 'ZM ';\n }\n\n // include coordinates\n ret += '(' + geojson.coordinates.join(' ') + ')';\n return ret;\n};\nvar lineStringToWKTLineString = function lineStringToWKTLineString(geojson) {\n var ret = 'LINESTRING ';\n if (geojson.coordinates === undefined || geojson.coordinates.length === 0 || geojson.coordinates[0].length === 0) {\n ret += 'EMPTY';\n return ret;\n } else if (geojson.coordinates[0].length === 3) {\n if (geojson.properties && geojson.properties.m === true) {\n ret += 'M ';\n } else {\n ret += 'Z ';\n }\n } else if (geojson.coordinates[0].length === 4) {\n ret += 'ZM ';\n }\n ret += arrayToRing(geojson.coordinates);\n return ret;\n};\nvar polygonToWKTPolygon = function polygonToWKTPolygon(geojson) {\n var ret = 'POLYGON ';\n if (geojson.coordinates === undefined || geojson.coordinates.length === 0 || geojson.coordinates[0].length === 0) {\n ret += 'EMPTY';\n return ret;\n } else if (geojson.coordinates[0][0].length === 3) {\n if (geojson.properties && geojson.properties.m === true) {\n ret += 'M ';\n } else {\n ret += 'Z ';\n }\n } else if (geojson.coordinates[0][0].length === 4) {\n ret += 'ZM ';\n }\n ret += '(';\n var parts = [];\n for (var i = 0; i < geojson.coordinates.length; i++) {\n parts.push(arrayToRing(geojson.coordinates[i]));\n }\n ret += parts.join(', ');\n ret += ')';\n return ret;\n};\nvar multiPointToWKTMultiPoint = function multiPointToWKTMultiPoint(geojson) {\n var ret = 'MULTIPOINT ';\n if (geojson.coordinates === undefined || geojson.coordinates.length === 0 || geojson.coordinates[0].length === 0) {\n ret += 'EMPTY';\n return ret;\n } else if (geojson.coordinates[0].length === 3) {\n if (geojson.properties && geojson.properties.m === true) {\n ret += 'M ';\n } else {\n ret += 'Z ';\n }\n } else if (geojson.coordinates[0].length === 4) {\n ret += 'ZM ';\n }\n ret += arrayToRing(geojson.coordinates);\n return ret;\n};\nvar multiLineStringToWKTMultiLineString = function multiLineStringToWKTMultiLineString(geojson) {\n var ret = 'MULTILINESTRING ';\n if (geojson.coordinates === undefined || geojson.coordinates.length === 0 || geojson.coordinates[0].length === 0) {\n ret += 'EMPTY';\n return ret;\n } else if (geojson.coordinates[0][0].length === 3) {\n if (geojson.properties && geojson.properties.m === true) {\n ret += 'M ';\n } else {\n ret += 'Z ';\n }\n } else if (geojson.coordinates[0][0].length === 4) {\n ret += 'ZM ';\n }\n ret += '(';\n var parts = [];\n for (var i = 0; i < geojson.coordinates.length; i++) {\n parts.push(arrayToRing(geojson.coordinates[i]));\n }\n ret += parts.join(', ');\n ret += ')';\n return ret;\n};\nvar multiPolygonToWKTMultiPolygon = function multiPolygonToWKTMultiPolygon(geojson) {\n var ret = 'MULTIPOLYGON ';\n if (geojson.coordinates === undefined || geojson.coordinates.length === 0 || geojson.coordinates[0].length === 0) {\n ret += 'EMPTY';\n return ret;\n } else if (geojson.coordinates[0][0][0].length === 3) {\n if (geojson.properties && geojson.properties.m === true) {\n ret += 'M ';\n } else {\n ret += 'Z ';\n }\n } else if (geojson.coordinates[0][0][0].length === 4) {\n ret += 'ZM ';\n }\n ret += '(';\n var inner = [];\n for (var c = 0; c < geojson.coordinates.length; c++) {\n var it = '(';\n var parts = [];\n for (var i = 0; i < geojson.coordinates[c].length; i++) {\n parts.push(arrayToRing(geojson.coordinates[c][i]));\n }\n it += parts.join(', ');\n it += ')';\n inner.push(it);\n }\n ret += inner.join(', ');\n ret += ')';\n return ret;\n};\n\n/**\n * Converts a GeoJSON geometry or GeometryCollection into a [WKT](https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry) string.\n * @function\n * @param {object} GeoJSON - The input GeoJSON geometry or GeometryCollection.\n * @return {string} WKT.\n * ```js\n * import { geojsonToWKT } from \"@terraformer/wkt\"\n *\n * const geojsonPoint = {\n * \"type\": \"Point\",\n * \"coordinates\": [-122.6764, 45.5165]\n * }\n *\n * geojsonToWKT(geojsonPoint)\n *\n * >> \"POINT (-122.6764 45.5165)\"\n * ```\n */\nvar geojsonToWKT = function geojsonToWKT(geojson) {\n switch (geojson.type) {\n case 'Point':\n return pointToWKTPoint(geojson);\n case 'LineString':\n return lineStringToWKTLineString(geojson);\n case 'Polygon':\n return polygonToWKTPolygon(geojson);\n case 'MultiPoint':\n return multiPointToWKTMultiPoint(geojson);\n case 'MultiLineString':\n return multiLineStringToWKTMultiLineString(geojson);\n case 'MultiPolygon':\n return multiPolygonToWKTMultiPolygon(geojson);\n case 'GeometryCollection':\n var ret = 'GEOMETRYCOLLECTION';\n var parts = [];\n for (var i = 0; i < geojson.geometries.length; i++) {\n parts.push(geojsonToWKT(geojson.geometries[i]));\n }\n return ret + '(' + parts.join(', ') + ')';\n default:\n throw Error('Unknown Type: ' + geojson.type);\n }\n};\n\nexport { Parser, geojsonToWKT, parser, wktToGeoJSON };\n","import { wktToGeoJSON } from \"@terraformer/wkt\";\nimport { KueryNode } from \"../types\";\nexport function toOpenSearchQuery(node: KueryNode) {\n const [fieldNameArg, operator, value] = node.arguments;\n\n return {\n bool: {\n must: [\n {\n exists: {\n field: fieldNameArg.value,\n },\n },\n {\n geo_shape: {\n [fieldNameArg.value]: {\n relation: operator,\n shape: wktToGeoJSON(value.value),\n },\n },\n },\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 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\";\nimport * as geospatial from \"./geospatial\";\n\nexport const functions: any = {\n is,\n and,\n or,\n not,\n range,\n exists,\n nested,\n geospatial,\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","import { 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 =\n | \"is\"\n | \"and\"\n | \"or\"\n | \"not\"\n | \"range\"\n | \"exists\"\n | \"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\n .filter((f) => f.type === \"string\")\n .map((field) => `${field.name} ILIKE '%${valueArg.value}%'`)\n .join(\" OR \")})`;\n }\n if (\n fields &&\n !isValue &&\n (valueArg.value === true || valueArg.value === false)\n ) {\n return `(${fields\n .filter((f) => f.type === \"boolean\")\n .map((field) => `${field.name}=${valueArg.value}`)\n .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 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};\nconst geospatial = (node: KueryNode) => {\n const [fieldName, operator, value] = node.arguments;\n console.log(fieldName, operator, value);\n if (operator === \"within\") return `WITHIN(${fieldName.value},${value.value})`;\n throw Error(`Unsupported GEO Operator:${operator}`);\n};\nexport const functions = {\n is,\n and,\n or,\n not,\n range,\n exists,\n nested,\n geospatial,\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\";\nimport { wktToGeoJSON } from \"@terraformer/wkt\";\n\nexport const KQL_WILDCARD_SYMBOL = wildcardSymbol;\nexport const KQL_NODE_TYPE_WILDCARD = \"wildcard\";\nexport type FunctionName =\n | \"is\"\n | \"and\"\n | \"or\"\n | \"not\"\n | \"range\"\n | \"exists\"\n | \"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 =\n valueArg.type === \"wildcard\" &&\n (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.map((child: KueryNode) => {\n return toMongo(child);\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};\nconst exists = (node: KueryNode) => {\n const [fieldNameArg] = node.arguments;\n return { [toMongo(fieldNameArg)]: { $ne: null } };\n};\n\nconst nested = (node: KueryNode) => {\n console.warn(\"TODO Implement nested search\", node);\n return \"\";\n};\nconst geospatial = (node: KueryNode) => {\n const [fieldName, operator, value] = node.arguments;\n if (operator == \"within\") {\n return { [fieldName.value]: { $geoWithin: wktToGeoJSON(value.value) } };\n }\n};\nexport const functions = {\n is,\n and,\n or,\n not,\n range,\n exists,\n nested,\n geospatial,\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 { FieldTypes, GeospatialOperators, KueryNode } from \"../..\";\nimport { LiteralTypeBuildNode } from \"../kuery\";\nimport { wildcardSymbol } from \"../kuery/node_types/wildcard\";\n\nexport const KQL_WILDCARD_SYMBOL = wildcardSymbol;\nexport const KQL_NODE_TYPE_WILDCARD = \"wildcard\";\nexport type FunctionName =\n | \"is\"\n | \"and\"\n | \"or\"\n | \"not\"\n | \"range\"\n | \"exists\"\n | \"nested\";\nconst and = (node: KueryNode, fields?: FieldTypes[]) => {\n const children = node.arguments || [];\n let html =\n \"<span class='and-expression'>\" +\n children\n .map((child: KueryNode) => {\n return toHTML(child, fields);\n })\n .join(\" AND \") +\n \"</span>\";\n if (node.group !== undefined) {\n try {\n let { fieldName, values } = groupVariables(children);\n let operator = \":\";\n if (fieldName === extractFieldName({ type: \"literal\", value: null })) {\n //This is a multimatch search (\"test\",\"test1\") are the values searched acrall all fields\n fieldName = \"\";\n operator = \"\";\n }\n return `<span class=\"and-expression\">${fieldName}${operator}(${values.join(\n \" AND \"\n )})</span>`;\n } catch (error) {\n console.log(error);\n }\n return `( ${html} )`;\n }\n return html;\n};\n\nconst or = (node: KueryNode, fields?: FieldTypes[]) => {\n const children = node.arguments || [];\n let args = children\n .map((child: KueryNode) => {\n return toHTML(child, fields);\n })\n .join(\" OR \");\n let html = `<span class=\"or-expression\">${args}</span>`;\n if (node.group !== undefined) {\n try {\n let { fieldName, values } = groupVariables(children);\n let operator = \":\";\n if (fieldName === extractFieldName({ type: \"literal\", value: null })) {\n //This is a multimatch search (\"test\",\"test1\") are the values searched acrall all fields\n fieldName = \"\";\n operator = \"\";\n }\n return `<span class=\"or-expression\">${fieldName}${operator}(${values.join(\n \" OR \"\n )})</span>`;\n } catch (error) {\n console.log(error);\n }\n return `( ${html} )`;\n }\n\n return html;\n};\n\nconst extractLiteralValue = (\n fieldName: string,\n valueArg: LiteralTypeBuildNode,\n isPhrase: LiteralTypeBuildNode,\n fields?: FieldTypes[]\n) => {\n let value = toHTML(valueArg);\n if (isPhrase.value) {\n value = `\"${value}\"`;\n }\n if (fields && fields.find((f) => f.name === fieldName)?.type === \"boolean\") {\n value = `<span class=\"value-constant\">${valueArg.value}</span>`;\n }\n return `<span class=\"expression-value\">${value}</span>`;\n};\nconst extractFieldName = (fieldNameArg: any) => {\n let fieldName = toHTML(fieldNameArg);\n return `<span class=\"field-name\">${fieldName}</span>`;\n};\nconst is = (node: KueryNode, fields?: FieldTypes[]) => {\n var {\n arguments: [fieldNameArg, valueArg, isPhrase],\n } = node;\n let operator = \":\";\n let fieldName = extractFieldName(fieldNameArg);\n if (fieldName === extractFieldName({ type: \"literal\", value: null })) {\n //This is a multimatch search (\"test\",\"test1\") are the values searched acrall all fields\n fieldName = \"\";\n operator = \"\";\n }\n let value = extractLiteralValue(fieldName, valueArg, isPhrase, fields);\n return `<span class=\"is-expression\">${fieldName}${operator}${value}</span>`;\n};\n\nconst not = (node: KueryNode, fields?: FieldTypes[]) => {\n const [argument] = node.arguments;\n return `<span class=\"not-expression\">not ${toHTML(argument, fields)}</span>`;\n};\n\nconst groupVariables = (\n nodes: KueryNode[],\n fieldName: string | undefined = undefined,\n fields?: FieldTypes[]\n) => {\n let values: string[] = [];\n if (!fieldName && nodes[0].function == \"is\") {\n fieldName = extractFieldName(nodes[0].arguments[0]);\n }\n if (!fieldName) {\n throw Error(\n \"Cannot group variables because they don't have a groupable field\"\n );\n }\n for (let node of nodes) {\n var {\n arguments: [fieldNameArg, valueArg, isPhrase],\n } = node;\n if (node.function == \"is\") {\n if (extractFieldName(fieldNameArg) !== fieldName) {\n throw Error(\n \"Cannot group variables because they aren't for the same field\"\n );\n }\n let value = extractLiteralValue(fieldName, valueArg, isPhrase, fields);\n values.push(value);\n } else if (node.function === \"or\" || node.function === \"and\") {\n let grouped = groupVariables(node.arguments, fieldName, fields);\n values.push(...grouped.values);\n } else {\n throw Error(\n \"Cannot group variables because they aren't for the same field\"\n );\n }\n }\n return { fieldName, values };\n};\n\nconst AST_TO_CQL = {\n gt: \">\",\n lt: \"<\",\n gte: \">=\",\n 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 = toHTML(valueArg);\n if (valueArg.type === \"literal\") {\n value = `${value}`;\n }\n //double check that its a number else quote it\n //parseFloat(\"2025-Not a float\") parses as a float... so we double check with regex\n if (\n Number.isNaN(parseFloat(value)) ||\n !value.match(/^[-+]?([0-9]*\\.[0-9]+|[0-9]+(\\.[0-9]*)?)$/)\n ) {\n value = `<span class=\"expression-value\">\"${value}\"</span>`;\n }\n return `<span class=\"range-expression\"><span class=\"field-name\">${fieldNameArg.value}</span> ${opsign} <span class=\"field-numeric\">${value}</span></span>`;\n};\n\nconst exists = (node: KueryNode) => {\n const [fieldNameArg] = node.arguments;\n return `<span class=\"exists-expression\"><span class=\"field-name\">${fieldNameArg.value}</span>: *</span>`;\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};\nconst geospatial = (node: KueryNode) => {\n const [fieldName, operator, value] = node.arguments;\n console.log(fieldName, operator, value);\n let opsine = GeospatialOperators[operator].value;\n return `<span><span class=\"field-name\">${fieldName.value}</span> ${opsine}<span title=\"${value.value}\">--GEOMETRY--</span></span>`;\n};\nexport const functions = {\n is,\n and,\n or,\n not,\n range,\n exists,\n nested,\n geospatial,\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 `<span class=\"wild-card\">${value\n .split(KQL_WILDCARD_SYMBOL)\n .join(\"*\")}</span>`;\n },\n};\n\nexport const toHTML = (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 --dialog-border-radius: var(--spectric-border-radius, 0.4em);\n }\n dialog {\n border: 0px;\n --spectric-background: var(--dialog-background);\n --panel-color: var(--dialog-background);\n padding: 0;\n border-radius: var(--dialog-border-radius);\n overflow: hidden;\n }\n dialog[open] {\n display: flex;\n }\n spectric-panel {\n margin: 0px;\n }\n dialog::backdrop {\n background-color: transparent;\n }\n dialog.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\n h3 {\n padding: 1em var(--dialog-padding);\n margin: 0;\n }\n\n spectric-button {\n position: absolute;\n right: 0;\n top: 0;\n }\n`;\n","import { css } from \"lit\";\n\nconst even = css`\n --panel-color: var(--spectric-background,#f4f4f4);\n --panel-color-inverse: var(--spectric-background-inverse,#ffffff);\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(--panel-color-inverse);\n color:var(--text-secondary,#3c4c5b);\n --spectric-text-primary:var(--text-primary,#161616);\n --spectric-text-secondary:var(--text-secondary,#525252);\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,#525252);\n --spectric-text-secondary:var(--text-primary,#161616);\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, PropertyValues } from 'lit';\nimport styles from './panel.css.ts';\nimport { customElement } from 'lit/decorators/custom-element.js';\nimport { property } from 'lit/decorators/property.js';\nimport { DisposableElement } from '../classes/DisposibleElement.ts';\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 DisposableElement {\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 constructor() {\n super()\n //@ts-ignore FIXME, make DisposableElement generic and add event map to DisposableElement so it knows about the events and the eveent handlers\n this.addDisposableListener(this, \"layer-add\", () => {\n this.layers = this.querySelectorAll(\"spectric-panel\")\n }, { capture: true })\n }\n connectedCallback(): void {\n super.connectedCallback()\n this.dispatchEvent(\n new CustomEvent(\"layer-add\", {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n layer: this,\n level: this.level,\n },\n })\n );\n }\n update(changed: PropertyValues) {\n this.layers = this.querySelectorAll(\n \"spectric-panel\"\n );\n this.layers.forEach((item: SpectricPanel) => {\n (item).setAttribute(\n 'level',\n ((this.level + 1) % 4).toString()\n );\n });\n super.update(changed)\n }\n\n render() {\n return html` <slot></slot> `;\n }\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 {\n HTMLElementTagWithEvents,\n ReactElementWithPropsAndEvents,\n} from \"../types\";\nimport \"../Panel\";\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 * 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 * @slot footer - Space at the bottom of the dialog that you can put buttons or other tools\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) =>\n dialog.addEventListener(\"keydown\", this._handleKeyDown)\n );\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n this.dialogElement.then((dialog) =>\n dialog.removeEventListener(\"keydown\", this._handleKeyDown)\n );\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(\n new CustomEvent(\"close\", {\n bubbles: true,\n composed: true,\n })\n );\n };\n\n protected render(): unknown {\n return html`\n <dialog\n class=${this.hideBackdrop ? \"\" : \"backdrop\"}\n @close=${this._onClose}\n @click=${this.clickHandler}\n >\n <spectric-panel>\n <div class=\"modal\">\n ${this.dismissable\n ? html`<spectric-button\n variant=\"text\"\n size=\"xsmall\"\n @click=${() => {\n this.open = false;\n }}\n icon\n >X</spectric-button\n >`\n : 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 namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link DialogElement}\n */\n [DialogElementTag]: ReactElementWithPropsAndEvents<\n DialogElement,\n DialogProps,\n DialogEvents\n >;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link DialogElement}\n */\n [DialogElementTag]: ReactElementWithPropsAndEvents<\n DialogElement,\n DialogProps,\n DialogEvents\n >;\n }\n }\n }\n}\n","import { html } from \"lit\";\nimport { DialogElement } from \"../dialog/dialog\";\nimport { createRef, ref } from \"lit/directives/ref.js\";\nimport { SpectricButton } from \"../Button\";\nimport { LabelValuesOrStrings, toLabelValue } from \"./QueryBar\";\n\nexport const DateTimePopup = async (values: LabelValuesOrStrings) => {\n let value: string | undefined;\n let buttonRef = createRef<SpectricButton>();\n\n await new Promise((resolve) => {\n let dialog = DialogElement.display(\n {},\n html`\n <div class=\"query-bar-date-quick-select\">\n ${values.map((v) => {\n let labelValue = toLabelValue(v);\n return html`<a\n href=\"#\"\n @click=${(e: MouseEvent) => {\n e.preventDefault();\n value = `\"${labelValue.label}\"`;\n resolve(value);\n dialog.open = false;\n }}\n >${labelValue.value}</a\n >`;\n })}\n </div>\n <spectric-input\n variant=\"datetime-local\"\n @change=${(e: any) => {\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 }}\n ></spectric-input>\n <spectric-button\n ${ref(buttonRef)}\n .disabled=${true}\n @click=${() => {\n resolve(value);\n dialog.open = false;\n }}\n >Submit</spectric-button\n >\n `\n );\n });\n return value;\n};\n","import { html } from \"lit\";\nimport { DialogElement } from \"../dialog/dialog\";\nimport { createRef, ref } from \"lit/directives/ref.js\";\nimport { SpectricButton } from \"../Button\";\nimport { LabelValuesOrStrings, toLabelValue } from \"./QueryBar\";\n\nexport const GeoJSONPopup = async (values: LabelValuesOrStrings) => {\n let value: string | undefined;\n let buttonRef = createRef<SpectricButton>();\n\n await new Promise((resolve) => {\n let dialog = DialogElement.display(\n {},\n html`\n <div class=\"query-bar-date-quick-select\">\n ${values.map((v) => {\n let labelValue = toLabelValue(v);\n return html`<a\n href=\"#\"\n @click=${(e: MouseEvent) => {\n e.preventDefault();\n value = `\"${labelValue.value}\"`;\n resolve(value);\n dialog.open = false;\n }}\n >${labelValue.label}</a\n >`;\n })}\n </div>\n <div>TODO DISPLAY MAP with drawing tools HERE!!</div>\n <spectric-button\n ${ref(buttonRef)}\n .disabled=${true}\n @click=${() => {\n resolve(value);\n dialog.open = false;\n }}\n >Submit</spectric-button\n >\n `\n );\n });\n return value;\n};\n","export const EDIT = \"🖉\";\nexport const DELETE = \"🗑\";\nexport const ARROW_LEFT = \"🠈\";\nexport const ARROW_RIGHT = \"🠊\";\nexport const ARROW_UP = \"🠉\";\nexport const ARROW_DOWN = \"🠋\";\n","import{nothing as t,noChange as i}from\"../lit-html.js\";import{Directive as r,PartType as s,directive as n}from\"../directive.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class e extends r{constructor(i){if(super(i),this.it=t,i.type!==s.CHILD)throw Error(this.constructor.directiveName+\"() can only be used in child bindings\")}render(r){if(r===t||null==r)return this._t=void 0,this.it=r;if(r===i)return r;if(\"string\"!=typeof r)throw Error(this.constructor.directiveName+\"() called with a non-string value\");if(r===this.it)return this._t;this.it=r;const s=[r];return s.raw=s,this._t={_$litType$:this.constructor.resultType,strings:s,values:[]}}}e.directiveName=\"unsafeHTML\",e.resultType=1;const o=n(e);export{e as UnsafeHTMLDirective,o as unsafeHTML};\n//# sourceMappingURL=unsafe-html.js.map\n","import { html, LitElement, PropertyValues } from \"lit\";\nimport * as kuery from \"./querylanguage/kuery\";\nimport {\n customElement,\n property,\n query,\n queryAsync,\n state,\n} from \"lit/decorators.js\";\nimport { SpectricInput } from \"../input\";\nimport { JsonObject } from \"./types\";\nimport {\n HTMLElementTagWithEvents,\n ReactElementWithPropsAndEvents,\n} from \"../types\";\nimport \"./QueryBar.css\";\nimport { PopoverElement } from \"../tooltip/popover\";\n\nimport { DateTimePopup } from \"./dateTimePopup\";\nimport { GeoJSONPopup } from \"./geojsonPopup\";\nimport { DELETE, EDIT } from \"../symbols\";\nimport { unsafeHTML } from \"lit/directives/unsafe-html.js\";\nexport type FieldTypes = {\n name: string;\n type: \"string\" | \"number\" | \"boolean\" | \"integer\" | \"object\";\n format?: \"date-time\" | \"geojson\";\n};\ntype SuggestionType =\n | \"conjunction\"\n | \"field\"\n | \"operator\"\n | \"value\"\n | \"geo_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}`;\nexport interface 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?: (\n field: string,\n text: string\n ) => Promise<LabelValuesOrStrings>;\n\n /**\n * Input placeholder\n */\n placeholder?: string;\n}\ntype LabelValue = {\n label?: string;\n value: string;\n};\nexport type LabelValueOrString = LabelValue | string;\nexport type LabelValuesOrStrings = (LabelValue | string)[];\ntype Completion = LabelValue & {\n start: number;\n end: number;\n type: SuggestionType;\n onSelect?: () => Promise<string | undefined | number>;\n};\nexport const toLabelValue = (value: LabelValueOrString) => {\n if (typeof value === \"string\") {\n return { label: value, value };\n }\n return { label: value.label || value.value, value: value.value };\n};\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};\nexport const GeospatialOperators: Record<string, LabelValue> = {\n within: { value: \" <@ \", label: \" is contained within geometry\" },\n};\nconst ObjectOperators: Record<string, LabelValue> = {\n exists: { value: \": *\", label: \" exists in any form\" },\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[] = [\n { 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(\n Object.entries(NumberOperators).map(([key, labelValue]) => [\n key,\n {\n value: labelValue.value,\n label: (labelValue.label || \"\").replace(\"value\", \"date-time\"),\n },\n ])\n);\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 @state()\n valueHelper: any;\n @state()\n highlightedSyntax: any;\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?: PopoverElement;\n @query(\".valueHelper\")\n _valueHelper?: PopoverElement;\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 _checkClickLocation = async (e: MouseEvent) => {\n console.log(e);\n let suggestion: Suggestion | null = null;\n try {\n suggestion = this._getSuggestion();\n } catch (error) {\n console.log(error);\n this._autocomplete?.hidePopover();\n }\n if (!suggestion) {\n return;\n }\n this._showValueHelper(suggestion);\n };\n _setValue = (value: string | undefined, suggestion: Suggestion) => {\n if (value !== undefined) {\n this.value =\n this.value.substring(0, suggestion.start) +\n value +\n this.value.substring(suggestion.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(\n suggestion.start + value.length,\n suggestion.start + value.length\n );\n if (this._valueHelper) {\n this._valueHelper.hidePopover();\n }\n }\n };\n /**\n * Value helper is a popover above the query bar that will help users set/change/clear the value if it is complex (like date time or geoshape)\n * @param suggestion\n */\n _showValueHelper = async (suggestion: Suggestion) => {\n this.valueHelper = undefined;\n if (!suggestion || suggestion.start === suggestion.end) {\n return;\n }\n let fields = this.fields || [];\n let field = fields.find((field) => field.name === suggestion.fieldName);\n\n if (!field) {\n return;\n }\n let values = await this.getValuesForField(\n suggestion.fieldName,\n suggestion.prefix\n );\n if (field.format === \"date-time\" && !values.length) {\n values = [\"now-1m\", \"now-1d\", \"now-1M\"];\n }\n let modalFunction:\n | ((values: LabelValuesOrStrings) => Promise<string | undefined>)\n | undefined = undefined;\n if (field.format == \"date-time\") {\n modalFunction = DateTimePopup;\n } else if (field.format == \"geojson\") {\n modalFunction = GeoJSONPopup;\n }\n if (!this.completions.length && !this._autocomplete?.isOpen()) {\n this.valueHelper = html`<div>\n <spectric-button\n tooltip=\"Delete Value\"\n tooltipPosition=\"top\"\n icon\n size=\"xsmall\"\n @click=${() => {\n this._setValue(\"\", suggestion);\n }}\n >${DELETE}</spectric-button\n >\n ${modalFunction\n ? html`<spectric-button\n icon\n tooltip=\"Edit Value\"\n tooltipPosition=\"top\"\n size=\"xsmall\"\n @click=${async () => {\n this._setValue(await modalFunction(values), suggestion);\n }}\n >${EDIT}</spectric-button\n >`\n : null}\n </div>`;\n this._valueHelper?.showPopover();\n }\n };\n _getSuggestion = () => {\n let value = this.value;\n if (this._input.selectionStart !== null) {\n value =\n value.substring(0, this._input.selectionStart) +\n \"©kuery-cursor©\" +\n value.substring(this._input.selectionStart);\n }\n //FIXME: make auto complete work well.\n let suggestion = kuery.parse(value, {\n parseCursor: true,\n cursorSymbol: \"©kuery-cursor©\",\n allowLeadingWildcards: false,\n }) as unknown as Suggestion;\n this._showValueHelper(suggestion);\n return suggestion;\n };\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(\n this.value.length - 2,\n this.value.length - 2\n );\n }\n let suggestions = this._getSuggestion();\n this.autoComplete(suggestions);\n } catch (error: any) {\n this.completions = [];\n this._autocomplete?.hidePopover();\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 }\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 || \"toDSL\"](ast, this.fields);\n }\n let event = new CustomEvent(\"change\", { detail: output });\n if (this.value.trim().length) {\n this.highlightedSyntax = unsafeHTML(kuery.toHTML(ast, this.fields));\n } else {\n this.highlightedSyntax = \"\";\n }\n this.dispatchEvent(event);\n };\n\n getValuesForField = async (\n field: string,\n text: string\n ): Promise<LabelValuesOrStrings> => {\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: Completion[] = [];\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(\n ...[\"and \", \"or \"].map((value) => ({\n type,\n value,\n start: end,\n end: end,\n }))\n );\n }\n let fields = this.fields || [];\n if (type === \"field\") {\n let fieldCompletions = fields\n .filter(\n (field) =>\n field.name.includes(suggestion.fieldName) ||\n field.name.includes(suggestion.prefix)\n )\n .map((f) => {\n return [{ type, value: f.name, start, end }];\n })\n .flat();\n completions.push(...fieldCompletions);\n }\n if (type === \"operator\") {\n let fieldType = fields.find(\n (field) => field.name === suggestion.fieldName\n );\n if (fieldType) {\n if ([\"number\", \"integer\"].includes(fieldType.type)) {\n completions.push(\n ...Object.values(NumberOperators).map((value) => ({\n type,\n ...value,\n start: end,\n end: end,\n }))\n );\n } else if (fieldType.type === \"object\") {\n if (fieldType.format == \"geojson\") {\n completions.push(\n ...Object.values(GeospatialOperators).map((value) => ({\n type,\n ...value,\n start: end,\n end: end,\n onSelect: async () => {\n let values = await this.getValuesForField(\n suggestion.fieldName,\n suggestion.prefix\n );\n return await GeoJSONPopup(values);\n },\n }))\n );\n }\n completions.push(\n ...Object.values(ObjectOperators).map((value) => ({\n type,\n ...value,\n start: end,\n end: end,\n }))\n );\n } else if (fieldType.type === \"string\") {\n if (fieldType.format === \"date-time\") {\n completions.push(\n ...Object.values(DateOperators).map((value) => ({\n type,\n ...value,\n start: end,\n end: end,\n onSelect: async () => {\n let values = await this.getValuesForField(\n suggestion.fieldName,\n suggestion.prefix\n );\n if (values.length === 0) {\n values = [\"now-1m\", \"now-1d\", \"now-1M\"];\n }\n let value = await DateTimePopup(values);\n return value;\n },\n }))\n );\n } else {\n completions.push(\n ...Object.values(StringOperators).map((value) => ({\n type,\n ...value,\n start: end,\n end: end,\n }))\n );\n }\n } else if (fieldType.type === \"boolean\") {\n completions.push(\n ...BoolOperators.map((value) => ({\n type,\n ...value,\n start: end,\n end: end,\n }))\n );\n }\n }\n }\n if (type === \"value\") {\n let fieldType = (this.fields || []).find(\n (field) => field.name === suggestion.fieldName\n );\n if (\n (fieldType && fieldType.type == \"number\") ||\n fieldType?.type == \"integer\"\n ) {\n //Do nothing for numbers... Maybe show a min/max?\n } else if (fieldType && fieldType.type == \"boolean\") {\n completions.push(\n { type, value: \"true\", start, end },\n { type, value: \"false\", start, end }\n );\n } else {\n console.log(\n `invoke callback to get values for ${suggestion.fieldName}`\n );\n let values = await this.getValuesForField(\n suggestion.fieldName,\n suggestion.prefix\n );\n if (fieldType?.type === \"string\") {\n //quote the values\n values = values.map((v) => `\"${v}\"`);\n }\n completions.push(\n ...values\n .map(toLabelValue)\n .map((value) => ({ type, value: value.value, start, end }))\n );\n }\n }\n }\n this.completions = completions;\n if (this.completions.length && this._autocomplete) {\n this._valueHelper?.hidePopover();\n let { width } = this._input.getBoundingClientRect();\n this._autocomplete.maxWidth = width;\n this._autocomplete.showPopover();\n\n this._autocomplete.style.width = `${width - 15}px`;\n let popover = this._autocomplete.querySelector<HTMLElement>(\"[popover]\");\n if (popover) {\n popover.style.width = `${width - 15}px`;\n }\n } else {\n this._autocomplete?.hidePopover();\n }\n }\n protected update(changed: PropertyValues): void {\n if (changed.has(\"outputLanguage\")) {\n this._parseQuery();\n }\n if (changed.has(\"value\")) {\n this._parseQuery();\n }\n super.update(changed);\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) + 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 value = String(value);\n this.value += value;\n this._input.setSelectionRange(\n insertIndex + value.length,\n insertIndex + value.length\n );\n }\n }\n this._autocomplete?.hidePopover();\n this.completionIndex = 0;\n this.completions = [];\n setTimeout(() => {\n this._parseQuery();\n this._input.focus();\n this._showValueHelper(this._getSuggestion());\n });\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 (\n [\"ArrowUp\", \"ArrowDown\", \"Enter\", \"Tab\"].includes(e.key) &&\n this.suggestion\n ) {\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 <div class=\"syntax-highlighter\">${this.highlightedSyntax}</div>\n <spectric-input\n .value=${this.value}\n .placeholder=${this.placeholder}\n style=${`anchor-name:--${this.uuid};`}\n autocomplete=\"off\"\n .spellcheck=${false}\n @input=${this._parseQuery}\n @keydown=${this._handleArrows}\n @change=${(e: Event) => e.stopPropagation()}\n @click=${this._checkClickLocation}\n @blur=${() => {\n this._autocomplete?.hidePopover();\n }}\n ></spectric-input>\n <spectric-popover\n class=\"valueHelper\"\n .text=${this.valueHelper}\n position=\"top\"\n ></spectric-popover>\n <spectric-popover\n position=\"bottom\"\n class=\"autocomplete\"\n .text=${this.completions.map(\n (option: Completion, index) =>\n html`<div\n @click=${() => {\n this.completionIndex = index;\n this._selectCompletion();\n }}\n class=${this.completionIndex == index\n ? \"option active\"\n : \"option\"}\n >\n <span class=\"optiontype ${option.type}\">${option.type}</span>\n <span class=\"value\">${option.value}</span>\n <span class=\"label\">${option.label}</span>\n </div> `\n )}\n >\n </spectric-popover>\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<\n SpectricQuery,\n IQueryProps,\n QueryEventMap\n >;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * {@link SpectricQuery}\n */\n \"spectric-query\": ReactElementWithPropsAndEvents<\n SpectricQuery,\n IQueryProps,\n QueryEventMap\n >;\n }\n }\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\nexport const SPECTRIC_CSS_VARIABLES = [\"--spectric-background\",\n \"--spectric-background-hover\",\n \"--spectric-background-inverse\",\n \"--spectric-background-inverse-hover\",\n \"--spectric-border-radius\",\n \"--spectric-primary\",\n \"--spectric-secondary\",\n \"--spectric-tertiary\",\n \"--spectric-disabled\",\n \"--panel-color\",\n \"--panel-color-inverse\",\n \"--spectric-border-disabled\",\n \"--spectric-input-color\",\n \"--spectric-input-bottom\",\n \"--spectric-text-on-color\",\n \"--spectric-text-on-color-disabled\",\n \"--spectric-text-placeholder\",\n \"--spectric-text-primary\",\n \"--spectric-text-secondary\",\n \"--spectric-button-separator\",\n \"--spectric-button-primary\",\n \"--spectric-button-secondary\",\n \"--spectric-button-tertiary\",\n \"--spectric-button-danger-primary\",\n \"--spectric-button-danger-secondary\",\n \"--spectric-button-danger-active\",\n \"--spectric-button-primary-active\",\n \"--spectric-button-secondary-active\",\n \"--spectric-button-tertiary-active\",\n \"--spectric-button-danger-hover\",\n \"--spectric-button-primary-hover\",\n \"--spectric-button-secondary-hover\",\n \"--spectric-button-tertiary-hover\",\n \"--spectric-text-on-color-disabled\"]\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 {\n HTMLElementTagWithEvents,\n ReactElementWithPropsAndEvents,\n} from \"../types\";\nexport const PaginationElementTag = \"spectric-pagination\";\nimport \"./pagination.css\";\nimport { ButtonSizesTypes } from \"../Button\";\nimport { ARROW_LEFT, ARROW_RIGHT } from \"../symbols\";\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\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 update(_changedProperties: PropertyValues): void {\n if (\n _changedProperties.has(\"pageSize\") &&\n !this.pageSizeOptions.includes(this.pageSize)\n ) {\n this.pageSizeOptions = [...this.pageSizeOptions, this.pageSize].sort(\n (a, b) => a - b\n );\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 super.update(_changedProperties);\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(\n new CustomEvent<PaginationChangeProps>(\"change\", {\n detail: { page, pageSize },\n })\n );\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(\n this.totalItems / this.pageSize\n )}`;\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\n @change=${this._handleSizeChange}\n .value=${String(this.pageSize)}\n >\n ${this.pageSizeOptions.map(\n (size) =>\n html`<option\n .value=${String(size)}\n class=${String(size) === String(this.pageSize)\n ? \"selected\"\n : \"\"}\n >\n ${size}\n </option>`\n )}\n </select>\n </div>\n ${this.totalItems\n ? html`\n <div class=\"spectric-pagination-text\">\n ${`Items ${(this.page - 1) * this.pageSize}-${Math.min(\n this.page * this.pageSize,\n this.totalItems\n )} of ${this.totalItems}`}\n </div>\n <div class=\"spectric-pagination-container\">\n <div>${pageText}</div>\n <div>\n <spectric-button\n size=${this.size}\n ?disabled=${this.page === 1}\n @click=${this._handlePageDown}\n icon\n >${ARROW_LEFT}</spectric-button\n >\n <spectric-button\n size=${this.size}\n ?disabled=${nextPageDisabled}\n @click=${this._handlePageUp}\n icon\n >${ARROW_RIGHT}</spectric-button\n >\n </div>\n </div>\n `\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<\n PaginationElement,\n PaginationEvents\n >;\n }\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link PaginationElement}\n */\n [PaginationElementTag]: ReactElementWithPropsAndEvents<\n PaginationElement,\n PaginationProps,\n PaginationEvents\n >;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link PaginationElement}\n */\n [PaginationElementTag]: ReactElementWithPropsAndEvents<\n PaginationElement,\n PaginationProps,\n PaginationEvents\n >;\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 {\n ColumnSettings,\n SpectricTableElement,\n TableSortDirection,\n} from \"./table\";\nimport { DisposableElement } from \"../../classes\";\nimport { ARROW_DOWN, ARROW_UP } from \"../symbols\";\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{\n @property({ type: Array, attribute: false })\n columns: ColumnSettings<T>[] = [];\n @state()\n private _resizeStart?: { event: MouseEvent; column: ColumnSettings<T> };\n @property({ type: Object, attribute: false })\n table!: SpectricTableElement<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 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 \"th\",\n ) as HTMLTableCellElement;\n this._resizeStart.column.width =\n cell.getBoundingClientRect().width + delta;\n }\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 ? ARROW_UP\n : column.sortDirection == TableSortDirection.descending\n ? ARROW_DOWN\n : ``;\n let sortClass = column.sortDirection || TableSortDirection.none;\n let resizable = 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 let title = column.title || column.key;\n if (typeof title == \"function\") {\n title = title(this.table) || undefined;\n }\n return html` <th\n @click=${() => this._handleSortChange(column)}\n style=\"${columnWidth}\"\n >\n ${resizeHandle}\n <div class=${classes.join(\" \")}>\n ${title}\n <span class=\"sort-direction ${sortClass}\">${sortDirection}</span>\n </div>\n </th>`;\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 {\n HTMLElementTagWithEvents,\n ReactElementWithPropsAndEvents,\n} 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 @property({ type: Object, attribute: false })\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 _emitFilter(filter: FilterEvent<T>) {\n this.dispatchEvent(\n new CustomEvent<FilterEvent<T>>(\"filter\", {\n composed: true,\n bubbles: true,\n detail: filter,\n })\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 _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 _displayOverflowTooltip = () => {\n if (this.column.disableCellOverflowTooltip) {\n this.overflow = null;\n return;\n }\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 (\n spanBounds.width * spanBounds.height >\n divBounds.width * divBounds.height\n ) {\n console.log(\n \"We need to show a tooltip with the content because we are overflowing\"\n );\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 || this.column.cellActions?.length) {\n classes.push(\"hasActions\");\n }\n const buttonSize = this.table.getCellActionButtonSize();\n let filterButtons = cache(\n this.column.filterable\n ? html`\n <spectric-button\n @click=${this._handleFilterOut}\n .size=${buttonSize}\n variant=\"text\"\n icon\n tooltip=\"Filter Out Value\"\n >-</spectric-button\n >\n <spectric-button\n @click=${this._handleFilterFor}\n .size=${buttonSize}\n variant=\"text\"\n icon\n tooltip=\"Filter For Value\"\n >+</spectric-button\n >\n `\n : null\n );\n\n let actions = (this.column.cellActions || []).map((action) => {\n return html`<spectric-button\n @click=${() => action.onClick(this.row, this.column)}\n .size=${buttonSize}\n variant=\"text\"\n icon\n .tooltip=${action.tooltip}\n >${action.icon}</spectric-button\n >`;\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\n style=${styleMap(this.styleRules)}\n @mouseenter=${this._displayOverflowTooltip}\n >\n <div class=\"table-cell-actions ${buttonSize}\">\n ${actions} ${filterButtons}\n </div>\n <div class=${classes.join(\" \")}>\n ${this.overflow\n ? html`<spectric-tooltip .text=${this.overflow}></spectric-tooltip>`\n : null}<span>${rendered}</span>\n </div>\n </td>\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<\n TableCellElement<any>,\n TableBodyEvents\n >;\n }\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link DialogElement}\n */\n [TableCellElementTag]: ReactElementWithPropsAndEvents<\n TableCellElement<any>,\n CellProps<any>,\n TableBodyEvents\n >;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link DialogElement}\n */\n [TableCellElementTag]: ReactElementWithPropsAndEvents<\n TableCellElement<any>,\n CellProps<any>,\n 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};\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, PropertyValues } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport {\n HTMLElementTagWithEvents,\n ReactElementWithPropsAndEvents,\n} from \"../types\";\nexport const TableBodyElementTag = \"spectric-table-virtual-body\";\nimport \"./cell\";\nimport {\n ColumnSettings,\n SpectricTableElement,\n TD_BorderAndPadding,\n} 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 * Table Body Element\n */\n@customElement(TableBodyElementTag)\nexport class TableVirtualBodyElement<T>\n extends DisposableElement\n implements BodyProps<T>\n{\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 @property({ type: Object, attribute: false })\n table!: SpectricTableElement<T>;\n columnsMeasured: boolean = false;\n @property({ type: Number, attribute: false })\n buffer: number = 100;\n constructor() {\n super();\n let lastScroll = 0;\n this.addDisposableListener(\n () => this.table.querySelector(\".table-wrapper\")!,\n \"scroll\",\n () => {\n const scrollTop = this.table.querySelector(\".table-wrapper\")!.scrollTop;\n // Prevent changing the start index if the scroll hasn't changed more than at at least 1/4 a row\n // I think I have bad math that is causing a new scroll event due to a couple pixel height difference after I create the spacers\n if (Math.abs(lastScroll - scrollTop) <= this.rowHeight / 4) {\n return;\n }\n lastScroll = scrollTop;\n this.startIndex = Math.floor(scrollTop / this.rowHeight);\n },\n );\n }\n protected update(changedProperties: PropertyValues): void {\n if (this.columnsMeasured === false) {\n let tr = this.querySelector(\"tr\");\n let cells = tr?.querySelectorAll(\"spectric-table-cell td\");\n if (tr && cells && cells.length) {\n this.columns.forEach((col, index) => {\n if (!col.width || col.width === 0) {\n let rect = cells[index].getBoundingClientRect();\n if (rect.width > 0) {\n this.columnsMeasured = true;\n col.width = rect.width - TD_BorderAndPadding;\n }\n }\n });\n if (this.columnsMeasured) {\n this.columns = [...this.columns];\n }\n }\n }\n super.update(changedProperties);\n }\n\n protected createRenderRoot(): HTMLElement | DocumentFragment {\n return this;\n }\n protected render(): unknown {\n let totalRows = this.data.length;\n let buffer = this.buffer / 2; // Have a buffer of rows to prevent column jitter\n let viewport = this.table.querySelector(\".table-wrapper\")!;\n const scrollTop = viewport.scrollTop;\n const start = Math.max(0, Math.floor(scrollTop / this.rowHeight) - buffer);\n const end = Math.min(\n totalRows,\n Math.ceil((scrollTop + viewport.clientHeight) / this.rowHeight) + buffer,\n );\n let totalHeight = totalRows * this.rowHeight;\n let beforeHeight = start * this.rowHeight;\n let afterHeight = (totalRows - end) * this.rowHeight;\n\n let spacerElementBefore = html` <tr\n style=\"height:${beforeHeight}px\"\n class=\"virtual-scroll-spacer\"\n ></tr>`;\n let spacerElementAfter = html` <tr\n style=\"height:${afterHeight}px\"\n class=\"virtual-scroll-spacer\"\n ></tr>`;\n return html`\n <div\n style=\"height:${totalHeight}px;position: absolute;overflow-x: hidden;overflow-y: hidden;z-index:-1;width:1px;\"\n ></div>\n <tbody>\n ${spacerElementBefore}\n </tbody>\n <div style=\"display:table-row-group;overflow:hidden;\">\n ${repeat(\n this.data.slice(Math.max(start, 0), end),\n (row, index) =>\n html` <tr class=\"${this.table.getRowClass(row, index + start)}\">\n ${repeat(this.columns, (col) => {\n return html`<spectric-table-cell\n .column=${col}\n .row=${row}\n .index=${index + start}\n .columns=${this.columns}\n .table=${this.table}\n ></spectric-table-cell>`;\n })}\n </tr>`,\n )}\n </div>\n <tbody>\n ${spacerElementAfter}\n </tbody>\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<\n TableVirtualBodyElement<any>,\n TableBodyEvents\n >;\n }\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link DialogElement}\n */\n [TableBodyElementTag]: ReactElementWithPropsAndEvents<\n TableVirtualBodyElement<any>,\n BodyProps<any>,\n TableBodyEvents\n >;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link DialogElement}\n */\n [TableBodyElementTag]: ReactElementWithPropsAndEvents<\n TableVirtualBodyElement<any>,\n BodyProps<any>,\n TableBodyEvents\n >;\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, TemplateResult } from \"lit\";\nimport \"../pagination\";\nimport \"./header\";\nimport \"./body\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport {\n HTMLElementTagWithEvents,\n ReactElementWithPropsAndEvents,\n} 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\";\nimport { ButtonSizesTypes } from \"../Button\";\n\nexport type { TableProps, TableEvents };\n\nexport type DomRenderable =\n | HTMLElement\n | TemplateResult\n | TemplateResult<any>[]\n | string\n | number\n | null\n | undefined;\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 CellAction<T> = {\n tooltip: DomRenderable;\n icon: DomRenderable;\n onClick: (row: T, column: ColumnSettings<T>) => void;\n};\nexport type ColumnSettings<T> = {\n [TABLE_CREATED_SELECTION_COLUMN]?: boolean;\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 disableCellOverflowTooltip?: boolean;\n cellActions?: CellAction<T>[];\n title?: DomRenderable | ((table: SpectricTableElement<T>) => 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?: (\n row: T,\n index: number,\n table: SpectricTableElement<T>,\n ) => 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\nexport const TD_BorderAndPadding = 4;\nconst TABLE_CREATED_SELECTION_COLUMN = Symbol(\n \"spectric-table-selection-column\",\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>\n extends LitElement\n implements TableProps<T>\n{\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 @property({ type: Number, reflect: false })\n virtualBodyBuffer: number = 100;\n\n /**\n * Function that allows you to set the row class name programatically\n */\n @property({ type: Object, attribute: false })\n getRowClass = (_row: T, index: number) => {\n return index % 2 === 0 ? \"odd\" : \"\";\n };\n\n protected cellActionButtonSize: ButtonSizesTypes = \"xxsmall\";\n getCellActionButtonSize() {\n return this.cellActionButtonSize;\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(\n (key) =>\n props.columns.find((col) => col.key === key) as ColumnSettings<T>,\n );\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\n ? rows\n : 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 (\n totalItems &&\n page &&\n pageSize &&\n (page - 1) * pageSize > totalItems\n ) {\n pagination.page = 1;\n }\n this.pagination = pagination;\n }\n this.dispatchEvent(\n new CustomEvent<PaginationChangeProps>(\"paginationChange\", {\n detail: e.detail,\n }),\n );\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(\n new CustomEvent<TableDataOptions<T>>(\"change\", {\n detail: { pagination, columns, sortOrder },\n }),\n );\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 private forceRefreshofSelectionColumn() {\n // Because lit reuses dom elements for speed/effeciency it wont update unless the props are a different object.\n // So we set the selection colum to a \"new object\" to force the rerender\n let index = this.columns.findIndex(\n (col) => col[TABLE_CREATED_SELECTION_COLUMN],\n );\n if (index !== -1) {\n this.columns[index] = { ...this.selectColumnConfig };\n this.columns = [...this.columns];\n }\n }\n setSelected(selected: T[]) {\n this.selected = selected;\n this.forceRefreshofSelectionColumn();\n }\n getSelected() {\n return this.selected;\n }\n deselectAll() {\n this.setSelected([]);\n this.dispatchEvent(new CustomEvent(\"selected\", { detail: this.selected }));\n }\n selectAll() {\n this.setSelected([...this.data]);\n this.dispatchEvent(new CustomEvent(\"selected\", { detail: this.selected }));\n }\n async scrollToRow(row: T | number) {\n let index: number = -1;\n if (Number.isInteger(row)) {\n index = row as number;\n } else {\n index = this.data.findIndex((value) => value === row);\n }\n if (index !== -1) {\n let body = this.querySelector(\"spectric-table-virtual-body\");\n let wrapper = this.querySelector(\".table-wrapper\")!;\n let scrollPosition = index * this._getRowHeight();\n wrapper.scrollTo({\n top: scrollPosition,\n behavior: \"smooth\",\n });\n //Wait for the smooth scroll to complete. Scroll to doesn't return a promise so we must manually check periodically\n for (let wait = 0; wait < 100; wait++) {\n await new Promise((resolve) => requestAnimationFrame(resolve));\n if (wrapper.scrollTop == scrollPosition) {\n console.log(\"Scroll complete\");\n break;\n }\n }\n if (body) {\n //Highlight the row we scrolled to\n requestAnimationFrame(() => {\n let rows = [...body.querySelectorAll(\"tr\")];\n rows = rows.filter(\n (row) => row.querySelector(\"spectric-table-cell\")?.index === index,\n );\n if (rows.length) {\n rows[0].animate(\n [{ backgroundColor: \"red\" }, { backgroundColor: \"unset\" }],\n { duration: 200, iterations: 5 },\n );\n }\n });\n }\n }\n }\n _getRowHeight = () => {\n let rowHeight = this.rowHeight - TD_BorderAndPadding;\n if (rowHeight < this.fontSize + TD_BorderAndPadding) {\n rowHeight = this.fontSize + TD_BorderAndPadding;\n }\n return rowHeight;\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 private selectColumnConfig: ColumnSettings<T> = {\n [TABLE_CREATED_SELECTION_COLUMN]: true,\n allowResize: false,\n filterable: false,\n width: 39,\n title: (table: SpectricTableElement<T>) => {\n return table.select === TableSelectOptions.multi\n ? html`<spectric-input\n variant=\"checkbox\"\n @change=${table._handleSelectAllChange}\n ${spreadProps({\n checked: table.selected.length === table.data.length,\n })}\n .helperText=${\"Select All\"}\n ></spectric-input>`\n : null;\n },\n render: (row: T, _index, table) => {\n let checked = table.selected.includes(row);\n let template = html`<spectric-input\n variant=\"checkbox\"\n class=\"table-checkbox-${table.select}\"\n .helperText=${\"\"}\n ${spreadProps({ checked })}\n @change=${(e: DomEvent<HTMLInputElement>) => {\n e.stopPropagation();\n let index = table.selected.findIndex((value) => value === row);\n if (e.target.checked && index !== -1) {\n return;\n } else if (!e.target.checked && index === -1) {\n return;\n } else if (!e.target.checked && index !== -1) {\n table.selected.splice(index, 1);\n }\n if (e.target.checked) {\n if (table.select === \"single\") {\n table.selected = [];\n }\n table.selected.push(row);\n }\n table.setSelected([...table.selected]);\n table.dispatchEvent(\n new CustomEvent(\"selected\", { detail: [...table.selected] }),\n );\n }}\n ></spectric-input>`;\n return template;\n },\n };\n protected update(changedProperties: PropertyValues): void {\n if (changedProperties.has(\"data\")) {\n this.selected = this.data.reduce((a, row) => {\n if (this.selected.includes(row)) {\n a.push(row);\n }\n return a;\n }, [] as T[]);\n }\n if (changedProperties.has(\"columns\")) {\n if (this.select !== TableSelectOptions.none) {\n if (!this.columns.find((col) => col[TABLE_CREATED_SELECTION_COLUMN])) {\n this.columns.unshift(this.selectColumnConfig);\n }\n }\n }\n if (changedProperties.has(\"select\")) {\n let selectIndex = this.columns.findIndex(\n (col) => col[TABLE_CREATED_SELECTION_COLUMN],\n );\n if (this.select !== TableSelectOptions.none) {\n this.forceRefreshofSelectionColumn();\n if (!this.columns.find((col) => col[TABLE_CREATED_SELECTION_COLUMN])) {\n this.columns.unshift(this.selectColumnConfig);\n this.columns = [...this.columns];\n }\n } else {\n if (selectIndex !== -1) {\n this.columns.splice(selectIndex, 1);\n this.columns = [...this.columns];\n this.setSelected([]);\n }\n }\n if (\n this.select === TableSelectOptions.single &&\n this.selected.length > 1\n ) {\n this.setSelected([this.selected[0]]);\n this.dispatchEvent(\n new CustomEvent(\"selected\", { detail: [this.selected[0]] }),\n );\n }\n }\n super.update(changedProperties);\n }\n protected render(): unknown {\n let columns = this.columns.filter((column) => !column.hidden);\n let rowHeight = this._getRowHeight();\n return html`\n <div\n class=\"table-wrapper\"\n style=\"--rowHeight:${rowHeight}px;--fontSize:${this\n .fontSize}px;--lineClamp:${Math.floor(rowHeight / this.fontSize)}\"\n >\n <div role=\"table\">\n <spectric-table-header\n .columns=${columns}\n .table=${this}\n @sortChange=${this._handleSortChange}\n @columnResize=${this._handleColumnResize}\n ></spectric-table-header>\n <spectric-table-virtual-body\n .buffer=${this.virtualBodyBuffer}\n .columns=${columns}\n .data=${this.data}\n .table=${this}\n .rowHeight=${rowHeight}\n ></spectric-table-virtual-body>\n </div>\n </div>\n ${this.pagination\n ? html`<spectric-pagination\n ${spreadProps(this.pagination)}\n @change=${this._handlePaginationChange}\n ></spectric-pagination>`\n : 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<\n SpectricTableElement<any>,\n TableEvents\n >;\n }\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link TableElement}\n */\n [TableElementTag]: ReactElementWithPropsAndEvents<\n SpectricTableElement<any>,\n TableProps<any>,\n TableEvents\n >;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link TableElement}\n */\n [TableElementTag]: ReactElementWithPropsAndEvents<\n SpectricTableElement<any>,\n TableProps<any>,\n TableEvents\n >;\n }\n }\n }\n}\n","import { customElement, property, query } from \"lit/decorators.js\";\nimport \"./tooltip.css\";\nexport const PopoverElementTag = \"spectric-popover\";\nimport { css, CSSResultGroup, html } from \"lit-element\";\nimport { DomRenderable } from \"../table\";\nimport { DisposableElement } from \"../../classes/DisposibleElement\";\nimport {\n HTMLElementTagWithEvents,\n ReactElementWithPropsAndEvents,\n} from \"../types\";\nexport type { TooltipProps, PopOverEvents };\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 mouseOffsetX?: number;\n mouseOffsetY?: number;\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 @property({ type: Number, reflect: false })\n mouseOffsetX = 10;\n @property({ type: Number, reflect: false })\n mouseOffsetY = 0;\n @query(\".spectric-popover-portal\")\n protected portalElement!: HTMLDivElement;\n protected mouseLocation?: { left: number; top: number };\n static styles?: CSSResultGroup | undefined = css`\n :host {\n max-height: 0px;\n max-width: 0px;\n display: none;\n pointer-events: none;\n }\n `;\n @property({ attribute: false })\n portalTarget: HTMLElement = document.body;\n protected timer?: number;\n protected open: boolean = false;\n protected mouseframe?: number;\n isOpen() {\n return this.open;\n }\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(\n () => this.target,\n \"mousemove\",\n this._getMousePosition\n );\n }\n protected createRenderRoot(): HTMLElement | DocumentFragment {\n return this;\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 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.hidePopover();\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 if (!this.isConnected) {\n return;\n }\n this.portalElement.showPopover();\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\n let styles: Record<string, string> = {};\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 = {\n left: this.mouseLocation.left + this.mouseOffsetX + \"px\",\n top:\n this.mouseLocation.top +\n this.mouseOffsetY -\n portalBounds.height / 2 +\n \"px\",\n };\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:\n Math.max(\n 0,\n bounds.top + bounds.height / 2 - portalBounds.height / 2\n ) + \"px\",\n left: bounds.left - portalBounds.width + \"px\",\n };\n } else if (this.position === \"right\") {\n location = {\n top:\n Math.max(\n 0,\n bounds.top + bounds.height / 2 - portalBounds.height / 2\n ) + \"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(\n { opacity: [0, 1] },\n { duration: this.animationDuration }\n );\n }\n };\n protected render() {\n return html`<!-- ToolTip -->\n <div class=\"spectric-popover-portal ${this.position}\" popover>\n <div class=\"tooltip-container\">\n <span class=\"tooltip-caret\"></span>\n <div class=\"tooltip-content\">${this.text}<slot></slot></div>\n </div>\n </div>`;\n }\n}\n\ninterface PopOverEvents {\n //'open': (event: CustomEvent<{ pagination: PaginationChangeProps }>) => void;\n //'filter': (event: CustomEvent<FilterEvent>) => void;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [PopoverElementTag]: HTMLElementTagWithEvents<\n PopoverElement,\n PopOverEvents\n >;\n }\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link TooltipElement}\n */\n [PopoverElementTag]: ReactElementWithPropsAndEvents<\n PopoverElement,\n TooltipProps,\n PopOverEvents\n >;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link TooltipElement}\n */\n [PopoverElementTag]: ReactElementWithPropsAndEvents<\n PopoverElement,\n TooltipProps,\n PopOverEvents\n >;\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 } from \"lit-element\";\nimport { DomRenderable } from \"../table\";\nimport { PopoverElement, TooltipProps } 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}`\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.showToolTip = this.showToolTip.bind(this)\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\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, eventOptions, 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//Not all browsers support eyedropper\ninterface EyeDropper {\n new(): EyeDropper;\n\n /**\n * Opens the eyedropper mode, allowing the user to select a color from the screen.\n * Returns a Promise that resolves with an object containing the selected color in sRGB hexadecimal format.\n * The Promise rejects if the user cancels the eyedropper mode (e.g., by pressing Escape).\n */\n open(): Promise<{ sRGBHex: string }>;\n}\n\ndeclare var EyeDropper: EyeDropper;\nlet eyedropper: EyeDropper | undefined\nif (window.hasOwnProperty(\"EyeDropper\")) {\n eyedropper = new EyeDropper()\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 constructor() {\n super()\n this._handleAlphaChange = this._handleAlphaChange.bind(this)\n this._handleHueChange = this._handleHueChange.bind(this)\n this._handleApply = this._handleApply.bind(this)\n this._cancel = this._cancel.bind(this)\n this._handleSaturationLightnessClick = this._handleSaturationLightnessClick.bind(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 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 @eventOptions({ capture: true })\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 @eventOptions({ capture: true })\n _handleHueChange(e: DomEvent<SpectricInput>) {\n e.stopPropagation()\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 let hex = hslToHex(this.hue, this.saturation * 100, this.lightness * 100) + (Math.round(this.alpha * 255).toString(16).padStart(2, \"0\"))\n this.value = hex\n }\n @eventOptions({ capture: true })\n _handleAlphaChange(e: DomEvent<SpectricInput>) {\n e.stopPropagation()\n this.alpha = parseInt(String(e.target.value)) / 100\n this.updateValue()\n }\n @eventOptions({ capture: true })\n _handleApply() {\n this.updateValue()\n this.querySelector<PopoverElement>(\"spectric-popover\")?.hidePopover()\n this.dispatchEvent(new Event(\"change\", { bubbles: true }))\n }\n @eventOptions({ capture: true })\n _cancel() {\n if (this.original) {\n this.value = this.original\n }\n this.querySelector<PopoverElement>(\"spectric-popover\")?.hidePopover()\n this.dispatchEvent(new Event(\"cancel\"))\n }\n @eventOptions({ capture: true })\n async _openPopover() {\n let popover = this.querySelector<PopoverElement>(\"spectric-popover\")\n if (!popover || popover.isOpen()) {\n return\n }\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=\"color-picker-saturation-lightness-grid\" @click=${this._handleSaturationLightnessClick}\n @mousedown=${(e: MouseEvent) => {\n this.sldown = true\n e.preventDefault()\n e.stopPropagation()\n }} \n @mouseup=${(e: MouseEvent) => {\n this.sldown = false\n e.preventDefault()\n e.stopPropagation()\n }}\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 icon class=\"color-picker-eyedropper ${eyedropper === undefined ? \"hidden\" : \"\"}\" @click=${async () => {\n if (eyedropper) {\n let result = await eyedropper?.open()\n let { h, s, l, a } = hexToHsl(result.sRGBHex);\n this.hue = h\n this.saturation = s\n this.lightness = l\n this.alpha = a\n this.updateValue()\n }\n }}>${eyedropper_icon}</spectric-button>\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=\"secondary\" @click=${this._openPopover} icon>\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}\nconst eyedropper_icon = html`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 256\" height=\"15\" width=\"15\" fill=\"currentColor\"><path d=\"M222,67.34a33.81,33.81,0,0,0-10.64-24.25C198.12,30.56,176.68,31,163.54,44.18L142.82,65l-.63-.63a22,22,0,0,0-31.11,0l-9,9a14,14,0,0,0,0,19.81l3.47,3.47L53.14,149.1a37.79,37.79,0,0,0-9.84,36.73l-8.31,19a11.68,11.68,0,0,0,2.46,13A13.91,13.91,0,0,0,47.32,222,14.15,14.15,0,0,0,53,220.82L71,212.92a37.92,37.92,0,0,0,35.84-10.07l52.44-52.46,3.47,3.48a14,14,0,0,0,19.8,0l9-9a22,22,0,0,0,0-31.12l-.66-.66L212,91.85A33.76,33.76,0,0,0,222,67.34Zm-123.61,127a26,26,0,0,1-26,6.47,6,6,0,0,0-4.16.24l-20,8.75a2,2,0,0,1-2.09-.31l9.12-20.9a5.94,5.94,0,0,0,.19-4.31,25.88,25.88,0,0,1,6.26-26.72l52.44-52.45,36.76,36.78Zm105.16-111L178.17,108.9a6,6,0,0,0,0,8.47l4.88,4.89a10,10,0,0,1,0,14.15l-9,9a2,2,0,0,1-2.82,0l-60.69-60.7a2,2,0,0,1,0-2.83l9-9a10,10,0,0,1,14.14,0l4.89,4.89a6,6,0,0,0,4.24,1.75h0a6,6,0,0,0,4.25-1.77L172,52.66c8.58-8.58,22.52-9,31.08-.85a22,22,0,0,1,.44,31.57Z\"/></svg>`\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}","import { html, PropertyValues } from \"lit\";\nimport { customElement, queryAsync, property, state } from \"lit/decorators.js\";\nimport \"./calendar.css\";\nimport { DisposableElement } from \"../../classes\";\nimport { debounceAnimation } from \"../../utils\";\nimport {\n HTMLElementTagWithEvents,\n ReactElementWithPropsAndEvents,\n} from \"../types\";\nimport { SpectricButton } from \"../Button\";\nimport { PopoverElement } from \"../tooltip/popover\";\nimport { DomEvent } from \"../table\";\nexport interface SpectricCalendarProps {\n /**\n * Sets the starting day for the calendar (default:Today)\n */\n currentDate?: Date | string | number;\n /**\n * Will display a button with a popup\n */\n popup?: boolean;\n disabled?: boolean;\n}\n\n@customElement(\"spectric-calendar\")\nexport class SpectricCalendar extends DisposableElement {\n @queryAsync(\".days\")\n calendarElement!: Promise<HTMLDivElement>;\n\n constructor() {\n super();\n this.addDisposableListener(\n this.calendarElement,\n \"mousemove\",\n this.handleMouseMove\n );\n this.addDisposableListener(\n this.calendarElement,\n \"mouseleave\",\n this.resetMouseMove\n );\n }\n @property({ attribute: false })\n currentDate?: Date | string | number = new Date();\n @state()\n private date: Date = new Date()\n @property({ type: Boolean, reflect: true })\n popup: boolean = false;\n @property({ type: Boolean, reflect: true })\n disabled: boolean = false;\n protected createRenderRoot(): HTMLElement | DocumentFragment {\n return this;\n }\n private getMonthDays(year: number, month: number): (number | \"\")[] {\n const date = new Date(year, month, 1);\n const days: (number | \"\")[] = [];\n const firstDay = date.getUTCDay();\n const lastDate = new Date(year, month + 1, 0).getUTCDate();\n\n for (let i = 0; i < firstDay; i++) {\n days.push(\"\");\n }\n\n for (let i = 1; i <= lastDate; i++) {\n days.push(i);\n }\n\n return days;\n }\n\n private changeMonth(offset: number): void {\n const newDate = new Date(this.date);\n newDate.setUTCMonth(newDate.getUTCMonth() + offset);\n this.currentDate = newDate;\n }\n\n private changeYear(event: Event): void {\n const selectedYear = parseInt(\n (event.target as HTMLSelectElement).value,\n 10\n );\n const newDate = new Date(this.date);\n newDate.setUTCFullYear(selectedYear);\n this.currentDate = newDate;\n }\n\n private handleMouseMove = debounceAnimation(async (e: MouseEvent) => {\n const target = await this.calendarElement;\n const rect = target.getBoundingClientRect();\n const x = ((e.clientX - rect.left) / rect.width) * 100;\n const y = ((e.clientY - rect.top) / rect.height) * 100;\n target.style.setProperty(\"--x\", `${x}%`);\n target.style.setProperty(\"--y\", `${y}%`);\n });\n\n private resetMouseMove = async () => {\n const target = await this.calendarElement;\n target.style.setProperty(\"--x\", `200%`);\n target.style.setProperty(\"--y\", `200%`);\n };\n private selectDay(day: number) {\n let year = this.date.getUTCFullYear();\n let monthIndex = this.date.getUTCMonth();\n let hours = this.date.getUTCHours()\n let minutes = this.date.getUTCMinutes()\n let seconds = this.date.getUTCSeconds()\n let ms = this.date.getUTCMilliseconds()\n let date = new Date();\n date.setUTCFullYear(year, monthIndex, day);\n date.setUTCHours(hours, minutes, seconds, ms);\n console.log(date.toISOString(), year, monthIndex, day)\n this.date = date\n let popover = this.querySelector<PopoverElement>(\"spectric-popover\");\n if (popover) {\n popover.hidePopover();\n }\n this.dispatchEvent(new CustomEvent(\"select\", { detail: date }));\n }\n protected update(changedProperties: PropertyValues): void {\n if (changedProperties.has(\"currentDate\")) {\n if (this.currentDate === undefined) {\n this.date = new Date()\n } else {\n this.date = new Date(this.currentDate)\n }\n }\n super.update(changedProperties)\n }\n render() {\n const year = this.date.getUTCFullYear();\n const month = this.date.getUTCMonth();\n const day = this.date.getUTCDate()\n this.date.toUTCString()\n const monthName = (new Date(year, month, day)).toLocaleString(\"default\", {\n month: \"long\",\n });\n const days = this.getMonthDays(year, month);\n const yearOptions = Array.from({ length: 21 }, (_, i) => year - 10 + i);\n const calendar = html`<spectric-panel class=\"calendar\">\n <div class=\"header\">\n <spectric-button\n ?disabled=${this.disabled}\n size=\"xsmall\"\n icon\n variant=\"primary\"\n @click=${() => this.changeMonth(-1)}\n >🠈</spectric-button\n >\n <div class=\"month-year\">\n <span>${monthName}</span>\n <select ?disabled=${this.disabled} @change=${this.changeYear}>\n ${yearOptions.map(\n (y) =>\n html`<option value=${y} ?selected=${y === year}>${y}</option>`\n )}\n </select>\n </div>\n <spectric-button ?disabled=${this.disabled} size=\"xsmall\" icon @click=${() => this.changeMonth(1)}\n >🠊</spectric-button\n >\n </div>\n <div class=\"days\">\n ${[\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"].map(\n (day) => html`<div class=\"day\">${day}</div>`\n )}\n ${days.map((date) =>\n date == \"\"\n ? html`<span></span>`\n : html`<spectric-button\n ?disabled=${this.disabled}\n @click=${() => this.selectDay(date)}\n .backgroundColor=${date === day ? undefined : \"var(--spectric-background,#f4f4f4)\"}\n icon\n size=\"xsmall\"\n class=\"date ${date === day ? \"active\" : \"\"}\"\n >${date}</spectric-button\n >`\n )}\n </div>\n </spectric-panel>`;\n if (!this.popup) {\n return calendar;\n }\n return html`\n <spectric-button\n class=\"input-button-right\"\n icon\n size=\"small\"\n variant=\"text\"\n type=\"button\"\n ?disabled=${this.disabled}\n @click=${(e: DomEvent<SpectricButton>) => {\n let popover = this.querySelector<PopoverElement>(\"spectric-popover\");\n if (popover && e.target) {\n popover.triggerTarget = e.target;\n popover.showPopover();\n }\n }}\n ><svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n viewBox=\"0 0 96 96\"\n style=\"\n fill: var(--button-primary, #1ea7fd);\n \"\n >\n <defs>\n <rect id=\"vcalendar-b\" width=\"64\" height=\"78\" x=\"0\" y=\"0\"></rect>\n <filter\n id=\"vcalendar-a\"\n width=\"110.9%\"\n height=\"109%\"\n x=\"-5.5%\"\n y=\"-3.2%\"\n filterUnits=\"objectBoundingBox\"\n >\n <feOffset\n dy=\"1\"\n in=\"SourceAlpha\"\n result=\"shadowOffsetOuter1\"\n ></feOffset>\n <feGaussianBlur\n in=\"shadowOffsetOuter1\"\n result=\"shadowBlurOuter1\"\n stdDeviation=\"1\"\n ></feGaussianBlur>\n <feColorMatrix\n in=\"shadowBlurOuter1\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2 0\"\n ></feColorMatrix>\n </filter>\n </defs>\n <g fill-rule=\"evenodd\">\n <path\n d=\"M36,36 L36,36.9983345 C36,38.642909 37.3431458,40 39,40 C40.6684055,40 42,38.6561086 42,36.9983345 L42,36 L54,36 L54,36.9983345 C54,38.642909 55.3431458,40 57,40 C58.6684055,40 60,38.6561086 60,36.9983345 L60,36 L64.0132046,36 C65.1104814,36 66,36.8892617 66,38.0017433 L66,65.9982567 C66,67.103789 65.1101074,68 64.0132046,68 L31.9867954,68 C30.8895186,68 30,67.1107383 30,65.9982567 L30,38.0017433 C30,36.896211 30.8898926,36 31.9867954,36 L36,36 Z M64,42 L32,42 L32,66 L64,66 L64,42 Z M50,56 L50,60 L46,60 L46,56 L50,56 Z M40,56 L40,60 L36,60 L36,56 L40,56 Z M60,56 L60,60 L56,60 L56,56 L60,56 Z M40,48 L40,52 L36,52 L36,48 L40,48 Z M50,48 L50,52 L46,52 L46,48 L50,48 Z M60,48 L60,52 L56,52 L56,48 L60,48 Z M39,32 C39.5522847,32 40,32.4509752 40,32.990778 L40,37.009222 C40,37.5173285 39.6172798,37.9361019 39.1173326,37.9933343 L39,38 C38.4477153,38 38,37.5490248 38,37.009222 L38,32.990778 C38,32.4826715 38.3827202,32.0638981 38.8826674,32.0066657 L39,32 Z M57,32 C57.5522847,32 58,32.4509752 58,32.990778 L58,37.009222 C58,37.5173285 57.6172798,37.9361019 57.1173326,37.9933343 L57,38 C56.4477153,38 56,37.5490248 56,37.009222 L56,32.990778 C56,32.4826715 56.3827202,32.0638981 56.8826674,32.0066657 L57,32 Z\"\n ></path>\n </g></svg>\n </spectric-button>\n <spectric-popover position=\"left\" .text=${calendar}></spectric-popover>\n `;\n }\n}\n\ninterface CalendarEvents {\n select: (event: CustomEvent<Date>) => void;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"spectric-calendar\": HTMLElementTagWithEvents<\n SpectricCalendar,\n CalendarEvents\n >;\n }\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link SpectricCalendar}\n */\n \"spectric-calendar\": ReactElementWithPropsAndEvents<\n SpectricCalendar,\n SpectricCalendarProps,\n CalendarEvents\n >;\n }\n }\n namespace React {\n namespace JSX {\n interface IntrinsicElements {\n /**\n * @see {@link SpectricCalendar}\n */\n \"spectric-calendar\": ReactElementWithPropsAndEvents<\n SpectricCalendar,\n SpectricCalendarProps,\n CalendarEvents\n >;\n }\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","_changedProperties","render","html","mode","styleMap","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","calendar","ifNonEmpty","query","eventOptions","endOfInputText","grammarRuleTranslations","DQLSyntaxError","error","expression","message","translatedExpectationText","expected","foundInput","fullMessage","buildNode","toOpenSearchQuery","parse","peg$SyntaxError","found","location","sources","str","src","st","offset_s","loc","filler","line","hatLen","hex","ch","nonPrintable","unicodeEscape","literalEscape","classEscape","DESCRIBE_EXPECTATION_FNS","expectation","escapedParts","describeExpectation","describeExpected","descriptions","describeFound","peg$parse","peg$FAILED","peg$source","peg$startRuleFunctions","peg$parsestart","peg$parseLiteral","peg$startRuleFunction","peg$c0","peg$c1","peg$c2","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","peg$c17","peg$c18","peg$c19","peg$c20","peg$r0","peg$r1","peg$r2","peg$r3","peg$r4","peg$e0","peg$literalExpectation","peg$e1","peg$e2","peg$e3","peg$e4","peg$e5","peg$otherExpectation","peg$e6","peg$e7","peg$e8","peg$e9","peg$e10","peg$e11","peg$e12","peg$e13","peg$e14","peg$e15","peg$classExpectation","peg$e16","peg$e17","peg$e18","peg$e19","peg$e20","peg$anyExpectation","peg$e21","peg$e22","peg$e23","peg$e24","peg$e25","peg$e26","peg$e27","peg$e28","peg$e29","peg$e30","peg$e31","peg$e32","peg$e33","peg$f0","trailing","nodeTypes","peg$f1","left","right","cursor","buildFunctionNode","peg$f2","peg$f3","peg$f4","group","peg$f5","field","peg$f6","operator","peg$f7","partial","buildNamedArgNode","listItems","peg$f8","range","peg$f9","wildcardSymbol","peg$f10","fieldName","buildLiteralNode","peg$f11","peg$f12","partialLeft","partialRight","peg$f13","peg$f14","peg$f15","isPhrase","peg$f16","allowLeadingWildcards","peg$f17","peg$f18","peg$f19","prefix","suffix","peg$f20","chars","peg$f21","char","peg$f22","peg$f23","peg$f24","sequence","buildWildcardNode","peg$f25","peg$f26","peg$f27","peg$f28","peg$f29","peg$f30","peg$f31","peg$f32","keyword","peg$f33","peg$f34","peg$f35","peg$f36","peg$f37","peg$f38","parseCursor","peg$f39","cursorSymbol","peg$currPos","peg$savedPos","peg$posDetailsCache","peg$maxFailPos","peg$maxFailExpected","peg$silentFails","peg$result","peg$computeLocation","peg$buildSimpleError","peg$getUnicode","pos","cp","ignoreCase","parts","inverted","unicode","peg$endExpectation","description","peg$computePosDetails","details","startPos","endPos","offset","startPosDetails","endPosDetails","peg$fail","peg$buildStructuredError","s0","s1","s2","s3","peg$parseSpace","peg$parseOrQuery","peg$parseOptionalSpace","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$parseFieldGeoSpatialExpression","peg$parseFieldMultiGeoSpatialExpression","peg$parseFieldRangeExpression","peg$parseFieldValueExpression","peg$parseValueExpression","peg$parseGeoSpatialOperator","peg$parseListOfValues","peg$parseRangeOperator","peg$parseNumberOrQuotedString","peg$parseValue","peg$parseOrListOfValues","peg$parseAndListOfValues","peg$parseNotListOfValues","peg$parseQuotedString","peg$parseUnquotedLiteral","peg$parseNumber","peg$parseFloat","peg$parseInteger","peg$parseQuotedCharacter","peg$parseCursor","peg$parseEscapedWhitespace","peg$parseUnquotedCharacter","peg$parseEscapedSpecialCharacter","peg$parseEscapedKeyword","peg$parseWildcard","peg$parseSpecialCharacter","peg$parseKeyword","errorOnLuceneSyntax","peg$success","peg$throw","fromExpression","parseOptions","parseKuery","fromLiteralExpression","fromKueryExpression","doesKueryExpressionHaveLuceneSyntaxError","indexPattern","config","escapeRegExp","escapeQueryString","test","regex","toQueryStringQuery","hasLeadingWildcard","getFields","literal.toOpenSearchQuery","fld","wildcard.test","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","child","argument","pick","object","out","op","params","paramsToMap","namedArgs","extractArguments","queryParams","arg","unnamedArgOrder","index","path","stringPath","fullPath","_o","$V0","$V1","$V2","$V3","$V4","$V5","$V6","$V7","$V8","$V9","$Va","$Vb","$Vc","$Vd","$Ve","$Vf","$Vg","$Vh","parser","yytext","yyleng","yylineno","yy","yystate","_$","$0","PointArray","RingList","Ring","PolygonList","GeometryList","hash","self","stack","vstack","lstack","table","TERROR","EOF","lexer","sharedState","yyloc","ranges","lex","token","symbol","state","action","yyval","newState","errStr","lines","oldLines","past","next","pre","match","indexed_rule","backup","tempMatch","rules","condition","yy_","$avoiding_name_collisions","YY_START","Parser","err","point","ring","geometry","polygon","wktToGeoJSON","res","functions","is","and","or","not","exists","nested","geospatial","functionName","kueryFunction","buildNodeWithArgumentNodes","name","argumentNode","functionType","literal","namedArg","wildcard","KQL_WILDCARD_SYMBOL","toCql","isValue","AST_TO_CQL","opsign","nodeType","toMongo","toHTML","values","groupVariables","extractFieldName","extractLiteralValue","nodes","grouped","opsine","GeospatialOperators","even","odd","SpectricPanel","changed","item","DialogElementTag","DialogElement","dialog","props","body","frag","DateTimePopup","buttonRef","resolve","labelValue","toLabelValue","GeoJSONPopup","EDIT","DELETE","ARROW_LEFT","ARROW_RIGHT","ARROW_UP","ARROW_DOWN","SupportedLanguages","NumberOperators","ObjectOperators","StringOperators","BoolOperators","DateOperators","SpectricQuery","suggestion","modalFunction","kuery.parse","ast","suggestions","output","kuery","unsafeHTML","kuery.toHTML","completion","insertIndex","afterStart","active","completions","fieldCompletions","fieldType","popover","option","CSSPropsControls","dark","spectric","Themes","ThemeSelections","SPECTRIC_CSS_VARIABLES","theme","SpectricThemeProvider","eventDetails","currentTheme","entry","Orientations","ElementTag","SplitView","percentage","orientation","invisible","min","max","useSavedState","id","savedValue","PaginationElementTag","PaginationElement","page","pageSize","nextPage","nextPageDisabled","pageText","size","TableHeaderElementTag","TableHeaderElement","column","TableSortDirection","delta","cell","selection","classes","columnWidth","sortDirection","sortClass","resizeHandle","title","TableCellElementTag","TableCellElement","rowGetValue","span","spanBounds","divBounds","tooltip","filter","rendered","buttonSize","filterButtons","cache","actions","TableBodyElementTag","TableBodyElement","repeat","row","col","TableVirtualBodyElement","lastScroll","scrollTop","tr","cells","TD_BorderAndPadding","totalRows","buffer","viewport","totalHeight","beforeHeight","afterHeight","spacerElementBefore","spacerElementAfter","once","hasBeenCalled","result","createSortChain","sorts","compareFn","v1","v2","sort","TableElementTag","TableSelectOptions","TableSortOption","TABLE_CREATED_SELECTION_COLUMN","SpectricTableElement","_row","pagination","totalItems","columnSetting","columns","sortOrder","rowHeight","_index","checked","rows","sortChain","selected","wrapper","scrollPosition","selectIndex","PopoverElementTag","PopoverElement","ev","bounds","portalBounds","TooltipElementTag","TooltipPostions","TooltipElement","eyedropper","SpectricColorPicker","hexToHsl","ctx","xpix","ypix","hslGen","offsetX","offsetY","hslToHex","eyedropper_icon","hue","color","SpectricCalendar","year","month","date","days","firstDay","lastDate","newDate","selectedYear","day","monthIndex","hours","minutes","seconds","ms","monthName","yearOptions","module","components","utils"],"mappings":"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A;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAA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","x_google_ignoreList":[0,1,2,3,4,5,7,8,9,10,11,12,13,16,17,18,26,45,61,68,70]}