1/** 2 * Copyright © MageWorx. All rights reserved. 3 * See LICENSE.txt for license details. 4 */ 5 6define([ 7 'mage/utils/wrapper', 8 'ko', 9 'jquery', 10 'Magento_Ui/js/lib/knockout/template/loader', 11 'mage/template' 12], function (wrapper,ko, $, templateLoader, template) { 13 'use strict'; 14 15 var blockLoaderTemplatePath = 'MageWorx_Checkout/spinner', 16 blockContentLoadingClass = 'layout__pane--loading', 17 blockLoaderElement = $.Deferred(), 18 loaderImageHref = $.Deferred(), 19 blockLoader, 20 blockLoaderClass; 21 22 templateLoader.loadTemplate(blockLoaderTemplatePath).done(function (blockLoaderTemplate) { 23 loaderImageHref.done(function (loaderHref) { 24 blockLoader = template($.trim(blockLoaderTemplate), { 25 loaderImageHref: loaderHref 26 }); 27 28 blockLoader = $(blockLoader); 29 30 blockLoaderClass = '.' + blockLoader.attr('class'); 31 blockLoaderElement.resolve(); 32 }); 33 }); 34 35 function isLoadingClassRequired(block) { 36 var position = block.css('position'); 37 if (position === 'fixed' || position === 'absolute') { 38 return false; 39 } 40 41 return true; 42 } 43 44 /** 45 * Add mageworx loader to block. 46 */ 47 function addBlockLoader(block) { 48 block.find(':focus').blur(); 49 50 block.find('input:disabled, select:disabled').addClass('_disabled'); 51 block.find('input, select').prop('disabled', true); 52 53 if (isLoadingClassRequired(block)) { 54 block.addClass(blockContentLoadingClass); 55 } 56 block.prepend(blockLoader.clone()); 57 } 58 59 /** 60 * Remove mageworx loader from block. 61 */ 62 function removeBlockLoader(block) { 63 if (!block.has(blockLoaderClass).length) { 64 return; 65 } 66 block.find(blockLoaderClass).remove(); 67 block.find('input:not("._disabled"), select:not("._disabled")').prop('disabled', false); 68 block.find('input:disabled, select:disabled').removeClass('_disabled'); 69 block.removeClass(blockContentLoadingClass); 70 } 71 72 return function (blockLoaderFunction) { 73 return wrapper.wrap(blockLoaderFunction, function (originalBlockLoaderFunctionFunction, loaderHref) { 74 if (window.isMageWorxCheckout) { 75 loaderImageHref.resolve(loaderHref); 76 ko.bindingHandlers.blockLoader = { 77 update: function (element, displayBlockLoader) { 78 element = $(element); 79 80 if (ko.unwrap(displayBlockLoader())) { 81 blockLoaderElement.done(addBlockLoader(element)); 82 } else { 83 blockLoaderElement.done(removeBlockLoader(element)); 84 } 85 } 86 }; 87 } else { 88 originalBlockLoaderFunctionFunction(loaderHref); 89 } 90 }); 91 }; 92});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.