🍒Rainier Cherry Fruit Seeds-Big Fruits, High Yield, Pure Sweetness

$23.99 $32.99 Save $9.00
Sold 1
/** * 优惠码组件模型类 * 处理优惠码的显示和交互逻辑 */ class SpzCustomDiscountCodeModel extends SPZ.BaseElement { constructor(element) { super(element); // 复制按钮和内容的类名 this.copyBtnClass = "discount_code_btn" this.copyClass = "discount_code_value" } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } buildCallback() { // 初始化服务 this.action_ = SPZServices.actionServiceForDoc(this.element); this.templates_ = SPZServices.templatesForDoc(this.element); this.xhr_ = SPZServices.xhrFor(this.win); } /** * 渲染优惠码组件 * @param {Object} data - 渲染数据 */ doRender_(data) { return this.templates_ .findAndRenderTemplate(this.element, Object.assign(this.getDefaultData(), data) ) .then((el) => { this.clearDom(); this.element.appendChild(el); // 绑定复制代码功能 this.copyCode(el, data); }); } /** * 获取渲染模板 * @param {Object} data - 渲染数据 */ getRenderTemplate(data) { const renderData = Object.assign(this.getDefaultData(), data); return this.templates_ .findAndRenderTemplate(this.element, renderData) .then((el) => { this.clearDom(); return el; }); } /** * 清除DOM内容 */ clearDom() { const children = this.element.querySelector('*:not(template)'); children && SPZCore.Dom.removeElement(children); } /** * 获取默认数据 * @returns {Object} 默认数据对象 */ getDefaultData() { return { isMobile: appDiscountUtils.judgeMobile(), isRTL: appDiscountUtils.judgeRTL(), image_domain: this.win.SHOPLAZZA.image_domain, copyBtnClass: this.copyBtnClass, copyClass: this.copyClass } } /** * 复制优惠码功能 * @param {Element} el - 当前元素 */ copyCode(el) { const copyBtnList = el.querySelectorAll(`.${this.copyBtnClass}`); if (copyBtnList.length > 0) { copyBtnList.forEach(item => { item.onclick = async () => { // 确保获取正确的元素和内容 const codeElement = item.querySelector(`.${this.copyClass}`); if (!codeElement) return; // 获取纯文本内容 const textToCopy = codeElement.innerText.trim(); // 尝试使用现代API,如果失败则使用备用方案 try { if (navigator.clipboard && navigator.clipboard.writeText) { await navigator.clipboard.writeText(textToCopy); } else { throw new Error('Clipboard API not available'); } // 显示复制成功提示 this.showCopySuccessToast(textToCopy, el); } catch (err) { console.error('Modern clipboard API failed, trying fallback...', err); // 使用备用复制方案 this.fallbackCopy(textToCopy, el); } const discountId = item.dataset["discountId"]; // 跳转决策: is_redirection + link(可选覆盖) const setting = { is_redirection: item.dataset["redirection"] === "true", link: item.dataset["link"], }; const landingUrl = `/promotions/discount-default/${discountId}`; const finalUrl = appDiscountUtils.resolveDiscountHref(setting, landingUrl); if (finalUrl && appDiscountUtils.inProductBody(this.element)) { this.win.open(finalUrl, '_blank', 'noopener'); } } }) } } /** * 使用 execCommand 的复制方案 * @param {string} codeText - 要复制的文本 * @param {Element} el - 当前元素 */ fallbackCopy(codeText, el) { const textarea = this.win.document.createElement('textarea'); textarea.value = codeText; // 设置样式使文本框不可见 textarea.style.position = 'fixed'; textarea.style.left = '-9999px'; textarea.style.top = '0'; // 添加 readonly 属性防止移动端虚拟键盘弹出 textarea.setAttribute('readonly', 'readonly'); this.win.document.body.appendChild(textarea); textarea.focus(); textarea.select(); try { this.win.document.execCommand('copy'); // 显示复制成功提示 this.showCopySuccessToast(codeText, el); } catch (err) { console.error('Copy failed:', err); } this.win.document.body.removeChild(textarea); } /** * 创建 Toast 元素 * @returns {Element} 创建的 Toast 元素 */ createToastEl_() { const toast = document.createElement('ljs-toast'); toast.setAttribute('layout', 'nodisplay'); toast.setAttribute('hidden', ''); toast.setAttribute('id', 'discount-code-toast'); toast.style.zIndex = '1051'; return toast; } /** * 挂载 Toast 元素到 body * @returns {Element} 挂载的 Toast 元素 */ mountToastToBody_() { const existingToast = this.win.document.getElementById('discount-code-toast'); if (existingToast) { return existingToast; } const toast = this.createToastEl_(); this.win.document.body.appendChild(toast); return toast; } /** * 复制成功的提醒 * @param {string} codeText - 要复制的文本 * @param {Element} el - 当前元素 */ showCopySuccessToast(codeText, el) { const $toast = this.mountToastToBody_(); SPZ.whenApiDefined($toast).then(toast => { toast.showToast("Discount code copied !"); this.codeCopyInSessionStorage(codeText); }); } /** * 复制优惠码成功后要存一份到本地存储中,购物车使用 * @param {string} codeText - 要复制的文本 */ codeCopyInSessionStorage(codeText) { try { sessionStorage.setItem('other-copied-coupon', codeText); } catch (error) { console.error(error) } } } // 注册自定义元素 SPZ.defineElement('spz-custom-discount-code-model', SpzCustomDiscountCodeModel);
/** * Custom discount code component that handles displaying and managing discount codes * @extends {SPZ.BaseElement} */ class SpzCustomDiscountCode extends SPZ.BaseElement { constructor(element) { super(element); // API endpoint for fetching discount codes this.getDiscountCodeApi = "\/api\/storefront\/promotion\/code\/list"; // Debounce timer for resize events this.timer = null; // Current variant ID this.variantId = "6243cf60-bd0d-4ea7-8902-344b2d1cb6d3"; // Store discount code data this.discountCodeData = {} } /** * Check if layout is supported * @param {string} layout - Layout type * @return {boolean} */ isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } /** * Initialize component after build */ buildCallback() { this.templates_ = SPZServices.templatesForDoc(); this.viewport_ = this.getViewport(); // Bind methods to maintain context this.render = this.render.bind(this); this.resize = this.resize.bind(this); this.switchVariant = this.switchVariant.bind(this); } /** * Setup component when mounted */ mountCallback() { this.getData(); // Add event listeners this.viewport_.onResize(this.resize); this.win.document.addEventListener('dj.variantChange', this.switchVariant); } /** * Cleanup when component is unmounted */ unmountCallback() { this.viewport_.removeResize(this.resize); this.win.document.removeEventListener('dj.variantChange', this.switchVariant); // 清除定时器 if (this.timer) { clearTimeout(this.timer); this.timer = null; } } /** * Handle resize events with debouncing */ resize() { if (this.timer) { clearTimeout(this.timer) this.timer = null; } this.timer = setTimeout(() => { if (appDiscountUtils.inProductBody(this.element)) { this.render(); } else { this.renderSkeleton(); } }, 200); } /** * Handle variant changes * @param {Event} event - Variant change event */ switchVariant(event) { const variant = event.detail.selected; if (variant.product_id == '0bef8b36-ccc4-474c-b016-4616d1b44ad9' && variant.id != this.variantId) { this.variantId = variant.id; this.getData(); } } /** * Fetch discount code data from API */ getData() { if (appDiscountUtils.inProductBody(this.element)) { const reqBody = { product_id: "0bef8b36-ccc4-474c-b016-4616d1b44ad9", variant_id: this.variantId, product_type: "default", } if (!reqBody.product_id || !reqBody.variant_id) return; this.discountCodeData = {}; this.win.fetch(this.getDiscountCodeApi, { method: "POST", body: JSON.stringify(reqBody), headers: { "Content-Type": "application/json" } }).then(async (response) => { if (response.ok) { let data = await response.json(); if (data.list && data.list.length > 0) { data.list[0].product_setting.template_config = JSON.parse(data.list[0].product_setting.template_config); // Format timestamps to local timezone const zone = this.win.SHOPLAZZA.shop.time_zone; data.list = data.list.map(item => { if(+item.ends_at !== -1) { item.ends_at = appDiscountUtils.convertTimestampToFormat(+item.ends_at, zone); } item.starts_at = appDiscountUtils.convertTimestampToFormat(+item.starts_at, zone); return item; }); } this.discountCodeData = data; this.render(); } else { this.clearDom(); } }).catch(err => { console.error("discount_code", err) this.clearDom(); }); } else { this.renderSkeleton(); } } /** * Clear component DOM except template */ clearDom() { const children = this.element.querySelector('*:not(template)'); children && SPZCore.Dom.removeElement(children); } /** * Render discount codes with formatted dates */ render() { // Render using discount code model SPZ.whenApiDefined(document.querySelector('#spz_custom_discount_code_model')).then(renderApi => { renderApi.doRender_({ discountCodeData: this.discountCodeData }) }).catch(err => { this.clearDom(); }) } renderSkeleton() { // Render template for non-product pages this.templates_ .findAndRenderTemplate(this.element, { isMobile: appDiscountUtils.judgeMobile() }) .then((el) => { this.clearDom(); this.element.appendChild(el); }) .catch(err => { this.clearDom(); }); } } // Register custom element SPZ.defineElement('spz-custom-discount-code', SpzCustomDiscountCode);
Variety:  Red
Buy More Save More🔥:  100 Seeds(50%OFF🍒Recommend)
Quantity
Share the love
Free worldwide shipping
Free returns
Sustainably made
Secure payments
Description

Description

🪴We are committed to providing customers with high-quality, affordable seeds. 🌱

💵 Payments PayPal® or Credit Card (It's your choice
😍 99.3% of customers buy 3 get 1 free or more to share with family or friends
✨Priority is given to delivery after payment
✈ Worldwide Express Shipping Available

🍒Welcome to Cherry Fruit Seeds🍒

The Magical Source from the Secret Garden 🍒✨

🌿🍒Why buy when you can grow your own cherry trees at home? Say goodbye to fruit bills and hello to year-round harvests! Our cherry trees thrive in any season, defying sun and frost. No green thumb required—just water and sunshine for a bounty of cherries. Perfect for pots or small gardens! 🌞🍒

 Rainier Cherry Quick Facts

Name Rainier Cherry
Product Type Bonsai
Style Perennial
Colors Green when young turning to very deep reddish purple as they mature
Shapes About the size of a large pea, globose to pyriform, about 8–25 mm in diameter
Taste Purely sweet, not sour, crispy and juicy
Major nutrients Carbohydrate (9.45%)
Vitamin B6 (5.54%)
Total dietary Fiber(5.00%)
Copper (5.00%)
Vitamin B5 (3.84%)
Health benefits Helps to stimulate respiration, improves digestion, coughs, colds, gout and gives a sense of well-being.
Planting Season You can sow these seeds all year round, making it incredibly convenient.
Package Contents 20 - 200 seeds(Depending on your order quantity)

In every Cherry Fruit Seed, lies an infinite adventure for your taste buds. We bring you the natural charm, presenting the sweetest side of life.

Cherry Fruit Seeds are not just ordinary fruits; they are the beginning of something extraordinary. Sprinkle the seeds into your everyday life and reap the rewards of health and happiness.

Why Choose Our Cherry Fruit Seeds?

🌱 Unique Variety Selection - We offer the rarest cherry varieties from around the world, allowing your taste buds to travel internationally.

🍀 Easy Cultivation - Whether you're a beginner or an experienced gardener, our simple and practical planting guides ensure success in the comfort of your home.

💪 Health Benefits - Rich in antioxidants, cherries promote cardiovascular health and boost the immune system.

Start Your Cherry Fruit Seeds Journey Now!

Purchase Cherry Fruit Seeds and embrace a future filled with color and flavor. Let's discover immense happiness within this tiny seed together.

🌈 At Cherry Fruit Seeds, we believe life is like a seed; with a little care, it blossoms into beautiful flowers and fruits. 🌸✨

NEW YEAR is coming soon we prouides the following promotions for each customer👇

🥰When companion planting with Rainier Cherry trees, here are some suitable companion plants:

  1. Strawberries: Strawberries and cherry trees share similar growing conditions, and they complement each other aesthetically and in terms of soil preferences.

  2. Lavender: Lavender attracts bees and other beneficial insects, adding a pleasant aroma to the garden.

  3. Morning Glory: Morning Glory vines can climb around the cherry tree, adding vertical interest to the garden.  

  4. Rosemary: Rosemary is a hardy herb that can provide additional greenery around the base of the cherry tree.
  5. Raspberries: Raspberries share similar soil and moisture conditions with cherry trees, providing additional fruit diversity.

  6. Marigolds: Marigolds help repel some pests, and their vibrant colors inject vibrancy into the garden.

Ensure that the plants are compatible in terms of their growth requirements and that they enhance each other to create an organic, thriving garden environment.

our guarantee
  We firmly believe we have some of the most innovative products in the world, and we want to make sure we back that up with a risk-free 90-day warranty.
  If you don't have a positive experience for any reason, we will make every effort to ensure you are 100% satisfied with your purchase.
  Purchasing items online can be a daunting task, so we want you to realize that there is absolutely zero risk in purchasing items and trying them out. If you don't like it, no hard feelings, we'll make it right.
  We offer 24/7/365 ticket and email support. If you need help, please contact us.