@nanoporetech-digital/components 5.9.6 → 5.10.0
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.
- package/CHANGELOG.md +23 -0
- package/dist/cjs/index-1d3ebe1a.js +0 -4
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/nano-algolia.cjs.entry.js +13 -1
- package/dist/cjs/nano-algolia.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-components.cjs.js +1 -1
- package/dist/cjs/nano-global-nav.cjs.entry.js +85 -48
- package/dist/cjs/nano-global-nav.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-global-search-results.cjs.entry.js +6 -7
- package/dist/cjs/nano-global-search-results.cjs.entry.js.map +1 -1
- package/dist/cjs/{nano-table-49b4b3a6.js → nano-table-72d5dc63.js} +2 -2
- package/dist/cjs/{nano-table-49b4b3a6.js.map → nano-table-72d5dc63.js.map} +1 -1
- package/dist/cjs/nano-table.cjs.entry.js +1 -1
- package/dist/cjs/{table.worker-da980a2f.js → table.worker-3df34efe.js} +2 -2
- package/dist/cjs/table.worker-3df34efe.js.map +1 -0
- package/dist/collection/collection-manifest.json +0 -1
- package/dist/collection/components/algolia/algolia-interface.js.map +1 -1
- package/dist/collection/components/algolia/algolia.js +17 -5
- package/dist/collection/components/algolia/algolia.js.map +1 -1
- package/dist/collection/components/global-nav/global-nav.js +85 -48
- package/dist/collection/components/global-nav/global-nav.js.map +1 -1
- package/dist/collection/components/global-search-results/global-search-results.js +6 -7
- package/dist/collection/components/global-search-results/global-search-results.js.map +1 -1
- package/dist/components/algolia.js +13 -2
- package/dist/components/algolia.js.map +1 -1
- package/dist/components/index.d.ts +0 -1
- package/dist/components/index.js +0 -1
- package/dist/components/index.js.map +1 -1
- package/dist/components/nano-global-nav.js +85 -48
- package/dist/components/nano-global-nav.js.map +1 -1
- package/dist/components/nano-global-search-results.js +6 -7
- package/dist/components/nano-global-search-results.js.map +1 -1
- package/dist/esm/index-06666022.js +0 -4
- package/dist/esm/loader.js +1 -1
- package/dist/esm/nano-algolia.entry.js +13 -1
- package/dist/esm/nano-algolia.entry.js.map +1 -1
- package/dist/esm/nano-components.js +1 -1
- package/dist/esm/nano-global-nav.entry.js +85 -48
- package/dist/esm/nano-global-nav.entry.js.map +1 -1
- package/dist/esm/nano-global-search-results.entry.js +6 -7
- package/dist/esm/nano-global-search-results.entry.js.map +1 -1
- package/dist/esm/{nano-table-673838b5.js → nano-table-5af42ba4.js} +2 -2
- package/dist/esm/{nano-table-673838b5.js.map → nano-table-5af42ba4.js.map} +1 -1
- package/dist/esm/nano-table.entry.js +1 -1
- package/dist/esm/{table.worker-608a4868.js → table.worker-3cae908c.js} +2 -2
- package/dist/esm/table.worker-3cae908c.js.map +1 -0
- package/dist/nano-components/nano-components.esm.js +1 -1
- package/dist/nano-components/nano-components.esm.js.map +1 -1
- package/dist/nano-components/{p-06c85b64.js → p-1987f7a9.js} +2 -2
- package/dist/nano-components/{p-24dcd788.entry.js → p-2c0218e6.entry.js} +2 -2
- package/dist/nano-components/p-2c0218e6.entry.js.map +1 -0
- package/dist/nano-components/p-abd11243.entry.js +5 -0
- package/dist/nano-components/p-abd11243.entry.js.map +1 -0
- package/dist/nano-components/{p-d18c0a7a.js → p-dc4020f8.js} +2 -2
- package/dist/nano-components/p-dc6cb252.entry.js +5 -0
- package/dist/nano-components/p-dc6cb252.entry.js.map +1 -0
- package/dist/nano-components/{p-0b7c676c.entry.js → p-fbde7010.entry.js} +2 -2
- package/dist/types/components/algolia/algolia-interface.d.ts +8 -2
- package/dist/types/components/algolia/algolia.d.ts +3 -4
- package/dist/types/components/global-nav/global-nav.d.ts +32 -0
- package/dist/types/components.d.ts +2 -127
- package/docs-json.json +5 -257
- package/docs-vscode.json +2 -63
- package/hydrate/index.js +107 -242
- package/package.json +2 -2
- package/dist/cjs/nano-algolia-input.cjs.entry.js +0 -168
- package/dist/cjs/nano-algolia-input.cjs.entry.js.map +0 -1
- package/dist/cjs/table.worker-da980a2f.js.map +0 -1
- package/dist/collection/components/algolia/algolia-input.js +0 -463
- package/dist/collection/components/algolia/algolia-input.js.map +0 -1
- package/dist/components/nano-algolia-input.d.ts +0 -11
- package/dist/components/nano-algolia-input.js +0 -195
- package/dist/components/nano-algolia-input.js.map +0 -1
- package/dist/esm/nano-algolia-input.entry.js +0 -164
- package/dist/esm/nano-algolia-input.entry.js.map +0 -1
- package/dist/esm/table.worker-608a4868.js.map +0 -1
- package/dist/nano-components/p-02b727d3.entry.js +0 -5
- package/dist/nano-components/p-02b727d3.entry.js.map +0 -1
- package/dist/nano-components/p-24dcd788.entry.js.map +0 -1
- package/dist/nano-components/p-7dd30a3f.entry.js +0 -7
- package/dist/nano-components/p-7dd30a3f.entry.js.map +0 -1
- package/dist/nano-components/p-842f826a.entry.js +0 -5
- package/dist/nano-components/p-842f826a.entry.js.map +0 -1
- package/dist/types/components/algolia/algolia-input.d.ts +0 -103
- /package/dist/nano-components/{p-06c85b64.js.map → p-1987f7a9.js.map} +0 -0
- /package/dist/nano-components/{p-d18c0a7a.js.map → p-dc4020f8.js.map} +0 -0
- /package/dist/nano-components/{p-0b7c676c.entry.js.map → p-fbde7010.entry.js.map} +0 -0
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["multiverse","Map","updateConsumer","_a","state","fields","updater","forEach","field","Universe","create","creator","initialState","el","getElement","wormholes","universe","set","connectedCallback","call","disconnectedCallback","delete","addEventListener","event","stopPropagation","detail","consumer","onOpen","has","connectedCallback_1","disconnectedCallback_1","resolve","Provider","children","getRenderingRef","get","opening","PromiseQueue","constructor","this","queue","workingOnPromise","stop","limit","enqueue","promise","Promise","reject","push","dequeue","item","shift","then","value","catch","err","pendingPromise","e","t","exports","n","r","a","Error","prototype","Object","setPrototypeOf","__proto__","slice","split","i","length","s","Array","join","name","enumerable","Function","SyntaxError","hasOwnProperty","c","o","l","f","u","p","test","replace","h","rmWhitespace","lastIndex","prefixes","b","reduce","RegExp","tags","d","g","v","m","trim","raw","async","search","exec","y","x","w","F","S","index","I","indexOf","autoTrim","isArray","String","trimLeft","trimRight","R","T","plugins","processAST","useWith","varName","processFnString","res","defaultFilter","autoEscape","storage","nativeHelpers","cache","define","remove","reset","load","each","params","foreach","keys","include","templates","extends","content","useScope","if","try","block","E","j","helpers","filters","H","bind","O","message","_","compile","compileScope","compileScopeIntoFunction","compileToString","defaultConfig","getConfig","parse","render","defineProperty","squirrel","Sqrl","str","options","year","month","day","date","Date","parseInt","toLocaleDateString","format","getDate","toString","getMonth","getFullYear","map","val","toUpperCase","charAt","substr","result","domain","undefined","domains","origin","found","find","dm","match","location","protocol","toLowerCase","Squirrel","algoliaCss","Algolia","staticFacetFilters","dynFacetFilters","hasLoadSlot","placedAlgoliaEles","promiseQueue","searchChange","algoliaIndex","query","minChars","browseIndex","handleSearchReset","isLoading","setTimeout","resetPage","algoliaSearch","SearchChangeEvent","Init","updateContent","showResults","nanoResultsShown","emit","indexResults","makeAppliedFilters","appliedFtrs","makeAppliedFilter","facetFilters","values","filter","appFilter","facetName","eventType","queueSearch","searchIndex","nanoBeforeQuery","clearAllFacetFilters","searchParams","algoliaFilterStr","page","currentPage","facets","hitsPerPage","fixDomain","changeEvent","totalHits","nbHits","origFilters","totalHitsWithFilters","results","totalPages","appliedFilters","indexName","dynFilters","hits","nbPages","Page","Replica","nanoAfterQuery","currentHits","resultsPage","onResultDisplay","writeTask","resultsDiv","removeEventListener","style","display","defaultDiv","classList","add","minHeight","width","handleListenToChange","listenTo","foundInput","document","querySelector","includes","tagName","toLocaleLowerCase","inputField","facetValue","_dynFacetFilters","filterId","element","onAllTplUpdate","ev","target","requestAnimationFrame","nanoNewResults","Math","min","max","dynFilterObj","assign","filterChanged","Filter","dynFacetFiltersChange","host","ownerDocument","browseIndexChange","inputFieldSet","queryChange","replicaIndex","algoliaClient","initIndex","pageChange","onPageChange","searchIndexNameChange","searchIndexName","initAlgoliaClient","appId","apiKey","algoliasearch","initAlgoliaIndex","showResultsChange","scrollWidth","scrollHeight","slottedInput","focus","preventScroll","handleFilterpropChange","hit","url","facetFilterObj","groupFilters","filterOp","or","and","not","operator","formatVal","filterStrParts","operatorGrp","filterName","filterProp","toLocaleUpperCase","handleInputChange","updateContentQueue","outputTo","outputSlot","tpl","tmpCont","createElement","innerHTML","algoliaEles","from","querySelectorAll","placeholder","dataset","placeholderId","parentNode","replaceChild","tplRenderFn","childrenResolver","ele","componentWillLoad","readTask","tplSlot","getDirectChildren","innerText","HTMLInputElement","wormholeState","storeId","ComponentStore","init","storeMethod","internalIndexSwitch","debounce","dispatchEvent","CustomEvent","globalStoreMethod","Host","class","hidden","loader","loading","overlay","type","ref","div","tabindex"],"sources":["./node_modules/stencil-wormhole/dist/esm/universe.js","./src/utils/promise-queue.ts","./node_modules/squirrelly/dist/browser/squirrelly.min.js","./src/utils/template.ts","./src/components/algolia/algolia.scss?tag=nano-algolia&encapsulation=shadow","./src/components/algolia/algolia.tsx"],"sourcesContent":["import { getElement, getRenderingRef } from \"@stencil/core\";\nvar multiverse = new Map();\nvar updateConsumer = function (_a, state) {\n var fields = _a.fields, updater = _a.updater;\n fields.forEach(function (field) { updater(field, state[field]); });\n};\nexport var Universe = {\n create: function (creator, initialState) {\n var el = getElement(creator);\n var wormholes = new Map();\n var universe = { wormholes: wormholes, state: initialState };\n multiverse.set(creator, universe);\n var connectedCallback = creator.connectedCallback;\n creator.connectedCallback = function () {\n multiverse.set(creator, universe);\n if (connectedCallback) {\n connectedCallback.call(creator);\n }\n };\n var disconnectedCallback = creator.disconnectedCallback;\n creator.disconnectedCallback = function () {\n multiverse.delete(creator);\n if (disconnectedCallback) {\n disconnectedCallback.call(creator);\n }\n };\n el.addEventListener('openWormhole', function (event) {\n event.stopPropagation();\n var _a = event.detail, consumer = _a.consumer, onOpen = _a.onOpen;\n if (wormholes.has(consumer))\n return;\n if (typeof consumer !== 'symbol') {\n var connectedCallback_1 = consumer.connectedCallback, disconnectedCallback_1 = consumer.disconnectedCallback;\n consumer.connectedCallback = function () {\n wormholes.set(consumer, event.detail);\n if (connectedCallback_1) {\n connectedCallback_1.call(consumer);\n }\n };\n consumer.disconnectedCallback = function () {\n wormholes.delete(consumer);\n if (disconnectedCallback_1) {\n disconnectedCallback_1.call(consumer);\n }\n };\n }\n wormholes.set(consumer, event.detail);\n updateConsumer(event.detail, universe.state);\n onOpen === null || onOpen === void 0 ? void 0 : onOpen.resolve(function () { wormholes.delete(consumer); });\n });\n el.addEventListener('closeWormhole', function (event) {\n var consumer = event.detail;\n wormholes.delete(consumer);\n });\n },\n Provider: function (_a, children) {\n var state = _a.state;\n var creator = getRenderingRef();\n if (multiverse.has(creator)) {\n var universe = multiverse.get(creator);\n universe.state = state;\n universe.wormholes.forEach(function (opening) { updateConsumer(opening, state); });\n }\n return children;\n }\n};\n","export class PromiseQueue {\n public queue = [];\n private workingOnPromise = false;\n static pendingPromise = false;\n public stop = false;\n public limit = null;\n\n public enqueue(promise: () => Promise<unknown>) {\n return new Promise((resolve, reject) => {\n this.queue.push({\n promise,\n resolve,\n reject,\n });\n this.dequeue();\n });\n }\n\n public dequeue() {\n if (this.workingOnPromise) {\n return false;\n }\n if (this.stop) {\n this.queue = [];\n this.stop = false;\n return;\n }\n const item = this.queue.shift();\n if (!item) {\n return false;\n }\n try {\n this.workingOnPromise = true;\n item\n .promise()\n .then((value) => {\n this.workingOnPromise = false;\n item.resolve(value);\n this.dequeue();\n })\n .catch((err) => {\n this.workingOnPromise = false;\n item.reject(err);\n this.dequeue();\n });\n } catch (err) {\n this.workingOnPromise = false;\n item.reject(err);\n this.dequeue();\n }\n return true;\n }\n}\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],t):t((e=\"undefined\"!=typeof globalThis?globalThis:e||self).Sqrl={})}(this,(function(e){\"use strict\";function t(e){var n,r,a=new Error(e);return n=a,r=t.prototype,Object.setPrototypeOf?Object.setPrototypeOf(n,r):n.__proto__=r,a}function n(e,n,r){var a=n.slice(0,r).split(/\\n/),i=a.length,s=a[i-1].length+1;throw t(e+=\" at line \"+i+\" col \"+s+\":\\n\\n \"+n.split(/\\n/)[i-1]+\"\\n \"+Array(s).join(\" \")+\"^\")}t.prototype=Object.create(Error.prototype,{name:{value:\"Squirrelly Error\",enumerable:!1}});var r=new Function(\"return this\")().Promise,a=!1;try{a=new Function(\"return (async function(){}).constructor\")()}catch(e){if(!(e instanceof SyntaxError))throw e}function i(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function s(e,t,n){for(var r in t)i(t,r)&&(null==t[r]||\"object\"!=typeof t[r]||\"storage\"!==r&&\"prefixes\"!==r||n?e[r]=t[r]:e[r]=s({},t[r]));return e}var c=/^async +/,o=/`(?:\\\\[\\s\\S]|\\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})*}|(?!\\${)[^\\\\`])*`/g,l=/'(?:\\\\[\\s\\w\"'\\\\`]|[^\\n\\r'\\\\])*?'/g,f=/\"(?:\\\\[\\s\\w\"'\\\\`]|[^\\n\\r\"\\\\])*?\"/g,u=/[.*+\\-?^${}()|[\\]\\\\]/g;function p(e){return u.test(e)?e.replace(u,\"\\\\$&\"):e}function h(e,r){r.rmWhitespace&&(e=e.replace(/[\\r\\n]+/g,\"\\n\").replace(/^\\s+|\\s+$/gm,\"\")),o.lastIndex=0,l.lastIndex=0,f.lastIndex=0;var a=r.prefixes,i=[a.h,a.b,a.i,a.r,a.c,a.e].reduce((function(e,t){return e&&t?e+\"|\"+p(t):t?p(t):e}),\"\"),s=new RegExp(\"([|()]|=>)|('|\\\"|`|\\\\/\\\\*)|\\\\s*((\\\\/)?(-|_)?\"+p(r.tags[1])+\")\",\"g\"),u=new RegExp(\"([^]*?)\"+p(r.tags[0])+\"(-|_)?\\\\s*(\"+i+\")?\\\\s*\",\"g\"),h=0,d=!1;function g(t,a){var i,p={f:[]},g=0,v=\"c\";function m(t){var a=e.slice(h,t),i=a.trim();if(\"f\"===v)\"safe\"===i?p.raw=!0:r.async&&c.test(i)?(i=i.replace(c,\"\"),p.f.push([i,\"\",!0])):p.f.push([i,\"\"]);else if(\"fp\"===v)p.f[p.f.length-1][1]+=i;else if(\"err\"===v){if(i){var s=a.search(/\\S/);n(\"invalid syntax\",e,h+s)}}else p[v]=i;h=t+1}for(\"h\"===a||\"b\"===a||\"c\"===a?v=\"n\":\"r\"===a&&(p.raw=!0,a=\"i\"),s.lastIndex=h;null!==(i=s.exec(e));){var y=i[1],x=i[2],b=i[3],w=i[4],F=i[5],S=i.index;if(y)\"(\"===y?(0===g&&(\"n\"===v?(m(S),v=\"p\"):\"f\"===v&&(m(S),v=\"fp\")),g++):\")\"===y?0===--g&&\"c\"!==v&&(m(S),v=\"err\"):0===g&&\"|\"===y?(m(S),v=\"f\"):\"=>\"===y&&(m(S),h+=1,v=\"res\");else if(x){if(\"/*\"===x){var I=e.indexOf(\"*/\",s.lastIndex);-1===I&&n(\"unclosed comment\",e,i.index),s.lastIndex=I+2}else if(\"'\"===x){l.lastIndex=i.index,l.exec(e)?s.lastIndex=l.lastIndex:n(\"unclosed string\",e,i.index)}else if('\"'===x){f.lastIndex=i.index,f.exec(e)?s.lastIndex=f.lastIndex:n(\"unclosed string\",e,i.index)}else if(\"`\"===x){o.lastIndex=i.index,o.exec(e)?s.lastIndex=o.lastIndex:n(\"unclosed string\",e,i.index)}}else if(b)return m(S),h=S+i[0].length,u.lastIndex=h,d=F,w&&\"h\"===a&&(a=\"s\"),p.t=a,p}return n(\"unclosed tag\",e,t),p}var v=function i(s,o){s.b=[],s.d=[];var l,f=!1,p=[];function v(e,t){e&&(e=function(e,t,n,r){var a,i;return\"string\"==typeof t.autoTrim?a=i=t.autoTrim:Array.isArray(t.autoTrim)&&(a=t.autoTrim[1],i=t.autoTrim[0]),(n||!1===n)&&(a=n),(r||!1===r)&&(i=r),\"slurp\"===a&&\"slurp\"===i?e.trim():(\"_\"===a||\"slurp\"===a?e=String.prototype.trimLeft?e.trimLeft():e.replace(/^[\\s\\uFEFF\\xA0]+/,\"\"):\"-\"!==a&&\"nl\"!==a||(e=e.replace(/^(?:\\n|\\r|\\r\\n)/,\"\")),\"_\"===i||\"slurp\"===i?e=String.prototype.trimRight?e.trimRight():e.replace(/[\\s\\uFEFF\\xA0]+$/,\"\"):\"-\"!==i&&\"nl\"!==i||(e=e.replace(/(?:\\n|\\r|\\r\\n)$/,\"\")),e)}(e,r,d,t))&&(e=e.replace(/\\\\|'/g,\"\\\\$&\").replace(/\\r\\n|\\n|\\r/g,\"\\\\n\"),p.push(e))}for(;null!==(l=u.exec(e));){var m,y=l[1],x=l[2],b=l[3]||\"\";for(var w in a)if(a[w]===b){m=w;break}v(y,x),h=l.index+l[0].length,m||n(\"unrecognized tag type: \"+b,e,h);var F=g(l.index,m),S=F.t;if(\"h\"===S){var I=F.n||\"\";r.async&&c.test(I)&&(F.a=!0,F.n=I.replace(c,\"\")),F=i(F),p.push(F)}else if(\"c\"===S){if(s.n===F.n)return f?(f.d=p,s.b.push(f)):s.d=p,s;n(\"Helper start and end don't match\",e,l.index+l[0].length)}else if(\"b\"===S){f?(f.d=p,s.b.push(f)):s.d=p;var R=F.n||\"\";r.async&&c.test(R)&&(F.a=!0,F.n=R.replace(c,\"\")),f=F,p=[]}else if(\"s\"===S){var T=F.n||\"\";r.async&&c.test(T)&&(F.a=!0,F.n=T.replace(c,\"\")),p.push(F)}else p.push(F)}if(!o)throw t('unclosed helper \"'+s.n+'\"');return v(e.slice(h,e.length),!1),s.d=p,s}({f:[]},!0);if(r.plugins)for(var m=0;m<r.plugins.length;m++){var y=r.plugins[m];y.processAST&&(v.d=y.processAST(v.d,r))}return v.d}function d(e,t){var n=h(e,t),r=\"var tR='';\"+(t.useWith?\"with(\"+t.varName+\"||{}){\":\"\")+x(n,t)+\"if(cb){cb(null,tR)} return tR\"+(t.useWith?\"}\":\"\");if(t.plugins)for(var a=0;a<t.plugins.length;a++){var i=t.plugins[a];i.processFnString&&(r=i.processFnString(r,t))}return r}function g(e,t){for(var n=0;n<t.length;n++){var r=t[n][0],a=t[n][1];e=(t[n][2]?\"await \":\"\")+\"c.l('F','\"+r+\"')(\"+e,a&&(e+=\",\"+a),e+=\")\"}return e}function v(e,t,n,r,a,i){var s=\"{exec:\"+(a?\"async \":\"\")+y(n,t,e)+\",params:[\"+r+\"]\";return i&&(s+=\",name:'\"+i+\"'\"),a&&(s+=\",async:true\"),s+=\"}\"}function m(e,t){for(var n=\"[\",r=0;r<e.length;r++){var a=e[r];n+=v(t,a.res||\"\",a.d,a.p||\"\",a.a,a.n),r<e.length&&(n+=\",\")}return n+=\"]\"}function y(e,t,n){return\"function(\"+t+\"){var tR='';\"+x(e,n)+\"return tR}\"}function x(e,t){for(var n=0,r=e.length,a=\"\";n<r;n++){var i=e[n];if(\"string\"==typeof i){a+=\"tR+='\"+i+\"';\"}else{var s=i.t,c=i.c||\"\",o=i.f,l=i.n||\"\",f=i.p||\"\",u=i.res||\"\",p=i.b,h=!!i.a;if(\"i\"===s){t.defaultFilter&&(c=\"c.l('F','\"+t.defaultFilter+\"')(\"+c+\")\");var d=g(c,o);!i.raw&&t.autoEscape&&(d=\"c.l('F','e')(\"+d+\")\"),a+=\"tR+=\"+d+\";\"}else if(\"h\"===s)if(t.storage.nativeHelpers.get(l))a+=t.storage.nativeHelpers.get(l)(i,t);else{var y=(h?\"await \":\"\")+\"c.l('H','\"+l+\"')(\"+v(t,u,i.d,f,h);y+=p?\",\"+m(p,t):\",[]\",a+=\"tR+=\"+g(y+=\",c)\",o)+\";\"}else\"s\"===s?a+=\"tR+=\"+g((h?\"await \":\"\")+\"c.l('H','\"+l+\"')({params:[\"+f+\"]},[],c)\",o)+\";\":\"e\"===s&&(a+=c+\"\\n\")}}return a}var b=function(){function e(e){this.cache=e}return e.prototype.define=function(e,t){this.cache[e]=t},e.prototype.get=function(e){return this.cache[e]},e.prototype.remove=function(e){delete this.cache[e]},e.prototype.reset=function(){this.cache={}},e.prototype.load=function(e){s(this.cache,e,!0)},e}();function w(e,n,r,a){if(n&&n.length>0)throw t((a?\"Native\":\"\")+\"Helper '\"+e+\"' doesn't accept blocks\");if(r&&r.length>0)throw t((a?\"Native\":\"\")+\"Helper '\"+e+\"' doesn't accept filters\")}var F={\"&\":\"&\",\"<\":\"<\",\">\":\">\",'\"':\""\",\"'\":\"'\"};function S(e){return F[e]}var I=new b({}),R=new b({each:function(e,t){var n=\"\",r=e.params[0];if(w(\"each\",t,!1),e.async)return new Promise((function(t){!function e(t,n,r,a,i){r(t[n],n).then((function(s){a+=s,n===t.length-1?i(a):e(t,n+1,r,a,i)}))}(r,0,e.exec,n,t)}));for(var a=0;a<r.length;a++)n+=e.exec(r[a],a);return n},foreach:function(e,t){var n=e.params[0];if(w(\"foreach\",t,!1),e.async)return new Promise((function(t){!function e(t,n,r,a,i,s){a(n[r],t[n[r]]).then((function(c){i+=c,r===n.length-1?s(i):e(t,n,r+1,a,i,s)}))}(n,Object.keys(n),0,e.exec,\"\",t)}));var r=\"\";for(var a in n)i(n,a)&&(r+=e.exec(a,n[a]));return r},include:function(e,n,r){w(\"include\",n,!1);var a=r.storage.templates.get(e.params[0]);if(!a)throw t('Could not fetch template \"'+e.params[0]+'\"');return a(e.params[1],r)},extends:function(e,n,r){var a=e.params[1]||{};a.content=e.exec();for(var i=0;i<n.length;i++){var s=n[i];a[s.name]=s.exec()}var c=r.storage.templates.get(e.params[0]);if(!c)throw t('Could not fetch template \"'+e.params[0]+'\"');return c(a,r)},useScope:function(e,t){return w(\"useScope\",t,!1),e.exec(e.params[0])}}),T=new b({if:function(e,t){w(\"if\",!1,e.f,!0);var n=\"if(\"+e.p+\"){\"+x(e.d,t)+\"}\";if(e.b)for(var r=0;r<e.b.length;r++){var a=e.b[r];\"else\"===a.n?n+=\"else{\"+x(a.d,t)+\"}\":\"elif\"===a.n&&(n+=\"else if(\"+a.p+\"){\"+x(a.d,t)+\"}\")}return n},try:function(e,n){if(w(\"try\",!1,e.f,!0),!e.b||1!==e.b.length||\"catch\"!==e.b[0].n)throw t(\"native helper 'try' only accepts 1 block, 'catch'\");var r=\"try{\"+x(e.d,n)+\"}\",a=e.b[0];return r+=\"catch\"+(a.res?\"(\"+a.res+\")\":\"\")+\"{\"+x(a.d,n)+\"}\"},block:function(e,t){return w(\"block\",e.b,e.f,!0),\"if(!\"+t.varName+\"[\"+e.p+\"]){tR+=(\"+y(e.d,\"\",t)+\")()}else{tR+=\"+t.varName+\"[\"+e.p+\"]}\"}}),E=new b({e:function(e){var t=String(e);return/[&<>\"']/.test(t)?t.replace(/[&<>\"']/g,S):t}}),j={varName:\"it\",autoTrim:[!1,\"nl\"],autoEscape:!0,defaultFilter:!1,tags:[\"{{\",\"}}\"],l:function(e,n){if(\"H\"===e){var r=this.storage.helpers.get(n);if(r)return r;throw t(\"Can't find helper '\"+n+\"'\")}if(\"F\"===e){var a=this.storage.filters.get(n);if(a)return a;throw t(\"Can't find filter '\"+n+\"'\")}},async:!1,storage:{helpers:R,nativeHelpers:T,filters:E,templates:I},prefixes:{h:\"@\",b:\"#\",i:\"\",r:\"*\",c:\"/\",e:\"!\"},cache:!1,plugins:[],useWith:!1};function H(e,t){var n={};return s(n,j),t&&s(n,t),e&&s(n,e),n.l.bind(n),n}function O(e,n){var r=H(n||{}),i=Function;if(r.async){if(!a)throw t(\"This environment doesn't support async/await\");i=a}try{return new i(r.varName,\"c\",\"cb\",d(e,r))}catch(n){throw n instanceof SyntaxError?t(\"Bad template syntax\\n\\n\"+n.message+\"\\n\"+Array(n.message.length+1).join(\"=\")+\"\\n\"+d(e,r)):n}}function _(e,t){var n;return t.cache&&t.name&&t.storage.templates.get(t.name)?t.storage.templates.get(t.name):(n=\"function\"==typeof e?e:O(e,t),t.cache&&t.name&&t.storage.templates.define(t.name,n),n)}j.l.bind(j),e.compile=O,e.compileScope=x,e.compileScopeIntoFunction=y,e.compileToString=d,e.defaultConfig=j,e.filters=E,e.getConfig=H,e.helpers=R,e.nativeHelpers=T,e.parse=h,e.render=function(e,n,a,i){var s=H(a||{});if(!s.async)return _(e,s)(n,s);if(!i){if(\"function\"==typeof r)return new r((function(t,r){try{t(_(e,s)(n,s))}catch(e){r(e)}}));throw t(\"Please provide a callback function, this env doesn't support Promises\")}try{_(e,s)(n,s,i)}catch(e){return i(e)}},e.templates=I,Object.defineProperty(e,\"__esModule\",{value:!0})}));\n//# sourceMappingURL=squirrelly.min.js.map\n","import * as Sqrl from 'squirrelly';\nimport type { IndexResult, AlgoliaResultHit } from '../interface';\n\nconst squirrel = Sqrl;\n\nsquirrel.filters.define(\n 'date_long',\n (\n str: string,\n options: Intl.DateTimeFormatOptions = {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n }\n ) => {\n if (!str) return;\n const date = new Date(parseInt(str) * 1000);\n str = date.toLocaleDateString('en-GB', options);\n return str;\n }\n);\n\nsquirrel.filters.define(\n 'date_short',\n (str: string, format: string = 'd/m/y') => {\n if (!str) return;\n const date = new Date(parseInt(str) * 1000);\n str = format.replace(/(d)/, date.getDate().toString());\n str = str.replace(/(m)/, (date.getMonth() + 1).toString());\n str = str.replace(/(y)/, date.getFullYear().toString());\n return str;\n }\n);\n\nsquirrel.filters.define('public_name', (str: string) => {\n if (!str) return;\n str = str\n .split('_')\n .map((val) => {\n return val.length < 3 ? val.toUpperCase() : val;\n })\n .join(' ');\n return str.charAt(0).toUpperCase() + str.slice(1);\n});\n\nsquirrel.filters.define('trim_to', (str: string, length: number = 100) => {\n if (!str) return;\n if (str.length <= length) return str;\n return str.substr(0, length) + '...';\n});\n\nsquirrel.filters.define('classname', (str: string) => {\n if (!str) return;\n return str.replace(/[\\W]+/g, '');\n});\n\nsquirrel.filters.define(\n 'abs_url',\n (str: string, index: IndexResult = null, result?: AlgoliaResultHit) => {\n if (!index) return str;\n if (!str) return;\n\n let domain = undefined;\n if (index.domains && result && result.origin) {\n const found = index.domains.find((dm) => dm.origin === result.origin);\n domain = found ? found.domain : '';\n } else if (index.domain) domain = index.domain;\n\n if (!domain) return str;\n return str.match(/^http/) ? str : location.protocol + '//' + domain + str;\n }\n);\n\nsquirrel.filters.define(\n 'replace',\n (str: string, search?: string, replace?: string) =>\n str.replace(search, replace)\n);\nsquirrel.filters.define('remove_spaces', (str: string) =>\n str.replace(/ /g, '_')\n);\nsquirrel.filters.define(\n 'add_spaces',\n (str: string) => (str = str.replace(/[_\\-]/g, ' '))\n);\nsquirrel.filters.define(\n 'capitalise',\n (str: string) => (str = str.charAt(0).toUpperCase() + str.slice(1))\n);\nsquirrel.filters.define(\n 'lowercase',\n (str: string) => (str = str.toLowerCase())\n);\n\nexport const Squirrel = squirrel;\n",":host {\n position: relative;\n display: block;\n\n ::slotted([slot='search-template']) {\n display: none !important;\n }\n}\n\n.loader {\n opacity: 0;\n position: fixed;\n block-size: 100%;\n inline-size: 100%;\n min-block-size: 100%;\n max-block-size: 100vh !important;\n max-inline-size: 100vw !important;\n inset-inline-start: 0;\n inset-block-start: 0;\n z-index: -10;\n font-size: 60px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: opacity 0.2s ease, z-index 0.01s ease 0.2s;\n\n &.loading {\n opacity: 1;\n z-index: 10;\n transition: z-index 0.01s ease, opacity 0.2s ease 0.01s;\n }\n}\n\n.default {\n block-size: 100%;\n\n &:focus {\n outline: none;\n }\n}\n\n.results {\n opacity: 0;\n outline: none;\n overflow: auto;\n transition:\n transform 0.3s ease,\n opacity 0.3s ease,\n visibility 0.01s ease 0.3s,\n z-index 0.01s ease 0.3s;\n transform: translate(0, 100px);\n visibility: hidden;\n z-index: -1;\n position: absolute;\n inset-block-start: 0;\n inset-inline-start: 0;\n display: none;\n\n &-container {\n position: relative;\n }\n\n &.show {\n transition:\n z-index 0.01s ease,\n visibility 0.01s ease,\n transform 0.3s ease 0.01s,\n opacity 0.3s ease 0.01s,\n overflow 0.01s ease 0.31s;\n transform: translate(0, 0);\n visibility: visible;\n opacity: 1;\n z-index: 10;\n overflow: hidden;\n }\n\n &.shown {\n block-size: auto !important;\n inline-size: auto !important;\n display: block;\n position: static;\n transform: none;\n z-index: auto;\n visibility: inherit;\n opacity: initial;\n overflow: visible;\n }\n}\n","import {\n Component,\n h,\n Element,\n Host,\n Prop,\n Watch,\n State,\n Listen,\n Method,\n EventEmitter,\n Event,\n Build,\n writeTask,\n ComponentInterface,\n readTask,\n} from '@stencil/core';\nimport algoliasearch from 'algoliasearch/dist/algoliasearch-lite.esm.browser';\nimport { getDirectChildren } from '../../utils/dom';\nimport { PromiseQueue } from '../../utils/promise-queue';\nimport {\n ComponentStore,\n StorageMethods,\n} from '../../utils/store/component-store';\nimport { Squirrel } from '../../utils/template';\nimport { debounce } from '../../utils/throttle';\nimport { Universe, SearchChangeEvent } from './algolia-data';\nimport type {\n SearchClient as AlgoliaClient,\n SearchIndex as AlgoliaIndex,\n} from 'algoliasearch/lite';\nimport type {\n AlgoliaMultiResult,\n IndexResult,\n AlgoliaResultHit,\n FilterChangeEventDetail,\n PageChangeEventDetail,\n AppliedFilter,\n AlgoliaFacet,\n SearchIndex,\n} from '../../interface';\n\ninterface FacetFilterQueryBlock {\n or: Array<string>;\n and: Array<string>;\n not: Array<string>;\n name: string;\n}\ninterface FacetFilter extends FilterChangeEventDetail {\n element: HTMLNanoAlgoliaFilterElement;\n}\ntype FilterGroup = { [prop: string]: FacetFilter };\n\n/**\n * Algolia search container to contain and sync nano-algolia-results and nano-algolia-filter components.\n * @slot search-input - optional. Should contain an `input` or `nano-input` component.\n * @slot loader - optional. Elements to show when search results are loading.\n * @slot template - optional. Template string (format depends on 'tplEngine' property). May contain other algolia-... components with nested templates.\n * @slot output - Search result output. Will be a placeholder for template output or optionally nest algolia-... components.\n */\n@Component({\n tag: 'nano-algolia',\n shadow: true,\n styleUrl: 'algolia.scss',\n})\nexport class Algolia implements ComponentInterface {\n // filters that have an initial value\n private staticFacetFilters: FilterGroup = {};\n private dynFacetFilters: FilterGroup = {};\n private tplSlot: HTMLElement;\n private outputSlot: HTMLElement;\n private slottedInput: HTMLElement;\n private hasLoadSlot: boolean = false;\n private resultsDiv: HTMLDivElement;\n private defaultDiv: HTMLDivElement;\n private tpl: string;\n private facets: AlgoliaFacet;\n private placedAlgoliaEles: Element[] = [];\n private algoliaClient: AlgoliaClient;\n // lots of stuff happens asynchronously. This makes sure they fire in the corrent order\n private promiseQueue = new PromiseQueue();\n\n @Element() host: HTMLNanoAlgoliaElement;\n\n // Internal state\n\n // filters that change via a template. They have no initial value\n @State() _dynFacetFilters: FilterGroup = {};\n @State() inputField: HTMLNanoInputElement | HTMLInputElement;\n @State() algoliaIndex: AlgoliaIndex;\n @State() indeces: IndexResult[] = [];\n @State() indexResults: IndexResult;\n @State() filterChanged: string = '';\n @State() currentHits: AlgoliaResultHit[];\n @State() changeEvent: SearchChangeEvent = SearchChangeEvent.Init;\n @State() isLoading: boolean = false;\n @State() wormholeState: any = this;\n\n // Public props\n\n /**\n * Show the result panel. By default it will automatically show when the result receives new hits.\n */\n @Prop({ mutable: true }) showResults: boolean = false;\n\n /**\n * The current algolia page of results currently being viewed or to get.\n */\n @Prop({ mutable: true }) resultsPage: number = 0;\n\n /**\n * An Algolia App ID key. Used in conjunction with 'searchIndex' & 'apiKey'.\n */\n @Prop({ mutable: true }) appId: string;\n\n /**\n * An Algolia API Key. Used in conjunction with 'searchIndex' & 'appId'.\n */\n @Prop({ mutable: true }) apiKey: string;\n\n /**\n * Algolia search index. Used in conjunction with 'apiKey' & 'appId'.\n * ```\n * { index: string, // algolia index name\n * domain?: string, // used in template filters to resolve incomplete url fields\n * filters?: [string], // algolia facets to retrive\n * hitsPerPage?: number,\n * name?: string // human readable index name\n * }\n * ```\n */\n @Prop({ mutable: true }) searchIndex: SearchIndex = {} as SearchIndex;\n\n /**\n * Algolia search index name. Alternative to 'searchIndex'.\n * A simplified shortcut for setting an index.\n * Properties such as hitsPerPage and facets will come from the algolia index\n */\n @Prop({ mutable: true }) searchIndexName: string = '';\n\n /**\n * JS querySelector string of a `nano-input` / `input` element from which\n * to listen to `nano-change` or `change` events and change the `query` prop.\n * Not required if an appropriate field is in the 'search-input' slot\n */\n @Prop() listenTo?: string = null;\n\n @Watch('listenTo')\n handleListenToChange() {\n if (!this.listenTo) return;\n\n const foundInput = document.querySelector(this.listenTo);\n if (\n ['nano-input', 'input'].includes(foundInput.tagName.toLocaleLowerCase())\n ) {\n this.inputField = foundInput as HTMLNanoInputElement;\n }\n }\n\n /**\n * The query string used to search the index. Will automatically be set with any slotted\n * `search-input` input elements or from elements linked to from `listen-to`\n */\n @Prop({ mutable: true }) query: string = '';\n\n /**\n * The external operator joining filter values.\n */\n @Prop() operator: 'or' | 'and' = 'and';\n\n /**\n * Query filters to apply to all searches.\n * Refer to https://www.algolia.com/doc/api-reference/api-parameters/filters for format.\n */\n @Prop() filters: Array<string> = [];\n\n /**\n * Template engine to use when rendering results and filters.\n * Defaults to Squirrel v8 (https://squirrelly.js.org/). This gives you access\n * to the underlying squirrel object allowing you to modify it's configuration / add filters.\n */\n @Prop() tplEngine: Object = Squirrel;\n\n /**\n * Template engine render function to use when rendering results and filters.\n * Defaults to Squirrel v8's render (https://squirrelly.js.org/).\n */\n @Prop() tplRenderFn: (...args: any[]) => string = Squirrel.render;\n\n /**\n * Changes the index without removing any current filters. Most appropriate for algolia replicas.\n */\n @Prop({ mutable: true }) replicaIndex: string = '';\n\n /**\n * Will maintain a search all / '*' on init and reset allowing for a view\n * then filter experience rather than a search first experience\n */\n @Prop({ mutable: true }) browseIndex: boolean = false; // eslint-disable-line @stencil-community/strict-mutable\n\n /**\n * Minimum number of characters before performing a search\n */\n @Prop() minChars: number = 2;\n\n /**\n * Store search queries (against this ID) to the component store.\n * Use in conjunction with storeMethod\n */\n @Prop() storeId?: string;\n\n /**\n * The method of storage.\n * Either session storage, url hash (after the '#') or url query (after the '?').\n */\n @Prop() storeMethod: StorageMethods = 'session';\n\n // Events\n\n /**\n * Emitted when the algolia element has been created.\n */\n @Event() nanoDidLoad!: EventEmitter<HTMLNanoAlgoliaElement>;\n\n /**\n * Emitted when results and all filters are shown and have loaded.\n */\n @Event({ bubbles: false }) nanoResultsShown!: EventEmitter<IndexResult>;\n\n /**\n * Emitted before an algolia search.\n */\n @Event() nanoBeforeQuery!: EventEmitter<IndexResult>;\n\n /**\n * Emitted after an algolia search.\n */\n @Event() nanoAfterQuery!: EventEmitter<IndexResult>;\n\n /**\n * Emitted after an results have been updated\n */\n @Event() nanoNewResults!: EventEmitter<IndexResult>;\n\n // Public methods\n\n /**\n * @param facetName - will clear all filter selections of that type\n * @param facetValue - will remove a single filter selection\n * Remove facet filters (as set from nano-algolia-filter elements).\n * The omission or both will remove all facet filters\n */\n @Method()\n async removeFilters(facetName?: string, facetValue?: string) {\n if (!facetName && !facetValue) this.clearAllFacetFilters();\n else {\n Object.keys(this._dynFacetFilters).forEach((filterId) => {\n if (\n facetName &&\n this._dynFacetFilters[filterId].facetName === facetName\n ) {\n if (!facetValue) this._dynFacetFilters[filterId].element.value = '';\n else {\n this._dynFacetFilters[filterId].element.value =\n this._dynFacetFilters[filterId].value.filter(\n (val) => val !== facetValue\n );\n }\n }\n });\n }\n }\n\n // Listeners to external events\n\n // a child nano-algolia-... updated their template\n @Listen('nanoTplUpdated')\n onAllTplUpdate(ev: CustomEvent & { target: HTMLElement }) {\n ev.stopPropagation();\n\n if (ev.target.tagName === 'NANO-ALGOLIA-RESULTS') {\n requestAnimationFrame(() => {\n this.nanoNewResults.emit(this.indexResults);\n });\n }\n }\n\n // a nano-algolia-pagination or nano-algolia-results changed the page\n @Listen('nanoPageChanged')\n async onPageChange(ev?: CustomEvent) {\n if (!this.indexResults) return;\n let page = this.resultsPage;\n if (ev) {\n ev.stopPropagation();\n page = (ev.detail as PageChangeEventDetail).page;\n }\n\n page = Math.min(this.indexResults.totalPages - 1, page);\n page = Math.max(page, 0);\n\n if (this.indexResults.currentPage === page) return;\n\n this.indexResults.currentPage = page;\n await this.algoliaSearch(SearchChangeEvent.Page);\n }\n\n /**\n * nano-algolia-filter changed value.\n * If that happened before a indexResults were setup, it was a static filter.\n * Static filters persist accross search changes\n */\n @Listen('nanoFilterChanged')\n async onFilterChange(ev: CustomEvent) {\n ev.stopPropagation();\n\n const dynFilterObj: FilterGroup = {};\n const filter = ev.detail as FacetFilter;\n filter.element = ev.target as HTMLNanoAlgoliaFilterElement;\n\n if (this.indexResults) {\n if (this.staticFacetFilters[filter.filterId])\n this.staticFacetFilters[filter.filterId] = filter;\n else {\n dynFilterObj[filter.filterId] = filter;\n this._dynFacetFilters = { ...this._dynFacetFilters, ...dynFilterObj };\n }\n\n this.indexResults.appliedFilters = this.makeAppliedFilters();\n } else this.staticFacetFilters[filter.filterId] = filter;\n\n this.filterChanged =\n filter.value && filter.value.length ? filter.filterId : 'all';\n\n this.resetPage();\n this.algoliaSearch(SearchChangeEvent.Filter);\n }\n\n // Internal state watchers\n\n // Filters can fire a change event, cause a re-render then get detached.\n // This can cause filter dupes. Check to see if the original element is still in the DOM.\n @Watch('_dynFacetFilters')\n dynFacetFiltersChange() {\n Object.values(this._dynFacetFilters).forEach((filter) => {\n if (this.host.ownerDocument === filter.element.ownerDocument)\n this.dynFacetFilters[filter.filterId] = filter;\n else delete this.dynFacetFilters[filter.filterId];\n });\n }\n\n @Watch('browseIndex')\n browseIndexChange() {\n if (\n this.browseIndex &&\n (!this.query || this.query.length < this.minChars)\n ) {\n this.query = '*';\n }\n }\n\n @Watch('inputField')\n inputFieldSet() {\n if (!this.inputField) return;\n if (\n this.query !== '*' &&\n this.inputField &&\n this.inputField.value !== this.query\n )\n this.inputField.value = this.query;\n }\n\n @Watch('query')\n queryChange() {\n this.searchChange();\n }\n private searchChange = async () => {\n if (!this.algoliaIndex) return;\n\n if (!this.query || this.query.length < this.minChars) {\n if (!this.browseIndex) {\n if (!this.query || this.query.length === 0) {\n this.handleSearchReset();\n return;\n } else return;\n } else if (this.query !== '*') {\n this.query = '*';\n return;\n }\n }\n // Do an initialise search (setup searchIndex)\n this.isLoading = true;\n\n setTimeout(async () => {\n // Clear dynamic filters and reset page\n this.resetPage();\n\n await this.algoliaSearch(SearchChangeEvent.Init);\n // Populate master content - optionally from template\n await this.updateContent();\n\n setTimeout((_) => (this.isLoading = false), 800);\n this.showResults = true;\n this.nanoResultsShown.emit(this.indexResults);\n }, 200);\n };\n\n @Watch('replicaIndex')\n async internalIndexSwitch() {\n if (\n !this.replicaIndex ||\n !this.indexResults ||\n this.indexResults.index === this.replicaIndex\n )\n return;\n this.indexResults.index = this.replicaIndex;\n this.algoliaIndex = this.algoliaClient.initIndex(this.indexResults.index);\n this.resetPage();\n this.algoliaSearch(SearchChangeEvent.Replica);\n }\n\n @Watch('resultsPage')\n pageChange() {\n this.onPageChange();\n }\n\n @Watch('searchIndexName')\n searchIndexNameChange() {\n if (\n !this.searchIndexName ||\n !this.searchIndexName.length ||\n (this.searchIndex && this.searchIndex.index === this.searchIndexName)\n )\n return;\n this.searchIndex = { index: this.searchIndexName };\n }\n\n @Watch('apiKey')\n @Watch('appId')\n initAlgoliaClient() {\n if (!this.appId || !this.apiKey) return;\n this.algoliaClient = algoliasearch(this.appId, this.apiKey);\n }\n\n @Watch('searchIndex')\n initAlgoliaIndex() {\n if (!this.algoliaClient || !this.searchIndex) return;\n if (this.searchIndex.index) {\n if (!this.searchIndex.hitsPerPage) this.searchIndex.hitsPerPage = 100;\n if (this.replicaIndex) this.searchIndex.index = this.replicaIndex;\n this.searchIndexName = this.searchIndex.index;\n this.algoliaIndex = this.algoliaClient.initIndex(this.searchIndex.index);\n this.searchChange();\n }\n }\n\n @Watch('showResults')\n showResultsChange() {\n if (!this.resultsDiv || !this.defaultDiv) return;\n\n if (this.showResults) {\n this.resultsDiv.style.width = this.host.scrollWidth + 'px';\n this.resultsDiv.style.minHeight = this.host.scrollHeight + 'px';\n\n writeTask(() => {\n this.resultsDiv.addEventListener('transitionend', this.onResultDisplay);\n this.resultsDiv.style.display = 'block';\n setTimeout(() => this.resultsDiv.classList.add('show'), 50);\n });\n } else {\n writeTask(() => {\n this.resultsDiv.classList.remove('shown');\n this.defaultDiv.style.display = 'block';\n setTimeout(() => {\n this.resultsDiv.addEventListener(\n 'transitionend',\n this.onResultDisplay\n );\n this.resultsDiv.classList.remove('show');\n\n if (!!this.slottedInput)\n this.slottedInput.focus({ preventScroll: true });\n else this.defaultDiv.focus({ preventScroll: true });\n }, 50);\n });\n }\n }\n\n @Watch('filters')\n handleFilterpropChange() {\n this.algoliaSearch(SearchChangeEvent.Init);\n }\n\n // Internal methods\n\n private fixDomain(results: AlgoliaMultiResult) {\n if (!this.searchIndex || !this.searchIndex.domain) return results;\n results.hits.map((hit) => {\n if (hit.url && !hit.url.match(/^http/))\n hit.url = location.protocol + '//' + this.searchIndex.domain + hit.url;\n });\n return results;\n }\n\n // Takes all current filters (dynamic and static)\n // and merges common filters' values togther\n private makeAppliedFilters = (): AppliedFilter[] => {\n const appliedFtrs: AppliedFilter[] = [];\n\n const makeAppliedFilter = (facetFilters: {\n [prop: string]: FacetFilter;\n }) => {\n Object.values(facetFilters).forEach((filter) => {\n if (filter.value && filter.value.length) {\n const found = appliedFtrs.find(\n (appFilter) => appFilter.name === filter.facetName\n );\n if (!found)\n appliedFtrs.push({\n name: filter.facetName,\n values: [...filter.value],\n });\n else found.values = [...found.values, ...filter.value];\n }\n });\n };\n makeAppliedFilter(this.dynFacetFilters);\n makeAppliedFilter(this.staticFacetFilters);\n\n if (appliedFtrs.length) return appliedFtrs;\n return null;\n };\n\n // Queue up a search\n private algoliaSearch = async (eventType: SearchChangeEvent) => {\n return this.promiseQueue.enqueue(() => this.queueSearch(eventType));\n };\n\n // Do a search\n private queueSearch = async (eventType: SearchChangeEvent) => {\n if (\n !this.algoliaIndex ||\n !this.query ||\n !this.searchIndex ||\n !this.searchIndex.index\n )\n return;\n\n this.nanoBeforeQuery.emit(this.indexResults);\n\n // clear all facet filters on init (new query)\n if (SearchChangeEvent.Init === eventType) this.clearAllFacetFilters();\n\n const searchParams: any = {\n filters: this.algoliaFilterStr(),\n page: this.indexResults ? this.indexResults.currentPage : 0,\n };\n\n if (this.searchIndex.filters)\n searchParams.facets = this.searchIndex.filters;\n if (this.searchIndex.hitsPerPage)\n searchParams.hitsPerPage = this.searchIndex.hitsPerPage;\n\n let result = (await this.algoliaIndex.search(\n this.query,\n searchParams\n )) as AlgoliaMultiResult;\n result = this.fixDomain(result);\n\n // set event type - this informs children components why things changed\n this.changeEvent = eventType;\n\n // Setup initial meta on new queries. Some of it should not change on filter / pagination\n if (eventType === SearchChangeEvent.Init || !this.indexResults) {\n this.indexResults = {\n currentPage: 0,\n totalHits: result.nbHits,\n hitsPerPage: null,\n origFilters: result.facets,\n query: this.query,\n domain: this.searchIndex.domain || null,\n totalHitsWithFilters: 0,\n results: [],\n totalPages: 0,\n appliedFilters: this.makeAppliedFilters(),\n indexName: this.searchIndex.name || null,\n index: this.searchIndex.index,\n };\n }\n\n this.indexResults.dynFilters = result.facets;\n this.indexResults.results = result.hits as AlgoliaResultHit[];\n this.indexResults.totalHitsWithFilters = result.nbHits;\n this.indexResults.currentPage = result.page;\n this.indexResults.totalPages = result.nbPages;\n this.indexResults.hitsPerPage = result.hitsPerPage;\n this.indexResults.query = result.query;\n // console.log('I GOT NEW RESULTS', eventType, this.query, this.algoliaFilterStr(), this.indexResults.results.length, this.indexResults.currentPage )\n\n if (\n this.changeEvent !== SearchChangeEvent.Page &&\n this.changeEvent !== SearchChangeEvent.Replica\n ) {\n this.facets = result.facets;\n }\n this.nanoAfterQuery.emit(this.indexResults);\n\n // current hits and page will cause re-renders in children components.\n // Wait a tick before firing otherwise events can fire in the wrong order\n return new Promise((resolve) => {\n setTimeout(() => resolve('tpl updated'), 20);\n }).then((_) => {\n this.currentHits = this.indexResults.results;\n this.resultsPage = this.indexResults.currentPage;\n });\n };\n\n private resetPage() {\n if (!this.indexResults) return;\n this.indexResults.currentPage = 0;\n }\n\n private clearAllFacetFilters() {\n Object.values(this._dynFacetFilters).forEach((filter) => {\n filter.element.value = '';\n });\n this._dynFacetFilters = {};\n }\n\n private algoliaFilterStr() {\n // groups applied facet filters (from algolia-filter components)\n // with their applied, 'internal' operators (and, or, not)\n\n const facetFilterObj: { [prop: string]: FacetFilterQueryBlock } = {};\n\n const groupFilters = (facetFilters: { [prop: string]: FacetFilter }) => {\n let filter: FilterChangeEventDetail;\n let filterOp: Array<string>;\n\n Object.keys(facetFilters).forEach((filterId) => {\n filter = facetFilters[filterId];\n facetFilterObj[filterId] = facetFilterObj[filterId] || {\n name: filter.facetName,\n or: [],\n and: [],\n not: [],\n };\n\n filterOp = facetFilterObj[filterId][filter.operator];\n if (filter.value && filter.value.length) {\n facetFilterObj[filterId][filter.operator] = [\n ...filterOp,\n ...filter.value,\n ];\n }\n });\n };\n\n groupFilters(this.dynFacetFilters);\n groupFilters(this.staticFacetFilters);\n\n const formatVal = (name: string, val: string) => {\n if (val.indexOf(' ') > -1) return name + ':\"' + val + '\"';\n else return name + ':' + val;\n };\n let filterStrParts: Array<string> = [];\n let operatorGrp: FacetFilterQueryBlock;\n let filterName: string;\n // let processedFilters: string[] = [];\n\n // joins all applied facet filter operator groups with the set 'outer'\n // operator into an algolia filter query string\n Object.values(facetFilterObj).forEach(function (filter) {\n Object.keys(filter)\n .filter((filterProp) => filterProp.match(/(or|and|not)/))\n .forEach((operator) => {\n operatorGrp = filter;\n filterName = filter.name;\n\n if (operator === 'or' || operator === 'and') {\n if (operatorGrp[operator].length) {\n filterStrParts.push(\n '( \\\n ' +\n operatorGrp[operator]\n .map((val) => {\n if (val.length) return formatVal(filterName, val);\n })\n .join(' ' + operator.toLocaleUpperCase() + ' ') +\n ' \\\n )'\n );\n }\n } else {\n if (operatorGrp.not.length) {\n filterStrParts.push(\n '( \\\n ' +\n operatorGrp[operator]\n .map((val) => {\n if (val.length)\n return 'NOT ' + formatVal(filterName, val);\n })\n .join(' AND ') +\n ' \\\n )'\n );\n }\n }\n });\n });\n\n // add in any static applied filters from filters prop\n filterStrParts = [...this.filters, ...filterStrParts];\n // console.log('filterStr:', filterStrParts.join(' ' + this.operator.toLocaleUpperCase() + ' '))\n return filterStrParts.join(' ' + this.operator.toLocaleUpperCase() + ' ');\n }\n\n @Listen('nanoChange', { target: 'body' })\n @Listen('change', { target: 'body' })\n handleInputChange(ev: CustomEvent | (Event & { target: HTMLElement })) {\n if (ev.target !== this.inputField) return;\n this.query = this.inputField.value;\n }\n\n private handleSearchReset = () => {\n this.showResults = false;\n this.indexResults = null;\n };\n\n private onResultDisplay = () => {\n writeTask(() => {\n this.resultsDiv.removeEventListener(\n 'transitionend',\n this.onResultDisplay\n );\n if (!this.showResults) this.resultsDiv.style.display = 'none';\n else {\n this.defaultDiv.style.display = 'none';\n this.resultsDiv.classList.add('shown');\n this.resultsDiv.style.minHeight = '';\n this.resultsDiv.style.width = '';\n }\n });\n };\n\n private async updateContent() {\n return this.promiseQueue.enqueue(() => this.updateContentQueue());\n }\n\n private async updateContentQueue() {\n const outputTo = this.outputSlot || this.resultsDiv;\n\n if (!outputTo || !this.tpl) return 'no tpl';\n\n const tmpCont = document.createElement('div');\n tmpCont.innerHTML = this.tpl;\n\n const algoliaEles: Element[] = [];\n this.placedAlgoliaEles = [];\n\n // take out children algolia elements 'cos they have their own templates\n // don't want to swap in their templates\n Array.from(\n tmpCont.querySelectorAll(\n 'nano-algolia, nano-algolia-filter, nano-algolia-results'\n )\n ).forEach((el, i) => {\n const placeholder = document.createElement('div');\n placeholder.dataset.placeholderId = i.toString();\n placeholder.classList.add('nano-ele-placeholder');\n algoliaEles.push(el);\n el.parentNode.replaceChild(placeholder, el);\n });\n\n // swap in template content\n // (all this nonsense htmlencodes any < or >)\n\n outputTo.innerHTML = this.tplRenderFn(\n tmpCont.innerHTML\n .replace(/>/gm, '>')\n .replace(/</gm, '<')\n .replace(/&/gm, '&'),\n this.indexResults\n );\n\n // put back in algolia elements\n Array.from(outputTo.querySelectorAll('div.nano-ele-placeholder')).forEach(\n (el: HTMLDivElement) => {\n el.parentNode.replaceChild(\n algoliaEles[parseInt(el.dataset.placeholderId)],\n el\n );\n this.placedAlgoliaEles.push(\n algoliaEles[parseInt(el.dataset.placeholderId)]\n );\n }\n );\n\n if (!this.placedAlgoliaEles.length) return Promise.resolve('algolia setup');\n\n // wait for all children algolia elements to resolve before calling 'done'\n return new Promise((resolve) => {\n const childrenResolver = (ev: CustomEvent) => {\n this.placedAlgoliaEles = this.placedAlgoliaEles.filter(\n (ele) => ele !== (ev.detail as HTMLElement)\n );\n if (!this.placedAlgoliaEles.length) {\n setTimeout(() => resolve('tpl updated'), 500);\n outputTo.removeEventListener('nanoTplUpdated', childrenResolver);\n }\n };\n outputTo.addEventListener('nanoTplUpdated', childrenResolver);\n });\n }\n\n // Stencil hooks\n\n componentWillLoad() {\n readTask((_) => {\n this.tplSlot = getDirectChildren(this.host, '[slot=\"template\"]')[0];\n this.outputSlot = getDirectChildren(this.host, '[slot=\"output\"]')[0];\n this.slottedInput = getDirectChildren(\n this.host,\n '[slot=\"search-input\"]'\n )[0];\n this.hasLoadSlot = !!getDirectChildren(this.host, '[slot=\"loader\"]')[0];\n if (!!this.tplSlot)\n this.tpl = this.tplSlot.innerHTML || this.tplSlot.innerText;\n\n // get input field to listen to\n if (\n this.slottedInput &&\n (this.slottedInput.tagName.toLocaleLowerCase() === 'nano-input' ||\n this.slottedInput instanceof HTMLInputElement)\n ) {\n this.inputField = this.slottedInput as HTMLNanoInputElement;\n } else if (this.slottedInput) {\n this.inputField = this.slottedInput.querySelector(\n 'nano-input, input:not([type=\"radio\"]):not([type=\"checkbox\"])'\n );\n } else this.handleListenToChange();\n\n writeTask((_) => {\n if (this.showResults && this.tpl) this.searchChange();\n });\n });\n\n this.searchIndexNameChange();\n this.initAlgoliaClient();\n this.initAlgoliaIndex();\n\n // Create wormwhole shared 'universe' (https://github.com/mihar-22/stencil-wormhole)\n Universe.create(this, this.wormholeState);\n\n if (this.storeId) {\n ComponentStore.init(\n this,\n ['query', 'replicaIndex'],\n this.storeMethod,\n this.storeId\n );\n ComponentStore.init(\n this,\n ['apiKey', 'appId', 'searchIndex'],\n 'session',\n this.storeId + '_api'\n );\n }\n this.internalIndexSwitch();\n }\n\n connectedCallback() {\n this.searchChange = debounce(this.searchChange, 300);\n this.browseIndexChange();\n\n if (!Build.isBrowser) return;\n this.host.dispatchEvent(\n new CustomEvent('nanoDidLoad', {\n detail: this.host,\n })\n );\n }\n\n render() {\n const wormholeState = {\n indexResults: this.indexResults,\n results: this.currentHits,\n filterChanged: this.filterChanged,\n tplRenderFn: this.tplRenderFn,\n resultsPage: this.resultsPage,\n changeEvent: this.changeEvent,\n facets: this.facets,\n algoliaIndex: this.algoliaIndex,\n searchIndex: this.searchIndex,\n globalStoreMethod: this.storeMethod,\n isLoading: this.isLoading,\n };\n return (\n <Host\n class={{\n 'show-results': this.showResults,\n 'is-loading': this.isLoading,\n }}\n aria-busy={this.isLoading}\n >\n {this.hasLoadSlot && (\n <div hidden={!this.isLoading}>\n <slot name=\"loader\" />\n </div>\n )}\n {!this.hasLoadSlot && (\n <div\n class={{\n loader: true,\n loading: this.isLoading,\n }}\n >\n <nano-spinner overlay={true} type=\"circle\"></nano-spinner>\n </div>\n )}\n\n <Universe.Provider state={wormholeState}>\n <slot name=\"search-input\"></slot>\n <div class=\"results-container\" aria-live=\"polite\">\n <div ref={(div) => (this.resultsDiv = div)} class=\"results\">\n <slot name=\"output\" />\n </div>\n </div>\n </Universe.Provider>\n\n <div\n ref={(div) => (this.defaultDiv = div)}\n class=\"default\"\n tabindex=\"-1\"\n >\n <slot />\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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"}
|
@@ -0,0 +1,5 @@
|
|
1
|
+
/*!
|
2
|
+
* Web Components for Nanopore digital Web Apps
|
3
|
+
*/
|
4
|
+
import{r as e,c as t,h as n,a,g as s}from"./p-d6a04b3a.js";const l=':host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{display:block;flex:1 1 100%}.main-search{display:flex;background:white;font-size:14px;min-height:calc(100vh - 63px);justify-content:space-between}.main-search__wrap{display:contents;height:100%}.main-search ul{margin:0;padding:0;list-style:none}.main-search li{margin:0;padding:0}.main-search button:not(.result__tags-tag){-webkit-appearance:none;appearance:none;border:none;background:none;position:relative;inset-block-start:-2px}.main-search .icon-button{color:inherit;align-self:normal;padding:9px 7px;cursor:pointer;display:flex;align-items:center}.main-search__topbar{display:flex;align-items:center;flex-wrap:wrap;-webkit-margin-after:1em;margin-block-end:1em}.main-search__topbar::after{content:"";width:calc(100% - 30px);inset-inline-start:30px;position:relative;-webkit-border-after:1px solid #e5eef1;border-block-end:1px solid #e5eef1;-webkit-padding-before:0.9em;padding-block-start:0.9em}.main-search__applied-filters{border:solid 1px #e4e6e8;text-transform:uppercase;border-radius:3px;font-weight:bold;display:flex;align-items:center;line-height:0.9;padding:5px 5px 0;letter-spacing:2px;flex-wrap:wrap;-webkit-margin-after:0.5rem;margin-block-end:0.5rem}.main-search__applied-filters span{display:flex;align-items:center}:host(.small) .main-search__applied-filters{display:none}.main-search__applied-nofilter{margin-inline:0 5px;margin-block:0 3px;padding-inline:7px;padding-block:10px;font-size:12px;color:rgba(69, 85, 86, 0.85)}.main-search__applied-filter{padding-inline:8px 2px;padding-block:5px 3px;margin-inline:0 5px;margin-block:0 5px;color:#455556;font-size:11px;border-radius:2px;border:solid 1px rgba(0, 132, 169, 0.5);background-color:rgba(0, 132, 169, 0.2);line-height:1}.main-search__applied-filter .icon-button{padding-inline:10px 4px;padding-block:2px 1px}.main-search__applied-filter .icon-button nano-icon{pointer-events:none}.main-search .topbar__bkbtn{position:relative;inset-inline-start:-7px}:host(.small) .main-search .topbar__query{display:none}.main-search .topbar__filtering{display:flex;align-items:center;margin-block:0;margin-inline:1em 0;flex:1}.main-search .topbar__order{min-width:175px;max-width:200px;-webkit-margin-start:auto;margin-inline-start:auto}:host(.small) .main-search .topbar__order{max-width:300px}.main-search .topbar nano-select{opacity:1;transition:0.1s ease opacity}.main-search .topbar nano-select:not(.hydrated){opacity:0}.main-search .topbar__show-filters{-webkit-margin-start:0.5em;margin-inline-start:0.5em;text-transform:uppercase;display:none;flex-direction:column;align-items:center}.main-search .topbar__show-filters nano-icon{font-size:20px}:host(.small) .main-search .topbar__show-filters{display:flex}.main-search .topbar__filter-count{width:12px;height:12px;box-shadow:inset 0 3px 4px 0 rgba(0, 0, 0, 0.2);border:solid 1px #005c76;background-color:#005c76;color:white;font-size:7px;border-radius:50%;display:flex;align-items:center;justify-content:center;line-height:1;-webkit-margin-after:3px;margin-block-end:3px}.main-search__results{font-size:14px;padding:1em 40px;color:rgba(69, 85, 86, 0.85);width:70%;height:100%}@media (max-width: 576px){.main-search__results{padding:1em 20px}}:host(.small) .main-search__results{width:100%}.main-search__filters{outline:none;padding-inline:0 40px;padding-block:1.8em 1em;flex:1 1 30%;box-sizing:border-box}@media (max-width: 576px){.main-search__filters{-webkit-padding-end:20px;padding-inline-end:20px}}:host(:not(.small)) .main-search__filters{max-width:350px;min-width:220px}.filters{color:#455556;background:white;font-size:14px}:host(.small) .filters{position:fixed;width:0;height:0;z-index:10;inset-block-start:0;inset-inline-end:0;transition:all 0s ease 0.5s;background:none}:host(.small) .filters.show{height:100vh;width:100vw;transition:all 0s ease 0s}:host(.small) .filters.show::after{opacity:1}:host(.small) .filters::after{content:"";background:rgba(0, 0, 0, 0.5);position:absolute;inset:0;z-index:-1;opacity:0;transition:0.1s ease opacity}.filters__close-filters{display:none !important;font-size:1.4em}:host(.small) .filters__close-filters{display:inline-block !important;margin-inline:auto 0;margin-block:0}.filters__old-posts{-webkit-margin-start:1rem;margin-inline-start:1rem}:host(.small) .filters-wrap{position:absolute;inset-block-start:0;inset-inline-end:0;background:#f7f6f6;transform:translateX(100%);width:300px;min-width:200px;max-width:80vw;transition:transform 0.3s ease;padding:1em;color:black;overflow:auto;height:100vh}:host(.small) .filters.show .filters-wrap{transform:translateX(0%);box-shadow:-3px -3px 7px rgba(0, 0, 0, 0.1)}.filters ul{margin:0;padding:0;list-style:none}.filters li{margin:0;padding:0}.filters nano-details{--padding:0.8em;margin:0.8em 0}.filters nano-details strong[slot]{display:block;-webkit-padding-start:calc(20px - 0.8em);padding-inline-start:calc(20px - 0.8em)}.filters nano-details nano-icon[slot=icon-end]{-webkit-padding-start:calc(20px - 0.8em);padding-inline-start:calc(20px - 0.8em);-webkit-padding-end:calc(20px - 0.8em);padding-inline-end:calc(20px - 0.8em)}.filters li:last-child .filter-label{-webkit-margin-after:0;margin-block-end:0}.filters .filter-label{display:flex;align-items:center;position:relative;margin:0.5em 0;line-height:1.4;z-index:0}.filters .filter-label::before{margin-inline:0 1em;margin-block:0;content:"";border:1px solid #007495;background:#fff;border-radius:3px;height:1em;width:1em;min-width:1em;min-height:1em;display:inline-block}.filters .filter-label::after{background-image:url("data:image/svg+xml;charset=utf-8,<svg%20xmlns=\'http://www.w3.org/2000/svg\'%20viewBox=\'0%200%20512%20512\'><path%20fill=\'%23ffffff\'%20d=\'M173.898%20439.404l-166.4-166.4c-9.997-9.997-9.997-26.206%200-36.204l36.203-36.204c9.997-9.998%2026.207-9.998%2036.204%200L192%20312.69%20432.095%2072.596c9.997-9.997%2026.207-9.997%2036.204%200l36.203%2036.204c9.997%209.997%209.997%2026.206%200%2036.204l-294.4%20294.401c-9.998%209.997-26.207%209.997-36.204-.001z\'/></svg>");content:"";height:0.7em;width:0.7em;position:absolute;inset-inline-start:2px;inset-block-start:50%;transform:translateY(-50%);z-index:1;display:block;background-size:100%;background-position:center center;background-repeat:no-repeat}.filters .filter-cb{clip:rect(1px, 1px, 1px, 1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);block-size:1px;inline-size:1px;margin:-1px;overflow:hidden;padding:0;position:absolute}.filters .filter-cb:checked+.filter-label::before{background:#245a6f}.filters .filter-cb:focus+.filter-label::before{box-shadow:0 0 0 1px rgba(0, 0, 0, 0.7)}.filters-header{display:flex;align-items:center;-webkit-border-after:1px solid #90c6e7;border-block-end:1px solid #90c6e7;-webkit-padding-after:0.5rem;padding-block-end:0.5rem;-webkit-margin-after:0.5rem;margin-block-end:0.5rem}.filters-reset{color:#007495;font-size:12px;text-decoration:underline;margin-inline:auto 0;margin-block:0}:host(.small) .filters-reset{margin:0}.filters-title{margin:0;text-transform:uppercase;color:rgba(69, 85, 86, 0.85);font-weight:bold;font-size:14px}:host(.small) .filters-title{display:none}.result{text-decoration:none;display:flex;flex-flow:row wrap;-webkit-padding-after:14px;padding-block-end:14px;-webkit-border-after:1px solid #90c6e7;border-block-end:1px solid #90c6e7}.result *{word-wrap:break-word;word-break:break-word}.result__title{margin:1em 0 0.5em;width:70%;display:flex}.result__title a{color:#0084a9;font-size:14px;line-height:1.43;text-decoration:none;font-weight:600}.result__title nano-icon{margin-inline:0 0.5em;margin-block:0;min-width:20px;min-height:20px;opacity:0.8}@media (max-width: 992px){.result__title{width:100%}}.result__body{color:#455556;font-size:13px;width:70%;text-decoration:none}@media (max-width: 992px){.result__body{width:100%}}.result__pdf{display:inline-block;-webkit-margin-start:0.5rem;margin-inline-start:0.5rem;color:#b5aea7}.result__meta{display:flex;flex-flow:row wrap;color:#455556;font-size:11px;line-height:13px;width:100%;align-items:center}.result__meta>*{-webkit-margin-before:0.5rem;margin-block-start:0.5rem}.result__meta>*:not(:last-child){-webkit-padding-end:0;padding-inline-end:0}.result__meta>*:not(:last-child)::after{content:"";height:1rem;width:1px;background:#90c6e7;display:inline-block;-webkit-margin-start:0.7rem;margin-inline-start:0.7rem;-webkit-margin-end:0.7rem;margin-inline-end:0.7rem}@media (max-width: 576px){.result__meta>*:not(:last-child)::after{display:none}}@media (max-width: 576px){.result__meta{flex-flow:column;align-items:flex-start}}.result__tags{display:flex;flex-flow:row wrap}@media (max-width: 576px){.result__tags{-webkit-padding-start:0;padding-inline-start:0}}.result__tags-tag{color:#455556;display:inline-block;font-size:0.4375rem;letter-spacing:1.4px;background:#fff;border-radius:2px;text-transform:uppercase;padding:0 4px 1px 5px;font-weight:600;margin:3px 0.25rem 0.25rem 0;border:1px solid #b5aea7;white-space:nowrap;line-height:13px}.result__type{font-weight:600;text-transform:capitalize;white-space:nowrap;display:flex;align-items:center}.result__date{display:flex;align-items:center;color:#455556}.result__source{color:#455556;-webkit-padding-end:0.75rem;padding-inline-end:0.75rem}.result__authors{font-size:12px;color:#455556;-webkit-margin-after:0.25rem;margin-block-end:0.25rem;text-decoration:none;width:70%}.result__buttons{width:70%;-webkit-margin-after:0.5rem;margin-block-end:0.5rem}.result__buttons-button{background-color:#007495;color:#fff;padding:5px 8px 1px;border-radius:4px;display:inline-block;font-size:11px;text-decoration:none;border:none}.result__promo{width:70%;-webkit-margin-after:0.5rem;margin-block-end:0.5rem;text-decoration:none;color:#455556}.result__promo-box{width:300px;background-color:#e3eef1;padding:12px 12px 8px 4px;display:flex;flex-flow:row nowrap;-webkit-margin-before:1rem;margin-block-start:1rem}.result__promo-bigdate{flex:0 1 60px;text-align:center;font-weight:600;color:#007495;text-transform:uppercase;line-height:1.25;letter-spacing:1.5px}@media (max-width: 992px){.result__promo-bigdate{width:100%}}.result__promo-bigdate span{color:#455556;display:block}.result__promo-bigdate~div{-webkit-padding-start:1rem;padding-inline-start:1rem;-webkit-border-start:1px solid #c5dbe1;border-inline-start:1px solid #c5dbe1}.result__promo-date{font-size:12px}.result__promo-venue{font-size:12px}.result__promo nano-icon{color:#007495;position:relative;inset-block-start:1px;-webkit-padding-end:2px;padding-inline-end:2px}.result__image{display:block;background-size:cover;background-repeat:no-repeat;background-position:center;border-radius:4px;position:relative;width:100%;height:150px;-webkit-margin-after:0.5rem;margin-block-end:0.5rem}@media (min-width: 576px){.result__image{width:142px;height:80px}}.result__image nano-icon{position:absolute;inset-block-start:calc(50% - 0.75rem);inset-inline-start:calc(50% - 0.75rem);font-size:1.5rem;color:#0084a9;--primary-color:#fff;--secondary-color:#0084a9;--primary-opacity:1}@media (max-width: 576px){.result__image nano-icon{font-size:3rem;inset-block-start:calc(50% - 1.5rem);inset-inline-start:calc(50% - 1.5rem)}}.result__video-body{width:70%;text-decoration:none;display:flex;flex-flow:row wrap}@media (max-width: 992px){.result__video-body{width:100%}}@media (max-width: 576px){.result__video-body{flex-flow:column}}.result__video-body .result__body{-webkit-padding-start:1rem;padding-inline-start:1rem;display:flex;flex-direction:column;-webkit-margin-after:0;margin-block-end:0;flex:1}@media (max-width: 576px){.result__video-body .result__body{-webkit-padding-start:0;padding-inline-start:0}}.result__video-body .result__body p{display:inline;margin:0}.result__video-body .result__body u,.result__video-body .result__body li,.result__video-body .result__body a{text-decoration:none}.result__video-body .result__body .result__meta{-webkit-margin-before:0.5rem;margin-block-start:0.5rem}.result__video-body .result__body .result__description{flex:1 0 auto}.search-empty{padding:3rem 0;text-align:center;-webkit-border-before:1px solid #e5eef1;border-block-start:1px solid #e5eef1}.search-empty h2{color:#455556;font-size:1.125rem;-webkit-margin-after:0.5rem;margin-block-end:0.5rem}.search-empty-icon{font-size:7rem;--icon-color:#e4e6e8;-webkit-margin-after:2rem;margin-block-end:2rem}.search__highlight{background:#fbffbf;font-style:normal}';const i="created > "+Math.floor((Date.now()-631152e5)/1e3);const r=class{constructor(n){e(this,n);this.nanoSearchGoBack=t(this,"nanoSearchGoBack",7);this.tagClick=e=>{e.preventDefault();let t=e.target.dataset.value;t=t==="publication"?"publications":t;t=t.toLowerCase();const n=this.algoliaEle.querySelector('nano-algolia-filter[filter-name="tags"]');if(n.value.indexOf(t)===-1){n.value=n.value?[...n.value,t]:[t]}};this.algoliaEle=undefined;this.currentWidth=undefined;this.apiKey=undefined;this.appId=undefined;this.index=undefined}handleAlgoliaCredsChange(){if(!this.apiKey||!this.appId||!this.algoliaEle)return;this.algoliaEle.apiKey=this.apiKey;this.algoliaEle.appId=this.appId}handleAlgoliaIndexChange(){if(!this.index||!this.algoliaEle)return;this.algoliaEle.searchIndex=this.index}handleGlobalNavReset(e){if(e.target.tagName!=="NANO-GLOBAL-NAV")return;this.algoliaResultsEle=null;this.goback()}handleGlobalNavSearch(e){if(e.target.tagName!=="NANO-GLOBAL-NAV")return;const{detail:{meta:t,client:n}}=e;this.apiKey=n.apiKey;this.appId=n.appId;this.index={name:t.indexTitle,index:t.index,domain:t.domain,filters:t.filters};this.algoliaEle.query=t.query}handleReorder(e){if(e.composedPath().find((e=>e.classList&&e.classList.contains("indexchange")))&&!!this.algoliaResultsEle){this.changeOrder(e)}}attachListeners(e){if(!e.composedPath().find((e=>e.id&&e.id==="main-search")))return;this.algoliaResultsEle=this.algoliaEle.querySelector("#main-search-results");this.attachResultListeners();this.algoliaEle.querySelectorAll(".filters-reset").forEach((e=>{e.addEventListener("click",(()=>{this.removeAllFilters()}))}));this.algoliaEle.querySelectorAll(".close-filters").forEach((e=>{e.addEventListener("click",(()=>{this.closefilters()}))}));const t=this.algoliaEle.querySelector(".filters-wrap");if(t){t.addEventListener("click",(e=>{e.stopPropagation()}))}this.filtersDiv=this.algoliaEle.querySelector("#main-search-filters");const n=this.algoliaEle.querySelector(".old-posts");if(n){n.addEventListener("change",(e=>{this.toggleOldResults(e.target.checked)}))}}attachResultListeners(e){if(e&&e.composedPath().find((e=>e===this.algoliaEle))){this.algoliaResultsEle=this.algoliaEle.querySelector("nano-algolia-results")}if(!this.algoliaResultsEle)return;const t=this.algoliaResultsEle;t.querySelectorAll(".remove-filter").forEach((e=>{e.addEventListener("click",(e=>{const t=e.target;this.removeFilter(t.dataset.filter,t.dataset.filterVal)}))}));t.querySelectorAll(".back-btn").forEach((e=>{e.addEventListener("click",(()=>{this.goback()}))}));t.querySelectorAll(".topbar__show-filters").forEach((e=>{this.openFilterBtn=e;e.addEventListener("click",(()=>{this.filtersDiv.tabIndex=-1;this.filtersDiv.classList.add("show");this.filtersDiv.setAttribute("aria-expanded","true");document.body.style.overflow="hidden";setTimeout((()=>this.filtersDiv.focus()),20)}))}));const n=Array.from(t.querySelectorAll(".result__tags-tag"));n.forEach((e=>{e.removeEventListener("click",this.tagClick);e.addEventListener("click",this.tagClick)}))}changeOrder(e){this.algoliaEle.replicaIndex=e.detail.value}goback(){const e=this.nanoSearchGoBack.emit();if(e.defaultPrevented)return;this.removeAllFilters();this.algoliaEle.query="";this.algoliaEle.showResults=false}removeFilter(e,t){this.algoliaEle.removeFilters(e,t)}removeAllFilters(){this.algoliaEle.removeFilters()}closefilters(){if(!this.filtersDiv)return;this.filtersDiv.tabIndex=null;this.filtersDiv.classList.remove("show");this.filtersDiv.setAttribute("aria-expanded","false");document.body.style.overflow="";setTimeout((()=>this.openFilterBtn.focus()),20)}toggleOldResults(e){if(e)this.algoliaEle.filters=this.algoliaEle.filters.filter((e=>!e.startsWith("created > ")));else this.algoliaEle.filters=[...this.algoliaEle.filters,i]}componentDidLoad(){this.algoliaEle.filters=[i];if(!window["ResizeObserver"])return;this.ro=new ResizeObserver((e=>{for(const t of e){if(!t.contentRect.width)return;this.currentWidth=t.contentRect.width}}));this.ro.observe(this.el)}render(){return n(a,{class:{small:this.currentWidth<677},dir:this.el.ownerDocument.dir==="rtl"?"rtl":undefined},n("nano-algolia",{"store-id":"searchq","store-method":"url-hash-push",class:"main-search__wrap sc-nano-global-search-results",ref:e=>this.algoliaEle=e,id:"main-search"},n("template",{slot:"template"},`<div class="main-search sc-nano-global-search-results">\n <nano-algolia-results id="main-search-results" class="main-search__results sc-nano-global-search-results" infinite-scroll>\n <script type="text/template" slot="start-template">\n <div class="sc-nano-global-search-results main-search__topbar topbar">\n <button class="sc-nano-global-search-results topbar__bkbtn back-btn icon-button">\n <nano-icon class="sc-nano-global-search-results" name="light/chevron-left" size="small"></nano-icon>\n </button>\n <div>\n <em class="sc-nano-global-search-results topbar__query">'{{ it.query }}' - </em> <strong>{{ it.totalHitsWithFilters }}</strong> Results\n </div>\n\n <div class="sc-nano-global-search-results topbar__filtering">\n {{ @if (it.results.length) }}\n\n {{ @if (it.indexName === 'All') }}\n <nano-select class="sc-nano-global-search-results topbar__order topbar__order--www indexchange" value="{{ it.index }}" hide-label="true" label="Sort order" show-inline-error="false">\n <nano-option value="all_prod_en">Sort by: Most relevant</nano-option>\n <nano-option value="all_prod_en_date_desc">Sort by: Newest</nano-option>\n <nano-option value="all_prod_en_date_asc">Sort by: Oldest</nano-option>\n <nano-option value="all_prod_en_activity_date_desc">Sort by: Recent activity</nano-option>\n </nano-select>\n {{ /if }}\n\n {{ @if (it.indexName === 'www') }}\n <nano-select class="sc-nano-global-search-results topbar__order topbar__order--www indexchange" value="{{ it.index }}" hide-label="true" label="Sort order" show-inline-error="false">\n <nano-option value="cws_english_en">Sort by: Most relevant</nano-option>\n <nano-option value="cws_english_en_date_desc">Sort by: Newest</nano-option>\n <nano-option value="cws_english_en_date_asc">Sort by: Oldest</nano-option>\n </nano-select>\n {{ /if }}\n\n {{ @if (it.indexName === 'Resources') }}\n <nano-select class="sc-nano-global-search-results topbar__order topbar__order--www indexchange" value="{{ it.index }}" hide-label="true" label="Sort order" show-inline-error="false">\n <nano-option value="cws_english_resources_en">Sort by: Most relevant</nano-option>\n <nano-option value="cws_english_resources_en_featured_desc">Sort by: Newest</nano-option>\n <nano-option value="cws_english_resources_en_featured_asc">Sort by: Oldest</nano-option>\n </nano-select>\n {{ /if }}\n\n {{ @if (it.indexName === 'Store') }}\n <nano-select class="sc-nano-global-search-results topbar__order topbar__order--www indexchange" value="{{ it.index }}" hide-label="true" label="Sort order" show-inline-error="false">\n <nano-option value="store_prod">Sort by: Most relevant</nano-option>\n <nano-option value="store_prod_date_desc">Sort by: Newest</nano-option>\n <nano-option value="store_prod_date_asc">Sort by: Oldest</nano-option>\n </nano-select>\n {{ /if }}\n\n {{ @if (it.indexName === 'Community') }}\n <nano-select class="sc-nano-global-search-results topbar__order topbar__order--community indexchange" value="{{ it.index }}" hide-label="true" label="Sort order" show-inline-error="false">\n <nano-option value="community_prod">Sort by: Most relevant</nano-option>\n <nano-option value="community_prod_date_desc">Sort by: Newest</nano-option>\n <nano-option value="community_prod_date_asc">Sort by: Oldest</nano-option>\n <nano-option value="community_prod_activity_date_desc">Sort by: Recent activity</nano-option>\n </nano-select>\n {{ /if }}\n {{ /if }}\n\n <button class="sc-nano-global-search-results topbar__show-filters filters-title" aria-controls="main-search-filters">\n {{ @if (it.appliedFilters && it.appliedFilters.length > 0) }}\n <span class="sc-nano-global-search-results topbar__filter-count">\n {{ (it.appliedFilters.reduce(function(a, b) { return a + (b.values ? b.values.length : 0) }, 0)) }}\n </span>\n {{ /if }}\n <nano-icon class="sc-nano-global-search-results" name="light/filter"></nano-icon>\n </button>\n </div>\n </div>\n\n {{ @if (it.results.length) }}\n <div class="sc-nano-global-search-results main-search__applied-filters">\n {{ @if (it.appliedFilters) }}\n {{ @each(it.appliedFilters) => filterObj }}\n {{ @each(filterObj.values) => filterVal }}\n <span class="sc-nano-global-search-results main-search__applied-filter">\n {{ filterVal | public_name }}\n <button class="sc-nano-global-search-results icon-button remove-filter" data-filter="{{ filterObj.name }}" data-filter-val="{{ filterVal }}">\n <nano-icon class="sc-nano-global-search-results" name="light/times"></nano-icon>\n </button>\n </span>\n {{ /each }}\n {{ /each }}\n {{ #else }}\n <span class="sc-nano-global-search-results main-search__applied-nofilter"> </span>\n {{ /if }}\n </div>\n {{ /if }}\n <\/script>\n\n <script type="text/template" slot="result-template">\n \x3c!-- START NO CONTENT --\x3e\n {{ @if ((!it.results || !it.results.length)) }}\n <div class="search-empty">\n <nano-icon name="light/search" class="search-empty-icon"></nano-icon>\n <h2>No matches found...</h2>\n <p>Please try a different search query.</p>\n </div>\n {{ /if }}\n \x3c!-- END NO CONTENT --\x3e\n {{ @if (it.totalHitsWithFilters > 0) }}\n {{ @each(it.results) => result }}\n {{ contentType = result.content_type ? result.content_type : result.type }}\n <li class="sc-nano-global-search-results">\n <div class="sc-nano-global-search-results result">\n <h4 class="sc-nano-global-search-results result__title" data-icon-set="{{(iconSet = false)}}">\n <a href="{{ result.url | abs_url(it, result) }}">\n {{ result._snippetResult.title.value | safe }}\n {{ @if (contentType === 'technical_document' || contentType === 'literature' || contentType === 'white_paper' || contentType === 'protocol') }}\n <span class="sc-nano-global-search-results result__pdf">PDF</span>\n {{ /if }}\n </a>\n </h4>\n {{ @if (result.authors) }}\n {{ @if (typeof result.authors === 'string') }}\n <a class="sc-nano-global-search-results result__authors" href="{{ result.url | abs_url(it, result) }}">Authors: {{ result.authors | trim_to(50) }}</a>\n {{ #else }}\n <a class="sc-nano-global-search-results result__authors" href="{{ result.url | abs_url(it, result) }}">\n {{ @each(result.authors) => author, index }}\n \x3c!-- {{ @if(index == 0)}} --\x3e\n Authors: {{ author | trim_to(60) }}\n \x3c!-- {{ /if }} --\x3e\n {{ /each }}\n </a>\n {{ /if }}\n {{ /if }}\n {{ @if (contentType === 'video' || contentType === 'lc_lightning_talk' ) }}\n {{ @if (result.name) }}\n <a class="sc-nano-global-search-results result__authors" href="{{ result.url | abs_url(it, result) }}">Speaker: {{ result.name | trim_to(50) }}</a>\n {{ /if }}\n <a class="sc-nano-global-search-results result__video-body" href="{{ result.url | abs_url(it, result) }}">\n {{ @if (result.image) }}\n <div class="sc-nano-global-search-results result__image" style="background-image: url('{{ result.image | abs_url(it, result) }}')">\n <nano-icon class="sc-nano-global-search-results" name="duotone/play-circle"></nano-icon>\n </div>\n {{ /if }}\n <div class="sc-nano-global-search-results result__body">\n <div class="sc-nano-global-search-results result__description">\n {{ @if (result.description) }}\n {{ result._snippetResult.description.value | safe }}\n {{ /if }}\n </div>\n </div>\n <div class="sc-nano-global-search-results result__meta">\n {{ @if (result.type || result.content_type) }}\n <div class="sc-nano-global-search-results result__type">\n {{ @if (contentType === 'lc_lightning_talk') }}\n Presentation\n {{ #else }}\n {{ contentType }}\n {{ /if }}\n </div>\n {{ /if }}\n {{ @if (result.tags) }}\n <div class="sc-nano-global-search-results result__tags">\n {{ @if (typeof result.tags === 'string') }}\n <button data-value="{{ result.tags | lowercase }}" class="sc-nano-global-search-results result__tags-tag">{{ result.tags }}</button>\n {{ #else }}\n {{ @each(result.tags) => tag, index }}\n {{ @if(index < 5)}}\n {{ @if (tag !== "No video" && tag !== "Resources" && tag !== "Video") }}\n <button data-value="{{ tag | lowercase }}" class="sc-nano-global-search-results result__tags-tag">{{ tag }}</button>\n {{ /if }}\n {{ /if }}\n {{ /each }}\n {{ /if }}\n </div>\n {{ /if }}\n {{ @if (result.source) }}\n <div class="sc-nano-global-search-results result__source">Source: {{ result.source }}</div>\n {{ /if }}\n </div>\n </a>\n {{ /if }}\n {{ @if (result.body) }}\n <a class="sc-nano-global-search-results result__body" href="{{ result.url | abs_url(it, result) }}">{{ result._snippetResult.body.value | safe }}</a>\n {{ /if }}\n {{ @if (contentType === 'product' }}\n <div class="sc-nano-global-search-results result__buttons">\n <a class="sc-nano-global-search-results result__buttons-button" href="{{ result.url | abs_url(it, result) }}">View product</a>\n </div>\n {{ /if }}\n {{ @if (contentType === 'event') }}\n <a class="sc-nano-global-search-results result__promo" href="{{ result.url | abs_url(it, result) }}">\n <div class="sc-nano-global-search-results result__promo-box">\n <div class="sc-nano-global-search-results result__promo-bigdate">\n {{ result.start_date | date_long({year: undefined, month: 'short', day: undefined}) }}\n <span>{{ result.start_date | date_long({year: undefined, month: undefined, day: 'numeric'}) }}</span>\n </div>\n <div>\n <div class="sc-nano-global-search-results result__promo-date">\n <nano-icon class="sc-nano-global-search-results" name="light/calendar-alt"></nano-icon>\n {{ @if (result.end_date) }}\n {{ @if (result.end_date !== result.start_date) }}\n {{ result.start_date | date_long({weekday: 'short', day: 'numeric', month: 'short'}) }} - {{ result.end_date | date_long({weekday: 'short', day: 'numeric', year: 'numeric', month: 'short'}) }}\n {{ #else }}\n {{ result.start_date | date_long({weekday: 'short', day: 'numeric', year: 'numeric', month: 'short'}) }}\n {{ /if }}\n {{ #else }}\n {{ @if (result.start_date) }}\n {{ result.start_date | date_long({weekday: 'short', day: 'numeric', year: 'numeric', month: 'short'}) }}\n {{ /if }}\n {{ /if }}\n </div>\n <div class="sc-nano-global-search-results result__promo-venue">\n <nano-icon class="sc-nano-global-search-results" name="light/map-marker-alt"></nano-icon>\n Venue\n </div>\n </div>\n </div>\n </a>\n {{ /if }}\n {{ @if (contentType !== 'lc_lightning_talk' && contentType !== 'video') }}\n <div class="sc-nano-global-search-results result__meta">\n {{ @if (result.type || result.content_type) }}\n <div class="sc-nano-global-search-results result__type">\n {{ @if (contentType === 'news_item') }}\n News\n {{ #elif (contentType === 'static_page' || contentType === 'bespoke') }}\n Page\n {{ #elif (contentType === 'case_study') }}\n Case study\n {{ #elif (contentType === 'lc_poster') }}\n Poster\n {{ #elif (contentType === 'nanopore_live') }}\n Live stream\n {{ #elif (contentType === 'data_release') }}\n Data release\n {{ #elif (contentType === 'research_area') }}\n Research area\n {{ #elif (contentType === 'white_paper') }}\n White paper\n {{ #elif (contentType === 'technical_document') }}\n Technical document\n {{ #elif (contentType === 'info_sheet') }}\n Info sheet\n {{ #elif (contentType === 'lc_home' || contentType === 'lc_venue') }}\n London Calling\n {{ #else }}\n {{ contentType }}\n {{ /if }}\n </div>\n {{ /if }}\n {{ @if (contentType !== 'event') }}\n {{ @if (result.updated) }}\n <div class="sc-nano-global-search-results result__date">{{ result.updated | date_long({year: 'numeric', month: 'short', day: 'numeric'}) }}</div>\n {{ #else }}\n {{ @if (result.created) }}\n <div class="sc-nano-global-search-results result__date">{{ result.created | date_long({year: 'numeric', month: 'short', day: 'numeric'}) }}</div>\n {{ /if }}\n {{ /if }}\n {{ /if }}\n {{ @if (result.tags) }}\n <div class="sc-nano-global-search-results result__tags">\n {{ @if (typeof result.tags === 'string') }}\n {{ @if (result.tags !== "Resources" && result.tags !== "Tools" && result.tags !== "Publications" && result.tags !== "Case studies") }}\n <button data-value="{{ result.tags | lowercase }}" class="sc-nano-global-search-results result__tags-tag">{{ result.tags }}</button>\n {{ /if }}\n {{ #else }}\n {{ @each(result.tags) => tag, index }}\n {{ @if(index < 5)}}\n {{ @if (tag !== "Resources" && tag !== "Tools" && tag !== "Publications" && tag !== "Case studies") }}\n <button data-value="{{ tag | lowercase }}" class="sc-nano-global-search-results result__tags-tag">{{ tag }}</button>\n {{ /if }}\n {{ /if }}\n {{ /each }}\n {{ /if }}\n </div>\n {{ /if }}\n {{ @if (result.source) }}\n <div class="sc-nano-global-search-results result__source">Source: {{ result.source }}</div>\n {{ /if }}\n </div>\n {{ /if }}\n </div>\n </li>\n {{ /each }}\n {{ /if }}\n <\/script>\n\n <div slot="start-output"></div>\n <ul slot="result-output" class="sc-nano-global-search-results"></ul>\n </nano-algolia-results>\n\n {{ @if(Object.keys(it.origFilters).length) }}\n <div class="sc-nano-global-search-results main-search__filters filters close-filters" id="main-search-filters">\n <div class="sc-nano-global-search-results filters-wrap">\n {{ @if(it.totalHits) }}\n <div class="sc-nano-global-search-results filters-header">\n <strong class="sc-nano-global-search-results filters-title">Filters</strong>\n <button class="sc-nano-global-search-results filters-reset">Reset</button>\n <button class="sc-nano-global-search-results filters__close-filters close-filters icon-button" aria-controls="main-search-filters">\n <nano-icon class="sc-nano-global-search-results" name="light/times"></nano-icon>\n </button>\n </div>\n {{ /if }}\n\n <div>\n <input class="sc-nano-global-search-results filter-cb old-posts filters__old-posts" type="checkbox" name="old-posts" id="old-posts" value="nice" />\n <label class="sc-nano-global-search-results filter-label" for="old-posts">\n <span>Include posts older than 2 years</span>\n </label>\n {{ @if(it.origFilters['type']) }}\n <nano-details class="sc-nano-global-search-results" open={true} icon-rotation="180">\n <strong slot="label">Type</strong>\n <nano-icon slot="icon-end" name="light/chevron-down" size="small"></nano-icon>\n <nano-algolia-filter store-id="searchf1" store-method="url-hash-push" filter-name="type">\n <script type="text/template" slot="filter-template">\n <ul class="sc-nano-global-search-results" data-num="{{(x = 0)}}">\n {{ @foreach(it.dyn) => filter, filterVal }}\n <li class="sc-nano-global-search-results" data-num="{{(x++)}}">\n <input class="sc-nano-global-search-results filter-cb" type="checkbox" value="{{ filter }}" id="type-{{ filter }}-{{x}}" />\n <label class="sc-nano-global-search-results filter-label" for="type-{{ filter }}-{{x}}">\n <span>{{ filter | public_name }} (<strong>{{ filterVal }}</strong>)</span>\n </label></li>\n {{ /foreach }}\n </ul>\n <\/script>\n <div slot="output"></div>\n </nano-algolia-filter>\n </nano-details>\n {{ /if }}\n\n {{ @if(it.origFilters['channel']) }}\n <nano-details open={true} icon-rotation="180">\n <strong slot="label">Channels</strong>\n <nano-icon slot="icon-end" name="light/chevron-down" size="small"></nano-icon>\n <nano-algolia-filter store-id="searchf2" store-method="url-hash-push" filter-name="channel">\n <script type="text/template" slot="filter-template">\n <ul class="sc-nano-global-search-results" data-num="{{(x = 0)}}">\n {{ @foreach(it.dyn) => filter, filterVal }}\n <li class="sc-nano-global-search-results" data-num="{{(x++)}}">\n <input class="filter-cb sc-nano-global-search-results" type="checkbox" value="{{ filter }}" id="channel-{{ filter }}-{{x}}" />\n <label class="filter-label sc-nano-global-search-results" for="channel-{{ filter }}-{{x}}">\n <span>{{ filter | public_name }} (<strong>{{ filterVal }}</strong>)</span>\n </label></li>\n {{ /foreach }}\n </ul>\n <\/script>\n <div slot="output"></div>\n </nano-algolia-filter>\n </nano-details>\n {{ /if }}\n\n {{ @if(it.origFilters['authors']) }}\n <nano-details open={true} icon-rotation="180">\n <strong slot="label">Authors</strong>\n <nano-icon slot="icon-end" name="light/chevron-down" size="small"></nano-icon>\n <nano-algolia-filter store-id="searchf3" store-method="url-hash-push" filter-name="authors">\n <script type="text/template" slot="filter-template">\n <ul class="sc-nano-global-search-results" data-num="{{(x = 0)}}">\n {{ @foreach(it.dyn) => filter, filterVal }}\n <li class="sc-nano-global-search-results" data-num="{{(x++)}}">\n <input class="filter-cb sc-nano-global-search-results" type="checkbox" value="{{ filter }}" id="authors-{{ filter }}-{{x}}" />\n <label class="filter-label sc-nano-global-search-results" for="authors-{{ filter }}-{{x}}">\n <span>{{ filter | public_name }} (<strong>{{ filterVal }}</strong>)</span>\n </label></li>\n {{ /foreach }}\n </ul>\n <\/script>\n <div slot="output"></div>\n </nano-algolia-filter>\n </nano-details>\n {{ /if }}\n\n {{ @if(it.origFilters['categories_without_path']) }}\n <nano-details open={true} icon-rotation="180">\n <strong slot="label">Category</strong>\n <nano-icon slot="icon-end" name="light/chevron-down" size="small"></nano-icon>\n <nano-algolia-filter store-id="searchf4" store-method="url-hash-push" filter-name="categories_without_path">\n <script type="text/template" slot="filter-template">\n <ul class="sc-nano-global-search-results" data-num="{{(x = 0)}}">\n {{ @foreach(it.dyn) => filter, filterVal }}\n {{ @if(!filter.match(/publication/)) }}\n <li class="sc-nano-global-search-results" data-num="{{(x++)}}">\n <input class="sc-nano-global-search-results filter-cb" type="checkbox" value="{{ filter }}" id="cwp-{{ filter }}-{{x}}" />\n <label class="sc-nano-global-search-results filter-label" for="cwp-{{ filter }}-{{x}}">\n <span>{{ filter | public_name }} (<strong>{{ filterVal }}</strong>)</span>\n </label></li>\n {{ /if }}\n {{ /foreach }}\n </ul>\n <\/script>\n <div slot="output"></div>\n </nano-algolia-filter>\n </nano-details>\n {{ /if }}\n\n {{ @if(it.origFilters['tags']) }}\n <nano-details open={true} icon-rotation="180">\n <strong slot="label">Tags</strong>\n <nano-icon slot="icon-end" name="light/chevron-down" size="small"></nano-icon>\n <nano-algolia-filter store-id="searchf5" store-method="url-hash-push" filter-name="tags">\n <script type="text/template" slot="filter-template">\n <ul class="sc-nano-global-search-results" data-num="{{(x = 0)}}">\n {{ @foreach(it.dyn) => filter, filterVal }}\n <li class="sc-nano-global-search-results" data-num="{{(x++)}}">\n <input class="filter-cb sc-nano-global-search-results" type="checkbox" value="{{ filter | lowercase }}" id="tags-{{ filter }}-{{x}}" />\n <label class="filter-label sc-nano-global-search-results" for="tags-{{ filter }}-{{x}}">\n <span>{{ filter | public_name }} (<strong>{{ filterVal }}</strong>)</span>\n </label></li>\n {{ /foreach }}\n </ul>\n <\/script>\n <div slot="output"></div>\n </nano-algolia-filter>\n </nano-details>\n {{ /if }}\n </div>\n </div>\n </div>\n {{ /if }}\n </div>`),n("div",{slot:"output"}),n("slot",null)))}get el(){return s(this)}static get watchers(){return{algoliaEle:["handleAlgoliaCredsChange","handleAlgoliaIndexChange"],apiKey:["handleAlgoliaCredsChange"],appId:["handleAlgoliaCredsChange"],index:["handleAlgoliaIndexChange"]}}};r.style=l;export{r as nano_global_search_results};
|
5
|
+
//# sourceMappingURL=p-abd11243.entry.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["globalSearchResultsCss","filterOldPosts","Math","floor","Date","now","GlobalSearchResults","this","tagClick","e","preventDefault","tagVal","target","dataset","value","toLowerCase","filter","algoliaEle","querySelector","indexOf","handleAlgoliaCredsChange","apiKey","appId","handleAlgoliaIndexChange","index","searchIndex","handleGlobalNavReset","tagName","algoliaResultsEle","goback","handleGlobalNavSearch","detail","meta","client","name","indexTitle","domain","filters","query","handleReorder","composedPath","find","ele","classList","contains","changeOrder","attachListeners","id","attachResultListeners","querySelectorAll","forEach","item","addEventListener","removeAllFilters","closefilters","filterWrap","stopPropagation","filtersDiv","oldResults","toggleOldResults","checked","el","resultEle","clickEv","removeFilter","filterVal","openFilterBtn","tabIndex","add","setAttribute","document","body","style","overflow","setTimeout","focus","tags","Array","from","tag","removeEventListener","ev","replicaIndex","goBackEvent","nanoSearchGoBack","emit","defaultPrevented","showResults","facet","removeFilters","remove","show","f","startsWith","componentDidLoad","window","ro","ResizeObserver","entries","entry","contentRect","width","currentWidth","observe","render","h","Host","class","small","dir","ownerDocument","undefined","ref","slot"],"sources":["./src/components/global-search-results/global-search-results.scss?tag=nano-global-search-results&encapsulation=shadow","./src/components/global-search-results/global-search-results.tsx"],"sourcesContent":["@use 'sass:map';\n@use 'sass:list';\n\n@import '../../global/style/utilities/globals';\n@import '../../global/style/nano-theme/colours';\n\n:host {\n display: block;\n flex: 1 1 100%;\n}\n\n.main-search {\n display: flex;\n background: white;\n font-size: 14px;\n min-height: calc(100vh - 63px);\n justify-content: space-between;\n\n &__wrap {\n /* autoprefixer: ignore next */\n display: contents;\n height: 100%;\n }\n\n ul {\n margin: 0;\n padding: 0;\n list-style: none;\n }\n\n li {\n margin: 0;\n padding: 0;\n }\n\n button:not(.result__tags-tag) {\n appearance: none;\n border: none;\n background: none;\n position: relative;\n inset-block-start: -2px;\n }\n\n .icon-button {\n color: inherit;\n align-self: normal;\n padding: 9px 7px;\n cursor: pointer;\n display: flex;\n align-items: center;\n }\n\n &__topbar {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n margin-block-end: 1em;\n\n &::after {\n content: '';\n width: calc(100% - 30px);\n inset-inline-start: 30px;\n position: relative;\n border-block-end: 1px solid #e5eef1;\n padding-block-start: 0.9em;\n }\n }\n\n &__applied-filters {\n border: solid 1px map.get($colors, lightgrey);\n text-transform: uppercase;\n border-radius: 3px;\n font-weight: bold;\n display: flex;\n align-items: center;\n line-height: 0.9;\n padding: 5px 5px 0;\n letter-spacing: 2px;\n flex-wrap: wrap;\n margin-block-end: 0.5rem;\n\n span {\n display: flex;\n align-items: center;\n }\n\n :host(.small) & {\n display: none;\n }\n }\n\n &__applied-nofilter {\n margin-inline: 0 5px;\n margin-block: 0 3px;\n padding-inline: 7px;\n padding-block: 10px;\n font-size: 12px;\n color: rgb(69 85 86 / 85%);\n }\n\n &__applied-filter {\n padding-inline: 8px 2px;\n padding-block: 5px 3px;\n margin-inline: 0 5px;\n margin-block: 0 5px;\n color: map.get($colors, darkgrey);\n font-size: 11px;\n border-radius: 2px;\n border: solid 1px rgb(0 132 169 / 50%);\n background-color: rgb(0 132 169 / 20%);\n line-height: 1;\n\n .icon-button {\n padding-inline: 10px 4px;\n padding-block: 2px 1px;\n\n nano-icon {\n pointer-events: none;\n }\n }\n }\n\n .topbar {\n &__bkbtn {\n position: relative;\n inset-inline-start: -7px;\n }\n\n &__query {\n :host(.small) & {\n display: none;\n }\n }\n\n &__filtering {\n display: flex;\n align-items: center;\n margin-block: 0;\n margin-inline: 1em 0;\n flex: 1;\n }\n\n &__order {\n min-width: 175px;\n max-width: 200px;\n margin-inline-start: auto;\n\n :host(.small) & {\n max-width: 300px;\n }\n }\n\n nano-select {\n opacity: 1;\n transition: 0.1s ease opacity;\n\n &:not(.hydrated) {\n opacity: 0;\n }\n }\n\n &__show-filters {\n margin-inline-start: 0.5em;\n text-transform: uppercase;\n display: none;\n flex-direction: column;\n align-items: center;\n\n nano-icon {\n font-size: 20px;\n }\n\n :host(.small) & {\n display: flex;\n }\n }\n\n &__filter-count {\n width: 12px;\n height: 12px;\n box-shadow: inset 0 3px 4px 0 rgb(0 0 0 / 20%);\n border: solid 1px #005c76;\n background-color: #005c76;\n color: white;\n font-size: 7px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n line-height: 1;\n margin-block-end: 3px;\n }\n }\n\n &__results {\n font-size: 14px;\n padding: 1em 40px;\n color: rgb(69 85 86 / 85%);\n width: 70%;\n height: 100%;\n\n @include media-breakpoint-down('sm') {\n padding: 1em 20px;\n }\n\n :host(.small) & {\n width: 100%;\n }\n }\n\n &__filters {\n outline: none;\n padding-inline: 0 40px;\n padding-block: 1.8em 1em;\n\n @include media-breakpoint-down('sm') {\n padding-inline-end: 20px;\n }\n\n flex: 1 1 30%;\n box-sizing: border-box;\n\n :host(:not(.small)) & {\n max-width: 350px;\n min-width: 220px;\n }\n }\n}\n\n.filters {\n color: map.get($colors, darkgrey);\n background: white;\n font-size: 14px;\n\n :host(.small) & {\n position: fixed;\n width: 0;\n height: 0;\n z-index: 10;\n inset-block-start: 0;\n inset-inline-end: 0;\n transition: all 0s ease 0.5s;\n background: none;\n\n &.show {\n height: 100vh;\n width: 100vw;\n transition: all 0s ease 0s;\n\n &::after {\n opacity: 1;\n }\n }\n\n &::after {\n content: '';\n background: rgb(0 0 0 / 50%);\n position: absolute;\n inset: 0;\n z-index: -1;\n opacity: 0;\n transition: 0.1s ease opacity;\n }\n }\n\n &__close-filters {\n display: none !important;\n font-size: 1.4em;\n\n :host(.small) & {\n display: inline-block !important;\n margin-inline: auto 0;\n margin-block: 0;\n }\n }\n\n &__old-posts {\n margin-inline-start: 1rem;\n }\n\n &-wrap {\n :host(.small) & {\n position: absolute;\n inset-block-start: 0;\n inset-inline-end: 0;\n background: rgb(247 246 246);\n transform: translateX(100%);\n width: 300px;\n min-width: 200px;\n max-width: 80vw;\n transition: transform 0.3s ease;\n padding: 1em;\n color: black;\n overflow: auto;\n height: 100vh;\n }\n }\n\n &.show {\n .filters-wrap {\n :host(.small) & {\n transform: translateX(0%);\n box-shadow: -3px -3px 7px rgb(0 0 0 / 10%);\n }\n }\n }\n\n ul {\n margin: 0;\n padding: 0;\n list-style: none;\n }\n\n li {\n margin: 0;\n padding: 0;\n }\n\n nano-details {\n --padding: 0.8em;\n\n margin: 0.8em 0;\n\n strong[slot] {\n display: block;\n padding-inline-start: calc(20px - 0.8em);\n }\n\n nano-icon[slot='icon-end'] {\n padding-inline-start: calc(20px - 0.8em);\n padding-inline-end: calc(20px - 0.8em);\n }\n }\n\n li:last-child .filter-label {\n margin-block-end: 0;\n }\n\n .filter-label {\n display: flex;\n align-items: center;\n position: relative;\n margin: 0.5em 0;\n line-height: 1.4;\n z-index: 0;\n\n &::before {\n margin-inline: 0 1em;\n margin-block: 0;\n content: '';\n border: 1px solid map.get($colors, blue);\n background: map.get($colors, white);\n border-radius: 3px;\n height: 1em;\n width: 1em;\n min-width: 1em;\n min-height: 1em;\n display: inline-block;\n }\n\n &::after {\n @include svg-background-image(\n \"<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'><path fill='#ffffff' d='M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z'/></svg>\"\n );\n\n content: '';\n height: 0.7em;\n width: 0.7em;\n position: absolute;\n inset-inline-start: 2px;\n inset-block-start: 50%;\n transform: translateY(-50%);\n z-index: 1;\n display: block;\n background-size: 100%;\n background-position: center center;\n background-repeat: no-repeat;\n }\n }\n\n .filter-cb {\n @include visually-hide;\n\n &:checked + .filter-label {\n &::before {\n background: map.get($colors, blue--darker);\n }\n }\n\n &:focus + .filter-label {\n &::before {\n box-shadow: 0 0 0 1px rgb(0 0 0 / 70%);\n }\n }\n }\n\n &-header {\n display: flex;\n align-items: center;\n border-block-end: 1px solid map.get($colors, lightblue);\n padding-block-end: 0.5rem;\n margin-block-end: 0.5rem;\n }\n\n &-reset {\n color: map.get($colors, blue);\n font-size: 12px;\n text-decoration: underline;\n margin-inline: auto 0;\n margin-block: 0;\n\n :host(.small) & {\n margin: 0;\n }\n }\n\n &-title {\n margin: 0;\n text-transform: uppercase;\n color: rgb(69 85 86 / 85%);\n font-weight: bold;\n font-size: 14px;\n\n :host(.small) & {\n display: none;\n }\n }\n}\n\n.result {\n text-decoration: none;\n display: flex;\n flex-flow: row wrap;\n padding-block-end: 14px;\n border-block-end: 1px solid map.get($colors, lightblue);\n\n * {\n word-wrap: break-word;\n word-break: break-word;\n }\n\n &__title {\n margin: 1em 0 0.5em;\n width: 70%;\n display: flex;\n\n a {\n color: lighten(map.get($colors, blue), 4%);\n font-size: 14px;\n line-height: 1.43;\n text-decoration: none;\n font-weight: 600;\n }\n\n nano-icon {\n margin-inline: 0 0.5em;\n margin-block: 0;\n min-width: 20px;\n min-height: 20px;\n opacity: 0.8;\n }\n\n @include media-breakpoint-down('lg') {\n width: 100%;\n }\n }\n\n &__body {\n color: map.get($colors, darkgrey);\n font-size: 13px;\n width: 70%;\n text-decoration: none;\n\n @include media-breakpoint-down('lg') {\n width: 100%;\n }\n }\n\n &__pdf {\n display: inline-block;\n margin-inline-start: 0.5rem;\n color: map.get($colors, palegrey);\n }\n\n &__meta {\n display: flex;\n flex-flow: row wrap;\n color: map.get($colors, darkgrey);\n font-size: 11px;\n line-height: 13px;\n width: 100%;\n align-items: center;\n\n > * {\n margin-block-start: 0.5rem;\n\n &:not(:last-child) {\n padding-inline-end: 0;\n\n &::after {\n content: '';\n height: 1rem;\n width: 1px;\n background: #90c6e7;\n display: inline-block;\n margin-inline-start: 0.7rem;\n margin-inline-end: 0.7rem;\n\n @include media-breakpoint-down('sm') {\n display: none;\n }\n }\n }\n }\n\n @include media-breakpoint-down('sm') {\n flex-flow: column;\n align-items: flex-start;\n }\n }\n\n &__tags {\n display: flex;\n flex-flow: row wrap;\n\n @include media-breakpoint-down('sm') {\n padding-inline-start: 0;\n }\n\n &-tag {\n color: map.get($colors, darkgrey);\n display: inline-block;\n font-size: 0.4375rem;\n letter-spacing: 1.4px;\n background: #fff;\n border-radius: 2px;\n text-transform: uppercase;\n padding: 0 4px 1px 5px;\n font-weight: 600;\n margin: 3px 0.25rem 0.25rem 0;\n border: 1px solid #b5aea7;\n white-space: nowrap;\n line-height: 13px;\n }\n }\n\n &__type {\n font-weight: 600;\n text-transform: capitalize;\n white-space: nowrap;\n display: flex;\n align-items: center;\n }\n\n &__date {\n display: flex;\n align-items: center;\n color: map.get($colors, darkgrey);\n }\n\n &__source {\n color: map.get($colors, darkgrey);\n padding-inline-end: 0.75rem;\n }\n\n &__authors {\n font-size: 12px;\n color: map.get($colors, darkgrey);\n margin-block-end: 0.25rem;\n text-decoration: none;\n width: 70%;\n }\n\n &__buttons {\n width: 70%;\n margin-block-end: 0.5rem;\n\n &-button {\n background-color: map.get($colors, blue);\n color: #fff;\n padding: 5px 8px 1px;\n border-radius: 4px;\n display: inline-block;\n font-size: 11px;\n text-decoration: none;\n border: none;\n }\n }\n\n &__promo {\n width: 70%;\n margin-block-end: 0.5rem;\n text-decoration: none;\n color: map.get($colors, darkgrey);\n\n &-box {\n width: 300px;\n background-color: #e3eef1;\n padding: 12px 12px 8px 4px;\n display: flex;\n flex-flow: row nowrap;\n margin-block-start: 1rem;\n }\n\n &-bigdate {\n flex: 0 1 60px;\n text-align: center;\n font-weight: 600;\n color: map.get($colors, blue);\n text-transform: uppercase;\n line-height: 1.25;\n letter-spacing: 1.5px;\n\n @include media-breakpoint-down('lg') {\n width: 100%;\n }\n\n span {\n color: map.get($colors, darkgrey);\n display: block;\n }\n\n & ~ div {\n padding-inline-start: 1rem;\n border-inline-start: 1px solid #c5dbe1;\n }\n }\n\n &-date {\n font-size: 12px;\n }\n\n &-venue {\n font-size: 12px;\n }\n\n nano-icon {\n color: map.get($colors, blue);\n position: relative;\n inset-block-start: 1px;\n padding-inline-end: 2px;\n }\n }\n\n &__image {\n display: block;\n background-size: cover;\n background-repeat: no-repeat;\n background-position: center;\n border-radius: 4px;\n position: relative;\n width: 100%;\n height: 150px;\n margin-block-end: 0.5rem;\n\n @include media-breakpoint-up('sm') {\n width: 142px;\n height: 80px;\n }\n\n nano-icon {\n position: absolute;\n inset-block-start: calc(50% - 0.75rem);\n inset-inline-start: calc(50% - 0.75rem);\n font-size: 1.5rem;\n color: #0084a9;\n\n --primary-color: #fff;\n --secondary-color: #0084a9;\n --primary-opacity: 1;\n\n @include media-breakpoint-down('sm') {\n font-size: 3rem;\n inset-block-start: calc(50% - 1.5rem);\n inset-inline-start: calc(50% - 1.5rem);\n }\n }\n }\n\n &__video {\n &-body {\n width: 70%;\n text-decoration: none;\n display: flex;\n flex-flow: row wrap;\n\n @include media-breakpoint-down('lg') {\n width: 100%;\n }\n\n @include media-breakpoint-down('sm') {\n flex-flow: column;\n }\n\n .result__body {\n padding-inline-start: 1rem;\n display: flex;\n flex-direction: column;\n margin-block-end: 0;\n flex: 1;\n\n @include media-breakpoint-down('sm') {\n padding-inline-start: 0;\n }\n\n p {\n display: inline;\n margin: 0;\n }\n\n u,\n li,\n a {\n text-decoration: none;\n }\n\n .result__meta {\n margin-block-start: 0.5rem;\n }\n\n .result__description {\n flex: 1 0 auto;\n }\n }\n }\n }\n}\n\n.search-empty {\n padding: 3rem 0;\n text-align: center;\n border-block-start: 1px solid #e5eef1;\n\n h2 {\n color: #455556;\n font-size: 1.125rem;\n margin-block-end: 0.5rem;\n }\n\n &-icon {\n font-size: 7rem;\n\n --icon-color: #e4e6e8;\n\n margin-block-end: 2rem;\n }\n}\n\n.search__highlight {\n background: #fbffbf;\n font-style: normal;\n}\n","import {\n Component,\n h,\n Host,\n Element,\n State,\n ComponentInterface,\n Watch,\n Listen,\n Event,\n EventEmitter,\n} from '@stencil/core';\nimport type { AloliaSearchResultDetail, SearchIndex } from '../../interface';\n\nconst filterOldPosts =\n 'created > ' + Math.floor((Date.now() - 63115200000) / 1000);\n\n/**\n * Nanopore Global Search results component\n * to be used in conjunction with [Globla-Nav](/story/nano-compounds-global-nav).\n * A shortcut / helper which combines algolia components.\n * There should only be one <nano-global-search-results> per page\n * and should be a direct child of <nano-global-nav>\n */\n@Component({\n tag: 'nano-global-search-results',\n styleUrl: 'global-search-results.scss',\n shadow: true,\n})\nexport class GlobalSearchResults implements ComponentInterface {\n private algoliaResultsEle: HTMLNanoAlgoliaResultsElement;\n private filtersDiv: HTMLElement;\n private openFilterBtn: HTMLButtonElement;\n private ro: ResizeObserver;\n\n @State() algoliaEle: HTMLNanoAlgoliaElement;\n @State() currentWidth: number;\n @State() apiKey: string;\n @State() appId: string;\n @State() index: SearchIndex;\n\n @Element() private el: HTMLNanoGlobalSearchResultsElement;\n\n /** Fired when the user clicks the 'back' button / closes the search panel\n * Calling `event.preventDefault()` will prevent it from being closed.\n */\n @Event() nanoSearchGoBack: EventEmitter;\n\n @Watch('algoliaEle')\n @Watch('apiKey')\n @Watch('appId')\n handleAlgoliaCredsChange() {\n if (!this.apiKey || !this.appId || !this.algoliaEle) return;\n this.algoliaEle.apiKey = this.apiKey;\n this.algoliaEle.appId = this.appId;\n }\n\n @Watch('algoliaEle')\n @Watch('index')\n handleAlgoliaIndexChange() {\n if (!this.index || !this.algoliaEle) return;\n this.algoliaEle.searchIndex = this.index;\n }\n\n @Listen('nanoSearchReset', { target: 'body' })\n handleGlobalNavReset(e: CustomEvent & { target: HTMLElement }) {\n if (e.target.tagName !== 'NANO-GLOBAL-NAV') return;\n this.algoliaResultsEle = null;\n this.goback();\n }\n\n @Listen('nanoSearchResult', { target: 'body' })\n handleGlobalNavSearch(e: CustomEvent & { target: HTMLElement }) {\n if (e.target.tagName !== 'NANO-GLOBAL-NAV') return;\n const {\n detail: { meta, client },\n } = e as { detail: AloliaSearchResultDetail };\n\n this.apiKey = client.apiKey;\n this.appId = client.appId;\n this.index = {\n name: meta.indexTitle,\n index: meta.index,\n domain: meta.domain,\n filters: meta.filters,\n };\n this.algoliaEle.query = meta.query;\n }\n\n @Listen('nanoChange')\n handleReorder(e: CustomEvent & { target: HTMLNanoSelectElement }) {\n if (\n e\n .composedPath()\n .find(\n (ele: HTMLElement) =>\n ele.classList && ele.classList.contains('indexchange')\n ) &&\n !!this.algoliaResultsEle\n ) {\n this.changeOrder(e);\n }\n }\n\n @Listen('nanoResultsShown')\n attachListeners(e: CustomEvent & { target: HTMLElement }) {\n if (\n !e\n .composedPath()\n .find((ele: HTMLElement) => ele.id && ele.id === 'main-search')\n )\n return;\n\n this.algoliaResultsEle = this.algoliaEle.querySelector(\n '#main-search-results'\n );\n\n // add results listeners\n this.attachResultListeners();\n\n this.algoliaEle.querySelectorAll('.filters-reset').forEach((item) => {\n item.addEventListener('click', () => {\n this.removeAllFilters();\n });\n });\n\n this.algoliaEle.querySelectorAll('.close-filters').forEach((item) => {\n item.addEventListener('click', () => {\n this.closefilters();\n });\n });\n\n const filterWrap = this.algoliaEle.querySelector('.filters-wrap');\n if (filterWrap) {\n filterWrap.addEventListener('click', (e) => {\n e.stopPropagation();\n });\n }\n\n this.filtersDiv = this.algoliaEle.querySelector('#main-search-filters');\n\n const oldResults = this.algoliaEle.querySelector('.old-posts');\n if (oldResults) {\n oldResults.addEventListener(\n 'change',\n (e: Event & { target: HTMLInputElement }) => {\n this.toggleOldResults(e.target.checked);\n }\n );\n }\n }\n\n @Listen('nanoNewResults', { target: 'body' })\n attachResultListeners(e?: CustomEvent & { target: HTMLElement }) {\n if (e && e.composedPath().find((el) => el === this.algoliaEle)) {\n this.algoliaResultsEle = this.algoliaEle.querySelector(\n 'nano-algolia-results'\n );\n }\n if (!this.algoliaResultsEle) return;\n const resultEle = this.algoliaResultsEle;\n\n resultEle.querySelectorAll('.remove-filter').forEach((item) => {\n item.addEventListener('click', (clickEv: MouseEvent) => {\n const filter = clickEv.target as HTMLElement;\n this.removeFilter(filter.dataset.filter, filter.dataset.filterVal);\n });\n });\n\n resultEle.querySelectorAll('.back-btn').forEach((item) => {\n item.addEventListener('click', () => {\n this.goback();\n });\n });\n\n resultEle.querySelectorAll('.topbar__show-filters').forEach((item) => {\n this.openFilterBtn = item as HTMLButtonElement;\n item.addEventListener('click', () => {\n this.filtersDiv.tabIndex = -1;\n this.filtersDiv.classList.add('show');\n this.filtersDiv.setAttribute('aria-expanded', 'true');\n document.body.style.overflow = 'hidden';\n setTimeout(() => this.filtersDiv.focus(), 20);\n });\n });\n\n const tags = Array.from(resultEle.querySelectorAll('.result__tags-tag'));\n tags.forEach((tag) => {\n tag.removeEventListener('click', this.tagClick);\n tag.addEventListener('click', this.tagClick);\n });\n }\n\n private tagClick = (e: MouseEvent & { target: HTMLElement }) => {\n e.preventDefault();\n let tagVal = e.target.dataset.value;\n tagVal = tagVal === 'publication' ? 'publications' : tagVal;\n tagVal = tagVal.toLowerCase();\n\n const filter: HTMLNanoAlgoliaFilterElement = this.algoliaEle.querySelector(\n 'nano-algolia-filter[filter-name=\"tags\"]'\n );\n if (filter.value.indexOf(tagVal) === -1) {\n filter.value = filter.value ? [...filter.value, tagVal] : [tagVal];\n }\n };\n\n private changeOrder(ev) {\n this.algoliaEle.replicaIndex = ev.detail.value;\n }\n\n private goback() {\n const goBackEvent = this.nanoSearchGoBack.emit();\n if (goBackEvent.defaultPrevented) return;\n\n this.removeAllFilters();\n this.algoliaEle.query = '';\n this.algoliaEle.showResults = false;\n }\n\n private removeFilter(facet, filter) {\n this.algoliaEle.removeFilters(facet, filter);\n }\n\n private removeAllFilters() {\n this.algoliaEle.removeFilters();\n }\n\n private closefilters() {\n if (!this.filtersDiv) return;\n this.filtersDiv.tabIndex = null;\n this.filtersDiv.classList.remove('show');\n this.filtersDiv.setAttribute('aria-expanded', 'false');\n document.body.style.overflow = '';\n setTimeout(() => this.openFilterBtn.focus(), 20);\n }\n\n private toggleOldResults(show: boolean) {\n if (show)\n this.algoliaEle.filters = this.algoliaEle.filters.filter(\n (f) => !f.startsWith('created > ')\n );\n else this.algoliaEle.filters = [...this.algoliaEle.filters, filterOldPosts];\n }\n\n componentDidLoad() {\n this.algoliaEle.filters = [filterOldPosts]; // only get last 2 years\n\n if (!window['ResizeObserver']) return;\n\n this.ro = new ResizeObserver((entries) => {\n for (const entry of entries) {\n if (!entry.contentRect.width) return;\n this.currentWidth = entry.contentRect.width;\n }\n });\n this.ro.observe(this.el);\n }\n\n render() {\n return (\n <Host\n class={{ small: this.currentWidth < 677 }}\n dir={\n (this.el.ownerDocument as Document).dir === 'rtl' ? 'rtl' : undefined\n }\n >\n <nano-algolia\n store-id=\"searchq\"\n store-method=\"url-hash-push\"\n class=\"main-search__wrap sc-nano-global-search-results\"\n ref={(ele) => (this.algoliaEle = ele)}\n id=\"main-search\"\n >\n <template slot=\"template\">\n {\n /* html */ `<div class=\"main-search sc-nano-global-search-results\">\n <nano-algolia-results id=\"main-search-results\" class=\"main-search__results sc-nano-global-search-results\" infinite-scroll>\n <script type=\"text/template\" slot=\"start-template\">\n <div class=\"sc-nano-global-search-results main-search__topbar topbar\">\n <button class=\"sc-nano-global-search-results topbar__bkbtn back-btn icon-button\">\n <nano-icon class=\"sc-nano-global-search-results\" name=\"light/chevron-left\" size=\"small\"></nano-icon>\n </button>\n <div>\n <em class=\"sc-nano-global-search-results topbar__query\">'{{ it.query }}' - </em> <strong>{{ it.totalHitsWithFilters }}</strong> Results\n </div>\n\n <div class=\"sc-nano-global-search-results topbar__filtering\">\n {{ @if (it.results.length) }}\n\n {{ @if (it.indexName === 'All') }}\n <nano-select class=\"sc-nano-global-search-results topbar__order topbar__order--www indexchange\" value=\"{{ it.index }}\" hide-label=\"true\" label=\"Sort order\" show-inline-error=\"false\">\n <nano-option value=\"all_prod_en\">Sort by: Most relevant</nano-option>\n <nano-option value=\"all_prod_en_date_desc\">Sort by: Newest</nano-option>\n <nano-option value=\"all_prod_en_date_asc\">Sort by: Oldest</nano-option>\n <nano-option value=\"all_prod_en_activity_date_desc\">Sort by: Recent activity</nano-option>\n </nano-select>\n {{ /if }}\n\n {{ @if (it.indexName === 'www') }}\n <nano-select class=\"sc-nano-global-search-results topbar__order topbar__order--www indexchange\" value=\"{{ it.index }}\" hide-label=\"true\" label=\"Sort order\" show-inline-error=\"false\">\n <nano-option value=\"cws_english_en\">Sort by: Most relevant</nano-option>\n <nano-option value=\"cws_english_en_date_desc\">Sort by: Newest</nano-option>\n <nano-option value=\"cws_english_en_date_asc\">Sort by: Oldest</nano-option>\n </nano-select>\n {{ /if }}\n\n {{ @if (it.indexName === 'Resources') }}\n <nano-select class=\"sc-nano-global-search-results topbar__order topbar__order--www indexchange\" value=\"{{ it.index }}\" hide-label=\"true\" label=\"Sort order\" show-inline-error=\"false\">\n <nano-option value=\"cws_english_resources_en\">Sort by: Most relevant</nano-option>\n <nano-option value=\"cws_english_resources_en_featured_desc\">Sort by: Newest</nano-option>\n <nano-option value=\"cws_english_resources_en_featured_asc\">Sort by: Oldest</nano-option>\n </nano-select>\n {{ /if }}\n\n {{ @if (it.indexName === 'Store') }}\n <nano-select class=\"sc-nano-global-search-results topbar__order topbar__order--www indexchange\" value=\"{{ it.index }}\" hide-label=\"true\" label=\"Sort order\" show-inline-error=\"false\">\n <nano-option value=\"store_prod\">Sort by: Most relevant</nano-option>\n <nano-option value=\"store_prod_date_desc\">Sort by: Newest</nano-option>\n <nano-option value=\"store_prod_date_asc\">Sort by: Oldest</nano-option>\n </nano-select>\n {{ /if }}\n\n {{ @if (it.indexName === 'Community') }}\n <nano-select class=\"sc-nano-global-search-results topbar__order topbar__order--community indexchange\" value=\"{{ it.index }}\" hide-label=\"true\" label=\"Sort order\" show-inline-error=\"false\">\n <nano-option value=\"community_prod\">Sort by: Most relevant</nano-option>\n <nano-option value=\"community_prod_date_desc\">Sort by: Newest</nano-option>\n <nano-option value=\"community_prod_date_asc\">Sort by: Oldest</nano-option>\n <nano-option value=\"community_prod_activity_date_desc\">Sort by: Recent activity</nano-option>\n </nano-select>\n {{ /if }}\n {{ /if }}\n\n <button class=\"sc-nano-global-search-results topbar__show-filters filters-title\" aria-controls=\"main-search-filters\">\n {{ @if (it.appliedFilters && it.appliedFilters.length > 0) }}\n <span class=\"sc-nano-global-search-results topbar__filter-count\">\n {{ (it.appliedFilters.reduce(function(a, b) { return a + (b.values ? b.values.length : 0) }, 0)) }}\n </span>\n {{ /if }}\n <nano-icon class=\"sc-nano-global-search-results\" name=\"light/filter\"></nano-icon>\n </button>\n </div>\n </div>\n\n {{ @if (it.results.length) }}\n <div class=\"sc-nano-global-search-results main-search__applied-filters\">\n {{ @if (it.appliedFilters) }}\n {{ @each(it.appliedFilters) => filterObj }}\n {{ @each(filterObj.values) => filterVal }}\n <span class=\"sc-nano-global-search-results main-search__applied-filter\">\n {{ filterVal | public_name }}\n <button class=\"sc-nano-global-search-results icon-button remove-filter\" data-filter=\"{{ filterObj.name }}\" data-filter-val=\"{{ filterVal }}\">\n <nano-icon class=\"sc-nano-global-search-results\" name=\"light/times\"></nano-icon>\n </button>\n </span>\n {{ /each }}\n {{ /each }}\n {{ #else }}\n <span class=\"sc-nano-global-search-results main-search__applied-nofilter\"> </span>\n {{ /if }}\n </div>\n {{ /if }}\n </script>\n\n <script type=\"text/template\" slot=\"result-template\">\n <!-- START NO CONTENT -->\n {{ @if ((!it.results || !it.results.length)) }}\n <div class=\"search-empty\">\n <nano-icon name=\"light/search\" class=\"search-empty-icon\"></nano-icon>\n <h2>No matches found...</h2>\n <p>Please try a different search query.</p>\n </div>\n {{ /if }}\n <!-- END NO CONTENT -->\n {{ @if (it.totalHitsWithFilters > 0) }}\n {{ @each(it.results) => result }}\n {{ contentType = result.content_type ? result.content_type : result.type }}\n <li class=\"sc-nano-global-search-results\">\n <div class=\"sc-nano-global-search-results result\">\n <h4 class=\"sc-nano-global-search-results result__title\" data-icon-set=\"{{(iconSet = false)}}\">\n <a href=\"{{ result.url | abs_url(it, result) }}\">\n {{ result._snippetResult.title.value | safe }}\n {{ @if (contentType === 'technical_document' || contentType === 'literature' || contentType === 'white_paper' || contentType === 'protocol') }}\n <span class=\"sc-nano-global-search-results result__pdf\">PDF</span>\n {{ /if }}\n </a>\n </h4>\n {{ @if (result.authors) }}\n {{ @if (typeof result.authors === 'string') }}\n <a class=\"sc-nano-global-search-results result__authors\" href=\"{{ result.url | abs_url(it, result) }}\">Authors: {{ result.authors | trim_to(50) }}</a>\n {{ #else }}\n <a class=\"sc-nano-global-search-results result__authors\" href=\"{{ result.url | abs_url(it, result) }}\">\n {{ @each(result.authors) => author, index }}\n <!-- {{ @if(index == 0)}} -->\n Authors: {{ author | trim_to(60) }}\n <!-- {{ /if }} -->\n {{ /each }}\n </a>\n {{ /if }}\n {{ /if }}\n {{ @if (contentType === 'video' || contentType === 'lc_lightning_talk' ) }}\n {{ @if (result.name) }}\n <a class=\"sc-nano-global-search-results result__authors\" href=\"{{ result.url | abs_url(it, result) }}\">Speaker: {{ result.name | trim_to(50) }}</a>\n {{ /if }}\n <a class=\"sc-nano-global-search-results result__video-body\" href=\"{{ result.url | abs_url(it, result) }}\">\n {{ @if (result.image) }}\n <div class=\"sc-nano-global-search-results result__image\" style=\"background-image: url('{{ result.image | abs_url(it, result) }}')\">\n <nano-icon class=\"sc-nano-global-search-results\" name=\"duotone/play-circle\"></nano-icon>\n </div>\n {{ /if }}\n <div class=\"sc-nano-global-search-results result__body\">\n <div class=\"sc-nano-global-search-results result__description\">\n {{ @if (result.description) }}\n {{ result._snippetResult.description.value | safe }}\n {{ /if }}\n </div>\n </div>\n <div class=\"sc-nano-global-search-results result__meta\">\n {{ @if (result.type || result.content_type) }}\n <div class=\"sc-nano-global-search-results result__type\">\n {{ @if (contentType === 'lc_lightning_talk') }}\n Presentation\n {{ #else }}\n {{ contentType }}\n {{ /if }}\n </div>\n {{ /if }}\n {{ @if (result.tags) }}\n <div class=\"sc-nano-global-search-results result__tags\">\n {{ @if (typeof result.tags === 'string') }}\n <button data-value=\"{{ result.tags | lowercase }}\" class=\"sc-nano-global-search-results result__tags-tag\">{{ result.tags }}</button>\n {{ #else }}\n {{ @each(result.tags) => tag, index }}\n {{ @if(index < 5)}}\n {{ @if (tag !== \"No video\" && tag !== \"Resources\" && tag !== \"Video\") }}\n <button data-value=\"{{ tag | lowercase }}\" class=\"sc-nano-global-search-results result__tags-tag\">{{ tag }}</button>\n {{ /if }}\n {{ /if }}\n {{ /each }}\n {{ /if }}\n </div>\n {{ /if }}\n {{ @if (result.source) }}\n <div class=\"sc-nano-global-search-results result__source\">Source: {{ result.source }}</div>\n {{ /if }}\n </div>\n </a>\n {{ /if }}\n {{ @if (result.body) }}\n <a class=\"sc-nano-global-search-results result__body\" href=\"{{ result.url | abs_url(it, result) }}\">{{ result._snippetResult.body.value | safe }}</a>\n {{ /if }}\n {{ @if (contentType === 'product' }}\n <div class=\"sc-nano-global-search-results result__buttons\">\n <a class=\"sc-nano-global-search-results result__buttons-button\" href=\"{{ result.url | abs_url(it, result) }}\">View product</a>\n </div>\n {{ /if }}\n {{ @if (contentType === 'event') }}\n <a class=\"sc-nano-global-search-results result__promo\" href=\"{{ result.url | abs_url(it, result) }}\">\n <div class=\"sc-nano-global-search-results result__promo-box\">\n <div class=\"sc-nano-global-search-results result__promo-bigdate\">\n {{ result.start_date | date_long({year: undefined, month: 'short', day: undefined}) }}\n <span>{{ result.start_date | date_long({year: undefined, month: undefined, day: 'numeric'}) }}</span>\n </div>\n <div>\n <div class=\"sc-nano-global-search-results result__promo-date\">\n <nano-icon class=\"sc-nano-global-search-results\" name=\"light/calendar-alt\"></nano-icon>\n {{ @if (result.end_date) }}\n {{ @if (result.end_date !== result.start_date) }}\n {{ result.start_date | date_long({weekday: 'short', day: 'numeric', month: 'short'}) }} - {{ result.end_date | date_long({weekday: 'short', day: 'numeric', year: 'numeric', month: 'short'}) }}\n {{ #else }}\n {{ result.start_date | date_long({weekday: 'short', day: 'numeric', year: 'numeric', month: 'short'}) }}\n {{ /if }}\n {{ #else }}\n {{ @if (result.start_date) }}\n {{ result.start_date | date_long({weekday: 'short', day: 'numeric', year: 'numeric', month: 'short'}) }}\n {{ /if }}\n {{ /if }}\n </div>\n <div class=\"sc-nano-global-search-results result__promo-venue\">\n <nano-icon class=\"sc-nano-global-search-results\" name=\"light/map-marker-alt\"></nano-icon>\n Venue\n </div>\n </div>\n </div>\n </a>\n {{ /if }}\n {{ @if (contentType !== 'lc_lightning_talk' && contentType !== 'video') }}\n <div class=\"sc-nano-global-search-results result__meta\">\n {{ @if (result.type || result.content_type) }}\n <div class=\"sc-nano-global-search-results result__type\">\n {{ @if (contentType === 'news_item') }}\n News\n {{ #elif (contentType === 'static_page' || contentType === 'bespoke') }}\n Page\n {{ #elif (contentType === 'case_study') }}\n Case study\n {{ #elif (contentType === 'lc_poster') }}\n Poster\n {{ #elif (contentType === 'nanopore_live') }}\n Live stream\n {{ #elif (contentType === 'data_release') }}\n Data release\n {{ #elif (contentType === 'research_area') }}\n Research area\n {{ #elif (contentType === 'white_paper') }}\n White paper\n {{ #elif (contentType === 'technical_document') }}\n Technical document\n {{ #elif (contentType === 'info_sheet') }}\n Info sheet\n {{ #elif (contentType === 'lc_home' || contentType === 'lc_venue') }}\n London Calling\n {{ #else }}\n {{ contentType }}\n {{ /if }}\n </div>\n {{ /if }}\n {{ @if (contentType !== 'event') }}\n {{ @if (result.updated) }}\n <div class=\"sc-nano-global-search-results result__date\">{{ result.updated | date_long({year: 'numeric', month: 'short', day: 'numeric'}) }}</div>\n {{ #else }}\n {{ @if (result.created) }}\n <div class=\"sc-nano-global-search-results result__date\">{{ result.created | date_long({year: 'numeric', month: 'short', day: 'numeric'}) }}</div>\n {{ /if }}\n {{ /if }}\n {{ /if }}\n {{ @if (result.tags) }}\n <div class=\"sc-nano-global-search-results result__tags\">\n {{ @if (typeof result.tags === 'string') }}\n {{ @if (result.tags !== \"Resources\" && result.tags !== \"Tools\" && result.tags !== \"Publications\" && result.tags !== \"Case studies\") }}\n <button data-value=\"{{ result.tags | lowercase }}\" class=\"sc-nano-global-search-results result__tags-tag\">{{ result.tags }}</button>\n {{ /if }}\n {{ #else }}\n {{ @each(result.tags) => tag, index }}\n {{ @if(index < 5)}}\n {{ @if (tag !== \"Resources\" && tag !== \"Tools\" && tag !== \"Publications\" && tag !== \"Case studies\") }}\n <button data-value=\"{{ tag | lowercase }}\" class=\"sc-nano-global-search-results result__tags-tag\">{{ tag }}</button>\n {{ /if }}\n {{ /if }}\n {{ /each }}\n {{ /if }}\n </div>\n {{ /if }}\n {{ @if (result.source) }}\n <div class=\"sc-nano-global-search-results result__source\">Source: {{ result.source }}</div>\n {{ /if }}\n </div>\n {{ /if }}\n </div>\n </li>\n {{ /each }}\n {{ /if }}\n </script>\n\n <div slot=\"start-output\"></div>\n <ul slot=\"result-output\" class=\"sc-nano-global-search-results\"></ul>\n </nano-algolia-results>\n\n {{ @if(Object.keys(it.origFilters).length) }}\n <div class=\"sc-nano-global-search-results main-search__filters filters close-filters\" id=\"main-search-filters\">\n <div class=\"sc-nano-global-search-results filters-wrap\">\n {{ @if(it.totalHits) }}\n <div class=\"sc-nano-global-search-results filters-header\">\n <strong class=\"sc-nano-global-search-results filters-title\">Filters</strong>\n <button class=\"sc-nano-global-search-results filters-reset\">Reset</button>\n <button class=\"sc-nano-global-search-results filters__close-filters close-filters icon-button\" aria-controls=\"main-search-filters\">\n <nano-icon class=\"sc-nano-global-search-results\" name=\"light/times\"></nano-icon>\n </button>\n </div>\n {{ /if }}\n\n <div>\n <input class=\"sc-nano-global-search-results filter-cb old-posts filters__old-posts\" type=\"checkbox\" name=\"old-posts\" id=\"old-posts\" value=\"nice\" />\n <label class=\"sc-nano-global-search-results filter-label\" for=\"old-posts\">\n <span>Include posts older than 2 years</span>\n </label>\n {{ @if(it.origFilters['type']) }}\n <nano-details class=\"sc-nano-global-search-results\" open={true} icon-rotation=\"180\">\n <strong slot=\"label\">Type</strong>\n <nano-icon slot=\"icon-end\" name=\"light/chevron-down\" size=\"small\"></nano-icon>\n <nano-algolia-filter store-id=\"searchf1\" store-method=\"url-hash-push\" filter-name=\"type\">\n <script type=\"text/template\" slot=\"filter-template\">\n <ul class=\"sc-nano-global-search-results\" data-num=\"{{(x = 0)}}\">\n {{ @foreach(it.dyn) => filter, filterVal }}\n <li class=\"sc-nano-global-search-results\" data-num=\"{{(x++)}}\">\n <input class=\"sc-nano-global-search-results filter-cb\" type=\"checkbox\" value=\"{{ filter }}\" id=\"type-{{ filter }}-{{x}}\" />\n <label class=\"sc-nano-global-search-results filter-label\" for=\"type-{{ filter }}-{{x}}\">\n <span>{{ filter | public_name }} (<strong>{{ filterVal }}</strong>)</span>\n </label></li>\n {{ /foreach }}\n </ul>\n </script>\n <div slot=\"output\"></div>\n </nano-algolia-filter>\n </nano-details>\n {{ /if }}\n\n {{ @if(it.origFilters['channel']) }}\n <nano-details open={true} icon-rotation=\"180\">\n <strong slot=\"label\">Channels</strong>\n <nano-icon slot=\"icon-end\" name=\"light/chevron-down\" size=\"small\"></nano-icon>\n <nano-algolia-filter store-id=\"searchf2\" store-method=\"url-hash-push\" filter-name=\"channel\">\n <script type=\"text/template\" slot=\"filter-template\">\n <ul class=\"sc-nano-global-search-results\" data-num=\"{{(x = 0)}}\">\n {{ @foreach(it.dyn) => filter, filterVal }}\n <li class=\"sc-nano-global-search-results\" data-num=\"{{(x++)}}\">\n <input class=\"filter-cb sc-nano-global-search-results\" type=\"checkbox\" value=\"{{ filter }}\" id=\"channel-{{ filter }}-{{x}}\" />\n <label class=\"filter-label sc-nano-global-search-results\" for=\"channel-{{ filter }}-{{x}}\">\n <span>{{ filter | public_name }} (<strong>{{ filterVal }}</strong>)</span>\n </label></li>\n {{ /foreach }}\n </ul>\n </script>\n <div slot=\"output\"></div>\n </nano-algolia-filter>\n </nano-details>\n {{ /if }}\n\n {{ @if(it.origFilters['authors']) }}\n <nano-details open={true} icon-rotation=\"180\">\n <strong slot=\"label\">Authors</strong>\n <nano-icon slot=\"icon-end\" name=\"light/chevron-down\" size=\"small\"></nano-icon>\n <nano-algolia-filter store-id=\"searchf3\" store-method=\"url-hash-push\" filter-name=\"authors\">\n <script type=\"text/template\" slot=\"filter-template\">\n <ul class=\"sc-nano-global-search-results\" data-num=\"{{(x = 0)}}\">\n {{ @foreach(it.dyn) => filter, filterVal }}\n <li class=\"sc-nano-global-search-results\" data-num=\"{{(x++)}}\">\n <input class=\"filter-cb sc-nano-global-search-results\" type=\"checkbox\" value=\"{{ filter }}\" id=\"authors-{{ filter }}-{{x}}\" />\n <label class=\"filter-label sc-nano-global-search-results\" for=\"authors-{{ filter }}-{{x}}\">\n <span>{{ filter | public_name }} (<strong>{{ filterVal }}</strong>)</span>\n </label></li>\n {{ /foreach }}\n </ul>\n </script>\n <div slot=\"output\"></div>\n </nano-algolia-filter>\n </nano-details>\n {{ /if }}\n\n {{ @if(it.origFilters['categories_without_path']) }}\n <nano-details open={true} icon-rotation=\"180\">\n <strong slot=\"label\">Category</strong>\n <nano-icon slot=\"icon-end\" name=\"light/chevron-down\" size=\"small\"></nano-icon>\n <nano-algolia-filter store-id=\"searchf4\" store-method=\"url-hash-push\" filter-name=\"categories_without_path\">\n <script type=\"text/template\" slot=\"filter-template\">\n <ul class=\"sc-nano-global-search-results\" data-num=\"{{(x = 0)}}\">\n {{ @foreach(it.dyn) => filter, filterVal }}\n {{ @if(!filter.match(/publication/)) }}\n <li class=\"sc-nano-global-search-results\" data-num=\"{{(x++)}}\">\n <input class=\"sc-nano-global-search-results filter-cb\" type=\"checkbox\" value=\"{{ filter }}\" id=\"cwp-{{ filter }}-{{x}}\" />\n <label class=\"sc-nano-global-search-results filter-label\" for=\"cwp-{{ filter }}-{{x}}\">\n <span>{{ filter | public_name }} (<strong>{{ filterVal }}</strong>)</span>\n </label></li>\n {{ /if }}\n {{ /foreach }}\n </ul>\n </script>\n <div slot=\"output\"></div>\n </nano-algolia-filter>\n </nano-details>\n {{ /if }}\n\n {{ @if(it.origFilters['tags']) }}\n <nano-details open={true} icon-rotation=\"180\">\n <strong slot=\"label\">Tags</strong>\n <nano-icon slot=\"icon-end\" name=\"light/chevron-down\" size=\"small\"></nano-icon>\n <nano-algolia-filter store-id=\"searchf5\" store-method=\"url-hash-push\" filter-name=\"tags\">\n <script type=\"text/template\" slot=\"filter-template\">\n <ul class=\"sc-nano-global-search-results\" data-num=\"{{(x = 0)}}\">\n {{ @foreach(it.dyn) => filter, filterVal }}\n <li class=\"sc-nano-global-search-results\" data-num=\"{{(x++)}}\">\n <input class=\"filter-cb sc-nano-global-search-results\" type=\"checkbox\" value=\"{{ filter | lowercase }}\" id=\"tags-{{ filter }}-{{x}}\" />\n <label class=\"filter-label sc-nano-global-search-results\" for=\"tags-{{ filter }}-{{x}}\">\n <span>{{ filter | public_name }} (<strong>{{ filterVal }}</strong>)</span>\n </label></li>\n {{ /foreach }}\n </ul>\n </script>\n <div slot=\"output\"></div>\n </nano-algolia-filter>\n </nano-details>\n {{ /if }}\n </div>\n </div>\n </div>\n {{ /if }}\n </div>`\n }\n </template>\n <div slot=\"output\"></div>\n <slot />\n </nano-algolia>\n </Host>\n );\n }\n}\n"],"mappings":"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"}
|