PageSourceSearch

https://www.springerpub.com/static/version1789146322/frontend/Mage…/js/view/loaders/block-loader-mixin.js

js springerpub.com collected 2026-09-24 08:47:42 UTC 2,971 bytes, 92 lines download raw bytes

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.