CINXE.COM
Top 3D Shop Reviews - Read 190 Genuine Customer Reviews | top3dshop.com
<!DOCTYPE html> <html lang="en"> <head> <script> // Check lang on home page and redirect to German homepage if((window.location.pathname == '/' || window.location.pathname == '') && window.location.hostname.indexOf('ai.reviews.')==-1) { var language = window.navigator.userLanguage || window.navigator.language; if(language.includes('de')) { window.location.href = '/de'; } } </script> <title>Top 3D Shop Reviews - Read 190 Genuine Customer Reviews | top3dshop.com</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"><script type="text/javascript">(window.NREUM||(NREUM={})).init={privacy:{cookies_enabled:true},ajax:{deny_list:["bam.nr-data.net"]},distributed_tracing:{enabled:true}};(window.NREUM||(NREUM={})).loader_config={agentID:"601506419",accountID:"4660531",trustKey:"4660531",xpid:"UAABUVNQCRAFUVFXBAABXlc=",licenseKey:"NRJS-a34ab2cc067f356d5ca",applicationID:"550531683"};;/*! For license information please see nr-loader-spa-1.274.0.min.js.LICENSE.txt */ (()=>{var e,t,r={8122:(e,t,r)=>{"use strict";r.d(t,{a:()=>i});var n=r(944);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.R)(3);if(!t||"object"!=typeof t)return(0,n.R)(4);const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),o=0===Object.keys(r).length?e:r;for(let a in o)if(void 0!==e[a])try{if(null===e[a]){r[a]=null;continue}Array.isArray(e[a])&&Array.isArray(t[a])?r[a]=Array.from(new Set([...e[a],...t[a]])):"object"==typeof e[a]&&"object"==typeof t[a]?r[a]=i(e[a],t[a]):r[a]=e[a]}catch(e){(0,n.R)(1,e)}return r}catch(e){(0,n.R)(2,e)}}},2555:(e,t,r)=>{"use strict";r.d(t,{Vp:()=>c,fn:()=>s,x1:()=>u});var n=r(384),i=r(8122);const o={beacon:n.NT.beacon,errorBeacon:n.NT.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0},a={};function s(e){try{const t=c(e);return!!t.licenseKey&&!!t.errorBeacon&&!!t.applicationID}catch(e){return!1}}function c(e){if(!e)throw new Error("All info objects require an agent identifier!");if(!a[e])throw new Error("Info for ".concat(e," was never set"));return a[e]}function u(e,t){if(!e)throw new Error("All info objects require an agent identifier!");a[e]=(0,i.a)(t,o);const r=(0,n.nY)(e);r&&(r.info=a[e])}},9417:(e,t,r)=>{"use strict";r.d(t,{D0:()=>h,gD:()=>g,xN:()=>p});var n=r(993);const i=e=>{if(!e||"string"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var o=r(2614),a=r(944),s=r(384),c=r(8122);const u="[data-nr-mask]",d=()=>{const e={mask_selector:"*",block_selector:"[data-nr-block]",mask_input_options:{color:!1,date:!1,"datetime-local":!1,email:!1,month:!1,number:!1,range:!1,search:!1,tel:!1,text:!1,time:!1,url:!1,week:!1,textarea:!1,select:!1,password:!0}};return{ajax:{deny_list:void 0,block_internal:!0,enabled:!0,harvestTimeSeconds:10,autoStart:!0},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},feature_flags:[],generic_events:{enabled:!0,harvestTimeSeconds:30,autoStart:!0},harvest:{tooManyRequestsDelay:60},jserrors:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},logging:{enabled:!0,harvestTimeSeconds:10,autoStart:!0,level:n.p_.INFO},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,harvestTimeSeconds:30,autoStart:!0},performance:{capture_marks:!1,capture_measures:!1},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:o.wk,inactiveMs:o.BB},session_replay:{autoStart:!0,enabled:!1,harvestTimeSeconds:60,preload:!1,sampling_rate:10,error_sampling_rate:100,collect_fonts:!1,inline_images:!1,fix_stylesheets:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){i(t)?e.mask_selector="".concat(t,",").concat(u):""===t||null===t?e.mask_selector=u:(0,a.R)(5,t)},get block_class(){return"nr-block"},get ignore_class(){return"nr-ignore"},get mask_text_class(){return"nr-mask"},get block_selector(){return e.block_selector},set block_selector(t){i(t)?e.block_selector+=",".concat(t):""!==t&&(0,a.R)(6,t)},get mask_input_options(){return e.mask_input_options},set mask_input_options(t){t&&"object"==typeof t?e.mask_input_options={...t,password:!0}:(0,a.R)(7,t)}},session_trace:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},soft_navigations:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},spa:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},ssl:void 0,user_actions:{enabled:!0}}},l={},f="All configuration objects require an agent identifier!";function h(e){if(!e)throw new Error(f);if(!l[e])throw new Error("Configuration for ".concat(e," was never set"));return l[e]}function p(e,t){if(!e)throw new Error(f);l[e]=(0,c.a)(t,d());const r=(0,s.nY)(e);r&&(r.init=l[e])}function g(e,t){if(!e)throw new Error(f);var r=h(e);if(r){for(var n=t.split("."),i=0;i<n.length-1;i++)if("object"!=typeof(r=r[n[i]]))return;r=r[n[n.length-1]]}return r}},5603:(e,t,r)=>{"use strict";r.d(t,{a:()=>c,o:()=>s});var n=r(384),i=r(8122);const o={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0},a={};function s(e){if(!e)throw new Error("All loader-config objects require an agent identifier!");if(!a[e])throw new Error("LoaderConfig for ".concat(e," was never set"));return a[e]}function c(e,t){if(!e)throw new Error("All loader-config objects require an agent identifier!");a[e]=(0,i.a)(t,o);const r=(0,n.nY)(e);r&&(r.loader_config=a[e])}},3371:(e,t,r)=>{"use strict";r.d(t,{V:()=>f,f:()=>l});var n=r(8122),i=r(384),o=r(6154),a=r(9324);let s=0;const c={buildEnv:a.F3,distMethod:a.Xs,version:a.xv,originTime:o.WN},u={customTransaction:void 0,disabled:!1,isolatedBacklog:!1,loaderType:void 0,maxBytes:3e4,onerror:void 0,ptid:void 0,releaseIds:{},appMetadata:{},session:void 0,denyList:void 0,timeKeeper:void 0,obfuscator:void 0},d={};function l(e){if(!e)throw new Error("All runtime objects require an agent identifier!");if(!d[e])throw new Error("Runtime for ".concat(e," was never set"));return d[e]}function f(e,t){if(!e)throw new Error("All runtime objects require an agent identifier!");d[e]={...(0,n.a)(t,u),...c},Object.hasOwnProperty.call(d[e],"harvestCount")||Object.defineProperty(d[e],"harvestCount",{get:()=>++s});const r=(0,i.nY)(e);r&&(r.runtime=d[e])}},9324:(e,t,r)=>{"use strict";r.d(t,{F3:()=>i,Xs:()=>o,Yq:()=>a,xv:()=>n});const n="1.274.0",i="PROD",o="CDN",a="^2.0.0-alpha.17"},6154:(e,t,r)=>{"use strict";r.d(t,{A4:()=>s,OF:()=>d,RI:()=>i,WN:()=>h,bv:()=>o,gm:()=>a,lR:()=>f,m:()=>u,mw:()=>c,sb:()=>l});var n=r(1863);const i="undefined"!=typeof window&&!!window.document,o="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),a=i?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),s="complete"===a?.document?.readyState,c=Boolean("hidden"===a?.document?.visibilityState),u=""+a?.location,d=/iPad|iPhone|iPod/.test(a.navigator?.userAgent),l=d&&"undefined"==typeof SharedWorker,f=(()=>{const e=a.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/);return Array.isArray(e)&&e.length>=2?+e[1]:0})(),h=Date.now()-(0,n.t)()},7295:(e,t,r)=>{"use strict";r.d(t,{Xv:()=>a,gX:()=>i,iW:()=>o});var n=[];function i(e){if(!e||o(e))return!1;if(0===n.length)return!0;for(var t=0;t<n.length;t++){var r=n[t];if("*"===r.hostname)return!1;if(s(r.hostname,e.hostname)&&c(r.pathname,e.pathname))return!1}return!0}function o(e){return void 0===e.hostname}function a(e){if(n=[],e&&e.length)for(var t=0;t<e.length;t++){let r=e[t];if(!r)continue;0===r.indexOf("http://")?r=r.substring(7):0===r.indexOf("https://")&&(r=r.substring(8));const i=r.indexOf("/");let o,a;i>0?(o=r.substring(0,i),a=r.substring(i)):(o=r,a="");let[s]=o.split(":");n.push({hostname:s,pathname:a})}}function s(e,t){return!(e.length>t.length)&&t.indexOf(e)===t.length-e.length}function c(e,t){return 0===e.indexOf("/")&&(e=e.substring(1)),0===t.indexOf("/")&&(t=t.substring(1)),""===e||e===t}},1687:(e,t,r)=>{"use strict";r.d(t,{Ak:()=>c,Ze:()=>l,x3:()=>u});var n=r(7836),i=r(3606),o=r(860),a=r(2646);const s={};function c(e,t){const r={staged:!1,priority:o.P3[t]||0};d(e),s[e].get(t)||s[e].set(t,r)}function u(e,t){e&&s[e]&&(s[e].get(t)&&s[e].delete(t),h(e,t,!1),s[e].size&&f(e))}function d(e){if(!e)throw new Error("agentIdentifier required");s[e]||(s[e]=new Map)}function l(e="",t="feature",r=!1){if(d(e),!e||!s[e].get(t)||r)return h(e,t);s[e].get(t).staged=!0,f(e)}function f(e){const t=Array.from(s[e]);t.every((([e,t])=>t.staged))&&(t.sort(((e,t)=>e[1].priority-t[1].priority)),t.forEach((([t])=>{s[e].delete(t),h(e,t)})))}function h(e,t,r=!0){const o=e?n.ee.get(e):n.ee,s=i.i.handlers;if(!o.aborted&&o.backlog&&s){if(r){const e=o.backlog[t],r=s[t];if(r){for(let t=0;e&&t<e.length;++t)p(e[t],r);Object.entries(r).forEach((([e,t])=>{Object.values(t||{}).forEach((t=>{t[0]?.on&&t[0]?.context()instanceof a.y&&t[0].on(e,t[1])}))}))}}o.isolatedBacklog||delete s[t],o.backlog[t]=null,o.emit("drain-"+t,[])}}function p(e,t){var r=e[1];Object.values(t[r]||{}).forEach((t=>{var r=e[0];if(t[0]===r){var n=t[1],i=e[3],o=e[2];n.apply(i,o)}}))}},7836:(e,t,r)=>{"use strict";r.d(t,{P:()=>c,ee:()=>u});var n=r(384),i=r(8990),o=r(3371),a=r(2646),s=r(5607);const c="nr@context:".concat(s.W),u=function e(t,r){var n={},s={},d={},l=!1;try{l=16===r.length&&(0,o.f)(r).isolatedBacklog}catch(e){}var f={on:p,addEventListener:p,removeEventListener:function(e,t){var r=n[e];if(!r)return;for(var i=0;i<r.length;i++)r[i]===t&&r.splice(i,1)},emit:function(e,r,n,i,o){!1!==o&&(o=!0);if(u.aborted&&!i)return;t&&o&&t.emit(e,r,n);for(var a=h(n),c=g(e),d=c.length,l=0;l<d;l++)c[l].apply(a,r);var p=v()[s[e]];p&&p.push([f,e,r,a]);return a},get:m,listeners:g,context:h,buffer:function(e,t){const r=v();if(t=t||"feature",f.aborted)return;Object.entries(e||{}).forEach((([e,n])=>{s[n]=t,t in r||(r[t]=[])}))},abort:function(){f._aborted=!0,Object.keys(f.backlog).forEach((e=>{delete f.backlog[e]}))},isBuffering:function(e){return!!v()[s[e]]},debugId:r,backlog:l?{}:t&&"object"==typeof t.backlog?t.backlog:{},isolatedBacklog:l};return Object.defineProperty(f,"aborted",{get:()=>{let e=f._aborted||!1;return e||(t&&(e=t.aborted),e)}}),f;function h(e){return e&&e instanceof a.y?e:e?(0,i.I)(e,c,(()=>new a.y(c))):new a.y(c)}function p(e,t){n[e]=g(e).concat(t)}function g(e){return n[e]||[]}function m(t){return d[t]=d[t]||e(f,t)}function v(){return f.backlog}}(void 0,"globalEE"),d=(0,n.Zm)();d.ee||(d.ee=u)},2646:(e,t,r)=>{"use strict";r.d(t,{y:()=>n});class n{constructor(e){this.contextId=e}}},9908:(e,t,r)=>{"use strict";r.d(t,{d:()=>n,p:()=>i});var n=r(7836).ee.get("handle");function i(e,t,r,i,o){o?(o.buffer([e],i),o.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},3606:(e,t,r)=>{"use strict";r.d(t,{i:()=>o});var n=r(9908);o.on=a;var i=o.handlers={};function o(e,t,r,o){a(o||n.d,i,e,t,r)}function a(e,t,r,i,o){o||(o="feature"),e||(e=n.d);var a=t[o]=t[o]||{};(a[r]=a[r]||[]).push([e,i])}},3878:(e,t,r)=>{"use strict";function n(e,t){return{capture:e,passive:!1,signal:t}}function i(e,t,r=!1,i){window.addEventListener(e,t,n(r,i))}function o(e,t,r=!1,i){document.addEventListener(e,t,n(r,i))}r.d(t,{DD:()=>o,jT:()=>n,sp:()=>i})},5607:(e,t,r)=>{"use strict";r.d(t,{W:()=>n});const n=(0,r(9566).bz)()},9566:(e,t,r)=>{"use strict";r.d(t,{LA:()=>s,ZF:()=>c,bz:()=>a,el:()=>u});var n=r(6154);const i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";function o(e,t){return e?15&e[t]:16*Math.random()|0}function a(){const e=n.gm?.crypto||n.gm?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(30))),i.split("").map((e=>"x"===e?o(t,r++).toString(16):"y"===e?(3&o()|8).toString(16):e)).join("")}function s(e){const t=n.gm?.crypto||n.gm?.msCrypto;let r,i=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(e)));const a=[];for(var s=0;s<e;s++)a.push(o(r,i++).toString(16));return a.join("")}function c(){return s(16)}function u(){return s(32)}},2614:(e,t,r)=>{"use strict";r.d(t,{BB:()=>a,H3:()=>n,g:()=>u,iL:()=>c,tS:()=>s,uh:()=>i,wk:()=>o});const n="NRBA",i="SESSION",o=144e5,a=18e5,s={STARTED:"session-started",PAUSE:"session-pause",RESET:"session-reset",RESUME:"session-resume",UPDATE:"session-update"},c={SAME_TAB:"same-tab",CROSS_TAB:"cross-tab"},u={OFF:0,FULL:1,ERROR:2}},1863:(e,t,r)=>{"use strict";function n(){return Math.floor(performance.now())}r.d(t,{t:()=>n})},7485:(e,t,r)=>{"use strict";r.d(t,{D:()=>i});var n=r(6154);function i(e){if(0===(e||"").indexOf("data:"))return{protocol:"data"};try{const t=new URL(e,location.href),r={port:t.port,hostname:t.hostname,pathname:t.pathname,search:t.search,protocol:t.protocol.slice(0,t.protocol.indexOf(":")),sameOrigin:t.protocol===n.gm?.location?.protocol&&t.host===n.gm?.location?.host};return r.port&&""!==r.port||("http:"===t.protocol&&(r.port="80"),"https:"===t.protocol&&(r.port="443")),r.pathname&&""!==r.pathname?r.pathname.startsWith("/")||(r.pathname="/".concat(r.pathname)):r.pathname="/",r}catch(e){return{}}}},944:(e,t,r)=>{"use strict";function n(e,t){"function"==typeof console.debug&&console.debug("New Relic Warning: https://github.com/newrelic/newrelic-browser-agent/blob/main/docs/warning-codes.md#".concat(e),t)}r.d(t,{R:()=>n})},5284:(e,t,r)=>{"use strict";r.d(t,{t:()=>c,B:()=>s});var n=r(7836),i=r(6154);const o="newrelic";const a=new Set,s={};function c(e,t){const r=n.ee.get(t);s[t]??={},e&&"object"==typeof e&&(a.has(t)||(r.emit("rumresp",[e]),s[t]=e,a.add(t),function(e={}){try{i.gm.dispatchEvent(new CustomEvent(o,{detail:e}))}catch(e){}}({loaded:!0})))}},8990:(e,t,r)=>{"use strict";r.d(t,{I:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},6389:(e,t,r)=>{"use strict";function n(e,t=500,r={}){const n=r?.leading||!1;let i;return(...r)=>{n&&void 0===i&&(e.apply(this,r),i=setTimeout((()=>{i=clearTimeout(i)}),t)),n||(clearTimeout(i),i=setTimeout((()=>{e.apply(this,r)}),t))}}function i(e){let t=!1;return(...r)=>{t||(t=!0,e.apply(this,r))}}r.d(t,{J:()=>i,s:()=>n})},3304:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(7836);const i=()=>{const e=new WeakSet;return(t,r)=>{if("object"==typeof r&&null!==r){if(e.has(r))return;e.add(r)}return r}};function o(e){try{return JSON.stringify(e,i())??""}catch(e){try{n.ee.emit("internal-error",[e])}catch(e){}return""}}},5289:(e,t,r)=>{"use strict";r.d(t,{GG:()=>o,sB:()=>a});var n=r(3878);function i(){return"undefined"==typeof document||"complete"===document.readyState}function o(e,t){if(i())return e();(0,n.sp)("load",e,t)}function a(e){if(i())return e();(0,n.DD)("DOMContentLoaded",e)}},384:(e,t,r)=>{"use strict";r.d(t,{NT:()=>o,US:()=>d,Zm:()=>a,bQ:()=>c,dV:()=>s,nY:()=>u,pV:()=>l});var n=r(6154),i=r(1863);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function a(){return n.gm.NREUM||(n.gm.NREUM={}),void 0===n.gm.newrelic&&(n.gm.newrelic=n.gm.NREUM),n.gm.NREUM}function s(){let e=a();return e.o||(e.o={ST:n.gm.setTimeout,SI:n.gm.setImmediate,CT:n.gm.clearTimeout,XHR:n.gm.XMLHttpRequest,REQ:n.gm.Request,EV:n.gm.Event,PR:n.gm.Promise,MO:n.gm.MutationObserver,FETCH:n.gm.fetch,WS:n.gm.WebSocket}),e}function c(e,t){let r=a();r.initializedAgents??={},t.initializedAt={ms:(0,i.t)(),date:new Date},r.initializedAgents[e]=t}function u(e){let t=a();return t.initializedAgents?.[e]}function d(e,t){a()[e]=t}function l(){return function(){let e=a();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=a();const t=e.init||{};e.init={...t}}(),s(),function(){let e=a();const t=e.loader_config||{};e.loader_config={...t}}(),a()}},2843:(e,t,r)=>{"use strict";r.d(t,{u:()=>i});var n=r(3878);function i(e,t=!1,r,i){(0,n.DD)("visibilitychange",(function(){if(t)return void("hidden"===document.visibilityState&&e());e(document.visibilityState)}),r,i)}},8139:(e,t,r)=>{"use strict";r.d(t,{u:()=>f});var n=r(7836),i=r(3434),o=r(8990),a=r(6154);const s={},c=a.gm.XMLHttpRequest,u="addEventListener",d="removeEventListener",l="nr@wrapped:".concat(n.P);function f(e){var t=function(e){return(e||n.ee).get("events")}(e);if(s[t.debugId]++)return t;s[t.debugId]=1;var r=(0,i.YM)(t,!0);function f(e){r.inPlace(e,[u,d],"-",p)}function p(e,t){return e[1]}return"getPrototypeOf"in Object&&(a.RI&&h(document,f),h(a.gm,f),h(c.prototype,f)),t.on(u+"-start",(function(e,t){var n=e[1];if(null!==n&&("function"==typeof n||"object"==typeof n)){var i=(0,o.I)(n,l,(function(){var e={object:function(){if("function"!=typeof n.handleEvent)return;return n.handleEvent.apply(n,arguments)},function:n}[typeof n];return e?r(e,"fn-",null,e.name||"anonymous"):n}));this.wrapped=e[1]=i}})),t.on(d+"-start",(function(e){e[1]=this.wrapped||e[1]})),t}function h(e,t,...r){let n=e;for(;"object"==typeof n&&!Object.prototype.hasOwnProperty.call(n,u);)n=Object.getPrototypeOf(n);n&&t(n,...r)}},3434:(e,t,r)=>{"use strict";r.d(t,{Jt:()=>o,YM:()=>c});var n=r(7836),i=r(5607);const o="nr@original:".concat(i.W);var a=Object.prototype.hasOwnProperty,s=!1;function c(e,t){return e||(e=n.ee),r.inPlace=function(e,t,n,i,o){n||(n="");const a="-"===n.charAt(0);for(let s=0;s<t.length;s++){const c=t[s],u=e[c];d(u)||(e[c]=r(u,a?c+n:n,i,c,o))}},r.flag=o,r;function r(t,r,n,s,c){return d(t)?t:(r||(r=""),nrWrapper[o]=t,function(e,t,r){if(Object.defineProperty&&Object.keys)try{return Object.keys(e).forEach((function(r){Object.defineProperty(t,r,{get:function(){return e[r]},set:function(t){return e[r]=t,t}})})),t}catch(e){u([e],r)}for(var n in e)a.call(e,n)&&(t[n]=e[n])}(t,nrWrapper,e),nrWrapper);function nrWrapper(){var o,a,d,l;try{a=this,o=[...arguments],d="function"==typeof n?n(o,a):n||{}}catch(t){u([t,"",[o,a,s],d],e)}i(r+"start",[o,a,s],d,c);try{return l=t.apply(a,o)}catch(e){throw i(r+"err",[o,a,e],d,c),e}finally{i(r+"end",[o,a,l],d,c)}}}function i(r,n,i,o){if(!s||t){var a=s;s=!0;try{e.emit(r,n,i,t,o)}catch(t){u([t,r,n,i],e)}s=a}}}function u(e,t){t||(t=n.ee);try{t.emit("internal-error",e)}catch(e){}}function d(e){return!(e&&"function"==typeof e&&e.apply&&!e[o])}},9300:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.ajax},3333:(e,t,r)=>{"use strict";r.d(t,{TZ:()=>n,Zp:()=>i,mq:()=>s,nf:()=>a,qN:()=>o});const n=r(860).K7.genericEvents,i=["auxclick","click","copy","keydown","paste","scrollend"],o=["focus","blur"],a=4,s=1e3},6774:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.jserrors},993:(e,t,r)=>{"use strict";r.d(t,{ET:()=>o,TZ:()=>a,p_:()=>i});var n=r(860);const i={ERROR:"ERROR",WARN:"WARN",INFO:"INFO",DEBUG:"DEBUG",TRACE:"TRACE"},o="log",a=n.K7.logging},3785:(e,t,r)=>{"use strict";r.d(t,{R:()=>c,b:()=>u});var n=r(9908),i=r(1863),o=r(860),a=r(3969),s=r(993);function c(e,t,r={},c=s.p_.INFO){(0,n.p)(a.xV,["API/logging/".concat(c.toLowerCase(),"/called")],void 0,o.K7.metrics,e),(0,n.p)(s.ET,[(0,i.t)(),t,r,c],void 0,o.K7.logging,e)}function u(e){return"string"==typeof e&&Object.values(s.p_).some((t=>t===e.toUpperCase().trim()))}},3969:(e,t,r)=>{"use strict";r.d(t,{TZ:()=>n,XG:()=>s,rs:()=>i,xV:()=>a,z_:()=>o});const n=r(860).K7.metrics,i="sm",o="cm",a="storeSupportabilityMetrics",s="storeEventMetrics"},6630:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewEvent},782:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewTiming},6344:(e,t,r)=>{"use strict";r.d(t,{BB:()=>d,G4:()=>o,Qb:()=>l,TZ:()=>i,Ug:()=>a,_s:()=>s,bc:()=>u,yP:()=>c});var n=r(2614);const i=r(860).K7.sessionReplay,o={RECORD:"recordReplay",PAUSE:"pauseReplay",REPLAY_RUNNING:"replayRunning",ERROR_DURING_REPLAY:"errorDuringReplay"},a=.12,s={DomContentLoaded:0,Load:1,FullSnapshot:2,IncrementalSnapshot:3,Meta:4,Custom:5},c={[n.g.ERROR]:15e3,[n.g.FULL]:3e5,[n.g.OFF]:0},u={RESET:{message:"Session was reset",sm:"Reset"},IMPORT:{message:"Recorder failed to import",sm:"Import"},TOO_MANY:{message:"429: Too Many Requests",sm:"Too-Many"},TOO_BIG:{message:"Payload was too large",sm:"Too-Big"},CROSS_TAB:{message:"Session Entity was set to OFF on another tab",sm:"Cross-Tab"},ENTITLEMENTS:{message:"Session Replay is not allowed and will not be started",sm:"Entitlement"}},d=5e3,l={API:"api"}},5270:(e,t,r)=>{"use strict";r.d(t,{Aw:()=>c,CT:()=>u,SR:()=>s});var n=r(384),i=r(9417),o=r(7767),a=r(6154);function s(e){return!!(0,n.dV)().o.MO&&(0,o.V)(e)&&!0===(0,i.gD)(e,"session_trace.enabled")}function c(e){return!0===(0,i.gD)(e,"session_replay.preload")&&s(e)}function u(e,t){const r=t.correctAbsoluteTimestamp(e);return{originalTimestamp:e,correctedTimestamp:r,timestampDiff:e-r,originTime:a.WN,correctedOriginTime:t.correctedOriginTime,originTimeDiff:Math.floor(a.WN-t.correctedOriginTime)}}},3738:(e,t,r)=>{"use strict";r.d(t,{He:()=>i,Kp:()=>s,Lc:()=>u,Rz:()=>d,TZ:()=>n,bD:()=>o,d3:()=>a,jx:()=>l,uP:()=>c});const n=r(860).K7.sessionTrace,i="bstResource",o="resource",a="-start",s="-end",c="fn"+a,u="fn"+s,d="pushState",l=1e3},3962:(e,t,r)=>{"use strict";r.d(t,{AM:()=>o,O2:()=>s,Qu:()=>c,TZ:()=>a,ih:()=>u,tC:()=>i});var n=r(860);const i=["click","keydown","submit"],o="api",a=n.K7.softNav,s={INITIAL_PAGE_LOAD:"",ROUTE_CHANGE:1,UNSPECIFIED:2},c={INTERACTION:1,AJAX:2,CUSTOM_END:3,CUSTOM_TRACER:4},u={IP:"in progress",FIN:"finished",CAN:"cancelled"}},7378:(e,t,r)=>{"use strict";r.d(t,{$p:()=>x,BR:()=>b,Kp:()=>R,L3:()=>y,Lc:()=>c,NC:()=>o,SG:()=>d,TZ:()=>i,U6:()=>p,UT:()=>m,d3:()=>w,dT:()=>f,e5:()=>A,gx:()=>v,l9:()=>l,oW:()=>h,op:()=>g,rw:()=>u,tH:()=>E,uP:()=>s,wW:()=>T,xq:()=>a});var n=r(384);const i=r(860).K7.spa,o=["click","submit","keypress","keydown","keyup","change"],a=999,s="fn-start",c="fn-end",u="cb-start",d="api-ixn-",l="remaining",f="interaction",h="spaNode",p="jsonpNode",g="fetch-start",m="fetch-done",v="fetch-body-",b="jsonp-end",y=(0,n.dV)().o.ST,w="-start",R="-end",x="-body",T="cb"+R,A="jsTime",E="fetch"},4234:(e,t,r)=>{"use strict";r.d(t,{W:()=>o});var n=r(7836),i=r(1687);class o{constructor(e,t){this.agentIdentifier=e,this.ee=n.ee.get(e),this.featureName=t,this.blocked=!1}deregisterDrain(){(0,i.x3)(this.agentIdentifier,this.featureName)}}},7767:(e,t,r)=>{"use strict";r.d(t,{V:()=>o});var n=r(9417),i=r(6154);const o=e=>i.RI&&!0===(0,n.gD)(e,"privacy.cookies_enabled")},425:(e,t,r)=>{"use strict";r.d(t,{j:()=>j});var n=r(860),i=r(2555),o=r(3371),a=r(9908),s=r(7836),c=r(1687),u=r(5289),d=r(6154),l=r(944),f=r(3969),h=r(384),p=r(6344);const g=["setErrorHandler","finished","addToTrace","addRelease","addPageAction","setCurrentRouteName","setPageViewName","setCustomAttribute","interaction","noticeError","setUserId","setApplicationVersion","start",p.G4.RECORD,p.G4.PAUSE,"log","wrapLogger"],m=["setErrorHandler","finished","addToTrace","addRelease"];var v=r(1863),b=r(2614),y=r(993),w=r(3785),R=r(2646),x=r(3434);function T(e,t,r,n){if("object"!=typeof t||!t||"string"!=typeof r||!r||"function"!=typeof t[r])return(0,l.R)(29);const i=function(e){return(e||s.ee).get("logger")}(e),o=(0,x.YM)(i),a=new R.y(s.P);return a.level=n.level,a.customAttributes=n.customAttributes,o.inPlace(t,[r],"wrap-logger-",a),i}function A(){const e=(0,h.pV)();g.forEach((t=>{e[t]=(...r)=>function(t,...r){let n=[];return Object.values(e.initializedAgents).forEach((e=>{e&&e.api?e.exposed&&e.api[t]&&n.push(e.api[t](...r)):(0,l.R)(38,t)})),n.length>1?n:n[0]}(t,...r)}))}const E={};var S=r(9417),N=r(5603),O=r(5284);const _=e=>{const t=e.startsWith("http");e+="/",r.p=t?e:"https://"+e};let I=!1;function j(e,t={},g,R){let{init:x,info:j,loader_config:P,runtime:C={},exposed:k=!0}=t;C.loaderType=g;const L=(0,h.pV)();j||(x=L.init,j=L.info,P=L.loader_config),(0,S.xN)(e.agentIdentifier,x||{}),(0,N.a)(e.agentIdentifier,P||{}),j.jsAttributes??={},d.bv&&(j.jsAttributes.isWorker=!0),(0,i.x1)(e.agentIdentifier,j);const H=(0,S.D0)(e.agentIdentifier),D=[j.beacon,j.errorBeacon];I||(H.proxy.assets&&(_(H.proxy.assets),D.push(H.proxy.assets)),H.proxy.beacon&&D.push(H.proxy.beacon),A(),(0,h.US)("activatedFeatures",O.B),e.runSoftNavOverSpa&&=!0===H.soft_navigations.enabled&&H.feature_flags.includes("soft_nav")),C.denyList=[...H.ajax.deny_list||[],...H.ajax.block_internal?D:[]],C.ptid=e.agentIdentifier,(0,o.V)(e.agentIdentifier,C),e.ee=s.ee.get(e.agentIdentifier),void 0===e.api&&(e.api=function(e,t,h=!1){t||(0,c.Ak)(e,"api");const g={};var R=s.ee.get(e),x=R.get("tracer");E[e]=b.g.OFF,R.on(p.G4.REPLAY_RUNNING,(t=>{E[e]=t}));var A="api-",S=A+"ixn-";function N(t,r,n,o){const a=(0,i.Vp)(e);return null===r?delete a.jsAttributes[t]:(0,i.x1)(e,{...a,jsAttributes:{...a.jsAttributes,[t]:r}}),I(A,n,!0,o||null===r?"session":void 0)(t,r)}function O(){}g.log=function(e,{customAttributes:t={},level:r=y.p_.INFO}={}){(0,a.p)(f.xV,["API/log/called"],void 0,n.K7.metrics,R),(0,w.R)(R,e,t,r)},g.wrapLogger=(e,t,{customAttributes:r={},level:i=y.p_.INFO}={})=>{(0,a.p)(f.xV,["API/wrapLogger/called"],void 0,n.K7.metrics,R),T(R,e,t,{customAttributes:r,level:i})},m.forEach((e=>{g[e]=I(A,e,!0,"api")})),g.addPageAction=I(A,"addPageAction",!0,n.K7.genericEvents),g.setPageViewName=function(t,r){if("string"==typeof t)return"/"!==t.charAt(0)&&(t="/"+t),(0,o.f)(e).customTransaction=(r||"http://custom.transaction")+t,I(A,"setPageViewName",!0)()},g.setCustomAttribute=function(e,t,r=!1){if("string"==typeof e){if(["string","number","boolean"].includes(typeof t)||null===t)return N(e,t,"setCustomAttribute",r);(0,l.R)(40,typeof t)}else(0,l.R)(39,typeof e)},g.setUserId=function(e){if("string"==typeof e||null===e)return N("enduser.id",e,"setUserId",!0);(0,l.R)(41,typeof e)},g.setApplicationVersion=function(e){if("string"==typeof e||null===e)return N("application.version",e,"setApplicationVersion",!1);(0,l.R)(42,typeof e)},g.start=()=>{try{(0,a.p)(f.xV,["API/start/called"],void 0,n.K7.metrics,R),R.emit("manual-start-all")}catch(e){(0,l.R)(23,e)}},g[p.G4.RECORD]=function(){(0,a.p)(f.xV,["API/recordReplay/called"],void 0,n.K7.metrics,R),(0,a.p)(p.G4.RECORD,[],void 0,n.K7.sessionReplay,R)},g[p.G4.PAUSE]=function(){(0,a.p)(f.xV,["API/pauseReplay/called"],void 0,n.K7.metrics,R),(0,a.p)(p.G4.PAUSE,[],void 0,n.K7.sessionReplay,R)},g.interaction=function(e){return(new O).get("object"==typeof e?e:{})};const _=O.prototype={createTracer:function(e,t){var r={},i=this,o="function"==typeof t;return(0,a.p)(f.xV,["API/createTracer/called"],void 0,n.K7.metrics,R),h||(0,a.p)(S+"tracer",[(0,v.t)(),e,r],i,n.K7.spa,R),function(){if(x.emit((o?"":"no-")+"fn-start",[(0,v.t)(),i,o],r),o)try{return t.apply(this,arguments)}catch(e){const t="string"==typeof e?new Error(e):e;throw x.emit("fn-err",[arguments,this,t],r),t}finally{x.emit("fn-end",[(0,v.t)()],r)}}}};function I(e,t,r,i){return function(){return(0,a.p)(f.xV,["API/"+t+"/called"],void 0,n.K7.metrics,R),i&&(0,a.p)(e+t,[(0,v.t)(),...arguments],r?null:this,i,R),r?void 0:this}}function j(){r.e(478).then(r.bind(r,8778)).then((({setAPI:t})=>{t(e),(0,c.Ze)(e,"api")})).catch((e=>{(0,l.R)(27,e),R.abort()}))}return["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach((e=>{_[e]=I(S,e,void 0,h?n.K7.softNav:n.K7.spa)})),g.setCurrentRouteName=h?I(S,"routeName",void 0,n.K7.softNav):I(A,"routeName",!0,n.K7.spa),g.noticeError=function(t,r){"string"==typeof t&&(t=new Error(t)),(0,a.p)(f.xV,["API/noticeError/called"],void 0,n.K7.metrics,R),(0,a.p)("err",[t,(0,v.t)(),!1,r,!!E[e]],void 0,n.K7.jserrors,R)},d.RI?(0,u.GG)((()=>j()),!0):j(),g}(e.agentIdentifier,R,e.runSoftNavOverSpa)),void 0===e.exposed&&(e.exposed=k),I=!0}},8374:(e,t,r)=>{r.nc=(()=>{try{return document?.currentScript?.nonce}catch(e){}return""})()},860:(e,t,r)=>{"use strict";r.d(t,{$J:()=>o,K7:()=>n,P3:()=>i});const n={ajax:"ajax",genericEvents:"generic_events",jserrors:"jserrors",logging:"logging",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",softNav:"soft_navigations",spa:"spa"},i={[n.pageViewEvent]:1,[n.pageViewTiming]:2,[n.metrics]:3,[n.jserrors]:4,[n.spa]:5,[n.ajax]:6,[n.sessionTrace]:7,[n.softNav]:8,[n.sessionReplay]:9,[n.logging]:10,[n.genericEvents]:11},o={[n.pageViewTiming]:"events",[n.ajax]:"events",[n.spa]:"events",[n.softNav]:"events",[n.metrics]:"jserrors",[n.jserrors]:"jserrors",[n.sessionTrace]:"browser/blobs",[n.sessionReplay]:"browser/blobs",[n.logging]:"browser/logs",[n.genericEvents]:"ins"}}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return r[e](o,o.exports,i),o.exports}i.m=r,i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((t,r)=>(i.f[r](e,t),t)),[])),i.u=e=>({212:"nr-spa-compressor",249:"nr-spa-recorder",478:"nr-spa"}[e]+"-1.274.0.min.js"),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="NRBA-1.274.0.PROD:",i.l=(r,n,o,a)=>{if(e[r])e[r].push(n);else{var s,c;if(void 0!==o)for(var u=document.getElementsByTagName("script"),d=0;d<u.length;d++){var l=u[d];if(l.getAttribute("src")==r||l.getAttribute("data-webpack")==t+o){s=l;break}}if(!s){c=!0;var f={478:"sha512-1vUqEfJPB8Pihje9mv5CfYgkitO1FWcS+UQb84DbXqP8oYctRv4/lzl/MzNLPlRhcY1WVDBGL20I8vm6s2VV7g==",249:"sha512-Y/BeZAh6VSTmUtUNmS5XdyKxL92s30Fyyj8xVW76HSPxcKItL4+x2+kGMZc8pMJnUpZDz1L4eftZQAJh3D8NnA==",212:"sha512-Gn2tQ3qog5Yhrx/gRutkSTYPp+7nkKFt4/mIXg99LxcNpMDAYJZDBYmAACdoHNM86+iq1F3cBcQotFNzjIX8bw=="};(s=document.createElement("script")).charset="utf-8",s.timeout=120,i.nc&&s.setAttribute("nonce",i.nc),s.setAttribute("data-webpack",t+o),s.src=r,0!==s.src.indexOf(window.location.origin+"/")&&(s.crossOrigin="anonymous"),f[a]&&(s.integrity=f[a])}e[r]=[n];var h=(t,n)=>{s.onerror=s.onload=null,clearTimeout(p);var i=e[r];if(delete e[r],s.parentNode&&s.parentNode.removeChild(s),i&&i.forEach((e=>e(n))),t)return t(n)},p=setTimeout(h.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=h.bind(null,s.onerror),s.onload=h.bind(null,s.onload),c&&document.head.appendChild(s)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.p="https://js-agent.newrelic.com/",(()=>{var e={38:0,788:0};i.f.j=(t,r)=>{var n=i.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise(((r,i)=>n=e[t]=[r,i]));r.push(n[2]=o);var a=i.p+i.u(t),s=new Error;i.l(a,(r=>{if(i.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;s.message="Loading chunk "+t+" failed.\n("+o+": "+a+")",s.name="ChunkLoadError",s.type=o,s.request=a,n[1](s)}}),"chunk-"+t,t)}};var t=(t,r)=>{var n,o,[a,s,c]=r,u=0;if(a.some((t=>0!==e[t]))){for(n in s)i.o(s,n)&&(i.m[n]=s[n]);if(c)c(i)}for(t&&t(r);u<a.length;u++)o=a[u],i.o(e,o)&&e[o]&&e[o][0](),e[o]=0},r=self["webpackChunk:NRBA-1.274.0.PROD"]=self["webpackChunk:NRBA-1.274.0.PROD"]||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),(()=>{"use strict";i(8374);var e=i(944),t=i(6344),r=i(9566);class n{agentIdentifier;constructor(e=(0,r.LA)(16)){this.agentIdentifier=e}#e(t,...r){if("function"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}addPageAction(e,t){return this.#e("addPageAction",e,t)}setPageViewName(e,t){return this.#e("setPageViewName",e,t)}setCustomAttribute(e,t,r){return this.#e("setCustomAttribute",e,t,r)}noticeError(e,t){return this.#e("noticeError",e,t)}setUserId(e){return this.#e("setUserId",e)}setApplicationVersion(e){return this.#e("setApplicationVersion",e)}setErrorHandler(e){return this.#e("setErrorHandler",e)}addRelease(e,t){return this.#e("addRelease",e,t)}log(e,t){return this.#e("log",e,t)}}class o extends n{#e(t,...r){if("function"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}start(){return this.#e("start")}finished(e){return this.#e("finished",e)}recordReplay(){return this.#e(t.G4.RECORD)}pauseReplay(){return this.#e(t.G4.PAUSE)}addToTrace(e){return this.#e("addToTrace",e)}setCurrentRouteName(e){return this.#e("setCurrentRouteName",e)}interaction(){return this.#e("interaction")}wrapLogger(e,t,r){return this.#e("wrapLogger",e,t,r)}}var a=i(860),s=i(9417);const c=Object.values(a.K7);function u(e){const t={};return c.forEach((r=>{t[r]=function(e,t){return!0===(0,s.gD)(t,"".concat(e,".enabled"))}(r,e)})),t}var d=i(425);var l=i(1687),f=i(4234),h=i(5289),p=i(6154),g=i(5270),m=i(7767),v=i(6389);class b extends f.W{constructor(e,t,r=!0){super(e.agentIdentifier,t),this.auto=r,this.abortHandler=void 0,this.featAggregate=void 0,this.onAggregateImported=void 0,!1===e.init[this.featureName].autoStart&&(this.auto=!1),this.auto?(0,l.Ak)(e.agentIdentifier,t):this.ee.on("manual-start-all",(0,v.J)((()=>{(0,l.Ak)(e.agentIdentifier,this.featureName),this.auto=!0,this.importAggregator(e)})))}importAggregator(t,r={}){if(this.featAggregate||!this.auto)return;let n;this.onAggregateImported=new Promise((e=>{n=e}));const o=async()=>{let o;try{if((0,m.V)(this.agentIdentifier)){const{setupAgentSession:e}=await i.e(478).then(i.bind(i,6526));o=e(t)}}catch(t){(0,e.R)(20,t),this.ee.emit("internal-error",[t]),this.featureName===a.K7.sessionReplay&&this.abortHandler?.()}try{if(t.sharedAggregator)await t.sharedAggregator;else{t.sharedAggregator=i.e(478).then(i.bind(i,9337));const{EventAggregator:e}=await t.sharedAggregator;t.sharedAggregator=new e}if(!this.#t(this.featureName,o))return(0,l.Ze)(this.agentIdentifier,this.featureName),void n(!1);const{lazyFeatureLoader:e}=await i.e(478).then(i.bind(i,6103)),{Aggregate:a}=await e(this.featureName,"aggregate");this.featAggregate=new a(t,r),n(!0)}catch(t){(0,e.R)(34,t),this.abortHandler?.(),(0,l.Ze)(this.agentIdentifier,this.featureName,!0),n(!1),this.ee&&this.ee.abort()}};p.RI?(0,h.GG)((()=>o()),!0):o()}#t(e,t){switch(e){case a.K7.sessionReplay:return(0,g.SR)(this.agentIdentifier)&&!!t;case a.K7.sessionTrace:return!!t;default:return!0}}}var y=i(6630);class w extends b{static featureName=y.T;constructor(e,t=!0){super(e,y.T,t),this.importAggregator(e)}}var R=i(384);var x=i(9908),T=i(2843),A=i(3878),E=i(782),S=i(1863);class N extends b{static featureName=E.T;constructor(e,t=!0){super(e,E.T,t),p.RI&&((0,T.u)((()=>(0,x.p)("docHidden",[(0,S.t)()],void 0,E.T,this.ee)),!0),(0,A.sp)("pagehide",(()=>(0,x.p)("winPagehide",[(0,S.t)()],void 0,E.T,this.ee))),this.importAggregator(e))}}var O=i(3969);class _ extends b{static featureName=O.TZ;constructor(e,t=!0){super(e,O.TZ,t),this.importAggregator(e)}}var I=i(6774),j=i(3304);class P{constructor(e,t,r,n,i){this.name="UncaughtError",this.message="string"==typeof e?e:(0,j.A)(e),this.sourceURL=t,this.line=r,this.column=n,this.__newrelic=i}}function C(e){return H(e)?e:new P(void 0!==e?.message?e.message:e,e?.filename||e?.sourceURL,e?.lineno||e?.line,e?.colno||e?.col,e?.__newrelic)}function k(e){const t="Unhandled Promise Rejection";if(!e?.reason)return;if(H(e.reason))try{return e.reason.message=t+": "+e.reason.message,C(e.reason)}catch(t){return C(e.reason)}const r=C(e.reason);return r.message=t+": "+r?.message,r}function L(e){if(e.error instanceof SyntaxError&&!/:\d+$/.test(e.error.stack?.trim())){const t=new P(e.message,e.filename,e.lineno,e.colno,e.error.__newrelic);return t.name=SyntaxError.name,t}return H(e.error)?e.error:C(e)}function H(e){return e instanceof Error&&!!e.stack}class D extends b{static featureName=I.T;#r=!1;constructor(e,r=!0){super(e,I.T,r);try{this.removeOnAbort=new AbortController}catch(e){}this.ee.on("internal-error",(e=>{this.abortHandler&&(0,x.p)("ierr",[C(e),(0,S.t)(),!0,{},this.#r],void 0,this.featureName,this.ee)})),this.ee.on(t.G4.REPLAY_RUNNING,(e=>{this.#r=e})),p.gm.addEventListener("unhandledrejection",(e=>{this.abortHandler&&(0,x.p)("err",[k(e),(0,S.t)(),!1,{unhandledPromiseRejection:1},this.#r],void 0,this.featureName,this.ee)}),(0,A.jT)(!1,this.removeOnAbort?.signal)),p.gm.addEventListener("error",(e=>{this.abortHandler&&(0,x.p)("err",[L(e),(0,S.t)(),!1,{},this.#r],void 0,this.featureName,this.ee)}),(0,A.jT)(!1,this.removeOnAbort?.signal)),this.abortHandler=this.#n,this.importAggregator(e)}#n(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}var M=i(8990);let K=1;const U="nr@id";function V(e){const t=typeof e;return!e||"object"!==t&&"function"!==t?-1:e===p.gm?0:(0,M.I)(e,U,(function(){return K++}))}function G(e){if("string"==typeof e&&e.length)return e.length;if("object"==typeof e){if("undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer&&e.byteLength)return e.byteLength;if("undefined"!=typeof Blob&&e instanceof Blob&&e.size)return e.size;if(!("undefined"!=typeof FormData&&e instanceof FormData))try{return(0,j.A)(e).length}catch(e){return}}}var F=i(8139),B=i(7836),W=i(3434);const z={},q=["open","send"];function Z(t){var r=t||B.ee;const n=function(e){return(e||B.ee).get("xhr")}(r);if(z[n.debugId]++)return n;z[n.debugId]=1,(0,F.u)(r);var i=(0,W.YM)(n),o=p.gm.XMLHttpRequest,a=p.gm.MutationObserver,s=p.gm.Promise,c=p.gm.setInterval,u="readystatechange",d=["onload","onerror","onabort","onloadstart","onloadend","onprogress","ontimeout"],l=[],f=p.gm.XMLHttpRequest=function(t){const r=new o(t),a=n.context(r);try{n.emit("new-xhr",[r],a),r.addEventListener(u,(s=a,function(){var e=this;e.readyState>3&&!s.resolved&&(s.resolved=!0,n.emit("xhr-resolved",[],e)),i.inPlace(e,d,"fn-",y)}),(0,A.jT)(!1))}catch(t){(0,e.R)(15,t);try{n.emit("internal-error",[t])}catch(e){}}var s;return r};function h(e,t){i.inPlace(t,["onreadystatechange"],"fn-",y)}if(function(e,t){for(var r in e)t[r]=e[r]}(o,f),f.prototype=o.prototype,i.inPlace(f.prototype,q,"-xhr-",y),n.on("send-xhr-start",(function(e,t){h(e,t),function(e){l.push(e),a&&(g?g.then(b):c?c(b):(m=-m,v.data=m))}(t)})),n.on("open-xhr-start",h),a){var g=s&&s.resolve();if(!c&&!s){var m=1,v=document.createTextNode(m);new a(b).observe(v,{characterData:!0})}}else r.on("fn-end",(function(e){e[0]&&e[0].type===u||b()}));function b(){for(var e=0;e<l.length;e++)h(0,l[e]);l.length&&(l=[])}function y(e,t){return t}return n}var Y="fetch-",X=Y+"body-",J=["arrayBuffer","blob","json","text","formData"],Q=p.gm.Request,ee=p.gm.Response,te="prototype";const re={};function ne(e){const t=function(e){return(e||B.ee).get("fetch")}(e);if(!(Q&&ee&&p.gm.fetch))return t;if(re[t.debugId]++)return t;function r(e,r,n){var i=e[r];"function"==typeof i&&(e[r]=function(){var e,r=[...arguments],o={};t.emit(n+"before-start",[r],o),o[B.P]&&o[B.P].dt&&(e=o[B.P].dt);var a=i.apply(this,r);return t.emit(n+"start",[r,e],a),a.then((function(e){return t.emit(n+"end",[null,e],a),e}),(function(e){throw t.emit(n+"end",[e],a),e}))})}return re[t.debugId]=1,J.forEach((e=>{r(Q[te],e,X),r(ee[te],e,X)})),r(p.gm,"fetch",Y),t.on(Y+"end",(function(e,r){var n=this;if(r){var i=r.headers.get("content-length");null!==i&&(n.rxSize=i),t.emit(Y+"done",[null,r],n)}else t.emit(Y+"done",[e],n)})),t}var ie=i(7485),oe=i(5603);class ae{constructor(e){this.agentIdentifier=e}generateTracePayload(e){if(!this.shouldGenerateTrace(e))return null;var t=(0,oe.o)(this.agentIdentifier);if(!t)return null;var n=(t.accountID||"").toString()||null,i=(t.agentID||"").toString()||null,o=(t.trustKey||"").toString()||null;if(!n||!i)return null;var a=(0,r.ZF)(),s=(0,r.el)(),c=Date.now(),u={spanId:a,traceId:s,timestamp:c};return(e.sameOrigin||this.isAllowedOrigin(e)&&this.useTraceContextHeadersForCors())&&(u.traceContextParentHeader=this.generateTraceContextParentHeader(a,s),u.traceContextStateHeader=this.generateTraceContextStateHeader(a,c,n,i,o)),(e.sameOrigin&&!this.excludeNewrelicHeader()||!e.sameOrigin&&this.isAllowedOrigin(e)&&this.useNewrelicHeaderForCors())&&(u.newrelicHeader=this.generateTraceHeader(a,s,c,n,i,o)),u}generateTraceContextParentHeader(e,t){return"00-"+t+"-"+e+"-01"}generateTraceContextStateHeader(e,t,r,n,i){return i+"@nr=0-1-"+r+"-"+n+"-"+e+"----"+t}generateTraceHeader(e,t,r,n,i,o){if(!("function"==typeof p.gm?.btoa))return null;var a={v:[0,1],d:{ty:"Browser",ac:n,ap:i,id:e,tr:t,ti:r}};return o&&n!==o&&(a.d.tk=o),btoa((0,j.A)(a))}shouldGenerateTrace(e){return this.isDtEnabled()&&this.isAllowedOrigin(e)}isAllowedOrigin(e){var t=!1,r={};if((0,s.gD)(this.agentIdentifier,"distributed_tracing")&&(r=(0,s.D0)(this.agentIdentifier).distributed_tracing),e.sameOrigin)t=!0;else if(r.allowed_origins instanceof Array)for(var n=0;n<r.allowed_origins.length;n++){var i=(0,ie.D)(r.allowed_origins[n]);if(e.hostname===i.hostname&&e.protocol===i.protocol&&e.port===i.port){t=!0;break}}return t}isDtEnabled(){var e=(0,s.gD)(this.agentIdentifier,"distributed_tracing");return!!e&&!!e.enabled}excludeNewrelicHeader(){var e=(0,s.gD)(this.agentIdentifier,"distributed_tracing");return!!e&&!!e.exclude_newrelic_header}useNewrelicHeaderForCors(){var e=(0,s.gD)(this.agentIdentifier,"distributed_tracing");return!!e&&!1!==e.cors_use_newrelic_header}useTraceContextHeadersForCors(){var e=(0,s.gD)(this.agentIdentifier,"distributed_tracing");return!!e&&!!e.cors_use_tracecontext_headers}}var se=i(9300),ce=i(7295),ue=["load","error","abort","timeout"],de=ue.length,le=(0,R.dV)().o.REQ,fe=(0,R.dV)().o.XHR;class he extends b{static featureName=se.T;constructor(e,t=!0){super(e,se.T,t),this.dt=new ae(e.agentIdentifier),this.handler=(e,t,r,n)=>(0,x.p)(e,t,r,n,this.ee);try{const e={xmlhttprequest:"xhr",fetch:"fetch",beacon:"beacon"};p.gm?.performance?.getEntriesByType("resource").forEach((t=>{if(t.initiatorType in e&&0!==t.responseStatus){const r={status:t.responseStatus},n={rxSize:t.transferSize,duration:Math.floor(t.duration),cbTime:0};pe(r,t.name),this.handler("xhr",[r,n,t.startTime,t.responseEnd,e[t.initiatorType]],void 0,a.K7.ajax)}}))}catch(e){}ne(this.ee),Z(this.ee),function(e,t,r,n){function i(e){var t=this;t.totalCbs=0,t.called=0,t.cbTime=0,t.end=R,t.ended=!1,t.xhrGuids={},t.lastSize=null,t.loadCaptureCalled=!1,t.params=this.params||{},t.metrics=this.metrics||{},e.addEventListener("load",(function(r){T(t,e)}),(0,A.jT)(!1)),p.lR||e.addEventListener("progress",(function(e){t.lastSize=e.loaded}),(0,A.jT)(!1))}function o(e){this.params={method:e[0]},pe(this,e[1]),this.metrics={}}function s(t,r){e.loader_config.xpid&&this.sameOrigin&&r.setRequestHeader("X-NewRelic-ID",e.loader_config.xpid);var i=n.generateTracePayload(this.parsedOrigin);if(i){var o=!1;i.newrelicHeader&&(r.setRequestHeader("newrelic",i.newrelicHeader),o=!0),i.traceContextParentHeader&&(r.setRequestHeader("traceparent",i.traceContextParentHeader),i.traceContextStateHeader&&r.setRequestHeader("tracestate",i.traceContextStateHeader),o=!0),o&&(this.dt=i)}}function c(e,r){var n=this.metrics,i=e[0],o=this;if(n&&i){var a=G(i);a&&(n.txSize=a)}this.startTime=(0,S.t)(),this.body=i,this.listener=function(e){try{"abort"!==e.type||o.loadCaptureCalled||(o.params.aborted=!0),("load"!==e.type||o.called===o.totalCbs&&(o.onloadCalled||"function"!=typeof r.onload)&&"function"==typeof o.end)&&o.end(r)}catch(e){try{t.emit("internal-error",[e])}catch(e){}}};for(var s=0;s<de;s++)r.addEventListener(ue[s],this.listener,(0,A.jT)(!1))}function u(e,t,r){this.cbTime+=e,t?this.onloadCalled=!0:this.called+=1,this.called!==this.totalCbs||!this.onloadCalled&&"function"==typeof r.onload||"function"!=typeof this.end||this.end(r)}function d(e,t){var r=""+V(e)+!!t;this.xhrGuids&&!this.xhrGuids[r]&&(this.xhrGuids[r]=!0,this.totalCbs+=1)}function l(e,t){var r=""+V(e)+!!t;this.xhrGuids&&this.xhrGuids[r]&&(delete this.xhrGuids[r],this.totalCbs-=1)}function f(){this.endTime=(0,S.t)()}function h(e,r){r instanceof fe&&"load"===e[0]&&t.emit("xhr-load-added",[e[1],e[2]],r)}function g(e,r){r instanceof fe&&"load"===e[0]&&t.emit("xhr-load-removed",[e[1],e[2]],r)}function m(e,t,r){t instanceof fe&&("onload"===r&&(this.onload=!0),("load"===(e[0]&&e[0].type)||this.onload)&&(this.xhrCbStart=(0,S.t)()))}function v(e,r){this.xhrCbStart&&t.emit("xhr-cb-time",[(0,S.t)()-this.xhrCbStart,this.onload,r],r)}function b(e){var t,r=e[1]||{};if("string"==typeof e[0]?0===(t=e[0]).length&&p.RI&&(t=""+p.gm.location.href):e[0]&&e[0].url?t=e[0].url:p.gm?.URL&&e[0]&&e[0]instanceof URL?t=e[0].href:"function"==typeof e[0].toString&&(t=e[0].toString()),"string"==typeof t&&0!==t.length){t&&(this.parsedOrigin=(0,ie.D)(t),this.sameOrigin=this.parsedOrigin.sameOrigin);var i=n.generateTracePayload(this.parsedOrigin);if(i&&(i.newrelicHeader||i.traceContextParentHeader))if(e[0]&&e[0].headers)s(e[0].headers,i)&&(this.dt=i);else{var o={};for(var a in r)o[a]=r[a];o.headers=new Headers(r.headers||{}),s(o.headers,i)&&(this.dt=i),e.length>1?e[1]=o:e.push(o)}}function s(e,t){var r=!1;return t.newrelicHeader&&(e.set("newrelic",t.newrelicHeader),r=!0),t.traceContextParentHeader&&(e.set("traceparent",t.traceContextParentHeader),t.traceContextStateHeader&&e.set("tracestate",t.traceContextStateHeader),r=!0),r}}function y(e,t){this.params={},this.metrics={},this.startTime=(0,S.t)(),this.dt=t,e.length>=1&&(this.target=e[0]),e.length>=2&&(this.opts=e[1]);var r,n=this.opts||{},i=this.target;"string"==typeof i?r=i:"object"==typeof i&&i instanceof le?r=i.url:p.gm?.URL&&"object"==typeof i&&i instanceof URL&&(r=i.href),pe(this,r);var o=(""+(i&&i instanceof le&&i.method||n.method||"GET")).toUpperCase();this.params.method=o,this.body=n.body,this.txSize=G(n.body)||0}function w(e,t){if(this.endTime=(0,S.t)(),this.params||(this.params={}),(0,ce.iW)(this.params))return;let n;this.params.status=t?t.status:0,"string"==typeof this.rxSize&&this.rxSize.length>0&&(n=+this.rxSize);const i={txSize:this.txSize,rxSize:n,duration:(0,S.t)()-this.startTime};r("xhr",[this.params,i,this.startTime,this.endTime,"fetch"],this,a.K7.ajax)}function R(e){const t=this.params,n=this.metrics;if(!this.ended){this.ended=!0;for(let t=0;t<de;t++)e.removeEventListener(ue[t],this.listener,!1);t.aborted||(0,ce.iW)(t)||(n.duration=(0,S.t)()-this.startTime,this.loadCazptureCalled||4!==e.readyState?null==t.status&&(t.status=0):T(this,e),n.cbTime=this.cbTime,r("xhr",[t,n,this.startTime,this.endTime,"xhr"],this,a.K7.ajax))}}function T(e,r){e.params.status=r.status;var n=function(e,t){var r=e.responseType;return"json"===r&&null!==t?t:"arraybuffer"===r||"blob"===r||"json"===r?G(e.response):"text"===r||""===r||void 0===r?G(e.responseText):void 0}(r,e.lastSize);if(n&&(e.metrics.rxSize=n),e.sameOrigin){var i=r.getResponseHeader("X-NewRelic-App-Data");i&&((0,x.p)(O.rs,["Ajax/CrossApplicationTracing/Header/Seen"],void 0,a.K7.metrics,t),e.params.cat=i.split(", ").pop())}e.loadCaptureCalled=!0}t.on("new-xhr",i),t.on("open-xhr-start",o),t.on("open-xhr-end",s),t.on("send-xhr-start",c),t.on("xhr-cb-time",u),t.on("xhr-load-added",d),t.on("xhr-load-removed",l),t.on("xhr-resolved",f),t.on("addEventListener-end",h),t.on("removeEventListener-end",g),t.on("fn-end",v),t.on("fetch-before-start",b),t.on("fetch-start",y),t.on("fn-start",m),t.on("fetch-done",w)}(e,this.ee,this.handler,this.dt),this.importAggregator(e)}}function pe(e,t){var r=(0,ie.D)(t),n=e.params||e;n.hostname=r.hostname,n.port=r.port,n.protocol=r.protocol,n.host=r.hostname+":"+r.port,n.pathname=r.pathname,e.parsedOrigin=r,e.sameOrigin=r.sameOrigin}const ge={},me=["pushState","replaceState"];function ve(e){const t=function(e){return(e||B.ee).get("history")}(e);return!p.RI||ge[t.debugId]++||(ge[t.debugId]=1,(0,W.YM)(t).inPlace(window.history,me,"-")),t}var be=i(3738);const{He:ye,bD:we,d3:Re,Kp:xe,TZ:Te,Lc:Ae,uP:Ee,Rz:Se}=be;class Ne extends b{static featureName=Te;constructor(e,t=!0){super(e,Te,t);if(!(0,m.V)(this.agentIdentifier))return void this.deregisterDrain();const r=this.ee;let n;ve(r),this.eventsEE=(0,F.u)(r),this.eventsEE.on(Ee,(function(e,t){this.bstStart=(0,S.t)()})),this.eventsEE.on(Ae,(function(e,t){(0,x.p)("bst",[e[0],t,this.bstStart,(0,S.t)()],void 0,a.K7.sessionTrace,r)})),r.on(Se+Re,(function(e){this.time=(0,S.t)(),this.startPath=location.pathname+location.hash})),r.on(Se+xe,(function(e){(0,x.p)("bstHist",[location.pathname+location.hash,this.startPath,this.time],void 0,a.K7.sessionTrace,r)}));try{n=new PerformanceObserver((e=>{const t=e.getEntries();(0,x.p)(ye,[t],void 0,a.K7.sessionTrace,r)})),n.observe({type:we,buffered:!0})}catch(e){}this.importAggregator(e,{resourceObserver:n})}}var Oe=i(2614);class _e extends b{static featureName=t.TZ;#i;#o;constructor(e,r=!0){let n;super(e,t.TZ,r),this.replayRunning=!1,this.#o=e;try{n=JSON.parse(localStorage.getItem("".concat(Oe.H3,"_").concat(Oe.uh)))}catch(e){}(0,g.SR)(e.agentIdentifier)&&this.ee.on(t.G4.RECORD,(()=>this.#a())),this.#s(n)?(this.#i=n?.sessionReplayMode,this.#c()):this.importAggregator(e),this.ee.on("err",(e=>{this.replayRunning&&(this.errorNoticed=!0,(0,x.p)(t.G4.ERROR_DURING_REPLAY,[e],void 0,this.featureName,this.ee))})),this.ee.on(t.G4.REPLAY_RUNNING,(e=>{this.replayRunning=e}))}#s(e){return e&&(e.sessionReplayMode===Oe.g.FULL||e.sessionReplayMode===Oe.g.ERROR)||(0,g.Aw)(this.agentIdentifier)}#u=!1;async#c(e){if(!this.#u){this.#u=!0;try{const{Recorder:t}=await Promise.all([i.e(478),i.e(249)]).then(i.bind(i,8589));this.recorder??=new t({mode:this.#i,agentIdentifier:this.agentIdentifier,trigger:e,ee:this.ee}),this.recorder.startRecording(),this.abortHandler=this.recorder.stopRecording}catch(e){}this.importAggregator(this.#o,{recorder:this.recorder,errorNoticed:this.errorNoticed})}}#a(){this.featAggregate?this.featAggregate.mode!==Oe.g.FULL&&this.featAggregate.initializeRecording(Oe.g.FULL,!0):(this.#i=Oe.g.FULL,this.#c(t.Qb.API),this.recorder&&this.recorder.parent.mode!==Oe.g.FULL&&(this.recorder.parent.mode=Oe.g.FULL,this.recorder.stopRecording(),this.recorder.startRecording(),this.abortHandler=this.recorder.stopRecording))}}var Ie=i(3962);class je extends b{static featureName=Ie.TZ;constructor(e,t=!0){if(super(e,Ie.TZ,t),!p.RI||!(0,R.dV)().o.MO)return;const r=ve(this.ee);Ie.tC.forEach((e=>{(0,A.sp)(e,(e=>{a(e)}),!0)}));const n=()=>(0,x.p)("newURL",[(0,S.t)(),""+window.location],void 0,this.featureName,this.ee);r.on("pushState-end",n),r.on("replaceState-end",n);try{this.removeOnAbort=new AbortController}catch(e){}(0,A.sp)("popstate",(e=>(0,x.p)("newURL",[e.timeStamp,""+window.location],void 0,this.featureName,this.ee)),!0,this.removeOnAbort?.signal);let i=!1;const o=new((0,R.dV)().o.MO)(((e,t)=>{i||(i=!0,requestAnimationFrame((()=>{(0,x.p)("newDom",[(0,S.t)()],void 0,this.featureName,this.ee),i=!1})))})),a=(0,v.s)((e=>{(0,x.p)("newUIEvent",[e],void 0,this.featureName,this.ee),o.observe(document.body,{attributes:!0,childList:!0,subtree:!0,characterData:!0})}),100,{leading:!0});this.abortHandler=function(){this.removeOnAbort?.abort(),o.disconnect(),this.abortHandler=void 0},this.importAggregator(e,{domObserver:o})}}var Pe=i(7378);const Ce={},ke=["appendChild","insertBefore","replaceChild"];function Le(e){const t=function(e){return(e||B.ee).get("jsonp")}(e);if(!p.RI||Ce[t.debugId])return t;Ce[t.debugId]=!0;var r=(0,W.YM)(t),n=/[?&](?:callback|cb)=([^&#]+)/,i=/(.*)\.([^.]+)/,o=/^(\w+)(\.|$)(.*)$/;function a(e,t){if(!e)return t;const r=e.match(o),n=r[1];return a(r[3],t[n])}return r.inPlace(Node.prototype,ke,"dom-"),t.on("dom-start",(function(e){!function(e){if(!e||"string"!=typeof e.nodeName||"script"!==e.nodeName.toLowerCase())return;if("function"!=typeof e.addEventListener)return;var o=(s=e.src,c=s.match(n),c?c[1]:null);var s,c;if(!o)return;var u=function(e){var t=e.match(i);if(t&&t.length>=3)return{key:t[2],parent:a(t[1],window)};return{key:e,parent:window}}(o);if("function"!=typeof u.parent[u.key])return;var d={};function l(){t.emit("jsonp-end",[],d),e.removeEventListener("load",l,(0,A.jT)(!1)),e.removeEventListener("error",f,(0,A.jT)(!1))}function f(){t.emit("jsonp-error",[],d),t.emit("jsonp-end",[],d),e.removeEventListener("load",l,(0,A.jT)(!1)),e.removeEventListener("error",f,(0,A.jT)(!1))}r.inPlace(u.parent,[u.key],"cb-",d),e.addEventListener("load",l,(0,A.jT)(!1)),e.addEventListener("error",f,(0,A.jT)(!1)),t.emit("new-jsonp",[e.src],d)}(e[0])})),t}const He={};function De(e){const t=function(e){return(e||B.ee).get("promise")}(e);if(He[t.debugId])return t;He[t.debugId]=!0;var r=t.context,n=(0,W.YM)(t),i=p.gm.Promise;return i&&function(){function e(r){var o=t.context(),a=n(r,"executor-",o,null,!1);const s=Reflect.construct(i,[a],e);return t.context(s).getCtx=function(){return o},s}p.gm.Promise=e,Object.defineProperty(e,"name",{value:"Promise"}),e.toString=function(){return i.toString()},Object.setPrototypeOf(e,i),["all","race"].forEach((function(r){const n=i[r];e[r]=function(e){let i=!1;[...e||[]].forEach((e=>{this.resolve(e).then(a("all"===r),a(!1))}));const o=n.apply(this,arguments);return o;function a(e){return function(){t.emit("propagate",[null,!i],o,!1,!1),i=i||!e}}}})),["resolve","reject"].forEach((function(r){const n=i[r];e[r]=function(e){const r=n.apply(this,arguments);return e!==r&&t.emit("propagate",[e,!0],r,!1,!1),r}})),e.prototype=i.prototype;const o=i.prototype.then;i.prototype.then=function(...e){var i=this,a=r(i);a.promise=i,e[0]=n(e[0],"cb-",a,null,!1),e[1]=n(e[1],"cb-",a,null,!1);const s=o.apply(this,e);return a.nextPromise=s,t.emit("propagate",[i,!0],s,!1,!1),s},i.prototype.then[W.Jt]=o,t.on("executor-start",(function(e){e[0]=n(e[0],"resolve-",this,null,!1),e[1]=n(e[1],"resolve-",this,null,!1)})),t.on("executor-err",(function(e,t,r){e[1](r)})),t.on("cb-end",(function(e,r,n){t.emit("propagate",[n,!0],this.nextPromise,!1,!1)})),t.on("propagate",(function(e,r,n){this.getCtx&&!r||(this.getCtx=function(){if(e instanceof Promise)var r=t.context(e);return r&&r.getCtx?r.getCtx():this})}))}(),t}const Me={},Ke="setTimeout",Ue="setInterval",Ve="clearTimeout",Ge="-start",Fe=[Ke,"setImmediate",Ue,Ve,"clearImmediate"];function Be(e){const t=function(e){return(e||B.ee).get("timer")}(e);if(Me[t.debugId]++)return t;Me[t.debugId]=1;var r=(0,W.YM)(t);return r.inPlace(p.gm,Fe.slice(0,2),Ke+"-"),r.inPlace(p.gm,Fe.slice(2,3),Ue+"-"),r.inPlace(p.gm,Fe.slice(3),Ve+"-"),t.on(Ue+Ge,(function(e,t,n){e[0]=r(e[0],"fn-",null,n)})),t.on(Ke+Ge,(function(e,t,n){this.method=n,this.timerDuration=isNaN(e[1])?0:+e[1],e[0]=r(e[0],"fn-",this,n)})),t}const We={};function ze(e){const t=function(e){return(e||B.ee).get("mutation")}(e);if(!p.RI||We[t.debugId])return t;We[t.debugId]=!0;var r=(0,W.YM)(t),n=p.gm.MutationObserver;return n&&(window.MutationObserver=function(e){return this instanceof n?new n(r(e,"fn-")):n.apply(this,arguments)},MutationObserver.prototype=n.prototype),t}const{TZ:qe,d3:Ze,Kp:Ye,$p:Xe,wW:Je,e5:Qe,tH:$e,uP:et,rw:tt,Lc:rt}=Pe;class nt extends b{static featureName=qe;constructor(e,t=!0){if(super(e,qe,t),!p.RI)return;try{this.removeOnAbort=new AbortController}catch(e){}let r,n=0;const i=this.ee.get("tracer"),o=Le(this.ee),a=De(this.ee),s=Be(this.ee),c=Z(this.ee),u=this.ee.get("events"),d=ne(this.ee),l=ve(this.ee),f=ze(this.ee);function h(e,t){l.emit("newURL",[""+window.location,t])}function g(){n++,r=window.location.hash,this[et]=(0,S.t)()}function m(){n--,window.location.hash!==r&&h(0,!0);var e=(0,S.t)();this[Qe]=~~this[Qe]+e-this[et],this[rt]=e}function v(e,t){e.on(t,(function(){this[t]=(0,S.t)()}))}this.ee.on(et,g),a.on(tt,g),o.on(tt,g),this.ee.on(rt,m),a.on(Je,m),o.on(Je,m),this.ee.on("fn-err",((...t)=>{t[2]?.__newrelic?.[e.agentIdentifier]||(0,x.p)("function-err",[...t],void 0,this.featureName,this.ee)})),this.ee.buffer([et,rt,"xhr-resolved"],this.featureName),u.buffer([et],this.featureName),s.buffer(["setTimeout"+Ye,"clearTimeout"+Ze,et],this.featureName),c.buffer([et,"new-xhr","send-xhr"+Ze],this.featureName),d.buffer([$e+Ze,$e+"-done",$e+Xe+Ze,$e+Xe+Ye],this.featureName),l.buffer(["newURL"],this.featureName),f.buffer([et],this.featureName),a.buffer(["propagate",tt,Je,"executor-err","resolve"+Ze],this.featureName),i.buffer([et,"no-"+et],this.featureName),o.buffer(["new-jsonp","cb-start","jsonp-error","jsonp-end"],this.featureName),v(d,$e+Ze),v(d,$e+"-done"),v(o,"new-jsonp"),v(o,"jsonp-end"),v(o,"cb-start"),l.on("pushState-end",h),l.on("replaceState-end",h),window.addEventListener("hashchange",h,(0,A.jT)(!0,this.removeOnAbort?.signal)),window.addEventListener("load",h,(0,A.jT)(!0,this.removeOnAbort?.signal)),window.addEventListener("popstate",(function(){h(0,n>1)}),(0,A.jT)(!0,this.removeOnAbort?.signal)),this.abortHandler=this.#n,this.importAggregator(e)}#n(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}var it=i(3333);class ot extends b{static featureName=it.TZ;constructor(e,t=!0){super(e,it.TZ,t);const r=[e.init.page_action.enabled,e.init.performance.capture_marks,e.init.performance.capture_measures,e.init.user_actions.enabled];p.RI&&e.init.user_actions.enabled&&(it.Zp.forEach((e=>(0,A.sp)(e,(e=>(0,x.p)("ua",[e],void 0,this.featureName,this.ee)),!0))),it.qN.forEach((e=>(0,A.sp)(e,(e=>(0,x.p)("ua",[e],void 0,this.featureName,this.ee)))))),r.some((e=>e))?this.importAggregator(e):this.deregisterDrain()}}var at=i(993),st=i(3785);class ct extends b{static featureName=at.TZ;constructor(e,t=!0){super(e,at.TZ,t);const r=this.ee;this.ee.on("wrap-logger-end",(function([e]){const{level:t,customAttributes:n}=this;(0,st.R)(r,e,n,t)})),this.importAggregator(e)}}new class extends o{constructor(t,r){super(r),p.gm?(this.features={},(0,R.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(t.features||[]),this.desiredFeatures.add(w),this.runSoftNavOverSpa=[...this.desiredFeatures].some((e=>e.featureName===a.K7.softNav)),(0,d.j)(this,t,t.loaderType||"agent"),this.run()):(0,e.R)(21)}get config(){return{info:this.info,init:this.init,loader_config:this.loader_config,runtime:this.runtime}}run(){try{const t=u(this.agentIdentifier),r=[...this.desiredFeatures];r.sort(((e,t)=>a.P3[e.featureName]-a.P3[t.featureName])),r.forEach((r=>{if(!t[r.featureName]&&r.featureName!==a.K7.pageViewEvent)return;if(this.runSoftNavOverSpa&&r.featureName===a.K7.spa)return;if(!this.runSoftNavOverSpa&&r.featureName===a.K7.softNav)return;const n=function(e){switch(e){case a.K7.ajax:return[a.K7.jserrors];case a.K7.sessionTrace:return[a.K7.ajax,a.K7.pageViewEvent];case a.K7.sessionReplay:return[a.K7.sessionTrace];case a.K7.pageViewTiming:return[a.K7.pageViewEvent];default:return[]}}(r.featureName).filter((e=>!(e in this.features)));n.length>0&&(0,e.R)(36,{targetFeature:r.featureName,missingDependencies:n}),this.features[r.featureName]=new r(this)}))}catch(t){(0,e.R)(22,t);for(const e in this.features)this.features[e].abortHandler?.();const r=(0,R.Zm)();delete r.initializedAgents[this.agentIdentifier]?.api,delete r.initializedAgents[this.agentIdentifier]?.features,delete this.sharedAggregator;return r.ee.get(this.agentIdentifier).abort(),!1}}}({features:[he,w,N,Ne,_e,_,D,ot,ct,je,nt],loaderType:"spa"})})()})();</script> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="description" content="Top 3D Shop has collected 190 reviews with an average score of 4.84. There are 171 customers that ❤ Top 3D Shop, rating them as excellent."/> <meta name="twitter:description" content="Top 3D Shop has collected 190 reviews with an average score of 4.84. There are 171 customers that ❤ Top 3D Shop, rating them as excellent."> <meta property="og:description" content="Top 3D Shop has collected 190 reviews with an average score of 4.84. There are 171 customers that ❤ Top 3D Shop, rating them as excellent."/> <meta name="title" content=""/> <meta property="og:title" content="Top 3D Shop Reviews - Read 190 Genuine Customer Reviews | top3dshop.com"/> <meta property="og:url" content="https://www.reviews.io/company-reviews/store/top3dshop.com"/> <meta property="og:image" content="https://www.reviews.io/meta-image/top3dshop.com?v=2024-11-25"/> <meta property="og:image:secure_url" content="https://www.reviews.io/meta-image/top3dshop.com?v=2024-11-25"/> <meta property="og:image:width" content="1200"/> <meta property="og:image:height" content="630"/> <meta property="og:site_name" content="reviews.io"/> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:site" content="@reviews_experts"> <meta name="twitter:title" content="Top 3D Shop Reviews - Read 190 Genuine Customer Reviews | top3dshop.com"> <meta name="twitter:image" content="https://www.reviews.io/meta-image/top3dshop.com?v=2024-11-25"/> <meta name="google-site-verification" content="zV8bPWm8iJEpBm73y4LNsrm84ZfEAatpSQi1q5Sxjaw"/> <meta name="google-site-verification" content="mqVu3CqBYjmRBBai5t9EHCAg-TNSpx5rz7lXZNnMAwA" /> <meta name="google-site-verification" content="oRUq8wvh9Ji-p5NMtZUEciUcKzhpKiEeuNK1JB9cqto" /> <meta name="google-site-verification" content="7MURZ3nyE_SgN-A3nTF793Ik-824lZ-xOIxFLAR1q1A" /> <meta name="facebook-domain-verification" content="4b1gn0ntbac9zz012iigjk9er8j7up" /> <script src="https://widget.reviews.co.uk/instagram-photo-profile/dist.js?v=profile_page&x=5" type="text/javascript"></script> <link rel="next" href="https://www.reviews.io/company-reviews/store/top3dshop.com/Qr"/> <!-- Favicons --> <link rel="apple-touch-icon" sizes="180x180" href="https://assets.reviews.io/favicon/apple-touch-icon.png"> <link rel="icon" type="image/png" sizes="32x32" href="https://assets.reviews.io/favicon/favicon-32x32.png"> <link rel="icon" type="image/png" sizes="16x16" href="https://assets.reviews.io/favicon/favicon-16x16.png"> <link rel="manifest" href="https://assets.reviews.io/favicon/site.webmanifest"> <link rel="mask-icon" href="https://assets.reviews.io/favicon/safari-pinned-tab.svg" color="#5bbad5"> <link rel="shortcut icon" href="https://assets.reviews.io/favicon/favicon.ico"> <meta name="msapplication-TileColor" content="#ffffff"> <meta name="msapplication-config" content="https://assets.reviews.io/favicon/browserconfig.xml"> <meta name="theme-color" content="#ffffff"> <link rel="stylesheet" type="text/css" media="screen" href="https://assets.reviews.io/iconfont/reviewsio-icons/style.css?v=2020-09-24"> <link href="https://assets.reviews.io/css/store-page.css?2cd765662a157f041f8730d108a7f33600bc5549" rel="stylesheet" media="screen"> <link href="https://assets.reviews.io/fonts/gwebfonts/inter/inter.css" rel="stylesheet" media="print" onload="this.media='all'"> <style> .pagination { margin: 40px 0px 40px 0px; } .pagination > li > a { text-decoration: none; background-color: #fff; color: #777; min-width: 40px; } .pagination > li > a:focus { background-color: #f0f0f0 !important; } .pagination > li > a:hover, .pagination>.active>a, .pagination>.active>a:focus, .pagination>.active>a:hover, .pagination>.active>span, .pagination>.active>span:focus, .pagination>.active>span:hover { background-color: #12cf6c !important; color: white; border: 1px solid #ddd; min-width: 40px; } .pagination>.disabled>a, .pagination>.disabled>a:focus, .pagination>.disabled>a:hover, .pagination>.disabled>span, .pagination>.disabled>span:focus, .pagination>.disabled>span:hover { color: #777; cursor: not-allowed; background-color: #f0f0f0; border: 1px solid #ddd; min-width: 40px; } </style> <script> var photoPage = 0; var storeId = "64lkz" </script> <style> .grecaptcha-badge { visibility: hidden; } </style> <script src='https://www.google.com/recaptcha/api.js?render=6LfXZCkaAAAAAA6P92lEjjUSaoqB_tFkjJB_8G1A'></script> <script> document.addEventListener('DOMContentLoaded', function () { grecaptcha.ready(function() { grecaptcha.execute('6LfXZCkaAAAAAA6P92lEjjUSaoqB_tFkjJB_8G1A', { action: 'company_page_load' }).then(token => { const response = document.getElementById('g-recaptcha-response-100000'); if (response) { response.setAttribute('aria-hidden', 'true'); } }); }); }); window.IGLOO = window.IGLOO || { "bbout_element_id" : "iovation_blackbox", "enable_rip" : true, "enable_flash" : false, "install_flash" : false, "loader" : { "version" : "general5", "fp_static" : false, }, }; </script> <script async src="https://www.reviews.io/js/iovation/loader.js"></script> <script async src="//cdn.jsdelivr.net/npm/@fingerprintjs/fingerprintjs@3/dist/fp.min.js"></script> <script src="/cw-assets/js/store-page.js?id=9ab7b29c30e623df035b" ></script> <script type="application/ld+json"> { "@context" : "http://schema.org", "@type" : "LocalBusiness", "@id" : "https://www.reviews.io/company-reviews/store/top3dshop.com", "name" : "Top 3D Shop", "url" : "https://top3dshop.com", "image": { "@type": "ImageObject", "url": "https://www.reviews.io/logo-image/top3dshop.com", "width": 515, "height": 515 }, "aggregateRating" : { "@type" : "aggregateRating", "bestRating" : "5", "ratingValue" : "4.84", "worstRating" : "1", "reviewCount" : "190" } , "address": { "@type":"PostalAddress", "streetAddress":"2005 Eye St #8, Bakersfield,\n2005 Eye St #8, Bakersfield", "addressLocality":"California", "postalcode":"93301" }, "review": [ { "@type":"Review", "itemReviewed": { "@type":"Organization", "name":"Top 3D Shop", "image":"https://www.reviews.io/logo-image/top3dshop.com" }, "author": { "@type":"Person", "name":"Zachary Kocher " }, "publisher": { "@type":"Organization", "name":"", "sameAs":"" }, "datePublished":"2024-05-30 15:30:53", "reviewBody":"Do not buy from here. Especially Creatbot printers. Printer came out of box with issues. Took Topshop too long to send to China for extra help. China support never helped fixed it. Ended up being automatic level sensor that wasnt working, but there were multiple other small issues with hardware. They would not take printer back even though it never worked. The support from both Creatbot and Topshop was terrible (odd times, Topshop didnt show up, language barrier, etc) Ended up just tinkering for hours and hours to just manually level without any of the functionality of the Creatbot.", "reviewRating": { "@type":"Rating", "bestRating":"5", "worstRating":"1", "ratingValue":"1" } } , { "@type":"Review", "itemReviewed": { "@type":"Organization", "name":"Top 3D Shop", "image":"https://www.reviews.io/logo-image/top3dshop.com" }, "author": { "@type":"Person", "name":"Anonymous " }, "publisher": { "@type":"Organization", "name":"", "sameAs":"" }, "datePublished":"2023-07-18 17:54:13", "reviewBody":"Do not purchase from these people they are scammers, if you click the button to review purchase it charges you then they charge you a restocking fee, even if you immediately cancel. There are much better sites out there for purchasing 3D printers such as Dynamism or 3D printer universe and they will not charge you a restocking fee if you accidently purchase", "reviewRating": { "@type":"Rating", "bestRating":"5", "worstRating":"1", "ratingValue":"1" } } , { "@type":"Review", "itemReviewed": { "@type":"Organization", "name":"Top 3D Shop", "image":"https://www.reviews.io/logo-image/top3dshop.com" }, "author": { "@type":"Person", "name":"Microsoft Accounts Benigno " }, "publisher": { "@type":"Organization", "name":"", "sameAs":"" }, "datePublished":"2023-07-10 13:21:54", "reviewBody":"Extraordinary creativity productivity qualitification", "reviewRating": { "@type":"Rating", "bestRating":"5", "worstRating":"1", "ratingValue":"5" } } , { "@type":"Review", "itemReviewed": { "@type":"Organization", "name":"Top 3D Shop", "image":"https://www.reviews.io/logo-image/top3dshop.com" }, "author": { "@type":"Person", "name":"Anonymous " }, "publisher": { "@type":"Organization", "name":"", "sameAs":"" }, "datePublished":"2023-04-11 03:51:20", "reviewBody":"Very bad quality and very bad and poor support..doesn't work even for 4 days....simply useless", "reviewRating": { "@type":"Rating", "bestRating":"5", "worstRating":"1", "ratingValue":"1" } } , { "@type":"Review", "itemReviewed": { "@type":"Organization", "name":"Top 3D Shop", "image":"https://www.reviews.io/logo-image/top3dshop.com" }, "author": { "@type":"Person", "name":"Anonymous " }, "publisher": { "@type":"Organization", "name":"", "sameAs":"" }, "datePublished":"2023-02-16 19:34:01", "reviewBody":"Customer service is nearly non existent at Top3D. I have been assembling a Modix 120x printer that has many inconsistencies between the directions and the actual parts sent. Every page of the directions has an error. The farther you go in the manual the worse it gets, and this requires help from customer service at times. Top3D doesnt have the staff needed to support all of the products they sell.", "reviewRating": { "@type":"Rating", "bestRating":"5", "worstRating":"1", "ratingValue":"2" } } , { "@type":"Review", "itemReviewed": { "@type":"Organization", "name":"Top 3D Shop", "image":"https://www.reviews.io/logo-image/top3dshop.com" }, "author": { "@type":"Person", "name":"Jay " }, "publisher": { "@type":"Organization", "name":"", "sameAs":"" }, "datePublished":"2023-02-08 21:25:20", "reviewBody":"Fast delivery!", "reviewRating": { "@type":"Rating", "bestRating":"5", "worstRating":"1", "ratingValue":"5" } } , { "@type":"Review", "itemReviewed": { "@type":"Organization", "name":"Top 3D Shop", "image":"https://www.reviews.io/logo-image/top3dshop.com" }, "author": { "@type":"Person", "name":"Leroy " }, "publisher": { "@type":"Organization", "name":"", "sameAs":"" }, "datePublished":"2023-01-20 21:55:02", "reviewBody":"Everything's perfect.", "reviewRating": { "@type":"Rating", "bestRating":"5", "worstRating":"1", "ratingValue":"5" } } , { "@type":"Review", "itemReviewed": { "@type":"Organization", "name":"Top 3D Shop", "image":"https://www.reviews.io/logo-image/top3dshop.com" }, "author": { "@type":"Person", "name":"Leroy " }, "publisher": { "@type":"Organization", "name":"", "sameAs":"" }, "datePublished":"2023-01-16 21:51:52", "reviewBody":"got the tracking number on the same day, great.", "reviewRating": { "@type":"Rating", "bestRating":"5", "worstRating":"1", "ratingValue":"5" } } , { "@type":"Review", "itemReviewed": { "@type":"Organization", "name":"Top 3D Shop", "image":"https://www.reviews.io/logo-image/top3dshop.com" }, "author": { "@type":"Person", "name":"Adam " }, "publisher": { "@type":"Organization", "name":"", "sameAs":"" }, "datePublished":"2022-12-25 01:21:09", "reviewBody":"Perfect as usual", "reviewRating": { "@type":"Rating", "bestRating":"5", "worstRating":"1", "ratingValue":"5" } } , { "@type":"Review", "itemReviewed": { "@type":"Organization", "name":"Top 3D Shop", "image":"https://www.reviews.io/logo-image/top3dshop.com" }, "author": { "@type":"Person", "name":"Joe " }, "publisher": { "@type":"Organization", "name":"", "sameAs":"" }, "datePublished":"2022-12-22 01:19:19", "reviewBody":"Excellent!", "reviewRating": { "@type":"Rating", "bestRating":"5", "worstRating":"1", "ratingValue":"5" } } , { "@type":"Review", "itemReviewed": { "@type":"Organization", "name":"Top 3D Shop", "image":"https://www.reviews.io/logo-image/top3dshop.com" }, "author": { "@type":"Person", "name":"Joseph " }, "publisher": { "@type":"Organization", "name":"", "sameAs":"" }, "datePublished":"2022-12-09 04:12:24", "reviewBody":"Good company", "reviewRating": { "@type":"Rating", "bestRating":"5", "worstRating":"1", "ratingValue":"5" } } , { "@type":"Review", "itemReviewed": { "@type":"Organization", "name":"Top 3D Shop", "image":"https://www.reviews.io/logo-image/top3dshop.com" }, "author": { "@type":"Person", "name":"Jesse " }, "publisher": { "@type":"Organization", "name":"", "sameAs":"" }, "datePublished":"2022-12-05 00:35:05", "reviewBody":"Super professional team", "reviewRating": { "@type":"Rating", "bestRating":"5", "worstRating":"1", "ratingValue":"5" } } , { "@type":"Review", "itemReviewed": { "@type":"Organization", "name":"Top 3D Shop", "image":"https://www.reviews.io/logo-image/top3dshop.com" }, "author": { "@type":"Person", "name":"Joel " }, "publisher": { "@type":"Organization", "name":"", "sameAs":"" }, "datePublished":"2022-12-01 02:53:52", "reviewBody":"Great customer support", "reviewRating": { "@type":"Rating", "bestRating":"5", "worstRating":"1", "ratingValue":"5" } } , { "@type":"Review", "itemReviewed": { "@type":"Organization", "name":"Top 3D Shop", "image":"https://www.reviews.io/logo-image/top3dshop.com" }, "author": { "@type":"Person", "name":"Beckett " }, "publisher": { "@type":"Organization", "name":"", "sameAs":"" }, "datePublished":"2022-11-26 01:51:33", "reviewBody":"Quick and reliable!", "reviewRating": { "@type":"Rating", "bestRating":"5", "worstRating":"1", "ratingValue":"5" } } , { "@type":"Review", "itemReviewed": { "@type":"Organization", "name":"Top 3D Shop", "image":"https://www.reviews.io/logo-image/top3dshop.com" }, "author": { "@type":"Person", "name":"Grant " }, "publisher": { "@type":"Organization", "name":"", "sameAs":"" }, "datePublished":"2022-11-19 01:00:26", "reviewBody":"Top 3D Shop indeed, one of my favourite suppliers.", "reviewRating": { "@type":"Rating", "bestRating":"5", "worstRating":"1", "ratingValue":"5" } } , { "@type":"Review", "itemReviewed": { "@type":"Organization", "name":"Top 3D Shop", "image":"https://www.reviews.io/logo-image/top3dshop.com" }, "author": { "@type":"Person", "name":"Oscar " }, "publisher": { "@type":"Organization", "name":"", "sameAs":"" }, "datePublished":"2022-11-11 21:50:54", "reviewBody":"Good customer service, they didn't push a sale on me, but invested me in making sure I am getting the right product for my projects.", "reviewRating": { "@type":"Rating", "bestRating":"5", "worstRating":"1", "ratingValue":"5" } } , { "@type":"Review", "itemReviewed": { "@type":"Organization", "name":"Top 3D Shop", "image":"https://www.reviews.io/logo-image/top3dshop.com" }, "author": { "@type":"Person", "name":"Sincere " }, "publisher": { "@type":"Organization", "name":"", "sameAs":"" }, "datePublished":"2022-11-08 23:38:03", "reviewBody":"Super fast and no problems at all so far.", "reviewRating": { "@type":"Rating", "bestRating":"5", "worstRating":"1", "ratingValue":"5" } } , { "@type":"Review", "itemReviewed": { "@type":"Organization", "name":"Top 3D Shop", "image":"https://www.reviews.io/logo-image/top3dshop.com" }, "author": { "@type":"Person", "name":"Brantley " }, "publisher": { "@type":"Organization", "name":"", "sameAs":"" }, "datePublished":"2022-11-06 01:52:42", "reviewBody":"Overall happy with the experience. Delivery was delayed for 2 weeks, but they kept me informed throughout the process and offered free training as compensation. Even though we didn't get it on time, they really cared about me as a customer.", "reviewRating": { "@type":"Rating", "bestRating":"5", "worstRating":"1", "ratingValue":"5" } } , { "@type":"Review", "itemReviewed": { "@type":"Organization", "name":"Top 3D Shop", "image":"https://www.reviews.io/logo-image/top3dshop.com" }, "author": { "@type":"Person", "name":"Jeremy " }, "publisher": { "@type":"Organization", "name":"", "sameAs":"" }, "datePublished":"2022-10-27 06:27:46", "reviewBody":"Fast delivery and a very responsive support department. I recommend them for their exellent service.", "reviewRating": { "@type":"Rating", "bestRating":"5", "worstRating":"1", "ratingValue":"5" } } , { "@type":"Review", "itemReviewed": { "@type":"Organization", "name":"Top 3D Shop", "image":"https://www.reviews.io/logo-image/top3dshop.com" }, "author": { "@type":"Person", "name":"Preston " }, "publisher": { "@type":"Organization", "name":"", "sameAs":"" }, "datePublished":"2022-10-25 05:18:24", "reviewBody":"Fast delivery, PO provided on Wednesday, printers received on Friday", "reviewRating": { "@type":"Rating", "bestRating":"5", "worstRating":"1", "ratingValue":"5" } } ] } </script> <script> var store_id = 535229; var store_url_key = 'top3dshop.com'; var __debug = 0; var api = 'https://api.reviews.io'; </script> <script> var __debug = 0; </script> <link rel="manifest" href="/manifest.json" /> <script src="https://cdn.onesignal.com/sdks/OneSignalSDK.js" async=""></script> <script> var OneSignal = window.OneSignal || []; OneSignal.push(function() { OneSignal.init({ appId: "1bbae90d-9d58-421d-8326-eaa6ea667fe4", autoRegister: false, notifyButton: { enable: false, }, displayPredicate: function() { return false; } }); }); </script> <!-- START GOOGLE TAG MANAGER --> <!-- Google Tag Manager --> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-MT52C3C');</script> <!-- End Google Tag Manager --> </head> <body > <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-MT52C3C" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> <div class="TopHeader TopHeader--b2c "> <div class="TopHeader__inner"> <div class="TopHeader__logo"> <a href="https://www.reviews.io" class='logo__link' > <img src="https://assets.reviews.io/img/all-global-assets/logo/reviewsio-logo.svg" alt="REVIEWS.io logo" class='logo__img logo__img--desktop'/> <img src="https://assets.reviews.io/img/all-global-assets/logo/reviewsio-logo--minimised.svg" alt="REVIEWS.io logo" class='logo__img logo__img--mobile'/> </a> </div> <div class="TopHeader__search TopHeader__search--minimisable TopHeader__search--largeVersion js-search-inputfield"> <div class="TopHeader__search__inner Search"> <form method="get" action="https://www.reviews.io/search/"> <label for="searchInput" aria-label="Search for companies"></label> <input id="searchInput" type="search" name="search" class="search__field" role="searchbox" autocomplete="off" aria-hidden="true" tabindex="-1" placeholder="Search for Companies"> </form> <div class="SearchResults"> </div> <div class="searchField__icon searchField__icon--search"> <i class="ricon-magnifying-glass" role="search" ></i> </div> <div class="searchField__icon searchField__icon--close js-hide-search-inputfield"> <i class="ricon-thin-close"></i> </div> </div> </div> <div class="TopHeader__right"> <div class="TopHeader__buttons"> <style> a.TopHeader__buttons__btn.TopHeader__buttons__btn--getstartedBtn.TopHeader__buttons__btn--getstartedBtn--b2c:focus { padding: 10px; } .ricon-magnifying-glass:focus { border: 2px solid black; outline: none; } </style> <a href="https://dash.reviews.io/login" class="TopHeader__buttons__btn TopHeader__buttons__btn--loginBtn"> Login </a> <div class="TopHeader__buttons__btn TopHeader__buttons__btn--searchTrigger js-show-search-inputfield"> <div class="TopHeader__search-trigger"> <i class="ricon-magnifying-glass trigger__icon" role="button" aria-label="Search" tabindex="0"></i> </div> </div> <a class="TopHeader__buttons__btn TopHeader__buttons__btn--getstartedBtn TopHeader__buttons__btn--getstartedBtn--b2b js-open-signuppopup-free"> Start Free Trial </a> <a href="https://www.reviews.io/business-solutions" class="TopHeader__buttons__btn TopHeader__buttons__btn--getstartedBtn TopHeader__buttons__btn--getstartedBtn--b2c"> Are you a business?? <span class="hiddenLaptop">Click Here</span> </a> <div class="TopHeader__buttons__btn TopHeader__buttons__btn--menuBtn js-show-mobileNavigation" aria-hidden="true" tabindex="-1"> <span class="menuBtn__icon"> <span class="icon__line icon__line--one"></span> <span class="icon__line icon__line--two"></span> <span class="icon__line icon__line--three"></span> </span> </div> </div> </div> <div class="MobileNavigation js-mobileNavigation" > <a class="MobileNavigation__closeBtn" aria-hidden="true" tabindex="-1" > <i class="icon-negative-3-01"></i> </a> <div class="MobileNavigation__list"> <div class="list__group"> <div class="list__item list__item--showOnB2C"> <a href="https://www.reviews.io/business-solutions" class="Button Button--sm Button--outline Button--outline--light Button--fw-phone-md" aria-hidden="true" tabindex="-1" > Are you a business? </a> </div> </div> <div class="list__group"> <a href="https://www.reviews.io/front/termsconditions" class="list__item" aria-hidden="true" tabindex="-1" > <div class="TextBody TextBody--xxs TextBody--light"> Terms & Conditions </div> </a> <a href="https://www.reviews.io/front/user-privacy-policy" class="list__item" aria-hidden="true" tabindex="-1" > <div class="TextBody TextBody--xxs TextBody--light"> User Privacy Policy </div> </a> <a href="https://www.reviews.io/front/business-user-privacy-policy" class="list__item" aria-hidden="true" tabindex="-1" > <div class="TextBody TextBody--xxs TextBody--light"> Business User Privacy Policy </div> </a> <a href="https://www.reviews.io/front/data-protection" class="list__item" aria-hidden="true" tabindex="-1" > <div class="TextBody TextBody--xxs TextBody--light"> Data Protection </div> </a> <a href="https://www.reviews.io/front/data-request" class="list__item" aria-hidden="true" tabindex="-1" > <div class="TextBody TextBody--xxs TextBody--light"> Data Request </div> </a> </div> </div> </div> </div> </div> <iframe src='//collector.reviews.io/top3dshop.com/track?u=%2Fcompany-reviews%2Fstore%2Ftop3dshop.com' height=0 width=0 style='border:0px;width:0px;height:0px;opacity:0'></iframe> <img src='/reporting/on-business/535229.gif' style="position:absolute; visibility:hidden" alt=''/> <!-- <div class="FormModal FormModal--fullscreen FormModal--coloured" id='rmarket_popup'> </div> --> <div class='StorePage ' > <div class="StorePage__header "> <div class="header__inner"> <div class="header__row"> <div class="header__left"> <div class="header__ratingText"> <h1 class="TextHeading TextHeading--md"> Top 3D Shop Reviews </h1> <div class="header__statistics"> <span class="statistics__starRating"> <div class="Rating Rating--xxlg "> <div class="Rating__stars u-marginBottom--none"> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--75"></i> </div> </div> </span> <span class="statistics__totalReviews"> <span class="TextBody TextBody--sm TextBody--inline js-reviewsio-avg-rating"> <strong> 4.8 </strong> Rating </span> <span class="TextBody TextBody--sm TextBody--inline js-reviewsio-review-count"> <strong> 190 </strong> Reviews </span> <style> label#pushNotificationContainer:focus { outline: 2px solid black; padding: 0; border-radius: 100px; border: 0; } </style> <label id='pushNotificationContainer' style='display:none;' for="reviewNotifications" aria-label="Toggle to receive notifications for new reviews" class="ToggleButton ToggleButton--withRightIcon" role="button" aria-pressed="false" tabindex="0" tooltip="Click this toggle to be notified about new reviews. We promise not to send you unrelated messages." tooltip-position="top" tooltip-align="left" tooltip-size="280" tooltip-align="left"> <input id="reviewNotifications" class='notification-slider' type="checkbox" tabindex="0"> <div class="ToggleButton__inner"> <div class="ToggleButton__circle"> </div> <div class="ToggleButton__base"> </div> </div> <i class="icon-bell ToggleButton__icon"></i> </label> </span> </div> </div> </div> <div class="header__right"> <style> .HalfDoughnutChart__container .arc{ -webkit-transform: rotate(176deg) !important; -moz-transform: rotate(176deg) !important; -ms-transform: rotate(176deg) !important; -o-transform: rotate(176deg) !important; border-color: #11B1A7; } .HalfDoughnutChart__container .arc:after{ content: ''; position: absolute; left: -40px; top: 5px; } .HalfDoughnutChart__container .arc:before{ background-color: #11B1A7; } .HalfDoughnutChart__container .arc + .score .TextHeading{ color: #11B1A7 !important; } </style> <div class="HalfDoughnutChart"> <div class="HalfDoughnutChart__container"> <div class="arc" data-value="98"> </div> <span class="score"> <span class="TextHeading TextHeading--lg TextHeading--inline "> 98 </span> <span class="TextHeading TextHeading--sm TextHeading--inline "> % </span> </span> </div> <div class="HalfDoughnutChart__description"> <span class="TextBody TextBody--xs TextBody--inline u-textCenter--all"> of reviewers recommend <strong> Top 3D Shop </strong> </span> </div> </div> </div> </div> <div class="header__row header__row--tabs"> <div class='header__tabs'> <a class='header__tab js-tab-company ' href="https://www.reviews.io/company-reviews/store/top3dshop.com"> <img src="https://assets.reviews.io/img/all-global-assets/icons/icon-company-reviews--sm--colour.svg " alt="" class="tab__icon"/> <span class="TextBody TextBody--sm"> <span class="mobileBlock"> Company </span> <span class="hideOnMobile"> Reviews </span> </span> </a> <a class='header__tab js-tab-product ' href="https://www.reviews.io/product-reviews/store/top3dshop.com"> <img src="https://assets.reviews.io/img/all-global-assets/icons/icon-product-reviews--sm--colour.svg " alt="" class="tab__icon"/> <span class="TextBody TextBody--sm"> <span class="mobileBlock"> Product </span> <span class="hideOnMobile"> Reviews </span> <div class="LabelTag LabelTag--sm LabelTag--round u-marginBottom--none LabelTag--filled-neutral u-marginLeft--xs u-marginRight--none"> <div class="LabelTag__text">125</div> </div> </span> </a> <a class='header__tab js-tab-metrics header__tab--onlyMobile' href="https://www.reviews.io/company-reviews/store/top3dshop.com#metrics"> <img src="https://assets.reviews.io/img/all-global-assets/icons/icon-reporting--sm--colour.svg " alt="" class="tab__icon"/> <span class="TextBody TextBody--sm"> <span class="mobileBlock"> Metrics </span> </span> </a> <a class='header__tab js-tab-info header__tab--onlyMobile' href="https://www.reviews.io/company-reviews/store/top3dshop.com#info"> <img src="https://assets.reviews.io/img/all-global-assets/icons/icon-information--sm--colour.svg " alt="" class="tab__icon"/> <span class="TextBody TextBody--sm"> <span class="mobileBlock"> Info </span> </span> </a> </div> </div> <script> var _curUrl = location.toString().replace(location.search, ""); if (_curUrl.indexOf('/product-reviews/')!=-1) { _curUrl = 'https://www.reviews.io/product-reviews/store/top3dshop.com'; } function showActiveJSView(view) { $('.js-mobileView').addClass('isHidden'); if (view != "metrics") { $('.js-metricsView').removeClass('isActive'); $('.js-metricsView').addClass('isHidden'); } if (view != "info") { $('.js-infoView').removeClass('isActive'); $('.js-infoView').addClass('isHidden'); } $('.js-' + view + 'View').removeClass('isHidden'); $('.js-' + view + 'View').addClass('isActive'); } </script> </div> </div> <div class="StorePage__content"> <div class="content__inner"> <div class="content__left"> <div class="MobileView js-mobileView js-metricsView"> <div class="PanelCard"> <div class="c-stickyStatistics"> <div class="u-marginBottom--md"> <div class="flex-row flex-row--noMargin flex-middle-xxs"> <div class="TextHeading TextHeading--sm TextHeading--inline u-marginBottom--none u-marginRight--xs u-verticalAlign--middle"> 4.8 </div> <div class="Rating Rating--md "> <div class="Rating__stars u-marginBottom--none"> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--75"></i> </div> </div> </div> <div class="R-TextBody TextBody--xs u-textLeft--all u-marginBottom--xs"> Based on 190 reviews </div> </div> </div> <div class="MerchantMetrics MerchantMetrics--table"> <div class="IconButton IconButton--md u-marginBottom--none u-cursorDefault c-merchantMetricsTooltip isTooltipVisibleOnMobile" tooltip="This data is produced by analysing genuine customer experiences. It is not a guarantee of the company." tooltip-size="180" tooltip-fontsize="xxxxs" tooltip-position-align="topRight" tooltip-enable="false"> <i class="ricon-question-mark IconButton__icon"></i> </div> <table class="MerchantMetrics__table"> <tbody class="table__body"> <tr class="table__row"> <th colspan="2" class="table__cell table__cell--cellhead"> <div class="item__heading"> <div class="heading__image heading__image--delivery"></div> <div class="heading__text"> Shipping & Delivery </div> </div> </th> </tr> <tr class="table__row"> <th class="table__cell table__cell--description"> <div class="block__question"> Delivery Methods </div> </th> <td class="table__cell table__cell--answer"> <div class="block__answer"> Postal Service </div> </td> </tr> <tr class="table__row"> <th colspan="2" class="table__cell table__cell--cellhead"> <div class="item__heading"> <div class="heading__image heading__image--customerservice"></div> <div class="heading__text"> Customer Service </div> </div> </th> </tr> <tr class="table__row"> <th class="table__cell table__cell--description"> <div class="block__question"> Communication Channels </div> </th> <td class="table__cell table__cell--answer"> <div class="block__answer"> Email, Telephone </div> </td> </tr> </tbody> </table> </div> </div> </div> <div class="MobileView js-mobileView js-infoView isHidden"> </div> <div class="MobileView js-mobileView js-infoView"> <div class="PanelCard"> <div class="LogoComponent"> <div class="LogoComponent__inner"> <img loading="lazy" class="LogoComponent__image " src='https://d1011j0lbv5k1u.cloudfront.net/assets/store-535229/535229-logo-1635291746.png' alt="Read Top 3D Shop Reviews" onerror="$(this).hide();" /> </div> </div> <a class="Button Button--md Button--primary Button--fullwidth" rel="nofollow" href="https://www.reviews.io/exit/535229" target="_blank"> <span class="Button__text"> Visit Website </span> </a> <p class="TextHeading TextHeading--xxxs u-marginBottom--none"> Phone: </p> <p class="TextBody TextBody--xxs u-wordBreak--wordBreak"> 8888711751 </p> <p class="TextHeading TextHeading--xxxs u-marginBottom--none"> Email: </p> <p class="TextBody TextBody--xxs u-wordBreak--wordBreak"> sales@top3dshop.com </p> <p class="TextHeading TextHeading--xxxs u-marginBottom--none"> Location: </p> <p class="TextBody TextBody--xxs"> 2005 Eye St #8, Bakersfield,<br/>2005 Eye St #8, Bakersfield <br/> California <br/> 93301 </p> <div class="MapPreview" id="MapPreview"> </div> <script> setTimeout(function(){ document.getElementById('MapPreview').innerHTML = '<iframe loading="lazy" \ style="border:0;width:100%" \ src="https://www.google.com/maps/embed/v1/place?key=AIzaSyAhqTpH_emIUh33S3w1YYjl1yoXcq-7lwc&q=2005+Eye+St+%238%2C+Bakersfield%2C%5Cn2005+Eye+St+%238%2C+Bakersfield%2C+93301" \ \ > \ </iframe>'; }, 1000); </script> </div> </div> <div class="js-storepage-side-content-end" style="height:1px;"></div> <script> var div_top = $('.js-storepage-side-content-end').offset().top; $(window).resize(function() { div_top = $('.js-storepage-side-content-end').offset().top; }); function makePanelSticky() { var window_top = $(window).scrollTop(); var buff = -20; if (!$('.js-metricsView').hasClass('isSticky') && (window_top + buff >= div_top)) { $('.js-metricsView').addClass('isSticky'); } if ($('.js-metricsView').hasClass('isSticky') && (window_top + buff < div_top)) { $('.js-metricsView').removeClass('isSticky'); } } $(window).scroll(makePanelSticky); </script> </div> <div class='content__right'> <style> a.WriteReviewStars__star[rel="nofollow"]:focus { border: 2px solid black; } </style> <div class="WriteReviewStars-container"> <!--Form is disabled Overlay --> <div id="formOverlay" style="display: none; position: absolute; background-color:rgba(255, 255, 255, 0.67); left:0; top:0; width: 100%; height: 100%; z-index:20;"></div> <!--- /formoverlay --> <div class="WriteReviewStars"> <div class="WRS__inner"> <div class="WRS__buttons"> <p class="TextHeading TextHeading--sm"> Write Your review </p> <a rel="nofollow" data-rating='1' class="WriteReviewStars__star" role="button" aria-label="Leave a 1 star review" tabindex="0"> <i class="icon-full-star-01 star__icon"></i> </a> <a rel="nofollow" data-rating='2' class="WriteReviewStars__star" role="button" aria-label="Leave a 2 star review" tabindex="0"> <i class="icon-full-star-01 star__icon"></i> </a> <a rel="nofollow" data-rating='3' class="WriteReviewStars__star" role="button" aria-label="Leave a 3 star review" tabindex="0"> <i class="icon-full-star-01 star__icon"></i> </a> <a rel="nofollow" data-rating='4' class="WriteReviewStars__star" role="button" aria-label="Leave a 4 star review" tabindex="0"> <i class="icon-full-star-01 star__icon"></i> </a> <a rel="nofollow" data-rating='5' class="WriteReviewStars__star" role="button" aria-label="Leave a 5 star review" tabindex="0"> <i class="icon-full-star-01 star__icon"></i> </a> </div> <div class="WRS__shapes"> <picture> <source type="image/webp" srcset="https://assets.reviews.io/img/all-global-assets/pages/business-solutions/shape__bottomlhs-corner--dots.webp 1x, https://assets.reviews.io/img/all-global-assets/pages/business-solutions/shape__bottomlhs-corner--dots@2x.webp 2x"> <source type="image/png" srcset="https://assets.reviews.io/img/all-global-assets/pages/business-solutions/shape__bottomlhs-corner--dots.png 1x, https://assets.reviews.io/img/all-global-assets/pages/business-solutions/shape__bottomlhs-corner--dots@2x.png 2x"> <img loading="lazy" class="shapes__image shapes__image--left" alt="" src="https://assets.reviews.io/img/all-global-assets/pages/business-solutions/shape__bottomlhs-corner--dots.png"> </picture> <picture> <source type="image/webp" srcset="https://assets.reviews.io/img/all-global-assets/pages/business-solutions/shape__bottomlhs-corner--dots.webp 1x, https://assets.reviews.io/img/all-global-assets/pages/business-solutions/shape__bottomlhs-corner--dots@2x.webp 2x"> <source type="image/png" srcset="https://assets.reviews.io/img/all-global-assets/pages/business-solutions/shape__bottomlhs-corner--dots.png 1x, https://assets.reviews.io/img/all-global-assets/pages/business-solutions/shape__bottomlhs-corner--dots@2x.png 2x"> <img loading="lazy" class="shapes__image shapes__image--right" alt="" src="https://assets.reviews.io/img/all-global-assets/pages/business-solutions/shape__bottomlhs-corner--dots.png"> </picture> </div> </div> </div> <style> form input:focus, form select:focus, form textarea:focus, form button:focus, form a:focus { border-color: black !important; } </style> <form class="WriteReviewForm " onsubmit="event.preventDefault();" aria-hidden="true"> <input type="hidden" name="iovation_blackbox" id="iovation_blackbox" aria-hidden="true" tabindex="-1"/> <div class="WriteReviewForm__inner"> <div class="WriteReviewForm__list"> <div class="WriteReviewForm__item"> <div id="commentsLabel" class="WriteReviewForm__heading"> Tell us how <strong>Top 3D Shop</strong> made you happy </div> <div class="WriteReviewForm__subheading"> Help future customers by talking about customer service, price, delivery, returns & refunds. </div> <textarea id="comments" class="WriteReviewForm__textarea" required minlength="10" aria-labelledby="commentsLabel commentscount" aria-hidden="true" tabindex="-1"></textarea> <div id="commentscount" class="WriteReviewForm__smalltext"> Minimum 10 characters </div> <div id="review_error_comment_output" class="pull-left" style="color: #c70606; font-size: 11px;"></div> </div> <div id="reviewQuestions"></div> <div class="WriteReviewForm__item"> <div id="nameInputLabel" class="WriteReviewForm__heading"> What's your name? </div> <div class="WriteReviewForm__subheading"> Leave this blank if you'd like to publish your review anonymously. </div> <input id="name" type="text" class="WriteReviewForm__input" aria-labelledby="nameInputLabel optionalLabel" aria-hidden="true" tabindex="-1"> <div id="optionalLabel" class="WriteReviewForm__smalltext"> (Optional) </div> <div id="review_error_name_output" class="pull-left" style="color: #c70606; font-size: 11px;"></div> </div> <div class="WriteReviewForm__item"> <div id="emailInputLabel" class="WriteReviewForm__heading"> What's your email? </div> <div id="emailInputSubheadingLabel" class="WriteReviewForm__subheading"> We need your email address to verify that your review is genuine </div> <input id="email" type="email" class="WriteReviewForm__input" required aria-labelledby="emailInputLabel emailInputSubheadingLabel" aria-hidden="true" tabindex="-1"> <div class="WriteReviewForm__smalltext"> Please note that we may share your email with the company to verify your order. </div> <div id="review_error_email_output" class="pull-left" style="color: #c70606; font-size: 11px;"></div> </div> </div> <div class="WriteReviewForm__footer"> <button id="submitReview" class="Button Button--md Button--primary Button--fw-phone-md" onclick="createReview(false)" aria-hidden="true" tabindex="-1"> <div id="review_submit_loading" class="ruk_loading pull-left" style="height: 14px; width: 14px; margin-right: 15px; display: none;"></div> Submit Review </button> <div id="review_error_main_output" class="pull-left" style="color: #c70606; font-size: 13px;"></div> <div style="font-size: 11px; padding: 10px; color: #757575; text-align: center;padding-bottom:20px;"> You will be contacted by email to verify your review.<br/> By submitting your review you agree to the REVIEWS.io <a href="/front/termsconditions" aria-hidden="true" tabindex="-1">terms & conditions</a>.<br/> This site is protected by reCAPTCHA and the Google <a href="https://policies.google.com/privacy" aria-hidden="true" tabindex="-1">Privacy Policy</a> and <a href="https://policies.google.com/terms" aria-hidden="true" tabindex="-1">Terms of Service</a> apply. </div> </div> </div> </form> <script async defer language='javascript' src='/profile-script/64lkz?lang=en'></script> </div> <link rel="preload" href="https://widget.reviews.co.uk/instagram-photo-profile/host-styles/dist.css?v=4" as="style" onload='this.rel="stylesheet"' /> <style> .ReviewFilters__filter.TextHeading.TextHeading--xxs:focus { border: 2px solid black; outline: none; padding: 4px; } </style> <div id="media-vue-container"> <input type='hidden' id='instaEndpoint' value='/company-reviews/gallery/64lkz/1'/> <div class="PhotoVideoGallery"> <div class="PhotoVideoGallery__list isActive" id='instaPhotoGallery'> </div> </div> <div class="VideoGalleryElement"> <div class="VideoGalleryElement__list u-marginBottom--xs"> <style> .VideoGalleryElement .VideoGalleryElement__list .list__item a:focus .item__inner { border: 2px solid white; outline: 2px solid black; } </style> </div> <div class="VideoGalleryElement__controls u-textRight--all u-marginBottom--md"> <div class="IconButton IconButton--xxlg IconButton--left" tooltip="Scroll videos left" tooltip-size="140" tooltip-fontsize="xxxxs" tooltip-position="top" tooltip-enable="false"> <i class="ricon-thin-arrow--left IconButton__icon"></i> </div> <div class="IconButton IconButton--xxlg IconButton--right" tooltip="Scroll videos right" tooltip-size="140" tooltip-fontsize="xxxxs" tooltip-position="top" tooltip-enable="false"> <i class="ricon-thin-arrow--right IconButton__icon"></i> </div> </div> </div> <div class="GlobalModal" id='instaModal'> <link rel="stylesheet" href="https://assets.reviews.io/iconfont/legacy/revsglobal-pr-mod/style.css?_t=20240411"> <div class="GlobalModal__backdrop"></div> <div class="GlobalModal__dialog GlobalModal__dialog--width960"> <div class="flex-row u-flexAlignItems--stretch"> <div class="flex-col-xxs-12 flex-col-sm-6 u-displayFlex u-justifyContent--center u-flexAlignItems--center"> <div class='ImageContainer'> <img src="" alt=""> </div> <div class="VideoPlayer"> <video src="" autoplay="true" controls="true"> <source src=""> <span class="TextHeading TextHeading--xxxs u-textCenter--all"> Your browser does not support embedded videos. </span> </video> </div> </div> <div class="flex-col-xxs-12 flex-col-sm-6"> <div class="dialog__inner dialog__inner--spaceBetween"> <div> <div class="flex-row u-marginTop--md u-marginBottom--md"> <div class="flex-col-xxs-6 u-textLeft--all u-paddingLeft--none"> <a class="controls__button js-insta-prev" aria-hidden="true" tabindex="-1"> <i class="ruk-icon-line-arrow--left button__icon"></i> </a> <a class="controls__button js-insta-next" aria-hidden="true" tabindex="-1"> <i class="ruk-icon-line-arrow--right button__icon"></i> </a> </div> <div class="flex-col-xxs-6 u-textRight--all u-paddingRight--none"> <a class="controls__button js-insta-close" aria-hidden="true" tabindex="-1"> <i class="ruk-icon-line-cross button__icon"></i> </a> </div> </div> <div class="u-textLeft--all u-marginBottom--sm"> <div class="TextHeading TextHeading--xxs TextHeading--inline u-marginRight--sm js-username"> Anonymous </div> <div class="RatingStars RatingStars--inline"> <div class="RatingStars__stars js-stars"> </div> </div> </div> <div class="TextBody TextBody--xxs js-caption"> </div> <div class="GlobalLoader"></div> </div> <div> <div class="u-hr u-hr--margin-sm"></div> <div class="TextHeading TextHeading--xxxxs u-textCenter--all u-marginBottom--md"> <span class='js-username'>Anonymous</span> // <span class='js-date'>01/01/2019</span> </div> <div class="u-textCenter--all u-marginBottom--md shareSection"> <a class="controls__button u-marginLeft--xs u-marginRight--xs facebookShare" aria-hidden="true" tabindex="-1"> <i class="ruk-icon-line-facebook button__icon button__icon--sm"></i> </a> <a href="mailto:" class="controls__button u-marginLeft--xs u-marginRight--xs mailTo" aria-hidden="true" tabindex="-1"> <i class="ruk-icon-line-email button__icon button__icon--sm button__icon--email"></i> </a> <a class="controls__button u-marginLeft--xs u-marginRight--xs twitterShare" aria-hidden="true" tabindex="-1"> <i class="ruk-icon-twitter-1-01 button__icon button__icon--sm"></i> </a> <a class="controls__button u-marginLeft--xs u-marginRight--xs pinterest" aria-hidden="true" tabindex="-1"> <i class="ruk-icon-line-pinterest button__icon button__icon--sm"></i> </a> <a href="" target="_blank" class="controls__button u-marginLeft--xs u-marginRight--xs shareLink" aria-hidden="true" tabindex="-1"> <i class="ruk-icon-link button__icon button__icon--sm"></i> </a> </div> </div> </div> </div> </div> </div> </div> </div> <div class="u-textCenter--all u-marginTop--lg u-marginBottom--lg"> <div class="StarLoader StarLoader--dark StarLoader--autoHeight isActive"> <svg class="StarLoader__svg" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 200 200" style="enable-background:new 0 0 200 200;" xml:space="preserve"> <g> <circle class="outer" cx="100" cy="100" r="95"></circle> <path class="outer" d="M100.2,6C47.8,6,5.4,48.5,5.4,100.8s42.5,94.8,94.8,94.8s94.8-42.5,94.8-94.8S152.5,6,100.2,6z M100.2,185.7 c-46.9,0-84.8-38-84.8-84.8S53.3,16,100.2,16S185,54,185,100.8S147,185.7,100.2,185.7z"></path> <path class="inner" d="M9.085,8.778L10.887,5.175C11.196,4.56 11.944,4.313 12.56,4.622C12.798,4.743 12.993,4.937 13.113,5.178L14.915,8.78L18.322,9.121C19.006,9.188 19.507,9.797 19.44,10.481C19.411,10.771 19.284,11.039 19.081,11.24L16.24,14.08L17.293,17.939C17.473,18.604 17.08,19.286 16.418,19.466C16.125,19.545 15.812,19.515 15.537,19.379L12,17.61L8.464,19.381C7.849,19.687 7.101,19.437 6.795,18.821C6.659,18.547 6.628,18.235 6.708,17.941L7.76,14.08L4.919,11.238C4.433,10.752 4.433,9.964 4.919,9.478C5.122,9.275 5.392,9.147 5.676,9.119L9.085,8.778ZM11.999,6.351L10.258,9.833C10.141,10.066 9.913,10.224 9.654,10.25L6.407,10.575L9.148,13.316C9.341,13.509 9.415,13.791 9.344,14.054L8.338,17.743L11.66,16.08C11.874,15.973 12.126,15.973 12.34,16.08L15.663,17.742L14.656,14.054C14.584,13.791 14.659,13.509 14.852,13.316L17.593,10.577L14.346,10.252C14.087,10.226 13.859,10.068 13.742,9.835L11.999,6.351Z"></path> </g> </svg> </div> </div> <div class="ReviewFilters"> <span class="ReviewFilters__filter TextHeading TextHeading--xxs" tabindex="0"> Sort by: <strong>Most Recent</strong> <i class="ricon-thin-arrow--down"></i> <span class="ReviewFilters__dd"> <a class="ReviewFilters__dd__link" href="https://www.reviews.io/company-reviews/store/top3dshop.com" rel="nofollow">Most Recent</a> <a class="ReviewFilters__dd__link" href="https://www.reviews.io/company-reviews/store/top3dshop.com?order=highest_rated" rel="nofollow">Highest Rated</a> </span> </span> <span class="ReviewFilters__filter TextHeading TextHeading--xxs" tabindex="0"> Filter: <strong>None</strong> <i class="ricon-thin-arrow--down"></i> <span class="ReviewFilters__dd"> <a class="ReviewFilters__dd__link" href="https://www.reviews.io/company-reviews/store/top3dshop.com?filters%5B0%5D=" rel="nofollow">None</a> <a class="ReviewFilters__dd__link" href="https://www.reviews.io/company-reviews/store/top3dshop.com?filters%5Brating%5D%5B0%5D=5" rel="nofollow">5 Stars</a> <a class="ReviewFilters__dd__link" href="https://www.reviews.io/company-reviews/store/top3dshop.com?filters%5Brating%5D%5B0%5D=4" rel="nofollow">4 Stars</a> <a class="ReviewFilters__dd__link" href="https://www.reviews.io/company-reviews/store/top3dshop.com?filters%5Brating%5D%5B0%5D=3" rel="nofollow">3 Stars</a> <a class="ReviewFilters__dd__link" href="https://www.reviews.io/company-reviews/store/top3dshop.com?filters%5Brating%5D%5B0%5D=2" rel="nofollow">2 Stars</a> <a class="ReviewFilters__dd__link" href="https://www.reviews.io/company-reviews/store/top3dshop.com?filters%5Brating%5D%5B0%5D=1" rel="nofollow">1 Stars</a> <a class="ReviewFilters__dd__link" href="https://www.reviews.io/company-reviews/store/top3dshop.com?filters%5Bhelpful%5D%5B0%5D=" rel="nofollow">Helpful</a> </span> </span> </div> <input type='hidden' id='StoreId' value='64lkz'/> <input type='hidden' id='LastReviewId' value='y40dV3'/> <div id='ReviewUpdates'></div> <div id='reviewsContainer'> <div class="Review " data-review-id="21916242"> <div class="review-alert" style="display:none"> <div class="controlbtnFeedback"></div> </div> <div class="Review__header"> <a class="Review__author" href='/company-review/store/top3dshop.com/21916242'>Zachary Kocher</a> <div class="Review__overallStars"> <div class="Review__overallStars__stars"> <div class="Rating Rating--md "> <div class="Rating__stars u-marginBottom--none"> <i class="stars__icon ricon-percentage-star--100 Rating--md"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--0"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--0"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--0"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--0"></i> </div> </div> </div> </div> <div class="Review__badge-container"> <a href="/profile-modal/unverified-reviews" data-toggle="ajaxmodal" class="Review__badge Review__badge--anonymous"> <div class="BadgeElement BadgeElement--unverified"> <div class="BadgeElement__icon ricon-info"></div> <div class="BadgeElement__text"> <div class="TextBody TextBody--xxxs TextBody--inline u-textLeft--all u-marginBottom--none"> Unverified Reviewer </div> </div> </div> </a> </div> <div class="Review__showDetails" id="review_show_details_21916242" style='display:none'> <a role="button" data-toggle="collapse" href="#details_21916242" class="showDetails__btn collapsed js-showDetails"> Show Details <i class="icon-arrow-down-thin-1-01"></i> </a> </div> </div> <div class="Review__content"> <div class="Review__container"> <div id='details_21916242' class="Review__subratings collapse" > </div> <span class="Review__body u-wordBreak--wordBreak"><span class="Review__quotationMark Review__quotationMark--left">“</span>Do not buy from here. Especially Creatbot printers. Printer came out of box with issues. Took Topshop too long to send to China for extra help. China support never helped fixed it. Ended up being automatic level sensor that wasnt working, but there were multiple other small issues with hardware. They would not take printer back even though it never worked. The support from both Creatbot and Topshop was terrible (odd times, Topshop didnt show up, language barrier, etc) Ended up just tinkering for hours and hours to just manually level without any of the functionality of the Creatbot.<span class="Review__quotationMark Review__quotationMark--right">”</span></span> <div class="Review__photos Review__photos--fullwidth" id='review_photos_21916242'> <div class='Review__photos'> </div> </div> <!-- <div class="Review__controlButtons" id="review_controls_21916242"> <div class="Review__dateSource"> Posted 5 months ago </div> </div> --> <style> a.controlButtons__btn.controlButtons__btn--helpful:focus, a.controlButtons__btn.controlButtons__btn--report:focus, span.controlButtons__btn.controlButtons__btn--share:focus { border: 2px solid black !important; outline: none; } span.controlButtons__btn.controlButtons__btn--share.isFocused .textContainer { max-width: 100px !important; margin-left: 3px !important; opacity: 1 !important; } span.shareIcon.shareIcon--fb:focus-visible, .shareIcon.shareIcon--tw:focus-visible { outline: 2px solid black !important; border: unset !important; margin: 2px !important; padding: 0 !important; } </style> <div class="Review__controlButtons"> <div class="controlButtons__inner"> <a class="controlButtons__btn controlButtons__btn--helpful" rel="nofollow" role="button" tabindex="0" aria-label="Mark review as helpful" onclick="flagReviewAsHelpful(21916242)" onkeydown="flagReviewAsHelpfulKeydown(event, 21916242)" title="Was this review helpful?" > <i class="ricon-thumbsup"></i> <span class="textContainer">Helpful</span> </a> <span id="shareOptionsContainer-21916242" class="controlButtons__btn controlButtons__btn--share" rel="nofollow" role="button" aria-label="Share on social media" aria-expanded="false" aria-controls="shareOptions-21916242" tabindex="0" data-review-id="21916242" onkeydown="toggleShareOptions(event, this)" > <i class="ricon-share"></i> <span id="shareOptions-21916242" class="textContainer"> <span class="shareIcon shareIcon--fb" onclick="share('fb', 21916242)" onkeydown="shareKeydown(event, 'fb', 21916242)" aria-label="Share on Facebook" aria-hidden="true" tabindex="-1" > <i class="ricon-facebook-favicon"></i> </span> <span class="shareIcon shareIcon--tw" onclick="share('tw', 21916242)" onkeydown="shareKeydown(event, 'tw', 21916242)" aria-label="Share on X" aria-hidden="true" tabindex="-1" > <i class="ricon-twitter-favicon"></i> </span> </span> </span> <script> function toggleShareOptions(event, element) { const reviewId = element.getAttribute('data-review-id'); const shareContainer = document.getElementById('shareOptionsContainer-' + reviewId); const shareOptions = document.getElementById('shareOptions-' + reviewId); const shareIcons = shareOptions.querySelectorAll('.shareIcon'); if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); showShareOptions(element, shareIcons); } // Hide share options when focus leaves the container shareContainer.addEventListener('focusout', function(e) { if (!shareOptions.contains(e.relatedTarget) && !shareContainer.contains(e.relatedTarget)) { hideShareOptions(element, shareIcons); } }); } function showShareOptions(element, shareIcons) { element.setAttribute('aria-expanded', 'true'); element.classList.add('isFocused'); shareIcons.forEach(icon => { icon.setAttribute('tabindex', '0'); icon.setAttribute('aria-hidden', 'false'); }); } function hideShareOptions(element, shareIcons) { element.classList.remove('isFocused'); element.setAttribute('aria-expanded', 'false'); shareIcons.forEach(icon => { icon.setAttribute('tabindex', '-1'); icon.setAttribute('aria-hidden', 'true'); }); } function shareKeydown(event, type, review_id) { if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); share(type, review_id); } } function share(type, review_id) { var url = 'https://reviews.io/company-review/store/top3dshop.com/' + review_id; var shareLink = ''; switch(type) { case 'fb': shareLink = 'http://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(url); break; case 'tw': shareLink = 'http://twitter.com/intent/tweet?hashtags=REVIEWSio&text=' + encodeURIComponent(url); break; } // Open url in new window window.open(shareLink,'targetWindow','toolbar=no,location=0,status=no,menubar=no,scrollbars=yes,resizable=yes,width=640,height=480'); }; </script> <a class="controlButtons__btn controlButtons__btn--report" rel="nofollow" role="button" href='/profile-modal/report-review?id=21916242' title="Report this review" data-toggle='ajaxmodal' > <i class="ricon-flag"></i> <span class="textContainer">Report</span> </a> </div> <div class="Review__dateSource"> Posted 5 months ago </div> </div> </div> </div> </div> <div class="Review " data-review-id="18983359"> <div class="review-alert" style="display:none"> <div class="controlbtnFeedback"></div> </div> <div class="Review__header"> <a class="Review__author" href='/company-review/store/top3dshop.com/18983359'>Anonymous</a> <div class="Review__overallStars"> <div class="Review__overallStars__stars"> <div class="Rating Rating--md "> <div class="Rating__stars u-marginBottom--none"> <i class="stars__icon ricon-percentage-star--100 Rating--md"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--0"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--0"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--0"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--0"></i> </div> </div> </div> </div> <div class="Review__badge-container"> <a href="/profile-modal/verified-reviews" data-toggle="ajaxmodal" class="Review__badge Review__badge--buyer"> <div class="BadgeElement"> <div class="BadgeElement__icon ricon-badge--checkmark"></div> <div class="BadgeElement__text"> <div class="TextBody TextBody--xxxs TextBody--inline u-textLeft--all u-marginBottom--none"> Verified Reviewer </div> </div> </div> </a> </div> <div class="Review__showDetails" id="review_show_details_18983359" style='display:none'> <a role="button" data-toggle="collapse" href="#details_18983359" class="showDetails__btn collapsed js-showDetails"> Show Details <i class="icon-arrow-down-thin-1-01"></i> </a> </div> </div> <div class="Review__content"> <div class="Review__container"> <div id='details_18983359' class="Review__subratings collapse" > </div> <span class="Review__body u-wordBreak--wordBreak"><span class="Review__quotationMark Review__quotationMark--left">“</span>Do not purchase from these people they are scammers, if you click the button to review purchase it charges you then they charge you a restocking fee, even if you immediately cancel. There are much better sites out there for purchasing 3D printers such as Dynamism or 3D printer universe and they will not charge you a restocking fee if you accidently purchase<span class="Review__quotationMark Review__quotationMark--right">”</span></span> <div class="Review__photos Review__photos--fullwidth" id='review_photos_18983359'> <div class='Review__photos'> </div> </div> <!-- <div class="Review__controlButtons" id="review_controls_18983359"> <div class="Review__dateSource"> Posted 1 year ago </div> </div> --> <style> a.controlButtons__btn.controlButtons__btn--helpful:focus, a.controlButtons__btn.controlButtons__btn--report:focus, span.controlButtons__btn.controlButtons__btn--share:focus { border: 2px solid black !important; outline: none; } span.controlButtons__btn.controlButtons__btn--share.isFocused .textContainer { max-width: 100px !important; margin-left: 3px !important; opacity: 1 !important; } span.shareIcon.shareIcon--fb:focus-visible, .shareIcon.shareIcon--tw:focus-visible { outline: 2px solid black !important; border: unset !important; margin: 2px !important; padding: 0 !important; } </style> <div class="Review__controlButtons"> <div class="controlButtons__inner"> <a class="controlButtons__btn controlButtons__btn--helpful" rel="nofollow" role="button" tabindex="0" aria-label="Mark review as helpful" onclick="flagReviewAsHelpful(18983359)" onkeydown="flagReviewAsHelpfulKeydown(event, 18983359)" title="Was this review helpful?" > <i class="ricon-thumbsup"></i> <span class="textContainer">Helpful</span> </a> <span id="shareOptionsContainer-18983359" class="controlButtons__btn controlButtons__btn--share" rel="nofollow" role="button" aria-label="Share on social media" aria-expanded="false" aria-controls="shareOptions-18983359" tabindex="0" data-review-id="18983359" onkeydown="toggleShareOptions(event, this)" > <i class="ricon-share"></i> <span id="shareOptions-18983359" class="textContainer"> <span class="shareIcon shareIcon--fb" onclick="share('fb', 18983359)" onkeydown="shareKeydown(event, 'fb', 18983359)" aria-label="Share on Facebook" aria-hidden="true" tabindex="-1" > <i class="ricon-facebook-favicon"></i> </span> <span class="shareIcon shareIcon--tw" onclick="share('tw', 18983359)" onkeydown="shareKeydown(event, 'tw', 18983359)" aria-label="Share on X" aria-hidden="true" tabindex="-1" > <i class="ricon-twitter-favicon"></i> </span> </span> </span> <script> function toggleShareOptions(event, element) { const reviewId = element.getAttribute('data-review-id'); const shareContainer = document.getElementById('shareOptionsContainer-' + reviewId); const shareOptions = document.getElementById('shareOptions-' + reviewId); const shareIcons = shareOptions.querySelectorAll('.shareIcon'); if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); showShareOptions(element, shareIcons); } // Hide share options when focus leaves the container shareContainer.addEventListener('focusout', function(e) { if (!shareOptions.contains(e.relatedTarget) && !shareContainer.contains(e.relatedTarget)) { hideShareOptions(element, shareIcons); } }); } function showShareOptions(element, shareIcons) { element.setAttribute('aria-expanded', 'true'); element.classList.add('isFocused'); shareIcons.forEach(icon => { icon.setAttribute('tabindex', '0'); icon.setAttribute('aria-hidden', 'false'); }); } function hideShareOptions(element, shareIcons) { element.classList.remove('isFocused'); element.setAttribute('aria-expanded', 'false'); shareIcons.forEach(icon => { icon.setAttribute('tabindex', '-1'); icon.setAttribute('aria-hidden', 'true'); }); } function shareKeydown(event, type, review_id) { if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); share(type, review_id); } } function share(type, review_id) { var url = 'https://reviews.io/company-review/store/top3dshop.com/' + review_id; var shareLink = ''; switch(type) { case 'fb': shareLink = 'http://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(url); break; case 'tw': shareLink = 'http://twitter.com/intent/tweet?hashtags=REVIEWSio&text=' + encodeURIComponent(url); break; } // Open url in new window window.open(shareLink,'targetWindow','toolbar=no,location=0,status=no,menubar=no,scrollbars=yes,resizable=yes,width=640,height=480'); }; </script> <a class="controlButtons__btn controlButtons__btn--report" rel="nofollow" role="button" href='/profile-modal/report-review?id=18983359' title="Report this review" data-toggle='ajaxmodal' > <i class="ricon-flag"></i> <span class="textContainer">Report</span> </a> </div> <div class="Review__dateSource"> Posted 1 year ago </div> </div> </div> </div> </div> <div class="Review " data-review-id="18911117"> <div class="review-alert" style="display:none"> <div class="controlbtnFeedback"></div> </div> <div class="Review__header"> <a class="Review__author" href='/company-review/store/top3dshop.com/18911117'>Microsoft Accounts Benigno</a> <div class="Review__overallStars"> <div class="Review__overallStars__stars"> <div class="Rating Rating--md "> <div class="Rating__stars u-marginBottom--none"> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> </div> </div> </div> </div> <div class="Review__badge-container"> <a href="/profile-modal/unverified-reviews" data-toggle="ajaxmodal" class="Review__badge Review__badge--anonymous"> <div class="BadgeElement BadgeElement--unverified"> <div class="BadgeElement__icon ricon-info"></div> <div class="BadgeElement__text"> <div class="TextBody TextBody--xxxs TextBody--inline u-textLeft--all u-marginBottom--none"> Unverified Reviewer </div> </div> </div> </a> </div> <div class="Review__showDetails" id="review_show_details_18911117" style='display:none'> <a role="button" data-toggle="collapse" href="#details_18911117" class="showDetails__btn collapsed js-showDetails"> Show Details <i class="icon-arrow-down-thin-1-01"></i> </a> </div> </div> <div class="Review__content"> <div class="Review__container"> <div id='details_18911117' class="Review__subratings collapse" > </div> <span class="Review__body u-wordBreak--wordBreak"><span class="Review__quotationMark Review__quotationMark--left">“</span>Extraordinary creativity productivity qualitification<span class="Review__quotationMark Review__quotationMark--right">”</span></span> <div class="Review__photos Review__photos--fullwidth" id='review_photos_18911117'> <div class='Review__photos'> </div> </div> <!-- <div class="Review__controlButtons" id="review_controls_18911117"> <div class="Review__dateSource"> Posted 1 year ago </div> </div> --> <style> a.controlButtons__btn.controlButtons__btn--helpful:focus, a.controlButtons__btn.controlButtons__btn--report:focus, span.controlButtons__btn.controlButtons__btn--share:focus { border: 2px solid black !important; outline: none; } span.controlButtons__btn.controlButtons__btn--share.isFocused .textContainer { max-width: 100px !important; margin-left: 3px !important; opacity: 1 !important; } span.shareIcon.shareIcon--fb:focus-visible, .shareIcon.shareIcon--tw:focus-visible { outline: 2px solid black !important; border: unset !important; margin: 2px !important; padding: 0 !important; } </style> <div class="Review__controlButtons"> <div class="controlButtons__inner"> <a class="controlButtons__btn controlButtons__btn--helpful" rel="nofollow" role="button" tabindex="0" aria-label="Mark review as helpful" onclick="flagReviewAsHelpful(18911117)" onkeydown="flagReviewAsHelpfulKeydown(event, 18911117)" title="Was this review helpful?" > <i class="ricon-thumbsup"></i> <span class="textContainer">Helpful</span> </a> <span id="shareOptionsContainer-18911117" class="controlButtons__btn controlButtons__btn--share" rel="nofollow" role="button" aria-label="Share on social media" aria-expanded="false" aria-controls="shareOptions-18911117" tabindex="0" data-review-id="18911117" onkeydown="toggleShareOptions(event, this)" > <i class="ricon-share"></i> <span id="shareOptions-18911117" class="textContainer"> <span class="shareIcon shareIcon--fb" onclick="share('fb', 18911117)" onkeydown="shareKeydown(event, 'fb', 18911117)" aria-label="Share on Facebook" aria-hidden="true" tabindex="-1" > <i class="ricon-facebook-favicon"></i> </span> <span class="shareIcon shareIcon--tw" onclick="share('tw', 18911117)" onkeydown="shareKeydown(event, 'tw', 18911117)" aria-label="Share on X" aria-hidden="true" tabindex="-1" > <i class="ricon-twitter-favicon"></i> </span> </span> </span> <script> function toggleShareOptions(event, element) { const reviewId = element.getAttribute('data-review-id'); const shareContainer = document.getElementById('shareOptionsContainer-' + reviewId); const shareOptions = document.getElementById('shareOptions-' + reviewId); const shareIcons = shareOptions.querySelectorAll('.shareIcon'); if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); showShareOptions(element, shareIcons); } // Hide share options when focus leaves the container shareContainer.addEventListener('focusout', function(e) { if (!shareOptions.contains(e.relatedTarget) && !shareContainer.contains(e.relatedTarget)) { hideShareOptions(element, shareIcons); } }); } function showShareOptions(element, shareIcons) { element.setAttribute('aria-expanded', 'true'); element.classList.add('isFocused'); shareIcons.forEach(icon => { icon.setAttribute('tabindex', '0'); icon.setAttribute('aria-hidden', 'false'); }); } function hideShareOptions(element, shareIcons) { element.classList.remove('isFocused'); element.setAttribute('aria-expanded', 'false'); shareIcons.forEach(icon => { icon.setAttribute('tabindex', '-1'); icon.setAttribute('aria-hidden', 'true'); }); } function shareKeydown(event, type, review_id) { if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); share(type, review_id); } } function share(type, review_id) { var url = 'https://reviews.io/company-review/store/top3dshop.com/' + review_id; var shareLink = ''; switch(type) { case 'fb': shareLink = 'http://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(url); break; case 'tw': shareLink = 'http://twitter.com/intent/tweet?hashtags=REVIEWSio&text=' + encodeURIComponent(url); break; } // Open url in new window window.open(shareLink,'targetWindow','toolbar=no,location=0,status=no,menubar=no,scrollbars=yes,resizable=yes,width=640,height=480'); }; </script> <a class="controlButtons__btn controlButtons__btn--report" rel="nofollow" role="button" href='/profile-modal/report-review?id=18911117' title="Report this review" data-toggle='ajaxmodal' > <i class="ricon-flag"></i> <span class="textContainer">Report</span> </a> </div> <div class="Review__dateSource"> Posted 1 year ago </div> </div> </div> </div> </div> <div class="Review " data-review-id="18194726"> <div class="review-alert" style="display:none"> <div class="controlbtnFeedback"></div> </div> <div class="Review__header"> <a class="Review__author" href='/company-review/store/top3dshop.com/18194726'>Anonymous</a> <div class="Review__overallStars"> <div class="Review__overallStars__stars"> <div class="Rating Rating--md "> <div class="Rating__stars u-marginBottom--none"> <i class="stars__icon ricon-percentage-star--100 Rating--md"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--0"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--0"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--0"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--0"></i> </div> </div> </div> </div> <div class="Review__badge-container"> <a href="/profile-modal/unverified-reviews" data-toggle="ajaxmodal" class="Review__badge Review__badge--anonymous"> <div class="BadgeElement BadgeElement--unverified"> <div class="BadgeElement__icon ricon-info"></div> <div class="BadgeElement__text"> <div class="TextBody TextBody--xxxs TextBody--inline u-textLeft--all u-marginBottom--none"> Unverified Reviewer </div> </div> </div> </a> </div> <div class="Review__showDetails" id="review_show_details_18194726" style='display:none'> <a role="button" data-toggle="collapse" href="#details_18194726" class="showDetails__btn collapsed js-showDetails"> Show Details <i class="icon-arrow-down-thin-1-01"></i> </a> </div> </div> <div class="Review__content"> <div class="Review__container"> <div id='details_18194726' class="Review__subratings collapse" > </div> <span class="Review__body u-wordBreak--wordBreak"><span class="Review__quotationMark Review__quotationMark--left">“</span>Very bad quality and very bad and poor support..doesn't work even for 4 days....simply useless<span class="Review__quotationMark Review__quotationMark--right">”</span></span> <div class="Review__photos Review__photos--fullwidth" id='review_photos_18194726'> <div class='Review__photos'> </div> </div> <!-- <div class="Review__controlButtons" id="review_controls_18194726"> <div class="Review__dateSource"> Posted 1 year ago </div> </div> --> <style> a.controlButtons__btn.controlButtons__btn--helpful:focus, a.controlButtons__btn.controlButtons__btn--report:focus, span.controlButtons__btn.controlButtons__btn--share:focus { border: 2px solid black !important; outline: none; } span.controlButtons__btn.controlButtons__btn--share.isFocused .textContainer { max-width: 100px !important; margin-left: 3px !important; opacity: 1 !important; } span.shareIcon.shareIcon--fb:focus-visible, .shareIcon.shareIcon--tw:focus-visible { outline: 2px solid black !important; border: unset !important; margin: 2px !important; padding: 0 !important; } </style> <div class="Review__controlButtons"> <div class="controlButtons__inner"> <a class="controlButtons__btn controlButtons__btn--helpful" rel="nofollow" role="button" tabindex="0" aria-label="Mark review as helpful" onclick="flagReviewAsHelpful(18194726)" onkeydown="flagReviewAsHelpfulKeydown(event, 18194726)" title="Was this review helpful?" > <i class="ricon-thumbsup"></i> <span class="textContainer">Helpful</span> </a> <span id="shareOptionsContainer-18194726" class="controlButtons__btn controlButtons__btn--share" rel="nofollow" role="button" aria-label="Share on social media" aria-expanded="false" aria-controls="shareOptions-18194726" tabindex="0" data-review-id="18194726" onkeydown="toggleShareOptions(event, this)" > <i class="ricon-share"></i> <span id="shareOptions-18194726" class="textContainer"> <span class="shareIcon shareIcon--fb" onclick="share('fb', 18194726)" onkeydown="shareKeydown(event, 'fb', 18194726)" aria-label="Share on Facebook" aria-hidden="true" tabindex="-1" > <i class="ricon-facebook-favicon"></i> </span> <span class="shareIcon shareIcon--tw" onclick="share('tw', 18194726)" onkeydown="shareKeydown(event, 'tw', 18194726)" aria-label="Share on X" aria-hidden="true" tabindex="-1" > <i class="ricon-twitter-favicon"></i> </span> </span> </span> <script> function toggleShareOptions(event, element) { const reviewId = element.getAttribute('data-review-id'); const shareContainer = document.getElementById('shareOptionsContainer-' + reviewId); const shareOptions = document.getElementById('shareOptions-' + reviewId); const shareIcons = shareOptions.querySelectorAll('.shareIcon'); if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); showShareOptions(element, shareIcons); } // Hide share options when focus leaves the container shareContainer.addEventListener('focusout', function(e) { if (!shareOptions.contains(e.relatedTarget) && !shareContainer.contains(e.relatedTarget)) { hideShareOptions(element, shareIcons); } }); } function showShareOptions(element, shareIcons) { element.setAttribute('aria-expanded', 'true'); element.classList.add('isFocused'); shareIcons.forEach(icon => { icon.setAttribute('tabindex', '0'); icon.setAttribute('aria-hidden', 'false'); }); } function hideShareOptions(element, shareIcons) { element.classList.remove('isFocused'); element.setAttribute('aria-expanded', 'false'); shareIcons.forEach(icon => { icon.setAttribute('tabindex', '-1'); icon.setAttribute('aria-hidden', 'true'); }); } function shareKeydown(event, type, review_id) { if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); share(type, review_id); } } function share(type, review_id) { var url = 'https://reviews.io/company-review/store/top3dshop.com/' + review_id; var shareLink = ''; switch(type) { case 'fb': shareLink = 'http://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(url); break; case 'tw': shareLink = 'http://twitter.com/intent/tweet?hashtags=REVIEWSio&text=' + encodeURIComponent(url); break; } // Open url in new window window.open(shareLink,'targetWindow','toolbar=no,location=0,status=no,menubar=no,scrollbars=yes,resizable=yes,width=640,height=480'); }; </script> <a class="controlButtons__btn controlButtons__btn--report" rel="nofollow" role="button" href='/profile-modal/report-review?id=18194726' title="Report this review" data-toggle='ajaxmodal' > <i class="ricon-flag"></i> <span class="textContainer">Report</span> </a> </div> <div class="Review__dateSource"> Posted 1 year ago </div> </div> </div> </div> </div> <div class="Review " data-review-id="17782207"> <div class="review-alert" style="display:none"> <div class="controlbtnFeedback"></div> </div> <div class="Review__header"> <a class="Review__author" href='/company-review/store/top3dshop.com/17782207'>Anonymous</a> <div class="Review__overallStars"> <div class="Review__overallStars__stars"> <div class="Rating Rating--md "> <div class="Rating__stars u-marginBottom--none"> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--0"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--0"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--0"></i> </div> </div> </div> </div> <div class="Review__badge-container"> <a href="/profile-modal/verified-reviews" data-toggle="ajaxmodal" class="Review__badge Review__badge--buyer"> <div class="BadgeElement"> <div class="BadgeElement__icon ricon-badge--checkmark"></div> <div class="BadgeElement__text"> <div class="TextBody TextBody--xxxs TextBody--inline u-textLeft--all u-marginBottom--none"> Verified Reviewer </div> </div> </div> </a> </div> <div class="Review__showDetails" id="review_show_details_17782207" style='display:none'> <a role="button" data-toggle="collapse" href="#details_17782207" class="showDetails__btn collapsed js-showDetails"> Show Details <i class="icon-arrow-down-thin-1-01"></i> </a> </div> </div> <div class="Review__content"> <div class="Review__container"> <div id='details_17782207' class="Review__subratings collapse" > </div> <span class="Review__body u-wordBreak--wordBreak"><span class="Review__quotationMark Review__quotationMark--left">“</span>Customer service is nearly non existent at Top3D. I have been assembling a Modix 120x printer that has many inconsistencies between the directions and the actual parts sent. Every page of the directions has an error. The farther you go in the manual the worse it gets, and this requires help from customer service at times. Top3D doesnt have the staff needed to support all of the products they sell.<span class="Review__quotationMark Review__quotationMark--right">”</span></span> <div class="Review__photos Review__photos--fullwidth" id='review_photos_17782207'> <div class='Review__photos'> </div> </div> <!-- <div class="Review__controlButtons" id="review_controls_17782207"> <div class="Review__dateSource"> Posted 1 year ago </div> </div> --> <style> a.controlButtons__btn.controlButtons__btn--helpful:focus, a.controlButtons__btn.controlButtons__btn--report:focus, span.controlButtons__btn.controlButtons__btn--share:focus { border: 2px solid black !important; outline: none; } span.controlButtons__btn.controlButtons__btn--share.isFocused .textContainer { max-width: 100px !important; margin-left: 3px !important; opacity: 1 !important; } span.shareIcon.shareIcon--fb:focus-visible, .shareIcon.shareIcon--tw:focus-visible { outline: 2px solid black !important; border: unset !important; margin: 2px !important; padding: 0 !important; } </style> <div class="Review__controlButtons"> <div class="controlButtons__inner"> <a class="controlButtons__btn controlButtons__btn--helpful" rel="nofollow" role="button" tabindex="0" aria-label="Mark review as helpful" onclick="flagReviewAsHelpful(17782207)" onkeydown="flagReviewAsHelpfulKeydown(event, 17782207)" title="Was this review helpful?" > <i class="ricon-thumbsup"></i> <span class="textContainer">Helpful</span> </a> <span id="shareOptionsContainer-17782207" class="controlButtons__btn controlButtons__btn--share" rel="nofollow" role="button" aria-label="Share on social media" aria-expanded="false" aria-controls="shareOptions-17782207" tabindex="0" data-review-id="17782207" onkeydown="toggleShareOptions(event, this)" > <i class="ricon-share"></i> <span id="shareOptions-17782207" class="textContainer"> <span class="shareIcon shareIcon--fb" onclick="share('fb', 17782207)" onkeydown="shareKeydown(event, 'fb', 17782207)" aria-label="Share on Facebook" aria-hidden="true" tabindex="-1" > <i class="ricon-facebook-favicon"></i> </span> <span class="shareIcon shareIcon--tw" onclick="share('tw', 17782207)" onkeydown="shareKeydown(event, 'tw', 17782207)" aria-label="Share on X" aria-hidden="true" tabindex="-1" > <i class="ricon-twitter-favicon"></i> </span> </span> </span> <script> function toggleShareOptions(event, element) { const reviewId = element.getAttribute('data-review-id'); const shareContainer = document.getElementById('shareOptionsContainer-' + reviewId); const shareOptions = document.getElementById('shareOptions-' + reviewId); const shareIcons = shareOptions.querySelectorAll('.shareIcon'); if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); showShareOptions(element, shareIcons); } // Hide share options when focus leaves the container shareContainer.addEventListener('focusout', function(e) { if (!shareOptions.contains(e.relatedTarget) && !shareContainer.contains(e.relatedTarget)) { hideShareOptions(element, shareIcons); } }); } function showShareOptions(element, shareIcons) { element.setAttribute('aria-expanded', 'true'); element.classList.add('isFocused'); shareIcons.forEach(icon => { icon.setAttribute('tabindex', '0'); icon.setAttribute('aria-hidden', 'false'); }); } function hideShareOptions(element, shareIcons) { element.classList.remove('isFocused'); element.setAttribute('aria-expanded', 'false'); shareIcons.forEach(icon => { icon.setAttribute('tabindex', '-1'); icon.setAttribute('aria-hidden', 'true'); }); } function shareKeydown(event, type, review_id) { if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); share(type, review_id); } } function share(type, review_id) { var url = 'https://reviews.io/company-review/store/top3dshop.com/' + review_id; var shareLink = ''; switch(type) { case 'fb': shareLink = 'http://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(url); break; case 'tw': shareLink = 'http://twitter.com/intent/tweet?hashtags=REVIEWSio&text=' + encodeURIComponent(url); break; } // Open url in new window window.open(shareLink,'targetWindow','toolbar=no,location=0,status=no,menubar=no,scrollbars=yes,resizable=yes,width=640,height=480'); }; </script> <a class="controlButtons__btn controlButtons__btn--report" rel="nofollow" role="button" href='/profile-modal/report-review?id=17782207' title="Report this review" data-toggle='ajaxmodal' > <i class="ricon-flag"></i> <span class="textContainer">Report</span> </a> </div> <div class="Review__dateSource"> Posted 1 year ago </div> </div> </div> </div> </div> <div class="Review " data-review-id="17722615"> <div class="review-alert" style="display:none"> <div class="controlbtnFeedback"></div> </div> <div class="Review__header"> <a class="Review__author" href='/company-review/store/top3dshop.com/17722615'>Jay</a> <div class="Review__overallStars"> <div class="Review__overallStars__stars"> <div class="Rating Rating--md "> <div class="Rating__stars u-marginBottom--none"> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> </div> </div> </div> </div> <div class="Review__badge-container"> <a href="/profile-modal/unverified-reviews" data-toggle="ajaxmodal" class="Review__badge Review__badge--anonymous"> <div class="BadgeElement BadgeElement--unverified"> <div class="BadgeElement__icon ricon-info"></div> <div class="BadgeElement__text"> <div class="TextBody TextBody--xxxs TextBody--inline u-textLeft--all u-marginBottom--none"> Unverified Reviewer </div> </div> </div> </a> </div> <div class="Review__showDetails" id="review_show_details_17722615" style='display:none'> <a role="button" data-toggle="collapse" href="#details_17722615" class="showDetails__btn collapsed js-showDetails"> Show Details <i class="icon-arrow-down-thin-1-01"></i> </a> </div> </div> <div class="Review__content"> <div class="Review__container"> <div id='details_17722615' class="Review__subratings collapse" > </div> <span class="Review__body u-wordBreak--wordBreak"><span class="Review__quotationMark Review__quotationMark--left">“</span>Fast delivery!<span class="Review__quotationMark Review__quotationMark--right">”</span></span> <div class="Review__photos Review__photos--fullwidth" id='review_photos_17722615'> <div class='Review__photos'> </div> </div> <!-- <div class="Review__controlButtons" id="review_controls_17722615"> <div class="Review__dateSource"> Posted 1 year ago </div> </div> --> <style> a.controlButtons__btn.controlButtons__btn--helpful:focus, a.controlButtons__btn.controlButtons__btn--report:focus, span.controlButtons__btn.controlButtons__btn--share:focus { border: 2px solid black !important; outline: none; } span.controlButtons__btn.controlButtons__btn--share.isFocused .textContainer { max-width: 100px !important; margin-left: 3px !important; opacity: 1 !important; } span.shareIcon.shareIcon--fb:focus-visible, .shareIcon.shareIcon--tw:focus-visible { outline: 2px solid black !important; border: unset !important; margin: 2px !important; padding: 0 !important; } </style> <div class="Review__controlButtons"> <div class="controlButtons__inner"> <a class="controlButtons__btn controlButtons__btn--helpful" rel="nofollow" role="button" tabindex="0" aria-label="Mark review as helpful" onclick="flagReviewAsHelpful(17722615)" onkeydown="flagReviewAsHelpfulKeydown(event, 17722615)" title="Was this review helpful?" > <i class="ricon-thumbsup"></i> <span class="textContainer">Helpful</span> </a> <span id="shareOptionsContainer-17722615" class="controlButtons__btn controlButtons__btn--share" rel="nofollow" role="button" aria-label="Share on social media" aria-expanded="false" aria-controls="shareOptions-17722615" tabindex="0" data-review-id="17722615" onkeydown="toggleShareOptions(event, this)" > <i class="ricon-share"></i> <span id="shareOptions-17722615" class="textContainer"> <span class="shareIcon shareIcon--fb" onclick="share('fb', 17722615)" onkeydown="shareKeydown(event, 'fb', 17722615)" aria-label="Share on Facebook" aria-hidden="true" tabindex="-1" > <i class="ricon-facebook-favicon"></i> </span> <span class="shareIcon shareIcon--tw" onclick="share('tw', 17722615)" onkeydown="shareKeydown(event, 'tw', 17722615)" aria-label="Share on X" aria-hidden="true" tabindex="-1" > <i class="ricon-twitter-favicon"></i> </span> </span> </span> <script> function toggleShareOptions(event, element) { const reviewId = element.getAttribute('data-review-id'); const shareContainer = document.getElementById('shareOptionsContainer-' + reviewId); const shareOptions = document.getElementById('shareOptions-' + reviewId); const shareIcons = shareOptions.querySelectorAll('.shareIcon'); if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); showShareOptions(element, shareIcons); } // Hide share options when focus leaves the container shareContainer.addEventListener('focusout', function(e) { if (!shareOptions.contains(e.relatedTarget) && !shareContainer.contains(e.relatedTarget)) { hideShareOptions(element, shareIcons); } }); } function showShareOptions(element, shareIcons) { element.setAttribute('aria-expanded', 'true'); element.classList.add('isFocused'); shareIcons.forEach(icon => { icon.setAttribute('tabindex', '0'); icon.setAttribute('aria-hidden', 'false'); }); } function hideShareOptions(element, shareIcons) { element.classList.remove('isFocused'); element.setAttribute('aria-expanded', 'false'); shareIcons.forEach(icon => { icon.setAttribute('tabindex', '-1'); icon.setAttribute('aria-hidden', 'true'); }); } function shareKeydown(event, type, review_id) { if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); share(type, review_id); } } function share(type, review_id) { var url = 'https://reviews.io/company-review/store/top3dshop.com/' + review_id; var shareLink = ''; switch(type) { case 'fb': shareLink = 'http://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(url); break; case 'tw': shareLink = 'http://twitter.com/intent/tweet?hashtags=REVIEWSio&text=' + encodeURIComponent(url); break; } // Open url in new window window.open(shareLink,'targetWindow','toolbar=no,location=0,status=no,menubar=no,scrollbars=yes,resizable=yes,width=640,height=480'); }; </script> <a class="controlButtons__btn controlButtons__btn--report" rel="nofollow" role="button" href='/profile-modal/report-review?id=17722615' title="Report this review" data-toggle='ajaxmodal' > <i class="ricon-flag"></i> <span class="textContainer">Report</span> </a> </div> <div class="Review__dateSource"> Posted 1 year ago </div> </div> </div> </div> </div> <div class="Review " data-review-id="17579591"> <div class="review-alert" style="display:none"> <div class="controlbtnFeedback"></div> </div> <div class="Review__header"> <a class="Review__author" href='/company-review/store/top3dshop.com/17579591'>Leroy</a> <div class="Review__overallStars"> <div class="Review__overallStars__stars"> <div class="Rating Rating--md "> <div class="Rating__stars u-marginBottom--none"> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> </div> </div> </div> </div> <div class="Review__badge-container"> <a href="/profile-modal/unverified-reviews" data-toggle="ajaxmodal" class="Review__badge Review__badge--anonymous"> <div class="BadgeElement BadgeElement--unverified"> <div class="BadgeElement__icon ricon-info"></div> <div class="BadgeElement__text"> <div class="TextBody TextBody--xxxs TextBody--inline u-textLeft--all u-marginBottom--none"> Unverified Reviewer </div> </div> </div> </a> </div> <div class="Review__showDetails" id="review_show_details_17579591" style='display:none'> <a role="button" data-toggle="collapse" href="#details_17579591" class="showDetails__btn collapsed js-showDetails"> Show Details <i class="icon-arrow-down-thin-1-01"></i> </a> </div> </div> <div class="Review__content"> <div class="Review__container"> <div id='details_17579591' class="Review__subratings collapse" > </div> <span class="Review__body u-wordBreak--wordBreak"><span class="Review__quotationMark Review__quotationMark--left">“</span>Everything's perfect.<span class="Review__quotationMark Review__quotationMark--right">”</span></span> <div class="Review__photos Review__photos--fullwidth" id='review_photos_17579591'> <div class='Review__photos'> </div> </div> <!-- <div class="Review__controlButtons" id="review_controls_17579591"> <div class="Review__dateSource"> Posted 1 year ago </div> </div> --> <style> a.controlButtons__btn.controlButtons__btn--helpful:focus, a.controlButtons__btn.controlButtons__btn--report:focus, span.controlButtons__btn.controlButtons__btn--share:focus { border: 2px solid black !important; outline: none; } span.controlButtons__btn.controlButtons__btn--share.isFocused .textContainer { max-width: 100px !important; margin-left: 3px !important; opacity: 1 !important; } span.shareIcon.shareIcon--fb:focus-visible, .shareIcon.shareIcon--tw:focus-visible { outline: 2px solid black !important; border: unset !important; margin: 2px !important; padding: 0 !important; } </style> <div class="Review__controlButtons"> <div class="controlButtons__inner"> <a class="controlButtons__btn controlButtons__btn--helpful" rel="nofollow" role="button" tabindex="0" aria-label="Mark review as helpful" onclick="flagReviewAsHelpful(17579591)" onkeydown="flagReviewAsHelpfulKeydown(event, 17579591)" title="Was this review helpful?" > <i class="ricon-thumbsup"></i> <span class="textContainer">Helpful</span> </a> <span id="shareOptionsContainer-17579591" class="controlButtons__btn controlButtons__btn--share" rel="nofollow" role="button" aria-label="Share on social media" aria-expanded="false" aria-controls="shareOptions-17579591" tabindex="0" data-review-id="17579591" onkeydown="toggleShareOptions(event, this)" > <i class="ricon-share"></i> <span id="shareOptions-17579591" class="textContainer"> <span class="shareIcon shareIcon--fb" onclick="share('fb', 17579591)" onkeydown="shareKeydown(event, 'fb', 17579591)" aria-label="Share on Facebook" aria-hidden="true" tabindex="-1" > <i class="ricon-facebook-favicon"></i> </span> <span class="shareIcon shareIcon--tw" onclick="share('tw', 17579591)" onkeydown="shareKeydown(event, 'tw', 17579591)" aria-label="Share on X" aria-hidden="true" tabindex="-1" > <i class="ricon-twitter-favicon"></i> </span> </span> </span> <script> function toggleShareOptions(event, element) { const reviewId = element.getAttribute('data-review-id'); const shareContainer = document.getElementById('shareOptionsContainer-' + reviewId); const shareOptions = document.getElementById('shareOptions-' + reviewId); const shareIcons = shareOptions.querySelectorAll('.shareIcon'); if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); showShareOptions(element, shareIcons); } // Hide share options when focus leaves the container shareContainer.addEventListener('focusout', function(e) { if (!shareOptions.contains(e.relatedTarget) && !shareContainer.contains(e.relatedTarget)) { hideShareOptions(element, shareIcons); } }); } function showShareOptions(element, shareIcons) { element.setAttribute('aria-expanded', 'true'); element.classList.add('isFocused'); shareIcons.forEach(icon => { icon.setAttribute('tabindex', '0'); icon.setAttribute('aria-hidden', 'false'); }); } function hideShareOptions(element, shareIcons) { element.classList.remove('isFocused'); element.setAttribute('aria-expanded', 'false'); shareIcons.forEach(icon => { icon.setAttribute('tabindex', '-1'); icon.setAttribute('aria-hidden', 'true'); }); } function shareKeydown(event, type, review_id) { if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); share(type, review_id); } } function share(type, review_id) { var url = 'https://reviews.io/company-review/store/top3dshop.com/' + review_id; var shareLink = ''; switch(type) { case 'fb': shareLink = 'http://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(url); break; case 'tw': shareLink = 'http://twitter.com/intent/tweet?hashtags=REVIEWSio&text=' + encodeURIComponent(url); break; } // Open url in new window window.open(shareLink,'targetWindow','toolbar=no,location=0,status=no,menubar=no,scrollbars=yes,resizable=yes,width=640,height=480'); }; </script> <a class="controlButtons__btn controlButtons__btn--report" rel="nofollow" role="button" href='/profile-modal/report-review?id=17579591' title="Report this review" data-toggle='ajaxmodal' > <i class="ricon-flag"></i> <span class="textContainer">Report</span> </a> </div> <div class="Review__dateSource"> Posted 1 year ago </div> </div> </div> </div> </div> <div class="Review " data-review-id="17546321"> <div class="review-alert" style="display:none"> <div class="controlbtnFeedback"></div> </div> <div class="Review__header"> <a class="Review__author" href='/company-review/store/top3dshop.com/17546321'>Leroy</a> <div class="Review__overallStars"> <div class="Review__overallStars__stars"> <div class="Rating Rating--md "> <div class="Rating__stars u-marginBottom--none"> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> </div> </div> </div> </div> <div class="Review__badge-container"> <a href="/profile-modal/unverified-reviews" data-toggle="ajaxmodal" class="Review__badge Review__badge--anonymous"> <div class="BadgeElement BadgeElement--unverified"> <div class="BadgeElement__icon ricon-info"></div> <div class="BadgeElement__text"> <div class="TextBody TextBody--xxxs TextBody--inline u-textLeft--all u-marginBottom--none"> Unverified Reviewer </div> </div> </div> </a> </div> <div class="Review__showDetails" id="review_show_details_17546321" style='display:none'> <a role="button" data-toggle="collapse" href="#details_17546321" class="showDetails__btn collapsed js-showDetails"> Show Details <i class="icon-arrow-down-thin-1-01"></i> </a> </div> </div> <div class="Review__content"> <div class="Review__container"> <div id='details_17546321' class="Review__subratings collapse" > </div> <span class="Review__body u-wordBreak--wordBreak"><span class="Review__quotationMark Review__quotationMark--left">“</span>got the tracking number on the same day, great.<span class="Review__quotationMark Review__quotationMark--right">”</span></span> <div class="Review__photos Review__photos--fullwidth" id='review_photos_17546321'> <div class='Review__photos'> </div> </div> <!-- <div class="Review__controlButtons" id="review_controls_17546321"> <div class="Review__dateSource"> Posted 1 year ago </div> </div> --> <style> a.controlButtons__btn.controlButtons__btn--helpful:focus, a.controlButtons__btn.controlButtons__btn--report:focus, span.controlButtons__btn.controlButtons__btn--share:focus { border: 2px solid black !important; outline: none; } span.controlButtons__btn.controlButtons__btn--share.isFocused .textContainer { max-width: 100px !important; margin-left: 3px !important; opacity: 1 !important; } span.shareIcon.shareIcon--fb:focus-visible, .shareIcon.shareIcon--tw:focus-visible { outline: 2px solid black !important; border: unset !important; margin: 2px !important; padding: 0 !important; } </style> <div class="Review__controlButtons"> <div class="controlButtons__inner"> <a class="controlButtons__btn controlButtons__btn--helpful" rel="nofollow" role="button" tabindex="0" aria-label="Mark review as helpful" onclick="flagReviewAsHelpful(17546321)" onkeydown="flagReviewAsHelpfulKeydown(event, 17546321)" title="Was this review helpful?" > <i class="ricon-thumbsup"></i> <span class="textContainer">Helpful</span> </a> <span id="shareOptionsContainer-17546321" class="controlButtons__btn controlButtons__btn--share" rel="nofollow" role="button" aria-label="Share on social media" aria-expanded="false" aria-controls="shareOptions-17546321" tabindex="0" data-review-id="17546321" onkeydown="toggleShareOptions(event, this)" > <i class="ricon-share"></i> <span id="shareOptions-17546321" class="textContainer"> <span class="shareIcon shareIcon--fb" onclick="share('fb', 17546321)" onkeydown="shareKeydown(event, 'fb', 17546321)" aria-label="Share on Facebook" aria-hidden="true" tabindex="-1" > <i class="ricon-facebook-favicon"></i> </span> <span class="shareIcon shareIcon--tw" onclick="share('tw', 17546321)" onkeydown="shareKeydown(event, 'tw', 17546321)" aria-label="Share on X" aria-hidden="true" tabindex="-1" > <i class="ricon-twitter-favicon"></i> </span> </span> </span> <script> function toggleShareOptions(event, element) { const reviewId = element.getAttribute('data-review-id'); const shareContainer = document.getElementById('shareOptionsContainer-' + reviewId); const shareOptions = document.getElementById('shareOptions-' + reviewId); const shareIcons = shareOptions.querySelectorAll('.shareIcon'); if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); showShareOptions(element, shareIcons); } // Hide share options when focus leaves the container shareContainer.addEventListener('focusout', function(e) { if (!shareOptions.contains(e.relatedTarget) && !shareContainer.contains(e.relatedTarget)) { hideShareOptions(element, shareIcons); } }); } function showShareOptions(element, shareIcons) { element.setAttribute('aria-expanded', 'true'); element.classList.add('isFocused'); shareIcons.forEach(icon => { icon.setAttribute('tabindex', '0'); icon.setAttribute('aria-hidden', 'false'); }); } function hideShareOptions(element, shareIcons) { element.classList.remove('isFocused'); element.setAttribute('aria-expanded', 'false'); shareIcons.forEach(icon => { icon.setAttribute('tabindex', '-1'); icon.setAttribute('aria-hidden', 'true'); }); } function shareKeydown(event, type, review_id) { if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); share(type, review_id); } } function share(type, review_id) { var url = 'https://reviews.io/company-review/store/top3dshop.com/' + review_id; var shareLink = ''; switch(type) { case 'fb': shareLink = 'http://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(url); break; case 'tw': shareLink = 'http://twitter.com/intent/tweet?hashtags=REVIEWSio&text=' + encodeURIComponent(url); break; } // Open url in new window window.open(shareLink,'targetWindow','toolbar=no,location=0,status=no,menubar=no,scrollbars=yes,resizable=yes,width=640,height=480'); }; </script> <a class="controlButtons__btn controlButtons__btn--report" rel="nofollow" role="button" href='/profile-modal/report-review?id=17546321' title="Report this review" data-toggle='ajaxmodal' > <i class="ricon-flag"></i> <span class="textContainer">Report</span> </a> </div> <div class="Review__dateSource"> Posted 1 year ago </div> </div> </div> </div> </div> <div class="Review " data-review-id="17387469"> <div class="review-alert" style="display:none"> <div class="controlbtnFeedback"></div> </div> <div class="Review__header"> <a class="Review__author" href='/company-review/store/top3dshop.com/17387469'>Adam</a> <div class="Review__overallStars"> <div class="Review__overallStars__stars"> <div class="Rating Rating--md "> <div class="Rating__stars u-marginBottom--none"> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> </div> </div> </div> </div> <div class="Review__badge-container"> <a href="/profile-modal/unverified-reviews" data-toggle="ajaxmodal" class="Review__badge Review__badge--anonymous"> <div class="BadgeElement BadgeElement--unverified"> <div class="BadgeElement__icon ricon-info"></div> <div class="BadgeElement__text"> <div class="TextBody TextBody--xxxs TextBody--inline u-textLeft--all u-marginBottom--none"> Unverified Reviewer </div> </div> </div> </a> </div> <div class="Review__showDetails" id="review_show_details_17387469" style='display:none'> <a role="button" data-toggle="collapse" href="#details_17387469" class="showDetails__btn collapsed js-showDetails"> Show Details <i class="icon-arrow-down-thin-1-01"></i> </a> </div> </div> <div class="Review__content"> <div class="Review__container"> <div id='details_17387469' class="Review__subratings collapse" > </div> <span class="Review__body u-wordBreak--wordBreak"><span class="Review__quotationMark Review__quotationMark--left">“</span>Perfect as usual<span class="Review__quotationMark Review__quotationMark--right">”</span></span> <div class="Review__photos Review__photos--fullwidth" id='review_photos_17387469'> <div class='Review__photos'> </div> </div> <!-- <div class="Review__controlButtons" id="review_controls_17387469"> <div class="Review__dateSource"> Posted 1 year ago </div> </div> --> <style> a.controlButtons__btn.controlButtons__btn--helpful:focus, a.controlButtons__btn.controlButtons__btn--report:focus, span.controlButtons__btn.controlButtons__btn--share:focus { border: 2px solid black !important; outline: none; } span.controlButtons__btn.controlButtons__btn--share.isFocused .textContainer { max-width: 100px !important; margin-left: 3px !important; opacity: 1 !important; } span.shareIcon.shareIcon--fb:focus-visible, .shareIcon.shareIcon--tw:focus-visible { outline: 2px solid black !important; border: unset !important; margin: 2px !important; padding: 0 !important; } </style> <div class="Review__controlButtons"> <div class="controlButtons__inner"> <a class="controlButtons__btn controlButtons__btn--helpful" rel="nofollow" role="button" tabindex="0" aria-label="Mark review as helpful" onclick="flagReviewAsHelpful(17387469)" onkeydown="flagReviewAsHelpfulKeydown(event, 17387469)" title="Was this review helpful?" > <i class="ricon-thumbsup"></i> <span class="textContainer">Helpful</span> </a> <span id="shareOptionsContainer-17387469" class="controlButtons__btn controlButtons__btn--share" rel="nofollow" role="button" aria-label="Share on social media" aria-expanded="false" aria-controls="shareOptions-17387469" tabindex="0" data-review-id="17387469" onkeydown="toggleShareOptions(event, this)" > <i class="ricon-share"></i> <span id="shareOptions-17387469" class="textContainer"> <span class="shareIcon shareIcon--fb" onclick="share('fb', 17387469)" onkeydown="shareKeydown(event, 'fb', 17387469)" aria-label="Share on Facebook" aria-hidden="true" tabindex="-1" > <i class="ricon-facebook-favicon"></i> </span> <span class="shareIcon shareIcon--tw" onclick="share('tw', 17387469)" onkeydown="shareKeydown(event, 'tw', 17387469)" aria-label="Share on X" aria-hidden="true" tabindex="-1" > <i class="ricon-twitter-favicon"></i> </span> </span> </span> <script> function toggleShareOptions(event, element) { const reviewId = element.getAttribute('data-review-id'); const shareContainer = document.getElementById('shareOptionsContainer-' + reviewId); const shareOptions = document.getElementById('shareOptions-' + reviewId); const shareIcons = shareOptions.querySelectorAll('.shareIcon'); if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); showShareOptions(element, shareIcons); } // Hide share options when focus leaves the container shareContainer.addEventListener('focusout', function(e) { if (!shareOptions.contains(e.relatedTarget) && !shareContainer.contains(e.relatedTarget)) { hideShareOptions(element, shareIcons); } }); } function showShareOptions(element, shareIcons) { element.setAttribute('aria-expanded', 'true'); element.classList.add('isFocused'); shareIcons.forEach(icon => { icon.setAttribute('tabindex', '0'); icon.setAttribute('aria-hidden', 'false'); }); } function hideShareOptions(element, shareIcons) { element.classList.remove('isFocused'); element.setAttribute('aria-expanded', 'false'); shareIcons.forEach(icon => { icon.setAttribute('tabindex', '-1'); icon.setAttribute('aria-hidden', 'true'); }); } function shareKeydown(event, type, review_id) { if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); share(type, review_id); } } function share(type, review_id) { var url = 'https://reviews.io/company-review/store/top3dshop.com/' + review_id; var shareLink = ''; switch(type) { case 'fb': shareLink = 'http://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(url); break; case 'tw': shareLink = 'http://twitter.com/intent/tweet?hashtags=REVIEWSio&text=' + encodeURIComponent(url); break; } // Open url in new window window.open(shareLink,'targetWindow','toolbar=no,location=0,status=no,menubar=no,scrollbars=yes,resizable=yes,width=640,height=480'); }; </script> <a class="controlButtons__btn controlButtons__btn--report" rel="nofollow" role="button" href='/profile-modal/report-review?id=17387469' title="Report this review" data-toggle='ajaxmodal' > <i class="ricon-flag"></i> <span class="textContainer">Report</span> </a> </div> <div class="Review__dateSource"> Posted 1 year ago </div> </div> </div> </div> </div> <div class="Review " data-review-id="17366466"> <div class="review-alert" style="display:none"> <div class="controlbtnFeedback"></div> </div> <div class="Review__header"> <a class="Review__author" href='/company-review/store/top3dshop.com/17366466'>Joe</a> <div class="Review__overallStars"> <div class="Review__overallStars__stars"> <div class="Rating Rating--md "> <div class="Rating__stars u-marginBottom--none"> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> </div> </div> </div> </div> <div class="Review__badge-container"> <a href="/profile-modal/unverified-reviews" data-toggle="ajaxmodal" class="Review__badge Review__badge--anonymous"> <div class="BadgeElement BadgeElement--unverified"> <div class="BadgeElement__icon ricon-info"></div> <div class="BadgeElement__text"> <div class="TextBody TextBody--xxxs TextBody--inline u-textLeft--all u-marginBottom--none"> Unverified Reviewer </div> </div> </div> </a> </div> <div class="Review__showDetails" id="review_show_details_17366466" style='display:none'> <a role="button" data-toggle="collapse" href="#details_17366466" class="showDetails__btn collapsed js-showDetails"> Show Details <i class="icon-arrow-down-thin-1-01"></i> </a> </div> </div> <div class="Review__content"> <div class="Review__container"> <div id='details_17366466' class="Review__subratings collapse" > </div> <span class="Review__body u-wordBreak--wordBreak"><span class="Review__quotationMark Review__quotationMark--left">“</span>Excellent!<span class="Review__quotationMark Review__quotationMark--right">”</span></span> <div class="Review__photos Review__photos--fullwidth" id='review_photos_17366466'> <div class='Review__photos'> </div> </div> <!-- <div class="Review__controlButtons" id="review_controls_17366466"> <div class="Review__dateSource"> Posted 1 year ago </div> </div> --> <style> a.controlButtons__btn.controlButtons__btn--helpful:focus, a.controlButtons__btn.controlButtons__btn--report:focus, span.controlButtons__btn.controlButtons__btn--share:focus { border: 2px solid black !important; outline: none; } span.controlButtons__btn.controlButtons__btn--share.isFocused .textContainer { max-width: 100px !important; margin-left: 3px !important; opacity: 1 !important; } span.shareIcon.shareIcon--fb:focus-visible, .shareIcon.shareIcon--tw:focus-visible { outline: 2px solid black !important; border: unset !important; margin: 2px !important; padding: 0 !important; } </style> <div class="Review__controlButtons"> <div class="controlButtons__inner"> <a class="controlButtons__btn controlButtons__btn--helpful" rel="nofollow" role="button" tabindex="0" aria-label="Mark review as helpful" onclick="flagReviewAsHelpful(17366466)" onkeydown="flagReviewAsHelpfulKeydown(event, 17366466)" title="Was this review helpful?" > <i class="ricon-thumbsup"></i> <span class="textContainer">Helpful</span> </a> <span id="shareOptionsContainer-17366466" class="controlButtons__btn controlButtons__btn--share" rel="nofollow" role="button" aria-label="Share on social media" aria-expanded="false" aria-controls="shareOptions-17366466" tabindex="0" data-review-id="17366466" onkeydown="toggleShareOptions(event, this)" > <i class="ricon-share"></i> <span id="shareOptions-17366466" class="textContainer"> <span class="shareIcon shareIcon--fb" onclick="share('fb', 17366466)" onkeydown="shareKeydown(event, 'fb', 17366466)" aria-label="Share on Facebook" aria-hidden="true" tabindex="-1" > <i class="ricon-facebook-favicon"></i> </span> <span class="shareIcon shareIcon--tw" onclick="share('tw', 17366466)" onkeydown="shareKeydown(event, 'tw', 17366466)" aria-label="Share on X" aria-hidden="true" tabindex="-1" > <i class="ricon-twitter-favicon"></i> </span> </span> </span> <script> function toggleShareOptions(event, element) { const reviewId = element.getAttribute('data-review-id'); const shareContainer = document.getElementById('shareOptionsContainer-' + reviewId); const shareOptions = document.getElementById('shareOptions-' + reviewId); const shareIcons = shareOptions.querySelectorAll('.shareIcon'); if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); showShareOptions(element, shareIcons); } // Hide share options when focus leaves the container shareContainer.addEventListener('focusout', function(e) { if (!shareOptions.contains(e.relatedTarget) && !shareContainer.contains(e.relatedTarget)) { hideShareOptions(element, shareIcons); } }); } function showShareOptions(element, shareIcons) { element.setAttribute('aria-expanded', 'true'); element.classList.add('isFocused'); shareIcons.forEach(icon => { icon.setAttribute('tabindex', '0'); icon.setAttribute('aria-hidden', 'false'); }); } function hideShareOptions(element, shareIcons) { element.classList.remove('isFocused'); element.setAttribute('aria-expanded', 'false'); shareIcons.forEach(icon => { icon.setAttribute('tabindex', '-1'); icon.setAttribute('aria-hidden', 'true'); }); } function shareKeydown(event, type, review_id) { if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); share(type, review_id); } } function share(type, review_id) { var url = 'https://reviews.io/company-review/store/top3dshop.com/' + review_id; var shareLink = ''; switch(type) { case 'fb': shareLink = 'http://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(url); break; case 'tw': shareLink = 'http://twitter.com/intent/tweet?hashtags=REVIEWSio&text=' + encodeURIComponent(url); break; } // Open url in new window window.open(shareLink,'targetWindow','toolbar=no,location=0,status=no,menubar=no,scrollbars=yes,resizable=yes,width=640,height=480'); }; </script> <a class="controlButtons__btn controlButtons__btn--report" rel="nofollow" role="button" href='/profile-modal/report-review?id=17366466' title="Report this review" data-toggle='ajaxmodal' > <i class="ricon-flag"></i> <span class="textContainer">Report</span> </a> </div> <div class="Review__dateSource"> Posted 1 year ago </div> </div> </div> </div> </div> <div class="Review " data-review-id="17239026"> <div class="review-alert" style="display:none"> <div class="controlbtnFeedback"></div> </div> <div class="Review__header"> <a class="Review__author" href='/company-review/store/top3dshop.com/17239026'>Joseph</a> <div class="Review__overallStars"> <div class="Review__overallStars__stars"> <div class="Rating Rating--md "> <div class="Rating__stars u-marginBottom--none"> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> </div> </div> </div> </div> <div class="Review__badge-container"> <a href="/profile-modal/unverified-reviews" data-toggle="ajaxmodal" class="Review__badge Review__badge--anonymous"> <div class="BadgeElement BadgeElement--unverified"> <div class="BadgeElement__icon ricon-info"></div> <div class="BadgeElement__text"> <div class="TextBody TextBody--xxxs TextBody--inline u-textLeft--all u-marginBottom--none"> Unverified Reviewer </div> </div> </div> </a> </div> <div class="Review__showDetails" id="review_show_details_17239026" style='display:none'> <a role="button" data-toggle="collapse" href="#details_17239026" class="showDetails__btn collapsed js-showDetails"> Show Details <i class="icon-arrow-down-thin-1-01"></i> </a> </div> </div> <div class="Review__content"> <div class="Review__container"> <div id='details_17239026' class="Review__subratings collapse" > </div> <span class="Review__body u-wordBreak--wordBreak"><span class="Review__quotationMark Review__quotationMark--left">“</span>Good company<span class="Review__quotationMark Review__quotationMark--right">”</span></span> <div class="Review__photos Review__photos--fullwidth" id='review_photos_17239026'> <div class='Review__photos'> </div> </div> <!-- <div class="Review__controlButtons" id="review_controls_17239026"> <div class="Review__dateSource"> Posted 1 year ago </div> </div> --> <style> a.controlButtons__btn.controlButtons__btn--helpful:focus, a.controlButtons__btn.controlButtons__btn--report:focus, span.controlButtons__btn.controlButtons__btn--share:focus { border: 2px solid black !important; outline: none; } span.controlButtons__btn.controlButtons__btn--share.isFocused .textContainer { max-width: 100px !important; margin-left: 3px !important; opacity: 1 !important; } span.shareIcon.shareIcon--fb:focus-visible, .shareIcon.shareIcon--tw:focus-visible { outline: 2px solid black !important; border: unset !important; margin: 2px !important; padding: 0 !important; } </style> <div class="Review__controlButtons"> <div class="controlButtons__inner"> <a class="controlButtons__btn controlButtons__btn--helpful" rel="nofollow" role="button" tabindex="0" aria-label="Mark review as helpful" onclick="flagReviewAsHelpful(17239026)" onkeydown="flagReviewAsHelpfulKeydown(event, 17239026)" title="Was this review helpful?" > <i class="ricon-thumbsup"></i> <span class="textContainer">Helpful</span> </a> <span id="shareOptionsContainer-17239026" class="controlButtons__btn controlButtons__btn--share" rel="nofollow" role="button" aria-label="Share on social media" aria-expanded="false" aria-controls="shareOptions-17239026" tabindex="0" data-review-id="17239026" onkeydown="toggleShareOptions(event, this)" > <i class="ricon-share"></i> <span id="shareOptions-17239026" class="textContainer"> <span class="shareIcon shareIcon--fb" onclick="share('fb', 17239026)" onkeydown="shareKeydown(event, 'fb', 17239026)" aria-label="Share on Facebook" aria-hidden="true" tabindex="-1" > <i class="ricon-facebook-favicon"></i> </span> <span class="shareIcon shareIcon--tw" onclick="share('tw', 17239026)" onkeydown="shareKeydown(event, 'tw', 17239026)" aria-label="Share on X" aria-hidden="true" tabindex="-1" > <i class="ricon-twitter-favicon"></i> </span> </span> </span> <script> function toggleShareOptions(event, element) { const reviewId = element.getAttribute('data-review-id'); const shareContainer = document.getElementById('shareOptionsContainer-' + reviewId); const shareOptions = document.getElementById('shareOptions-' + reviewId); const shareIcons = shareOptions.querySelectorAll('.shareIcon'); if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); showShareOptions(element, shareIcons); } // Hide share options when focus leaves the container shareContainer.addEventListener('focusout', function(e) { if (!shareOptions.contains(e.relatedTarget) && !shareContainer.contains(e.relatedTarget)) { hideShareOptions(element, shareIcons); } }); } function showShareOptions(element, shareIcons) { element.setAttribute('aria-expanded', 'true'); element.classList.add('isFocused'); shareIcons.forEach(icon => { icon.setAttribute('tabindex', '0'); icon.setAttribute('aria-hidden', 'false'); }); } function hideShareOptions(element, shareIcons) { element.classList.remove('isFocused'); element.setAttribute('aria-expanded', 'false'); shareIcons.forEach(icon => { icon.setAttribute('tabindex', '-1'); icon.setAttribute('aria-hidden', 'true'); }); } function shareKeydown(event, type, review_id) { if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); share(type, review_id); } } function share(type, review_id) { var url = 'https://reviews.io/company-review/store/top3dshop.com/' + review_id; var shareLink = ''; switch(type) { case 'fb': shareLink = 'http://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(url); break; case 'tw': shareLink = 'http://twitter.com/intent/tweet?hashtags=REVIEWSio&text=' + encodeURIComponent(url); break; } // Open url in new window window.open(shareLink,'targetWindow','toolbar=no,location=0,status=no,menubar=no,scrollbars=yes,resizable=yes,width=640,height=480'); }; </script> <a class="controlButtons__btn controlButtons__btn--report" rel="nofollow" role="button" href='/profile-modal/report-review?id=17239026' title="Report this review" data-toggle='ajaxmodal' > <i class="ricon-flag"></i> <span class="textContainer">Report</span> </a> </div> <div class="Review__dateSource"> Posted 1 year ago </div> </div> </div> </div> </div> <div class="Review " data-review-id="17191479"> <div class="review-alert" style="display:none"> <div class="controlbtnFeedback"></div> </div> <div class="Review__header"> <a class="Review__author" href='/company-review/store/top3dshop.com/17191479'>Jesse</a> <div class="Review__overallStars"> <div class="Review__overallStars__stars"> <div class="Rating Rating--md "> <div class="Rating__stars u-marginBottom--none"> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> </div> </div> </div> </div> <div class="Review__badge-container"> <a href="/profile-modal/unverified-reviews" data-toggle="ajaxmodal" class="Review__badge Review__badge--anonymous"> <div class="BadgeElement BadgeElement--unverified"> <div class="BadgeElement__icon ricon-info"></div> <div class="BadgeElement__text"> <div class="TextBody TextBody--xxxs TextBody--inline u-textLeft--all u-marginBottom--none"> Unverified Reviewer </div> </div> </div> </a> </div> <div class="Review__showDetails" id="review_show_details_17191479" style='display:none'> <a role="button" data-toggle="collapse" href="#details_17191479" class="showDetails__btn collapsed js-showDetails"> Show Details <i class="icon-arrow-down-thin-1-01"></i> </a> </div> </div> <div class="Review__content"> <div class="Review__container"> <div id='details_17191479' class="Review__subratings collapse" > </div> <span class="Review__body u-wordBreak--wordBreak"><span class="Review__quotationMark Review__quotationMark--left">“</span>Super professional team<span class="Review__quotationMark Review__quotationMark--right">”</span></span> <div class="Review__photos Review__photos--fullwidth" id='review_photos_17191479'> <div class='Review__photos'> </div> </div> <!-- <div class="Review__controlButtons" id="review_controls_17191479"> <div class="Review__dateSource"> Posted 1 year ago </div> </div> --> <style> a.controlButtons__btn.controlButtons__btn--helpful:focus, a.controlButtons__btn.controlButtons__btn--report:focus, span.controlButtons__btn.controlButtons__btn--share:focus { border: 2px solid black !important; outline: none; } span.controlButtons__btn.controlButtons__btn--share.isFocused .textContainer { max-width: 100px !important; margin-left: 3px !important; opacity: 1 !important; } span.shareIcon.shareIcon--fb:focus-visible, .shareIcon.shareIcon--tw:focus-visible { outline: 2px solid black !important; border: unset !important; margin: 2px !important; padding: 0 !important; } </style> <div class="Review__controlButtons"> <div class="controlButtons__inner"> <a class="controlButtons__btn controlButtons__btn--helpful" rel="nofollow" role="button" tabindex="0" aria-label="Mark review as helpful" onclick="flagReviewAsHelpful(17191479)" onkeydown="flagReviewAsHelpfulKeydown(event, 17191479)" title="Was this review helpful?" > <i class="ricon-thumbsup"></i> <span class="textContainer">Helpful</span> </a> <span id="shareOptionsContainer-17191479" class="controlButtons__btn controlButtons__btn--share" rel="nofollow" role="button" aria-label="Share on social media" aria-expanded="false" aria-controls="shareOptions-17191479" tabindex="0" data-review-id="17191479" onkeydown="toggleShareOptions(event, this)" > <i class="ricon-share"></i> <span id="shareOptions-17191479" class="textContainer"> <span class="shareIcon shareIcon--fb" onclick="share('fb', 17191479)" onkeydown="shareKeydown(event, 'fb', 17191479)" aria-label="Share on Facebook" aria-hidden="true" tabindex="-1" > <i class="ricon-facebook-favicon"></i> </span> <span class="shareIcon shareIcon--tw" onclick="share('tw', 17191479)" onkeydown="shareKeydown(event, 'tw', 17191479)" aria-label="Share on X" aria-hidden="true" tabindex="-1" > <i class="ricon-twitter-favicon"></i> </span> </span> </span> <script> function toggleShareOptions(event, element) { const reviewId = element.getAttribute('data-review-id'); const shareContainer = document.getElementById('shareOptionsContainer-' + reviewId); const shareOptions = document.getElementById('shareOptions-' + reviewId); const shareIcons = shareOptions.querySelectorAll('.shareIcon'); if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); showShareOptions(element, shareIcons); } // Hide share options when focus leaves the container shareContainer.addEventListener('focusout', function(e) { if (!shareOptions.contains(e.relatedTarget) && !shareContainer.contains(e.relatedTarget)) { hideShareOptions(element, shareIcons); } }); } function showShareOptions(element, shareIcons) { element.setAttribute('aria-expanded', 'true'); element.classList.add('isFocused'); shareIcons.forEach(icon => { icon.setAttribute('tabindex', '0'); icon.setAttribute('aria-hidden', 'false'); }); } function hideShareOptions(element, shareIcons) { element.classList.remove('isFocused'); element.setAttribute('aria-expanded', 'false'); shareIcons.forEach(icon => { icon.setAttribute('tabindex', '-1'); icon.setAttribute('aria-hidden', 'true'); }); } function shareKeydown(event, type, review_id) { if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); share(type, review_id); } } function share(type, review_id) { var url = 'https://reviews.io/company-review/store/top3dshop.com/' + review_id; var shareLink = ''; switch(type) { case 'fb': shareLink = 'http://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(url); break; case 'tw': shareLink = 'http://twitter.com/intent/tweet?hashtags=REVIEWSio&text=' + encodeURIComponent(url); break; } // Open url in new window window.open(shareLink,'targetWindow','toolbar=no,location=0,status=no,menubar=no,scrollbars=yes,resizable=yes,width=640,height=480'); }; </script> <a class="controlButtons__btn controlButtons__btn--report" rel="nofollow" role="button" href='/profile-modal/report-review?id=17191479' title="Report this review" data-toggle='ajaxmodal' > <i class="ricon-flag"></i> <span class="textContainer">Report</span> </a> </div> <div class="Review__dateSource"> Posted 1 year ago </div> </div> </div> </div> </div> <div class="Review " data-review-id="17153775"> <div class="review-alert" style="display:none"> <div class="controlbtnFeedback"></div> </div> <div class="Review__header"> <a class="Review__author" href='/company-review/store/top3dshop.com/17153775'>Joel</a> <div class="Review__overallStars"> <div class="Review__overallStars__stars"> <div class="Rating Rating--md "> <div class="Rating__stars u-marginBottom--none"> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> </div> </div> </div> </div> <div class="Review__badge-container"> <a href="/profile-modal/unverified-reviews" data-toggle="ajaxmodal" class="Review__badge Review__badge--anonymous"> <div class="BadgeElement BadgeElement--unverified"> <div class="BadgeElement__icon ricon-info"></div> <div class="BadgeElement__text"> <div class="TextBody TextBody--xxxs TextBody--inline u-textLeft--all u-marginBottom--none"> Unverified Reviewer </div> </div> </div> </a> </div> <div class="Review__showDetails" id="review_show_details_17153775" style='display:none'> <a role="button" data-toggle="collapse" href="#details_17153775" class="showDetails__btn collapsed js-showDetails"> Show Details <i class="icon-arrow-down-thin-1-01"></i> </a> </div> </div> <div class="Review__content"> <div class="Review__container"> <div id='details_17153775' class="Review__subratings collapse" > </div> <span class="Review__body u-wordBreak--wordBreak"><span class="Review__quotationMark Review__quotationMark--left">“</span>Great customer support<span class="Review__quotationMark Review__quotationMark--right">”</span></span> <div class="Review__photos Review__photos--fullwidth" id='review_photos_17153775'> <div class='Review__photos'> </div> </div> <!-- <div class="Review__controlButtons" id="review_controls_17153775"> <div class="Review__dateSource"> Posted 1 year ago </div> </div> --> <style> a.controlButtons__btn.controlButtons__btn--helpful:focus, a.controlButtons__btn.controlButtons__btn--report:focus, span.controlButtons__btn.controlButtons__btn--share:focus { border: 2px solid black !important; outline: none; } span.controlButtons__btn.controlButtons__btn--share.isFocused .textContainer { max-width: 100px !important; margin-left: 3px !important; opacity: 1 !important; } span.shareIcon.shareIcon--fb:focus-visible, .shareIcon.shareIcon--tw:focus-visible { outline: 2px solid black !important; border: unset !important; margin: 2px !important; padding: 0 !important; } </style> <div class="Review__controlButtons"> <div class="controlButtons__inner"> <a class="controlButtons__btn controlButtons__btn--helpful" rel="nofollow" role="button" tabindex="0" aria-label="Mark review as helpful" onclick="flagReviewAsHelpful(17153775)" onkeydown="flagReviewAsHelpfulKeydown(event, 17153775)" title="Was this review helpful?" > <i class="ricon-thumbsup"></i> <span class="textContainer">Helpful</span> </a> <span id="shareOptionsContainer-17153775" class="controlButtons__btn controlButtons__btn--share" rel="nofollow" role="button" aria-label="Share on social media" aria-expanded="false" aria-controls="shareOptions-17153775" tabindex="0" data-review-id="17153775" onkeydown="toggleShareOptions(event, this)" > <i class="ricon-share"></i> <span id="shareOptions-17153775" class="textContainer"> <span class="shareIcon shareIcon--fb" onclick="share('fb', 17153775)" onkeydown="shareKeydown(event, 'fb', 17153775)" aria-label="Share on Facebook" aria-hidden="true" tabindex="-1" > <i class="ricon-facebook-favicon"></i> </span> <span class="shareIcon shareIcon--tw" onclick="share('tw', 17153775)" onkeydown="shareKeydown(event, 'tw', 17153775)" aria-label="Share on X" aria-hidden="true" tabindex="-1" > <i class="ricon-twitter-favicon"></i> </span> </span> </span> <script> function toggleShareOptions(event, element) { const reviewId = element.getAttribute('data-review-id'); const shareContainer = document.getElementById('shareOptionsContainer-' + reviewId); const shareOptions = document.getElementById('shareOptions-' + reviewId); const shareIcons = shareOptions.querySelectorAll('.shareIcon'); if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); showShareOptions(element, shareIcons); } // Hide share options when focus leaves the container shareContainer.addEventListener('focusout', function(e) { if (!shareOptions.contains(e.relatedTarget) && !shareContainer.contains(e.relatedTarget)) { hideShareOptions(element, shareIcons); } }); } function showShareOptions(element, shareIcons) { element.setAttribute('aria-expanded', 'true'); element.classList.add('isFocused'); shareIcons.forEach(icon => { icon.setAttribute('tabindex', '0'); icon.setAttribute('aria-hidden', 'false'); }); } function hideShareOptions(element, shareIcons) { element.classList.remove('isFocused'); element.setAttribute('aria-expanded', 'false'); shareIcons.forEach(icon => { icon.setAttribute('tabindex', '-1'); icon.setAttribute('aria-hidden', 'true'); }); } function shareKeydown(event, type, review_id) { if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); share(type, review_id); } } function share(type, review_id) { var url = 'https://reviews.io/company-review/store/top3dshop.com/' + review_id; var shareLink = ''; switch(type) { case 'fb': shareLink = 'http://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(url); break; case 'tw': shareLink = 'http://twitter.com/intent/tweet?hashtags=REVIEWSio&text=' + encodeURIComponent(url); break; } // Open url in new window window.open(shareLink,'targetWindow','toolbar=no,location=0,status=no,menubar=no,scrollbars=yes,resizable=yes,width=640,height=480'); }; </script> <a class="controlButtons__btn controlButtons__btn--report" rel="nofollow" role="button" href='/profile-modal/report-review?id=17153775' title="Report this review" data-toggle='ajaxmodal' > <i class="ricon-flag"></i> <span class="textContainer">Report</span> </a> </div> <div class="Review__dateSource"> Posted 1 year ago </div> </div> </div> </div> </div> <div class="Review " data-review-id="17102596"> <div class="review-alert" style="display:none"> <div class="controlbtnFeedback"></div> </div> <div class="Review__header"> <a class="Review__author" href='/company-review/store/top3dshop.com/17102596'>Beckett</a> <div class="Review__overallStars"> <div class="Review__overallStars__stars"> <div class="Rating Rating--md "> <div class="Rating__stars u-marginBottom--none"> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> </div> </div> </div> </div> <div class="Review__badge-container"> <a href="/profile-modal/unverified-reviews" data-toggle="ajaxmodal" class="Review__badge Review__badge--anonymous"> <div class="BadgeElement BadgeElement--unverified"> <div class="BadgeElement__icon ricon-info"></div> <div class="BadgeElement__text"> <div class="TextBody TextBody--xxxs TextBody--inline u-textLeft--all u-marginBottom--none"> Unverified Reviewer </div> </div> </div> </a> </div> <div class="Review__showDetails" id="review_show_details_17102596" style='display:none'> <a role="button" data-toggle="collapse" href="#details_17102596" class="showDetails__btn collapsed js-showDetails"> Show Details <i class="icon-arrow-down-thin-1-01"></i> </a> </div> </div> <div class="Review__content"> <div class="Review__container"> <div id='details_17102596' class="Review__subratings collapse" > </div> <span class="Review__body u-wordBreak--wordBreak"><span class="Review__quotationMark Review__quotationMark--left">“</span>Quick and reliable!<span class="Review__quotationMark Review__quotationMark--right">”</span></span> <div class="Review__photos Review__photos--fullwidth" id='review_photos_17102596'> <div class='Review__photos'> </div> </div> <!-- <div class="Review__controlButtons" id="review_controls_17102596"> <div class="Review__dateSource"> Posted 1 year ago </div> </div> --> <style> a.controlButtons__btn.controlButtons__btn--helpful:focus, a.controlButtons__btn.controlButtons__btn--report:focus, span.controlButtons__btn.controlButtons__btn--share:focus { border: 2px solid black !important; outline: none; } span.controlButtons__btn.controlButtons__btn--share.isFocused .textContainer { max-width: 100px !important; margin-left: 3px !important; opacity: 1 !important; } span.shareIcon.shareIcon--fb:focus-visible, .shareIcon.shareIcon--tw:focus-visible { outline: 2px solid black !important; border: unset !important; margin: 2px !important; padding: 0 !important; } </style> <div class="Review__controlButtons"> <div class="controlButtons__inner"> <a class="controlButtons__btn controlButtons__btn--helpful" rel="nofollow" role="button" tabindex="0" aria-label="Mark review as helpful" onclick="flagReviewAsHelpful(17102596)" onkeydown="flagReviewAsHelpfulKeydown(event, 17102596)" title="Was this review helpful?" > <i class="ricon-thumbsup"></i> <span class="textContainer">Helpful</span> </a> <span id="shareOptionsContainer-17102596" class="controlButtons__btn controlButtons__btn--share" rel="nofollow" role="button" aria-label="Share on social media" aria-expanded="false" aria-controls="shareOptions-17102596" tabindex="0" data-review-id="17102596" onkeydown="toggleShareOptions(event, this)" > <i class="ricon-share"></i> <span id="shareOptions-17102596" class="textContainer"> <span class="shareIcon shareIcon--fb" onclick="share('fb', 17102596)" onkeydown="shareKeydown(event, 'fb', 17102596)" aria-label="Share on Facebook" aria-hidden="true" tabindex="-1" > <i class="ricon-facebook-favicon"></i> </span> <span class="shareIcon shareIcon--tw" onclick="share('tw', 17102596)" onkeydown="shareKeydown(event, 'tw', 17102596)" aria-label="Share on X" aria-hidden="true" tabindex="-1" > <i class="ricon-twitter-favicon"></i> </span> </span> </span> <script> function toggleShareOptions(event, element) { const reviewId = element.getAttribute('data-review-id'); const shareContainer = document.getElementById('shareOptionsContainer-' + reviewId); const shareOptions = document.getElementById('shareOptions-' + reviewId); const shareIcons = shareOptions.querySelectorAll('.shareIcon'); if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); showShareOptions(element, shareIcons); } // Hide share options when focus leaves the container shareContainer.addEventListener('focusout', function(e) { if (!shareOptions.contains(e.relatedTarget) && !shareContainer.contains(e.relatedTarget)) { hideShareOptions(element, shareIcons); } }); } function showShareOptions(element, shareIcons) { element.setAttribute('aria-expanded', 'true'); element.classList.add('isFocused'); shareIcons.forEach(icon => { icon.setAttribute('tabindex', '0'); icon.setAttribute('aria-hidden', 'false'); }); } function hideShareOptions(element, shareIcons) { element.classList.remove('isFocused'); element.setAttribute('aria-expanded', 'false'); shareIcons.forEach(icon => { icon.setAttribute('tabindex', '-1'); icon.setAttribute('aria-hidden', 'true'); }); } function shareKeydown(event, type, review_id) { if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); share(type, review_id); } } function share(type, review_id) { var url = 'https://reviews.io/company-review/store/top3dshop.com/' + review_id; var shareLink = ''; switch(type) { case 'fb': shareLink = 'http://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(url); break; case 'tw': shareLink = 'http://twitter.com/intent/tweet?hashtags=REVIEWSio&text=' + encodeURIComponent(url); break; } // Open url in new window window.open(shareLink,'targetWindow','toolbar=no,location=0,status=no,menubar=no,scrollbars=yes,resizable=yes,width=640,height=480'); }; </script> <a class="controlButtons__btn controlButtons__btn--report" rel="nofollow" role="button" href='/profile-modal/report-review?id=17102596' title="Report this review" data-toggle='ajaxmodal' > <i class="ricon-flag"></i> <span class="textContainer">Report</span> </a> </div> <div class="Review__dateSource"> Posted 1 year ago </div> </div> </div> </div> </div> <div class="Review " data-review-id="17034456"> <div class="review-alert" style="display:none"> <div class="controlbtnFeedback"></div> </div> <div class="Review__header"> <a class="Review__author" href='/company-review/store/top3dshop.com/17034456'>Grant</a> <div class="Review__overallStars"> <div class="Review__overallStars__stars"> <div class="Rating Rating--md "> <div class="Rating__stars u-marginBottom--none"> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> </div> </div> </div> </div> <div class="Review__badge-container"> <a href="/profile-modal/unverified-reviews" data-toggle="ajaxmodal" class="Review__badge Review__badge--anonymous"> <div class="BadgeElement BadgeElement--unverified"> <div class="BadgeElement__icon ricon-info"></div> <div class="BadgeElement__text"> <div class="TextBody TextBody--xxxs TextBody--inline u-textLeft--all u-marginBottom--none"> Unverified Reviewer </div> </div> </div> </a> </div> <div class="Review__showDetails" id="review_show_details_17034456" style='display:none'> <a role="button" data-toggle="collapse" href="#details_17034456" class="showDetails__btn collapsed js-showDetails"> Show Details <i class="icon-arrow-down-thin-1-01"></i> </a> </div> </div> <div class="Review__content"> <div class="Review__container"> <div id='details_17034456' class="Review__subratings collapse" > </div> <span class="Review__body u-wordBreak--wordBreak"><span class="Review__quotationMark Review__quotationMark--left">“</span>Top 3D Shop indeed, one of my favourite suppliers.<span class="Review__quotationMark Review__quotationMark--right">”</span></span> <div class="Review__photos Review__photos--fullwidth" id='review_photos_17034456'> <div class='Review__photos'> </div> </div> <!-- <div class="Review__controlButtons" id="review_controls_17034456"> <div class="Review__dateSource"> Posted 2 years ago </div> </div> --> <style> a.controlButtons__btn.controlButtons__btn--helpful:focus, a.controlButtons__btn.controlButtons__btn--report:focus, span.controlButtons__btn.controlButtons__btn--share:focus { border: 2px solid black !important; outline: none; } span.controlButtons__btn.controlButtons__btn--share.isFocused .textContainer { max-width: 100px !important; margin-left: 3px !important; opacity: 1 !important; } span.shareIcon.shareIcon--fb:focus-visible, .shareIcon.shareIcon--tw:focus-visible { outline: 2px solid black !important; border: unset !important; margin: 2px !important; padding: 0 !important; } </style> <div class="Review__controlButtons"> <div class="controlButtons__inner"> <a class="controlButtons__btn controlButtons__btn--helpful" rel="nofollow" role="button" tabindex="0" aria-label="Mark review as helpful" onclick="flagReviewAsHelpful(17034456)" onkeydown="flagReviewAsHelpfulKeydown(event, 17034456)" title="Was this review helpful?" > <i class="ricon-thumbsup"></i> <span class="textContainer">Helpful</span> </a> <span id="shareOptionsContainer-17034456" class="controlButtons__btn controlButtons__btn--share" rel="nofollow" role="button" aria-label="Share on social media" aria-expanded="false" aria-controls="shareOptions-17034456" tabindex="0" data-review-id="17034456" onkeydown="toggleShareOptions(event, this)" > <i class="ricon-share"></i> <span id="shareOptions-17034456" class="textContainer"> <span class="shareIcon shareIcon--fb" onclick="share('fb', 17034456)" onkeydown="shareKeydown(event, 'fb', 17034456)" aria-label="Share on Facebook" aria-hidden="true" tabindex="-1" > <i class="ricon-facebook-favicon"></i> </span> <span class="shareIcon shareIcon--tw" onclick="share('tw', 17034456)" onkeydown="shareKeydown(event, 'tw', 17034456)" aria-label="Share on X" aria-hidden="true" tabindex="-1" > <i class="ricon-twitter-favicon"></i> </span> </span> </span> <script> function toggleShareOptions(event, element) { const reviewId = element.getAttribute('data-review-id'); const shareContainer = document.getElementById('shareOptionsContainer-' + reviewId); const shareOptions = document.getElementById('shareOptions-' + reviewId); const shareIcons = shareOptions.querySelectorAll('.shareIcon'); if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); showShareOptions(element, shareIcons); } // Hide share options when focus leaves the container shareContainer.addEventListener('focusout', function(e) { if (!shareOptions.contains(e.relatedTarget) && !shareContainer.contains(e.relatedTarget)) { hideShareOptions(element, shareIcons); } }); } function showShareOptions(element, shareIcons) { element.setAttribute('aria-expanded', 'true'); element.classList.add('isFocused'); shareIcons.forEach(icon => { icon.setAttribute('tabindex', '0'); icon.setAttribute('aria-hidden', 'false'); }); } function hideShareOptions(element, shareIcons) { element.classList.remove('isFocused'); element.setAttribute('aria-expanded', 'false'); shareIcons.forEach(icon => { icon.setAttribute('tabindex', '-1'); icon.setAttribute('aria-hidden', 'true'); }); } function shareKeydown(event, type, review_id) { if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); share(type, review_id); } } function share(type, review_id) { var url = 'https://reviews.io/company-review/store/top3dshop.com/' + review_id; var shareLink = ''; switch(type) { case 'fb': shareLink = 'http://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(url); break; case 'tw': shareLink = 'http://twitter.com/intent/tweet?hashtags=REVIEWSio&text=' + encodeURIComponent(url); break; } // Open url in new window window.open(shareLink,'targetWindow','toolbar=no,location=0,status=no,menubar=no,scrollbars=yes,resizable=yes,width=640,height=480'); }; </script> <a class="controlButtons__btn controlButtons__btn--report" rel="nofollow" role="button" href='/profile-modal/report-review?id=17034456' title="Report this review" data-toggle='ajaxmodal' > <i class="ricon-flag"></i> <span class="textContainer">Report</span> </a> </div> <div class="Review__dateSource"> Posted 2 years ago </div> </div> </div> </div> </div> <div class="Review " data-review-id="16963114"> <div class="review-alert" style="display:none"> <div class="controlbtnFeedback"></div> </div> <div class="Review__header"> <a class="Review__author" href='/company-review/store/top3dshop.com/16963114'>Oscar</a> <div class="Review__overallStars"> <div class="Review__overallStars__stars"> <div class="Rating Rating--md "> <div class="Rating__stars u-marginBottom--none"> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> </div> </div> </div> </div> <div class="Review__badge-container"> <a href="/profile-modal/unverified-reviews" data-toggle="ajaxmodal" class="Review__badge Review__badge--anonymous"> <div class="BadgeElement BadgeElement--unverified"> <div class="BadgeElement__icon ricon-info"></div> <div class="BadgeElement__text"> <div class="TextBody TextBody--xxxs TextBody--inline u-textLeft--all u-marginBottom--none"> Unverified Reviewer </div> </div> </div> </a> </div> <div class="Review__showDetails" id="review_show_details_16963114" style='display:none'> <a role="button" data-toggle="collapse" href="#details_16963114" class="showDetails__btn collapsed js-showDetails"> Show Details <i class="icon-arrow-down-thin-1-01"></i> </a> </div> </div> <div class="Review__content"> <div class="Review__container"> <div id='details_16963114' class="Review__subratings collapse" > </div> <span class="Review__body u-wordBreak--wordBreak"><span class="Review__quotationMark Review__quotationMark--left">“</span>Good customer service, they didn't push a sale on me, but invested me in making sure I am getting the right product for my projects.<span class="Review__quotationMark Review__quotationMark--right">”</span></span> <div class="Review__photos Review__photos--fullwidth" id='review_photos_16963114'> <div class='Review__photos'> </div> </div> <!-- <div class="Review__controlButtons" id="review_controls_16963114"> <div class="Review__dateSource"> Posted 2 years ago </div> </div> --> <style> a.controlButtons__btn.controlButtons__btn--helpful:focus, a.controlButtons__btn.controlButtons__btn--report:focus, span.controlButtons__btn.controlButtons__btn--share:focus { border: 2px solid black !important; outline: none; } span.controlButtons__btn.controlButtons__btn--share.isFocused .textContainer { max-width: 100px !important; margin-left: 3px !important; opacity: 1 !important; } span.shareIcon.shareIcon--fb:focus-visible, .shareIcon.shareIcon--tw:focus-visible { outline: 2px solid black !important; border: unset !important; margin: 2px !important; padding: 0 !important; } </style> <div class="Review__controlButtons"> <div class="controlButtons__inner"> <a class="controlButtons__btn controlButtons__btn--helpful" rel="nofollow" role="button" tabindex="0" aria-label="Mark review as helpful" onclick="flagReviewAsHelpful(16963114)" onkeydown="flagReviewAsHelpfulKeydown(event, 16963114)" title="Was this review helpful?" > <i class="ricon-thumbsup"></i> <span class="textContainer">Helpful</span> </a> <span id="shareOptionsContainer-16963114" class="controlButtons__btn controlButtons__btn--share" rel="nofollow" role="button" aria-label="Share on social media" aria-expanded="false" aria-controls="shareOptions-16963114" tabindex="0" data-review-id="16963114" onkeydown="toggleShareOptions(event, this)" > <i class="ricon-share"></i> <span id="shareOptions-16963114" class="textContainer"> <span class="shareIcon shareIcon--fb" onclick="share('fb', 16963114)" onkeydown="shareKeydown(event, 'fb', 16963114)" aria-label="Share on Facebook" aria-hidden="true" tabindex="-1" > <i class="ricon-facebook-favicon"></i> </span> <span class="shareIcon shareIcon--tw" onclick="share('tw', 16963114)" onkeydown="shareKeydown(event, 'tw', 16963114)" aria-label="Share on X" aria-hidden="true" tabindex="-1" > <i class="ricon-twitter-favicon"></i> </span> </span> </span> <script> function toggleShareOptions(event, element) { const reviewId = element.getAttribute('data-review-id'); const shareContainer = document.getElementById('shareOptionsContainer-' + reviewId); const shareOptions = document.getElementById('shareOptions-' + reviewId); const shareIcons = shareOptions.querySelectorAll('.shareIcon'); if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); showShareOptions(element, shareIcons); } // Hide share options when focus leaves the container shareContainer.addEventListener('focusout', function(e) { if (!shareOptions.contains(e.relatedTarget) && !shareContainer.contains(e.relatedTarget)) { hideShareOptions(element, shareIcons); } }); } function showShareOptions(element, shareIcons) { element.setAttribute('aria-expanded', 'true'); element.classList.add('isFocused'); shareIcons.forEach(icon => { icon.setAttribute('tabindex', '0'); icon.setAttribute('aria-hidden', 'false'); }); } function hideShareOptions(element, shareIcons) { element.classList.remove('isFocused'); element.setAttribute('aria-expanded', 'false'); shareIcons.forEach(icon => { icon.setAttribute('tabindex', '-1'); icon.setAttribute('aria-hidden', 'true'); }); } function shareKeydown(event, type, review_id) { if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); share(type, review_id); } } function share(type, review_id) { var url = 'https://reviews.io/company-review/store/top3dshop.com/' + review_id; var shareLink = ''; switch(type) { case 'fb': shareLink = 'http://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(url); break; case 'tw': shareLink = 'http://twitter.com/intent/tweet?hashtags=REVIEWSio&text=' + encodeURIComponent(url); break; } // Open url in new window window.open(shareLink,'targetWindow','toolbar=no,location=0,status=no,menubar=no,scrollbars=yes,resizable=yes,width=640,height=480'); }; </script> <a class="controlButtons__btn controlButtons__btn--report" rel="nofollow" role="button" href='/profile-modal/report-review?id=16963114' title="Report this review" data-toggle='ajaxmodal' > <i class="ricon-flag"></i> <span class="textContainer">Report</span> </a> </div> <div class="Review__dateSource"> Posted 2 years ago </div> </div> </div> </div> </div> <div class="Review " data-review-id="16920940"> <div class="review-alert" style="display:none"> <div class="controlbtnFeedback"></div> </div> <div class="Review__header"> <a class="Review__author" href='/company-review/store/top3dshop.com/16920940'>Sincere</a> <div class="Review__overallStars"> <div class="Review__overallStars__stars"> <div class="Rating Rating--md "> <div class="Rating__stars u-marginBottom--none"> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> </div> </div> </div> </div> <div class="Review__badge-container"> <a href="/profile-modal/unverified-reviews" data-toggle="ajaxmodal" class="Review__badge Review__badge--anonymous"> <div class="BadgeElement BadgeElement--unverified"> <div class="BadgeElement__icon ricon-info"></div> <div class="BadgeElement__text"> <div class="TextBody TextBody--xxxs TextBody--inline u-textLeft--all u-marginBottom--none"> Unverified Reviewer </div> </div> </div> </a> </div> <div class="Review__showDetails" id="review_show_details_16920940" style='display:none'> <a role="button" data-toggle="collapse" href="#details_16920940" class="showDetails__btn collapsed js-showDetails"> Show Details <i class="icon-arrow-down-thin-1-01"></i> </a> </div> </div> <div class="Review__content"> <div class="Review__container"> <div id='details_16920940' class="Review__subratings collapse" > </div> <span class="Review__body u-wordBreak--wordBreak"><span class="Review__quotationMark Review__quotationMark--left">“</span>Super fast and no problems at all so far.<span class="Review__quotationMark Review__quotationMark--right">”</span></span> <div class="Review__photos Review__photos--fullwidth" id='review_photos_16920940'> <div class='Review__photos'> </div> </div> <!-- <div class="Review__controlButtons" id="review_controls_16920940"> <div class="Review__dateSource"> Posted 2 years ago </div> </div> --> <style> a.controlButtons__btn.controlButtons__btn--helpful:focus, a.controlButtons__btn.controlButtons__btn--report:focus, span.controlButtons__btn.controlButtons__btn--share:focus { border: 2px solid black !important; outline: none; } span.controlButtons__btn.controlButtons__btn--share.isFocused .textContainer { max-width: 100px !important; margin-left: 3px !important; opacity: 1 !important; } span.shareIcon.shareIcon--fb:focus-visible, .shareIcon.shareIcon--tw:focus-visible { outline: 2px solid black !important; border: unset !important; margin: 2px !important; padding: 0 !important; } </style> <div class="Review__controlButtons"> <div class="controlButtons__inner"> <a class="controlButtons__btn controlButtons__btn--helpful" rel="nofollow" role="button" tabindex="0" aria-label="Mark review as helpful" onclick="flagReviewAsHelpful(16920940)" onkeydown="flagReviewAsHelpfulKeydown(event, 16920940)" title="Was this review helpful?" > <i class="ricon-thumbsup"></i> <span class="textContainer">Helpful</span> </a> <span id="shareOptionsContainer-16920940" class="controlButtons__btn controlButtons__btn--share" rel="nofollow" role="button" aria-label="Share on social media" aria-expanded="false" aria-controls="shareOptions-16920940" tabindex="0" data-review-id="16920940" onkeydown="toggleShareOptions(event, this)" > <i class="ricon-share"></i> <span id="shareOptions-16920940" class="textContainer"> <span class="shareIcon shareIcon--fb" onclick="share('fb', 16920940)" onkeydown="shareKeydown(event, 'fb', 16920940)" aria-label="Share on Facebook" aria-hidden="true" tabindex="-1" > <i class="ricon-facebook-favicon"></i> </span> <span class="shareIcon shareIcon--tw" onclick="share('tw', 16920940)" onkeydown="shareKeydown(event, 'tw', 16920940)" aria-label="Share on X" aria-hidden="true" tabindex="-1" > <i class="ricon-twitter-favicon"></i> </span> </span> </span> <script> function toggleShareOptions(event, element) { const reviewId = element.getAttribute('data-review-id'); const shareContainer = document.getElementById('shareOptionsContainer-' + reviewId); const shareOptions = document.getElementById('shareOptions-' + reviewId); const shareIcons = shareOptions.querySelectorAll('.shareIcon'); if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); showShareOptions(element, shareIcons); } // Hide share options when focus leaves the container shareContainer.addEventListener('focusout', function(e) { if (!shareOptions.contains(e.relatedTarget) && !shareContainer.contains(e.relatedTarget)) { hideShareOptions(element, shareIcons); } }); } function showShareOptions(element, shareIcons) { element.setAttribute('aria-expanded', 'true'); element.classList.add('isFocused'); shareIcons.forEach(icon => { icon.setAttribute('tabindex', '0'); icon.setAttribute('aria-hidden', 'false'); }); } function hideShareOptions(element, shareIcons) { element.classList.remove('isFocused'); element.setAttribute('aria-expanded', 'false'); shareIcons.forEach(icon => { icon.setAttribute('tabindex', '-1'); icon.setAttribute('aria-hidden', 'true'); }); } function shareKeydown(event, type, review_id) { if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); share(type, review_id); } } function share(type, review_id) { var url = 'https://reviews.io/company-review/store/top3dshop.com/' + review_id; var shareLink = ''; switch(type) { case 'fb': shareLink = 'http://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(url); break; case 'tw': shareLink = 'http://twitter.com/intent/tweet?hashtags=REVIEWSio&text=' + encodeURIComponent(url); break; } // Open url in new window window.open(shareLink,'targetWindow','toolbar=no,location=0,status=no,menubar=no,scrollbars=yes,resizable=yes,width=640,height=480'); }; </script> <a class="controlButtons__btn controlButtons__btn--report" rel="nofollow" role="button" href='/profile-modal/report-review?id=16920940' title="Report this review" data-toggle='ajaxmodal' > <i class="ricon-flag"></i> <span class="textContainer">Report</span> </a> </div> <div class="Review__dateSource"> Posted 2 years ago </div> </div> </div> </div> </div> <div class="Review " data-review-id="16873937"> <div class="review-alert" style="display:none"> <div class="controlbtnFeedback"></div> </div> <div class="Review__header"> <a class="Review__author" href='/company-review/store/top3dshop.com/16873937'>Brantley</a> <div class="Review__overallStars"> <div class="Review__overallStars__stars"> <div class="Rating Rating--md "> <div class="Rating__stars u-marginBottom--none"> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> </div> </div> </div> </div> <div class="Review__badge-container"> <a href="/profile-modal/unverified-reviews" data-toggle="ajaxmodal" class="Review__badge Review__badge--anonymous"> <div class="BadgeElement BadgeElement--unverified"> <div class="BadgeElement__icon ricon-info"></div> <div class="BadgeElement__text"> <div class="TextBody TextBody--xxxs TextBody--inline u-textLeft--all u-marginBottom--none"> Unverified Reviewer </div> </div> </div> </a> </div> <div class="Review__showDetails" id="review_show_details_16873937" style='display:none'> <a role="button" data-toggle="collapse" href="#details_16873937" class="showDetails__btn collapsed js-showDetails"> Show Details <i class="icon-arrow-down-thin-1-01"></i> </a> </div> </div> <div class="Review__content"> <div class="Review__container"> <div id='details_16873937' class="Review__subratings collapse" > </div> <span class="Review__body u-wordBreak--wordBreak"><span class="Review__quotationMark Review__quotationMark--left">“</span>Overall happy with the experience. Delivery was delayed for 2 weeks, but they kept me informed throughout the process and offered free training as compensation. Even though we didn't get it on time, they really cared about me as a customer.<span class="Review__quotationMark Review__quotationMark--right">”</span></span> <div class="Review__photos Review__photos--fullwidth" id='review_photos_16873937'> <div class='Review__photos'> </div> </div> <!-- <div class="Review__controlButtons" id="review_controls_16873937"> <div class="Review__dateSource"> Posted 2 years ago </div> </div> --> <style> a.controlButtons__btn.controlButtons__btn--helpful:focus, a.controlButtons__btn.controlButtons__btn--report:focus, span.controlButtons__btn.controlButtons__btn--share:focus { border: 2px solid black !important; outline: none; } span.controlButtons__btn.controlButtons__btn--share.isFocused .textContainer { max-width: 100px !important; margin-left: 3px !important; opacity: 1 !important; } span.shareIcon.shareIcon--fb:focus-visible, .shareIcon.shareIcon--tw:focus-visible { outline: 2px solid black !important; border: unset !important; margin: 2px !important; padding: 0 !important; } </style> <div class="Review__controlButtons"> <div class="controlButtons__inner"> <a class="controlButtons__btn controlButtons__btn--helpful" rel="nofollow" role="button" tabindex="0" aria-label="Mark review as helpful" onclick="flagReviewAsHelpful(16873937)" onkeydown="flagReviewAsHelpfulKeydown(event, 16873937)" title="Was this review helpful?" > <i class="ricon-thumbsup"></i> <span class="textContainer">Helpful</span> </a> <span id="shareOptionsContainer-16873937" class="controlButtons__btn controlButtons__btn--share" rel="nofollow" role="button" aria-label="Share on social media" aria-expanded="false" aria-controls="shareOptions-16873937" tabindex="0" data-review-id="16873937" onkeydown="toggleShareOptions(event, this)" > <i class="ricon-share"></i> <span id="shareOptions-16873937" class="textContainer"> <span class="shareIcon shareIcon--fb" onclick="share('fb', 16873937)" onkeydown="shareKeydown(event, 'fb', 16873937)" aria-label="Share on Facebook" aria-hidden="true" tabindex="-1" > <i class="ricon-facebook-favicon"></i> </span> <span class="shareIcon shareIcon--tw" onclick="share('tw', 16873937)" onkeydown="shareKeydown(event, 'tw', 16873937)" aria-label="Share on X" aria-hidden="true" tabindex="-1" > <i class="ricon-twitter-favicon"></i> </span> </span> </span> <script> function toggleShareOptions(event, element) { const reviewId = element.getAttribute('data-review-id'); const shareContainer = document.getElementById('shareOptionsContainer-' + reviewId); const shareOptions = document.getElementById('shareOptions-' + reviewId); const shareIcons = shareOptions.querySelectorAll('.shareIcon'); if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); showShareOptions(element, shareIcons); } // Hide share options when focus leaves the container shareContainer.addEventListener('focusout', function(e) { if (!shareOptions.contains(e.relatedTarget) && !shareContainer.contains(e.relatedTarget)) { hideShareOptions(element, shareIcons); } }); } function showShareOptions(element, shareIcons) { element.setAttribute('aria-expanded', 'true'); element.classList.add('isFocused'); shareIcons.forEach(icon => { icon.setAttribute('tabindex', '0'); icon.setAttribute('aria-hidden', 'false'); }); } function hideShareOptions(element, shareIcons) { element.classList.remove('isFocused'); element.setAttribute('aria-expanded', 'false'); shareIcons.forEach(icon => { icon.setAttribute('tabindex', '-1'); icon.setAttribute('aria-hidden', 'true'); }); } function shareKeydown(event, type, review_id) { if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); share(type, review_id); } } function share(type, review_id) { var url = 'https://reviews.io/company-review/store/top3dshop.com/' + review_id; var shareLink = ''; switch(type) { case 'fb': shareLink = 'http://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(url); break; case 'tw': shareLink = 'http://twitter.com/intent/tweet?hashtags=REVIEWSio&text=' + encodeURIComponent(url); break; } // Open url in new window window.open(shareLink,'targetWindow','toolbar=no,location=0,status=no,menubar=no,scrollbars=yes,resizable=yes,width=640,height=480'); }; </script> <a class="controlButtons__btn controlButtons__btn--report" rel="nofollow" role="button" href='/profile-modal/report-review?id=16873937' title="Report this review" data-toggle='ajaxmodal' > <i class="ricon-flag"></i> <span class="textContainer">Report</span> </a> </div> <div class="Review__dateSource"> Posted 2 years ago </div> </div> </div> </div> </div> <div class="Review " data-review-id="16708205"> <div class="review-alert" style="display:none"> <div class="controlbtnFeedback"></div> </div> <div class="Review__header"> <a class="Review__author" href='/company-review/store/top3dshop.com/16708205'>Jeremy</a> <div class="Review__overallStars"> <div class="Review__overallStars__stars"> <div class="Rating Rating--md "> <div class="Rating__stars u-marginBottom--none"> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> </div> </div> </div> </div> <div class="Review__badge-container"> <a href="/profile-modal/unverified-reviews" data-toggle="ajaxmodal" class="Review__badge Review__badge--anonymous"> <div class="BadgeElement BadgeElement--unverified"> <div class="BadgeElement__icon ricon-info"></div> <div class="BadgeElement__text"> <div class="TextBody TextBody--xxxs TextBody--inline u-textLeft--all u-marginBottom--none"> Unverified Reviewer </div> </div> </div> </a> </div> <div class="Review__showDetails" id="review_show_details_16708205" style='display:none'> <a role="button" data-toggle="collapse" href="#details_16708205" class="showDetails__btn collapsed js-showDetails"> Show Details <i class="icon-arrow-down-thin-1-01"></i> </a> </div> </div> <div class="Review__content"> <div class="Review__container"> <div id='details_16708205' class="Review__subratings collapse" > </div> <span class="Review__body u-wordBreak--wordBreak"><span class="Review__quotationMark Review__quotationMark--left">“</span>Fast delivery and a very responsive support department. I recommend them for their exellent service.<span class="Review__quotationMark Review__quotationMark--right">”</span></span> <div class="Review__photos Review__photos--fullwidth" id='review_photos_16708205'> <div class='Review__photos'> </div> </div> <!-- <div class="Review__controlButtons" id="review_controls_16708205"> <div class="Review__dateSource"> Posted 2 years ago </div> </div> --> <style> a.controlButtons__btn.controlButtons__btn--helpful:focus, a.controlButtons__btn.controlButtons__btn--report:focus, span.controlButtons__btn.controlButtons__btn--share:focus { border: 2px solid black !important; outline: none; } span.controlButtons__btn.controlButtons__btn--share.isFocused .textContainer { max-width: 100px !important; margin-left: 3px !important; opacity: 1 !important; } span.shareIcon.shareIcon--fb:focus-visible, .shareIcon.shareIcon--tw:focus-visible { outline: 2px solid black !important; border: unset !important; margin: 2px !important; padding: 0 !important; } </style> <div class="Review__controlButtons"> <div class="controlButtons__inner"> <a class="controlButtons__btn controlButtons__btn--helpful" rel="nofollow" role="button" tabindex="0" aria-label="Mark review as helpful" onclick="flagReviewAsHelpful(16708205)" onkeydown="flagReviewAsHelpfulKeydown(event, 16708205)" title="Was this review helpful?" > <i class="ricon-thumbsup"></i> <span class="textContainer">Helpful</span> </a> <span id="shareOptionsContainer-16708205" class="controlButtons__btn controlButtons__btn--share" rel="nofollow" role="button" aria-label="Share on social media" aria-expanded="false" aria-controls="shareOptions-16708205" tabindex="0" data-review-id="16708205" onkeydown="toggleShareOptions(event, this)" > <i class="ricon-share"></i> <span id="shareOptions-16708205" class="textContainer"> <span class="shareIcon shareIcon--fb" onclick="share('fb', 16708205)" onkeydown="shareKeydown(event, 'fb', 16708205)" aria-label="Share on Facebook" aria-hidden="true" tabindex="-1" > <i class="ricon-facebook-favicon"></i> </span> <span class="shareIcon shareIcon--tw" onclick="share('tw', 16708205)" onkeydown="shareKeydown(event, 'tw', 16708205)" aria-label="Share on X" aria-hidden="true" tabindex="-1" > <i class="ricon-twitter-favicon"></i> </span> </span> </span> <script> function toggleShareOptions(event, element) { const reviewId = element.getAttribute('data-review-id'); const shareContainer = document.getElementById('shareOptionsContainer-' + reviewId); const shareOptions = document.getElementById('shareOptions-' + reviewId); const shareIcons = shareOptions.querySelectorAll('.shareIcon'); if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); showShareOptions(element, shareIcons); } // Hide share options when focus leaves the container shareContainer.addEventListener('focusout', function(e) { if (!shareOptions.contains(e.relatedTarget) && !shareContainer.contains(e.relatedTarget)) { hideShareOptions(element, shareIcons); } }); } function showShareOptions(element, shareIcons) { element.setAttribute('aria-expanded', 'true'); element.classList.add('isFocused'); shareIcons.forEach(icon => { icon.setAttribute('tabindex', '0'); icon.setAttribute('aria-hidden', 'false'); }); } function hideShareOptions(element, shareIcons) { element.classList.remove('isFocused'); element.setAttribute('aria-expanded', 'false'); shareIcons.forEach(icon => { icon.setAttribute('tabindex', '-1'); icon.setAttribute('aria-hidden', 'true'); }); } function shareKeydown(event, type, review_id) { if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); share(type, review_id); } } function share(type, review_id) { var url = 'https://reviews.io/company-review/store/top3dshop.com/' + review_id; var shareLink = ''; switch(type) { case 'fb': shareLink = 'http://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(url); break; case 'tw': shareLink = 'http://twitter.com/intent/tweet?hashtags=REVIEWSio&text=' + encodeURIComponent(url); break; } // Open url in new window window.open(shareLink,'targetWindow','toolbar=no,location=0,status=no,menubar=no,scrollbars=yes,resizable=yes,width=640,height=480'); }; </script> <a class="controlButtons__btn controlButtons__btn--report" rel="nofollow" role="button" href='/profile-modal/report-review?id=16708205' title="Report this review" data-toggle='ajaxmodal' > <i class="ricon-flag"></i> <span class="textContainer">Report</span> </a> </div> <div class="Review__dateSource"> Posted 2 years ago </div> </div> </div> </div> </div> <div class="Review " data-review-id="16688002"> <div class="review-alert" style="display:none"> <div class="controlbtnFeedback"></div> </div> <div class="Review__header"> <a class="Review__author" href='/company-review/store/top3dshop.com/16688002'>Preston</a> <div class="Review__overallStars"> <div class="Review__overallStars__stars"> <div class="Rating Rating--md "> <div class="Rating__stars u-marginBottom--none"> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> </div> </div> </div> </div> <div class="Review__badge-container"> <a href="/profile-modal/unverified-reviews" data-toggle="ajaxmodal" class="Review__badge Review__badge--anonymous"> <div class="BadgeElement BadgeElement--unverified"> <div class="BadgeElement__icon ricon-info"></div> <div class="BadgeElement__text"> <div class="TextBody TextBody--xxxs TextBody--inline u-textLeft--all u-marginBottom--none"> Unverified Reviewer </div> </div> </div> </a> </div> <div class="Review__showDetails" id="review_show_details_16688002" style='display:none'> <a role="button" data-toggle="collapse" href="#details_16688002" class="showDetails__btn collapsed js-showDetails"> Show Details <i class="icon-arrow-down-thin-1-01"></i> </a> </div> </div> <div class="Review__content"> <div class="Review__container"> <div id='details_16688002' class="Review__subratings collapse" > </div> <span class="Review__body u-wordBreak--wordBreak"><span class="Review__quotationMark Review__quotationMark--left">“</span>Fast delivery, PO provided on Wednesday, printers received on Friday<span class="Review__quotationMark Review__quotationMark--right">”</span></span> <div class="Review__photos Review__photos--fullwidth" id='review_photos_16688002'> <div class='Review__photos'> </div> </div> <!-- <div class="Review__controlButtons" id="review_controls_16688002"> <div class="Review__dateSource"> Posted 2 years ago </div> </div> --> <style> a.controlButtons__btn.controlButtons__btn--helpful:focus, a.controlButtons__btn.controlButtons__btn--report:focus, span.controlButtons__btn.controlButtons__btn--share:focus { border: 2px solid black !important; outline: none; } span.controlButtons__btn.controlButtons__btn--share.isFocused .textContainer { max-width: 100px !important; margin-left: 3px !important; opacity: 1 !important; } span.shareIcon.shareIcon--fb:focus-visible, .shareIcon.shareIcon--tw:focus-visible { outline: 2px solid black !important; border: unset !important; margin: 2px !important; padding: 0 !important; } </style> <div class="Review__controlButtons"> <div class="controlButtons__inner"> <a class="controlButtons__btn controlButtons__btn--helpful" rel="nofollow" role="button" tabindex="0" aria-label="Mark review as helpful" onclick="flagReviewAsHelpful(16688002)" onkeydown="flagReviewAsHelpfulKeydown(event, 16688002)" title="Was this review helpful?" > <i class="ricon-thumbsup"></i> <span class="textContainer">Helpful</span> </a> <span id="shareOptionsContainer-16688002" class="controlButtons__btn controlButtons__btn--share" rel="nofollow" role="button" aria-label="Share on social media" aria-expanded="false" aria-controls="shareOptions-16688002" tabindex="0" data-review-id="16688002" onkeydown="toggleShareOptions(event, this)" > <i class="ricon-share"></i> <span id="shareOptions-16688002" class="textContainer"> <span class="shareIcon shareIcon--fb" onclick="share('fb', 16688002)" onkeydown="shareKeydown(event, 'fb', 16688002)" aria-label="Share on Facebook" aria-hidden="true" tabindex="-1" > <i class="ricon-facebook-favicon"></i> </span> <span class="shareIcon shareIcon--tw" onclick="share('tw', 16688002)" onkeydown="shareKeydown(event, 'tw', 16688002)" aria-label="Share on X" aria-hidden="true" tabindex="-1" > <i class="ricon-twitter-favicon"></i> </span> </span> </span> <script> function toggleShareOptions(event, element) { const reviewId = element.getAttribute('data-review-id'); const shareContainer = document.getElementById('shareOptionsContainer-' + reviewId); const shareOptions = document.getElementById('shareOptions-' + reviewId); const shareIcons = shareOptions.querySelectorAll('.shareIcon'); if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); showShareOptions(element, shareIcons); } // Hide share options when focus leaves the container shareContainer.addEventListener('focusout', function(e) { if (!shareOptions.contains(e.relatedTarget) && !shareContainer.contains(e.relatedTarget)) { hideShareOptions(element, shareIcons); } }); } function showShareOptions(element, shareIcons) { element.setAttribute('aria-expanded', 'true'); element.classList.add('isFocused'); shareIcons.forEach(icon => { icon.setAttribute('tabindex', '0'); icon.setAttribute('aria-hidden', 'false'); }); } function hideShareOptions(element, shareIcons) { element.classList.remove('isFocused'); element.setAttribute('aria-expanded', 'false'); shareIcons.forEach(icon => { icon.setAttribute('tabindex', '-1'); icon.setAttribute('aria-hidden', 'true'); }); } function shareKeydown(event, type, review_id) { if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); share(type, review_id); } } function share(type, review_id) { var url = 'https://reviews.io/company-review/store/top3dshop.com/' + review_id; var shareLink = ''; switch(type) { case 'fb': shareLink = 'http://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(url); break; case 'tw': shareLink = 'http://twitter.com/intent/tweet?hashtags=REVIEWSio&text=' + encodeURIComponent(url); break; } // Open url in new window window.open(shareLink,'targetWindow','toolbar=no,location=0,status=no,menubar=no,scrollbars=yes,resizable=yes,width=640,height=480'); }; </script> <a class="controlButtons__btn controlButtons__btn--report" rel="nofollow" role="button" href='/profile-modal/report-review?id=16688002' title="Report this review" data-toggle='ajaxmodal' > <i class="ricon-flag"></i> <span class="textContainer">Report</span> </a> </div> <div class="Review__dateSource"> Posted 2 years ago </div> </div> </div> </div> </div> </div> <div class="padded u-textCenter" id="paginationContainer"> <ul class="pagination"> <li class="disabled"><span>«</span></li> <li class="active"><span>1</span></li> <li><a href="https://www.reviews.io/company-reviews/store/top3dshop.com/Qr">2</a></li> <li><a href="https://www.reviews.io/company-reviews/store/top3dshop.com/4p">3</a></li> <li><a href="https://www.reviews.io/company-reviews/store/top3dshop.com/Na">4</a></li> <li><a href="https://www.reviews.io/company-reviews/store/top3dshop.com/dE">5</a></li> <li><a href="https://www.reviews.io/company-reviews/store/top3dshop.com/Qr">»</a></li> </ul> </div> <div class='overall-rating-statement-container' style='text-align:center; color: rgba(0, 0, 0, 0.4); font-size: 12px; margin-bottom:20px;'> <a href="https://www.reviews.io/company-reviews/store/top3dshop.com" rel="nofollow"><b>Top 3D Shop</b></a> is rated <span class='score'>4.8</span> based on <span class='reviews_count'>190</span> reviews </div> <script async="" defer="" src="//survey.g.doubleclick.net/async_survey?site=v63u3q7vpveh3u6xgtgvimdoke"></script> <script> var pageBaseUrl = '/company-reviews/store/top3dshop.com/'; if (window.location.hostname.indexOf('top3dshop.com.reviews') !=-1) { pageBaseUrl = '//www.reviews.io/'; } function getPageNumber(url) { pageNumber = url.match(new RegExp(pageBaseUrl.replace(/\./i, '\.')+'([^?\s]+)')); if (pageNumber) { return pageNumber.pop(); } return false; } function setPagination() { $('.pagination a').click(function(el){ var pageUrl = ($(el.target).attr('href')); if ($(el.target).text() != "1" || pageUrl.indexOf('filters')!=-1) { el.preventDefault(); $('.pagination li').removeClass('active'); $('.ReviewFilters__dd').removeClass('open'); pageNumber = getPageNumber(pageUrl); parts = []; if (pageNumber) { parts.push('page:' + pageNumber); } window.location.hash = parts.join(';'); return false; } }); } function loadPage () { pageUrl =pageBaseUrl; hash = window.location.hash; page = hash.match(new RegExp('page\:([^\s;]+)')); if (page) { pageUrl += page.pop(); } filters = document.location.href.split('?'); if (filters.length>1) { pageUrl+="?"+filters[1]+'&xhr'; } else { pageUrl+="?xhr"; } window.scrollTo(0, 0); $('#reviewsContainer').html('<div class="u-textCenter--all u-paddingTop--lg u-paddingBottom--lg"><div class="StarLoader StarLoader--dark isActive"><svg class="StarLoader__svg" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 200 200" style="enable-background:new 0 0 200 200;" xml:space="preserve"><g><circle class="outer" cx="100" cy="100" r="95"></circle><path class="outer" d="M100.2,6C47.8,6,5.4,48.5,5.4,100.8s42.5,94.8,94.8,94.8s94.8-42.5,94.8-94.8S152.5,6,100.2,6z M100.2,185.7 c-46.9,0-84.8-38-84.8-84.8S53.3,16,100.2,16S185,54,185,100.8S147,185.7,100.2,185.7z"></path><path class="inner" d="M9.085,8.778L10.887,5.175C11.196,4.56 11.944,4.313 12.56,4.622C12.798,4.743 12.993,4.937 13.113,5.178L14.915,8.78L18.322,9.121C19.006,9.188 19.507,9.797 19.44,10.481C19.411,10.771 19.284,11.039 19.081,11.24L16.24,14.08L17.293,17.939C17.473,18.604 17.08,19.286 16.418,19.466C16.125,19.545 15.812,19.515 15.537,19.379L12,17.61L8.464,19.381C7.849,19.687 7.101,19.437 6.795,18.821C6.659,18.547 6.628,18.235 6.708,17.941L7.76,14.08L4.919,11.238C4.433,10.752 4.433,9.964 4.919,9.478C5.122,9.275 5.392,9.147 5.676,9.119L9.085,8.778ZM11.999,6.351L10.258,9.833C10.141,10.066 9.913,10.224 9.654,10.25L6.407,10.575L9.148,13.316C9.341,13.509 9.415,13.791 9.344,14.054L8.338,17.743L11.66,16.08C11.874,15.973 12.126,15.973 12.34,16.08L15.663,17.742L14.656,14.054C14.584,13.791 14.659,13.509 14.852,13.316L17.593,10.577L14.346,10.252C14.087,10.226 13.859,10.068 13.742,9.835L11.999,6.351Z"></path></g></svg></div></div>'); $('#paginationContainer').html(''); $.ajax({ url: pageUrl, method: 'GET', headers: { 'Cache-Tag': 'top3dshop.com' } }).then(function(response) { $('#reviewsContainer').html(response.reviews); $('#paginationContainer').html(response.pagination); }); } $(window).bind('hashchange', function() { loadPage(); }); $(document).ready(function() { setPagination(); if (window.location.hash) { loadPage(); } }); </script> </div> </div> </div> </div> <div class='clearfix'></div> <div class="GlobalModal modal" id='modalPreview' tabindex="-1" role="dialog"> <link rel="stylesheet" href="https://assets.reviews.io/iconfont/legacy/revsglobal-pr-mod/style.css?_t=20240411"> <div class="GlobalModal__backdrop"></div> <div class="GlobalModal__dialog GlobalModal__dialog--width960" role="document"> <div class="flex-row u-flexAlignItems--stretch"> <div class="flex-col-xxs-12 flex-col-sm-6 u-displayFlex u-justifyContent--center u-flexAlignItems--center"> <div class='ImageContainer'> <img id="modalImgPreview" src="" alt=""> </div> </div> <div class="flex-col-xxs-12 flex-col-sm-6"> <div class="dialog__inner dialog__inner--spaceBetween"> <div> <div class="flex-row u-marginTop--md u-marginBottom--md"> <div class="flex-col-xxs-6 u-textLeft--all u-paddingLeft--none"> <a class="controls__button controls__button--scrollLeft" onClick="prevImage()"> <i class="ruk-icon-line-arrow--left button__icon"></i> </a> <a class="controls__button controls__button--scrollRight" onClick="nextImage()"> <i class="ruk-icon-line-arrow--right button__icon"></i> </a> </div> <div class="flex-col-xxs-6 u-textRight--all u-paddingRight--none"> <a class="controls__button" data-dismiss="modal" aria-hidden="true"> <i class="ruk-icon-line-cross button__icon"></i> </a> </div> </div> <div class="u-textLeft--all u-marginBottom--sm"> <style> #reviewPreview .Review{ margin-bottom:40px; margin-left:0!important; margin-right:0!important; padding-left:0!important; padding-right:0!important; } #reviewPreview .Review__photos { display:none; } </style> <div id="reviewPreview"> </div> </div> <div class="u-textCenter--all"> <a href="https://www.reviews.io/exit/535229" rel="nofollow" class='Button Button-md Button--outline ' target="_blank"> Visit Top 3D Shop </a> </div> </div> </div> </div> </div> </div> </div> <div id='ajaxModal' class="modal fade"></div> <style> *:focus-visible { padding: 3px; border: 2px solid black; } </style> <div class="Footer"> <div class="Container Container--width1140"> <div class="flex-row"> <div class="flex-col-md-2 flex-col-sm-4 flex-col-xs-6 flex-col-xxs-12 "> <div class="Footer__list Footer__list--company"> <div class="Footer__list__item Footer__list__item--heading "> Our Company </div> <a class="Footer__list__item " href="https://www.reviews.io/business-solutions"> <span> Business Solutions </span> </a> <a class="Footer__list__item js-impressum-link" href="https://www.reviews.io/front/impressum"> <span> Impressum </span> </a> <a class="Footer__list__item " href="https://www.reviews.io/front/termsconditions"> <span> Terms & Conditions </span> </a> <a class="Footer__list__item " href="https://www.reviews.io/front/user-privacy-policy"> <span> User Privacy Policy </span> </a> <a class="Footer__list__item " href="https://www.reviews.io/front/business-user-privacy-policy"> <span style="max-width: 160px;"> Business User Privacy Policy </span> </a> <a class="Footer__list__item " href="https://www.reviews.io/front/data-protection"> <span> Data Protection </span> </a> <a class="Footer__list__item " href="https://www.reviews.io/front/data-request"> <span> Data Request </span> </a> </div> </div> <div class="flex-col-md-2 flex-col-sm-4 flex-col-xs-6 flex-col-xxs-12 flex-col-md-offset-8 flex-col-sm-offset-4 flex-col-xxs-offset-0"> <div class="Footer__list"> <a class="u-displayBlock u-width--100 u-textRight--all" href='/business-solutions'> <img loading="lazy" class="Footer__logo" src="https://assets.reviews.io/img/all-global-assets/logo/reviewsio-logo.svg" alt='REVIEWS.io'> </a> </div> </div> </div> </div> </div> <script src="/cw-assets/js/plugins/reviewsio-fileuploader.js?id=32f5151a756886b54ef2" ></script> <script> $("body").click(function() { $("#search #searchResults").fadeOut("fast"); }); $(function () { $("[data-toggle='tooltip']").tooltip(); }); </script> <script> var _curUrl = location.toString().replace(location.search, ""); if (_curUrl.indexOf('/product-reviews/')!=-1) { _curUrl = 'https://www.reviews.io/product-reviews/store/top3dshop.com'; } $('.js-showDetails').on('click', function () { if (this.classList.contains('collapsed')) { this.innerHTML = "Hide Details <i class='icon-arrow-up-thin-1-01'></i>"; } else { this.innerHTML = "Show Details <i class='icon-arrow-down-thin-1-01'></i>"; } }); //Tabs actions: $('a.header__tab').click(function(){ $('.header__tab').removeClass('isSelected'); $(this).addClass('isSelected'); }); $('.header__tab').each(function(t){ if (_curUrl.indexOf('insights')!=-1 && $(this).attr('href').indexOf('insights')!=-1) { re = new RegExp( $(this).attr('href') + '/[a-z]+', 'i'); } if (_curUrl.indexOf('questions-and')!=-1 && $(this).attr('href').indexOf('questions-and')!=-1) { re = new RegExp( $(this).attr('href') + '/[a-z]+', 'i'); } else { re = new RegExp( $(this).attr('href') + '/[0-9]+', 'i'); } if (_curUrl == $(this).attr('href') || re.test(_curUrl)) { $(this).addClass('isSelected'); } }); function setActiveJSView() { var hash = location.hash; if (hash) { hash = hash.replace('#', '').toLowerCase().trim(); showActiveJSView(hash); } else { showActiveJSView('js-reviewslist'); } } function subscribePushNotifications() { OneSignal.push(function() { OneSignal.registerForPushNotifications().then(function(){ }); OneSignal.sendTag('top3dshop.com', '1').then(function(){ }); }); return false; } function unsubscribePushNotifications() { OneSignal.push(function() { OneSignal.deleteTag('top3dshop.com'); }); } function setSubscriptionStatus() { OneSignal.push(function() { var isPushSupported = OneSignal.isPushNotificationsSupported(); OneSignal.getTags().then(function(tags) { if (tags && tags.hasOwnProperty('top3dshop.com') && tags['top3dshop.com']) { $('#reviewNotifications').prop('checked', true); } else { $('#reviewNotifications').prop('checked', false); } if (isPushSupported && window.safari === undefined) { $('#pushNotificationContainer').show(); } else { return; } }); }); } function focusTrapDropDown($dropdown) { // Find all focusable elements within the dropdown var $focusableElements = $dropdown.find('button, a, input:not([type="hidden"]), select, textarea, [tabindex]:not([tabindex="-1"])'); var $firstFocusableElement = $focusableElements.first(); var $lastFocusableElement = $focusableElements.last(); // Set focus to the first focusable element if ($firstFocusableElement.length > 0) { $firstFocusableElement.focus(); } $dropdown.on('keydown', function(e) { var isTabPressed = (e.key === 'Tab' || e.keyCode === 9); if (!isTabPressed) { if (e.key === 'Escape') { $dropdown.removeClass('open'); return; } return; } if (e.shiftKey) { // Shift + Tab if ($(document.activeElement).is($firstFocusableElement)) { e.preventDefault(); $lastFocusableElement.focus(); } } else { // Tab if ($(document.activeElement).is($lastFocusableElement)) { e.preventDefault(); $firstFocusableElement.focus(); } } }); $dropdown.find('a').on('click keydown', function(e) { if (e.type === 'keydown') { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); window.location.href = $(this).attr('href'); } else { return; } } if (e.type === 'click') { window.location.href = $(this).attr('href'); } $dropdown.removeClass('open'); }); } $(document).ready(function(){ setActiveJSView(); window.onhashchange = setActiveJSView; $('.ReviewFilters__filter').on('click keydown', function (e) { if (e.type === 'keydown' && (e.key !== 'Enter' && e.key !== ' ')) { return; } e.stopPropagation(); e.preventDefault(); // Toggle the current dropdown var $currentFilter = $(this); var $currentDropDown = $currentFilter.find('.ReviewFilters__dd'); // Close all dropdowns except the current one $('.ReviewFilters__dd').not($currentDropDown).removeClass('open'); $currentDropDown.addClass('open'); if ($currentDropDown.hasClass('open')) { focusTrapDropDown($currentDropDown); } }); // Listen for clicks that are not on a filter button and close any open filter dropdowns. $(document).on('click', function (event) { if (!event.target.classList.contains('ReviewFilters__filter') && !event.target.parentElement.classList.contains('ReviewFilters__filter')) { $(document).find('.ReviewFilters__dd.open').removeClass('open'); } }); setSubscriptionStatus(); getStoreAdditionalData("21916242|18983359|18911117|18194726|17782207|17722615|17579591|17546321|17387469|17366466|17239026|17191479|17153775|17102596|17034456|16963114|16920940|16873937|16708205|16688002", "en", "64lkz"); }); </script> <script defer src="/cw-assets/js/stores/components/review.js?id=4c47e4af3307a45eef83"></script> <script> $('[data-js-target]').hover(function(){ showJSFeature($(this)); }); function showJSFeature(source) { var parent = source.closest('.FeatureSlider'); $('.isOpen', parent).removeClass('isOpen'); source.addClass('isOpen'); $('img.FeatureSlider__image.isVisible', parent).removeClass('isVisible'); $('img.FeatureSlider__image.js-' + source.data('js-target'), parent).addClass('isVisible'); } function showSearchInputField() { $(".js-search-inputfield").addClass("isActive"); let searchField = $('.search__field'); searchField.focus(); searchField.attr("aria-hidden", false); searchField.attr("tabindex", "0"); } $(".js-show-search-inputfield").click(showSearchInputField); // Keydown event handler for keyboard accessibility $(".js-show-search-inputfield").keydown(function(event) { if (event.key === "Enter" || event.key === " ") { event.preventDefault(); showSearchInputField(); } }); function hideSearchInputField() { $(".js-search-inputfield").removeClass("isActive"); let searchField = $('.search__field'); searchField.blur(); searchField.attr("aria-hidden", true); searchField.attr("tabindex", "-1"); } $(".js-hide-search-inputfield").click(hideSearchInputField); $(".search__field").keydown(function(event) { if (event.key === "Escape") { hideSearchInputField(); } }); $('#pushNotificationContainer').on('click keydown', function(e) { if (e.type === 'keydown' && (e.key !== 'Enter' && e.key !== ' ')) { return; } e.preventDefault(); let toggleInput = $(this).children('#reviewNotifications'); let isChecked = toggleInput.prop('checked'); toggleInput.prop('checked', !isChecked).trigger('change'); let pressedState = toggleInput.prop('checked'); $(this).attr('aria-pressed', pressedState); if ($(toggleInput).is(':checked')) { subscribePushNotifications(); } else { unsubscribePushNotifications(); } }); !function(){var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","once","off","on","addSourceMiddleware","addIntegrationMiddleware","setAnonymousId","addDestinationMiddleware"];analytics.factory=function(e){return function(){var t=Array.prototype.slice.call(arguments);t.unshift(e);analytics.push(t);return analytics}};for(var e=0;e<analytics.methods.length;e++){var key=analytics.methods[e];analytics[key]=analytics.factory(key)}analytics.load=function(key,e){var t=document.createElement("script");t.type="text/javascript";t.async=!0;t.src="https://cdn.segment.com/analytics.js/v1/" + key + "/analytics.min.js";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(t,n);analytics._loadOptions=e};analytics._writeKey="zmSV3fPd1UeOky2smEXPhenyRwufNEI7";;analytics.SNIPPET_VERSION="4.15.3"; analytics.load("zmSV3fPd1UeOky2smEXPhenyRwufNEI7"); analytics.page(); }}(); </script> <link href="https://cdn.icomoon.io/40686/revsuk-global/style-cf.css?ukjukw" rel="stylesheet" media="screen"> <link href="https://assets.reviews.io/iconfont/legacy/revsglobal-pr-mod/style.css?_t=20240411" rel="stylesheet" media="screen"> <script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","licenseKey":"NRJS-a34ab2cc067f356d5ca","applicationID":"550531683","transactionName":"MlIBN0tZXRBSAUxdCQsYIgBNUVwNHBFMWxQARE0QUVdE","queueTime":0,"applicationTime":552,"atts":"HhUCQQNDTh4=","errorBeacon":"bam.nr-data.net","agent":""}</script></body> </html>