@nanoporetech-digital/components 6.0.0 → 6.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/cjs/nano-algolia.cjs.entry.js +2 -2
  3. package/dist/cjs/nano-algolia.cjs.entry.js.map +1 -1
  4. package/dist/cjs/nano-global-search-results.cjs.entry.js +9 -1
  5. package/dist/cjs/nano-global-search-results.cjs.entry.js.map +1 -1
  6. package/dist/cjs/{nano-table-de76385b.js → nano-table-400049cc.js} +2 -2
  7. package/dist/cjs/{nano-table-de76385b.js.map → nano-table-400049cc.js.map} +1 -1
  8. package/dist/cjs/nano-table.cjs.entry.js +1 -1
  9. package/dist/cjs/{table.worker-1f138ea9.js → table.worker-a37f8365.js} +2 -2
  10. package/dist/cjs/table.worker-a37f8365.js.map +1 -0
  11. package/dist/collection/components/algolia/lib/template.js +2 -2
  12. package/dist/collection/components/algolia/lib/template.js.map +1 -1
  13. package/dist/collection/components/global-search-results/global-search-results.js +11 -0
  14. package/dist/collection/components/global-search-results/global-search-results.js.map +1 -1
  15. package/dist/components/algolia.js +2 -2
  16. package/dist/components/algolia.js.map +1 -1
  17. package/dist/components/nano-global-search-results.js +9 -1
  18. package/dist/components/nano-global-search-results.js.map +1 -1
  19. package/dist/esm/nano-algolia.entry.js +2 -2
  20. package/dist/esm/nano-algolia.entry.js.map +1 -1
  21. package/dist/esm/nano-global-search-results.entry.js +9 -1
  22. package/dist/esm/nano-global-search-results.entry.js.map +1 -1
  23. package/dist/esm/{nano-table-60d90a6b.js → nano-table-a6641aef.js} +2 -2
  24. package/dist/esm/{nano-table-60d90a6b.js.map → nano-table-a6641aef.js.map} +1 -1
  25. package/dist/esm/nano-table.entry.js +1 -1
  26. package/dist/esm/{table.worker-326f51a7.js → table.worker-6b597e20.js} +2 -2
  27. package/dist/esm/table.worker-6b597e20.js.map +1 -0
  28. package/dist/nano-components/nano-algolia.entry.js +1 -1
  29. package/dist/nano-components/nano-algolia.entry.js.map +1 -1
  30. package/dist/nano-components/nano-global-search-results.entry.js +1 -1
  31. package/dist/nano-components/nano-global-search-results.entry.js.map +1 -1
  32. package/dist/nano-components/{nano-table-60d90a6b.js → nano-table-a6641aef.js} +2 -2
  33. package/dist/nano-components/nano-table.entry.js +1 -1
  34. package/dist/nano-components/table.worker-6b597e20.js +5 -0
  35. package/dist/types/components/global-search-results/global-search-results.d.ts +2 -0
  36. package/docs-json.json +1 -1
  37. package/hydrate/index.js +11 -3
  38. package/package.json +2 -2
  39. package/dist/cjs/table.worker-1f138ea9.js.map +0 -1
  40. package/dist/esm/table.worker-326f51a7.js.map +0 -1
  41. package/dist/nano-components/table.worker-326f51a7.js +0 -5
  42. /package/dist/nano-components/{nano-table-60d90a6b.js.map → nano-table-a6641aef.js.map} +0 -0
  43. /package/dist/nano-components/{table.worker-326f51a7.js.map → table.worker-6b597e20.js.map} +0 -0
@@ -1 +1 @@
1
- {"file":"nano-algolia.entry.js","mappings":"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","names":["Parse","squirrel.filters"],"sources":["./node_modules/stencil-wormhole/dist/esm/universe.js","./src/utils/promise-queue.ts","./src/components/algolia/lib/squirrelly/err.ts","./src/components/algolia/lib/squirrelly/utils.ts","./src/components/algolia/lib/squirrelly/parse.ts","./src/components/algolia/lib/squirrelly/compile-string.ts","./src/components/algolia/lib/squirrelly/storage.ts","./src/components/algolia/lib/squirrelly/container-utils.ts","./src/components/algolia/lib/squirrelly/containers.ts","./src/components/algolia/lib/squirrelly/config.ts","./src/components/algolia/lib/squirrelly/compile.ts","./src/components/algolia/lib/squirrelly/render.ts","./src/components/algolia/lib/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 setPrototypeOf(obj: any, proto: any) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(obj, proto);\n } else {\n obj.__proto__ = proto;\n }\n}\n\nexport default function SqrlErr(message: string): Error {\n const err = new Error(message);\n setPrototypeOf(err, SqrlErr.prototype);\n return err;\n}\n\nSqrlErr.prototype = Object.create(Error.prototype, {\n name: { value: 'Squirrelly Error', enumerable: false },\n});\n\n// TODO: Class transpilation adds a lot to the bundle size\n\nexport function ParseErr(message: string, str: string, indx: number) {\n const whitespace = str.slice(0, indx).split(/\\n/);\n\n const lineNo = whitespace.length;\n const colNo = whitespace[lineNo - 1].length + 1;\n message +=\n ' at line ' +\n lineNo +\n ' col ' +\n colNo +\n ':\\n\\n' +\n ' ' +\n str.split(/\\n/)[lineNo - 1] +\n '\\n' +\n ' ' +\n Array(colNo).join(' ') +\n '^';\n throw SqrlErr(message);\n}\n","// TODO: allow '-' to trim up until newline. Use [^\\S\\n\\r] instead of \\s\n// TODO: only include trimLeft polyfill if not in ES6\n\n/* TYPES */\n\nimport { SqrlConfig } from './config';\n\n/* END TYPES */\n\nexport const promiseImpl = new Function('return this')().Promise;\n\nlet asyncFunc: FunctionConstructor | false = false;\n\ntry {\n asyncFunc = new Function('return (async function(){}).constructor')();\n} catch (e) {\n // We shouldn't actually ever have any other errors, but...\n if (!(e instanceof SyntaxError)) {\n throw e;\n }\n}\n\nexport { asyncFunc };\n\nexport function hasOwnProp(obj: object, prop: string) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nexport function copyProps<T>(toObj: T, fromObj: T, notConfig?: boolean) {\n for (const key in fromObj) {\n if (hasOwnProp(fromObj as unknown as object, key)) {\n if (\n fromObj[key] != null &&\n typeof fromObj[key] == 'object' &&\n (key === 'storage' || key === 'prefixes') &&\n !notConfig // not called from Cache.load\n ) {\n // plugins or storage\n // Note: this doesn't merge from initial config!\n // Deep clone instead of assigning\n // TODO: run checks on this\n toObj[key] = copyProps(\n /*toObj[key] ||*/ {} as T[Extract<keyof T, string>],\n fromObj[key]\n );\n } else {\n toObj[key] = fromObj[key];\n }\n }\n }\n return toObj;\n}\n\nfunction trimWS(\n str: string,\n env: SqrlConfig,\n wsLeft: string | false,\n wsRight?: string | false\n): string {\n let leftTrim;\n let rightTrim;\n\n if (typeof env.autoTrim === 'string') {\n leftTrim = rightTrim = env.autoTrim;\n // Don't need to check if env.autoTrim is false\n // Because leftTrim, rightTrim are initialized as falsy\n } else if (Array.isArray(env.autoTrim)) {\n // kinda confusing\n // but _}} will trim the left side of the following string\n leftTrim = env.autoTrim[1];\n rightTrim = env.autoTrim[0];\n }\n\n if (wsLeft || wsLeft === false) {\n leftTrim = wsLeft;\n }\n\n if (wsRight || wsRight === false) {\n rightTrim = wsRight;\n }\n\n if (leftTrim === 'slurp' && rightTrim === 'slurp') {\n return str.trim();\n }\n\n if (leftTrim === '_' || leftTrim === 'slurp') {\n // console.log('trimming left' + leftTrim)\n // full slurp\n // eslint-disable-next-line no-extra-boolean-cast\n if (!!String.prototype.trimLeft) {\n str = str.trimLeft();\n } else {\n str = str.replace(/^[\\s\\uFEFF\\xA0]+/, '');\n }\n } else if (leftTrim === '-' || leftTrim === 'nl') {\n // console.log('trimming left nl' + leftTrim)\n // nl trim\n str = str.replace(/^(?:\\n|\\r|\\r\\n)/, '');\n }\n\n if (rightTrim === '_' || rightTrim === 'slurp') {\n // console.log('trimming right' + rightTrim)\n // full slurp\n // eslint-disable-next-line no-extra-boolean-cast\n if (!!String.prototype.trimRight) {\n str = str.trimRight();\n } else {\n str = str.replace(/[\\s\\uFEFF\\xA0]+$/, '');\n }\n } else if (rightTrim === '-' || rightTrim === 'nl') {\n // console.log('trimming right nl' + rightTrim)\n // nl trim\n str = str.replace(/(?:\\n|\\r|\\r\\n)$/, ''); // TODO: make sure this gets \\r\\n\n }\n\n return str;\n}\n\nexport { trimWS };\n","import SqrlErr, { ParseErr } from './err';\nimport { trimWS } from './utils';\n\n/* TYPES */\n\nimport { SqrlConfig } from './config';\n\nexport type TagType = 'h' | 'b' | 'i' | 'r' | 'c' | 'e' | 'q' | 's';\n// TODO: change to anagram \"QBIRCHES\"\nexport type TemplateAttribute = 'c' | 'f' | 'fp' | 'p' | 'n' | 'res' | 'err';\nexport type TemplateObjectAttribute = 'c' | 'p' | 'n' | 'res';\n\nexport type AstObject = string | TemplateObject;\n\nexport type Filter = [string, string] | [string, string, true];\n// [name, params, async]\nexport interface TemplateObject {\n n?: string;\n t?: 'h' | 'b' | 'i' | 'c' | 'q' | 'e' | 's';\n f: Array<Filter>;\n c?: string;\n p?: string;\n res?: string;\n d?: Array<AstObject>;\n raw?: boolean;\n a?: boolean; // async\n b?: Array<ParentTemplateObject>;\n}\n\nexport interface ParentTemplateObject extends TemplateObject {\n d: Array<AstObject>;\n b: Array<ParentTemplateObject>;\n}\n\n/* END TYPES */\n\nconst asyncRegExp = /^async +/;\n\nconst templateLitReg =\n /`(?:\\\\[\\s\\S]|\\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})*}|(?!\\${)[^\\\\`])*`/g;\n\nconst singleQuoteReg = /'(?:\\\\[\\s\\w\"'\\\\`]|[^\\n\\r'\\\\])*?'/g;\n\nconst doubleQuoteReg = /\"(?:\\\\[\\s\\w\"'\\\\`]|[^\\n\\r\"\\\\])*?\"/g;\n\nconst specialCharsReg = /[.*+\\-?^${}()|[\\]\\\\]/g;\n\nfunction escapeRegExp(string: string) {\n // From MDN\n return specialCharsReg.test(string)\n ? string.replace(specialCharsReg, '\\\\$&') // $& means the whole matched string\n : string;\n}\n\nexport default function parse(str: string, env: SqrlConfig): Array<AstObject> {\n /* Adding for EJS compatibility */\n if (env.rmWhitespace) {\n // Code taken directly from EJS\n // Have to use two separate replaces here as `^` and `$` operators don't\n // work well with `\\r` and empty lines don't work well with the `m` flag.\n // Essentially, this replaces the whitespace at the beginning and end of\n // each line and removes multiple newlines.\n str = str.replace(/[\\r\\n]+/g, '\\n').replace(/^\\s+|\\s+$/gm, '');\n }\n /* End rmWhitespace option */\n\n templateLitReg.lastIndex = 0;\n singleQuoteReg.lastIndex = 0;\n doubleQuoteReg.lastIndex = 0;\n\n const envPrefixes = env.prefixes;\n\n const prefixes = [\n envPrefixes.h,\n envPrefixes.b,\n envPrefixes.i,\n envPrefixes.r,\n envPrefixes.c,\n envPrefixes.e,\n ].reduce(function (accumulator, prefix) {\n if (accumulator && prefix) {\n return accumulator + '|' + escapeRegExp(prefix);\n } else if (prefix) {\n // accumulator is empty\n return escapeRegExp(prefix);\n } else {\n // prefix and accumulator are both empty strings\n return accumulator;\n }\n }, '');\n\n const parseCloseReg = new RegExp(\n '([|()]|=>)|' + // powerchars\n '(\\'|\"|`|\\\\/\\\\*)|\\\\s*((\\\\/)?(-|_)?' + // comments, strings\n escapeRegExp(env.tags[1]) +\n ')',\n 'g'\n );\n\n const tagOpenReg = new RegExp(\n '([^]*?)' + escapeRegExp(env.tags[0]) + '(-|_)?\\\\s*(' + prefixes + ')?\\\\s*',\n 'g'\n );\n\n let startInd = 0;\n let trimNextLeftWs: string | false = false;\n\n function parseTag(\n tagOpenIndex: number,\n currentType: TagType\n ): TemplateObject {\n const currentObj: TemplateObject = { f: [] };\n let numParens = 0;\n let currentAttribute: TemplateAttribute = 'c'; // default - Valid values: 'c'=content, 'f'=filter, 'fp'=filter params, 'p'=param, 'n'=name\n\n if (currentType === 'h' || currentType === 'b' || currentType === 'c') {\n currentAttribute = 'n';\n } else if (currentType === 'r') {\n currentObj.raw = true;\n currentType = 'i';\n }\n\n function addAttrValue(indx: number) {\n const valUnprocessed = str.slice(startInd, indx);\n // console.log(valUnprocessed)\n let val = valUnprocessed.trim();\n if (currentAttribute === 'f') {\n if (val === 'safe') {\n currentObj.raw = true;\n } else {\n if (env.async && asyncRegExp.test(val)) {\n val = val.replace(asyncRegExp, '');\n currentObj.f.push([val, '', true]);\n } else {\n currentObj.f.push([val, '']);\n }\n }\n } else if (currentAttribute === 'fp') {\n currentObj.f[currentObj.f.length - 1][1] += val;\n } else if (currentAttribute === 'err') {\n if (val) {\n const found = valUnprocessed.search(/\\S/);\n ParseErr('invalid syntax', str, startInd + found);\n }\n } else {\n // if (currentObj[currentAttribute]) { // TODO make sure no errs\n // currentObj[currentAttribute] += val\n // } else {\n currentObj[currentAttribute] = val;\n // }\n }\n startInd = indx + 1;\n }\n\n parseCloseReg.lastIndex = startInd;\n\n let m;\n // tslint:disable-next-line:no-conditional-assignment\n while ((m = parseCloseReg.exec(str)) !== null) {\n const char = m[1];\n const punctuator = m[2];\n const tagClose = m[3];\n const slash = m[4];\n const wsControl = m[5];\n const i = m.index;\n\n if (char) {\n // Power character\n if (char === '(') {\n if (numParens === 0) {\n if (currentAttribute === 'n') {\n addAttrValue(i);\n currentAttribute = 'p';\n } else if (currentAttribute === 'f') {\n addAttrValue(i);\n currentAttribute = 'fp';\n }\n }\n numParens++;\n } else if (char === ')') {\n numParens--;\n if (numParens === 0 && currentAttribute !== 'c') {\n // Then it's closing a filter, block, or helper\n addAttrValue(i);\n\n currentAttribute = 'err'; // Reset the current attribute\n }\n } else if (numParens === 0 && char === '|') {\n addAttrValue(i); // this should actually always be whitespace or empty\n currentAttribute = 'f';\n } else if (char === '=>') {\n addAttrValue(i);\n startInd += 1; // this is 2 chars\n currentAttribute = 'res';\n }\n } else if (punctuator) {\n if (punctuator === '/*') {\n const commentCloseInd = str.indexOf('*/', parseCloseReg.lastIndex);\n if (commentCloseInd === -1) {\n ParseErr('unclosed comment', str, m.index);\n }\n parseCloseReg.lastIndex = commentCloseInd + 2; // since */ is 2 characters, and we're using indexOf rather than a RegExp\n } else if (punctuator === \"'\") {\n singleQuoteReg.lastIndex = m.index;\n\n const singleQuoteMatch = singleQuoteReg.exec(str);\n if (singleQuoteMatch) {\n parseCloseReg.lastIndex = singleQuoteReg.lastIndex;\n } else {\n ParseErr('unclosed string', str, m.index);\n }\n } else if (punctuator === '\"') {\n doubleQuoteReg.lastIndex = m.index;\n const doubleQuoteMatch = doubleQuoteReg.exec(str);\n\n if (doubleQuoteMatch) {\n parseCloseReg.lastIndex = doubleQuoteReg.lastIndex;\n } else {\n ParseErr('unclosed string', str, m.index);\n }\n } else if (punctuator === '`') {\n templateLitReg.lastIndex = m.index;\n const templateLitMatch = templateLitReg.exec(str);\n if (templateLitMatch) {\n parseCloseReg.lastIndex = templateLitReg.lastIndex;\n } else {\n ParseErr('unclosed string', str, m.index);\n }\n }\n } else if (tagClose) {\n addAttrValue(i);\n startInd = i + m[0].length;\n tagOpenReg.lastIndex = startInd;\n // console.log('tagClose: ' + startInd)\n trimNextLeftWs = wsControl;\n if (slash && currentType === 'h') {\n currentType = 's';\n } // TODO throw err\n currentObj.t = currentType;\n return currentObj;\n }\n }\n ParseErr('unclosed tag', str, tagOpenIndex);\n return currentObj; // To prevent TypeScript from erroring\n }\n\n function parseContext(\n parentObj: TemplateObject,\n firstParse?: boolean\n ): ParentTemplateObject {\n parentObj.b = []; // assume there will be blocks // TODO: perf optimize this\n parentObj.d = [];\n let lastBlock: ParentTemplateObject | false = false;\n let buffer: Array<AstObject> = [];\n\n function pushString(\n strng: string,\n shouldTrimRightOfString?: string | false\n ) {\n if (strng) {\n // if string is truthy it must be of type 'string'\n\n // TODO: benchmark replace( /(\\\\|')/g, '\\\\$1')\n strng = trimWS(\n strng,\n env,\n trimNextLeftWs, // this will only be false on the first str, the next ones will be null or undefined\n shouldTrimRightOfString\n );\n\n if (strng) {\n // replace \\ with \\\\, ' with \\'\n\n strng = strng.replace(/\\\\|'/g, '\\\\$&').replace(/\\r\\n|\\n|\\r/g, '\\\\n');\n // we're going to convert all CRLF to LF so it doesn't take more than one replace\n\n buffer.push(strng);\n }\n }\n }\n\n // Random TODO: parentObj.b doesn't need to have t: #\n let tagOpenMatch;\n // tslint:disable-next-line:no-conditional-assignment\n while ((tagOpenMatch = tagOpenReg.exec(str)) !== null) {\n const precedingString = tagOpenMatch[1];\n const shouldTrimRightPrecedingString = tagOpenMatch[2];\n const prefix = tagOpenMatch[3] || '';\n let prefixType: TagType | undefined;\n\n for (const key in envPrefixes) {\n if (envPrefixes[key] === prefix) {\n prefixType = key as TagType;\n break;\n }\n }\n\n pushString(precedingString, shouldTrimRightPrecedingString);\n startInd = tagOpenMatch.index + tagOpenMatch[0].length;\n\n if (!prefixType) {\n ParseErr('unrecognized tag type: ' + prefix, str, startInd);\n }\n\n let currentObj = parseTag(tagOpenMatch.index, prefixType as TagType);\n // ===== NOW ADD THE OBJECT TO OUR BUFFER =====\n\n const currentType = currentObj.t;\n if (currentType === 'h') {\n const hName = currentObj.n || '';\n if (env.async && asyncRegExp.test(hName)) {\n currentObj.a = true;\n currentObj.n = hName.replace(asyncRegExp, '');\n }\n currentObj = parseContext(currentObj); // currentObj is the parent object\n buffer.push(currentObj);\n } else if (currentType === 'c') {\n // tag close\n if (parentObj.n === currentObj.n) {\n if (lastBlock) {\n // If there's a previous block\n lastBlock.d = buffer;\n parentObj.b.push(lastBlock);\n } else {\n parentObj.d = buffer;\n }\n // console.log('parentObj: ' + JSON.stringify(parentObj))\n return parentObj as ParentTemplateObject;\n } else {\n ParseErr(\n \"Helper start and end don't match\",\n str,\n tagOpenMatch.index + tagOpenMatch[0].length\n );\n }\n } else if (currentType === 'b') {\n // block\n // TODO: make sure async stuff inside blocks are recognized\n if (lastBlock) {\n // If there's a previous block\n lastBlock.d = buffer;\n parentObj.b.push(lastBlock);\n } else {\n parentObj.d = buffer;\n }\n\n const blockName = currentObj.n || '';\n if (env.async && asyncRegExp.test(blockName)) {\n currentObj.a = true;\n currentObj.n = blockName.replace(asyncRegExp, '');\n }\n\n lastBlock = currentObj as ParentTemplateObject; // Set the 'lastBlock' object to the value of the current block\n\n buffer = [];\n } else if (currentType === 's') {\n const selfClosingHName = currentObj.n || '';\n if (env.async && asyncRegExp.test(selfClosingHName)) {\n currentObj.a = true;\n currentObj.n = selfClosingHName.replace(asyncRegExp, '');\n }\n buffer.push(currentObj);\n } else {\n buffer.push(currentObj);\n }\n // ===== DONE ADDING OBJECT TO BUFFER =====\n }\n\n if (firstParse) {\n pushString(str.slice(startInd, str.length), false);\n parentObj.d = buffer;\n } else {\n throw SqrlErr('unclosed helper \"' + parentObj.n + '\"');\n // It should have returned by now\n }\n\n return parentObj as ParentTemplateObject;\n }\n\n const parseResult = parseContext({ f: [] }, true);\n // console.log(JSON.stringify(parseResult))\n if (env.plugins) {\n for (let i = 0; i < env.plugins.length; i++) {\n const plugin = env.plugins[i];\n if (plugin.processAST) {\n parseResult.d = plugin.processAST(parseResult.d, env);\n }\n }\n }\n return parseResult.d; // Parse the very outside context\n}\n","import Parse, { AstObject, Filter, ParentTemplateObject } from './parse';\n\n/* TYPES */\n\nimport { SqrlConfig } from './config';\ntype ParsedTagType = 'h' | 's' | 'e' | 'i';\n// import SqrlErr from './err'\n\n/* END TYPES */\n\nexport default function compileToString(str: string, env: SqrlConfig) {\n const buffer: Array<AstObject> = Parse(str, env);\n\n let res =\n \"var tR='';\" +\n (env.useWith ? 'with(' + env.varName + '||{}){' : '') +\n compileScope(buffer, env) +\n 'if(cb){cb(null,tR)} return tR' +\n (env.useWith ? '}' : '');\n\n if (env.plugins) {\n for (let i = 0; i < env.plugins.length; i++) {\n const plugin = env.plugins[i];\n if (plugin.processFnString) {\n res = plugin.processFnString(res, env);\n }\n }\n }\n\n return res;\n\n // TODO: is `return cb()` necessary, or could we just do `cb()`\n}\n\nfunction filter(str: string, filters: Array<Filter>) {\n for (let i = 0; i < filters.length; i++) {\n const name = filters[i][0];\n const params = filters[i][1];\n const isFilterAsync = filters[i][2];\n\n // if (isFilterAsync && !env.async) {\n // throw SqrlErr(\"Async filter '\" + name + \"' in non-async env\")\n // }\n // Let the JS compiler do this, compile() will catch it\n\n str = (isFilterAsync ? 'await ' : '') + \"c.l('F','\" + name + \"')(\" + str;\n if (params) {\n str += ',' + params;\n }\n str += ')';\n }\n return str;\n}\n\n// TODO: Use type intersections for TemplateObject, etc.\n// so I don't have to make properties mandatory\n\nfunction compileHelper(\n env: SqrlConfig,\n res: string,\n descendants: Array<AstObject>,\n params: string,\n isAsync?: boolean,\n name?: string\n) {\n let ret =\n '{exec:' +\n (isAsync ? 'async ' : '') +\n compileScopeIntoFunction(descendants, res, env) +\n ',params:[' +\n params +\n ']';\n if (name) {\n ret += \",name:'\" + name + \"'\";\n }\n if (isAsync) {\n ret += ',async:true';\n }\n ret += '}';\n return ret;\n}\n\nfunction compileBlocks(blocks: Array<ParentTemplateObject>, env: SqrlConfig) {\n let ret = '[';\n for (let i = 0; i < blocks.length; i++) {\n const block = blocks[i];\n ret += compileHelper(\n env,\n block.res || '',\n block.d,\n block.p || '',\n block.a,\n block.n\n );\n if (i < blocks.length) {\n ret += ',';\n }\n }\n ret += ']';\n return ret;\n}\n\nexport function compileScopeIntoFunction(\n buff: Array<AstObject>,\n res: string,\n env: SqrlConfig\n) {\n return (\n 'function(' + res + \"){var tR='';\" + compileScope(buff, env) + 'return tR}'\n );\n}\n\nexport function compileScope(buff: Array<AstObject>, env: SqrlConfig) {\n let i = 0;\n const buffLength = buff.length;\n let returnStr = '';\n\n for (i; i < buffLength; i++) {\n const currentBlock = buff[i];\n if (typeof currentBlock === 'string') {\n const str = currentBlock;\n\n // we know string exists\n returnStr += \"tR+='\" + str + \"';\";\n } else {\n const type: ParsedTagType = currentBlock.t as ParsedTagType; // h, s, e, i\n let content = currentBlock.c || '';\n const filters = currentBlock.f;\n const name = currentBlock.n || '';\n const params = currentBlock.p || '';\n const res = currentBlock.res || '';\n const blocks = currentBlock.b;\n const isAsync = !!currentBlock.a; // !! is to booleanize it\n // if (isAsync && !env.async) {\n // throw SqrlErr(\"Async block or helper '\" + name + \"' in non-async env\")\n // }\n // Let compiler do this\n if (type === 'i') {\n if (env.defaultFilter) {\n content = \"c.l('F','\" + env.defaultFilter + \"')(\" + content + ')';\n }\n let filtered = filter(content, filters);\n if (!currentBlock.raw && env.autoEscape) {\n filtered = \"c.l('F','e')(\" + filtered + ')';\n }\n returnStr += 'tR+=' + filtered + ';';\n // reference\n } else if (type === 'h') {\n // helper\n if (env.storage.nativeHelpers.get(name)) {\n returnStr += env.storage.nativeHelpers.get(name)(currentBlock, env);\n } else {\n let helperReturn =\n (isAsync ? 'await ' : '') +\n \"c.l('H','\" +\n name +\n \"')(\" +\n compileHelper(\n env,\n res,\n (currentBlock as ParentTemplateObject).d,\n params,\n isAsync\n );\n if (blocks) {\n helperReturn += ',' + compileBlocks(blocks, env);\n } else {\n helperReturn += ',[]';\n }\n helperReturn += ',c)';\n\n returnStr += 'tR+=' + filter(helperReturn, filters) + ';';\n }\n } else if (type === 's') {\n // self-closing helper\n\n returnStr +=\n 'tR+=' +\n filter(\n (isAsync ? 'await ' : '') +\n \"c.l('H','\" +\n name +\n \"')({params:[\" +\n params +\n ']},[],c)',\n filters\n ) +\n ';';\n } else if (type === 'e') {\n // execute\n returnStr += content + '\\n';\n }\n }\n }\n\n return returnStr;\n}\n","import { copyProps } from './utils';\n\n/* TYPES */\n\ninterface Dict<T> {\n // Basically, an object where all keys point to a value of the same type\n [key: string]: T;\n}\n\n/* END TYPES */\n\nclass Cacher<T> {\n constructor(private cache: Dict<T>) {}\n define(key: string, val: T) {\n this.cache[key] = val;\n }\n get(key: string) {\n // string | array.\n // TODO: allow array of keys to look down\n // TODO: create plugin to allow referencing helpers, filters with dot notation\n return this.cache[key];\n }\n remove(key: string) {\n delete this.cache[key];\n }\n reset() {\n this.cache = {};\n }\n load(cacheObj: Dict<T>) {\n // TODO: this will err with deep objects and `storage` or `plugins` keys.\n // Update Feb 26: EDITED so it shouldn't err\n copyProps(this.cache, cacheObj, true);\n }\n}\n\nexport { Cacher };\n","import SqrlErr from './err';\n\nexport function errWithBlocksOrFilters(\n name: string,\n blocks: Array<any> | false, // false means don't check\n filters: Array<any> | false,\n native?: boolean\n) {\n if (blocks && blocks.length > 0) {\n throw SqrlErr(\n (native ? 'Native' : '') + \"Helper '\" + name + \"' doesn't accept blocks\"\n );\n }\n if (filters && filters.length > 0) {\n throw SqrlErr(\n (native ? 'Native' : '') + \"Helper '\" + name + \"' doesn't accept filters\"\n );\n }\n}\n\n/* ASYNC LOOP FNs */\nexport function asyncArrLoop(\n arr: Array<any>,\n index: number,\n fn: Function,\n res: string,\n cb: Function\n) {\n fn(arr[index], index).then(function (val: string) {\n res += val;\n if (index === arr.length - 1) {\n cb(res);\n } else {\n asyncArrLoop(arr, index + 1, fn, res, cb);\n }\n });\n}\n\nexport function asyncObjLoop(\n obj: { [index: string]: any },\n keys: Array<string>,\n index: number,\n fn: Function,\n res: string,\n cb: Function\n) {\n fn(keys[index], obj[keys[index]]).then(function (val: string) {\n res += val;\n if (index === keys.length - 1) {\n cb(res);\n } else {\n asyncObjLoop(obj, keys, index + 1, fn, res, cb);\n }\n });\n}\n\nconst escMap: EscapeMap = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;',\n};\n\nexport function replaceChar(s: string): string {\n return escMap[s];\n}\n\nexport function XMLEscape(str: unknown) {\n // To deal with XSS. Based on Escape implementations of Mustache.JS and Marko, then customized.\n const newStr = String(str);\n if (/[&<>\"']/.test(newStr)) {\n return newStr.replace(/[&<>\"']/g, replaceChar);\n } else {\n return newStr;\n }\n}\n\n/* INTERFACES */\ninterface EscapeMap {\n '&': '&amp;';\n '<': '&lt;';\n '>': '&gt;';\n '\"': '&quot;';\n \"'\": '&#39;';\n [index: string]: string;\n}\n","import { Cacher } from './storage';\nimport SqrlErr from './err';\nimport { compileScope, compileScopeIntoFunction } from './compile-string';\nimport { hasOwnProp } from './utils';\nimport {\n errWithBlocksOrFilters,\n asyncArrLoop,\n asyncObjLoop,\n XMLEscape,\n} from './container-utils';\n\n/* TYPES */\n\nimport { SqrlConfig } from './config';\nimport { TemplateFunction } from './compile';\nimport { ParentTemplateObject } from './parse';\n\nexport interface HelperContent {\n exec: Function;\n params: Array<any>;\n async?: boolean;\n}\n\nexport interface HelperBlock extends HelperContent {\n name: string;\n}\n\nexport type HelperFunction = (\n content: HelperContent,\n blocks: Array<HelperBlock>,\n config: SqrlConfig\n) => string | Promise<string>;\n\nexport type FilterFunction = (...args: any[]) => any | Promise<any>;\n\ninterface IncludeHelperContent extends HelperContent {\n params: [string, object];\n}\n\ninterface GenericData {\n [index: string]: any;\n}\n\n/* END TYPES */\n\nconst templates = new Cacher<TemplateFunction>({});\n\n/* ASYNC LOOP FNs */\n\nconst helpers = new Cacher<HelperFunction>({\n each: function (content: HelperContent, blocks: Array<HelperBlock>) {\n let res = '';\n const arr = content.params[0];\n errWithBlocksOrFilters('each', blocks, false);\n\n if (content.async) {\n return new Promise(function (resolve) {\n asyncArrLoop(arr, 0, content.exec, res, resolve);\n });\n } else {\n for (let i = 0; i < arr.length; i++) {\n res += content.exec(arr[i], i);\n }\n return res;\n }\n },\n foreach: function (content: HelperContent, blocks: Array<HelperBlock>) {\n const obj = content.params[0];\n errWithBlocksOrFilters('foreach', blocks, false);\n\n if (content.async) {\n return new Promise(function (resolve) {\n asyncObjLoop(obj, Object.keys(obj), 0, content.exec, '', resolve);\n });\n } else {\n let res = '';\n\n for (const key in obj) {\n if (!hasOwnProp(obj, key)) continue;\n res += content.exec(key, obj[key]); // todo: check on order\n }\n return res;\n }\n },\n include: function (\n content: IncludeHelperContent,\n blocks: Array<HelperBlock>,\n config: SqrlConfig\n ): string {\n errWithBlocksOrFilters('include', blocks, false);\n const template = config.storage.templates.get(content.params[0]);\n if (!template) {\n throw SqrlErr('Could not fetch template \"' + content.params[0] + '\"');\n }\n return template(content.params[1], config);\n } as HelperFunction,\n extends: function (\n content: IncludeHelperContent,\n blocks: Array<HelperBlock>,\n config: SqrlConfig\n ): string {\n const data: GenericData = content.params[1] || {};\n data.content = content.exec();\n\n for (let i = 0; i < blocks.length; i++) {\n const currentBlock = blocks[i];\n data[currentBlock.name] = currentBlock.exec();\n }\n\n const template = config.storage.templates.get(content.params[0]);\n if (!template) {\n throw SqrlErr('Could not fetch template \"' + content.params[0] + '\"');\n }\n return template(data, config);\n } as HelperFunction,\n useScope: function (\n content: HelperContent,\n blocks: Array<HelperBlock>\n ): string {\n errWithBlocksOrFilters('useScope', blocks, false);\n\n return content.exec(content.params[0]);\n } as HelperFunction,\n});\n\nconst nativeHelpers = new Cacher<Function>({\n if: function (buffer: ParentTemplateObject, env: SqrlConfig) {\n errWithBlocksOrFilters('if', false, buffer.f, true);\n\n let returnStr = 'if(' + buffer.p + '){' + compileScope(buffer.d, env) + '}';\n if (buffer.b) {\n for (let i = 0; i < buffer.b.length; i++) {\n const currentBlock = buffer.b[i];\n if (currentBlock.n === 'else') {\n returnStr += 'else{' + compileScope(currentBlock.d, env) + '}';\n } else if (currentBlock.n === 'elif') {\n returnStr +=\n 'else if(' +\n currentBlock.p +\n '){' +\n compileScope(currentBlock.d, env) +\n '}';\n }\n }\n }\n return returnStr;\n },\n try: function (buffer: ParentTemplateObject, env: SqrlConfig) {\n errWithBlocksOrFilters('try', false, buffer.f, true);\n\n if (!buffer.b || buffer.b.length !== 1 || buffer.b[0].n !== 'catch') {\n throw SqrlErr(\"native helper 'try' only accepts 1 block, 'catch'\");\n }\n let returnStr = 'try{' + compileScope(buffer.d, env) + '}';\n\n const currentBlock = buffer.b[0];\n returnStr +=\n 'catch' +\n (currentBlock.res ? '(' + currentBlock.res + ')' : '') +\n '{' +\n compileScope(currentBlock.d, env) +\n '}';\n\n return returnStr;\n },\n block: function (buffer: ParentTemplateObject, env: SqrlConfig) {\n errWithBlocksOrFilters('block', buffer.b, buffer.f, true);\n\n const returnStr =\n 'if(!' +\n env.varName +\n '[' +\n buffer.p +\n ']){tR+=(' +\n compileScopeIntoFunction(buffer.d, '', env) +\n ')()}else{tR+=' +\n env.varName +\n '[' +\n buffer.p +\n ']}';\n\n return returnStr;\n },\n});\n\nconst filters = new Cacher<FilterFunction>({ e: XMLEscape });\n\nexport { templates, helpers, nativeHelpers, filters };\n","import {\n helpers,\n nativeHelpers,\n filters,\n templates,\n HelperFunction,\n FilterFunction,\n} from './containers';\nimport SqrlErr from './err';\nimport { copyProps } from './utils';\n\n/* TYPES */\n\nexport type FetcherFunction = (\n container: 'H' | 'F',\n name: string\n) => Function | undefined;\nimport { TemplateFunction } from './compile';\nimport { Cacher } from './storage';\n// import { TagType } from './parse'\n\ntype trimConfig = 'nl' | 'slurp' | false;\n\nexport interface SqrlConfig {\n varName: string;\n autoTrim: trimConfig | [trimConfig, trimConfig];\n rmWhitespace?: boolean;\n autoEscape: boolean;\n defaultFilter: false | string;\n tags: [string, string];\n l: FetcherFunction;\n plugins: Array<{ processFnString?: Function; processAST?: Function }>;\n async: boolean;\n storage: {\n helpers: Cacher<HelperFunction>;\n nativeHelpers: Cacher<Function>;\n filters: Cacher<FilterFunction>;\n templates: Cacher<TemplateFunction>;\n };\n prefixes: {\n h: string;\n b: string;\n i: string;\n r: string;\n c: string;\n e: string;\n [index: string]: string;\n };\n cache: boolean;\n views?: string | Array<string>;\n root?: string;\n filename?: string;\n name?: string;\n 'view cache'?: boolean;\n useWith?: boolean;\n [index: string]: any;\n}\n\nexport type PartialConfig = {\n [P in keyof SqrlConfig]?: SqrlConfig[P];\n};\n\n/* END TYPES */\n\nconst defaultConfig: SqrlConfig = {\n varName: 'it',\n autoTrim: [false, 'nl'],\n autoEscape: true,\n defaultFilter: false,\n tags: ['{{', '}}'],\n l: function (\n container: 'H' | 'F',\n name: string\n ): HelperFunction | FilterFunction | undefined {\n if (container === 'H') {\n const hRet = this.storage.helpers.get(name) as HelperFunction | undefined;\n if (hRet) {\n return hRet;\n } else {\n throw SqrlErr(\"Can't find helper '\" + name + \"'\");\n }\n } else if (container === 'F') {\n const fRet = this.storage.filters.get(name) as FilterFunction | undefined;\n if (fRet) {\n return fRet;\n } else {\n throw SqrlErr(\"Can't find filter '\" + name + \"'\");\n }\n }\n },\n async: false,\n storage: {\n helpers: helpers,\n nativeHelpers: nativeHelpers,\n filters: filters,\n templates: templates,\n },\n prefixes: {\n h: '@',\n b: '#',\n i: '',\n r: '*',\n c: '/',\n e: '!',\n },\n cache: false,\n plugins: [],\n useWith: false,\n};\n\ndefaultConfig.l.bind(defaultConfig);\n\nfunction getConfig(\n override: PartialConfig,\n baseConfig?: SqrlConfig\n): SqrlConfig {\n // TODO: run more tests on this\n\n const res: PartialConfig = {}; // Linked\n copyProps(res, defaultConfig); // Creates deep clone of res, 1 layer deep\n\n if (baseConfig) {\n copyProps(res, baseConfig);\n }\n\n if (override) {\n copyProps(res, override);\n }\n\n (res as SqrlConfig).l.bind(res);\n\n return res as SqrlConfig;\n}\n\nexport { defaultConfig, getConfig };\n","import compileToString from './compile-string';\nimport { getConfig, SqrlConfig, PartialConfig } from './config';\nimport { asyncFunc } from './utils';\nimport SqrlErr from './err';\n\n/* TYPES */\n\nexport type TemplateFunction = (\n data: object,\n config: SqrlConfig,\n cb?: any\n) => string;\n\n/* END TYPES */\n\nexport default function compile(\n str: string,\n env?: PartialConfig\n): TemplateFunction {\n const options: SqrlConfig = getConfig(env || {});\n let ctor = Function; // constructor\n\n /* ASYNC HANDLING */\n // The below code is modified from mde/ejs. All credit should go to them.\n if (options.async) {\n // Have to use generated function for this, since in envs without support,\n // it breaks in parsing\n if (asyncFunc) {\n ctor = asyncFunc;\n } else {\n throw SqrlErr(\"This environment doesn't support async/await\");\n }\n }\n\n /* END ASYNC HANDLING */\n try {\n return new ctor(\n options.varName,\n 'c', // SqrlConfig\n 'cb', // optional callback\n compileToString(str, options)\n ) as TemplateFunction; // eslint-disable-line no-new-func\n } catch (e) {\n if (e instanceof SyntaxError) {\n throw SqrlErr(\n 'Bad template syntax\\n\\n' +\n e.message +\n '\\n' +\n Array(e.message.length + 1).join('=') +\n '\\n' +\n compileToString(str, options)\n );\n } else {\n throw e;\n }\n }\n}\n","import compile, { TemplateFunction } from './compile';\nimport { getConfig, SqrlConfig, PartialConfig } from './config';\nimport { promiseImpl } from './utils';\nimport SqrlErr from './err';\n\n/* TYPES */\n\n/* END TYPES */\n\nfunction handleCache(\n template: string | TemplateFunction,\n options: SqrlConfig\n): TemplateFunction {\n let templateFunc;\n\n if (\n options.cache &&\n options.name &&\n options.storage.templates.get(options.name)\n ) {\n return options.storage.templates.get(options.name);\n }\n\n if (typeof template === 'function') {\n templateFunc = template;\n } else {\n templateFunc = compile(template, options);\n }\n\n if (options.cache && options.name) {\n options.storage.templates.define(options.name, templateFunc);\n }\n\n return templateFunc;\n}\n\nexport default function render(\n template: string | TemplateFunction,\n data: object,\n env?: PartialConfig,\n cb?: any\n) {\n const options = getConfig(env || {});\n\n if (options.async) {\n let result;\n if (!cb) {\n // No callback, try returning a promise\n if (typeof promiseImpl === 'function') {\n return new promiseImpl(function (resolve: Function, reject: Function) {\n try {\n result = handleCache(template, options)(data, options);\n resolve(result);\n } catch (err) {\n reject(err);\n }\n });\n } else {\n throw SqrlErr(\n \"Please provide a callback function, this env doesn't support Promises\"\n );\n }\n } else {\n try {\n handleCache(template, options)(data, options, cb);\n } catch (err) {\n return cb(err);\n }\n }\n } else {\n return handleCache(template, options)(data, options);\n }\n}\n","import * as squirrel from './squirrelly/browser';\nimport type { IndexResult, AlgoliaResultHit } from '../../../interface';\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 if (!str.startsWith('/')) str = '/' + 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 { debounce } from '../../utils/throttle';\nimport { Squirrel } from './lib/template';\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 correct 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 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[]) => any = 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 searchIndex: this.searchIndex,\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(/&gt;/gm, '>')\n .replace(/&lt;/gm, '<')\n .replace(/&amp;/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"],"version":3}
1
+ {"file":"nano-algolia.entry.js","mappings":"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","names":["Parse","squirrel.filters"],"sources":["./node_modules/stencil-wormhole/dist/esm/universe.js","./src/utils/promise-queue.ts","./src/components/algolia/lib/squirrelly/err.ts","./src/components/algolia/lib/squirrelly/utils.ts","./src/components/algolia/lib/squirrelly/parse.ts","./src/components/algolia/lib/squirrelly/compile-string.ts","./src/components/algolia/lib/squirrelly/storage.ts","./src/components/algolia/lib/squirrelly/container-utils.ts","./src/components/algolia/lib/squirrelly/containers.ts","./src/components/algolia/lib/squirrelly/config.ts","./src/components/algolia/lib/squirrelly/compile.ts","./src/components/algolia/lib/squirrelly/render.ts","./src/components/algolia/lib/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 setPrototypeOf(obj: any, proto: any) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(obj, proto);\n } else {\n obj.__proto__ = proto;\n }\n}\n\nexport default function SqrlErr(message: string): Error {\n const err = new Error(message);\n setPrototypeOf(err, SqrlErr.prototype);\n return err;\n}\n\nSqrlErr.prototype = Object.create(Error.prototype, {\n name: { value: 'Squirrelly Error', enumerable: false },\n});\n\n// TODO: Class transpilation adds a lot to the bundle size\n\nexport function ParseErr(message: string, str: string, indx: number) {\n const whitespace = str.slice(0, indx).split(/\\n/);\n\n const lineNo = whitespace.length;\n const colNo = whitespace[lineNo - 1].length + 1;\n message +=\n ' at line ' +\n lineNo +\n ' col ' +\n colNo +\n ':\\n\\n' +\n ' ' +\n str.split(/\\n/)[lineNo - 1] +\n '\\n' +\n ' ' +\n Array(colNo).join(' ') +\n '^';\n throw SqrlErr(message);\n}\n","// TODO: allow '-' to trim up until newline. Use [^\\S\\n\\r] instead of \\s\n// TODO: only include trimLeft polyfill if not in ES6\n\n/* TYPES */\n\nimport { SqrlConfig } from './config';\n\n/* END TYPES */\n\nexport const promiseImpl = new Function('return this')().Promise;\n\nlet asyncFunc: FunctionConstructor | false = false;\n\ntry {\n asyncFunc = new Function('return (async function(){}).constructor')();\n} catch (e) {\n // We shouldn't actually ever have any other errors, but...\n if (!(e instanceof SyntaxError)) {\n throw e;\n }\n}\n\nexport { asyncFunc };\n\nexport function hasOwnProp(obj: object, prop: string) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nexport function copyProps<T>(toObj: T, fromObj: T, notConfig?: boolean) {\n for (const key in fromObj) {\n if (hasOwnProp(fromObj as unknown as object, key)) {\n if (\n fromObj[key] != null &&\n typeof fromObj[key] == 'object' &&\n (key === 'storage' || key === 'prefixes') &&\n !notConfig // not called from Cache.load\n ) {\n // plugins or storage\n // Note: this doesn't merge from initial config!\n // Deep clone instead of assigning\n // TODO: run checks on this\n toObj[key] = copyProps(\n /*toObj[key] ||*/ {} as T[Extract<keyof T, string>],\n fromObj[key]\n );\n } else {\n toObj[key] = fromObj[key];\n }\n }\n }\n return toObj;\n}\n\nfunction trimWS(\n str: string,\n env: SqrlConfig,\n wsLeft: string | false,\n wsRight?: string | false\n): string {\n let leftTrim;\n let rightTrim;\n\n if (typeof env.autoTrim === 'string') {\n leftTrim = rightTrim = env.autoTrim;\n // Don't need to check if env.autoTrim is false\n // Because leftTrim, rightTrim are initialized as falsy\n } else if (Array.isArray(env.autoTrim)) {\n // kinda confusing\n // but _}} will trim the left side of the following string\n leftTrim = env.autoTrim[1];\n rightTrim = env.autoTrim[0];\n }\n\n if (wsLeft || wsLeft === false) {\n leftTrim = wsLeft;\n }\n\n if (wsRight || wsRight === false) {\n rightTrim = wsRight;\n }\n\n if (leftTrim === 'slurp' && rightTrim === 'slurp') {\n return str.trim();\n }\n\n if (leftTrim === '_' || leftTrim === 'slurp') {\n // console.log('trimming left' + leftTrim)\n // full slurp\n // eslint-disable-next-line no-extra-boolean-cast\n if (!!String.prototype.trimLeft) {\n str = str.trimLeft();\n } else {\n str = str.replace(/^[\\s\\uFEFF\\xA0]+/, '');\n }\n } else if (leftTrim === '-' || leftTrim === 'nl') {\n // console.log('trimming left nl' + leftTrim)\n // nl trim\n str = str.replace(/^(?:\\n|\\r|\\r\\n)/, '');\n }\n\n if (rightTrim === '_' || rightTrim === 'slurp') {\n // console.log('trimming right' + rightTrim)\n // full slurp\n // eslint-disable-next-line no-extra-boolean-cast\n if (!!String.prototype.trimRight) {\n str = str.trimRight();\n } else {\n str = str.replace(/[\\s\\uFEFF\\xA0]+$/, '');\n }\n } else if (rightTrim === '-' || rightTrim === 'nl') {\n // console.log('trimming right nl' + rightTrim)\n // nl trim\n str = str.replace(/(?:\\n|\\r|\\r\\n)$/, ''); // TODO: make sure this gets \\r\\n\n }\n\n return str;\n}\n\nexport { trimWS };\n","import SqrlErr, { ParseErr } from './err';\nimport { trimWS } from './utils';\n\n/* TYPES */\n\nimport { SqrlConfig } from './config';\n\nexport type TagType = 'h' | 'b' | 'i' | 'r' | 'c' | 'e' | 'q' | 's';\n// TODO: change to anagram \"QBIRCHES\"\nexport type TemplateAttribute = 'c' | 'f' | 'fp' | 'p' | 'n' | 'res' | 'err';\nexport type TemplateObjectAttribute = 'c' | 'p' | 'n' | 'res';\n\nexport type AstObject = string | TemplateObject;\n\nexport type Filter = [string, string] | [string, string, true];\n// [name, params, async]\nexport interface TemplateObject {\n n?: string;\n t?: 'h' | 'b' | 'i' | 'c' | 'q' | 'e' | 's';\n f: Array<Filter>;\n c?: string;\n p?: string;\n res?: string;\n d?: Array<AstObject>;\n raw?: boolean;\n a?: boolean; // async\n b?: Array<ParentTemplateObject>;\n}\n\nexport interface ParentTemplateObject extends TemplateObject {\n d: Array<AstObject>;\n b: Array<ParentTemplateObject>;\n}\n\n/* END TYPES */\n\nconst asyncRegExp = /^async +/;\n\nconst templateLitReg =\n /`(?:\\\\[\\s\\S]|\\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})*}|(?!\\${)[^\\\\`])*`/g;\n\nconst singleQuoteReg = /'(?:\\\\[\\s\\w\"'\\\\`]|[^\\n\\r'\\\\])*?'/g;\n\nconst doubleQuoteReg = /\"(?:\\\\[\\s\\w\"'\\\\`]|[^\\n\\r\"\\\\])*?\"/g;\n\nconst specialCharsReg = /[.*+\\-?^${}()|[\\]\\\\]/g;\n\nfunction escapeRegExp(string: string) {\n // From MDN\n return specialCharsReg.test(string)\n ? string.replace(specialCharsReg, '\\\\$&') // $& means the whole matched string\n : string;\n}\n\nexport default function parse(str: string, env: SqrlConfig): Array<AstObject> {\n /* Adding for EJS compatibility */\n if (env.rmWhitespace) {\n // Code taken directly from EJS\n // Have to use two separate replaces here as `^` and `$` operators don't\n // work well with `\\r` and empty lines don't work well with the `m` flag.\n // Essentially, this replaces the whitespace at the beginning and end of\n // each line and removes multiple newlines.\n str = str.replace(/[\\r\\n]+/g, '\\n').replace(/^\\s+|\\s+$/gm, '');\n }\n /* End rmWhitespace option */\n\n templateLitReg.lastIndex = 0;\n singleQuoteReg.lastIndex = 0;\n doubleQuoteReg.lastIndex = 0;\n\n const envPrefixes = env.prefixes;\n\n const prefixes = [\n envPrefixes.h,\n envPrefixes.b,\n envPrefixes.i,\n envPrefixes.r,\n envPrefixes.c,\n envPrefixes.e,\n ].reduce(function (accumulator, prefix) {\n if (accumulator && prefix) {\n return accumulator + '|' + escapeRegExp(prefix);\n } else if (prefix) {\n // accumulator is empty\n return escapeRegExp(prefix);\n } else {\n // prefix and accumulator are both empty strings\n return accumulator;\n }\n }, '');\n\n const parseCloseReg = new RegExp(\n '([|()]|=>)|' + // powerchars\n '(\\'|\"|`|\\\\/\\\\*)|\\\\s*((\\\\/)?(-|_)?' + // comments, strings\n escapeRegExp(env.tags[1]) +\n ')',\n 'g'\n );\n\n const tagOpenReg = new RegExp(\n '([^]*?)' + escapeRegExp(env.tags[0]) + '(-|_)?\\\\s*(' + prefixes + ')?\\\\s*',\n 'g'\n );\n\n let startInd = 0;\n let trimNextLeftWs: string | false = false;\n\n function parseTag(\n tagOpenIndex: number,\n currentType: TagType\n ): TemplateObject {\n const currentObj: TemplateObject = { f: [] };\n let numParens = 0;\n let currentAttribute: TemplateAttribute = 'c'; // default - Valid values: 'c'=content, 'f'=filter, 'fp'=filter params, 'p'=param, 'n'=name\n\n if (currentType === 'h' || currentType === 'b' || currentType === 'c') {\n currentAttribute = 'n';\n } else if (currentType === 'r') {\n currentObj.raw = true;\n currentType = 'i';\n }\n\n function addAttrValue(indx: number) {\n const valUnprocessed = str.slice(startInd, indx);\n // console.log(valUnprocessed)\n let val = valUnprocessed.trim();\n if (currentAttribute === 'f') {\n if (val === 'safe') {\n currentObj.raw = true;\n } else {\n if (env.async && asyncRegExp.test(val)) {\n val = val.replace(asyncRegExp, '');\n currentObj.f.push([val, '', true]);\n } else {\n currentObj.f.push([val, '']);\n }\n }\n } else if (currentAttribute === 'fp') {\n currentObj.f[currentObj.f.length - 1][1] += val;\n } else if (currentAttribute === 'err') {\n if (val) {\n const found = valUnprocessed.search(/\\S/);\n ParseErr('invalid syntax', str, startInd + found);\n }\n } else {\n // if (currentObj[currentAttribute]) { // TODO make sure no errs\n // currentObj[currentAttribute] += val\n // } else {\n currentObj[currentAttribute] = val;\n // }\n }\n startInd = indx + 1;\n }\n\n parseCloseReg.lastIndex = startInd;\n\n let m;\n // tslint:disable-next-line:no-conditional-assignment\n while ((m = parseCloseReg.exec(str)) !== null) {\n const char = m[1];\n const punctuator = m[2];\n const tagClose = m[3];\n const slash = m[4];\n const wsControl = m[5];\n const i = m.index;\n\n if (char) {\n // Power character\n if (char === '(') {\n if (numParens === 0) {\n if (currentAttribute === 'n') {\n addAttrValue(i);\n currentAttribute = 'p';\n } else if (currentAttribute === 'f') {\n addAttrValue(i);\n currentAttribute = 'fp';\n }\n }\n numParens++;\n } else if (char === ')') {\n numParens--;\n if (numParens === 0 && currentAttribute !== 'c') {\n // Then it's closing a filter, block, or helper\n addAttrValue(i);\n\n currentAttribute = 'err'; // Reset the current attribute\n }\n } else if (numParens === 0 && char === '|') {\n addAttrValue(i); // this should actually always be whitespace or empty\n currentAttribute = 'f';\n } else if (char === '=>') {\n addAttrValue(i);\n startInd += 1; // this is 2 chars\n currentAttribute = 'res';\n }\n } else if (punctuator) {\n if (punctuator === '/*') {\n const commentCloseInd = str.indexOf('*/', parseCloseReg.lastIndex);\n if (commentCloseInd === -1) {\n ParseErr('unclosed comment', str, m.index);\n }\n parseCloseReg.lastIndex = commentCloseInd + 2; // since */ is 2 characters, and we're using indexOf rather than a RegExp\n } else if (punctuator === \"'\") {\n singleQuoteReg.lastIndex = m.index;\n\n const singleQuoteMatch = singleQuoteReg.exec(str);\n if (singleQuoteMatch) {\n parseCloseReg.lastIndex = singleQuoteReg.lastIndex;\n } else {\n ParseErr('unclosed string', str, m.index);\n }\n } else if (punctuator === '\"') {\n doubleQuoteReg.lastIndex = m.index;\n const doubleQuoteMatch = doubleQuoteReg.exec(str);\n\n if (doubleQuoteMatch) {\n parseCloseReg.lastIndex = doubleQuoteReg.lastIndex;\n } else {\n ParseErr('unclosed string', str, m.index);\n }\n } else if (punctuator === '`') {\n templateLitReg.lastIndex = m.index;\n const templateLitMatch = templateLitReg.exec(str);\n if (templateLitMatch) {\n parseCloseReg.lastIndex = templateLitReg.lastIndex;\n } else {\n ParseErr('unclosed string', str, m.index);\n }\n }\n } else if (tagClose) {\n addAttrValue(i);\n startInd = i + m[0].length;\n tagOpenReg.lastIndex = startInd;\n // console.log('tagClose: ' + startInd)\n trimNextLeftWs = wsControl;\n if (slash && currentType === 'h') {\n currentType = 's';\n } // TODO throw err\n currentObj.t = currentType;\n return currentObj;\n }\n }\n ParseErr('unclosed tag', str, tagOpenIndex);\n return currentObj; // To prevent TypeScript from erroring\n }\n\n function parseContext(\n parentObj: TemplateObject,\n firstParse?: boolean\n ): ParentTemplateObject {\n parentObj.b = []; // assume there will be blocks // TODO: perf optimize this\n parentObj.d = [];\n let lastBlock: ParentTemplateObject | false = false;\n let buffer: Array<AstObject> = [];\n\n function pushString(\n strng: string,\n shouldTrimRightOfString?: string | false\n ) {\n if (strng) {\n // if string is truthy it must be of type 'string'\n\n // TODO: benchmark replace( /(\\\\|')/g, '\\\\$1')\n strng = trimWS(\n strng,\n env,\n trimNextLeftWs, // this will only be false on the first str, the next ones will be null or undefined\n shouldTrimRightOfString\n );\n\n if (strng) {\n // replace \\ with \\\\, ' with \\'\n\n strng = strng.replace(/\\\\|'/g, '\\\\$&').replace(/\\r\\n|\\n|\\r/g, '\\\\n');\n // we're going to convert all CRLF to LF so it doesn't take more than one replace\n\n buffer.push(strng);\n }\n }\n }\n\n // Random TODO: parentObj.b doesn't need to have t: #\n let tagOpenMatch;\n // tslint:disable-next-line:no-conditional-assignment\n while ((tagOpenMatch = tagOpenReg.exec(str)) !== null) {\n const precedingString = tagOpenMatch[1];\n const shouldTrimRightPrecedingString = tagOpenMatch[2];\n const prefix = tagOpenMatch[3] || '';\n let prefixType: TagType | undefined;\n\n for (const key in envPrefixes) {\n if (envPrefixes[key] === prefix) {\n prefixType = key as TagType;\n break;\n }\n }\n\n pushString(precedingString, shouldTrimRightPrecedingString);\n startInd = tagOpenMatch.index + tagOpenMatch[0].length;\n\n if (!prefixType) {\n ParseErr('unrecognized tag type: ' + prefix, str, startInd);\n }\n\n let currentObj = parseTag(tagOpenMatch.index, prefixType as TagType);\n // ===== NOW ADD THE OBJECT TO OUR BUFFER =====\n\n const currentType = currentObj.t;\n if (currentType === 'h') {\n const hName = currentObj.n || '';\n if (env.async && asyncRegExp.test(hName)) {\n currentObj.a = true;\n currentObj.n = hName.replace(asyncRegExp, '');\n }\n currentObj = parseContext(currentObj); // currentObj is the parent object\n buffer.push(currentObj);\n } else if (currentType === 'c') {\n // tag close\n if (parentObj.n === currentObj.n) {\n if (lastBlock) {\n // If there's a previous block\n lastBlock.d = buffer;\n parentObj.b.push(lastBlock);\n } else {\n parentObj.d = buffer;\n }\n // console.log('parentObj: ' + JSON.stringify(parentObj))\n return parentObj as ParentTemplateObject;\n } else {\n ParseErr(\n \"Helper start and end don't match\",\n str,\n tagOpenMatch.index + tagOpenMatch[0].length\n );\n }\n } else if (currentType === 'b') {\n // block\n // TODO: make sure async stuff inside blocks are recognized\n if (lastBlock) {\n // If there's a previous block\n lastBlock.d = buffer;\n parentObj.b.push(lastBlock);\n } else {\n parentObj.d = buffer;\n }\n\n const blockName = currentObj.n || '';\n if (env.async && asyncRegExp.test(blockName)) {\n currentObj.a = true;\n currentObj.n = blockName.replace(asyncRegExp, '');\n }\n\n lastBlock = currentObj as ParentTemplateObject; // Set the 'lastBlock' object to the value of the current block\n\n buffer = [];\n } else if (currentType === 's') {\n const selfClosingHName = currentObj.n || '';\n if (env.async && asyncRegExp.test(selfClosingHName)) {\n currentObj.a = true;\n currentObj.n = selfClosingHName.replace(asyncRegExp, '');\n }\n buffer.push(currentObj);\n } else {\n buffer.push(currentObj);\n }\n // ===== DONE ADDING OBJECT TO BUFFER =====\n }\n\n if (firstParse) {\n pushString(str.slice(startInd, str.length), false);\n parentObj.d = buffer;\n } else {\n throw SqrlErr('unclosed helper \"' + parentObj.n + '\"');\n // It should have returned by now\n }\n\n return parentObj as ParentTemplateObject;\n }\n\n const parseResult = parseContext({ f: [] }, true);\n // console.log(JSON.stringify(parseResult))\n if (env.plugins) {\n for (let i = 0; i < env.plugins.length; i++) {\n const plugin = env.plugins[i];\n if (plugin.processAST) {\n parseResult.d = plugin.processAST(parseResult.d, env);\n }\n }\n }\n return parseResult.d; // Parse the very outside context\n}\n","import Parse, { AstObject, Filter, ParentTemplateObject } from './parse';\n\n/* TYPES */\n\nimport { SqrlConfig } from './config';\ntype ParsedTagType = 'h' | 's' | 'e' | 'i';\n// import SqrlErr from './err'\n\n/* END TYPES */\n\nexport default function compileToString(str: string, env: SqrlConfig) {\n const buffer: Array<AstObject> = Parse(str, env);\n\n let res =\n \"var tR='';\" +\n (env.useWith ? 'with(' + env.varName + '||{}){' : '') +\n compileScope(buffer, env) +\n 'if(cb){cb(null,tR)} return tR' +\n (env.useWith ? '}' : '');\n\n if (env.plugins) {\n for (let i = 0; i < env.plugins.length; i++) {\n const plugin = env.plugins[i];\n if (plugin.processFnString) {\n res = plugin.processFnString(res, env);\n }\n }\n }\n\n return res;\n\n // TODO: is `return cb()` necessary, or could we just do `cb()`\n}\n\nfunction filter(str: string, filters: Array<Filter>) {\n for (let i = 0; i < filters.length; i++) {\n const name = filters[i][0];\n const params = filters[i][1];\n const isFilterAsync = filters[i][2];\n\n // if (isFilterAsync && !env.async) {\n // throw SqrlErr(\"Async filter '\" + name + \"' in non-async env\")\n // }\n // Let the JS compiler do this, compile() will catch it\n\n str = (isFilterAsync ? 'await ' : '') + \"c.l('F','\" + name + \"')(\" + str;\n if (params) {\n str += ',' + params;\n }\n str += ')';\n }\n return str;\n}\n\n// TODO: Use type intersections for TemplateObject, etc.\n// so I don't have to make properties mandatory\n\nfunction compileHelper(\n env: SqrlConfig,\n res: string,\n descendants: Array<AstObject>,\n params: string,\n isAsync?: boolean,\n name?: string\n) {\n let ret =\n '{exec:' +\n (isAsync ? 'async ' : '') +\n compileScopeIntoFunction(descendants, res, env) +\n ',params:[' +\n params +\n ']';\n if (name) {\n ret += \",name:'\" + name + \"'\";\n }\n if (isAsync) {\n ret += ',async:true';\n }\n ret += '}';\n return ret;\n}\n\nfunction compileBlocks(blocks: Array<ParentTemplateObject>, env: SqrlConfig) {\n let ret = '[';\n for (let i = 0; i < blocks.length; i++) {\n const block = blocks[i];\n ret += compileHelper(\n env,\n block.res || '',\n block.d,\n block.p || '',\n block.a,\n block.n\n );\n if (i < blocks.length) {\n ret += ',';\n }\n }\n ret += ']';\n return ret;\n}\n\nexport function compileScopeIntoFunction(\n buff: Array<AstObject>,\n res: string,\n env: SqrlConfig\n) {\n return (\n 'function(' + res + \"){var tR='';\" + compileScope(buff, env) + 'return tR}'\n );\n}\n\nexport function compileScope(buff: Array<AstObject>, env: SqrlConfig) {\n let i = 0;\n const buffLength = buff.length;\n let returnStr = '';\n\n for (i; i < buffLength; i++) {\n const currentBlock = buff[i];\n if (typeof currentBlock === 'string') {\n const str = currentBlock;\n\n // we know string exists\n returnStr += \"tR+='\" + str + \"';\";\n } else {\n const type: ParsedTagType = currentBlock.t as ParsedTagType; // h, s, e, i\n let content = currentBlock.c || '';\n const filters = currentBlock.f;\n const name = currentBlock.n || '';\n const params = currentBlock.p || '';\n const res = currentBlock.res || '';\n const blocks = currentBlock.b;\n const isAsync = !!currentBlock.a; // !! is to booleanize it\n // if (isAsync && !env.async) {\n // throw SqrlErr(\"Async block or helper '\" + name + \"' in non-async env\")\n // }\n // Let compiler do this\n if (type === 'i') {\n if (env.defaultFilter) {\n content = \"c.l('F','\" + env.defaultFilter + \"')(\" + content + ')';\n }\n let filtered = filter(content, filters);\n if (!currentBlock.raw && env.autoEscape) {\n filtered = \"c.l('F','e')(\" + filtered + ')';\n }\n returnStr += 'tR+=' + filtered + ';';\n // reference\n } else if (type === 'h') {\n // helper\n if (env.storage.nativeHelpers.get(name)) {\n returnStr += env.storage.nativeHelpers.get(name)(currentBlock, env);\n } else {\n let helperReturn =\n (isAsync ? 'await ' : '') +\n \"c.l('H','\" +\n name +\n \"')(\" +\n compileHelper(\n env,\n res,\n (currentBlock as ParentTemplateObject).d,\n params,\n isAsync\n );\n if (blocks) {\n helperReturn += ',' + compileBlocks(blocks, env);\n } else {\n helperReturn += ',[]';\n }\n helperReturn += ',c)';\n\n returnStr += 'tR+=' + filter(helperReturn, filters) + ';';\n }\n } else if (type === 's') {\n // self-closing helper\n\n returnStr +=\n 'tR+=' +\n filter(\n (isAsync ? 'await ' : '') +\n \"c.l('H','\" +\n name +\n \"')({params:[\" +\n params +\n ']},[],c)',\n filters\n ) +\n ';';\n } else if (type === 'e') {\n // execute\n returnStr += content + '\\n';\n }\n }\n }\n\n return returnStr;\n}\n","import { copyProps } from './utils';\n\n/* TYPES */\n\ninterface Dict<T> {\n // Basically, an object where all keys point to a value of the same type\n [key: string]: T;\n}\n\n/* END TYPES */\n\nclass Cacher<T> {\n constructor(private cache: Dict<T>) {}\n define(key: string, val: T) {\n this.cache[key] = val;\n }\n get(key: string) {\n // string | array.\n // TODO: allow array of keys to look down\n // TODO: create plugin to allow referencing helpers, filters with dot notation\n return this.cache[key];\n }\n remove(key: string) {\n delete this.cache[key];\n }\n reset() {\n this.cache = {};\n }\n load(cacheObj: Dict<T>) {\n // TODO: this will err with deep objects and `storage` or `plugins` keys.\n // Update Feb 26: EDITED so it shouldn't err\n copyProps(this.cache, cacheObj, true);\n }\n}\n\nexport { Cacher };\n","import SqrlErr from './err';\n\nexport function errWithBlocksOrFilters(\n name: string,\n blocks: Array<any> | false, // false means don't check\n filters: Array<any> | false,\n native?: boolean\n) {\n if (blocks && blocks.length > 0) {\n throw SqrlErr(\n (native ? 'Native' : '') + \"Helper '\" + name + \"' doesn't accept blocks\"\n );\n }\n if (filters && filters.length > 0) {\n throw SqrlErr(\n (native ? 'Native' : '') + \"Helper '\" + name + \"' doesn't accept filters\"\n );\n }\n}\n\n/* ASYNC LOOP FNs */\nexport function asyncArrLoop(\n arr: Array<any>,\n index: number,\n fn: Function,\n res: string,\n cb: Function\n) {\n fn(arr[index], index).then(function (val: string) {\n res += val;\n if (index === arr.length - 1) {\n cb(res);\n } else {\n asyncArrLoop(arr, index + 1, fn, res, cb);\n }\n });\n}\n\nexport function asyncObjLoop(\n obj: { [index: string]: any },\n keys: Array<string>,\n index: number,\n fn: Function,\n res: string,\n cb: Function\n) {\n fn(keys[index], obj[keys[index]]).then(function (val: string) {\n res += val;\n if (index === keys.length - 1) {\n cb(res);\n } else {\n asyncObjLoop(obj, keys, index + 1, fn, res, cb);\n }\n });\n}\n\nconst escMap: EscapeMap = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;',\n};\n\nexport function replaceChar(s: string): string {\n return escMap[s];\n}\n\nexport function XMLEscape(str: unknown) {\n // To deal with XSS. Based on Escape implementations of Mustache.JS and Marko, then customized.\n const newStr = String(str);\n if (/[&<>\"']/.test(newStr)) {\n return newStr.replace(/[&<>\"']/g, replaceChar);\n } else {\n return newStr;\n }\n}\n\n/* INTERFACES */\ninterface EscapeMap {\n '&': '&amp;';\n '<': '&lt;';\n '>': '&gt;';\n '\"': '&quot;';\n \"'\": '&#39;';\n [index: string]: string;\n}\n","import { Cacher } from './storage';\nimport SqrlErr from './err';\nimport { compileScope, compileScopeIntoFunction } from './compile-string';\nimport { hasOwnProp } from './utils';\nimport {\n errWithBlocksOrFilters,\n asyncArrLoop,\n asyncObjLoop,\n XMLEscape,\n} from './container-utils';\n\n/* TYPES */\n\nimport { SqrlConfig } from './config';\nimport { TemplateFunction } from './compile';\nimport { ParentTemplateObject } from './parse';\n\nexport interface HelperContent {\n exec: Function;\n params: Array<any>;\n async?: boolean;\n}\n\nexport interface HelperBlock extends HelperContent {\n name: string;\n}\n\nexport type HelperFunction = (\n content: HelperContent,\n blocks: Array<HelperBlock>,\n config: SqrlConfig\n) => string | Promise<string>;\n\nexport type FilterFunction = (...args: any[]) => any | Promise<any>;\n\ninterface IncludeHelperContent extends HelperContent {\n params: [string, object];\n}\n\ninterface GenericData {\n [index: string]: any;\n}\n\n/* END TYPES */\n\nconst templates = new Cacher<TemplateFunction>({});\n\n/* ASYNC LOOP FNs */\n\nconst helpers = new Cacher<HelperFunction>({\n each: function (content: HelperContent, blocks: Array<HelperBlock>) {\n let res = '';\n const arr = content.params[0];\n errWithBlocksOrFilters('each', blocks, false);\n\n if (content.async) {\n return new Promise(function (resolve) {\n asyncArrLoop(arr, 0, content.exec, res, resolve);\n });\n } else {\n for (let i = 0; i < arr.length; i++) {\n res += content.exec(arr[i], i);\n }\n return res;\n }\n },\n foreach: function (content: HelperContent, blocks: Array<HelperBlock>) {\n const obj = content.params[0];\n errWithBlocksOrFilters('foreach', blocks, false);\n\n if (content.async) {\n return new Promise(function (resolve) {\n asyncObjLoop(obj, Object.keys(obj), 0, content.exec, '', resolve);\n });\n } else {\n let res = '';\n\n for (const key in obj) {\n if (!hasOwnProp(obj, key)) continue;\n res += content.exec(key, obj[key]); // todo: check on order\n }\n return res;\n }\n },\n include: function (\n content: IncludeHelperContent,\n blocks: Array<HelperBlock>,\n config: SqrlConfig\n ): string {\n errWithBlocksOrFilters('include', blocks, false);\n const template = config.storage.templates.get(content.params[0]);\n if (!template) {\n throw SqrlErr('Could not fetch template \"' + content.params[0] + '\"');\n }\n return template(content.params[1], config);\n } as HelperFunction,\n extends: function (\n content: IncludeHelperContent,\n blocks: Array<HelperBlock>,\n config: SqrlConfig\n ): string {\n const data: GenericData = content.params[1] || {};\n data.content = content.exec();\n\n for (let i = 0; i < blocks.length; i++) {\n const currentBlock = blocks[i];\n data[currentBlock.name] = currentBlock.exec();\n }\n\n const template = config.storage.templates.get(content.params[0]);\n if (!template) {\n throw SqrlErr('Could not fetch template \"' + content.params[0] + '\"');\n }\n return template(data, config);\n } as HelperFunction,\n useScope: function (\n content: HelperContent,\n blocks: Array<HelperBlock>\n ): string {\n errWithBlocksOrFilters('useScope', blocks, false);\n\n return content.exec(content.params[0]);\n } as HelperFunction,\n});\n\nconst nativeHelpers = new Cacher<Function>({\n if: function (buffer: ParentTemplateObject, env: SqrlConfig) {\n errWithBlocksOrFilters('if', false, buffer.f, true);\n\n let returnStr = 'if(' + buffer.p + '){' + compileScope(buffer.d, env) + '}';\n if (buffer.b) {\n for (let i = 0; i < buffer.b.length; i++) {\n const currentBlock = buffer.b[i];\n if (currentBlock.n === 'else') {\n returnStr += 'else{' + compileScope(currentBlock.d, env) + '}';\n } else if (currentBlock.n === 'elif') {\n returnStr +=\n 'else if(' +\n currentBlock.p +\n '){' +\n compileScope(currentBlock.d, env) +\n '}';\n }\n }\n }\n return returnStr;\n },\n try: function (buffer: ParentTemplateObject, env: SqrlConfig) {\n errWithBlocksOrFilters('try', false, buffer.f, true);\n\n if (!buffer.b || buffer.b.length !== 1 || buffer.b[0].n !== 'catch') {\n throw SqrlErr(\"native helper 'try' only accepts 1 block, 'catch'\");\n }\n let returnStr = 'try{' + compileScope(buffer.d, env) + '}';\n\n const currentBlock = buffer.b[0];\n returnStr +=\n 'catch' +\n (currentBlock.res ? '(' + currentBlock.res + ')' : '') +\n '{' +\n compileScope(currentBlock.d, env) +\n '}';\n\n return returnStr;\n },\n block: function (buffer: ParentTemplateObject, env: SqrlConfig) {\n errWithBlocksOrFilters('block', buffer.b, buffer.f, true);\n\n const returnStr =\n 'if(!' +\n env.varName +\n '[' +\n buffer.p +\n ']){tR+=(' +\n compileScopeIntoFunction(buffer.d, '', env) +\n ')()}else{tR+=' +\n env.varName +\n '[' +\n buffer.p +\n ']}';\n\n return returnStr;\n },\n});\n\nconst filters = new Cacher<FilterFunction>({ e: XMLEscape });\n\nexport { templates, helpers, nativeHelpers, filters };\n","import {\n helpers,\n nativeHelpers,\n filters,\n templates,\n HelperFunction,\n FilterFunction,\n} from './containers';\nimport SqrlErr from './err';\nimport { copyProps } from './utils';\n\n/* TYPES */\n\nexport type FetcherFunction = (\n container: 'H' | 'F',\n name: string\n) => Function | undefined;\nimport { TemplateFunction } from './compile';\nimport { Cacher } from './storage';\n// import { TagType } from './parse'\n\ntype trimConfig = 'nl' | 'slurp' | false;\n\nexport interface SqrlConfig {\n varName: string;\n autoTrim: trimConfig | [trimConfig, trimConfig];\n rmWhitespace?: boolean;\n autoEscape: boolean;\n defaultFilter: false | string;\n tags: [string, string];\n l: FetcherFunction;\n plugins: Array<{ processFnString?: Function; processAST?: Function }>;\n async: boolean;\n storage: {\n helpers: Cacher<HelperFunction>;\n nativeHelpers: Cacher<Function>;\n filters: Cacher<FilterFunction>;\n templates: Cacher<TemplateFunction>;\n };\n prefixes: {\n h: string;\n b: string;\n i: string;\n r: string;\n c: string;\n e: string;\n [index: string]: string;\n };\n cache: boolean;\n views?: string | Array<string>;\n root?: string;\n filename?: string;\n name?: string;\n 'view cache'?: boolean;\n useWith?: boolean;\n [index: string]: any;\n}\n\nexport type PartialConfig = {\n [P in keyof SqrlConfig]?: SqrlConfig[P];\n};\n\n/* END TYPES */\n\nconst defaultConfig: SqrlConfig = {\n varName: 'it',\n autoTrim: [false, 'nl'],\n autoEscape: true,\n defaultFilter: false,\n tags: ['{{', '}}'],\n l: function (\n container: 'H' | 'F',\n name: string\n ): HelperFunction | FilterFunction | undefined {\n if (container === 'H') {\n const hRet = this.storage.helpers.get(name) as HelperFunction | undefined;\n if (hRet) {\n return hRet;\n } else {\n throw SqrlErr(\"Can't find helper '\" + name + \"'\");\n }\n } else if (container === 'F') {\n const fRet = this.storage.filters.get(name) as FilterFunction | undefined;\n if (fRet) {\n return fRet;\n } else {\n throw SqrlErr(\"Can't find filter '\" + name + \"'\");\n }\n }\n },\n async: false,\n storage: {\n helpers: helpers,\n nativeHelpers: nativeHelpers,\n filters: filters,\n templates: templates,\n },\n prefixes: {\n h: '@',\n b: '#',\n i: '',\n r: '*',\n c: '/',\n e: '!',\n },\n cache: false,\n plugins: [],\n useWith: false,\n};\n\ndefaultConfig.l.bind(defaultConfig);\n\nfunction getConfig(\n override: PartialConfig,\n baseConfig?: SqrlConfig\n): SqrlConfig {\n // TODO: run more tests on this\n\n const res: PartialConfig = {}; // Linked\n copyProps(res, defaultConfig); // Creates deep clone of res, 1 layer deep\n\n if (baseConfig) {\n copyProps(res, baseConfig);\n }\n\n if (override) {\n copyProps(res, override);\n }\n\n (res as SqrlConfig).l.bind(res);\n\n return res as SqrlConfig;\n}\n\nexport { defaultConfig, getConfig };\n","import compileToString from './compile-string';\nimport { getConfig, SqrlConfig, PartialConfig } from './config';\nimport { asyncFunc } from './utils';\nimport SqrlErr from './err';\n\n/* TYPES */\n\nexport type TemplateFunction = (\n data: object,\n config: SqrlConfig,\n cb?: any\n) => string;\n\n/* END TYPES */\n\nexport default function compile(\n str: string,\n env?: PartialConfig\n): TemplateFunction {\n const options: SqrlConfig = getConfig(env || {});\n let ctor = Function; // constructor\n\n /* ASYNC HANDLING */\n // The below code is modified from mde/ejs. All credit should go to them.\n if (options.async) {\n // Have to use generated function for this, since in envs without support,\n // it breaks in parsing\n if (asyncFunc) {\n ctor = asyncFunc;\n } else {\n throw SqrlErr(\"This environment doesn't support async/await\");\n }\n }\n\n /* END ASYNC HANDLING */\n try {\n return new ctor(\n options.varName,\n 'c', // SqrlConfig\n 'cb', // optional callback\n compileToString(str, options)\n ) as TemplateFunction; // eslint-disable-line no-new-func\n } catch (e) {\n if (e instanceof SyntaxError) {\n throw SqrlErr(\n 'Bad template syntax\\n\\n' +\n e.message +\n '\\n' +\n Array(e.message.length + 1).join('=') +\n '\\n' +\n compileToString(str, options)\n );\n } else {\n throw e;\n }\n }\n}\n","import compile, { TemplateFunction } from './compile';\nimport { getConfig, SqrlConfig, PartialConfig } from './config';\nimport { promiseImpl } from './utils';\nimport SqrlErr from './err';\n\n/* TYPES */\n\n/* END TYPES */\n\nfunction handleCache(\n template: string | TemplateFunction,\n options: SqrlConfig\n): TemplateFunction {\n let templateFunc;\n\n if (\n options.cache &&\n options.name &&\n options.storage.templates.get(options.name)\n ) {\n return options.storage.templates.get(options.name);\n }\n\n if (typeof template === 'function') {\n templateFunc = template;\n } else {\n templateFunc = compile(template, options);\n }\n\n if (options.cache && options.name) {\n options.storage.templates.define(options.name, templateFunc);\n }\n\n return templateFunc;\n}\n\nexport default function render(\n template: string | TemplateFunction,\n data: object,\n env?: PartialConfig,\n cb?: any\n) {\n const options = getConfig(env || {});\n\n if (options.async) {\n let result;\n if (!cb) {\n // No callback, try returning a promise\n if (typeof promiseImpl === 'function') {\n return new promiseImpl(function (resolve: Function, reject: Function) {\n try {\n result = handleCache(template, options)(data, options);\n resolve(result);\n } catch (err) {\n reject(err);\n }\n });\n } else {\n throw SqrlErr(\n \"Please provide a callback function, this env doesn't support Promises\"\n );\n }\n } else {\n try {\n handleCache(template, options)(data, options, cb);\n } catch (err) {\n return cb(err);\n }\n }\n } else {\n return handleCache(template, options)(data, options);\n }\n}\n","import * as squirrel from './squirrelly/browser';\nimport type { IndexResult, AlgoliaResultHit } from '../../../interface';\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 (str.match(/^http/) || !domain) return str;\n\n if (!str.startsWith('/')) str = '/' + str;\n return 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 { debounce } from '../../utils/throttle';\nimport { Squirrel } from './lib/template';\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 correct 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 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[]) => any = 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 searchIndex: this.searchIndex,\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(/&gt;/gm, '>')\n .replace(/&lt;/gm, '<')\n .replace(/&amp;/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"],"version":3}