JEYI Thunderbolt 5 SSD Enclosure - Unleash 80Gbps Blazing Speeds (Up to 6,500MB/s+)
• Intel JHL9480 Chipset-Powered - Delivers true 80Gbps bandwidth with real-world speeds reaching 6,500MB/s+ (theoretical max: 7,000MB/s) • Backward Compatible with Thunderbolt 4/3 (40Gbps) and USB4 V1 (40Gbps) Plug & Play Simplicity • Driver-Free - Works instantly with Windows/Linux/macOS • Tool-Free Installation - Easy M.2 SSD mounting Package Includes • Thunderbolt 5 Enclosure • 80Gbps TB5 Cable (0.5m) • Thermal Pads
Note: Requires Thunderbolt 5-certified host/cable for full 80Gbps performance
SSD Support: ✓Supprot PCIe 3.0/4.0 NVMe (M.2 2280 M-Key) ✗ PCIe 5.0 SSDs Not Supported ✗ SATA SSDs Not Compatible Interface limitations: Thunderbolt 5 can reach 80G full speed, Thunderbolt 4/3, USB 4.0 V1 can only reach 40G, USB 4.0 V1 and USB3.1/3.0 are not supported macOS Optimization • Achieves maximum performance on macOS systems • Thunderbolt 3 requires macOS 15+ for full functionality Thunderbolt 3 Users • May default to USB 3.1 speeds (10Gbps) • Recommended: Use Thunderbolt 3/4 enclosures instead
In order to maximize the performance of the SSD, the SSD write caching function needs to be enabled.
More suitable for MacOS thudenrbolt 5 port
After multiple tests, we have found that the JHL9480 chip haspoor compatibility with the Windows system.WE RECOMMEND THAT YOU USE IT ONLY ON MacosRefunds are not supportedfor compatibility issues caused by the Windows system.
Built in Advanced JHL9480 Chip
6G File in 1 Second
Reaching optimal speeds requires PCle 4.0x4 and NVME 1.4+ SSDs
Only support M.2 NVMe 2280 SSD
Compatible with PCIe 4.0/3.0 SSD, not supporting PCIe
5.0 NVMe SSD
High-capacity 8TB Support
Does not require additional power, plug&play
Full Aluminum Case
Keeps your SSD cool with thermal compound pads
Compact and Portable Design
Compact design makes it space-saving and easy to carry.
const TAG = 'spz-custom-painter-button-animation';
const MAX_ITERATION_COUNT = 99999999;
const SITE = (window.C_SETTINGS && window.C_SETTINGS.routes && window.C_SETTINGS.routes.root) || '';
const ADD_TO_CART_ANIMATION_SETTING =
`${SITE}/api/marketing_atmosphere_app/add_to_cart_btn_animation/setting`;
class SpzCustomPainterButtonAnimation extends SPZ.BaseElement {
/**@override */
static deferredMount() {
return false;
}
/** @param {!SpzElement} element */
constructor(element) {
super(element);
/** @private {!../../src/service/xhr-impl.Xhr} */
this.xhr_ = SPZServices.xhrFor(this.win);
/** @private {Object} */
this.data_ = null;
/** @private {Element} */
this.addToCartButton_ = null;
/** @private {boolean} */
this.productAvailable_ = true;
/** @private {number} */
this.timerId_ = null;
/** @private {number} */
this.animationExecutionCount_ = 0;
/** @private {boolean} */
this.selectedVariantAvailable_ = true;
/** @private {number} */
this.delay_ = 5000;
/** @private {number} */
this.iterationCount_ = 5;
/** @private {string} */
this.animationClass_ = '';
}
/** @override */
isLayoutSupported(layout) {
return layout == SPZCore.Layout.LOGIC;
}
/** @override */
buildCallback() {
this.productAvailable_ = this.element.hasAttribute('product-available');
this.selectedVariantAvailable_ = this.element.hasAttribute('selected-variant-available');
}
/** @override */
mountCallback() {
this.render_();
}
/** @private */
render_() {
if (!this.productAvailable_) {
return;
}
this.fetch_().then((data) => {
if (!data) {
return;
}
this.data_ = data;
this.animationClass_ = `painter-${data.animation_name}-animation`;
this.iterationCount_ =
data.animation_iteration_count === 'infinite'
? MAX_ITERATION_COUNT
: data.animation_iteration_count;
const animationDuration = 1;
const animationDelay = data.animation_delay || 5;
this.delay_ = (animationDuration + animationDelay) * 1000;
this.handleButtonEffect_();
});
}
/**
* @param {JsonObject} data
* @return {(null|Object)}
* @private
*/
parseJson_(data) {
try {
return JSON.parse(data);
} catch (e) {
return null;
}
}
/**
* @return {Promise}
* @private
*/
fetch_() {
return this.xhr_.fetchJson(ADD_TO_CART_ANIMATION_SETTING).then((data) => {
if (!data || !data.enabled) {
return null;
}
return this.parseJson_(data.detail);
});
}
/** @private */
getAddToCartButton_() {
this.addToCartButton_ = SPZCore.Dom.scopedQuerySelector(
document.body,
'[data-section-type="product"] [role="addToCart"], [data-section-type="product_detail"] [role="addToCart"], [data-section-type="product_detail"] [data-click="addToCart"], [data-section-type="product"] [data-click="addToCart"]'
);
}
/** @private */
restartAnimation_() {
this.addToCartButton_.classList.remove(this.animationClass_);
this.addToCartButton_./* OK */ offsetWidth;
this.addToCartButton_.classList.add(this.animationClass_);
this.animationExecutionCount_++;
}
/** @private */
clearTimer_() {
this.win.clearInterval(this.timerId_);
this.timerId_ = null;
}
/** @private */
setupTimer_() {
this.timerId_ = this.win.setInterval(() => {
this.restartAnimation_();
if (this.animationExecutionCount_ >= this.iterationCount_) {
this.removeAnimationClass_();
this.clearTimer_();
}
}, this.delay_);
}
/** @private */
restartTimer_() {
if (this.animationExecutionCount_ >= this.iterationCount_) {
this.removeAnimationClass_();
return;
}
this.setupTimer_();
}
/** @private */
listenVariantChange_() {
SPZUtils.Event.listen(self.document, 'dj.variantChange', (e) => {
const selectedVariant = e.detail && e.detail.selected;
if (!selectedVariant) {
return;
}
const {available} = selectedVariant;
if (this.selectedVariantAvailable_ !== available) {
this.selectedVariantAvailable_ = available;
this.clearTimer_();
if (available) {
this.restartTimer_();
}
}
});
}
/** @private */
removeAnimationClass_() {
this.win.setTimeout(() => {
this.addToCartButton_.classList.remove(this.animationClass_);
}, 1000);
}
/** @private */
handleButtonEffect_() {
this.getAddToCartButton_();
if (!this.addToCartButton_) {
return;
}
if (this.selectedVariantAvailable_) {
++this.animationExecutionCount_;
this.addToCartButton_.classList.add(this.animationClass_);
if (this.iterationCount_ === 1) {
this.removeAnimationClass_();
return;
}
this.setupTimer_();
}
this.listenVariantChange_();
}
}
SPZ.defineElement(TAG, SpzCustomPainterButtonAnimation);