// jloadScriptAsync (Promise) ---------------------------- var jloadScriptAsync = function (d, s, id, src) { return new Promise((resolve, reject) => { try { var fjs = d.getElementsByTagName(s)[0]; const scriptEle = d.createElement(s); scriptEle.id=id; scriptEle.onload = function () { //solo quando script caricato: resolve(scriptEle); } scriptEle.onerror = function (ev) { reject(new Error(`jloadScriptAsync error for ${src}`)); } scriptEle.src = src; fjs.parentNode.insertBefore(scriptEle, fjs); //document.head.append(scriptEle); } catch (error) { reject("110 ➔ jloadScriptAsync "+error); // errore interno alla funzione } }); }; // fine jloadScriptAsync // waitForAWN Funzione che attende che un oggetto JavaScript AWN venga definito function waitForAWN(pollInterval = 100, timeout = 5000) { return new Promise((resolve, reject) => { const startTime = Date.now(); function checkAWN() { if (typeof AWN !== 'undefined' && AWN !== 'undefined') { resolve(AWN); // L'oggetto AWN è stato trovato, risolvi la Promise } else if (Date.now() - startTime >= timeout) { reject(new Error(`Timeout: Oggetto AWN non trovato entro ${timeout}ms`)); // Timeout raggiunto } else { setTimeout(checkAWN, pollInterval); // Prova di nuovo dopo l'intervallo di polling } } checkAWN(); // Inizia il polling }); } // fine waitForAWN (async () => { var pfAWN; var runstep2embedgoskebi_lameccanica_vibrating_sifter_m = async function (d, s){ var targetdiv = d.getElementById("skebi_lameccanica_vibrating_sifter_m"); if(typeof pfAWN == "undefined"){ pfAWN = new AWN({ position: "top-right", durations: { global: 5000, success: 3000, warning: 5000, alert: 0, info: 4000, tip: 2000 }, labels: { success: "SUCCESS", warning: "EMBEDDING WARNING!", alert: "EMBEDDING ERROR!", info: "INFO", tip: "" }, icons: { prefix: "" } }); }else{ } if(targetdiv){ if (!('model' in targetdiv.dataset)) { pfAWN.alert('target [ skebi_lameccanica_vibrating_sifter_m ] (div da elaborare) non ha attributo obbligatorio [ data-model ]!'); }else{ var m = targetdiv.getAttribute('data-model'); if (('key' in targetdiv.dataset)) { var k = targetdiv.getAttribute('data-key'); if (!('ver' in targetdiv.dataset)) { pfAWN.alert( 'target [ skebi_lameccanica_vibrating_sifter_m ] (div da elaborare) non ha attributo obbligatorio [ data-ver ]!'); }else{ var v = targetdiv.getAttribute('data-ver'); if (!('host' in targetdiv.dataset)) { var h = window.location.hostname; }else{ var h = targetdiv.getAttribute('data-host'); } let hostnames = h.split('.'); h = (hostnames.length>1 ? hostnames[hostnames.length-2] + '.' :'') + hostnames[hostnames.length-1]; var param_accettati = {'data-autocc':'^cc$','data-anamorfico':'^[a-z0-9_]{3,}$','data-bcolor':'^[A-F0-9]{6}$','data-icolor':'^[A-F0-9]{6}$','data-lang':'^[a-z]{2}$' }; var optional = {}; for (var att, i = 0, atts = targetdiv.attributes, n = atts.length; i < n; i++){ att = atts[i]; if(Object.keys(param_accettati).indexOf(att.nodeName) != -1){ var regex = new RegExp(Object.values(param_accettati)[Object.keys(param_accettati).indexOf(att.nodeName)]); if(!regex.test(att.nodeValue)) { // input non accettato pfAWN.warning('target [ skebi_lameccanica_vibrating_sifter_m ] (div da elaborare) ha attributo '+att.nodeName+' non conforme '+Object.values(param_accettati)[Object.keys(param_accettati).indexOf(att.nodeName)]+'!', { icons: { suffix: "' style='width: 36px; filter: invert(36%) sepia(85%) saturate(1988%) hue-rotate(20deg) brightness(94%) contrast(101%);' />" }} ); }else{ optional[ att.nodeName ] = att.nodeValue; } } } var queryString = Object.keys(optional).map(function(key) { return key.replace('data-', '') + '=' + optional[key] }).join('&'); if(queryString.length){queryString='/'+queryString}; if(v){ await jloadScriptAsync(d, s, 'jsskebi_lameccanica_vibrating_sifter_m', 'https://skebi.net/3d/skebi_lameccanica_vibrating_sifter_m/'+m+'/'+k+'/'+h+'/'+v+'/goembed' +queryString); // remote script has loaded }else{ await jloadScriptAsync(d, s, 'jsskebi_lameccanica_vibrating_sifter_m', 'https://skebi.net/3d/skebi_lameccanica_vibrating_sifter_m/'+m+'/'+k+'/'+h+'/goembed' +queryString); // remote script has loaded } await runstep3goskebi_lameccanica_vibrating_sifter_m(d, s); } } else if (('shareid' in targetdiv.dataset)) { var shareid = targetdiv.getAttribute('data-shareid'); await jloadScriptAsync(d, s, 'jsskebi_lameccanica_vibrating_sifter_m', 'https://skebi.net/3d/skebi_lameccanica_vibrating_sifter_m/'+m+'/'+shareid+'/goshareembed' ); // remote script has loaded await runstep3sharegoskebi_lameccanica_vibrating_sifter_m(d, s); }else{ pfAWN.alert('target [ skebi_lameccanica_vibrating_sifter_m ] (div da elaborare) non ha attributo obbligatorio [ data-key ] oppure [ data-shareid ]!'); } } }else{ pfAWN.alert('target [ skebi_lameccanica_vibrating_sifter_m ] (div da elaborare) non trovato!'); } } var startembedskebi_lameccanica_vibrating_sifter_m = async function(d, s, idAWN){ try { if (d.getElementById(idAWN)){ }else{ if (typeof AWN != "undefined") { }else{ var AWNcss = d.createElement('link'); AWNcss.type = 'text/css'; AWNcss.id = 'pf_AWNcss'; AWNcss.rel = 'stylesheet'; AWNcss.href = "https://skebi.net/3d/css/static/AWN.css"; d.getElementsByTagName('head')[0].appendChild(AWNcss); await jloadScriptAsync(d, s, idAWN, 'https://skebi.net/3d/libs/static/AWN.js' ); // remote script has loaded } } // attende che oggetto AWN venga definito await waitForAWN(100, 10000); await runstep2embedgoskebi_lameccanica_vibrating_sifter_m(d, s); } catch (error) { alert( "850 ➔ "+error); } } await startembedskebi_lameccanica_vibrating_sifter_m(document, 'script', 'pf_AWNjs'); })();