PageSourceSearch

https://www.traceone.com/hubfs/hub_generated/template_assets/1/135…/template_SearchResults.min.js

js traceone.com collected 2026-10-01 15:09:27 UTC 5,807 bytes, 2 lines download raw bytes

1!function(e,t){"function"==typeof define&&define.amd?define(["exports"],t):"undefined"!=typeof exports?t(exports):(t(t={}),e.SearchResults=t)}("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:this,function(e){"use strict";function n(e){return function(e){if(Array.isArray(e))return r(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return r(e,t);var s=Object.prototype.toString.call(e).slice(8,-1);return"Map"===(s="Object"===s&&e.constructor?e.constructor.name:s)||"Set"===s?Array.from(e):"Arguments"===s||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(s)?r(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var s=0,r=new Array(t);s<t;s++)r[s]=e[s];return r}function t(t,e){var s,r=Object.keys(t);return Object.getOwnPropertySymbols&&(s=Object.getOwnPropertySymbols(t),e&&(s=s.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,s)),r}function l(r){for(var e=1;e<arguments.length;e++){var a=null!=arguments[e]?arguments[e]:{};e%2?t(Object(a),!0).forEach(function(e){var t,s;t=r,e=a[s=e],s in t?Object.defineProperty(t,s,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[s]=e}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(a)):t(Object(a)).forEach(function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(a,e))})}return r}Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var s={template:'<div :class="{ \'search-results\': true }" :data-loading="loading" role="dialog" aria-modal="true"> <SearchForm v-model="inputTerm" class="search-results__form" id="search-results-form" :label="strings.search_label" @submit="handleSearch" > <button class="search-form__close" @click="closeForm" type="button"> <span class="screen-reader-text">{{ strings.close_label }}</span> </button> </SearchForm> <div class="search-results__inner"> <div class="container"> <p v-if="!value" class="search-results__message">{{ strings.search_prompt }}</p> <p class="search-results__message" ref="resultCount" tabindex="-1" v-else> {{ strings.results_label }} <span class="search-results__current-term">"{{ value }}"</span> </p> <ul class="search-results__list" v-if="results.length > 0" :aria-setsize="total"> <li v-for="result in results" class="search-result" :key="result.id" ref="results"> <div v-if="result.featuredImageUrl" class="search-result__featured-image"> <img :src="result.featuredImageUrl" alt="" loading="lazy"> </div> <div class="search-result__body"> <p class="search-result__tags product-tags" v-if="typeof result.tags !== \'undefined\' && result.tags.length > 0"> {{ result.tags.join(\', \') }} </p> <h4 class="search-result__title"><a :href="result.url" v-html="result.title"></a></h4> <p v-html="result.description" class="search-result__description"></p> </div> </li> </ul> <p v-else-if="!loading && value" class="search-results__message search-results__message--error"> {{ strings.no_results_message }} </p> <nav class="search-results__pagination pagination" v-if="hasMore"> <button class="pagination__link pagination__link--next button" :aria-disabled="loading" @click="setPage(page + 1)"> {{ strings.load_label }} </button> </nav> </div> </div> </div>',name:"SearchResults",components:{SearchForm:window.SearchForm.default},props:{value:{type:String},args:{type:Object,default:function(){return{}}},strings:{type:Object,default:function(){return{search_label:"Search",search_prompt:"Enter a query in the search input above.",no_results_message:"No results found for your query.",results_label:"Your search:",close_label:"Close Search",open_label:"Open Search",load_label:"Load More"}}}},data:function(){return{perPage:8,inputTerm:this.value,loading:!1,page:1,results:[],previousFocus:null,clearTrap:null,total:0}},watch:{value:function(e){this.inputTerm!==e&&(this.inputTerm=e),this.getResults(e,1)}},computed:{hasMore:function(){return this.total>this.results.length},totalPages:function(){return Math.ceil(this.total/this.perPage)}},methods:{handleSearch:function(){this.getResults(this.inputTerm,1)},topOfResults:function(){this.$el.scrollTop=0},getResults:function(e){var t,s,r=this,a=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1;this.loading||(t=l({},this.args),s="/_hcms/search?",t.term=e,t.limit=this.perPage,t.offset=this.perPage*(a-1),Object.keys(t).forEach(function(e){s+=e+"="+t[e]+"&"}),s=s.substring(0,s.length-1),this.loading=!0,this.page=a,this.inputTerm=e,this.$emit("input",e),fetch(s).then(function(e){return e.json()}).then(function(e){r.total=e.total;e=e.results||[];var t=1===a?0:r.results.length;r.results=1===a?e:[].concat(n(r.results),n(e)),Vue.nextTick(function(){(0===t?r.$refs.resultCount:r.$refs.results[t].querySelector("a")).focus()})}).finally(function(){r.loading=!1}))},setPage:function(e){var t=e<this.totalPages?e:this.totalPages;this.getResults(this.value,t)},closeForm:function(){this.$emit("close")}},mounted:function(){var e=this;document.documentElement.classList.add("search-active"),Vue.nextTick(function(){e.previousFocus=document.activeElement,e.clearTrap=window.themeUtility.trapFocus(e.$el,"#search-results-form")}),this.value&&this.getResults(this.value,1)},destroyed:function(){var e;document.documentElement.classList.remove("search-active"),this.clearTrap(),null!==(e=this.previousFocus)&&void 0!==e&&e.focus()}};e.default=s});
2//# sourceURL=https://6850012.fs1.hubspotusercontent-na1.net/hubfs/6850012/hub_generated/template_assets/1/135645774124/1790159413579/template_SearchResults.js

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.