PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, 3D PDF FlipBook, Google Reviews, YouTube Videos, Upload & Embed PDF documents / 4.6.3
EmbedPress – PDF Embedder, 3D PDF FlipBook, Google Reviews, YouTube Videos, Upload & Embed PDF documents v4.6.3
4.6.3 4.6.2 4.6.1 4.6.0 4.5.6 4.5.5 4.5.4 4.5.3 4.5.2 trunk 1.0.0 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.3.0 1.3.1 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.5.0 1.6.0 1.6.1 1.6.2 1.6.3 1.7.0 1.7.1 1.7.2 1.7.3 1.7.4 1.7.5 2.0.0 2.0.1 2.0.2 2.0.3 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.2.0 2.2.1 2.2.2 2.3.0 2.3.1 2.3.2 2.3.3 2.4.0 2.4.1 2.5.0 2.5.1 2.5.2 2.5.3 2.5.4 2.5.5 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.1.3 3.2.0 3.2.1 3.3.0 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.3.7 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7 3.6.8 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 3.9.1 3.9.10 3.9.11 3.9.12 3.9.13 3.9.14 3.9.15 3.9.16 3.9.17 3.9.2 3.9.3 3.9.4 3.9.5 3.9.6 3.9.7 3.9.8 3.9.9 4.0.0 4.0.1 4.0.10 4.0.11 4.0.12 4.0.13 4.0.14 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.0.9 4.1.0 4.1.1 4.1.10 4.1.2 4.1.3 4.1.4 4.1.5 4.1.6 4.1.7 4.1.8 4.1.9 4.2.0 4.2.1 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 4.2.7 4.2.8 4.2.9 4.3.0 4.3.1 4.4.0 4.4.1 4.4.10 4.4.11 4.4.2 4.4.3 4.4.4 4.4.5 4.4.6 4.4.7 4.4.8 4.4.9 4.5.0 4.5.1
embedpress / assets / js / gallery-justify.js
embedpress / assets / js Last commit date
chunks 3 days ago vendor 10 months ago admin.build.js 1 month ago admin.js 4 months ago analytics-tracker.js 2 months ago analytics.build.js 3 days ago blocks.build.js 3 days ago carousel.js 1 year ago custom-player.build.js 1 month ago documents-viewer-script.js 4 months ago ep-gr-elementor-control.js 1 month ago ep-pdf-lightbox.js 4 months ago ep-view-count.js 1 month ago ep-yt-queue.js 2 months ago feature-notices.js 8 months ago feature-preview-modal.js 1 month ago front.js 1 month ago frontend.build.js 4 months ago gallery-justify.js 1 month ago google-reviews.build.js 3 days ago google-reviews.js 3 days ago gutneberg-script.js 3 months ago index.html 7 years ago initCarousel.js 2 years ago initplyr.js 3 months ago instafeed.js 2 months ago instagram-shortcode-generator.js 2 months ago lazy-load.js 7 months ago license.js 4 months ago meetup-timezone.js 4 months ago onboarding.build.js 1 month ago pdf-gallery-elementor-editor.js 4 months ago pdf-gallery.js 4 months ago preview.js 3 weeks ago settings.js 4 months ago sponsored.js 10 months ago
gallery-justify.js
99 lines
1 (function () {
2 var ROW_HEIGHT = Math.max(180, Math.round((window.screen && screen.height ? screen.height : 900) * 0.2));
3
4 function sizeItem(item, image) {
5 var w = image.naturalWidth;
6 var h = image.naturalHeight;
7 // naturalWidth is 0 while the image is still decoding (or a lazy
8 // image that hasn't entered the viewport yet). Bail and let the
9 // load handler size it later — never write a 0/NaN width, which is
10 // what collapses the whole row in the editor preview.
11 if (!w || !h) {
12 return false;
13 }
14 var ratio = w / h;
15 item.style.width = ROW_HEIGHT * ratio + 'px';
16 item.style.flexGrow = ratio;
17 return true;
18 }
19
20 function justifyGallery(root) {
21 var scope = root && root.querySelectorAll ? root : document;
22 var items = scope.querySelectorAll('.photos-gallery-justify .photo-item');
23
24 items.forEach(function (item) {
25 var image = item.querySelector('img');
26 if (!image) return;
27
28 // Lazy loading keeps off-screen images unloaded, so naturalWidth
29 // stays 0 and the row collapses. The justify layout needs the real
30 // ratio up front, so opt these images out of lazy loading.
31 if (image.getAttribute('loading') === 'lazy') {
32 image.removeAttribute('loading');
33 }
34
35 if (!sizeItem(item, image)) {
36 // Not ready yet — size it once the bytes arrive. decode()
37 // resolves on already-cached images too, with onload as a fallback.
38 var onReady = function () { sizeItem(item, image); };
39 image.addEventListener('load', onReady, { once: true });
40 if (image.decode) {
41 image.decode().then(onReady).catch(function () { /* onload covers it */ });
42 }
43 }
44 });
45 }
46
47 function init() {
48 justifyGallery(document);
49 }
50
51 if (document.readyState === 'loading') {
52 document.addEventListener('DOMContentLoaded', init);
53 } else {
54 init();
55 }
56 window.addEventListener('load', init);
57
58 // Elementor editor (and frontend) re-render widgets via AJAX after the
59 // initial load events have already fired, so re-justify whenever a Google
60 // Photos widget becomes ready.
61 if (window.jQuery) {
62 jQuery(window).on('elementor/frontend/init', function () {
63 if (window.elementorFrontend && elementorFrontend.hooks) {
64 elementorFrontend.hooks.addAction('frontend/element_ready/global', function ($scope) {
65 justifyGallery($scope && $scope[0] ? $scope[0] : document);
66 });
67 }
68 });
69 }
70
71 // Catch any other late DOM injection (block editor preview, AJAX, etc.).
72 if (window.MutationObserver) {
73 var pending = false;
74 var observer = new MutationObserver(function (mutations) {
75 if (pending) return;
76 for (var i = 0; i < mutations.length; i++) {
77 if (mutations[i].addedNodes && mutations[i].addedNodes.length) {
78 pending = true;
79 window.requestAnimationFrame(function () {
80 pending = false;
81 justifyGallery(document);
82 });
83 break;
84 }
85 }
86 });
87 var startObserver = function () {
88 if (document.body) {
89 observer.observe(document.body, { childList: true, subtree: true });
90 }
91 };
92 if (document.readyState === 'loading') {
93 document.addEventListener('DOMContentLoaded', startObserver);
94 } else {
95 startObserver();
96 }
97 }
98 })();
99