/*! elementor-pro - v3.18.0 - 20-12-2023 */ (()=>{"use strict";class Screenshot extends elementorModules.ViewModule{getDefaultSettings(){return{empty_content_headline:"Empty Content.",crop:{width:1200,height:1500},excluded_external_css_urls:["https://kit-pro.fontawesome.com"],external_images_urls:["https://i.ytimg.com"],timeout:15e3,render_timeout:5e3,timerLabel:null,timer_label:`${ElementorScreenshotConfig.post_id} - timer`,image_placeholder:"data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=",isDebug:elementorCommonConfig.isElementorDebug,isDebugSvg:!1,...ElementorScreenshotConfig}}getDefaultElements(){const e=jQuery(ElementorScreenshotConfig.selector),t=e.find(".elementor-section-wrap > .elementor-section, .elementor > .elementor-section");return{$elementor:e,$sections:t,$firstSection:t.first(),$notElementorElements:elementorCommon.elements.$body.find("> *:not(style, link)").not(e),$head:jQuery("head")}}onInit(){return super.onInit(),this.log("Screenshot init","time"),this.timeoutTimer=setTimeout(this.screenshotFailed.bind(this),this.getSettings("timeout")),this.captureScreenshot()}captureScreenshot(){return this.elements.$elementor.length||(elementorCommon.helpers.consoleWarn("Screenshots: The content of this page is empty, the module will create a fake conent just for this screenshot."),this.createFakeContent()),this.removeUnnecessaryElements(),this.handleIFrames(),this.removeFirstSectionMargin(),this.handleLinks(),this.loadExternalCss(),this.loadExternalImages(),Promise.resolve().then(this.createImage.bind(this)).then(this.createImageElement.bind(this)).then(this.cropCanvas.bind(this)).then(this.save.bind(this)).then(this.screenshotSucceed.bind(this)).catch(this.screenshotFailed.bind(this))}createFakeContent(){this.elements.$elementor=jQuery("
").css({height:this.getSettings("crop.height"),width:this.getSettings("crop.width"),display:"flex",alignItems:"center",justifyContent:"center"}),this.elements.$elementor.append(jQuery("

").css({fontSize:"85px"}).html(this.getSettings("empty_content_headline"))),document.body.prepend(this.elements.$elementor)}loadExternalCss(){const e=[this.getSettings("home_url"),...this.getSettings("excluded_external_css_urls")].map((e=>`[href^="${e}"]`)).join(", ");jQuery("link").not(e).each(((e,t)=>{const s=jQuery(t),n=s.clone();n.attr("href",this.getScreenshotProxyUrl(s.attr("href"))),this.elements.$head.append(n),s.remove()}))}loadExternalImages(){const e=this.getSettings("external_images_urls").map((e=>`img[src^="${e}"]`)).join(", ");jQuery(e).each(((e,t)=>{const s=jQuery(t);s.attr("src",this.getScreenshotProxyUrl(s.attr("src")))}))}handleIFrames(){this.elements.$elementor.find("iframe").each(((e,t)=>{const s=jQuery(t),n=jQuery("
",{css:{background:"gray",width:s.width(),height:s.height()}});s.before(n),s.remove()}))}removeUnnecessaryElements(){let e=0;this.elements.$sections.filter(((t,s)=>{let n=!1;return e>=this.getSettings("crop.height")&&(n=!0),e+=jQuery(s).outerHeight(),n})).each(((e,t)=>{t.remove()})),this.elements.$notElementorElements.remove()}handleLinks(){elementorCommon.elements.$body.find("a").attr("href","/")}removeFirstSectionMargin(){this.elements.$firstSection.css({marginTop:0})}createImage(){const e=new Promise((e=>{window.addEventListener("load",(()=>{e()}))})),t=new Promise((e=>{setTimeout((()=>{e()}),this.getSettings("render_timeout"))}));return Promise.race([e,t]).then((()=>{if(this.log("Start creating screenshot."),this.getSettings("isDebugSvg"))return domtoimage.toSvg(document.body,{imagePlaceholder:this.getSettings("image_placeholder")}).then((e=>this.download(e))),Promise.reject("Debug SVG.");return/^((?!chrome|android).)*safari/i.test(window.userAgent)?(this.log('Creating screenshot with "html2canvas"'),html2canvas(document.body).then((e=>e.toDataURL("image/png")))):(this.log('Creating screenshot with "dom-to-image"'),domtoimage.toPng(document.body,{imagePlaceholder:this.getSettings("image_placeholder")}))}))}download(e){const t=jQuery("",{href:e,download:"debugSvg.svg",html:"Download SVG"});elementorCommon.elements.$body.append(t),t.trigger("click")}createImageElement(e){const t=new Image;return t.src=e,new Promise((e=>{t.onload=()=>e(t)}))}cropCanvas(e){const t=this.getSettings("crop.width"),s=this.getSettings("crop.height"),n=document.createElement("canvas"),i=n.getContext("2d"),o=t/e.width;return n.width=t,n.height=s>e.height?e.height:s,i.drawImage(e,0,0,e.width,e.height,0,0,e.width*o,e.height*o),Promise.resolve(n)}save(e){return new Promise(((t,s)=>{elementorCommon.ajax.addRequest("screenshot_save",{data:{post_id:this.getSettings("post_id"),screenshot:e.toDataURL("image/png")},success:e=>{this.log(`Screenshot created: ${encodeURI(e)}`),t(e)},error:()=>{this.log("Failed to create screenshot."),s()}})}))}markAsFailed(){return new Promise(((e,t)=>{elementorCommon.ajax.addRequest("screenshot_failed",{data:{post_id:this.getSettings("post_id")},success:()=>{this.log("Marked as failed."),e()},error:()=>{this.log("Failed to mark this screenshot as failed."),t()}})}))}getScreenshotProxyUrl(e){return`${this.getSettings("home_url")}?screenshot_proxy&nonce=${this.getSettings("nonce")}&href=${e}`}screenshotSucceed(e){this.screenshotDone(!0,e)}screenshotFailed(e){this.log(e,null),this.markAsFailed().then((()=>this.screenshotDone(!1)))}screenshotDone(e,t=null){clearTimeout(this.timeoutTimer),this.timeoutTimer=null,window.parent.postMessage({name:"capture-screenshot-done",success:e,id:this.getSettings("post_id"),imageUrl:t},"*"),this.log(`Screenshot ${e?"Succeed":"Failed"}.`,"timeEnd")}log(e,t="timeLog"){this.getSettings("isDebug")&&(console.log("string"==typeof e?`${this.getSettings("post_id")} - ${e}`:e),t&&console[t](this.getSettings("timer_label")))}}jQuery((()=>{new Screenshot}))})();{"id":191,"count":2,"description":"","link":"https:\/\/flushmountedceilingfans.com\/tag\/casablanca-fans-replacement-parts\/","name":"casablanca fans replacement parts","slug":"casablanca-fans-replacement-parts","taxonomy":"post_tag","meta":[],"yoast_head":"\ncasablanca fans replacement parts Archives - Flush Mount Ceiling Fans<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/flushmountedceilingfans.com\/tag\/casablanca-fans-replacement-parts\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"casablanca fans replacement parts Archives - Flush Mount Ceiling Fans\" \/>\n<meta property=\"og:url\" content=\"https:\/\/flushmountedceilingfans.com\/tag\/casablanca-fans-replacement-parts\/\" \/>\n<meta property=\"og:site_name\" content=\"Flush Mount Ceiling Fans\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"CollectionPage\",\"@id\":\"https:\/\/flushmountedceilingfans.com\/tag\/casablanca-fans-replacement-parts\/\",\"url\":\"https:\/\/flushmountedceilingfans.com\/tag\/casablanca-fans-replacement-parts\/\",\"name\":\"casablanca fans replacement parts Archives - Flush Mount Ceiling Fans\",\"isPartOf\":{\"@id\":\"https:\/\/flushmountedceilingfans.com\/#website\"},\"breadcrumb\":{\"@id\":\"https:\/\/flushmountedceilingfans.com\/tag\/casablanca-fans-replacement-parts\/#breadcrumb\"},\"inLanguage\":\"en-US\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/flushmountedceilingfans.com\/tag\/casablanca-fans-replacement-parts\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/flushmountedceilingfans.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"casablanca fans replacement parts\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/flushmountedceilingfans.com\/#website\",\"url\":\"https:\/\/flushmountedceilingfans.com\/\",\"name\":\"Flush Mount Ceiling Fans\",\"description\":\"Hugger, Low profile, ceiling fans\",\"publisher\":{\"@id\":\"https:\/\/flushmountedceilingfans.com\/#\/schema\/person\/0b964f145f343d3e717aa9475a8147fd\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/flushmountedceilingfans.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/flushmountedceilingfans.com\/#\/schema\/person\/0b964f145f343d3e717aa9475a8147fd\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/flushmountedceilingfans.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/81c586449509aaee7094c40cbf9f9d44?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/81c586449509aaee7094c40cbf9f9d44?s=96&d=mm&r=g\",\"caption\":\"admin\"},\"logo\":{\"@id\":\"https:\/\/flushmountedceilingfans.com\/#\/schema\/person\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"casablanca fans replacement parts Archives - Flush Mount Ceiling Fans","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/flushmountedceilingfans.com\/tag\/casablanca-fans-replacement-parts\/","og_locale":"en_US","og_type":"article","og_title":"casablanca fans replacement parts Archives - Flush Mount Ceiling Fans","og_url":"https:\/\/flushmountedceilingfans.com\/tag\/casablanca-fans-replacement-parts\/","og_site_name":"Flush Mount Ceiling Fans","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"CollectionPage","@id":"https:\/\/flushmountedceilingfans.com\/tag\/casablanca-fans-replacement-parts\/","url":"https:\/\/flushmountedceilingfans.com\/tag\/casablanca-fans-replacement-parts\/","name":"casablanca fans replacement parts Archives - Flush Mount Ceiling Fans","isPartOf":{"@id":"https:\/\/flushmountedceilingfans.com\/#website"},"breadcrumb":{"@id":"https:\/\/flushmountedceilingfans.com\/tag\/casablanca-fans-replacement-parts\/#breadcrumb"},"inLanguage":"en-US"},{"@type":"BreadcrumbList","@id":"https:\/\/flushmountedceilingfans.com\/tag\/casablanca-fans-replacement-parts\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/flushmountedceilingfans.com\/"},{"@type":"ListItem","position":2,"name":"casablanca fans replacement parts"}]},{"@type":"WebSite","@id":"https:\/\/flushmountedceilingfans.com\/#website","url":"https:\/\/flushmountedceilingfans.com\/","name":"Flush Mount Ceiling Fans","description":"Hugger, Low profile, ceiling fans","publisher":{"@id":"https:\/\/flushmountedceilingfans.com\/#\/schema\/person\/0b964f145f343d3e717aa9475a8147fd"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/flushmountedceilingfans.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/flushmountedceilingfans.com\/#\/schema\/person\/0b964f145f343d3e717aa9475a8147fd","name":"admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/flushmountedceilingfans.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/81c586449509aaee7094c40cbf9f9d44?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/81c586449509aaee7094c40cbf9f9d44?s=96&d=mm&r=g","caption":"admin"},"logo":{"@id":"https:\/\/flushmountedceilingfans.com\/#\/schema\/person\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/flushmountedceilingfans.com\/wp-json\/wp\/v2\/tags\/191"}],"collection":[{"href":"https:\/\/flushmountedceilingfans.com\/wp-json\/wp\/v2\/tags"}],"about":[{"href":"https:\/\/flushmountedceilingfans.com\/wp-json\/wp\/v2\/taxonomies\/post_tag"}],"wp:post_type":[{"href":"https:\/\/flushmountedceilingfans.com\/wp-json\/wp\/v2\/posts?tags=191"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}