PageSourceSearch

https://mobilephotokiosk.app/shop/1000?lng=en-US&brand=mpk

html mobilephotokiosk.app collected 2026-09-24 12:53:22 UTC 22,101 bytes, 562 lines download raw bytes

1<!DOCTYPE html>
2
3<html id="pt-body" translate="no" style=" overflow-x: hidden !important;">
4
5<head>
6
7    
7<script>
8        (async function () {
9            window.dotNetInCache = false;
10            window.dotNetStarted = false;
11
12            try {
13                if (self.caches && caches.keys) {
14                    // Pobierz wszystkie nazwy cache
15                    const cacheNames = await caches.keys();
16
17                    for (const name of cacheNames) {
18                        if (name.startsWith('dotnet') || name.startsWith('dotnet-resources-')) {
19                            window.dotNetInCache = true;
20                            break;
21                        }
22                    }
23                }
24            }
25            catch {
26                console.log("DN1-E: Error checking caches");
27            }
28            console.log("DN1: dotNetInCache=", window.dotNetInCache);
29        })();
30    </script>
30
31
32
33    
33<script>
34        function LoadCss(filePath) {
35            document.write("<link rel='stylesheet' href='" + filePath + "?fv=1789989030474'><\/link>");
36        }
37
38        function LoadJs(filePath) {
39            document.write("
39<script type='text/javascript' src='" + filePath + "?fv=1789989030474'><\/script>");
40        }
41        function LoadModuleJs(filePath) {
42            document.write("
42<script type='module' src='" + filePath + "?fv=1789989030474'><\/script>");
43        }
44
45        function LoadJsDeferred(filePath) {
46            var s = document.createElement('script');
47            s.src = filePath + "?fv=1789989030474";
48            s.type = "text/javascript";
49            s.defer = true;   // nie blokuje parsowania
50            s.async = true; // dodatkowo nie czeka na kolejność, jeśli Ci to pasuje
51            document.head.appendChild(s);
52        }
53
54
55        function LoadCssDeferred(filePath) {
56            var l = document.createElement('link');
57            l.rel = 'stylesheet';
58            l.href = filePath + "?fv=1789989030474";
59            l.async = true; // dodatkowo nie czeka na kolejność, jeśli Ci to pasuje
60            // opcjonalnie: l.media = 'print'; l.onload = function(){ this.media='all'; };
61            document.head.appendChild(l);
62        }
63
64        function LoadModuleJsDeferred(filePath) {
65            var s = document.createElement('script');
66            s.src = filePath + "?fv=1789989030474";
67            s.type = "module";
68            s.async = true; // dodatkowo nie czeka na kolejność, jeśli Ci to pasuje
69            // dla modułów nie ma sensu defer (moduły są domyślnie defer),
70            // ważne jest tylko, że nie używamy document.write
71            document.head.appendChild(s);
72        }
73
74        window.ScriptLoader = {
75            loadOnceJs: function (url) {
76                return new Promise(function (resolve, reject) {
77                    // jeśli już załadowany – nie ładuj drugi raz
78                    if (document.querySelector('script[data-dynamic-src="' + url + '"]')) {
79                        resolve();
80                        return;
81                    }
82
83                    var s = document.createElement('script');
84                    s.src = url + "?fv=1789989030474";
85                    s.type = 'text/javascript';
86                    s.async = true;
87                    s.setAttribute('data-dynamic-src', url);
88
89                    s.onload = function () { resolve(); };
90                    s.onerror = function (e) { reject(e); };
91
92                    document.head.appendChild(s);
93                });
94            },
95
96            loadOnceCss: function (url) {
97                return new Promise(function (resolve, reject) {
98                    // jeśli już załadowany – nie ładuj drugi raz
99                    if (document.querySelector('link[data-dynamic-href="' + url + '"]')) {
100                        resolve();
101                        return;
102                    }
103
104                    var l = document.createElement('link');
105                    l.rel = 'stylesheet';
106                    l.href = url + "?fv=1789989030474";
107                    l.setAttribute('data-dynamic-href', url);
108
109                    l.onload = function () { resolve(); };
110                    l.onerror = function (e) { reject(e); };
111
112                    document.head.appendChild(l);
113                });
114            },
115
116            loadOnceModule: function (url) {
117                return new Promise(function (resolve, reject) {
118                    if (document.querySelector('script[type="module"][data-dynamic-src="' + url + '"]')) {
119                        resolve();
120                        return;
121                    }
122
123                    var s = document.createElement('script');
124                    s.src = url + "?fv=1789989030474";
125                    s.type = 'module';
126                    s.async = true;
127                    s.setAttribute('data-dynamic-src', url);
128
129                    s.onload = function () { resolve(); };
130                    s.onerror = function (e) { reject(e); };
131
132                    document.head.appendChild(s);
133                });
134            },
135        };
136    </script>
136
137
138
139    <meta charset="utf-8" />
140    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover, interactive-widget=pan-viewport" />
141    <base href="/shop/" />
142
143    
143<script type="text/javascript">
144        (function () {
145            LoadCss("/shop/css/siteAppSimple.css");
146        })();
147    </script>
147
148
149    
149<script type="text/javascript">
150        (function () {
151            LoadJs("/js/HelperScripts.js");
152            LoadJs("/js/BrandScripts.js");
153            LoadJs("/js/ScrollBarScripts.js");
154            LoadJs("/shop/js/MpkWebAppScripts.js");
155
156        })();
157    </script>
157
158  
159
160</head>
161
162<body>
163    <!-- Loading and app content -->
164    <div id="app">
165        <div class="ptg-loading ptg-start-loading ptg-loading-2">
166            <div class="ptg-loading-full-content-image">
167                <div class="ptg-loading-img ptg-loading-img-init"></div>
168            </div>
169
170            <div class="ptg-loading-full-content-spinner">
171                <div class="ptg-loading-full-content-spinner-body"></div>
172            </div>
173            
174        </div>
175
176    </div>
177
178
179    <!-- Minimal loader -->
180    <div id="ptg-boot" class="ptg-boot" role="status" aria-live="polite">
181        <div class="ptg-boot__bar">
182            <div id="bootBar" class="ptg-boot__barFill"></div>
183        </div>
184        <div id="bootText" class="ptg-boot__text">Loading… 0%</div>
185
186        <div class="ptg-loading-version">
187            <span id="ptg-loading-version-text">v4.2.1</span>
188        </div>
189    </div>
190
191
192    <div id="blazor-error-ui">
193        An unhandled error has occurred.
194        <a href="" class="reload">Reload</a>
195        <a class="dismiss">🗙</a>
196    </div>
197
198    
198<script>
199        (async function () {
200            try { BrandFunctions.InitializeAsync(); } catch (e) { console.warn(e); }
201        })();
202    </script>
202
203
204    <!-- Clean load -->
205    
205<script>
206        document.addEventListener("DOMContentLoaded", function () {
207            const errorUi = document.getElementById("blazor-error-ui");
208
209            if (errorUi) {
210                console.log("DN2: Setting up error observer");
211
212                const observer = new MutationObserver(() => {
213                    console.log("DN2-E: Trigger");
214
215                    if (errorUi.style.display !== "none") {
216                        console.log("DN2-E: Error handling");
217
218                        // Sprawdź warunki i wymuś nawigację do ?clearLoad
219                        if (window.dotNetInCache == true && window.dotNetStarted == false) {
220                            console.log("DN2-E: Force navigation to ?clearLoad");
221
222                            var elementVersion = document.getElementById("ptg-loading-version-text");
223                            if (elementVersion) {
224                                elementVersion.textContent = elementVersion.textContent + " (Clear Load)";
225                            }
226
227                            const url = new URL(window.location.href);
228                            url.searchParams.set("clearLoad", "1");
229                            window.location.href = url.toString();
230                        }
231                    }
232                });
233
234                observer.observe(errorUi, { attributes: true, attributeFilter: ["style"] });
235            }
236        });
237    </script>
237
238
239
240    <!-- BuildIndexVersion -->
241    
241<script>
242        (async function () {
243            // === USTAWIENIA ===
244            // Zmieniaj tę wartość przy nowym deployu:
245            const CURRENT_VERSION = "4"; // <- wpisz aktualną wersję
246            const VERSION_KEY = "BuildIndexVersion";
247            const RELOAD_ON_RESET = true;       // ustaw false, jeśli nie chcesz przeładowania po czyszczeniu
248            const RESET_LOOP_FLAG = "app-reset-in-progress"; // flaga anty-pętla w sessionStorage
249
250            // Krótka pauza dla domknięcia uchwytów (IndexedDB/Cache)
251            const delay = (ms) => new Promise(r => setTimeout(r, ms));
252
253            async function clearCachesAndStorages() {
254
255                // 2) Cache Storage (Cache API)
256                try {
257                    if (self.caches && caches.keys) {
258                        const keys = await caches.keys();
259                        await Promise.all(keys.map(k => caches.delete(k).catch(() => { })));
260                    }
261                } catch { }
262
263                // 4) localStorage / sessionStorage
264                // Uwaga: czyścimy, a następnie zaraz zapiszemy NOWĄ wersję do localStorage.
265                try { localStorage.clear(); } catch { }
266                try { sessionStorage.clear(); } catch { }
267
268                await delay(50);
269            }
270
271            async function ensureVersionOrReset() {
272                // Anty-pętla: jeśli już resetowaliśmy i czekamy na reload, nie rób nic
273                if (sessionStorage.getItem(RESET_LOOP_FLAG) === "1") {
274                    sessionStorage.removeItem(RESET_LOOP_FLAG);
275                    return;
276                }
277
278                const stored = localStorage.getItem(VERSION_KEY);
279
280                // Zgodna wersja → nic nie rób
281                if (stored === CURRENT_VERSION) {
282                    console.log("DN3: Version OK");
283                    return;
284                }
285                console.log("DN3: JS Cache & Storage clear");
286
287                // Wersja różna/brak → czyścimy środowisko
288                try {
289                    // ustaw flagę anty-pętla (na wypadek reloadu)
290                    sessionStorage.setItem(RESET_LOOP_FLAG, "1");
291
292                    await clearCachesAndStorages();
293
294                    // Po czyszczeniu ZAPISUJEMY nową wersję
295                    try { localStorage.setItem(VERSION_KEY, CURRENT_VERSION); } catch { }
296
297                    if (RELOAD_ON_RESET) {
298                        console.log("Full assembly load");
299
300                        try { BootProgress.setFullLoad(true); } catch { }
301
302                        //var elementVersion = document.getElementById("ptg-loading-version-text");
303                        //if (elementVersion) {
304                        //    elementVersion.textContent = elementVersion.textContent + " Full Load";
305                        //}
306
307                        //location.reload();
308                    } else {
309                        // Jeśli nie reloadujemy, po prostu zdejmij flagę
310                        sessionStorage.removeItem(RESET_LOOP_FLAG);
311                    }
312                } catch (e) {
313                    console.error("DN3-E: Cache & Storage Clear Failed", e);
314                    // Spróbuj przynajmniej zapisać wersję, by nie pętlić
315                    try { localStorage.setItem(VERSION_KEY, CURRENT_VERSION); } catch { }
316                    sessionStorage.removeItem(RESET_LOOP_FLAG);
317                }
318            }
319
320            await ensureVersionOrReset();
321
322        })();
323    </script>
323
324
325    <!--Blazor Init-->
326    
326<script src="shop/_framework/blazor.webassembly.js?fv=1789989030474" autostart="false"></script>
326
327
328    
328<script>
329        window.BootProgress = window.BootProgress || {
330            init: function () { },
331            starting: function () { },
332            appApiInit: function () { },
333            appApiSet: function () { },
334            appReady: function () { },
335            error: function () { },
336            setFullLoad: function () { },
337            getBlazorOptions: function () { return {}; }
338        };
339    </script>
339
340    
340<script src="shop/js/boot-progress.js?fv=1789989030474"></script>
340
341    <!--
341<script>
342        BootProgress.init();
343        BootProgress.starting();
344        console.log("BootProgress options", BootProgress.getBlazorOptions());
345        Blazor.start(BootProgress.getBlazorOptions())
346            .then(function () {
347                // Do not hide here. Wait for BootProgress.appReady() from .NET
348                console.log("DN4: Blazor started");
349                window.dotNetStarted = true;
350                window.dispatchEvent(new CustomEvent("blazor:started"));
351            })
352            .catch(function (e) {
353                BootProgress.error();
354                console.error(e);
355                throw e;
356            });
357
358        //Blazor.start().then(function () {
359        //    console.log("DN4: Blazor started");
360        //    window.dotNetStarted = true;
361
362        //});
363    </script>
363-->
364
365
366    
366<script>
367        function safeBootProgressCall(action, fallbackValue) {
368            try {
369                return action();
370            } catch (e) {
371                console.warn("BootProgress fallback:", e);
372                return fallbackValue;
373            }
374        }
375
376        const bootProgress = window.BootProgress;
377        const blazorOptions = safeBootProgressCall(function () {
378            if (!bootProgress || typeof bootProgress.getBlazorOptions !== "function") {
379                return {};
380            }
381
382            const options = bootProgress.getBlazorOptions();
383            return options || {};
384        }, {});
385
386        safeBootProgressCall(function () {
387            if (bootProgress && typeof bootProgress.init === "function") {
388                bootProgress.init();
389            }
390        });
391
392        safeBootProgressCall(function () {
393            if (bootProgress && typeof bootProgress.starting === "function") {
394                bootProgress.starting();
395            }
396        });
397
398        console.log("BootProgress options", blazorOptions);
399
400        Blazor.start(blazorOptions)
401            .then(function () {
402                console.log("DN4: Blazor started");
403                window.dotNetStarted = true;
404                window.dispatchEvent(new CustomEvent("blazor:started"));
405            })
406            .catch(function (e) {
407                safeBootProgressCall(function () {
408                    if (bootProgress && typeof bootProgress.error === "function") {
409                        bootProgress.error();
410                    }
411                });
412
413                console.error(e);
414                //throw e;
415            });
416
417        //Blazor.start().then(function () {
418        //    console.log("DN4: Blazor started");
419        //    window.dotNetStarted = true;
420
421        //});
422    </script>
422
423
424
425    <!--Bootstrap-->
426    <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
427    
427<script defer src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
427
428
429    <!--CSS after Blazor-->
430    
430<script type="text/javascript">
431        (function () {
432            LoadCssDeferred("/shop/_content/PixelTech.BlazorComponents/css/default.css");
433            LoadCssDeferred("/shop/_content/Radzen.Blazor/css/default-base.css");
434            LoadCssDeferred("/shop/MpkWebApp.Client.styles.css");
435            LoadCss("/shop/css/app.css");
436            LoadCss("/shop/css/siteApp.css");
437        })();
438    </script>
438
439
440    <!--JS after Blazor-->
441    
441<script type="text/javascript">
442        (function () {
443            LoadJsDeferred("/shop/_content/Radzen.Blazor/Radzen.Blazor.js");
444            LoadJsDeferred("/shop/_content/PixelTech.BlazorComponents/Scripts/PopupObserver.js");
445            LoadJsDeferred("/shop/_content/PixelTech.BlazorComponents/Scripts/DrawPriceTag.js");
446        })();
447    </script>
447
448
449
450    <!--Others-->
451    
451<script defer src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
451
452    
452<script defer src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
452
453    
453<script defer src="https://cdnjs.cloudflare.com/ajax/libs/jquery.mask/1.14.15/jquery.mask.min.js"></script>
453
454
455    
455<script>
456        (async function () {
457            try { ScrollBarFunctions.Start(); } catch (e) { console.warn(e); }
458            try { MpkWebAppFunctions.Initialize(); } catch (e) { console.warn(e); }
459        })();
460    </script>
460
461
462
463    <!--ServiceWorker for NoStore cache control-->
464    
464<script>
465
466        async function initServiceWorker() {
467            try {
468                //  Wyrejestruj wszystkie istniejące service workery, z których korzysta skrypt "MpkServiceWorker"
469                const registrations = await navigator.serviceWorker.getRegistrations();
470
471                for (const registration of registrations) {
472                    let unregisterThis = (registration.active && registration.active.scriptURL.includes("MpkServiceWorker")) ||
473                        (registration.installing && registration.installing.scriptURL.includes("MpkServiceWorker")) ||
474                        (registration.waiting && registration.waiting.scriptURL.includes("MpkServiceWorker")) ||
475                        (registration.active && registration.active.scriptURL.includes("FetchNoStore")) ||
476                        (registration.installing && registration.installing.scriptURL.includes("FetchNoStore")) ||
477                        (registration.waiting && registration.waiting.scriptURL.includes("FetchNoStore"));
478
479
480                    if (unregisterThis) {
481                        await registration.unregister();
482                        //console.log('Unregistered ', registration.scope);
483                    }
484                }
485
486                // Zarejestruj nowego Service Workera
487                const newRegistration = await navigator.serviceWorker.register('/shop/MpkServiceWorker.js?fv=1789989030474');
488                //console.log('ServiceWorker success registration: ', newRegistration.scope);
489
490            } catch (err) {
491                console.error('ServiceWorker registration failed', err);
492            }
493        }
494
495        // Clear the session cache
496        function clearSessionCache() {
497            caches.delete('session-cache').then(success => {
498                console.log('session-cache > cleared:', success);
499            });
500        }
501
502        // Initialize the service worker
503        initServiceWorker();
504
505        // Use pagehide for most modern browsers
506        window.addEventListener('pagehide', (event) => { clearSessionCache(); });
507
508        // As a fallback, beforeunload may help in some scenarios.
509        window.addEventListener('beforeunload', (event) => { clearSessionCache(); });
510
511        // Tylko dla DEBUG  - Additionally, listen to visibilitychange to catch cases where the page is no longer visible
512        //window.addEventListener('visibilitychange', () => {
513        //    if (document.hidden) {
514        //        console.log('document is hidden via visibilitychange');
515        //        clearSessionCache();
516        //    }
517        //});
518
519        async function removeItemFromServiceWorker(url) {
520            if ('serviceWorker' in navigator && navigator.serviceWorker.controller) {
521                navigator.serviceWorker.controller.postMessage({
522                    type: 'REMOVE_FROM_CACHE',
523                    cacheName: 'session-cache', // Nazwa cache
524                    url: url // URL do usunięcia
525                });
526            } else {
527                console.warn('Service Worker is not active or not supported.');
528            }
529        }
530    </script>
530
531
532    <!--Referenced functions-->
533    
533<script>
534        (function () {
535            function setVh() {
536                var h = (window.visualViewport && window.visualViewport.height) || window.innerHeight;
537                document.documentElement.style.setProperty('--vh', (h * 0.01) + 'px');
538                document.documentElement.style.setProperty('--vvh', (h * 0.01) + 'px');
539                //var kb = Math.max(0, window.innerHeight - window.visualViewport.height - window.visualViewport.offsetTop);
540                if (window.visualViewport.offsetTop > 0) {
541                    var kb = Math.max(0, ((window.visualViewport.height - window.visualViewport.offsetTop) / 2));
542                    document.documentElement.style.setProperty('--kb-bottom', kb + 'px');
543                }
544                else {
545                    document.documentElement.style.setProperty('--kb-bottom', 0 + 'px');
546                }
547
548            }
549            setVh();
550            window.addEventListener('resize', setVh);
551            window.addEventListener('orientationchange', setVh);
552        })();
553
554        window.AfterNpmLoad = function () {
555            window.MpkWebAppNpm = MpkWebAppNpm;
556        }
557
558    </script>
558
559
560</body>
561
562</html>

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.