1pc Personalized Handmade Embroidery Corner Bookmarks, Cute Flower Letter Embroidery Bookmarks, Meaningful Gifts For Book Enthusiasts, Handmade, Felt Triangle Bookmark
1pc Personalized Handmade Embroidery Corner Bookmarks, Cute Flower Letter Embroidery Bookmarks, Meaningful Gifts For Book Enthusiasts, Handmade, Felt Triangle Bookmark
1pc Personalized Handmade Embroidery Corner Bookmarks, Cute Flower Letter Embroidery Bookmarks, Meaningful Gifts For Book Enthusiasts, Handmade, Felt Triangle Bookmark
1pc Personalized Handmade Embroidery Corner Bookmarks, Cute Flower Letter Embroidery Bookmarks, Meaningful Gifts For Book Enthusiasts, Handmade, Felt Triangle Bookmark
1pc Personalized Handmade Embroidery Corner Bookmarks, Cute Flower Letter Embroidery Bookmarks, Meaningful Gifts For Book Enthusiasts, Handmade, Felt Triangle Bookmark
1pc Personalized Handmade Embroidery Corner Bookmarks, Cute Flower Letter Embroidery Bookmarks, Meaningful Gifts For Book Enthusiasts, Handmade, Felt Triangle Bookmark
1pc Personalized Handmade Embroidery Corner Bookmarks, Cute Flower Letter Embroidery Bookmarks, Meaningful Gifts For Book Enthusiasts, Handmade, Felt Triangle Bookmark
1pc Personalized Handmade Embroidery Corner Bookmarks, Cute Flower Letter Embroidery Bookmarks, Meaningful Gifts For Book Enthusiasts, Handmade, Felt Triangle Bookmark

1pc Personalized Handmade Embroidery Corner Bookmarks, Cute Flower Letter Embroidery Bookmarks, Meaningful Gifts For Book Enthusiasts, Handmade, Felt Triangle Bookmark

$8.99
$17.99
-50%
Style-A
Please select a style
Quantity
/** @private {string} */ class SpzCustomAnchorScroll extends SPZ.BaseElement { static deferredMount() { return false; } constructor(element) { super(element); /** @private {Element} */ this.scrollableContainer_ = null; } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } buildCallback() { this.viewport_ = this.getViewport(); this.initActions_(); } setTarget(containerId, targetId) { this.containerId = '#' + containerId; this.targetId = '#' + targetId; } scrollToTarget() { const container = document.querySelector(this.containerId); const target = container.querySelector(this.targetId); const {scrollTop} = container; const eleOffsetTop = this.getOffsetTop_(target, container); this.viewport_ .interpolateScrollIntoView_( container, scrollTop, scrollTop + eleOffsetTop ); } initActions_() { this.registerAction( 'scrollToTarget', (invocation) => this.scrollToTarget(invocation?.caller) ); this.registerAction( 'setTarget', (invocation) => this.setTarget(invocation?.args?.containerId, invocation?.args?.targetId) ); } /** * @param {Element} element * @param {Element} container * @return {number} * @private */ getOffsetTop_(element, container) { if (!element./*OK*/ getClientRects().length) { return 0; } const rect = element./*OK*/ getBoundingClientRect(); if (rect.width || rect.height) { return rect.top - container./*OK*/ getBoundingClientRect().top; } return rect.top; } } SPZ.defineElement('spz-custom-anchor-scroll', SpzCustomAnchorScroll); const STRENGTHEN_TRUST_URL = "/api/strengthen_trust/settings"; class SpzCustomStrengthenTrust extends SPZ.BaseElement { constructor(element) { super(element); this.renderElement_ = null; } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } buildCallback() { this.xhr_ = SPZServices.xhrFor(this.win); const renderId = this.element.getAttribute('render-id'); SPZCore.Dom.waitForChild( document.body, () => !!document.getElementById(renderId), () => { this.renderElement_ = SPZCore.Dom.scopedQuerySelector( document.body, `#${renderId}` ); if (this.renderElement_) { this.render_(); } this.registerAction('track', (invocation) => { this.track_(invocation.args); }); } ); } render_() { this.fetchData_().then((data) => { if (!data) { return; } SPZ.whenApiDefined(this.renderElement_).then((apis) => { apis?.render(data); document.querySelector('#strengthen-trust-render-1539149753700').addEventListener('click',(event)=>{ if(event.target.nodeName == 'A'){ this.track_({type: 'trust_content_click'}); } }) }); }); } track_(data = {}) { const track = window.sa && window.sa.track; if (!track) { return; } track('trust_enhancement_event', data); } parseJSON_(string) { let result = {}; try { result = JSON.parse(string); } catch (e) {} return result; } fetchData_() { return this.xhr_ .fetchJson(STRENGTHEN_TRUST_URL) .then((responseData) => { if (!responseData || !responseData.data) { return null; } const data = responseData.data; const moduleSettings = (data.module_settings || []).reduce((result, moduleSetting) => { return result.concat(Object.assign(moduleSetting, { logos: (moduleSetting.logos || []).map((item) => { return moduleSetting.logos_type == 'custom' ? this.parseJSON_(item) : item; }) })); }, []); return Object.assign(data, { module_settings: moduleSettings, isEditor: window.self !== window.top, }); }); } } SPZ.defineElement('spz-custom-strengthen-trust', SpzCustomStrengthenTrust);
Description
Personalized and handmade embroidery corner bookmarks, perfect for book enthusiasts
Cute flower letter embroidery design adds a touch of uniqueness to your reading experience
Made with high-quality felt material, durable and long-lasting
Triangle shape fits perfectly in the corner of your book, keeping your place secure
Makes a meaningful and thoughtful gift for any occasion
‍️