wonder-image 2.1.2-alpha.2 → 2.1.2-alpha.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/backend/body-end.js +1 -2
- package/dist/backend/body-end.js.map +1 -1
- package/dist/backend/head.css +1 -1
- package/dist/backend/head.css.map +1 -1
- package/dist/backend/head.js +1 -1
- package/dist/backend/head.js.LICENSE.txt +0 -1015
- package/dist/backend/head.js.map +1 -1
- package/dist/backend/lib.js +0 -1
- package/dist/frontend/body-end.js +0 -1
- package/dist/frontend/body-end.js.map +1 -1
- package/dist/frontend/head.css +1 -1
- package/dist/frontend/head.css.map +1 -1
- package/dist/frontend/head.js +1 -2
- package/dist/frontend/head.js.map +1 -1
- package/dist/frontend/lib.js +0 -1
- package/dist/frontend/lib.js.map +1 -1
- package/dist/images/flags/1x1/cn.svg +11 -0
- package/dist/images/flags/1x1/cu.svg +13 -0
- package/dist/images/flags/1x1/cv.svg +13 -0
- package/dist/images/flags/1x1/cw.svg +14 -0
- package/dist/images/flags/1x1/de.svg +5 -0
- package/dist/images/flags/1x1/dk.svg +5 -0
- package/dist/images/flags/1x1/do.svg +122 -0
- package/dist/images/flags/1x1/ee.svg +5 -0
- package/dist/images/flags/1x1/eh.svg +11 -0
- package/dist/images/flags/1x1/er.svg +13 -0
- package/dist/images/flags/1x1/eu.svg +28 -0
- package/dist/images/flags/1x1/fi.svg +5 -0
- package/dist/images/flags/1x1/fj.svg +123 -0
- package/dist/images/flags/1x1/fr.svg +5 -0
- package/dist/images/flags/1x1/gb.svg +7 -0
- package/dist/images/flags/1x1/gf.svg +5 -0
- package/dist/images/flags/1x1/gh.svg +6 -0
- package/dist/images/flags/1x1/gn.svg +7 -0
- package/dist/images/flags/1x1/gp.svg +5 -0
- package/dist/images/flags/1x1/gq.svg +23 -0
- package/dist/images/flags/1x1/gr.svg +16 -0
- package/dist/images/flags/1x1/gs.svg +132 -0
- package/dist/images/flags/1x1/gt.svg +204 -0
- package/dist/images/flags/1x1/gu.svg +19 -0
- package/dist/images/flags/1x1/gw.svg +15 -0
- package/dist/images/flags/1x1/gy.svg +9 -0
- package/dist/images/flags/1x1/hm.svg +8 -0
- package/dist/images/flags/1x1/hn.svg +18 -0
- package/dist/images/flags/1x1/ht.svg +116 -0
- package/dist/images/flags/1x1/hu.svg +7 -0
- package/dist/images/flags/1x1/id.svg +4 -0
- package/dist/images/flags/1x1/im.svg +36 -0
- package/dist/images/flags/1x1/in.svg +25 -0
- package/dist/images/flags/1x1/iq.svg +10 -0
- package/dist/images/flags/1x1/ir.svg +219 -0
- package/dist/images/flags/1x1/is.svg +12 -0
- package/dist/images/flags/1x1/it.svg +7 -0
- package/dist/images/flags/1x1/jm.svg +8 -0
- package/dist/images/flags/1x1/kh.svg +61 -0
- package/dist/images/flags/1x1/km.svg +16 -0
- package/dist/images/flags/1x1/kw.svg +13 -0
- package/dist/images/flags/1x1/lb.svg +15 -0
- package/dist/images/flags/1x1/ls.svg +8 -0
- package/dist/images/flags/1x1/ma.svg +4 -0
- package/dist/images/flags/1x1/mc.svg +6 -0
- package/dist/images/flags/1x1/mg.svg +7 -0
- package/dist/images/flags/1x1/mm.svg +10 -0
- package/dist/images/flags/1x1/mo.svg +9 -0
- package/dist/images/flags/1x1/mp.svg +86 -0
- package/dist/images/flags/1x1/ms.svg +25 -0
- package/dist/images/flags/1x1/mw.svg +15 -0
- package/dist/images/flags/1x1/mx.svg +377 -0
- package/dist/images/flags/1x1/ni.svg +129 -0
- package/dist/images/flags/1x1/nu.svg +10 -0
- package/dist/images/flags/1x1/om.svg +115 -0
- package/dist/images/flags/1x1/pa.svg +13 -0
- package/dist/images/flags/1x1/pc.svg +33 -0
- package/dist/images/flags/1x1/pf.svg +18 -0
- package/dist/images/flags/1x1/pk.svg +15 -0
- package/dist/images/flags/1x1/pl.svg +6 -0
- package/dist/images/flags/1x1/pr.svg +13 -0
- package/dist/images/flags/1x1/pt.svg +57 -0
- package/dist/images/flags/1x1/pw.svg +11 -0
- package/dist/images/flags/1x1/ru.svg +5 -0
- package/dist/images/flags/1x1/sb.svg +13 -0
- package/dist/images/flags/1x1/sh.svg +7 -0
- package/dist/images/flags/1x1/sj.svg +7 -0
- package/dist/images/flags/1x1/sk.svg +9 -0
- package/dist/images/flags/1x1/sn.svg +8 -0
- package/dist/images/flags/1x1/ss.svg +8 -0
- package/dist/images/flags/1x1/sx.svg +56 -0
- package/dist/images/flags/1x1/sz.svg +34 -0
- package/dist/images/flags/1x1/tc.svg +50 -0
- package/dist/images/flags/1x1/tf.svg +15 -0
- package/dist/images/flags/1x1/tj.svg +26 -0
- package/dist/images/flags/1x1/tk.svg +5 -0
- package/dist/images/flags/1x1/tl.svg +13 -0
- package/dist/images/flags/1x1/tm.svg +205 -0
- package/dist/images/flags/1x1/to.svg +10 -0
- package/dist/images/flags/1x1/tt.svg +7 -0
- package/dist/images/flags/1x1/tw.svg +32 -0
- package/dist/images/flags/1x1/ug.svg +30 -0
- package/dist/images/flags/1x1/us.svg +9 -0
- package/dist/images/flags/1x1/uy.svg +28 -0
- package/dist/images/flags/1x1/uz.svg +30 -0
- package/dist/images/flags/1x1/vi.svg +28 -0
- package/dist/images/flags/1x1/vn.svg +11 -0
- package/dist/images/flags/1x1/vu.svg +21 -0
- package/dist/images/flags/1x1/xk.svg +5 -0
- package/dist/images/flags/1x1/zw.svg +21 -0
- package/dist/images/flags/4x3/ad.svg +150 -0
- package/dist/images/flags/4x3/ae.svg +6 -0
- package/dist/images/flags/4x3/af.svg +81 -0
- package/dist/images/flags/4x3/ag.svg +14 -0
- package/dist/images/flags/4x3/ai.svg +29 -0
- package/dist/images/flags/4x3/al.svg +5 -0
- package/dist/images/flags/4x3/am.svg +5 -0
- package/dist/images/flags/4x3/ao.svg +13 -0
- package/dist/images/flags/4x3/aq.svg +5 -0
- package/dist/images/flags/4x3/ar.svg +32 -0
- package/dist/images/flags/4x3/arab.svg +109 -0
- package/dist/images/flags/4x3/as.svg +72 -0
- package/dist/images/flags/4x3/asean.svg +13 -0
- package/dist/images/flags/4x3/at.svg +4 -0
- package/dist/images/flags/4x3/au.svg +8 -0
- package/dist/images/flags/4x3/aw.svg +186 -0
- package/dist/images/flags/4x3/ax.svg +18 -0
- package/dist/images/flags/4x3/az.svg +8 -0
- package/dist/images/flags/4x3/ba.svg +12 -0
- package/dist/images/flags/4x3/bb.svg +6 -0
- package/dist/images/flags/4x3/bd.svg +4 -0
- package/dist/images/flags/4x3/be.svg +7 -0
- package/dist/images/flags/4x3/bf.svg +7 -0
- package/dist/images/flags/4x3/bg.svg +5 -0
- package/dist/images/flags/4x3/bh.svg +4 -0
- package/dist/images/flags/4x3/bi.svg +15 -0
- package/dist/images/flags/4x3/bj.svg +14 -0
- package/dist/images/flags/4x3/bl.svg +5 -0
- package/dist/images/flags/4x3/bm.svg +97 -0
- package/dist/images/flags/4x3/bn.svg +36 -0
- package/dist/images/flags/4x3/bo.svg +673 -0
- package/dist/images/flags/4x3/bq.svg +5 -0
- package/dist/images/flags/4x3/br.svg +45 -0
- package/dist/images/flags/4x3/bs.svg +13 -0
- package/dist/images/flags/4x3/bt.svg +89 -0
- package/dist/images/flags/4x3/bv.svg +13 -0
- package/dist/images/flags/4x3/bw.svg +7 -0
- package/dist/images/flags/4x3/by.svg +18 -0
- package/dist/images/flags/4x3/bz.svg +145 -0
- package/dist/images/flags/4x3/ca.svg +4 -0
- package/dist/images/flags/4x3/cc.svg +19 -0
- package/dist/images/flags/4x3/cd.svg +5 -0
- package/dist/images/flags/4x3/cefta.svg +13 -0
- package/dist/images/flags/4x3/cf.svg +15 -0
- package/dist/images/flags/4x3/cg.svg +12 -0
- package/dist/images/flags/4x3/ch.svg +9 -0
- package/dist/images/flags/4x3/ci.svg +7 -0
- package/dist/images/flags/4x3/ck.svg +9 -0
- package/dist/images/flags/4x3/cl.svg +13 -0
- package/dist/images/flags/4x3/cm.svg +15 -0
- package/dist/images/flags/4x3/co.svg +7 -0
- package/dist/images/flags/4x3/cp.svg +7 -0
- package/dist/images/flags/4x3/cr.svg +7 -0
- package/dist/images/flags/4x3/cx.svg +15 -0
- package/dist/images/flags/4x3/cy.svg +6 -0
- package/dist/images/flags/4x3/cz.svg +5 -0
- package/dist/images/flags/4x3/dg.svg +130 -0
- package/dist/images/flags/4x3/dj.svg +13 -0
- package/dist/images/flags/4x3/dm.svg +152 -0
- package/dist/images/flags/4x3/dz.svg +5 -0
- package/dist/images/flags/4x3/eac.svg +48 -0
- package/dist/images/flags/4x3/ec.svg +138 -0
- package/dist/images/flags/4x3/eg.svg +38 -0
- package/dist/images/flags/4x3/es-ct.svg +4 -0
- package/dist/images/flags/4x3/es-ga.svg +187 -0
- package/dist/images/flags/4x3/es-pv.svg +5 -0
- package/dist/images/flags/4x3/es.svg +544 -0
- package/dist/images/flags/4x3/et.svg +14 -0
- package/dist/images/flags/4x3/fk.svg +90 -0
- package/dist/images/flags/4x3/fm.svg +11 -0
- package/dist/images/flags/4x3/fo.svg +12 -0
- package/dist/images/flags/4x3/ga.svg +7 -0
- package/dist/images/flags/4x3/gb-eng.svg +5 -0
- package/dist/images/flags/4x3/gb-nir.svg +132 -0
- package/dist/images/flags/4x3/gb-sct.svg +4 -0
- package/dist/images/flags/4x3/gb-wls.svg +9 -0
- package/dist/images/flags/4x3/gd.svg +27 -0
- package/dist/images/flags/4x3/ge.svg +6 -0
- package/dist/images/flags/4x3/gg.svg +9 -0
- package/dist/images/flags/4x3/gi.svg +32 -0
- package/dist/images/flags/4x3/gl.svg +4 -0
- package/dist/images/flags/4x3/gm.svg +14 -0
- package/dist/images/flags/4x3/hk.svg +8 -0
- package/dist/images/flags/4x3/hr.svg +58 -0
- package/dist/images/flags/4x3/ic.svg +7 -0
- package/dist/images/flags/4x3/ie.svg +7 -0
- package/dist/images/flags/4x3/il.svg +14 -0
- package/dist/images/flags/4x3/io.svg +130 -0
- package/dist/images/flags/4x3/je.svg +62 -0
- package/dist/images/flags/4x3/jo.svg +16 -0
- package/dist/images/flags/4x3/jp.svg +11 -0
- package/dist/images/flags/4x3/ke.svg +23 -0
- package/dist/images/flags/4x3/kg.svg +4 -0
- package/dist/images/flags/4x3/ki.svg +36 -0
- package/dist/images/flags/4x3/kn.svg +14 -0
- package/dist/images/flags/4x3/kp.svg +15 -0
- package/dist/images/flags/4x3/kr.svg +24 -0
- package/dist/images/flags/4x3/ky.svg +103 -0
- package/dist/images/flags/4x3/kz.svg +36 -0
- package/dist/images/flags/4x3/la.svg +12 -0
- package/dist/images/flags/4x3/lc.svg +8 -0
- package/dist/images/flags/4x3/li.svg +43 -0
- package/dist/images/flags/4x3/lk.svg +22 -0
- package/dist/images/flags/4x3/lr.svg +14 -0
- package/dist/images/flags/4x3/lt.svg +7 -0
- package/dist/images/flags/4x3/lu.svg +5 -0
- package/dist/images/flags/4x3/lv.svg +6 -0
- package/dist/images/flags/4x3/ly.svg +13 -0
- package/dist/images/flags/4x3/md.svg +70 -0
- package/dist/images/flags/4x3/me.svg +116 -0
- package/dist/images/flags/4x3/mf.svg +5 -0
- package/dist/images/flags/4x3/mh.svg +7 -0
- package/dist/images/flags/4x3/mk.svg +5 -0
- package/dist/images/flags/4x3/ml.svg +7 -0
- package/dist/images/flags/4x3/mn.svg +14 -0
- package/dist/images/flags/4x3/mq.svg +5 -0
- package/dist/images/flags/4x3/mr.svg +6 -0
- package/dist/images/flags/4x3/mt.svg +58 -0
- package/dist/images/flags/4x3/mu.svg +8 -0
- package/dist/images/flags/4x3/mv.svg +6 -0
- package/dist/images/flags/4x3/my.svg +26 -0
- package/dist/images/flags/4x3/mz.svg +21 -0
- package/dist/images/flags/4x3/na.svg +16 -0
- package/dist/images/flags/4x3/nc.svg +13 -0
- package/dist/images/flags/4x3/ne.svg +6 -0
- package/dist/images/flags/4x3/nf.svg +9 -0
- package/dist/images/flags/4x3/ng.svg +6 -0
- package/dist/images/flags/4x3/nl.svg +5 -0
- package/dist/images/flags/4x3/no.svg +7 -0
- package/dist/images/flags/4x3/np.svg +13 -0
- package/dist/images/flags/4x3/nr.svg +12 -0
- package/dist/images/flags/4x3/nz.svg +36 -0
- package/dist/images/flags/4x3/pe.svg +4 -0
- package/dist/images/flags/4x3/pg.svg +9 -0
- package/dist/images/flags/4x3/ph.svg +6 -0
- package/dist/images/flags/4x3/pm.svg +5 -0
- package/dist/images/flags/4x3/pn.svg +53 -0
- package/dist/images/flags/4x3/ps.svg +6 -0
- package/dist/images/flags/4x3/py.svg +157 -0
- package/dist/images/flags/4x3/qa.svg +4 -0
- package/dist/images/flags/4x3/re.svg +5 -0
- package/dist/images/flags/4x3/ro.svg +7 -0
- package/dist/images/flags/4x3/rs.svg +292 -0
- package/dist/images/flags/4x3/rw.svg +13 -0
- package/dist/images/flags/4x3/sa.svg +25 -0
- package/dist/images/flags/4x3/sc.svg +7 -0
- package/dist/images/flags/4x3/sd.svg +13 -0
- package/dist/images/flags/4x3/se.svg +4 -0
- package/dist/images/flags/4x3/sg.svg +13 -0
- package/dist/images/flags/4x3/sh-ac.svg +689 -0
- package/dist/images/flags/4x3/sh-hl.svg +164 -0
- package/dist/images/flags/4x3/sh-ta.svg +76 -0
- package/dist/images/flags/4x3/si.svg +18 -0
- package/dist/images/flags/4x3/sl.svg +7 -0
- package/dist/images/flags/4x3/sm.svg +75 -0
- package/dist/images/flags/4x3/so.svg +11 -0
- package/dist/images/flags/4x3/sr.svg +6 -0
- package/dist/images/flags/4x3/st.svg +16 -0
- package/dist/images/flags/4x3/sv.svg +593 -0
- package/dist/images/flags/4x3/sy.svg +6 -0
- package/dist/images/flags/4x3/td.svg +7 -0
- package/dist/images/flags/4x3/tg.svg +14 -0
- package/dist/images/flags/4x3/th.svg +7 -0
- package/dist/images/flags/4x3/tn.svg +4 -0
- package/dist/images/flags/4x3/tr.svg +8 -0
- package/dist/images/flags/4x3/tv.svg +9 -0
- package/dist/images/flags/4x3/tz.svg +13 -0
- package/dist/images/flags/4x3/ua.svg +6 -0
- package/dist/images/flags/4x3/um.svg +9 -0
- package/dist/images/flags/4x3/un.svg +16 -0
- package/dist/images/flags/4x3/va.svg +190 -0
- package/dist/images/flags/4x3/vc.svg +8 -0
- package/dist/images/flags/4x3/ve.svg +26 -0
- package/dist/images/flags/4x3/vg.svg +59 -0
- package/dist/images/flags/4x3/wf.svg +5 -0
- package/dist/images/flags/4x3/ws.svg +7 -0
- package/dist/images/flags/4x3/xx.svg +4 -0
- package/dist/images/flags/4x3/ye.svg +7 -0
- package/dist/images/flags/4x3/yt.svg +5 -0
- package/dist/images/flags/4x3/za.svg +17 -0
- package/dist/images/flags/4x3/zm.svg +27 -0
- package/dist/lib/autonumeric/autonumeric.js +0 -1
- package/dist/lib/autonumeric/autonumeric.js.map +1 -1
- package/dist/lib/bootstrap/bootstrap-datepicker.js +0 -1
- package/dist/lib/bootstrap/bootstrap-datepicker.js.map +1 -1
- package/dist/lib/bootstrap/bootstrap-icons.css +1 -1
- package/dist/lib/bootstrap/bootstrap-icons.css.map +1 -1
- package/dist/lib/bootstrap/bootstrap-icons.js +0 -1
- package/dist/lib/bootstrap/bootstrap.js +0 -1
- package/dist/lib/bootstrap/bootstrap.js.map +1 -1
- package/dist/lib/chartjs/chart.js.LICENSE.txt +1 -1281
- package/dist/lib/colorjs/color.js +0 -1
- package/dist/lib/colorjs/color.js.map +1 -1
- package/dist/lib/datatables/datatables.js.LICENSE.txt +0 -9853
- package/dist/lib/dompurify/dompurify.js.LICENSE.txt +0 -908
- package/dist/lib/editorjs/editor.js.LICENSE.txt +41 -5629
- package/dist/lib/fancyapps/fancyapps.js +0 -1
- package/dist/lib/fancyapps/fancyapps.js.map +1 -1
- package/dist/lib/filepond/filepond.js.LICENSE.txt +0 -2728
- package/dist/lib/fullcalendar/fullcalendar.js +1 -1
- package/dist/lib/fullcalendar/fullcalendar.js.LICENSE.txt +0 -3686
- package/dist/lib/fullcalendar/fullcalendar.js.map +1 -1
- package/dist/lib/image-compare-viewer.js +0 -1
- package/dist/lib/jquery/jquery-plugin.js +1 -2
- package/dist/lib/jquery/jquery-plugin.js.map +1 -1
- package/dist/lib/jquery/jquery.js.LICENSE.txt +0 -3232
- package/dist/lib/jstree/jstree.js +0 -1
- package/dist/lib/jstree/jstree.js.map +1 -1
- package/dist/lib/jszip/jszip.js.LICENSE.txt +0 -42
- package/dist/lib/lipis/flag-icons.css +1 -1
- package/dist/lib/lipis/flag-icons.css.map +1 -1
- package/dist/lib/lipis/flag-icons.js +0 -1
- package/dist/lib/moment/moment.js.LICENSE.txt +0 -619
- package/dist/lib/quilljs/quill.js +0 -1
- package/dist/lib/quilljs/quill.js.map +1 -1
- package/dist/lib/rellax/rellax.js +0 -1
- package/dist/lib/rellax/rellax.js.map +1 -1
- package/dist/lib/select2/select2.js +1 -2
- package/dist/lib/select2/select2.js.map +1 -1
- package/dist/lib/swiperjs/swiper-plugin.js +0 -1
- package/dist/lib/swiperjs/swiper-plugin.js.map +1 -1
- package/dist/lib/swiperjs/swiper.js +0 -1
- package/dist/lib/swiperjs/swiper.js.map +1 -1
- package/dist/lib/videojs/video.js.LICENSE.txt +6 -27809
- package/dist/lib/vivus/vivus.js.LICENSE.txt +0 -518
- package/index.js +2 -1
- package/package.json +23 -21
- package/src/class/DeferredContent.js +110 -0
- package/dist/backend/body-end.js.LICENSE.txt +0 -44
- package/dist/backend/lib.js.LICENSE.txt +0 -1
- package/dist/frontend/body-end.js.LICENSE.txt +0 -44
- package/dist/frontend/head.js.LICENSE.txt +0 -98
- package/dist/frontend/lib.js.LICENSE.txt +0 -239
- package/dist/lib/autonumeric/autonumeric.js.LICENSE.txt +0 -49
- package/dist/lib/bootstrap/bootstrap-datepicker.js.LICENSE.txt +0 -44
- package/dist/lib/bootstrap/bootstrap-icons.js.LICENSE.txt +0 -1
- package/dist/lib/bootstrap/bootstrap.js.LICENSE.txt +0 -44
- package/dist/lib/colorjs/color.js.LICENSE.txt +0 -7
- package/dist/lib/fancyapps/fancyapps.js.LICENSE.txt +0 -9
- package/dist/lib/image-compare-viewer.js.LICENSE.txt +0 -3
- package/dist/lib/jquery/jquery-plugin.js.LICENSE.txt +0 -1200
- package/dist/lib/jstree/jstree.js.LICENSE.txt +0 -44
- package/dist/lib/lipis/flag-icons.js.LICENSE.txt +0 -1
- package/dist/lib/pdfmake/pdfmake.js +0 -3
- package/dist/lib/pdfmake/pdfmake.js.LICENSE.txt +0 -13375
- package/dist/lib/pdfmake/pdfmake.js.map +0 -1
- package/dist/lib/quilljs/quill.js.LICENSE.txt +0 -3068
- package/dist/lib/rellax/rellax.js.LICENSE.txt +0 -143
- package/dist/lib/select2/select2.js.LICENSE.txt +0 -3761
- package/dist/lib/swiperjs/swiper-plugin.js.LICENSE.txt +0 -1174
- package/dist/lib/swiperjs/swiper.js.LICENSE.txt +0 -673
- /package/dist/images/{ad.svg → flags/1x1/ad.svg} +0 -0
- /package/dist/images/{ae.svg → flags/1x1/ae.svg} +0 -0
- /package/dist/images/{af.svg → flags/1x1/af.svg} +0 -0
- /package/dist/images/{ag.svg → flags/1x1/ag.svg} +0 -0
- /package/dist/images/{ai.svg → flags/1x1/ai.svg} +0 -0
- /package/dist/images/{al.svg → flags/1x1/al.svg} +0 -0
- /package/dist/images/{am.svg → flags/1x1/am.svg} +0 -0
- /package/dist/images/{ao.svg → flags/1x1/ao.svg} +0 -0
- /package/dist/images/{aq.svg → flags/1x1/aq.svg} +0 -0
- /package/dist/images/{ar.svg → flags/1x1/ar.svg} +0 -0
- /package/dist/images/{arab.svg → flags/1x1/arab.svg} +0 -0
- /package/dist/images/{as.svg → flags/1x1/as.svg} +0 -0
- /package/dist/images/{asean.svg → flags/1x1/asean.svg} +0 -0
- /package/dist/images/{at.svg → flags/1x1/at.svg} +0 -0
- /package/dist/images/{au.svg → flags/1x1/au.svg} +0 -0
- /package/dist/images/{aw.svg → flags/1x1/aw.svg} +0 -0
- /package/dist/images/{ax.svg → flags/1x1/ax.svg} +0 -0
- /package/dist/images/{az.svg → flags/1x1/az.svg} +0 -0
- /package/dist/images/{ba.svg → flags/1x1/ba.svg} +0 -0
- /package/dist/images/{bb.svg → flags/1x1/bb.svg} +0 -0
- /package/dist/images/{bd.svg → flags/1x1/bd.svg} +0 -0
- /package/dist/images/{be.svg → flags/1x1/be.svg} +0 -0
- /package/dist/images/{bf.svg → flags/1x1/bf.svg} +0 -0
- /package/dist/images/{bg.svg → flags/1x1/bg.svg} +0 -0
- /package/dist/images/{bh.svg → flags/1x1/bh.svg} +0 -0
- /package/dist/images/{bi.svg → flags/1x1/bi.svg} +0 -0
- /package/dist/images/{bj.svg → flags/1x1/bj.svg} +0 -0
- /package/dist/images/{bl.svg → flags/1x1/bl.svg} +0 -0
- /package/dist/images/{bm.svg → flags/1x1/bm.svg} +0 -0
- /package/dist/images/{bn.svg → flags/1x1/bn.svg} +0 -0
- /package/dist/images/{bo.svg → flags/1x1/bo.svg} +0 -0
- /package/dist/images/{bq.svg → flags/1x1/bq.svg} +0 -0
- /package/dist/images/{br.svg → flags/1x1/br.svg} +0 -0
- /package/dist/images/{bs.svg → flags/1x1/bs.svg} +0 -0
- /package/dist/images/{bt.svg → flags/1x1/bt.svg} +0 -0
- /package/dist/images/{bv.svg → flags/1x1/bv.svg} +0 -0
- /package/dist/images/{bw.svg → flags/1x1/bw.svg} +0 -0
- /package/dist/images/{by.svg → flags/1x1/by.svg} +0 -0
- /package/dist/images/{bz.svg → flags/1x1/bz.svg} +0 -0
- /package/dist/images/{ca.svg → flags/1x1/ca.svg} +0 -0
- /package/dist/images/{cc.svg → flags/1x1/cc.svg} +0 -0
- /package/dist/images/{cd.svg → flags/1x1/cd.svg} +0 -0
- /package/dist/images/{cefta.svg → flags/1x1/cefta.svg} +0 -0
- /package/dist/images/{cf.svg → flags/1x1/cf.svg} +0 -0
- /package/dist/images/{cg.svg → flags/1x1/cg.svg} +0 -0
- /package/dist/images/{ch.svg → flags/1x1/ch.svg} +0 -0
- /package/dist/images/{ci.svg → flags/1x1/ci.svg} +0 -0
- /package/dist/images/{ck.svg → flags/1x1/ck.svg} +0 -0
- /package/dist/images/{cl.svg → flags/1x1/cl.svg} +0 -0
- /package/dist/images/{cm.svg → flags/1x1/cm.svg} +0 -0
- /package/dist/images/{co.svg → flags/1x1/co.svg} +0 -0
- /package/dist/images/{cp.svg → flags/1x1/cp.svg} +0 -0
- /package/dist/images/{cr.svg → flags/1x1/cr.svg} +0 -0
- /package/dist/images/{cx.svg → flags/1x1/cx.svg} +0 -0
- /package/dist/images/{cy.svg → flags/1x1/cy.svg} +0 -0
- /package/dist/images/{cz.svg → flags/1x1/cz.svg} +0 -0
- /package/dist/images/{dg.svg → flags/1x1/dg.svg} +0 -0
- /package/dist/images/{dj.svg → flags/1x1/dj.svg} +0 -0
- /package/dist/images/{dm.svg → flags/1x1/dm.svg} +0 -0
- /package/dist/images/{dz.svg → flags/1x1/dz.svg} +0 -0
- /package/dist/images/{eac.svg → flags/1x1/eac.svg} +0 -0
- /package/dist/images/{ec.svg → flags/1x1/ec.svg} +0 -0
- /package/dist/images/{eg.svg → flags/1x1/eg.svg} +0 -0
- /package/dist/images/{es-ct.svg → flags/1x1/es-ct.svg} +0 -0
- /package/dist/images/{es-ga.svg → flags/1x1/es-ga.svg} +0 -0
- /package/dist/images/{es-pv.svg → flags/1x1/es-pv.svg} +0 -0
- /package/dist/images/{es.svg → flags/1x1/es.svg} +0 -0
- /package/dist/images/{et.svg → flags/1x1/et.svg} +0 -0
- /package/dist/images/{fk.svg → flags/1x1/fk.svg} +0 -0
- /package/dist/images/{fm.svg → flags/1x1/fm.svg} +0 -0
- /package/dist/images/{fo.svg → flags/1x1/fo.svg} +0 -0
- /package/dist/images/{ga.svg → flags/1x1/ga.svg} +0 -0
- /package/dist/images/{gb-eng.svg → flags/1x1/gb-eng.svg} +0 -0
- /package/dist/images/{gb-nir.svg → flags/1x1/gb-nir.svg} +0 -0
- /package/dist/images/{gb-sct.svg → flags/1x1/gb-sct.svg} +0 -0
- /package/dist/images/{gb-wls.svg → flags/1x1/gb-wls.svg} +0 -0
- /package/dist/images/{gd.svg → flags/1x1/gd.svg} +0 -0
- /package/dist/images/{ge.svg → flags/1x1/ge.svg} +0 -0
- /package/dist/images/{gg.svg → flags/1x1/gg.svg} +0 -0
- /package/dist/images/{gi.svg → flags/1x1/gi.svg} +0 -0
- /package/dist/images/{gl.svg → flags/1x1/gl.svg} +0 -0
- /package/dist/images/{gm.svg → flags/1x1/gm.svg} +0 -0
- /package/dist/images/{hk.svg → flags/1x1/hk.svg} +0 -0
- /package/dist/images/{hr.svg → flags/1x1/hr.svg} +0 -0
- /package/dist/images/{ic.svg → flags/1x1/ic.svg} +0 -0
- /package/dist/images/{ie.svg → flags/1x1/ie.svg} +0 -0
- /package/dist/images/{il.svg → flags/1x1/il.svg} +0 -0
- /package/dist/images/{io.svg → flags/1x1/io.svg} +0 -0
- /package/dist/images/{je.svg → flags/1x1/je.svg} +0 -0
- /package/dist/images/{jo.svg → flags/1x1/jo.svg} +0 -0
- /package/dist/images/{jp.svg → flags/1x1/jp.svg} +0 -0
- /package/dist/images/{ke.svg → flags/1x1/ke.svg} +0 -0
- /package/dist/images/{kg.svg → flags/1x1/kg.svg} +0 -0
- /package/dist/images/{ki.svg → flags/1x1/ki.svg} +0 -0
- /package/dist/images/{kn.svg → flags/1x1/kn.svg} +0 -0
- /package/dist/images/{kp.svg → flags/1x1/kp.svg} +0 -0
- /package/dist/images/{kr.svg → flags/1x1/kr.svg} +0 -0
- /package/dist/images/{ky.svg → flags/1x1/ky.svg} +0 -0
- /package/dist/images/{kz.svg → flags/1x1/kz.svg} +0 -0
- /package/dist/images/{la.svg → flags/1x1/la.svg} +0 -0
- /package/dist/images/{lc.svg → flags/1x1/lc.svg} +0 -0
- /package/dist/images/{li.svg → flags/1x1/li.svg} +0 -0
- /package/dist/images/{lk.svg → flags/1x1/lk.svg} +0 -0
- /package/dist/images/{lr.svg → flags/1x1/lr.svg} +0 -0
- /package/dist/images/{lt.svg → flags/1x1/lt.svg} +0 -0
- /package/dist/images/{lu.svg → flags/1x1/lu.svg} +0 -0
- /package/dist/images/{lv.svg → flags/1x1/lv.svg} +0 -0
- /package/dist/images/{ly.svg → flags/1x1/ly.svg} +0 -0
- /package/dist/images/{md.svg → flags/1x1/md.svg} +0 -0
- /package/dist/images/{me.svg → flags/1x1/me.svg} +0 -0
- /package/dist/images/{mf.svg → flags/1x1/mf.svg} +0 -0
- /package/dist/images/{mh.svg → flags/1x1/mh.svg} +0 -0
- /package/dist/images/{mk.svg → flags/1x1/mk.svg} +0 -0
- /package/dist/images/{ml.svg → flags/1x1/ml.svg} +0 -0
- /package/dist/images/{mn.svg → flags/1x1/mn.svg} +0 -0
- /package/dist/images/{mq.svg → flags/1x1/mq.svg} +0 -0
- /package/dist/images/{mr.svg → flags/1x1/mr.svg} +0 -0
- /package/dist/images/{mt.svg → flags/1x1/mt.svg} +0 -0
- /package/dist/images/{mu.svg → flags/1x1/mu.svg} +0 -0
- /package/dist/images/{mv.svg → flags/1x1/mv.svg} +0 -0
- /package/dist/images/{my.svg → flags/1x1/my.svg} +0 -0
- /package/dist/images/{mz.svg → flags/1x1/mz.svg} +0 -0
- /package/dist/images/{na.svg → flags/1x1/na.svg} +0 -0
- /package/dist/images/{nc.svg → flags/1x1/nc.svg} +0 -0
- /package/dist/images/{ne.svg → flags/1x1/ne.svg} +0 -0
- /package/dist/images/{nf.svg → flags/1x1/nf.svg} +0 -0
- /package/dist/images/{ng.svg → flags/1x1/ng.svg} +0 -0
- /package/dist/images/{nl.svg → flags/1x1/nl.svg} +0 -0
- /package/dist/images/{no.svg → flags/1x1/no.svg} +0 -0
- /package/dist/images/{np.svg → flags/1x1/np.svg} +0 -0
- /package/dist/images/{nr.svg → flags/1x1/nr.svg} +0 -0
- /package/dist/images/{nz.svg → flags/1x1/nz.svg} +0 -0
- /package/dist/images/{pe.svg → flags/1x1/pe.svg} +0 -0
- /package/dist/images/{pg.svg → flags/1x1/pg.svg} +0 -0
- /package/dist/images/{ph.svg → flags/1x1/ph.svg} +0 -0
- /package/dist/images/{pm.svg → flags/1x1/pm.svg} +0 -0
- /package/dist/images/{pn.svg → flags/1x1/pn.svg} +0 -0
- /package/dist/images/{ps.svg → flags/1x1/ps.svg} +0 -0
- /package/dist/images/{py.svg → flags/1x1/py.svg} +0 -0
- /package/dist/images/{qa.svg → flags/1x1/qa.svg} +0 -0
- /package/dist/images/{re.svg → flags/1x1/re.svg} +0 -0
- /package/dist/images/{ro.svg → flags/1x1/ro.svg} +0 -0
- /package/dist/images/{rs.svg → flags/1x1/rs.svg} +0 -0
- /package/dist/images/{rw.svg → flags/1x1/rw.svg} +0 -0
- /package/dist/images/{sa.svg → flags/1x1/sa.svg} +0 -0
- /package/dist/images/{sc.svg → flags/1x1/sc.svg} +0 -0
- /package/dist/images/{sd.svg → flags/1x1/sd.svg} +0 -0
- /package/dist/images/{se.svg → flags/1x1/se.svg} +0 -0
- /package/dist/images/{sg.svg → flags/1x1/sg.svg} +0 -0
- /package/dist/images/{sh-ac.svg → flags/1x1/sh-ac.svg} +0 -0
- /package/dist/images/{sh-hl.svg → flags/1x1/sh-hl.svg} +0 -0
- /package/dist/images/{sh-ta.svg → flags/1x1/sh-ta.svg} +0 -0
- /package/dist/images/{si.svg → flags/1x1/si.svg} +0 -0
- /package/dist/images/{sl.svg → flags/1x1/sl.svg} +0 -0
- /package/dist/images/{sm.svg → flags/1x1/sm.svg} +0 -0
- /package/dist/images/{so.svg → flags/1x1/so.svg} +0 -0
- /package/dist/images/{sr.svg → flags/1x1/sr.svg} +0 -0
- /package/dist/images/{st.svg → flags/1x1/st.svg} +0 -0
- /package/dist/images/{sv.svg → flags/1x1/sv.svg} +0 -0
- /package/dist/images/{sy.svg → flags/1x1/sy.svg} +0 -0
- /package/dist/images/{td.svg → flags/1x1/td.svg} +0 -0
- /package/dist/images/{tg.svg → flags/1x1/tg.svg} +0 -0
- /package/dist/images/{th.svg → flags/1x1/th.svg} +0 -0
- /package/dist/images/{tn.svg → flags/1x1/tn.svg} +0 -0
- /package/dist/images/{tr.svg → flags/1x1/tr.svg} +0 -0
- /package/dist/images/{tv.svg → flags/1x1/tv.svg} +0 -0
- /package/dist/images/{tz.svg → flags/1x1/tz.svg} +0 -0
- /package/dist/images/{ua.svg → flags/1x1/ua.svg} +0 -0
- /package/dist/images/{um.svg → flags/1x1/um.svg} +0 -0
- /package/dist/images/{un.svg → flags/1x1/un.svg} +0 -0
- /package/dist/images/{va.svg → flags/1x1/va.svg} +0 -0
- /package/dist/images/{vc.svg → flags/1x1/vc.svg} +0 -0
- /package/dist/images/{ve.svg → flags/1x1/ve.svg} +0 -0
- /package/dist/images/{vg.svg → flags/1x1/vg.svg} +0 -0
- /package/dist/images/{wf.svg → flags/1x1/wf.svg} +0 -0
- /package/dist/images/{ws.svg → flags/1x1/ws.svg} +0 -0
- /package/dist/images/{xx.svg → flags/1x1/xx.svg} +0 -0
- /package/dist/images/{ye.svg → flags/1x1/ye.svg} +0 -0
- /package/dist/images/{yt.svg → flags/1x1/yt.svg} +0 -0
- /package/dist/images/{za.svg → flags/1x1/za.svg} +0 -0
- /package/dist/images/{zm.svg → flags/1x1/zm.svg} +0 -0
- /package/dist/images/{cn.svg → flags/4x3/cn.svg} +0 -0
- /package/dist/images/{cu.svg → flags/4x3/cu.svg} +0 -0
- /package/dist/images/{cv.svg → flags/4x3/cv.svg} +0 -0
- /package/dist/images/{cw.svg → flags/4x3/cw.svg} +0 -0
- /package/dist/images/{de.svg → flags/4x3/de.svg} +0 -0
- /package/dist/images/{dk.svg → flags/4x3/dk.svg} +0 -0
- /package/dist/images/{do.svg → flags/4x3/do.svg} +0 -0
- /package/dist/images/{ee.svg → flags/4x3/ee.svg} +0 -0
- /package/dist/images/{eh.svg → flags/4x3/eh.svg} +0 -0
- /package/dist/images/{er.svg → flags/4x3/er.svg} +0 -0
- /package/dist/images/{eu.svg → flags/4x3/eu.svg} +0 -0
- /package/dist/images/{fi.svg → flags/4x3/fi.svg} +0 -0
- /package/dist/images/{fj.svg → flags/4x3/fj.svg} +0 -0
- /package/dist/images/{fr.svg → flags/4x3/fr.svg} +0 -0
- /package/dist/images/{gb.svg → flags/4x3/gb.svg} +0 -0
- /package/dist/images/{gf.svg → flags/4x3/gf.svg} +0 -0
- /package/dist/images/{gh.svg → flags/4x3/gh.svg} +0 -0
- /package/dist/images/{gn.svg → flags/4x3/gn.svg} +0 -0
- /package/dist/images/{gp.svg → flags/4x3/gp.svg} +0 -0
- /package/dist/images/{gq.svg → flags/4x3/gq.svg} +0 -0
- /package/dist/images/{gr.svg → flags/4x3/gr.svg} +0 -0
- /package/dist/images/{gs.svg → flags/4x3/gs.svg} +0 -0
- /package/dist/images/{gt.svg → flags/4x3/gt.svg} +0 -0
- /package/dist/images/{gu.svg → flags/4x3/gu.svg} +0 -0
- /package/dist/images/{gw.svg → flags/4x3/gw.svg} +0 -0
- /package/dist/images/{gy.svg → flags/4x3/gy.svg} +0 -0
- /package/dist/images/{hm.svg → flags/4x3/hm.svg} +0 -0
- /package/dist/images/{hn.svg → flags/4x3/hn.svg} +0 -0
- /package/dist/images/{ht.svg → flags/4x3/ht.svg} +0 -0
- /package/dist/images/{hu.svg → flags/4x3/hu.svg} +0 -0
- /package/dist/images/{id.svg → flags/4x3/id.svg} +0 -0
- /package/dist/images/{im.svg → flags/4x3/im.svg} +0 -0
- /package/dist/images/{in.svg → flags/4x3/in.svg} +0 -0
- /package/dist/images/{iq.svg → flags/4x3/iq.svg} +0 -0
- /package/dist/images/{ir.svg → flags/4x3/ir.svg} +0 -0
- /package/dist/images/{is.svg → flags/4x3/is.svg} +0 -0
- /package/dist/images/{it.svg → flags/4x3/it.svg} +0 -0
- /package/dist/images/{jm.svg → flags/4x3/jm.svg} +0 -0
- /package/dist/images/{kh.svg → flags/4x3/kh.svg} +0 -0
- /package/dist/images/{km.svg → flags/4x3/km.svg} +0 -0
- /package/dist/images/{kw.svg → flags/4x3/kw.svg} +0 -0
- /package/dist/images/{lb.svg → flags/4x3/lb.svg} +0 -0
- /package/dist/images/{ls.svg → flags/4x3/ls.svg} +0 -0
- /package/dist/images/{ma.svg → flags/4x3/ma.svg} +0 -0
- /package/dist/images/{mc.svg → flags/4x3/mc.svg} +0 -0
- /package/dist/images/{mg.svg → flags/4x3/mg.svg} +0 -0
- /package/dist/images/{mm.svg → flags/4x3/mm.svg} +0 -0
- /package/dist/images/{mo.svg → flags/4x3/mo.svg} +0 -0
- /package/dist/images/{mp.svg → flags/4x3/mp.svg} +0 -0
- /package/dist/images/{ms.svg → flags/4x3/ms.svg} +0 -0
- /package/dist/images/{mw.svg → flags/4x3/mw.svg} +0 -0
- /package/dist/images/{mx.svg → flags/4x3/mx.svg} +0 -0
- /package/dist/images/{ni.svg → flags/4x3/ni.svg} +0 -0
- /package/dist/images/{nu.svg → flags/4x3/nu.svg} +0 -0
- /package/dist/images/{om.svg → flags/4x3/om.svg} +0 -0
- /package/dist/images/{pa.svg → flags/4x3/pa.svg} +0 -0
- /package/dist/images/{pc.svg → flags/4x3/pc.svg} +0 -0
- /package/dist/images/{pf.svg → flags/4x3/pf.svg} +0 -0
- /package/dist/images/{pk.svg → flags/4x3/pk.svg} +0 -0
- /package/dist/images/{pl.svg → flags/4x3/pl.svg} +0 -0
- /package/dist/images/{pr.svg → flags/4x3/pr.svg} +0 -0
- /package/dist/images/{pt.svg → flags/4x3/pt.svg} +0 -0
- /package/dist/images/{pw.svg → flags/4x3/pw.svg} +0 -0
- /package/dist/images/{ru.svg → flags/4x3/ru.svg} +0 -0
- /package/dist/images/{sb.svg → flags/4x3/sb.svg} +0 -0
- /package/dist/images/{sh.svg → flags/4x3/sh.svg} +0 -0
- /package/dist/images/{sj.svg → flags/4x3/sj.svg} +0 -0
- /package/dist/images/{sk.svg → flags/4x3/sk.svg} +0 -0
- /package/dist/images/{sn.svg → flags/4x3/sn.svg} +0 -0
- /package/dist/images/{ss.svg → flags/4x3/ss.svg} +0 -0
- /package/dist/images/{sx.svg → flags/4x3/sx.svg} +0 -0
- /package/dist/images/{sz.svg → flags/4x3/sz.svg} +0 -0
- /package/dist/images/{tc.svg → flags/4x3/tc.svg} +0 -0
- /package/dist/images/{tf.svg → flags/4x3/tf.svg} +0 -0
- /package/dist/images/{tj.svg → flags/4x3/tj.svg} +0 -0
- /package/dist/images/{tk.svg → flags/4x3/tk.svg} +0 -0
- /package/dist/images/{tl.svg → flags/4x3/tl.svg} +0 -0
- /package/dist/images/{tm.svg → flags/4x3/tm.svg} +0 -0
- /package/dist/images/{to.svg → flags/4x3/to.svg} +0 -0
- /package/dist/images/{tt.svg → flags/4x3/tt.svg} +0 -0
- /package/dist/images/{tw.svg → flags/4x3/tw.svg} +0 -0
- /package/dist/images/{ug.svg → flags/4x3/ug.svg} +0 -0
- /package/dist/images/{us.svg → flags/4x3/us.svg} +0 -0
- /package/dist/images/{uy.svg → flags/4x3/uy.svg} +0 -0
- /package/dist/images/{uz.svg → flags/4x3/uz.svg} +0 -0
- /package/dist/images/{vi.svg → flags/4x3/vi.svg} +0 -0
- /package/dist/images/{vn.svg → flags/4x3/vn.svg} +0 -0
- /package/dist/images/{vu.svg → flags/4x3/vu.svg} +0 -0
- /package/dist/images/{xk.svg → flags/4x3/xk.svg} +0 -0
- /package/dist/images/{zw.svg → flags/4x3/zw.svg} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontend/head.js","mappings":"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","sources":["webpack://wonder-image/./src/build/frontend/js/form/input.js","webpack://wonder-image/./src/build/frontend/js/form/list.js","webpack://wonder-image/./src/build/frontend/js/form/recaptcha.js","webpack://wonder-image/./src/build/frontend/js/scroll.js","webpack://wonder-image/./src/build/frontend/js/tooltip.js","webpack://wonder-image/./src/build/frontend/js/utility.js","webpack://wonder-image/./src/build/global/js/canvas.js","webpack://wonder-image/./src/build/global/js/fetch.js","webpack://wonder-image/./src/build/global/js/form/autonumeric.js","webpack://wonder-image/./src/build/global/js/form/conditional.js","webpack://wonder-image/./src/build/global/js/form/input.js","webpack://wonder-image/./src/build/global/js/form/maps.js","webpack://wonder-image/./src/build/global/js/form/phone.js","webpack://wonder-image/./src/build/global/js/gmaps.js","webpack://wonder-image/./src/build/global/js/utility.js","webpack://wonder-image/./src/build/global/js/video.js","webpack://wonder-image/./node_modules/script-loader/addScript.js","webpack://wonder-image/./src/build/frontend/js/form/input.js?c14e","webpack://wonder-image/./src/build/frontend/js/form/list.js?d75e","webpack://wonder-image/./src/build/frontend/js/form/recaptcha.js?3877","webpack://wonder-image/./src/build/frontend/js/scroll.js?36f4","webpack://wonder-image/./src/build/frontend/js/tooltip.js?a91c","webpack://wonder-image/./src/build/frontend/js/utility.js?3da5","webpack://wonder-image/./src/build/global/js/canvas.js?1992","webpack://wonder-image/./src/build/global/js/fetch.js?e11d","webpack://wonder-image/./src/build/global/js/form/autonumeric.js?ad99","webpack://wonder-image/./src/build/global/js/form/conditional.js?d434","webpack://wonder-image/./src/build/global/js/form/input.js?1639","webpack://wonder-image/./src/build/global/js/form/maps.js?ed87","webpack://wonder-image/./src/build/global/js/form/phone.js?29c0","webpack://wonder-image/./src/build/global/js/gmaps.js?a9b9","webpack://wonder-image/./src/build/global/js/utility.js?f76e","webpack://wonder-image/./src/build/global/js/video.js?9e89","webpack://wonder-image/webpack/bootstrap","webpack://wonder-image/./src/class/TranslationProvider.js","webpack://wonder-image/./src/class/ApiClient.js","webpack://wonder-image/./src/class/Google/MapManager.js","webpack://wonder-image/./src/build/global/js/helper.js","webpack://wonder-image/./src/class/Google/MapNavigator.js"],"sourcesContent":["module.exports = \"function check() {\\n \\n document.querySelectorAll(\\\"form .wi-submit\\\").forEach(button => {\\n \\n button.removeAttribute(\\\"disabled\\\");\\n \\n var inputList = button.form.elements;\\n\\n for (let i = 0; i < inputList.length; i++) {\\n\\n var input = inputList[i];\\n\\n if (input.closest && input.closest('[data-wi-conditional-hidden=\\\"true\\\"]')) { continue; }\\n\\n if (input.required) {\\n if (input.type == 'checkbox' || input.type == 'radio') {\\n if (input.checked == false) { button.setAttribute(\\\"disabled\\\", null); }\\n } else {\\n if (input.value == \\\"\\\") { button.setAttribute(\\\"disabled\\\", null); }\\n }\\n }\\n\\n if (!input.validity.valid) {\\n button.setAttribute(\\\"disabled\\\", null);\\n }\\n\\n }\\n\\n })\\n\\n}\\n\\nfunction togglePassword(el, id) {\\n\\n var input = document.getElementById(id);\\n\\n if (input.type == 'password') {\\n input.type = 'text'\\n el.classList.remove('bi-eye');\\n el.classList.add('bi-eye-slash');\\n }else{\\n input.type = 'password'\\n el.classList.remove('bi-eye-slash');\\n el.classList.add('bi-eye');\\n }\\n\\n}\\n\\nfunction checkNumber(event) {\\n\\n event.target.value = event.target.value.replace(/[^0-9.]/g, '').replace(/(\\\\..*?)\\\\..*/g, '$1');\\n \\n}\\n\\nfunction labelPositionTop(event) {\\n\\n event.target.parentElement.classList.add('compiled');\\n\\n}\\n\\nfunction labelPosition(event) {\\n\\n var container = event.target.parentElement;\\n\\n if (event.target.value == '' && event.target !== document.activeElement) {\\n container.classList.remove('compiled');\\n } else {\\n container.classList.add('compiled');\\n }\\n\\n}\\n\\nfunction customDateRange(element) {\\n\\n var inputFrom = element.querySelector('input.wi-daterange-from');\\n var inputTo = element.querySelector('input.wi-daterange-to');\\n\\n if (inputFrom.value != '') {\\n $('#'+inputTo.id).datepicker('option', 'minDate', inputFrom.value);\\n }\\n\\n}\\n\\nfunction customDateTimeRange(element) {\\n\\n var inputFrom = element.querySelector('input.wi-datetimerange-from');\\n var inputTo = element.querySelector('input.wi-datetimerange-to');\\n\\n if (inputFrom.value != '') {\\n $('#'+inputTo.id).datetimepicker('option', 'minDate', inputFrom.value);\\n }\\n\\n}\\n\\nfunction checkLabel() {\\n\\n document.querySelectorAll(\\\"[data-wi-label='true']\\\").forEach(element => {\\n \\n var container = element.parentElement;\\n\\n if (element.value == '') {\\n container.classList.remove('compiled');\\n } else {\\n container.classList.add('compiled');\\n }\\n \\n });\\n\\n}\\n\\nfunction checkInputFile(event) {\\n\\n var input = event.target;\\n\\n var inputContainer = input.parentElement;\\n var errorContainer = inputContainer.querySelector('.alert-error');\\n\\n var maxFile = input.dataset.wiMaxFile;\\n var maxSize = input.dataset.wiMaxSize;\\n var prettyMaxSize = ((maxSize/1024)/1024).toFixed(2); // MB\\n\\n var prettyErrorFile = \\\"<i class='bi bi-exclamation-triangle'></i> Hai caricato troppi file! Puoi caricare massimo \\\"+maxFile+\\\" file\\\";\\n var prettyErrorSize = \\\"<i class='bi bi-exclamation-triangle'></i> Hai caricato file troppo grandi! Le dimensioni massime sono di \\\"+prettyMaxSize+\\\"Mb\\\";\\n\\n var files = input.files;\\n\\n inputContainer.classList.remove('input-error');\\n errorContainer.innerHTML = '';\\n\\n for (var x in files) {\\n\\n if(files[x].size > maxSize){\\n\\n inputContainer.classList.add('input-error');\\n errorContainer.innerHTML = prettyErrorSize;\\n input.value = \\\"\\\";\\n break;\\n\\n }\\n\\n }\\n\\n if (files.length > maxFile) {\\n\\n inputContainer.classList.add('input-error');\\n errorContainer.innerHTML = prettyErrorFile;\\n input.value = \\\"\\\";\\n\\n }\\n \\n}\\n\\nfunction inputError(input, error, errorIcon = \\\"<i class='bi bi-exclamation-triangle'></i>\\\") {\\n\\n var inputContainer = input.parentElement;\\n var errorContainer = inputContainer.querySelector('.alert-error');\\n\\n inputContainer.classList.add('input-error');\\n errorContainer.innerHTML = errorIcon+' '+error;\\n input.setCustomValidity(error);\\n\\n}\\n\\nfunction removeInputError(input) {\\n\\n var inputContainer = input.parentElement;\\n var errorContainer = inputContainer.querySelector('.alert-error');\\n \\n inputContainer.classList.remove('input-error');\\n errorContainer.innerHTML = \\\"\\\";\\n input.setCustomValidity(\\\"\\\");\\n\\n}\\n\\nfunction setInput() {\\n\\n document.querySelectorAll(\\\"[data-wi-max-file]\\\").forEach(element => {\\n element.addEventListener(\\\"change\\\", checkInputFile);\\n });\\n\\n document.querySelectorAll(\\\"[data-wi-max-size]\\\").forEach(element => {\\n element.addEventListener(\\\"change\\\", checkInputFile);\\n });\\n \\n document.querySelectorAll(\\\"[data-wi-label='true']\\\").forEach(element => {\\n element.addEventListener(\\\"input\\\", labelPosition);\\n element.addEventListener(\\\"change\\\", labelPosition);\\n element.addEventListener(\\\"focusin\\\", labelPositionTop);\\n element.addEventListener(\\\"focusout\\\", labelPosition);\\n });\\n\\n document.querySelectorAll(\\\"[data-wi-check='true']\\\").forEach(element => {\\n element.addEventListener(\\\"keyup\\\", check);\\n element.addEventListener(\\\"change\\\", check);\\n element.addEventListener(\\\"focusin\\\", check);\\n element.addEventListener(\\\"focusout\\\", check);\\n });\\n\\n document.querySelectorAll(\\\"[data-wi-list-input='true']\\\").forEach(element => {\\n element.addEventListener(\\\"keyup\\\", searchInput);\\n element.addEventListener(\\\"focusin\\\", searchInput);\\n element.addEventListener(\\\"focusin\\\", (event) => { delay(300).then(() => { showList(event) }) });\\n element.addEventListener(\\\"keyup\\\", showList);\\n element.addEventListener(\\\"focusout\\\", hideList);\\n element.addEventListener(\\\"change\\\", controlList);\\n element.addEventListener(\\\"focusout\\\", controlList);\\n });\\n\\n document.querySelectorAll(\\\"[data-wi-search-input='true']\\\").forEach(element => {\\n element.addEventListener(\\\"keyup\\\", showList);\\n element.addEventListener(\\\"keyup\\\", searchResults);\\n element.addEventListener(\\\"change\\\", controlList);\\n element.addEventListener(\\\"focusout\\\", hideList);\\n });\\n\\n document.querySelectorAll(\\\"[data-wi-search-text='true']\\\").forEach(element => {\\n element.addEventListener(\\\"keyup\\\", showList);\\n element.addEventListener(\\\"keyup\\\", searchText);\\n element.addEventListener(\\\"focusout\\\", hideList);\\n });\\n\\n document.querySelectorAll(\\\"[data-wi-search-radio='true']\\\").forEach(element => {\\n element.addEventListener(\\\"keyup\\\", showList);\\n element.addEventListener(\\\"keyup\\\", searchRadio);\\n element.addEventListener(\\\"focusout\\\", hideList);\\n });\\n\\n document.querySelectorAll(\\\"[data-wi-list-value='true']\\\").forEach(element => {\\n element.addEventListener(\\\"click\\\", checkInput);\\n element.addEventListener(\\\"mousedown\\\", checkInput);\\n });\\n\\n document.querySelectorAll(\\\"[data-wi-phone='true']\\\").forEach(element => {\\n checkPhone(element);\\n });\\n\\n setConditional();\\n check();\\n setAutonumeric();\\n setGoogleMapsApi();\\n setInputCountry();\\n setRecaptcha();\\n\\n}\\n\"","module.exports = \"function searchInput(event) {\\n \\n var inputId = event.target.id;\\n var inputValue = event.target.value.toLowerCase();\\n \\n document.querySelectorAll('#list_'+inputId+' input').forEach(x => {\\n \\n var keyword = x.dataset.wiKeyword.toLowerCase();\\n\\n if (keyword.includes(inputValue)) {\\n x.parentElement.style.display = 'block';\\n } else {\\n x.parentElement.style.display = 'none';\\n }\\n \\n });\\n \\n}\\n\\n// const event_CheckInput = new Event(\\\"wi-check-input\\\");\\n\\nfunction checkInput(event) {\\n \\n var container = event.target;\\n\\n if (container.localName == 'div') {\\n var checkbox = container.querySelector('input');\\n } else {\\n var checkbox = container;\\n }\\n\\n var inputId = checkbox.dataset.wiInput;\\n\\n checkbox.checked = true;\\n\\n var input = document.querySelector('#'+inputId);\\n input.value = checkbox.dataset.wiName;\\n // input.dispatchEvent(event_CheckInput);\\n\\n check();\\n\\n}\\n\\nfunction controlList(event) {\\n\\n var element = event.target;\\n var container = event.target.parentElement;\\n \\n var l = element.dataset.wiListArray.split('|');\\n var v = element.value.toLowerCase();\\n\\n if (v != '') {\\n if (l.includes(v)) {\\n\\n removeInputError(element);\\n\\n container.querySelectorAll('input[type=radio]').forEach(e => {\\n\\n var name = e.dataset.wiName;\\n\\n if (name.toLowerCase() == v) {\\n e.checked = true;\\n } else {\\n e.checked = false;\\n }\\n\\n });\\n \\n } else {\\n \\n inputError(element, 'Campo non corretto')\\n container.querySelectorAll('input[type=radio]:checked').forEach(e => { e.checked = false; });\\n \\n }\\n }\\n\\n check();\\n\\n}\\n\\n\\nfunction showList(event) { event.target.parentElement.classList.add('wi-list-active'); }\\n\\nfunction hideList(event) { event.target.parentElement.classList.remove('wi-list-active'); }\\n\\nfunction searchText(event) { searchResults(event, \\\"text\\\"); }\\n\\nfunction searchRadio(event) { searchResults(event, \\\"radio\\\"); }\\n\\nfunction searchResults(event, result) {\\n\\n var input = event.target;\\n\\n var container = input.parentElement;\\n\\n var list = container.querySelector('.wi-input-list');\\n var listValue = list.querySelector('.wi-input-list-body');\\n var listFooter = list.querySelector('.wi-input-list-footer');\\n\\n var inputId = input.id;\\n var inputName = input.dataset.wiName;\\n var inputValue = input.value.toLowerCase();\\n\\n var inputUrl = input.dataset.wiSearchUrl;\\n\\n if (result == 'radio') {\\n var radioName = \\\"name='\\\"+inputName+\\\"'\\\";\\n } else {\\n var radioName = \\\"\\\";\\n }\\n\\n $.ajax({\\n type: \\\"POST\\\",\\n url: inputUrl,\\n data: { \\n post: 'true',\\n search: inputValue\\n }, \\n success: function (data) {\\n\\n const response = JSON.parse(data);\\n const nResponse = response.length;\\n \\n var listHTML = \\\"\\\";\\n\\n for (let index = 0; index < nResponse; index++) {\\n\\n const value = response[index]['value'];\\n const label = response[index]['label'];\\n const inputValue = response[index]['input-value'];\\n\\n listHTML += \\\"<div class='wi-input-list-value' data-wi-list-value='true'><input data-wi-input='\\\"+inputId+\\\"' type='radio' \\\"+radioName+\\\" data-wi-name='\\\"+inputValue+\\\"' value='\\\"+value+\\\"'>\\\"+label+\\\"</div>\\\";\\n\\n }\\n\\n if (inputValue == '') {\\n listFooter.innerHTML = \\\"Cosa stai cercando?\\\";\\n } else if (nResponse == 1) {\\n listFooter.innerHTML = nResponse+\\\" risultato\\\";\\n } else if (nResponse != 1) {\\n listFooter.innerHTML = nResponse+\\\" risultati\\\";\\n }\\n\\n listValue.innerHTML = listHTML;\\n\\n document.querySelectorAll(\\\"[data-wi-list-value='true']\\\").forEach(element => {\\n element.addEventListener(\\\"click\\\", checkInput);\\n element.addEventListener(\\\"mousedown\\\", checkInput);\\n });\\n\\n },\\n error: function (XMLHttpRequest) {\\n ajaxRequestError(XMLHttpRequest);\\n loadingSpinner();\\n }\\n });\\n\\n}\\n\\nfunction textListValue (input, value) {\\n\\n var form = input.form;\\n var inputName = input.dataset.wiName.replace('-text', '');\\n \\n if (value == '') {\\n\\n input.value = '';\\n\\n if (inputChecked = form.querySelector('input[name=\\\"'+inputName+'\\\"]:checked')) {\\n inputChecked.checked = false;\\n }\\n\\n } else {\\n\\n if (form.querySelector('input[name=\\\"'+inputName+'\\\"][value=\\\"'+value+'\\\"]')) {\\n form.querySelector('input[name=\\\"'+inputName+'\\\"][value=\\\"'+value+'\\\"]').click();\\n checkLabel(); \\n }\\n\\n }\\n\\n checkLabel();\\n\\n}\\n\\nfunction textListOptions(input, options) {\\n \\n var listHTML = \\\"\\\";\\n var listArray = [];\\n\\n var form = input.form;\\n var inputId = input.id;\\n var inputAttribute = input.dataset.wiInputAttribute;\\n var inputLabel = input.labels[0];\\n var inputName = input.dataset.wiName.replace('-text', '');;\\n\\n var listContainer = form.querySelector('#list_'+inputId);\\n\\n input.dataset.wiListArray = \\\"\\\";\\n listContainer.innerHTML = \\\"\\\";\\n\\n for (var optionValue in options) {\\n\\n var optionId = \\\"value_\\\"+code();\\n var optionLabel = options[optionValue];\\n\\n listArray.push(optionLabel);\\n \\n listHTML += \\\"<div class='wi-input-list-value' data-wi-list-value='true'><input id='\\\"+optionId+\\\"' data-wi-keyword='\\\"+optionValue+\\\" \\\"+optionLabel+\\\"' data-wi-input='\\\"+inputId+\\\"' data-wi-name='\\\"+optionLabel+\\\"' type='radio' name='\\\"+inputName+\\\"' value='\\\"+optionValue+\\\"'>\\\"+optionLabel+\\\"</div>\\\";\\n\\n }\\n\\n if (listHTML == \\\"\\\") {\\n\\n input.required = false;\\n input.disabled = true;\\n inputLabel.innerHTML = inputLabel.innerHTML.replace('*', '');\\n\\n } else {\\n\\n if (inputAttribute.indexOf('required') != '-1') { \\n\\n input.required = true;\\n\\n if (inputLabel.innerHTML.indexOf('*') == '-1') { \\n inputLabel.innerHTML = inputLabel.innerHTML+'*' \\n }\\n\\n }\\n\\n input.dataset.wiListArray = listArray.join('|').toLowerCase();\\n listContainer.innerHTML = listHTML;\\n\\n }\\n\\n listContainer.querySelectorAll(\\\"[data-wi-list-value='true']\\\").forEach(element => {\\n element.addEventListener(\\\"click\\\", checkInput);\\n element.addEventListener(\\\"mousedown\\\", checkInput);\\n });\\n\\n checkLabel();\\n\\n}\"","module.exports = \"function setRecaptchaInput() {\\n\\n document.querySelectorAll(\\\"form .g-recaptcha\\\").forEach(element => {\\n \\n var form = element.closest('form');\\n\\n var siteKey = element.dataset.wiSiteKey;\\n var theme = element.dataset.wiTheme;\\n var size = element.dataset.wiSize;\\n var action = element.dataset.wiAction;\\n\\n if (action == '') {\\n if (form.id == '') { \\n var action = 'undefined';\\n } else if (form.id != '') {\\n var action = form.id;\\n }\\n }\\n\\n grecaptcha.enterprise.render(element, {\\n\\n sitekey : siteKey,\\n action : action, \\n theme : theme, // light || dark\\n size : size, // compact || normal\\n callback : (token) => {\\n \\n form.querySelector('input[name=\\\"g-recaptcha-token\\\"]').value = token;\\n form.querySelector('input[name=\\\"g-recaptcha-action\\\"]').value = action;\\n\\n check();\\n\\n },\\n 'expired-callback' : () => {\\n \\n form.querySelector('input[name=\\\"g-recaptcha-token\\\"]').value = '';\\n form.querySelector('input[name=\\\"g-recaptcha-action\\\"]').value = '';\\n\\n check();\\n\\n },\\n 'error-callback' : () => {\\n\\n form.querySelector('input[name=\\\"g-recaptcha-token\\\"]').value = '';\\n form.querySelector('input[name=\\\"g-recaptcha-action\\\"]').value = '';\\n\\n check();\\n\\n }\\n\\n });\\n\\n });\\n\\n}\\n\\nfunction setRecaptcha() {\\n\\n if (document.querySelector(\\\"form .g-recaptcha\\\")) {\\n\\n var script = document.createElement('script');\\n script.type = 'text/javascript';\\n script.async = true;\\n script.defer = true;\\n script.src = 'https://www.google.com/recaptcha/enterprise.js?onload=setRecaptchaInput&render=explicit'; \\n\\n document.head.appendChild(script);\\n \\n }\\n\\n}\"","module.exports = \"function scrolla(selector){\\n \\n if (document.querySelector(selector)) {\\n\\n var element = document.querySelector(selector);\\n\\n var headerHeight = '80';\\n\\n if (document.querySelector('header')) {\\n headerHeight = document.querySelector('header').offsetHeight;\\n }\\n\\n element.style.scrollMargin = headerHeight+'px';\\n element.scrollIntoView({ behavior: 'smooth' });\\n\\n } else {\\n\\n console.error(\\\"Selettore ( \\\"+selector+\\\" ) non valido\\\");\\n\\n }\\n\\n}\\n\\nvar keys = {37: 1, 38: 1, 39: 1, 40: 1};\\n\\nfunction preventDefault(e) {\\n e.preventDefault();\\n}\\n\\nfunction preventDefaultForScrollKeys(e) {\\n if (keys[e.keyCode]) {\\n preventDefault(e);\\n return false;\\n }\\n}\\n\\n// modern Chrome requires { passive: false } when adding event\\nvar supportsPassive = false;\\ntry {\\n window.addEventListener(\\\"test\\\", null, Object.defineProperty({}, 'passive', {\\n get: function () { supportsPassive = true; } \\n}));\\n} catch(e) {}\\n\\nvar wheelOpt = supportsPassive ? { passive: false } : false;\\nvar wheelEvent = 'onwheel' in document.createElement('div') ? 'wheel' : 'mousewheel';\\n\\n// call this to Disable\\nfunction disableAllScroll() {\\n window.addEventListener('DOMMouseScroll', preventDefault, false); // older FF\\n window.addEventListener(wheelEvent, preventDefault, wheelOpt); // modern desktop\\n window.addEventListener('touchmove', preventDefault, wheelOpt); // mobile\\n window.addEventListener('keydown', preventDefaultForScrollKeys, false);\\n}\\n\\n// call this to Enable\\nfunction enableAllScroll() {\\n window.removeEventListener('DOMMouseScroll', preventDefault, false);\\n window.removeEventListener(wheelEvent, preventDefault, wheelOpt); \\n window.removeEventListener('touchmove', preventDefault, wheelOpt);\\n window.removeEventListener('keydown', preventDefaultForScrollKeys, false);\\n}\\n\\nfunction disableScroll() {\\n document.querySelector('body').classList.add('block-scroll');\\n}\\n\\nfunction enableScroll() {\\n document.querySelector('body').classList.remove('block-scroll');\\n}\"","module.exports = \"function configTooltip(triggerEL, tooltipEL, config) {\\n\\n var middleware = [\\n FloatingUIDOM.offset(4),\\n FloatingUIDOM.flip(), \\n FloatingUIDOM.shift({ padding: 4 })\\n ];\\n\\n if (config.arrow) { middleware.push( FloatingUIDOM.arrow({ element: tooltipEL.querySelector('.arrow') }) ); }\\n\\n FloatingUIDOM.computePosition(triggerEL, tooltipEL, {\\n placement: config.placement,\\n middleware: middleware\\n }).then(({x, y, placement, middlewareData}) => {\\n\\n Object.assign(tooltipEL.style, { left: `${x}px`, top: `${y}px` });\\n\\n if (config.arrow) {\\n\\n const { x: arrowX, y: arrowY } = middlewareData.arrow;\\n\\n const staticSide = {\\n top: 'bottom',\\n right: 'left',\\n bottom: 'top',\\n left: 'right',\\n }[placement.split('-')[0]];\\n \\n Object.assign(tooltipEL.querySelector('.arrow').style, {\\n left: arrowX != null ? `${arrowX}px` : '',\\n top: arrowY != null ? `${arrowY}px` : '',\\n right: '',\\n bottom: '',\\n [staticSide]: '-4px',\\n });\\n \\n }\\n\\n });\\n\\n}\\n\\nfunction createTooltip(event) {\\n\\n var tooltipId = 'tooltip-'+code();\\n var element = event.target;\\n var elData = element.dataset;\\n\\n var options = [];\\n options.title = elData.wiTitle ?? 'ND';\\n options.placement = elData.wiPlacement ?? 'top';\\n options.arrow = elData.wiArrow == 'true' ? true : false;\\n options.class = elData.wiClass ?? '';\\n\\n element.setAttribute(\\\"aria-describedby\\\", tooltipId);\\n\\n var tooltipContent = options.title;\\n\\n if (options.arrow) { tooltipContent += '<div class=\\\"arrow\\\"></div>'; }\\n\\n var tooltip = document.createElement(\\\"div\\\");\\n tooltip.id = tooltipId;\\n tooltip.innerHTML = tooltipContent;\\n \\n tooltip.setAttribute(\\\"role\\\", 'tooltip');\\n tooltip.setAttribute(\\\"class\\\", 'tooltip '+options.class);\\n\\n tooltip.style.display = 'block';\\n\\n document.body.appendChild(tooltip);\\n\\n configTooltip(element, tooltip, options);\\n\\n}\\n\\nfunction removeTooltip() { document.querySelectorAll('.tooltip').forEach(tooltip => { tooltip.remove(); }); }\\n\\nfunction setTooltip() {\\n\\n document.querySelectorAll('[data-wi-toggle=\\\"tooltip\\\"]').forEach(el => {\\n \\n [\\n ['mouseenter', createTooltip],\\n ['mouseleave', removeTooltip],\\n ['focus', createTooltip],\\n ['blur', removeTooltip],\\n ].forEach(([event, listener]) => { el.addEventListener(event, listener); });\\n \\n });\\n\\n}\"","module.exports = \"function loadingSpinner(action = 'toggle') {\\n\\n const spinner = document.getElementById('loading-spinner');\\n let shouldShow;\\n\\n if (action === 'toggle') {\\n shouldShow = spinner.classList.contains('d-none');\\n } else {\\n shouldShow = action;\\n }\\n\\n if (shouldShow) {\\n if (spinner.classList.contains('d-none')) {\\n spinner.classList.remove('d-none', 'no-interaction');\\n disableScroll();\\n }\\n } else {\\n if (!spinner.classList.contains('d-none')) {\\n spinner.classList.add('d-none', 'no-interaction');\\n enableScroll();\\n }\\n }\\n\\n}\"","module.exports = \"function canvasFullPage(elementId, draw = false) {\\n\\n var element = document.createElement(\\\"CANVAS\\\");\\n element.id = elementId;\\n element.style.position = \\\"fixed\\\";\\n element.style.top = 0;\\n element.style.left = 0;\\n element.style.zIndex = 999999;\\n element.style.background = '#ffffff';\\n element.style.touchAction = 'none';\\n element.style.msTouchAction = 'none';\\n\\n fullPage(element);\\n\\n window.addEventListener('resize', () => { fullPage(element) });\\n\\n if (draw) { canvasDraw(element); }\\n\\n}\\n\\nfunction canvasReset(element) {\\n \\n var ctx = element.getContext(\\\"2d\\\");\\n ctx.clearRect(0, 0, element.width, element.height);\\n ctx.restore();\\n\\n}\\n\\nfunction canvasDraw(element) {\\n\\n var ctx = element.getContext(\\\"2d\\\");\\n \\n let offset = position(element);\\n let painting = false;\\n\\n function drawStart() {\\n offset = position(element);\\n painting = true;\\n draw(e);\\n }\\n\\n function drawEnd() {\\n painting = false;\\n ctx.beginPath();\\n }\\n\\n function draw(e) {\\n\\n if (!painting) return;\\n ctx.lineWidth = 1;\\n ctx.lineCap = \\\"round\\\";\\n ctx.strokeStyle = \\\"black\\\";\\n\\n if (e.type == 'touchmove'){\\n var x = e.touches[0].clientX;\\n var y = e.touches[0].clientY;\\n } else if (e.type == 'mousemove'){\\n var x = e.clientX;\\n var y = e.clientY;\\n }\\n\\n var offsetX = offset.left;\\n var offsetY = offset.top;\\n\\n var x = x - offsetX;\\n var y = y - offsetY;\\n\\n ctx.lineTo(x, y);\\n ctx.stroke();\\n ctx.beginPath();\\n ctx.moveTo(x, y);\\n\\n }\\n\\n element.addEventListener(\\\"mousedown\\\", drawStart);\\n element.addEventListener(\\\"touchstart\\\", drawStart);\\n element.addEventListener(\\\"mouseup\\\", drawEnd);\\n element.addEventListener(\\\"touchend\\\", drawEnd);\\n element.addEventListener(\\\"mousemove\\\", draw);\\n element.addEventListener(\\\"touchmove\\\", draw);\\n\\n}\"","module.exports = \"async function postData(url, data) {\\n\\n loadingSpinner();\\n\\n if (data === undefined) {\\n\\n console.error(\\\"Non è stato passato alcun dato alla funzione postData()\\\");\\n alertToast(800);\\n\\n } else {\\n \\n var form = (data instanceof FormData === false) ? createPostData(data) : data;\\n\\n return await fetch(url, {\\n method: \\\"POST\\\",\\n body: form\\n })\\n .then((response) => { \\n\\n if (response.ok) {\\n\\n return response.json().catch((error) => { \\n\\n console.error(\\\"Il file non risponde in JSON!\\\");\\n throw new Error(802);\\n\\n });\\n\\n } else {\\n\\n console.error(\\\"Impossibile connettersi o trovare il file!\\\");\\n throw new Error(802);\\n\\n }\\n \\n })\\n .then((value) => { \\n \\n if (value.status == 200) {\\n\\n loadingSpinner(); \\n return value;\\n\\n } else if (value.status == 401) {\\n\\n throw new Error(911);\\n\\n } else if (value.status) {\\n\\n throw new Error(value.status);\\n \\n } else {\\n\\n console.error(\\\"La risposta deve avere il seguente formato: \\\", {\\n success: true,\\n status:\\t200,\\n response: {}\\n });\\n\\n throw new Error(803);\\n\\n }\\n\\n })\\n .catch((error) => { \\n \\n loadingSpinner(); \\n alertToast(error.message); \\n\\n })\\n\\n }\\n\\n}\\n\\nfunction createPostData(array = {}) {\\n\\n var data = new FormData();\\n\\n Object.keys(array).forEach(key => {\\n data.append(key, array[key]);\\n });\\n\\n return data;\\n\\n}\\n\\n// Vecchie funzioni\\nfunction fetchResponse(response) {\\n \\n if (response.ok) {\\n\\n return response.json();\\n\\n } else {\\n\\n alertToast(802);\\n console.error(\\\"Impossibile connettersi o trovare il file!\\\");\\n return false;\\n\\n }\\n\\n}\\n\\nfunction fetchValue(value) {\\n \\n if (value == false) {\\n \\n return false;\\n \\n } else {\\n\\n if (value.status == 200) {\\n return value;\\n } else if (value.status == 401) {\\n alertToast(911);\\n return false;\\n } else if (value.status == undefined) {\\n alertToast(803);\\n return false;\\n } else {\\n alertToast(value.status);\\n return false;\\n }\\n\\n }\\n\\n}\\n\\nfunction fetchError(error) {\\n \\n alertToast(802);\\n console.error(\\\"Il file non risponde in JSON!\\\");\\n\\n}\"","module.exports = \"var AUTONUMERIC_NUMBER = {\\n caretPositionOnFocus: 'end',\\n decimalPlacesShownOnFocus: 2,\\n digitGroupSeparator: '',\\n decimalCharacter: '.',\\n onInvalidPaste: 'truncate',\\n currencySymbolPlacement: 's',\\n outputFormat: 'number',\\n unformatOnSubmit: true,\\n modifyValueOnWheel: false\\n};\\n\\nvar AUTONUMERIC_PRICE = {\\n caretPositionOnFocus: 'end',\\n decimalPlacesShownOnFocus: 2,\\n digitGroupSeparator: '',\\n decimalCharacter: '.',\\n onInvalidPaste: 'truncate',\\n currencySymbol: '€',\\n currencySymbolPlacement: 's',\\n outputFormat: 'number',\\n unformatOnSubmit: true,\\n modifyValueOnWheel: false\\n};\\n\\nvar AUTONUMERIC_PERCENTIGE = {\\n caretPositionOnFocus: 'end',\\n decimalPlacesShownOnFocus: 2,\\n digitGroupSeparator: '',\\n decimalCharacter: '.',\\n onInvalidPaste: 'truncate',\\n currencySymbol: '%',\\n currencySymbolPlacement: 's',\\n outputFormat: 'number',\\n unformatOnSubmit: true,\\n modifyValueOnWheel: false\\n};\\n\\nfunction customAutonumeric(element, autonumeric) {\\n\\n var option = {};\\n\\n if (autonumeric.caretPositionOnFocus != undefined) { \\n option.caretPositionOnFocus = autonumeric.caretPositionOnFocus; \\n }\\n\\n if (element.dataset.wiNumberDecimal != undefined) { \\n option.decimalPlacesShownOnFocus = element.dataset.wiNumberDecimal;\\n option.decimalPlaces = element.dataset.wiNumberDecimal;\\n } else {\\n if (autonumeric.decimalPlacesShownOnFocus != undefined) {\\n option.decimalPlacesShownOnFocus = autonumeric.decimalPlacesShownOnFocus;\\n }\\n }\\n\\n if (element.dataset.wiNumberDecimalSeparator != undefined) { \\n option.decimalCharacter = element.dataset.wiNumberDecimalSeparator;\\n } else {\\n if (autonumeric.decimalCharacter != undefined) {\\n option.decimalCharacter = autonumeric.decimalCharacter;\\n }\\n }\\n\\n if (element.dataset.wiNumberGroupSeparator != undefined) { \\n option.digitGroupSeparator = element.dataset.wiNumberGroupSeparator;\\n } else {\\n if (autonumeric.digitGroupSeparator != undefined) {\\n option.digitGroupSeparator = autonumeric.digitGroupSeparator;\\n }\\n }\\n\\n if (autonumeric.onInvalidPaste != undefined) { \\n option.onInvalidPaste = autonumeric.onInvalidPaste; \\n }\\n\\n if (element.dataset.wiNumberSymbol != undefined) { \\n option.currencySymbol = element.dataset.wiNumberSymbol;\\n } else {\\n if (autonumeric.currencySymbol != undefined) {\\n option.currencySymbol = autonumeric.currencySymbol;\\n }\\n }\\n\\n if (element.dataset.wiNumberSymbolPlacement != undefined) { \\n option.currencySymbolPlacement = element.dataset.wiNumberSymbolPlacement;\\n } else {\\n if (autonumeric.currencySymbolPlacement != undefined) {\\n option.currencySymbolPlacement = autonumeric.currencySymbolPlacement;\\n }\\n }\\n\\n if (autonumeric.outputFormat != undefined) { \\n option.outputFormat = autonumeric.outputFormat; \\n }\\n\\n if (autonumeric.unformatOnSubmit != undefined) { \\n option.unformatOnSubmit = autonumeric.unformatOnSubmit; \\n }\\n\\n if (autonumeric.modifyValueOnWheel != undefined) { \\n option.modifyValueOnWheel = autonumeric.modifyValueOnWheel; \\n }\\n\\n return option;\\n \\n}\\n\\nfunction setAutonumeric() {\\n \\n document.querySelectorAll(\\\"[data-wi-number='true']\\\").forEach(element => {\\n \\n var el = AutoNumeric.getAutoNumericElement(element);\\n \\n if (el === null) {\\n\\n new AutoNumeric(element, customAutonumeric(element, AUTONUMERIC_NUMBER)); \\n \\n }\\n\\n });\\n\\n document.querySelectorAll(\\\"[data-wi-price='true']\\\").forEach(element => {\\n \\n var el = AutoNumeric.getAutoNumericElement(element);\\n if (el === null) { new AutoNumeric(element, customAutonumeric(element, AUTONUMERIC_PRICE)); }\\n\\n });\\n \\n document.querySelectorAll(\\\"[data-wi-percentige='true']\\\").forEach(element => {\\n \\n var el = AutoNumeric.getAutoNumericElement(element);\\n if (el === null) { new AutoNumeric(element, customAutonumeric(element, AUTONUMERIC_PERCENTIGE)); }\\n\\n });\\n\\n}\"","module.exports = \"function wiConditionalControls(field, name) {\\n\\n var scope = field.form || document;\\n var controls = [];\\n var normalizedName = String(name || \\\"\\\").replace(/\\\\[\\\\]$/, \\\"\\\");\\n\\n scope.querySelectorAll(\\\"[name]\\\").forEach(function(control) {\\n var controlName = String(control.name || \\\"\\\").replace(/\\\\[\\\\]$/, \\\"\\\");\\n\\n if (controlName === normalizedName) { controls.push(control); }\\n });\\n\\n return controls;\\n\\n}\\n\\nfunction wiConditionalDriverValues(field, name) {\\n\\n var values = [];\\n var controls = wiConditionalControls(field, name);\\n var hasValueControl = controls.some(function(control) {\\n return (control.type || \\\"\\\").toLowerCase() !== \\\"hidden\\\";\\n });\\n\\n controls.forEach(function(control) {\\n\\n var type = (control.type || \\\"\\\").toLowerCase();\\n\\n if (type === \\\"hidden\\\" && hasValueControl) { return; }\\n\\n if (type === \\\"radio\\\" || type === \\\"checkbox\\\") {\\n if (control.checked) { values.push(String(control.value)); }\\n return;\\n }\\n\\n if (control.multiple && control.options) {\\n Array.from(control.options).forEach(function(option) {\\n if (option.selected) { values.push(String(option.value)); }\\n });\\n return;\\n }\\n\\n if (control.value !== undefined && control.value !== \\\"\\\") {\\n values.push(String(control.value));\\n }\\n\\n });\\n\\n return values;\\n\\n}\\n\\nfunction wiConditionalDriverValue(field, name) {\\n\\n var values = wiConditionalDriverValues(field, name);\\n\\n return values.length ? values[values.length - 1] : \\\"\\\";\\n\\n}\\n\\nfunction wiConditionalWrapper(field) {\\n\\n var explicit = field.closest(\\\"[data-wi-conditional-container]\\\");\\n if (explicit) { return explicit; }\\n\\n var row = field.closest(\\\"[data-wi-input-row]\\\");\\n if (row) { return row; }\\n\\n var wonder = field.closest(\\\".wi-input-container\\\");\\n if (wonder) {\\n var wonderParent = wonder.parentElement;\\n\\n if (field.form && wonderParent && wonderParent.parentElement === field.form && wonderParent.children.length === 1) {\\n return wonderParent;\\n }\\n\\n return wonder;\\n }\\n\\n var floating = field.closest(\\\".form-floating\\\");\\n if (floating) { return floating.parentElement || floating; }\\n\\n var bootstrap = field.closest('[id^=\\\"container-\\\"]');\\n if (bootstrap) { return bootstrap.parentElement || bootstrap; }\\n\\n var group = field.closest(\\\"[data-wi-date-range], [data-wi-date-time-range], .input-group\\\");\\n if (group) { return group.parentElement || group; }\\n\\n return field.parentElement;\\n\\n}\\n\\nfunction wiSetConditionalVisibility(field, show) {\\n\\n var wrapper = wiConditionalWrapper(field);\\n\\n if (!field.dataset.wiConditionalRequired) {\\n field.dataset.wiConditionalRequired = field.required ? \\\"required\\\" : \\\"optional\\\";\\n }\\n\\n field.required = show && field.dataset.wiConditionalRequired === \\\"required\\\";\\n\\n if (!wrapper) { return; }\\n\\n if (!wrapper.dataset.wiConditionalDisplayCaptured) {\\n wrapper.dataset.wiConditionalDisplayCaptured = \\\"1\\\";\\n wrapper.dataset.wiConditionalDisplay = wrapper.style.display || \\\"\\\";\\n wrapper.dataset.wiConditionalAriaHidden = wrapper.getAttribute(\\\"aria-hidden\\\") || \\\"\\\";\\n wrapper.dataset.wiConditionalAriaHiddenPresent = wrapper.hasAttribute(\\\"aria-hidden\\\") ? \\\"1\\\" : \\\"0\\\";\\n }\\n\\n if (show) {\\n wrapper.style.display = wrapper.dataset.wiConditionalDisplay || \\\"\\\";\\n\\n if (wrapper.dataset.wiConditionalAriaHiddenPresent === \\\"1\\\") {\\n wrapper.setAttribute(\\\"aria-hidden\\\", wrapper.dataset.wiConditionalAriaHidden);\\n } else {\\n wrapper.removeAttribute(\\\"aria-hidden\\\");\\n }\\n\\n wrapper.removeAttribute(\\\"data-wi-conditional-hidden\\\");\\n return;\\n }\\n\\n wrapper.style.display = \\\"none\\\";\\n wrapper.setAttribute(\\\"aria-hidden\\\", \\\"true\\\");\\n wrapper.setAttribute(\\\"data-wi-conditional-hidden\\\", \\\"true\\\");\\n\\n}\\n\\nfunction wiEvaluateConditional() {\\n\\n document.querySelectorAll(\\\"[data-visible-when], [data-hidden-when]\\\").forEach(function(field) {\\n\\n var isVisibleRule = field.hasAttribute(\\\"data-visible-when\\\");\\n var name = isVisibleRule ? field.dataset.visibleWhen : field.dataset.hiddenWhen;\\n var list = (isVisibleRule ? field.dataset.visibleWhenValues : field.dataset.hiddenWhenValues) || \\\"\\\";\\n var expected = list.split(\\\",\\\").map(function(item) { return item.trim(); });\\n var current = wiConditionalDriverValues(field, name);\\n\\n if (!current.length) { current = [\\\"\\\"]; }\\n\\n var matches = current.some(function(value) { return expected.indexOf(value) !== -1; });\\n var show = isVisibleRule ? matches : !matches;\\n\\n wiSetConditionalVisibility(field, show);\\n\\n });\\n\\n if (typeof check === \\\"function\\\") { check(); }\\n\\n}\\n\\nfunction setConditional(container = document) {\\n\\n var selector = \\\"[data-visible-when], [data-hidden-when]\\\";\\n var fields = Array.from(container.querySelectorAll(selector));\\n\\n if (container.matches && container.matches(selector)) {\\n fields.unshift(container);\\n }\\n\\n if (!fields.length) { return; }\\n\\n fields.forEach(function(field) {\\n\\n var name = field.dataset.visibleWhen || field.dataset.hiddenWhen;\\n if (!name) { return; }\\n\\n wiConditionalControls(field, name).forEach(function(control) {\\n if (control.wiConditionalBound === true) { return; }\\n\\n control.wiConditionalBound = true;\\n control.dataset.wiConditionalBound = \\\"1\\\";\\n control.addEventListener(\\\"change\\\", wiEvaluateConditional);\\n control.addEventListener(\\\"input\\\", wiEvaluateConditional);\\n });\\n\\n });\\n\\n wiEvaluateConditional();\\n\\n}\\n\"","module.exports = \"function setRequired(element, required = true) {\\n \\n labelAsterisk(element, required);\\n\\n element.required = required;\\n\\n}\\n\\nfunction setDisabled(element, disabled = true) {\\n \\n labelAsterisk(element, disabled ? false : true);\\n\\n if (disabled) {\\n if (element.type === 'checkbox' || element.type === 'radio') { element.checked = false; }\\n }\\n\\n element.disabled = disabled;\\n\\n}\\n\\nfunction labelAsterisk(input, asterisk = true)\\n{\\n\\n if (input.labels) {\\n \\n var label = input.labels[0];\\n var labelValue = label.innerHTML;\\n var hasAsterisk = (labelValue.substring(labelValue.length - 1) == '*') ? true : false;\\n \\n if (asterisk) {\\n if (!hasAsterisk) { label.innerHTML = labelValue+'*'; }\\n } else {\\n if (hasAsterisk) { label.innerHTML = labelValue.replace('*', ''); }\\n }\\n\\n }\\n\\n}\\n\\nfunction changeInputId(el) \\n{\\n\\n const idEl = 'field_' + code(10).toLowerCase();\\n const labelEl = el.parentElement.querySelector('.wi-label, .wi-checkbox-label');\\n\\n if (labelEl !== null) {\\n el.id = idEl;\\n labelEl.htmlFor = idEl;\\n }\\n\\n}\"","module.exports = \"function setGoogleMapsApi() {\\n\\n if (document.querySelector(\\\"[data-wi-search-place]\\\")) {\\n\\n /**\\n * \\n * Se ci sono degli input Place chiama le API di Google Place\\n * Documentazione: https://developers.google.com/maps/documentation/javascript/place-autocomplete?hl=it\\n * \\n */\\n\\n var script = document.createElement('script');\\n script.type = 'text/javascript';\\n script.async = true;\\n script.src = 'https://maps.googleapis.com/maps/api/js?key='+GOOGLE_API_KEY+'&loading=async&libraries=places&callback=initGoogleMapsPlace'; \\n\\n document.head.appendChild(script);\\n \\n }\\n\\n}\\n\\nfunction initGoogleMapsPlace() {\\n\\n document.querySelectorAll(\\\"[data-wi-search-place='true']\\\").forEach(input => {\\n\\n var callback = input.dataset.wiCallback ?? checkInputPlace;\\n\\n input.disabled = false;\\n \\n var options = {};\\n\\n if (input.dataset.wiRestriction && input.dataset.wiRestriction != '[]') { \\n\\n var restrictions = JSON.parse(input.dataset.wiRestriction);\\n options.componentRestrictions = restrictions; \\n \\n }\\n\\n options.fields = [ \\\"address_components\\\", \\\"geometry\\\" ];\\n options.types = [ \\\"address\\\" ];\\n \\n var googlePlace = new google.maps.places.Autocomplete(input, options);\\n\\n input.addEventListener(\\\"change\\\", () => { placeNeedCheck(input); });\\n googlePlace.addListener(\\\"place_changed\\\", () => { window[callback](input, googlePlace); });\\n\\n });\\n\\n}\\n\\nfunction placeNeedCheck(input) {\\n\\n inputError(input, 'Indirizzo non valido, è necessario selezionare un indirizzo dall\\\\'elenco!');\\n\\n}\\n\"","module.exports = \"function checkPhone(element) {\\n \\n var phones = [\\n { \\\"mask\\\": \\\"### ### ####\\\"}\\n ];\\n\\n new Inputmask({ \\n mask: phones, \\n greedy: false, \\n placeholder: '', \\n definitions: { \\n '#': { \\n validator: \\\"[0-9]\\\", \\n cardinality: 1\\n }\\n } \\n }).mask(element);\\n\\n}\"","module.exports = \"// Loader dell'API Google Maps JS (Dynamic Library Import) + marker builder di default.\\n// Uso: await requireGoogleMaps(['maps', 'places', 'marker']); poi inizializzare la mappa.\\nasync function requireGoogleMaps(libs = [ 'maps', 'places', 'marker' ], options = {}) {\\n\\n const {\\n key = (typeof GOOGLE_API_KEY !== 'undefined' ? GOOGLE_API_KEY : ''),\\n v = 'weekly',\\n language = null\\n } = options;\\n\\n const params = { key, v };\\n if (language) { params.language = language; }\\n\\n (g=>{var h,a,k,p=\\\"The Google Maps JavaScript API\\\",c=\\\"google\\\",l=\\\"importLibrary\\\",q=\\\"__ib__\\\",m=document,b=window;b=b[c]||(b[c]={});var d=b.maps||(b.maps={}),r=new Set,e=new URLSearchParams,u=()=>h||(h=new Promise(async(f,n)=>{await (a=m.createElement(\\\"script\\\"));e.set(\\\"libraries\\\",[...r]+\\\"\\\");for(k in g)e.set(k.replace(/[A-Z]/g,t=>\\\"_\\\"+t[0].toLowerCase()),g[k]);e.set(\\\"callback\\\",c+\\\".maps.\\\"+q);a.src=`https://maps.${c}apis.com/maps/api/js?`+e;d[q]=f;a.onerror=()=>h=n(Error(p+\\\" could not load.\\\"));a.nonce=m.querySelector(\\\"script[nonce]\\\")?.nonce||\\\"\\\";m.head.append(a)}));d[l]?console.warn(p+\\\" only loads once. Ignoring:\\\",g):d[l]=(f,...n)=>r.add(f)&&u().then(()=>d[l](f,...n))})(params);\\n\\n for (const lib of libs) {\\n await google.maps.importLibrary(lib);\\n }\\n\\n}\\n\\n// Builder di default per il contenuto di un AdvancedMarkerElement.\\n// properties: { id, type, icon, image, name, address, url, badgeText }\\n// Per un markup diverso passare la propria funzione a MapManager.addAdvancedMarker().\\nfunction gmapMarkerConstructor(properties) {\\n\\n const content = document.createElement(\\\"div\\\");\\n\\n if (properties.id) { content.id = `marker-${properties.id}`; }\\n content.classList.add(\\\"wi-marker\\\");\\n if (properties.type) { content.classList.add(`wi-marker-${properties.type}`); }\\n\\n const image = properties.image ? `\\n <div class=\\\"w-30 b-r-10 o-hidden\\\">\\n <div class=\\\"f-3-2\\\">\\n ${properties.image}\\n </div>\\n </div>` : '';\\n\\n const address = properties.address ? `<div class=\\\"text-small mt-1\\\">${properties.address}</div>` : '';\\n\\n const badge = properties.url ? `\\n <div class=\\\"features mt-2\\\">\\n <a href=\\\"${properties.url}\\\" class=\\\"badge badge-primary\\\">\\n ${properties.badgeText ?? ''}\\n </a>\\n </div>` : '';\\n\\n content.innerHTML = `\\n <div class=\\\"icon\\\">\\n <div class=\\\"f-1-1\\\">\\n ${properties.icon ?? ''}\\n </div>\\n </div>\\n <div class=\\\"details\\\">\\n ${image}\\n <div class=\\\"${properties.image ? 'w-70 pl-2' : 'w-100'} box-border\\\">\\n <div class=\\\"text fw-400\\\">${properties.name ?? ''}</div>\\n ${address}\\n ${badge}\\n </div>\\n </div>\\n `;\\n\\n return content;\\n\\n}\\n\\n// Espande/comprime un marker (classe .highlight su .wi-marker)\\nfunction toggleHighlight(markerView) {\\n\\n if (!markerView || !markerView.content || !markerView.content.classList) { return; }\\n\\n if (markerView.content.classList.contains(\\\"highlight\\\")) {\\n markerView.content.classList.remove(\\\"highlight\\\");\\n markerView.zIndex = null;\\n } else {\\n markerView.content.classList.add(\\\"highlight\\\");\\n markerView.zIndex = 1;\\n }\\n\\n}\\n\"","module.exports = \"function position(element, showItem = false) {\\n\\n var rect = element.getBoundingClientRect();\\n\\n if (showItem) {\\n\\n var width = rect.right - rect.left;\\n var height = rect.bottom - rect.top;\\n\\n var element = document.createElement(\\\"DIV\\\");\\n element.style.position = \\\"fixed\\\";\\n element.style.top = rect.top+'px';\\n element.style.left = rect.left+'px';\\n element.style.width = width+'px';\\n element.style.height = height+'px';\\n element.style.zIndex = 999999;\\n element.style.background = 'rgba(255, 0, 0, .2)';\\n document.body.appendChild(element);\\n\\n }\\n\\n return rect;\\n\\n}\\n\\nfunction fullPage(element) {\\n element.width = window.innerWidth;\\n element.height = window.innerHeight;\\n}\\n\\nfunction copyText(text, icon = null) {\\n\\n if (icon != null) {\\n document.querySelectorAll('.bi-clipboard-check').forEach(element => {\\n element.classList.remove('bi-clipboard-check')\\n element.classList.add('bi-clipboard');\\n });\\n }\\n\\n navigator.clipboard.writeText(text).then(() => {\\n if (icon != null) {\\n icon.classList.remove('bi-clipboard');\\n icon.classList.add('bi-clipboard-check');\\n }\\n },() => {\\n if (icon != null) {\\n icon.classList.remove('bi-clipboard');\\n icon.classList.add('bi-clipboard-x');\\n }\\n });\\n\\n}\\n\\nfunction ajaxRequestError(request) {\\n \\n if (request.readyState == 4) {\\n alertToast(802);\\n } else if (request.readyState == 0) {\\n alertToast(801);\\n } else {\\n alertToast(800);\\n }\\n\\n}\\n\\nfunction code(codeLength = 10) {\\n\\n var result = '';\\n var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';\\n var charactersLength = characters.length;\\n\\n for ( var i = 0; i < codeLength; i++ ) {\\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\\n }\\n\\n return result;\\n\\n}\\n\\nfunction isMobile() {\\n\\n if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {\\n return true;\\n } else {\\n return false;\\n }\\n \\n}\\n\\nfunction delay(time) {\\n\\n return new Promise(resolve => setTimeout(resolve, time));\\n\\n}\\n\\n// Previene l'uscita dalla pagina\\nfunction preventPageExit(event) {\\n \\n event.preventDefault();\\n event.returnValue = true;\\n\\n}\"","module.exports = \"function setVideoJS() {\\n\\n document.querySelectorAll(\\\".video-js\\\").forEach(element => {\\n videojs(element);\\n });\\n\\n}\"","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\nmodule.exports = function(src) {\n\tfunction log(error) {\n\t\t(typeof console !== \"undefined\")\n\t\t&& (console.error || console.log)(\"[Script Loader]\", error);\n\t}\n\n\t// Check for IE =< 8\n\tfunction isIE() {\n\t\treturn typeof attachEvent !== \"undefined\" && typeof addEventListener === \"undefined\";\n\t}\n\n\ttry {\n\t\tif (typeof execScript !== \"undefined\" && isIE()) {\n\t\t\texecScript(src);\n\t\t} else if (typeof eval !== \"undefined\") {\n\t\t\teval.call(null, src);\n\t\t} else {\n\t\t\tlog(\"EvalError: No eval function available\");\n\t\t}\n\t} catch (error) {\n\t\tlog(error);\n\t}\n}\n","require(\"!!/Users/andreamarinoni/Developer/packages/lib/node_modules/script-loader/addScript.js\")(require(\"!!/Users/andreamarinoni/Developer/packages/lib/node_modules/raw-loader/index.js!/Users/andreamarinoni/Developer/packages/lib/src/build/frontend/js/form/input.js\"))","require(\"!!/Users/andreamarinoni/Developer/packages/lib/node_modules/script-loader/addScript.js\")(require(\"!!/Users/andreamarinoni/Developer/packages/lib/node_modules/raw-loader/index.js!/Users/andreamarinoni/Developer/packages/lib/src/build/frontend/js/form/list.js\"))","require(\"!!/Users/andreamarinoni/Developer/packages/lib/node_modules/script-loader/addScript.js\")(require(\"!!/Users/andreamarinoni/Developer/packages/lib/node_modules/raw-loader/index.js!/Users/andreamarinoni/Developer/packages/lib/src/build/frontend/js/form/recaptcha.js\"))","require(\"!!/Users/andreamarinoni/Developer/packages/lib/node_modules/script-loader/addScript.js\")(require(\"!!/Users/andreamarinoni/Developer/packages/lib/node_modules/raw-loader/index.js!/Users/andreamarinoni/Developer/packages/lib/src/build/frontend/js/scroll.js\"))","require(\"!!/Users/andreamarinoni/Developer/packages/lib/node_modules/script-loader/addScript.js\")(require(\"!!/Users/andreamarinoni/Developer/packages/lib/node_modules/raw-loader/index.js!/Users/andreamarinoni/Developer/packages/lib/src/build/frontend/js/tooltip.js\"))","require(\"!!/Users/andreamarinoni/Developer/packages/lib/node_modules/script-loader/addScript.js\")(require(\"!!/Users/andreamarinoni/Developer/packages/lib/node_modules/raw-loader/index.js!/Users/andreamarinoni/Developer/packages/lib/src/build/frontend/js/utility.js\"))","require(\"!!/Users/andreamarinoni/Developer/packages/lib/node_modules/script-loader/addScript.js\")(require(\"!!/Users/andreamarinoni/Developer/packages/lib/node_modules/raw-loader/index.js!/Users/andreamarinoni/Developer/packages/lib/src/build/global/js/canvas.js\"))","require(\"!!/Users/andreamarinoni/Developer/packages/lib/node_modules/script-loader/addScript.js\")(require(\"!!/Users/andreamarinoni/Developer/packages/lib/node_modules/raw-loader/index.js!/Users/andreamarinoni/Developer/packages/lib/src/build/global/js/fetch.js\"))","require(\"!!/Users/andreamarinoni/Developer/packages/lib/node_modules/script-loader/addScript.js\")(require(\"!!/Users/andreamarinoni/Developer/packages/lib/node_modules/raw-loader/index.js!/Users/andreamarinoni/Developer/packages/lib/src/build/global/js/form/autonumeric.js\"))","require(\"!!/Users/andreamarinoni/Developer/packages/lib/node_modules/script-loader/addScript.js\")(require(\"!!/Users/andreamarinoni/Developer/packages/lib/node_modules/raw-loader/index.js!/Users/andreamarinoni/Developer/packages/lib/src/build/global/js/form/conditional.js\"))","require(\"!!/Users/andreamarinoni/Developer/packages/lib/node_modules/script-loader/addScript.js\")(require(\"!!/Users/andreamarinoni/Developer/packages/lib/node_modules/raw-loader/index.js!/Users/andreamarinoni/Developer/packages/lib/src/build/global/js/form/input.js\"))","require(\"!!/Users/andreamarinoni/Developer/packages/lib/node_modules/script-loader/addScript.js\")(require(\"!!/Users/andreamarinoni/Developer/packages/lib/node_modules/raw-loader/index.js!/Users/andreamarinoni/Developer/packages/lib/src/build/global/js/form/maps.js\"))","require(\"!!/Users/andreamarinoni/Developer/packages/lib/node_modules/script-loader/addScript.js\")(require(\"!!/Users/andreamarinoni/Developer/packages/lib/node_modules/raw-loader/index.js!/Users/andreamarinoni/Developer/packages/lib/src/build/global/js/form/phone.js\"))","require(\"!!/Users/andreamarinoni/Developer/packages/lib/node_modules/script-loader/addScript.js\")(require(\"!!/Users/andreamarinoni/Developer/packages/lib/node_modules/raw-loader/index.js!/Users/andreamarinoni/Developer/packages/lib/src/build/global/js/gmaps.js\"))","require(\"!!/Users/andreamarinoni/Developer/packages/lib/node_modules/script-loader/addScript.js\")(require(\"!!/Users/andreamarinoni/Developer/packages/lib/node_modules/raw-loader/index.js!/Users/andreamarinoni/Developer/packages/lib/src/build/global/js/utility.js\"))","require(\"!!/Users/andreamarinoni/Developer/packages/lib/node_modules/script-loader/addScript.js\")(require(\"!!/Users/andreamarinoni/Developer/packages/lib/node_modules/raw-loader/index.js!/Users/andreamarinoni/Developer/packages/lib/src/build/global/js/video.js\"))","// The module cache\nconst __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tconst cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tconst module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","export default class TranslationProvider {\n\n static translations = {};\n static defaultTranslations = {};\n\n static get lang() {\n return document.documentElement.lang || \"it\";\n }\n\n static async init(json, jsonDefault = {}) {\n\n this.translations = json;\n this.defaultTranslations = jsonDefault;\n \n }\n\n static get(key, replacements = []) {\n\n // 1. Prova lingua corrente\n let value = this.getNestedValue(this.translations, key);\n\n // 2. Se non trovato, prova default\n if (value == null) { value = this.getNestedValue(this.defaultTranslations, key); }\n\n // 3. Se ancora null → errore\n if (value == null) { console.error(\"Chiave di traduzione mancante: '\" + key + \"'\"); return key; }\n\n // 4. Sostituzione placeholder\n if (Array.isArray(replacements) && replacements.length > 0) {\n replacements.forEach((rep, idx) => {\n value = value.replace(new RegExp(\"\\\\{\" + idx + \"\\\\}\", \"g\"), rep);\n });\n }\n\n return value;\n\n }\n\n static getNestedValue(obj, key) {\n\n const segments = key.split('.');\n let current = obj;\n\n for (const segment of segments) {\n if (typeof current !== 'object' || current === null || !(segment in current)) {\n return null;\n }\n current = current[segment];\n }\n\n return current;\n\n }\n\n}","import { TranslationProvider } from \"wonder-image\";\n\nexport default class ApiClient {\n\n constructor(baseUrl, token) {\n\n this.baseUrl = baseUrl;\n this.token = token;\n\n }\n\n async request(endpoint, options = {}) {\n\n const headers = {\n \"Authorization\": `Bearer ${this.token}`,\n \"Accept-Language\": TranslationProvider.lang,\n ...options.headers,\n };\n\n // Se non è FormData, impostiamo JSON\n let body = options.body;\n\n if (!(body instanceof FormData) && body !== undefined) {\n headers[\"Content-Type\"] = \"application/json\";\n body = JSON.stringify(body);\n }\n\n const response = await fetch(`${this.baseUrl}${endpoint}`, {\n ...options,\n headers,\n body\n });\n\n let data;\n const ct = response.headers.get(\"content-type\") || \"\";\n\n try {\n data = await response.json();\n } catch {\n throw {\n success: false,\n status: response.status,\n response: \"Errore nel parsing della risposta\"\n };\n }\n \n if (!data.success) {\n throw data;\n }\n\n return data;\n\n }\n\n get(endpoint) {\n return this.request(endpoint, { method: \"GET\" });\n }\n\n post(endpoint, body) {\n return this.request(endpoint, { method: \"POST\", body });\n }\n\n put(endpoint, body) {\n return this.request(endpoint, { method: \"PUT\", body });\n }\n\n delete(endpoint) {\n return this.request(endpoint, { method: \"DELETE\" });\n }\n\n}","// Wrapper Google Maps: mappa base, editing marker, percorso (Directions),\n// autocomplete, import/export JSON. Richiede l'API caricata (vedi requireGoogleMaps).\nexport default class MapManager {\n\n constructor(mapElement, options = {}) {\n\n const {\n infoElement = null,\n exportElement = null,\n mapId = null,\n travelMode = 'DRIVING',\n onError = (message) => alert(message)\n } = options;\n\n this.mapElement = mapElement;\n this.infoElement = infoElement;\n this.exportElement = exportElement;\n this.mapId = mapId;\n this.travelMode = travelMode;\n this.onError = onError;\n\n this.map = null;\n this.directionsService = null;\n this.directionsRenderer = null;\n this.autocomplete = null;\n this.mapClickListener = null;\n this.editingEnabled = false;\n this.routeEnabled = false;\n this.advancedMarkers = [];\n\n this.inputElement = null;\n\n this.waypoints = [];\n this.markers = [];\n this.mapType = 'hybrid';\n this.labelsVisible = false;\n\n }\n\n // Risolve la stringa travelMode ('DRIVING' | 'BICYCLING' | 'WALKING' | 'TRANSIT')\n getTravelMode() {\n return google.maps.TravelMode[this.travelMode] ?? google.maps.TravelMode.DRIVING;\n }\n\n // Inizializza solo la mappa base, senza editing o percorso\n initBaseMap(options = {}) {\n\n const mapOptions = {\n center: { lat: 20, lng: 0 },\n zoom: 2,\n mapTypeId: this.mapType,\n mapTypeControl: false,\n zoomControl: true,\n streetViewControl: false,\n fullscreenControl: false,\n ...options\n };\n\n if (this.mapId) {\n mapOptions.mapId = this.mapId;\n }\n\n this.map = new google.maps.Map(this.mapElement, mapOptions);\n this.updateMapStyle();\n\n return this.map;\n\n }\n\n initMap() {\n\n this.initBaseMap();\n\n }\n\n // Abilita l'editing: click sulla mappa aggiunge un marker trascinabile\n enableEditing() {\n\n if (!this.map) { this.initBaseMap(); }\n\n this.editingEnabled = true;\n\n if (this.mapClickListener) { this.mapClickListener.remove(); }\n\n this.mapClickListener = this.map.addListener(\"click\", (e) => this.addChangeableMarker(e.latLng));\n\n }\n\n disableEditing() {\n\n if (this.mapClickListener) {\n this.mapClickListener.remove();\n this.mapClickListener = null;\n }\n\n this.editingEnabled = false;\n\n }\n\n // Abilita il rendering del percorso (Directions API)\n enableRoute(options = {}) {\n\n const {\n suppressMarkers = true,\n draggable = false,\n preserveViewport = false,\n recalc = true\n } = options;\n\n if (!this.map) {\n this.initBaseMap();\n }\n\n if (!this.directionsService) {\n this.directionsService = new google.maps.DirectionsService();\n }\n\n if (!this.directionsRenderer) {\n this.directionsRenderer = new google.maps.DirectionsRenderer({\n map: this.map,\n suppressMarkers,\n draggable,\n preserveViewport\n });\n } else {\n this.directionsRenderer.setMap(this.map);\n this.directionsRenderer.setOptions({\n suppressMarkers,\n draggable,\n preserveViewport\n });\n }\n\n this.routeEnabled = true;\n\n if (recalc && this.waypoints.length >= 2) {\n this.calcRoute();\n }\n\n }\n\n disableRoute() {\n\n this.routeEnabled = false;\n\n if (this.directionsRenderer) {\n this.directionsRenderer.set('directions', null);\n this.directionsRenderer.setMap(null);\n }\n\n }\n\n // Autocomplete Places su un input: il luogo scelto diventa un marker\n enableAutocomplete(inputElement) {\n\n this.inputElement = inputElement;\n this.autocomplete = new google.maps.places.Autocomplete(this.inputElement);\n this.autocomplete.bindTo(\"bounds\", this.map);\n\n this.autocomplete.addListener(\"place_changed\", () => {\n\n const place = this.autocomplete.getPlace();\n\n if (!place.geometry || !place.geometry.location) {\n this.onError(\"Luogo non trovato\");\n return;\n }\n\n this.inputElement.value = '';\n this.map.panTo(place.geometry.location);\n this.map.setZoom(15);\n this.addChangeableMarker(place.geometry.location);\n\n });\n\n }\n\n // Mappa in sola lettura con un percorso esistente (array di {lat, lng})\n initReadOnlyMap(percorso) {\n\n if (!Array.isArray(percorso) || percorso.length < 2) {\n console.warn(\"Percorso non valido o troppo corto.\");\n return;\n }\n\n this.initBaseMap({\n center: percorso[0],\n zoom: 14,\n disableDefaultUI: true,\n mapTypeId: this.mapType\n });\n\n this.disableEditing();\n this.enableRoute({ preserveViewport: true, recalc: false });\n\n const origin = percorso[0];\n const destination = percorso[percorso.length - 1];\n const via = percorso.slice(1, -1).map(p => ({ location: p, stopover: true }));\n\n this.directionsService.route({\n origin,\n destination,\n waypoints: via,\n travelMode: this.getTravelMode()\n }, (response, status) => {\n\n if (status === \"OK\") {\n\n this.directionsRenderer.setDirections(response);\n\n const bounds = new google.maps.LatLngBounds();\n response.routes[0].overview_path.forEach(point => bounds.extend(point));\n this.map.fitBounds(bounds);\n\n if (google.maps.marker && google.maps.marker.AdvancedMarkerElement && google.maps.marker.PinElement) {\n\n const originPin = new google.maps.marker.PinElement({ glyphText: \"A\" });\n new google.maps.marker.AdvancedMarkerElement({\n position: origin,\n map: this.map,\n content: originPin.element,\n title: \"A\"\n });\n\n const destinationPin = new google.maps.marker.PinElement({ glyphText: \"B\" });\n new google.maps.marker.AdvancedMarkerElement({\n position: destination,\n map: this.map,\n content: destinationPin.element,\n title: \"B\"\n });\n\n } else {\n\n new google.maps.Marker({\n position: origin,\n map: this.map,\n label: \"A\"\n });\n\n new google.maps.Marker({\n position: destination,\n map: this.map,\n label: \"B\"\n });\n\n }\n\n } else {\n this.onError(\"Errore nel calcolo del percorso: \" + status);\n }\n\n });\n\n }\n\n // type: 'roadmap' | 'satellite' | 'hybrid' | 'terrain'\n setMapType(type) {\n\n this.mapType = type;\n this.updateMapStyle();\n\n }\n\n toggleLabels() {\n\n this.labelsVisible = !this.labelsVisible;\n this.updateMapStyle();\n\n }\n\n updateMapStyle() {\n\n this.map.setMapTypeId(this.mapType);\n\n // Con mapId lo stile arriva dal cloud styling: setOptions({ styles }) verrebbe ignorato con warning\n if (this.mapId) return;\n\n if (this.labelsVisible) {\n this.map.setOptions({ styles: null });\n } else {\n this.map.setOptions({\n styles: [{ featureType: \"all\", elementType: \"labels\", stylers: [{ visibility: \"off\" }] }]\n });\n }\n\n }\n\n // Adatta lo zoom per includere percorso e marker\n fitBounds(options = {}) {\n\n if (!this.map) return;\n\n const {\n includeRoute = true,\n includeMarkers = true,\n includeAdvancedMarkers = true,\n extraPoints = [],\n padding = 40,\n minZoom = null,\n maxZoom = null\n } = options;\n\n const bounds = new google.maps.LatLngBounds();\n let hasPoints = false;\n\n const toLatLng = (point) => {\n if (!point) return null;\n if (typeof point.lat === \"function\" && typeof point.lng === \"function\") return point;\n if (typeof point.getPosition === \"function\") return point.getPosition();\n if (point.position) {\n const pos = point.position;\n if (typeof pos.lat === \"function\" && typeof pos.lng === \"function\") return pos;\n if (typeof pos.lat === \"number\" && typeof pos.lng === \"number\") {\n return new google.maps.LatLng(pos.lat, pos.lng);\n }\n }\n if (point.location) return toLatLng(point.location);\n if (typeof point.lat === \"number\" && typeof point.lng === \"number\") {\n return new google.maps.LatLng(point.lat, point.lng);\n }\n return null;\n };\n\n const extendWith = (point) => {\n const latLng = toLatLng(point);\n if (!latLng) return;\n bounds.extend(latLng);\n hasPoints = true;\n };\n\n if (includeRoute && this.directionsRenderer && this.directionsRenderer.getDirections) {\n const directions = this.directionsRenderer.getDirections();\n const route = directions?.routes?.[0];\n if (route?.overview_path?.length) {\n route.overview_path.forEach(p => extendWith(p));\n } else if (this.waypoints.length) {\n this.waypoints.forEach(wp => extendWith(wp.location));\n }\n } else if (includeRoute && this.waypoints.length) {\n this.waypoints.forEach(wp => extendWith(wp.location));\n }\n\n if (includeMarkers) {\n this.markers.forEach(marker => extendWith(marker));\n }\n\n if (includeAdvancedMarkers) {\n this.advancedMarkers.forEach(marker => extendWith(marker));\n }\n\n if (Array.isArray(extraPoints)) {\n extraPoints.forEach(point => extendWith(point));\n }\n\n if (!hasPoints) return;\n\n this.map.fitBounds(bounds, padding);\n\n if (minZoom !== null || maxZoom !== null) {\n const listener = this.map.addListener(\"idle\", () => {\n const zoom = this.map.getZoom();\n if (minZoom !== null && zoom < minZoom) this.map.setZoom(minZoom);\n if (maxZoom !== null && zoom > maxZoom) this.map.setZoom(maxZoom);\n listener.remove();\n });\n }\n\n }\n\n // customContent: (properties) => HTMLElement, es. il global gmapMarkerConstructor\n addAdvancedMarker(lat, lng, title, properties, customContent) {\n\n const content = typeof customContent === \"function\" ? customContent(properties) : null;\n\n if (google.maps.marker && google.maps.marker.AdvancedMarkerElement) {\n const marker = new google.maps.marker.AdvancedMarkerElement({\n map: this.map,\n content: content,\n position: new google.maps.LatLng(lat, lng),\n title: title,\n });\n this.advancedMarkers.push(marker);\n return marker;\n }\n\n console.warn(\"AdvancedMarkerElement non disponibile, uso Marker standard.\");\n const fallbackMarker = new google.maps.Marker({\n position: new google.maps.LatLng(lat, lng),\n map: this.map,\n title: title\n });\n this.advancedMarkers.push(fallbackMarker);\n return fallbackMarker;\n\n }\n\n addMarker(latLng, label) {\n\n const marker = new google.maps.Marker({\n position: latLng,\n map: this.map,\n label: label\n });\n\n return marker;\n\n }\n\n // Marker trascinabile: dragend aggiorna il percorso, doppio click lo rimuove\n addChangeableMarker(latLng) {\n\n const label = (this.markers.length + 1).toString();\n const marker = this.addMarker(latLng, label);\n\n marker.setDraggable(true);\n\n marker.addListener(\"dragend\", () => {\n this.updateWaypoints();\n if (this.routeEnabled) this.calcRoute();\n });\n\n marker.addListener(\"dblclick\", () => {\n marker.setMap(null);\n this.markers = this.markers.filter(m => m !== marker);\n this.updateWaypoints();\n if (this.routeEnabled) this.calcRoute();\n });\n\n this.markers.push(marker);\n this.updateWaypoints();\n if (this.routeEnabled && this.markers.length >= 2) this.calcRoute();\n\n }\n\n updateWaypoints() {\n\n this.waypoints = this.markers.map(m => ({ location: m.getPosition(), stopover: true }));\n this.markers.forEach((m, i) => m.setLabel((i + 1).toString()));\n this.saveRoute();\n\n }\n\n // Calcola il percorso tra i marker con le Directions API e lo disegna\n calcRoute() {\n\n if (!this.routeEnabled || !this.directionsService || !this.directionsRenderer) return;\n if (this.waypoints.length < 2) return;\n\n const origin = this.waypoints[0].location;\n const destination = this.waypoints[this.waypoints.length - 1].location;\n const via = this.waypoints.slice(1, -1);\n\n this.directionsService.route({\n origin,\n destination,\n waypoints: via,\n travelMode: this.getTravelMode()\n }, (response, status) => {\n if (status === \"OK\") {\n this.directionsRenderer.setDirections(response);\n this.showRouteInfo(response.routes[0].legs);\n const bounds = new google.maps.LatLngBounds();\n response.routes[0].overview_path.forEach(p => bounds.extend(p));\n this.map.fitBounds(bounds);\n } else {\n this.onError(\"Errore nel calcolo del percorso: \" + status);\n }\n });\n\n }\n\n showRouteInfo(legs) {\n\n let totalDistance = 0, totalDuration = 0;\n\n legs.forEach(leg => {\n totalDistance += leg.distance.value;\n totalDuration += leg.duration.value;\n });\n\n if (this.infoElement) {\n this.infoElement.innerHTML = `<strong>Distanza:</strong> ${(totalDistance / 1000).toFixed(2)} km<br><strong>Tempo stimato:</strong> ${this.formatTime(totalDuration)}`;\n }\n\n }\n\n // Secondi -> \"2h 10min\" oppure \"15min\"\n formatTime(seconds) {\n\n const mins = Math.floor(seconds / 60);\n const hrs = Math.floor(mins / 60);\n const remMins = mins % 60;\n\n return hrs > 0 ? `${hrs}h ${remMins}min` : `${remMins}min`;\n\n }\n\n resetMap() {\n\n this.markers.forEach(m => m.setMap(null));\n this.markers = [];\n this.waypoints = [];\n\n if (this.directionsRenderer) this.directionsRenderer.set('directions', null);\n if (this.infoElement) this.infoElement.innerHTML = '';\n\n }\n\n // Serializza i marker come JSON [{lat, lng}] nell'exportElement\n saveRoute() {\n\n const coords = this.markers.map(m => ({ lat: m.getPosition().lat(), lng: m.getPosition().lng() }));\n\n if (this.exportElement) this.exportElement.value = JSON.stringify(coords, null, 2);\n\n }\n\n loadRouteFromJSON(json) {\n\n this.resetMap();\n\n const coords = JSON.parse(json);\n\n coords.forEach(coord => this.addChangeableMarker(new google.maps.LatLng(coord.lat, coord.lng)));\n\n }\n\n}\n","import { ApiClient, TranslationProvider, MapManager, MapNavigator } from \"wonder-image\";\n\nwindow.ApiClient = ApiClient;\nwindow.TranslationProvider = TranslationProvider;\nwindow.MapManager = MapManager;\nwindow.MapNavigator = MapNavigator;\n\nwindow.API_CLIENT = new ApiClient(pathSite+'/api', API_TOKEN);\nwindow.API_CLIENT_APP = window.API_CLIENT;\n\nwindow.__t = function(key, replacements = []) {\n return TranslationProvider.get(key, replacements);\n}","import MapManager from './MapManager.js';\n\n// Navigazione live con geolocalizzazione su una mappa gestita da MapManager\nexport default class MapNavigator {\n\n constructor(mapManager) {\n\n if (!mapManager || !(mapManager instanceof MapManager)) {\n throw new Error(\"Devi passare una istanza valida di MapManager\");\n }\n\n this.mapManager = mapManager;\n this.map = mapManager.map;\n this.percorso = [];\n\n this.userMarker = null;\n this.watchId = null;\n this.previousPosition = null;\n\n }\n\n init(percorso) {\n\n this.stop();\n\n this.percorso = percorso;\n this.mapManager.initReadOnlyMap(percorso);\n this.map = this.mapManager.map;\n\n }\n\n // Avvia il tracciamento GPS continuo con watchPosition\n start() {\n\n if (!navigator.geolocation) {\n this.mapManager.onError(\"Geolocalizzazione non supportata dal tuo browser.\");\n return;\n }\n\n this.watchId = navigator.geolocation.watchPosition(\n (position) => this.updatePosition(position),\n (error) => this.mapManager.onError(\"Errore nella geolocalizzazione: \" + error.message),\n { enableHighAccuracy: true, maximumAge: 0, timeout: 10000 }\n );\n\n }\n\n // Aggiorna il marker utente e ruota la freccia secondo la direzione\n updatePosition(position) {\n\n const pos = {\n lat: position.coords.latitude,\n lng: position.coords.longitude,\n };\n\n let heading = 0;\n\n if (this.previousPosition) {\n heading = this.computeHeading(this.previousPosition, pos);\n }\n\n if (!this.userMarker) {\n this.map.setZoom(16);\n this.map.setCenter(pos);\n this.userMarker = new google.maps.Marker({\n position: pos,\n map: this.map,\n icon: {\n path: google.maps.SymbolPath.FORWARD_CLOSED_ARROW,\n scale: 4,\n fillColor: \"#007BFF\",\n fillOpacity: 1,\n strokeColor: \"#fff\",\n strokeWeight: 1,\n rotation: heading,\n anchor: new google.maps.Point(0, 2),\n },\n title: \"La tua posizione\",\n });\n } else {\n this.userMarker.setPosition(pos);\n const icon = this.userMarker.getIcon();\n icon.rotation = heading;\n this.userMarker.setIcon(icon);\n }\n\n this.previousPosition = pos;\n\n }\n\n // Bearing tra due coordinate, per orientare la freccia\n computeHeading(from, to) {\n\n const toRad = (deg) => (deg * Math.PI) / 180;\n const toDeg = (rad) => (rad * 180) / Math.PI;\n const lat1 = toRad(from.lat);\n const lon1 = toRad(from.lng);\n const lat2 = toRad(to.lat);\n const lon2 = toRad(to.lng);\n const dLon = lon2 - lon1;\n const y = Math.sin(dLon) * Math.cos(lat2);\n const x =\n Math.cos(lat1) * Math.sin(lat2) -\n Math.sin(lat1) * Math.cos(lat2) * Math.cos(dLon);\n const brng = Math.atan2(y, x);\n\n return (toDeg(brng) + 360) % 360;\n\n }\n\n stop() {\n\n if (this.watchId !== null) {\n navigator.geolocation.clearWatch(this.watchId);\n this.watchId = null;\n }\n\n if (this.userMarker) {\n this.userMarker.setMap(null);\n this.userMarker = null;\n }\n\n }\n\n // Apre Google Maps con il percorso attuale, col travelMode del MapManager\n openInGoogleMaps() {\n\n if (!this.percorso || this.percorso.length < 2) {\n this.mapManager.onError(\"Percorso insufficiente per l'apertura in Google Maps.\");\n return;\n }\n\n const origin = `${this.percorso[0].lat},${this.percorso[0].lng}`;\n const destination = `${this.percorso[this.percorso.length - 1].lat},${this.percorso[this.percorso.length - 1].lng}`;\n\n const waypoints = this.percorso\n .slice(1, -1)\n .map(p => `${p.lat},${p.lng}`)\n .join('|');\n\n const travelModes = { DRIVING: 'driving', BICYCLING: 'bicycling', WALKING: 'walking', TRANSIT: 'transit' };\n\n const url = new URL('https://www.google.com/maps/dir/');\n url.searchParams.set('api', '1');\n url.searchParams.set('origin', origin);\n url.searchParams.set('destination', destination);\n if (waypoints) url.searchParams.set('waypoints', waypoints);\n url.searchParams.set('travelmode', travelModes[this.mapManager.travelMode] ?? 'driving');\n\n window.open(url.toString(), '_blank');\n\n }\n\n}\n"],"names":["module","exports","src","log","error","console","execScript","attachEvent","addEventListener","eval","call","__webpack_require__","__webpack_module_cache__","moduleId","cachedModule","undefined","__webpack_modules__","TranslationProvider","static","lang","document","documentElement","init","json","jsonDefault","this","translations","defaultTranslations","get","key","replacements","value","getNestedValue","Array","isArray","length","forEach","rep","idx","replace","RegExp","obj","segments","split","current","segment","ApiClient","constructor","baseUrl","token","request","endpoint","options","headers","Authorization","body","FormData","JSON","stringify","response","fetch","data","success","status","method","post","put","MapManager","mapElement","infoElement","exportElement","mapId","travelMode","onError","message","alert","map","directionsService","directionsRenderer","autocomplete","mapClickListener","editingEnabled","routeEnabled","advancedMarkers","inputElement","waypoints","markers","mapType","labelsVisible","getTravelMode","google","maps","TravelMode","DRIVING","initBaseMap","mapOptions","center","lat","lng","zoom","mapTypeId","mapTypeControl","zoomControl","streetViewControl","fullscreenControl","Map","updateMapStyle","initMap","enableEditing","remove","addListener","e","addChangeableMarker","latLng","disableEditing","enableRoute","suppressMarkers","draggable","preserveViewport","recalc","DirectionsService","setMap","setOptions","DirectionsRenderer","calcRoute","disableRoute","set","enableAutocomplete","places","Autocomplete","bindTo","place","getPlace","geometry","location","panTo","setZoom","initReadOnlyMap","percorso","warn","disableDefaultUI","origin","destination","via","slice","p","stopover","route","setDirections","bounds","LatLngBounds","routes","overview_path","point","extend","fitBounds","marker","AdvancedMarkerElement","PinElement","originPin","glyphText","position","content","element","title","destinationPin","Marker","label","setMapType","type","toggleLabels","setMapTypeId","styles","featureType","elementType","stylers","visibility","includeRoute","includeMarkers","includeAdvancedMarkers","extraPoints","padding","minZoom","maxZoom","hasPoints","toLatLng","getPosition","pos","LatLng","extendWith","getDirections","directions","wp","listener","getZoom","addAdvancedMarker","properties","customContent","push","fallbackMarker","addMarker","toString","setDraggable","updateWaypoints","filter","m","i","setLabel","saveRoute","showRouteInfo","legs","totalDistance","totalDuration","leg","distance","duration","innerHTML","toFixed","formatTime","seconds","mins","Math","floor","hrs","remMins","resetMap","coords","loadRouteFromJSON","parse","coord","window","MapNavigator","mapManager","Error","userMarker","watchId","previousPosition","stop","start","navigator","geolocation","watchPosition","updatePosition","enableHighAccuracy","maximumAge","timeout","latitude","longitude","heading","computeHeading","setPosition","icon","getIcon","rotation","setIcon","setCenter","path","SymbolPath","FORWARD_CLOSED_ARROW","scale","fillColor","fillOpacity","strokeColor","strokeWeight","anchor","Point","from","to","toRad","deg","PI","lat1","lon1","lat2","dLon","y","sin","cos","x","brng","atan2","clearWatch","openInGoogleMaps","join","url","URL","searchParams","BICYCLING","WALKING","TRANSIT","open","API_CLIENT","pathSite","API_TOKEN","API_CLIENT_APP","__t"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"frontend/head.js","mappings":"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","sources":["webpack://wonder-image/./src/build/frontend/js/form/input.js","webpack://wonder-image/./src/build/frontend/js/form/list.js","webpack://wonder-image/./src/build/frontend/js/form/recaptcha.js","webpack://wonder-image/./src/build/frontend/js/scroll.js","webpack://wonder-image/./src/build/frontend/js/tooltip.js","webpack://wonder-image/./src/build/frontend/js/utility.js","webpack://wonder-image/./src/build/global/js/canvas.js","webpack://wonder-image/./src/build/global/js/fetch.js","webpack://wonder-image/./src/build/global/js/form/autonumeric.js","webpack://wonder-image/./src/build/global/js/form/conditional.js","webpack://wonder-image/./src/build/global/js/form/input.js","webpack://wonder-image/./src/build/global/js/form/maps.js","webpack://wonder-image/./src/build/global/js/form/phone.js","webpack://wonder-image/./src/build/global/js/gmaps.js","webpack://wonder-image/./src/build/global/js/utility.js","webpack://wonder-image/./src/build/global/js/video.js","webpack://wonder-image/./node_modules/script-loader/addScript.js","webpack://wonder-image/./src/build/frontend/js/form/input.js?c14e","webpack://wonder-image/./src/build/frontend/js/form/list.js?d75e","webpack://wonder-image/./src/build/frontend/js/form/recaptcha.js?3877","webpack://wonder-image/./src/build/frontend/js/scroll.js?36f4","webpack://wonder-image/./src/build/frontend/js/tooltip.js?a91c","webpack://wonder-image/./src/build/frontend/js/utility.js?3da5","webpack://wonder-image/./src/build/global/js/canvas.js?1992","webpack://wonder-image/./src/build/global/js/fetch.js?e11d","webpack://wonder-image/./src/build/global/js/form/autonumeric.js?ad99","webpack://wonder-image/./src/build/global/js/form/conditional.js?d434","webpack://wonder-image/./src/build/global/js/form/input.js?1639","webpack://wonder-image/./src/build/global/js/form/maps.js?ed87","webpack://wonder-image/./src/build/global/js/form/phone.js?29c0","webpack://wonder-image/./src/build/global/js/gmaps.js?a9b9","webpack://wonder-image/./src/build/global/js/utility.js?f76e","webpack://wonder-image/./src/build/global/js/video.js?9e89","webpack://wonder-image/webpack/bootstrap","webpack://wonder-image/./src/class/ApiClient.js","webpack://wonder-image/./src/class/DeferredContent.js","webpack://wonder-image/./src/class/TranslationProvider.js","webpack://wonder-image/./src/class/Google/MapManager.js","webpack://wonder-image/./src/build/global/js/deferred.js","webpack://wonder-image/./src/build/global/js/helper.js","webpack://wonder-image/./src/class/Google/MapNavigator.js"],"sourcesContent":["module.exports = \"function check() {\\n \\n document.querySelectorAll(\\\"form .wi-submit\\\").forEach(button => {\\n \\n button.removeAttribute(\\\"disabled\\\");\\n \\n var inputList = button.form.elements;\\n\\n for (let i = 0; i < inputList.length; i++) {\\n\\n var input = inputList[i];\\n\\n if (input.closest && input.closest('[data-wi-conditional-hidden=\\\"true\\\"]')) { continue; }\\n\\n if (input.required) {\\n if (input.type == 'checkbox' || input.type == 'radio') {\\n if (input.checked == false) { button.setAttribute(\\\"disabled\\\", null); }\\n } else {\\n if (input.value == \\\"\\\") { button.setAttribute(\\\"disabled\\\", null); }\\n }\\n }\\n\\n if (!input.validity.valid) {\\n button.setAttribute(\\\"disabled\\\", null);\\n }\\n\\n }\\n\\n })\\n\\n}\\n\\nfunction togglePassword(el, id) {\\n\\n var input = document.getElementById(id);\\n\\n if (input.type == 'password') {\\n input.type = 'text'\\n el.classList.remove('bi-eye');\\n el.classList.add('bi-eye-slash');\\n }else{\\n input.type = 'password'\\n el.classList.remove('bi-eye-slash');\\n el.classList.add('bi-eye');\\n }\\n\\n}\\n\\nfunction checkNumber(event) {\\n\\n event.target.value = event.target.value.replace(/[^0-9.]/g, '').replace(/(\\\\..*?)\\\\..*/g, '$1');\\n \\n}\\n\\nfunction labelPositionTop(event) {\\n\\n event.target.parentElement.classList.add('compiled');\\n\\n}\\n\\nfunction labelPosition(event) {\\n\\n var container = event.target.parentElement;\\n\\n if (event.target.value == '' && event.target !== document.activeElement) {\\n container.classList.remove('compiled');\\n } else {\\n container.classList.add('compiled');\\n }\\n\\n}\\n\\nfunction customDateRange(element) {\\n\\n var inputFrom = element.querySelector('input.wi-daterange-from');\\n var inputTo = element.querySelector('input.wi-daterange-to');\\n\\n if (inputFrom.value != '') {\\n $('#'+inputTo.id).datepicker('option', 'minDate', inputFrom.value);\\n }\\n\\n}\\n\\nfunction customDateTimeRange(element) {\\n\\n var inputFrom = element.querySelector('input.wi-datetimerange-from');\\n var inputTo = element.querySelector('input.wi-datetimerange-to');\\n\\n if (inputFrom.value != '') {\\n $('#'+inputTo.id).datetimepicker('option', 'minDate', inputFrom.value);\\n }\\n\\n}\\n\\nfunction datePickerOptions(element, toggle) {\\n\\n var options = {\\n showAnim: 'slideDown',\\n yearRange: '1900:3000',\\n showOn: 'focus',\\n dateFormat: 'dd/mm/yy',\\n changeYear: true,\\n changeMonth: true,\\n showMonthAfterYear: true,\\n hideIfNoPrevNext: true,\\n firstDay: 1,\\n dayNames: [ 'Domenica', 'Lunedì', 'Martedì', 'Mercoledì', 'Giovedì', 'Venerdì', 'Sabato' ],\\n dayNamesShort: [ 'Dom', 'Lun', 'Mar', 'Mer', 'Gio', 'Ven', 'Sab' ],\\n dayNamesMin: [ 'Do', 'Lu', 'Ma', 'Me', 'Gi', 'Ve', 'Sa' ],\\n monthNames: [ 'Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre' ],\\n monthNamesShort: [ 'Gen', 'Feb', 'Mar', 'Apr', 'Mag', 'Giu', 'Lug', 'Ago', 'Set', 'Ott', 'Nov', 'Dic' ],\\n beforeShow: function () { toggle(true); },\\n onClose: function () { toggle(false); },\\n };\\n\\n if (element.dataset.wiMinDate) { options.minDate = element.dataset.wiMinDate; }\\n if (element.dataset.wiMaxDate) { options.maxDate = element.dataset.wiMaxDate; }\\n\\n return options;\\n\\n}\\n\\nfunction setDatePickerError(input, message) {\\n\\n var container = input.parentElement;\\n var alert = container.querySelector('.alert-error');\\n\\n input.setCustomValidity(message);\\n container.classList.add('input-error');\\n\\n if (!alert) { return; }\\n\\n alert.replaceChildren();\\n var icon = document.createElement('i');\\n icon.className = 'bi bi-exclamation-triangle';\\n alert.append(icon, document.createTextNode(' '+message));\\n\\n}\\n\\nfunction validateSelectDate(event) {\\n\\n var input = event.currentTarget;\\n var date = input.value;\\n\\n if (date === '' || typeof moment !== 'function') { return; }\\n\\n var label = input.dataset.wiDateLabel || 'data';\\n var parsed = moment(date, 'DD/MM/YYYY', true);\\n\\n if (!parsed.isValid()) {\\n setDatePickerError(input, 'La '+label+' deve essere formato gg/mm/aaaa');\\n return;\\n }\\n\\n removeInputError(input);\\n\\n if (input.dataset.wiMinDate && parsed.isBefore(moment(input.dataset.wiMinDate, 'DD/MM/YYYY'), 'day')) {\\n setDatePickerError(input, 'La '+label+' deve essere maggiore del '+input.dataset.wiMinDate);\\n }\\n\\n if (input.dataset.wiMaxDate && parsed.isAfter(moment(input.dataset.wiMaxDate, 'DD/MM/YYYY'), 'day')) {\\n setDatePickerError(input, 'La '+label+' deve essere minore del '+input.dataset.wiMaxDate);\\n }\\n\\n}\\n\\nfunction setDatePicker(input) {\\n\\n if (input.dataset.wiDatePickerReady === 'true') { return; }\\n\\n var container = input.parentElement;\\n var toggle = function (visible) {\\n container.classList[visible ? 'add' : 'remove']('selector-show');\\n };\\n\\n $(input).datepicker(datePickerOptions(input, toggle));\\n\\n if (input.value !== '') {\\n $(input).datepicker('setDate', input.value);\\n }\\n\\n if (input.dataset.wiSelectDate === 'true') {\\n input.addEventListener('change', validateSelectDate);\\n }\\n\\n input.dataset.wiDatePickerReady = 'true';\\n\\n}\\n\\nfunction setDateRangePicker(container) {\\n\\n if (container.dataset.wiDateRangeReady === 'true') { return; }\\n\\n var inputFrom = container.querySelector('input.wi-daterange-from');\\n var inputTo = container.querySelector('input.wi-daterange-to');\\n\\n if (!inputFrom || !inputTo) { return; }\\n\\n var toggle = function (visible) {\\n container.classList[visible ? 'add' : 'remove']('selector-show');\\n customDateRange(container);\\n };\\n var options = datePickerOptions(inputFrom, toggle);\\n\\n [inputFrom, inputTo].forEach(function (input) {\\n $(input).datepicker(options);\\n if (input.value !== '') { $(input).datepicker('setDate', input.value); }\\n });\\n\\n container.dataset.wiDateRangeReady = 'true';\\n\\n}\\n\\nfunction setDateTimeRangePicker(container) {\\n\\n if (container.dataset.wiDateTimeRangeReady === 'true') { return; }\\n\\n var inputFrom = container.querySelector('input.wi-datetimerange-from');\\n var inputTo = container.querySelector('input.wi-datetimerange-to');\\n\\n if (!inputFrom || !inputTo) { return; }\\n\\n var toggle = function (visible) {\\n container.classList[visible ? 'add' : 'remove']('selector-show');\\n customDateTimeRange(container);\\n };\\n var options = datePickerOptions(inputFrom, toggle);\\n options.controlType = 'select';\\n options.oneLine = true;\\n options.timeFormat = 'HH:mm';\\n options.stepMinute = 5;\\n\\n [inputFrom, inputTo].forEach(function (input) {\\n $(input).datetimepicker(options);\\n });\\n\\n container.dataset.wiDateTimeRangeReady = 'true';\\n\\n}\\n\\nfunction setDateInputs(container = document) {\\n\\n container.querySelectorAll(\\\"[data-wi-date-picker='true']\\\").forEach(setDatePicker);\\n container.querySelectorAll(\\\"[data-wi-date-range='true']\\\").forEach(setDateRangePicker);\\n container.querySelectorAll(\\\"[data-wi-date-time-range='true']\\\").forEach(setDateTimeRangePicker);\\n\\n}\\n\\nfunction checkLabel() {\\n\\n document.querySelectorAll(\\\"[data-wi-label='true']\\\").forEach(element => {\\n \\n var container = element.parentElement;\\n\\n if (element.value == '') {\\n container.classList.remove('compiled');\\n } else {\\n container.classList.add('compiled');\\n }\\n \\n });\\n\\n}\\n\\nfunction checkInputFile(event) {\\n\\n var input = event.target;\\n\\n var inputContainer = input.parentElement;\\n var errorContainer = inputContainer.querySelector('.alert-error');\\n\\n var maxFile = input.dataset.wiMaxFile;\\n var maxSize = input.dataset.wiMaxSize;\\n var prettyMaxSize = ((maxSize/1024)/1024).toFixed(2); // MB\\n\\n var prettyErrorFile = \\\"<i class='bi bi-exclamation-triangle'></i> Hai caricato troppi file! Puoi caricare massimo \\\"+maxFile+\\\" file\\\";\\n var prettyErrorSize = \\\"<i class='bi bi-exclamation-triangle'></i> Hai caricato file troppo grandi! Le dimensioni massime sono di \\\"+prettyMaxSize+\\\"Mb\\\";\\n\\n var files = input.files;\\n\\n inputContainer.classList.remove('input-error');\\n errorContainer.innerHTML = '';\\n\\n for (var x in files) {\\n\\n if(files[x].size > maxSize){\\n\\n inputContainer.classList.add('input-error');\\n errorContainer.innerHTML = prettyErrorSize;\\n input.value = \\\"\\\";\\n break;\\n\\n }\\n\\n }\\n\\n if (files.length > maxFile) {\\n\\n inputContainer.classList.add('input-error');\\n errorContainer.innerHTML = prettyErrorFile;\\n input.value = \\\"\\\";\\n\\n }\\n \\n}\\n\\nfunction inputError(input, error, errorIcon = \\\"<i class='bi bi-exclamation-triangle'></i>\\\") {\\n\\n var inputContainer = input.parentElement;\\n var errorContainer = inputContainer.querySelector('.alert-error');\\n\\n inputContainer.classList.add('input-error');\\n errorContainer.innerHTML = errorIcon+' '+error;\\n input.setCustomValidity(error);\\n\\n}\\n\\nfunction removeInputError(input) {\\n\\n var inputContainer = input.parentElement;\\n var errorContainer = inputContainer.querySelector('.alert-error');\\n \\n inputContainer.classList.remove('input-error');\\n errorContainer.innerHTML = \\\"\\\";\\n input.setCustomValidity(\\\"\\\");\\n\\n}\\n\\nfunction setInput() {\\n\\n setDateInputs();\\n\\n document.querySelectorAll(\\\"[data-wi-max-file]\\\").forEach(element => {\\n element.addEventListener(\\\"change\\\", checkInputFile);\\n });\\n\\n document.querySelectorAll(\\\"[data-wi-max-size]\\\").forEach(element => {\\n element.addEventListener(\\\"change\\\", checkInputFile);\\n });\\n \\n document.querySelectorAll(\\\"[data-wi-label='true']\\\").forEach(element => {\\n element.addEventListener(\\\"input\\\", labelPosition);\\n element.addEventListener(\\\"change\\\", labelPosition);\\n element.addEventListener(\\\"focusin\\\", labelPositionTop);\\n element.addEventListener(\\\"focusout\\\", labelPosition);\\n });\\n\\n document.querySelectorAll(\\\"[data-wi-check='true']\\\").forEach(element => {\\n element.addEventListener(\\\"keyup\\\", check);\\n element.addEventListener(\\\"change\\\", check);\\n element.addEventListener(\\\"focusin\\\", check);\\n element.addEventListener(\\\"focusout\\\", check);\\n });\\n\\n document.querySelectorAll(\\\"[data-wi-list-input='true']\\\").forEach(element => {\\n element.addEventListener(\\\"keyup\\\", searchInput);\\n element.addEventListener(\\\"focusin\\\", searchInput);\\n element.addEventListener(\\\"focusin\\\", (event) => { delay(300).then(() => { showList(event) }) });\\n element.addEventListener(\\\"keyup\\\", showList);\\n element.addEventListener(\\\"focusout\\\", hideList);\\n element.addEventListener(\\\"change\\\", controlList);\\n element.addEventListener(\\\"focusout\\\", controlList);\\n });\\n\\n document.querySelectorAll(\\\"[data-wi-search-input='true']\\\").forEach(element => {\\n element.addEventListener(\\\"keyup\\\", showList);\\n element.addEventListener(\\\"keyup\\\", searchResults);\\n element.addEventListener(\\\"change\\\", controlList);\\n element.addEventListener(\\\"focusout\\\", hideList);\\n });\\n\\n document.querySelectorAll(\\\"[data-wi-search-text='true']\\\").forEach(element => {\\n element.addEventListener(\\\"keyup\\\", showList);\\n element.addEventListener(\\\"keyup\\\", searchText);\\n element.addEventListener(\\\"focusout\\\", hideList);\\n });\\n\\n document.querySelectorAll(\\\"[data-wi-search-radio='true']\\\").forEach(element => {\\n element.addEventListener(\\\"keyup\\\", showList);\\n element.addEventListener(\\\"keyup\\\", searchRadio);\\n element.addEventListener(\\\"focusout\\\", hideList);\\n });\\n\\n document.querySelectorAll(\\\"[data-wi-list-value='true']\\\").forEach(element => {\\n element.addEventListener(\\\"click\\\", checkInput);\\n element.addEventListener(\\\"mousedown\\\", checkInput);\\n });\\n\\n document.querySelectorAll(\\\"[data-wi-phone='true']\\\").forEach(element => {\\n checkPhone(element);\\n });\\n\\n setConditional();\\n check();\\n setAutonumeric();\\n setGoogleMapsApi();\\n setInputCountry();\\n setRecaptcha();\\n\\n}\\n\"","module.exports = \"function searchInput(event) {\\n \\n var inputId = event.target.id;\\n var inputValue = event.target.value.toLowerCase();\\n \\n document.querySelectorAll('#list_'+inputId+' input').forEach(x => {\\n \\n var keyword = x.dataset.wiKeyword.toLowerCase();\\n\\n if (keyword.includes(inputValue)) {\\n x.parentElement.style.display = 'block';\\n } else {\\n x.parentElement.style.display = 'none';\\n }\\n \\n });\\n \\n}\\n\\n// const event_CheckInput = new Event(\\\"wi-check-input\\\");\\n\\nfunction checkInput(event) {\\n \\n var container = event.target;\\n\\n if (container.localName == 'div') {\\n var checkbox = container.querySelector('input');\\n } else {\\n var checkbox = container;\\n }\\n\\n var inputId = checkbox.dataset.wiInput;\\n\\n checkbox.checked = true;\\n\\n var input = document.querySelector('#'+inputId);\\n input.value = checkbox.dataset.wiName;\\n // input.dispatchEvent(event_CheckInput);\\n\\n check();\\n\\n}\\n\\nfunction controlList(event) {\\n\\n var element = event.target;\\n var container = event.target.parentElement;\\n \\n var l = element.dataset.wiListArray.split('|');\\n var v = element.value.toLowerCase();\\n\\n if (v != '') {\\n if (l.includes(v)) {\\n\\n removeInputError(element);\\n\\n container.querySelectorAll('input[type=radio]').forEach(e => {\\n\\n var name = e.dataset.wiName;\\n\\n if (name.toLowerCase() == v) {\\n e.checked = true;\\n } else {\\n e.checked = false;\\n }\\n\\n });\\n \\n } else {\\n \\n inputError(element, 'Campo non corretto')\\n container.querySelectorAll('input[type=radio]:checked').forEach(e => { e.checked = false; });\\n \\n }\\n }\\n\\n check();\\n\\n}\\n\\n\\nfunction showList(event) { event.target.parentElement.classList.add('wi-list-active'); }\\n\\nfunction hideList(event) { event.target.parentElement.classList.remove('wi-list-active'); }\\n\\nfunction searchText(event) { searchResults(event, \\\"text\\\"); }\\n\\nfunction searchRadio(event) { searchResults(event, \\\"radio\\\"); }\\n\\nfunction searchResults(event, result) {\\n\\n var input = event.target;\\n\\n var container = input.parentElement;\\n\\n var list = container.querySelector('.wi-input-list');\\n var listValue = list.querySelector('.wi-input-list-body');\\n var listFooter = list.querySelector('.wi-input-list-footer');\\n\\n var inputId = input.id;\\n var inputName = input.dataset.wiName;\\n var inputValue = input.value.toLowerCase();\\n\\n var inputUrl = input.dataset.wiSearchUrl;\\n\\n if (result == 'radio') {\\n var radioName = \\\"name='\\\"+inputName+\\\"'\\\";\\n } else {\\n var radioName = \\\"\\\";\\n }\\n\\n $.ajax({\\n type: \\\"POST\\\",\\n url: inputUrl,\\n data: { \\n post: 'true',\\n search: inputValue\\n }, \\n success: function (data) {\\n\\n const response = JSON.parse(data);\\n const nResponse = response.length;\\n \\n var listHTML = \\\"\\\";\\n\\n for (let index = 0; index < nResponse; index++) {\\n\\n const value = response[index]['value'];\\n const label = response[index]['label'];\\n const inputValue = response[index]['input-value'];\\n\\n listHTML += \\\"<div class='wi-input-list-value' data-wi-list-value='true'><input data-wi-input='\\\"+inputId+\\\"' type='radio' \\\"+radioName+\\\" data-wi-name='\\\"+inputValue+\\\"' value='\\\"+value+\\\"'>\\\"+label+\\\"</div>\\\";\\n\\n }\\n\\n if (inputValue == '') {\\n listFooter.innerHTML = \\\"Cosa stai cercando?\\\";\\n } else if (nResponse == 1) {\\n listFooter.innerHTML = nResponse+\\\" risultato\\\";\\n } else if (nResponse != 1) {\\n listFooter.innerHTML = nResponse+\\\" risultati\\\";\\n }\\n\\n listValue.innerHTML = listHTML;\\n\\n document.querySelectorAll(\\\"[data-wi-list-value='true']\\\").forEach(element => {\\n element.querySelector('input').setAttribute('aria-label', element.textContent.trim());\\n element.addEventListener(\\\"click\\\", checkInput);\\n element.addEventListener(\\\"mousedown\\\", checkInput);\\n });\\n\\n },\\n error: function (XMLHttpRequest) {\\n ajaxRequestError(XMLHttpRequest);\\n loadingSpinner();\\n }\\n });\\n\\n}\\n\\nfunction textListValue (input, value) {\\n\\n var form = input.form;\\n var inputName = input.dataset.wiName.replace('-text', '');\\n \\n if (value == '') {\\n\\n input.value = '';\\n\\n if (inputChecked = form.querySelector('input[name=\\\"'+inputName+'\\\"]:checked')) {\\n inputChecked.checked = false;\\n }\\n\\n } else {\\n\\n if (form.querySelector('input[name=\\\"'+inputName+'\\\"][value=\\\"'+value+'\\\"]')) {\\n form.querySelector('input[name=\\\"'+inputName+'\\\"][value=\\\"'+value+'\\\"]').click();\\n checkLabel(); \\n }\\n\\n }\\n\\n checkLabel();\\n\\n}\\n\\nfunction textListOptions(input, options) {\\n \\n var listHTML = \\\"\\\";\\n var listArray = [];\\n\\n var form = input.form;\\n var inputId = input.id;\\n var inputAttribute = input.dataset.wiInputAttribute;\\n var inputLabel = input.labels[0];\\n var inputName = input.dataset.wiName.replace('-text', '');;\\n\\n var listContainer = form.querySelector('#list_'+inputId);\\n\\n input.dataset.wiListArray = \\\"\\\";\\n listContainer.innerHTML = \\\"\\\";\\n\\n for (var optionValue in options) {\\n\\n var optionId = \\\"value_\\\"+code();\\n var optionLabel = options[optionValue];\\n\\n listArray.push(optionLabel);\\n \\n listHTML += \\\"<div class='wi-input-list-value' data-wi-list-value='true'><input id='\\\"+optionId+\\\"' data-wi-keyword='\\\"+optionValue+\\\" \\\"+optionLabel+\\\"' data-wi-input='\\\"+inputId+\\\"' data-wi-name='\\\"+optionLabel+\\\"' type='radio' name='\\\"+inputName+\\\"' value='\\\"+optionValue+\\\"'>\\\"+optionLabel+\\\"</div>\\\";\\n\\n }\\n\\n if (listHTML == \\\"\\\") {\\n\\n input.required = false;\\n input.disabled = true;\\n inputLabel.innerHTML = inputLabel.innerHTML.replace('*', '');\\n\\n } else {\\n\\n if (inputAttribute.indexOf('required') != '-1') { \\n\\n input.required = true;\\n\\n if (inputLabel.innerHTML.indexOf('*') == '-1') { \\n inputLabel.innerHTML = inputLabel.innerHTML+'*' \\n }\\n\\n }\\n\\n input.dataset.wiListArray = listArray.join('|').toLowerCase();\\n listContainer.innerHTML = listHTML;\\n\\n }\\n\\n listContainer.querySelectorAll(\\\"[data-wi-list-value='true']\\\").forEach(element => {\\n element.querySelector('input').setAttribute('aria-label', element.textContent.trim());\\n element.addEventListener(\\\"click\\\", checkInput);\\n element.addEventListener(\\\"mousedown\\\", checkInput);\\n });\\n\\n checkLabel();\\n\\n}\\n\"","module.exports = \"var recaptchaPending = new Set();\\nvar recaptchaWidgets = new WeakMap();\\nvar recaptchaObserved = new WeakSet();\\nvar recaptchaScript = null;\\nvar recaptchaObserver = null;\\n\\nfunction setRecaptchaInput() {\\n if (!window.grecaptcha || !grecaptcha.enterprise || !grecaptcha.enterprise.render) { return; }\\n recaptchaPending.forEach(function (element) {\\n if (!element.isConnected || recaptchaWidgets.has(element)) {\\n recaptchaPending.delete(element);\\n return;\\n }\\n var form = element.closest('form');\\n if (!form) { return; }\\n var action = element.dataset.wiAction || form.id || 'undefined';\\n function updateToken(token) {\\n form.querySelector('input[name=\\\"g-recaptcha-token\\\"]').value = token;\\n form.querySelector('input[name=\\\"g-recaptcha-action\\\"]').value = token ? action : '';\\n check();\\n }\\n var widget = grecaptcha.enterprise.render(element, {\\n sitekey: element.dataset.wiSiteKey,\\n action: action,\\n theme: element.dataset.wiTheme,\\n size: element.dataset.wiSize,\\n callback: updateToken,\\n 'expired-callback': function () { updateToken(''); },\\n 'error-callback': function () { updateToken(''); }\\n });\\n recaptchaWidgets.set(element, widget);\\n recaptchaPending.delete(element);\\n });\\n}\\n\\nfunction requestRecaptcha(element) {\\n if (recaptchaWidgets.has(element)) { return; }\\n recaptchaPending.add(element);\\n if (window.grecaptcha && grecaptcha.enterprise && grecaptcha.enterprise.render) {\\n setRecaptchaInput();\\n return;\\n }\\n if (recaptchaScript) { return; }\\n recaptchaScript = document.querySelector('script[src*=\\\"/recaptcha/enterprise.js\\\"]');\\n if (recaptchaScript) {\\n recaptchaScript.addEventListener('load', setRecaptchaInput, { once: true });\\n return;\\n }\\n recaptchaScript = document.createElement('script');\\n recaptchaScript.async = true;\\n recaptchaScript.src = 'https://www.google.com/recaptcha/enterprise.js?onload=setRecaptchaInput&render=explicit';\\n recaptchaScript.onerror = function () {\\n recaptchaScript.remove();\\n recaptchaScript = null;\\n };\\n document.head.appendChild(recaptchaScript);\\n}\\n\\nfunction setRecaptcha() {\\n if (!recaptchaObserver && 'IntersectionObserver' in window) {\\n recaptchaObserver = new IntersectionObserver(function (entries) {\\n entries.forEach(function (entry) {\\n if (entry.isIntersecting) { requestRecaptcha(entry.target); }\\n });\\n }, { rootMargin: '300px' });\\n }\\n document.querySelectorAll('form .g-recaptcha').forEach(function (element) {\\n if (recaptchaObserved.has(element)) { return; }\\n recaptchaObserved.add(element);\\n var form = element.closest('form');\\n form.addEventListener('focusin', function () { requestRecaptcha(element); });\\n form.addEventListener('pointerdown', function () { requestRecaptcha(element); }, { passive: true });\\n if (recaptchaObserver) { recaptchaObserver.observe(element); }\\n else { requestRecaptcha(element); }\\n });\\n}\\n\"","module.exports = \"function scrolla(selector){\\n \\n if (document.querySelector(selector)) {\\n\\n var element = document.querySelector(selector);\\n\\n var headerHeight = '80';\\n\\n if (document.querySelector('header')) {\\n headerHeight = document.querySelector('header').offsetHeight;\\n }\\n\\n element.style.scrollMargin = headerHeight+'px';\\n element.scrollIntoView({ behavior: 'smooth' });\\n\\n } else {\\n\\n console.error(\\\"Selettore ( \\\"+selector+\\\" ) non valido\\\");\\n\\n }\\n\\n}\\n\\nvar keys = {37: 1, 38: 1, 39: 1, 40: 1};\\n\\nfunction preventDefault(e) {\\n e.preventDefault();\\n}\\n\\nfunction preventDefaultForScrollKeys(e) {\\n if (keys[e.keyCode]) {\\n preventDefault(e);\\n return false;\\n }\\n}\\n\\n// modern Chrome requires { passive: false } when adding event\\nvar supportsPassive = false;\\ntry {\\n window.addEventListener(\\\"test\\\", null, Object.defineProperty({}, 'passive', {\\n get: function () { supportsPassive = true; } \\n}));\\n} catch(e) {}\\n\\nvar wheelOpt = supportsPassive ? { passive: false } : false;\\nvar wheelEvent = 'onwheel' in document.createElement('div') ? 'wheel' : 'mousewheel';\\n\\n// call this to Disable\\nfunction disableAllScroll() {\\n window.addEventListener('DOMMouseScroll', preventDefault, false); // older FF\\n window.addEventListener(wheelEvent, preventDefault, wheelOpt); // modern desktop\\n window.addEventListener('touchmove', preventDefault, wheelOpt); // mobile\\n window.addEventListener('keydown', preventDefaultForScrollKeys, false);\\n}\\n\\n// call this to Enable\\nfunction enableAllScroll() {\\n window.removeEventListener('DOMMouseScroll', preventDefault, false);\\n window.removeEventListener(wheelEvent, preventDefault, wheelOpt); \\n window.removeEventListener('touchmove', preventDefault, wheelOpt);\\n window.removeEventListener('keydown', preventDefaultForScrollKeys, false);\\n}\\n\\nfunction disableScroll() {\\n document.querySelector('body').classList.add('block-scroll');\\n}\\n\\nfunction enableScroll() {\\n document.querySelector('body').classList.remove('block-scroll');\\n}\"","module.exports = \"function configTooltip(triggerEL, tooltipEL, config) {\\n\\n var middleware = [\\n FloatingUIDOM.offset(4),\\n FloatingUIDOM.flip(), \\n FloatingUIDOM.shift({ padding: 4 })\\n ];\\n\\n if (config.arrow) { middleware.push( FloatingUIDOM.arrow({ element: tooltipEL.querySelector('.arrow') }) ); }\\n\\n FloatingUIDOM.computePosition(triggerEL, tooltipEL, {\\n placement: config.placement,\\n middleware: middleware\\n }).then(({x, y, placement, middlewareData}) => {\\n\\n Object.assign(tooltipEL.style, { left: `${x}px`, top: `${y}px` });\\n\\n if (config.arrow) {\\n\\n const { x: arrowX, y: arrowY } = middlewareData.arrow;\\n\\n const staticSide = {\\n top: 'bottom',\\n right: 'left',\\n bottom: 'top',\\n left: 'right',\\n }[placement.split('-')[0]];\\n \\n Object.assign(tooltipEL.querySelector('.arrow').style, {\\n left: arrowX != null ? `${arrowX}px` : '',\\n top: arrowY != null ? `${arrowY}px` : '',\\n right: '',\\n bottom: '',\\n [staticSide]: '-4px',\\n });\\n \\n }\\n\\n });\\n\\n}\\n\\nfunction createTooltip(event) {\\n\\n var tooltipId = 'tooltip-'+code();\\n var element = event.target;\\n var elData = element.dataset;\\n\\n var options = [];\\n options.title = elData.wiTitle ?? 'ND';\\n options.placement = elData.wiPlacement ?? 'top';\\n options.arrow = elData.wiArrow == 'true' ? true : false;\\n options.class = elData.wiClass ?? '';\\n\\n element.setAttribute(\\\"aria-describedby\\\", tooltipId);\\n\\n var tooltipContent = options.title;\\n\\n if (options.arrow) { tooltipContent += '<div class=\\\"arrow\\\"></div>'; }\\n\\n var tooltip = document.createElement(\\\"div\\\");\\n tooltip.id = tooltipId;\\n tooltip.innerHTML = tooltipContent;\\n \\n tooltip.setAttribute(\\\"role\\\", 'tooltip');\\n tooltip.setAttribute(\\\"class\\\", 'tooltip '+options.class);\\n\\n tooltip.style.display = 'block';\\n\\n document.body.appendChild(tooltip);\\n\\n configTooltip(element, tooltip, options);\\n\\n}\\n\\nfunction removeTooltip() { document.querySelectorAll('.tooltip').forEach(tooltip => { tooltip.remove(); }); }\\n\\nfunction setTooltip() {\\n\\n document.querySelectorAll('[data-wi-toggle=\\\"tooltip\\\"]').forEach(el => {\\n \\n [\\n ['mouseenter', createTooltip],\\n ['mouseleave', removeTooltip],\\n ['focus', createTooltip],\\n ['blur', removeTooltip],\\n ].forEach(([event, listener]) => { el.addEventListener(event, listener); });\\n \\n });\\n\\n}\"","module.exports = \"function loadingSpinner(action = 'toggle') {\\n\\n const spinner = document.getElementById('loading-spinner');\\n let shouldShow;\\n\\n if (action === 'toggle') {\\n shouldShow = spinner.classList.contains('d-none');\\n } else {\\n shouldShow = action;\\n }\\n\\n if (shouldShow) {\\n if (spinner.classList.contains('d-none')) {\\n spinner.classList.remove('d-none', 'no-interaction');\\n disableScroll();\\n }\\n } else {\\n if (!spinner.classList.contains('d-none')) {\\n spinner.classList.add('d-none', 'no-interaction');\\n enableScroll();\\n }\\n }\\n\\n}\"","module.exports = \"function canvasFullPage(elementId, draw = false) {\\n\\n var element = document.createElement(\\\"CANVAS\\\");\\n element.id = elementId;\\n element.style.position = \\\"fixed\\\";\\n element.style.top = 0;\\n element.style.left = 0;\\n element.style.zIndex = 999999;\\n element.style.background = '#ffffff';\\n element.style.touchAction = 'none';\\n element.style.msTouchAction = 'none';\\n\\n fullPage(element);\\n\\n window.addEventListener('resize', () => { fullPage(element) });\\n\\n if (draw) { canvasDraw(element); }\\n\\n}\\n\\nfunction canvasReset(element) {\\n \\n var ctx = element.getContext(\\\"2d\\\");\\n ctx.clearRect(0, 0, element.width, element.height);\\n ctx.restore();\\n\\n}\\n\\nfunction canvasDraw(element) {\\n\\n var ctx = element.getContext(\\\"2d\\\");\\n \\n let offset = position(element);\\n let painting = false;\\n\\n function drawStart() {\\n offset = position(element);\\n painting = true;\\n draw(e);\\n }\\n\\n function drawEnd() {\\n painting = false;\\n ctx.beginPath();\\n }\\n\\n function draw(e) {\\n\\n if (!painting) return;\\n ctx.lineWidth = 1;\\n ctx.lineCap = \\\"round\\\";\\n ctx.strokeStyle = \\\"black\\\";\\n\\n if (e.type == 'touchmove'){\\n var x = e.touches[0].clientX;\\n var y = e.touches[0].clientY;\\n } else if (e.type == 'mousemove'){\\n var x = e.clientX;\\n var y = e.clientY;\\n }\\n\\n var offsetX = offset.left;\\n var offsetY = offset.top;\\n\\n var x = x - offsetX;\\n var y = y - offsetY;\\n\\n ctx.lineTo(x, y);\\n ctx.stroke();\\n ctx.beginPath();\\n ctx.moveTo(x, y);\\n\\n }\\n\\n element.addEventListener(\\\"mousedown\\\", drawStart);\\n element.addEventListener(\\\"touchstart\\\", drawStart);\\n element.addEventListener(\\\"mouseup\\\", drawEnd);\\n element.addEventListener(\\\"touchend\\\", drawEnd);\\n element.addEventListener(\\\"mousemove\\\", draw);\\n element.addEventListener(\\\"touchmove\\\", draw);\\n\\n}\"","module.exports = \"async function postData(url, data) {\\n\\n loadingSpinner();\\n\\n if (data === undefined) {\\n\\n console.error(\\\"Non è stato passato alcun dato alla funzione postData()\\\");\\n alertToast(800);\\n\\n } else {\\n \\n var form = (data instanceof FormData === false) ? createPostData(data) : data;\\n\\n return await fetch(url, {\\n method: \\\"POST\\\",\\n body: form\\n })\\n .then((response) => { \\n\\n if (response.ok) {\\n\\n return response.json().catch((error) => { \\n\\n console.error(\\\"Il file non risponde in JSON!\\\");\\n throw new Error(802);\\n\\n });\\n\\n } else {\\n\\n console.error(\\\"Impossibile connettersi o trovare il file!\\\");\\n throw new Error(802);\\n\\n }\\n \\n })\\n .then((value) => { \\n \\n if (value.status == 200) {\\n\\n loadingSpinner(); \\n return value;\\n\\n } else if (value.status == 401) {\\n\\n throw new Error(911);\\n\\n } else if (value.status) {\\n\\n throw new Error(value.status);\\n \\n } else {\\n\\n console.error(\\\"La risposta deve avere il seguente formato: \\\", {\\n success: true,\\n status:\\t200,\\n response: {}\\n });\\n\\n throw new Error(803);\\n\\n }\\n\\n })\\n .catch((error) => { \\n \\n loadingSpinner(); \\n alertToast(error.message); \\n\\n })\\n\\n }\\n\\n}\\n\\nfunction createPostData(array = {}) {\\n\\n var data = new FormData();\\n\\n Object.keys(array).forEach(key => {\\n data.append(key, array[key]);\\n });\\n\\n return data;\\n\\n}\\n\\n// Vecchie funzioni\\nfunction fetchResponse(response) {\\n \\n if (response.ok) {\\n\\n return response.json();\\n\\n } else {\\n\\n alertToast(802);\\n console.error(\\\"Impossibile connettersi o trovare il file!\\\");\\n return false;\\n\\n }\\n\\n}\\n\\nfunction fetchValue(value) {\\n \\n if (value == false) {\\n \\n return false;\\n \\n } else {\\n\\n if (value.status == 200) {\\n return value;\\n } else if (value.status == 401) {\\n alertToast(911);\\n return false;\\n } else if (value.status == undefined) {\\n alertToast(803);\\n return false;\\n } else {\\n alertToast(value.status);\\n return false;\\n }\\n\\n }\\n\\n}\\n\\nfunction fetchError(error) {\\n \\n alertToast(802);\\n console.error(\\\"Il file non risponde in JSON!\\\");\\n\\n}\"","module.exports = \"var AUTONUMERIC_NUMBER = {\\n caretPositionOnFocus: 'end',\\n decimalPlacesShownOnFocus: 2,\\n digitGroupSeparator: '',\\n decimalCharacter: '.',\\n onInvalidPaste: 'truncate',\\n currencySymbolPlacement: 's',\\n outputFormat: 'number',\\n unformatOnSubmit: true,\\n modifyValueOnWheel: false\\n};\\n\\nvar AUTONUMERIC_PRICE = {\\n caretPositionOnFocus: 'end',\\n decimalPlacesShownOnFocus: 2,\\n digitGroupSeparator: '',\\n decimalCharacter: '.',\\n onInvalidPaste: 'truncate',\\n currencySymbol: '€',\\n currencySymbolPlacement: 's',\\n outputFormat: 'number',\\n unformatOnSubmit: true,\\n modifyValueOnWheel: false\\n};\\n\\nvar AUTONUMERIC_PERCENTIGE = {\\n caretPositionOnFocus: 'end',\\n decimalPlacesShownOnFocus: 2,\\n digitGroupSeparator: '',\\n decimalCharacter: '.',\\n onInvalidPaste: 'truncate',\\n currencySymbol: '%',\\n currencySymbolPlacement: 's',\\n outputFormat: 'number',\\n unformatOnSubmit: true,\\n modifyValueOnWheel: false\\n};\\n\\nfunction customAutonumeric(element, autonumeric) {\\n\\n var option = {};\\n\\n if (autonumeric.caretPositionOnFocus != undefined) { \\n option.caretPositionOnFocus = autonumeric.caretPositionOnFocus; \\n }\\n\\n if (element.dataset.wiNumberDecimal != undefined) { \\n option.decimalPlacesShownOnFocus = element.dataset.wiNumberDecimal;\\n option.decimalPlaces = element.dataset.wiNumberDecimal;\\n } else {\\n if (autonumeric.decimalPlacesShownOnFocus != undefined) {\\n option.decimalPlacesShownOnFocus = autonumeric.decimalPlacesShownOnFocus;\\n }\\n }\\n\\n if (element.dataset.wiNumberDecimalSeparator != undefined) { \\n option.decimalCharacter = element.dataset.wiNumberDecimalSeparator;\\n } else {\\n if (autonumeric.decimalCharacter != undefined) {\\n option.decimalCharacter = autonumeric.decimalCharacter;\\n }\\n }\\n\\n if (element.dataset.wiNumberGroupSeparator != undefined) { \\n option.digitGroupSeparator = element.dataset.wiNumberGroupSeparator;\\n } else {\\n if (autonumeric.digitGroupSeparator != undefined) {\\n option.digitGroupSeparator = autonumeric.digitGroupSeparator;\\n }\\n }\\n\\n // AutoNumeric non parte se decimali e migliaia hanno lo stesso segno:\\n // vince il decimale chiesto dal campo e le migliaia restano senza separatore.\\n if (option.decimalCharacter != undefined && option.decimalCharacter === option.digitGroupSeparator) {\\n option.digitGroupSeparator = '';\\n }\\n\\n // Con la virgola decimale anche il punto (quello del tastierino) scrive i decimali.\\n if (option.decimalCharacter != undefined && option.decimalCharacter !== '.') {\\n option.decimalCharacterAlternative = '.';\\n }\\n\\n if (autonumeric.onInvalidPaste != undefined) { \\n option.onInvalidPaste = autonumeric.onInvalidPaste; \\n }\\n\\n if (element.dataset.wiNumberSymbol != undefined) { \\n option.currencySymbol = element.dataset.wiNumberSymbol;\\n } else {\\n if (autonumeric.currencySymbol != undefined) {\\n option.currencySymbol = autonumeric.currencySymbol;\\n }\\n }\\n\\n if (element.dataset.wiNumberSymbolPlacement != undefined) { \\n option.currencySymbolPlacement = element.dataset.wiNumberSymbolPlacement;\\n } else {\\n if (autonumeric.currencySymbolPlacement != undefined) {\\n option.currencySymbolPlacement = autonumeric.currencySymbolPlacement;\\n }\\n }\\n\\n if (autonumeric.outputFormat != undefined) { \\n option.outputFormat = autonumeric.outputFormat; \\n }\\n\\n if (autonumeric.unformatOnSubmit != undefined) { \\n option.unformatOnSubmit = autonumeric.unformatOnSubmit; \\n }\\n\\n if (autonumeric.modifyValueOnWheel != undefined) { \\n option.modifyValueOnWheel = autonumeric.modifyValueOnWheel; \\n }\\n\\n return option;\\n \\n}\\n\\nfunction setAutonumeric(container = document) {\\n \\n container.querySelectorAll(\\\"[data-wi-number='true']\\\").forEach(element => {\\n \\n var el = AutoNumeric.getAutoNumericElement(element);\\n \\n if (el === null) {\\n\\n new AutoNumeric(element, customAutonumeric(element, AUTONUMERIC_NUMBER)); \\n \\n }\\n\\n });\\n\\n container.querySelectorAll(\\\"[data-wi-price='true']\\\").forEach(element => {\\n \\n var el = AutoNumeric.getAutoNumericElement(element);\\n if (el === null) { new AutoNumeric(element, customAutonumeric(element, AUTONUMERIC_PRICE)); }\\n\\n });\\n \\n container.querySelectorAll(\\\"[data-wi-percentige='true']\\\").forEach(element => {\\n \\n var el = AutoNumeric.getAutoNumericElement(element);\\n if (el === null) { new AutoNumeric(element, customAutonumeric(element, AUTONUMERIC_PERCENTIGE)); }\\n\\n });\\n\\n}\"","module.exports = \"function wiConditionalControls(field, name) {\\n\\n var scope = field.form || document;\\n var controls = [];\\n var normalizedName = String(name || \\\"\\\").replace(/\\\\[\\\\]$/, \\\"\\\");\\n\\n scope.querySelectorAll(\\\"[name]\\\").forEach(function(control) {\\n var controlName = String(control.name || \\\"\\\").replace(/\\\\[\\\\]$/, \\\"\\\");\\n\\n if (controlName === normalizedName) { controls.push(control); }\\n });\\n\\n return controls;\\n\\n}\\n\\nfunction wiConditionalDriverValues(field, name) {\\n\\n var values = [];\\n var controls = wiConditionalControls(field, name);\\n var hasValueControl = controls.some(function(control) {\\n return (control.type || \\\"\\\").toLowerCase() !== \\\"hidden\\\";\\n });\\n\\n controls.forEach(function(control) {\\n\\n var type = (control.type || \\\"\\\").toLowerCase();\\n\\n if (type === \\\"hidden\\\" && hasValueControl) { return; }\\n\\n if (type === \\\"radio\\\" || type === \\\"checkbox\\\") {\\n if (control.checked) { values.push(String(control.value)); }\\n return;\\n }\\n\\n if (control.multiple && control.options) {\\n Array.from(control.options).forEach(function(option) {\\n if (option.selected) { values.push(String(option.value)); }\\n });\\n return;\\n }\\n\\n if (control.value !== undefined && control.value !== \\\"\\\") {\\n values.push(String(control.value));\\n }\\n\\n });\\n\\n return values;\\n\\n}\\n\\nfunction wiConditionalDriverValue(field, name) {\\n\\n var values = wiConditionalDriverValues(field, name);\\n\\n return values.length ? values[values.length - 1] : \\\"\\\";\\n\\n}\\n\\nfunction wiConditionalWrapper(field) {\\n\\n var explicit = field.closest(\\\"[data-wi-conditional-container]\\\");\\n if (explicit) { return explicit; }\\n\\n var row = field.closest(\\\"[data-wi-input-row]\\\");\\n if (row) { return row; }\\n\\n var wonder = field.closest(\\\".wi-input-container\\\");\\n if (wonder) {\\n var wonderParent = wonder.parentElement;\\n\\n if (field.form && wonderParent && wonderParent.parentElement === field.form && wonderParent.children.length === 1) {\\n return wonderParent;\\n }\\n\\n return wonder;\\n }\\n\\n var floating = field.closest(\\\".form-floating\\\");\\n if (floating) { return floating.parentElement || floating; }\\n\\n var bootstrap = field.closest('[id^=\\\"container-\\\"]');\\n if (bootstrap) { return bootstrap.parentElement || bootstrap; }\\n\\n var group = field.closest(\\\"[data-wi-date-range], [data-wi-date-time-range], .input-group\\\");\\n if (group) { return group.parentElement || group; }\\n\\n return field.parentElement;\\n\\n}\\n\\nfunction wiSetConditionalVisibility(field, show) {\\n\\n var wrapper = wiConditionalWrapper(field);\\n\\n if (!field.dataset.wiConditionalRequired) {\\n field.dataset.wiConditionalRequired = field.required ? \\\"required\\\" : \\\"optional\\\";\\n }\\n\\n field.required = show && field.dataset.wiConditionalRequired === \\\"required\\\";\\n\\n if (!wrapper) { return; }\\n\\n if (!wrapper.dataset.wiConditionalDisplayCaptured) {\\n wrapper.dataset.wiConditionalDisplayCaptured = \\\"1\\\";\\n wrapper.dataset.wiConditionalDisplay = wrapper.style.display || \\\"\\\";\\n wrapper.dataset.wiConditionalAriaHidden = wrapper.getAttribute(\\\"aria-hidden\\\") || \\\"\\\";\\n wrapper.dataset.wiConditionalAriaHiddenPresent = wrapper.hasAttribute(\\\"aria-hidden\\\") ? \\\"1\\\" : \\\"0\\\";\\n }\\n\\n if (show) {\\n wrapper.style.display = wrapper.dataset.wiConditionalDisplay || \\\"\\\";\\n\\n if (wrapper.dataset.wiConditionalAriaHiddenPresent === \\\"1\\\") {\\n wrapper.setAttribute(\\\"aria-hidden\\\", wrapper.dataset.wiConditionalAriaHidden);\\n } else {\\n wrapper.removeAttribute(\\\"aria-hidden\\\");\\n }\\n\\n wrapper.removeAttribute(\\\"data-wi-conditional-hidden\\\");\\n return;\\n }\\n\\n wrapper.style.display = \\\"none\\\";\\n wrapper.setAttribute(\\\"aria-hidden\\\", \\\"true\\\");\\n wrapper.setAttribute(\\\"data-wi-conditional-hidden\\\", \\\"true\\\");\\n\\n}\\n\\nfunction wiEvaluateConditional() {\\n\\n document.querySelectorAll(\\\"[data-visible-when], [data-hidden-when]\\\").forEach(function(field) {\\n\\n var isVisibleRule = field.hasAttribute(\\\"data-visible-when\\\");\\n var name = isVisibleRule ? field.dataset.visibleWhen : field.dataset.hiddenWhen;\\n var list = (isVisibleRule ? field.dataset.visibleWhenValues : field.dataset.hiddenWhenValues) || \\\"\\\";\\n var expected = list.split(\\\",\\\").map(function(item) { return item.trim(); });\\n var current = wiConditionalDriverValues(field, name);\\n\\n if (!current.length) { current = [\\\"\\\"]; }\\n\\n var matches = current.some(function(value) { return expected.indexOf(value) !== -1; });\\n var show = isVisibleRule ? matches : !matches;\\n\\n wiSetConditionalVisibility(field, show);\\n\\n });\\n\\n if (typeof check === \\\"function\\\") { check(); }\\n\\n}\\n\\nfunction setConditional(container = document) {\\n\\n var selector = \\\"[data-visible-when], [data-hidden-when]\\\";\\n var fields = Array.from(container.querySelectorAll(selector));\\n\\n if (container.matches && container.matches(selector)) {\\n fields.unshift(container);\\n }\\n\\n if (!fields.length) { return; }\\n\\n fields.forEach(function(field) {\\n\\n var name = field.dataset.visibleWhen || field.dataset.hiddenWhen;\\n if (!name) { return; }\\n\\n wiConditionalControls(field, name).forEach(function(control) {\\n if (control.wiConditionalBound === true) { return; }\\n\\n control.wiConditionalBound = true;\\n control.dataset.wiConditionalBound = \\\"1\\\";\\n control.addEventListener(\\\"change\\\", wiEvaluateConditional);\\n control.addEventListener(\\\"input\\\", wiEvaluateConditional);\\n });\\n\\n });\\n\\n wiEvaluateConditional();\\n\\n}\\n\"","module.exports = \"function setRequired(element, required = true) {\\n \\n labelAsterisk(element, required);\\n\\n element.required = required;\\n\\n}\\n\\nfunction setDisabled(element, disabled = true) {\\n \\n labelAsterisk(element, disabled ? false : true);\\n\\n if (disabled) {\\n if (element.type === 'checkbox' || element.type === 'radio') { element.checked = false; }\\n }\\n\\n element.disabled = disabled;\\n\\n}\\n\\nfunction labelAsterisk(input, asterisk = true)\\n{\\n\\n if (input.labels) {\\n \\n var label = input.labels[0];\\n var labelValue = label.innerHTML;\\n var hasAsterisk = (labelValue.substring(labelValue.length - 1) == '*') ? true : false;\\n \\n if (asterisk) {\\n if (!hasAsterisk) { label.innerHTML = labelValue+'*'; }\\n } else {\\n if (hasAsterisk) { label.innerHTML = labelValue.replace('*', ''); }\\n }\\n\\n }\\n\\n}\\n\\nfunction changeInputId(el) \\n{\\n\\n const idEl = 'field_' + code(10).toLowerCase();\\n const labelEl = el.parentElement.querySelector('.wi-label, .wi-checkbox-label');\\n\\n if (labelEl !== null) {\\n el.id = idEl;\\n labelEl.htmlFor = idEl;\\n }\\n\\n}\"","module.exports = \"function setGoogleMapsApi() {\\n\\n if (document.querySelector(\\\"[data-wi-search-place]\\\")) {\\n\\n /**\\n * \\n * Se ci sono degli input Place chiama le API di Google Place\\n * Documentazione: https://developers.google.com/maps/documentation/javascript/place-autocomplete?hl=it\\n * \\n */\\n\\n var script = document.createElement('script');\\n script.type = 'text/javascript';\\n script.async = true;\\n script.src = 'https://maps.googleapis.com/maps/api/js?key='+GOOGLE_API_KEY+'&loading=async&libraries=places&callback=initGoogleMapsPlace'; \\n\\n document.head.appendChild(script);\\n \\n }\\n\\n}\\n\\nfunction initGoogleMapsPlace() {\\n\\n document.querySelectorAll(\\\"[data-wi-search-place='true']\\\").forEach(input => {\\n\\n var callback = input.dataset.wiCallback ?? checkInputPlace;\\n\\n input.disabled = false;\\n // Il campo abilitato da Places non e' una modifica dell'utente\\n window.wiSaveBar?.absorb(input);\\n \\n var options = {};\\n\\n if (input.dataset.wiRestriction && input.dataset.wiRestriction != '[]') { \\n\\n var restrictions = JSON.parse(input.dataset.wiRestriction);\\n options.componentRestrictions = restrictions; \\n \\n }\\n\\n options.fields = [ \\\"address_components\\\", \\\"geometry\\\" ];\\n options.types = [ \\\"address\\\" ];\\n \\n var googlePlace = new google.maps.places.Autocomplete(input, options);\\n\\n input.addEventListener(\\\"change\\\", () => { placeNeedCheck(input); });\\n googlePlace.addListener(\\\"place_changed\\\", () => { window[callback](input, googlePlace); });\\n\\n });\\n\\n}\\n\\nfunction placeNeedCheck(input) {\\n\\n inputError(input, 'Indirizzo non valido, è necessario selezionare un indirizzo dall\\\\'elenco!');\\n\\n}\\n\"","module.exports = \"function isInternationalPhone(value) {\\n\\n return /^\\\\s*(\\\\+|00)/.test(String(value || ''));\\n\\n}\\n\\nfunction formatPhone(value, trimEnd) {\\n\\n value = String(value || '');\\n\\n // Numero nazionale: solo cifre, al massimo 10, a gruppi 3-3-4.\\n if (!isInternationalPhone(value)) {\\n var digits = value.replace(/\\\\D/g, '').slice(0, 10);\\n return [digits.slice(0, 3), digits.slice(3, 6), digits.slice(6, 10)]\\n .filter(Boolean)\\n .join(' ');\\n }\\n\\n // Numero internazionale (+ o 00): prefisso e gruppi come digitati, al massimo 15 cifre.\\n var result = /^\\\\s*\\\\+/.test(value) ? '+' : '';\\n var count = 0;\\n var separator = false;\\n\\n value.replace(/^\\\\s*\\\\+/, '').split('').forEach(function (character) {\\n if (!/\\\\d/.test(character)) {\\n separator = count > 0;\\n return;\\n }\\n\\n if (count >= 15) { return; }\\n\\n if (separator) { result += ' '; }\\n result += character;\\n separator = false;\\n count++;\\n });\\n\\n if (separator && !trimEnd && count < 15) { result += ' '; }\\n\\n return result;\\n\\n}\\n\\nfunction checkPhone(element) {\\n\\n if (!element || element.dataset.wiPhoneInitialized === 'true') { return; }\\n element.dataset.wiPhoneInitialized = 'true';\\n\\n var format = function (event) {\\n var cursor = typeof element.selectionStart === 'number' ? element.selectionStart : null;\\n var atEnd = cursor !== null && cursor >= element.value.length;\\n var digitsBeforeCursor = cursor === null\\n ? null\\n : element.value.slice(0, cursor).replace(/[^\\\\d+]/g, '').length;\\n var value = formatPhone(element.value, !event || event.type === 'change');\\n\\n if (element.value !== value) { element.value = value; }\\n\\n if (digitsBeforeCursor !== null && typeof element.setSelectionRange === 'function') {\\n var position = atEnd ? value.length : 0;\\n var digitsSeen = 0;\\n while (!atEnd && position < value.length && digitsSeen < digitsBeforeCursor) {\\n if (/[\\\\d+]/.test(value[position])) { digitsSeen++; }\\n position++;\\n }\\n element.setSelectionRange(position, position);\\n }\\n };\\n\\n element.addEventListener('input', format);\\n element.addEventListener('change', format);\\n format();\\n\\n}\\n\"","module.exports = \"// Loader dell'API Google Maps JS (Dynamic Library Import) + marker builder di default.\\n// Uso: await requireGoogleMaps(['maps', 'places', 'marker']); poi inizializzare la mappa.\\nasync function requireGoogleMaps(libs = [ 'maps', 'places', 'marker' ], options = {}) {\\n\\n const {\\n key = (typeof GOOGLE_API_KEY !== 'undefined' ? GOOGLE_API_KEY : ''),\\n v = 'weekly',\\n language = null\\n } = options;\\n\\n const params = { key, v };\\n if (language) { params.language = language; }\\n\\n (g=>{var h,a,k,p=\\\"The Google Maps JavaScript API\\\",c=\\\"google\\\",l=\\\"importLibrary\\\",q=\\\"__ib__\\\",m=document,b=window;b=b[c]||(b[c]={});var d=b.maps||(b.maps={}),r=new Set,e=new URLSearchParams,u=()=>h||(h=new Promise(async(f,n)=>{await (a=m.createElement(\\\"script\\\"));e.set(\\\"libraries\\\",[...r]+\\\"\\\");for(k in g)e.set(k.replace(/[A-Z]/g,t=>\\\"_\\\"+t[0].toLowerCase()),g[k]);e.set(\\\"callback\\\",c+\\\".maps.\\\"+q);a.src=`https://maps.${c}apis.com/maps/api/js?`+e;d[q]=f;a.onerror=()=>h=n(Error(p+\\\" could not load.\\\"));a.nonce=m.querySelector(\\\"script[nonce]\\\")?.nonce||\\\"\\\";m.head.append(a)}));d[l]?console.warn(p+\\\" only loads once. Ignoring:\\\",g):d[l]=(f,...n)=>r.add(f)&&u().then(()=>d[l](f,...n))})(params);\\n\\n for (const lib of libs) {\\n await google.maps.importLibrary(lib);\\n }\\n\\n}\\n\\n// Builder di default per il contenuto di un AdvancedMarkerElement.\\n// properties: { id, type, icon, image, name, address, url, badgeText }\\n// Per un markup diverso passare la propria funzione a MapManager.addAdvancedMarker().\\nfunction gmapMarkerConstructor(properties) {\\n\\n const content = document.createElement(\\\"div\\\");\\n\\n if (properties.id) { content.id = `marker-${properties.id}`; }\\n content.classList.add(\\\"wi-marker\\\");\\n if (properties.type) { content.classList.add(`wi-marker-${properties.type}`); }\\n\\n const image = properties.image ? `\\n <div class=\\\"w-30 b-r-10 o-hidden\\\">\\n <div class=\\\"f-3-2\\\">\\n ${properties.image}\\n </div>\\n </div>` : '';\\n\\n const address = properties.address ? `<div class=\\\"text-small mt-1\\\">${properties.address}</div>` : '';\\n\\n const badge = properties.url ? `\\n <div class=\\\"features mt-2\\\">\\n <a href=\\\"${properties.url}\\\" class=\\\"badge badge-primary\\\">\\n ${properties.badgeText ?? ''}\\n </a>\\n </div>` : '';\\n\\n content.innerHTML = `\\n <div class=\\\"icon\\\">\\n <div class=\\\"f-1-1\\\">\\n ${properties.icon ?? ''}\\n </div>\\n </div>\\n <div class=\\\"details\\\">\\n ${image}\\n <div class=\\\"${properties.image ? 'w-70 pl-2' : 'w-100'} box-border\\\">\\n <div class=\\\"text fw-400\\\">${properties.name ?? ''}</div>\\n ${address}\\n ${badge}\\n </div>\\n </div>\\n `;\\n\\n return content;\\n\\n}\\n\\n// Espande/comprime un marker (classe .highlight su .wi-marker)\\nfunction toggleHighlight(markerView) {\\n\\n if (!markerView || !markerView.content || !markerView.content.classList) { return; }\\n\\n if (markerView.content.classList.contains(\\\"highlight\\\")) {\\n markerView.content.classList.remove(\\\"highlight\\\");\\n markerView.zIndex = null;\\n } else {\\n markerView.content.classList.add(\\\"highlight\\\");\\n markerView.zIndex = 1;\\n }\\n\\n}\\n\"","module.exports = \"function position(element, showItem = false) {\\n\\n var rect = element.getBoundingClientRect();\\n\\n if (showItem) {\\n\\n var width = rect.right - rect.left;\\n var height = rect.bottom - rect.top;\\n\\n var element = document.createElement(\\\"DIV\\\");\\n element.style.position = \\\"fixed\\\";\\n element.style.top = rect.top+'px';\\n element.style.left = rect.left+'px';\\n element.style.width = width+'px';\\n element.style.height = height+'px';\\n element.style.zIndex = 999999;\\n element.style.background = 'rgba(255, 0, 0, .2)';\\n document.body.appendChild(element);\\n\\n }\\n\\n return rect;\\n\\n}\\n\\nfunction fullPage(element) {\\n element.width = window.innerWidth;\\n element.height = window.innerHeight;\\n}\\n\\nfunction copyText(text, icon = null) {\\n\\n if (icon != null) {\\n document.querySelectorAll('.bi-clipboard-check').forEach(element => {\\n element.classList.remove('bi-clipboard-check')\\n element.classList.add('bi-clipboard');\\n });\\n }\\n\\n navigator.clipboard.writeText(text).then(() => {\\n if (icon != null) {\\n icon.classList.remove('bi-clipboard');\\n icon.classList.add('bi-clipboard-check');\\n }\\n },() => {\\n if (icon != null) {\\n icon.classList.remove('bi-clipboard');\\n icon.classList.add('bi-clipboard-x');\\n }\\n });\\n\\n}\\n\\n// Messaggio testuale di una risposta 4xx in JSON ({ response: '...' }); null altrimenti.\\n// Gli errori 5xx restano generici per non mostrare dettagli interni.\\nfunction ajaxResponseMessage(request) {\\n\\n if (!request || request.readyState != 4 || request.status < 400 || request.status > 499) {\\n return null;\\n }\\n\\n try {\\n var message = JSON.parse(request.responseText).response;\\n } catch {\\n return null;\\n }\\n\\n return typeof message === 'string' && message.trim() !== '' ? message.trim() : null;\\n\\n}\\n\\nfunction ajaxRequestError(request) {\\n \\n if (request.readyState == 4) {\\n alertToast(802);\\n } else if (request.readyState == 0) {\\n alertToast(801);\\n } else {\\n alertToast(800);\\n }\\n\\n}\\n\\nfunction code(codeLength = 10) {\\n\\n var result = '';\\n var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';\\n var charactersLength = characters.length;\\n\\n for ( var i = 0; i < codeLength; i++ ) {\\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\\n }\\n\\n return result;\\n\\n}\\n\\nfunction isMobile() {\\n\\n if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {\\n return true;\\n } else {\\n return false;\\n }\\n \\n}\\n\\nfunction delay(time) {\\n\\n return new Promise(resolve => setTimeout(resolve, time));\\n\\n}\\n\\n// Previene l'uscita dalla pagina\\nfunction preventPageExit(event) {\\n \\n event.preventDefault();\\n event.returnValue = true;\\n\\n}\"","module.exports = \"function setVideoJS() {\\n\\n document.querySelectorAll(\\\".video-js\\\").forEach(element => {\\n videojs(element);\\n });\\n\\n}\"","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\nmodule.exports = function(src) {\n\tfunction log(error) {\n\t\t(typeof console !== \"undefined\")\n\t\t&& (console.error || console.log)(\"[Script Loader]\", error);\n\t}\n\n\t// Check for IE =< 8\n\tfunction isIE() {\n\t\treturn typeof attachEvent !== \"undefined\" && typeof addEventListener === \"undefined\";\n\t}\n\n\ttry {\n\t\tif (typeof execScript !== \"undefined\" && isIE()) {\n\t\t\texecScript(src);\n\t\t} else if (typeof eval !== \"undefined\") {\n\t\t\teval.call(null, src);\n\t\t} else {\n\t\t\tlog(\"EvalError: No eval function available\");\n\t\t}\n\t} catch (error) {\n\t\tlog(error);\n\t}\n}\n","require(\"!!../../../../../node_modules/script-loader/addScript.js\")(require(\"!!../../../../../node_modules/raw-loader/index.js!./input.js\"))","require(\"!!../../../../../node_modules/script-loader/addScript.js\")(require(\"!!../../../../../node_modules/raw-loader/index.js!./list.js\"))","require(\"!!../../../../../node_modules/script-loader/addScript.js\")(require(\"!!../../../../../node_modules/raw-loader/index.js!./recaptcha.js\"))","require(\"!!../../../../node_modules/script-loader/addScript.js\")(require(\"!!../../../../node_modules/raw-loader/index.js!./scroll.js\"))","require(\"!!../../../../node_modules/script-loader/addScript.js\")(require(\"!!../../../../node_modules/raw-loader/index.js!./tooltip.js\"))","require(\"!!../../../../node_modules/script-loader/addScript.js\")(require(\"!!../../../../node_modules/raw-loader/index.js!./utility.js\"))","require(\"!!../../../../node_modules/script-loader/addScript.js\")(require(\"!!../../../../node_modules/raw-loader/index.js!./canvas.js\"))","require(\"!!../../../../node_modules/script-loader/addScript.js\")(require(\"!!../../../../node_modules/raw-loader/index.js!./fetch.js\"))","require(\"!!../../../../../node_modules/script-loader/addScript.js\")(require(\"!!../../../../../node_modules/raw-loader/index.js!./autonumeric.js\"))","require(\"!!../../../../../node_modules/script-loader/addScript.js\")(require(\"!!../../../../../node_modules/raw-loader/index.js!./conditional.js\"))","require(\"!!../../../../../node_modules/script-loader/addScript.js\")(require(\"!!../../../../../node_modules/raw-loader/index.js!./input.js\"))","require(\"!!../../../../../node_modules/script-loader/addScript.js\")(require(\"!!../../../../../node_modules/raw-loader/index.js!./maps.js\"))","require(\"!!../../../../../node_modules/script-loader/addScript.js\")(require(\"!!../../../../../node_modules/raw-loader/index.js!./phone.js\"))","require(\"!!../../../../node_modules/script-loader/addScript.js\")(require(\"!!../../../../node_modules/raw-loader/index.js!./gmaps.js\"))","require(\"!!../../../../node_modules/script-loader/addScript.js\")(require(\"!!../../../../node_modules/raw-loader/index.js!./utility.js\"))","require(\"!!../../../../node_modules/script-loader/addScript.js\")(require(\"!!../../../../node_modules/raw-loader/index.js!./video.js\"))","// The module cache\nconst __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tconst cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tconst module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","import { TranslationProvider } from \"wonder-image\";\n\nexport default class ApiClient {\n\n constructor(baseUrl, token) {\n\n this.baseUrl = baseUrl;\n this.token = token;\n\n }\n\n async request(endpoint, options = {}) {\n\n const headers = {\n \"Authorization\": `Bearer ${this.token}`,\n \"Accept-Language\": TranslationProvider.lang,\n ...options.headers,\n };\n\n // Se non è FormData, impostiamo JSON\n let body = options.body;\n\n if (!(body instanceof FormData) && body !== undefined) {\n headers[\"Content-Type\"] = \"application/json\";\n body = JSON.stringify(body);\n }\n\n const response = await fetch(`${this.baseUrl}${endpoint}`, {\n ...options,\n headers,\n body\n });\n\n let data;\n const ct = response.headers.get(\"content-type\") || \"\";\n\n try {\n data = await response.json();\n } catch {\n throw {\n success: false,\n status: response.status,\n response: \"Errore nel parsing della risposta\"\n };\n }\n \n if (!data.success) {\n throw data;\n }\n\n return data;\n\n }\n\n get(endpoint) {\n return this.request(endpoint, { method: \"GET\" });\n }\n\n post(endpoint, body) {\n return this.request(endpoint, { method: \"POST\", body });\n }\n\n put(endpoint, body) {\n return this.request(endpoint, { method: \"PUT\", body });\n }\n\n delete(endpoint) {\n return this.request(endpoint, { method: \"DELETE\" });\n }\n\n}","const pending = new WeakMap();\nconst initialized = new WeakSet();\n\n/** Activates trusted HTML templates on interaction or visibility. */\nexport default class DeferredContent {\n static init(scope = document) {\n const doc = scope.ownerDocument || scope;\n if (!initialized.has(doc)) {\n initialized.add(doc);\n doc.addEventListener('click', event => {\n const trigger = event.target.closest?.('[data-wi-deferred-trigger]');\n if (!trigger || event.button !== 0 || event.ctrlKey || event.metaKey || event.shiftKey || event.altKey) return;\n const root = trigger.closest('[data-wi-deferred]');\n if (!root || root.dataset.wiDeferredState === 'error') return;\n event.preventDefault();\n this.load(root, { focus: true }).catch(() => {});\n });\n doc.addEventListener('keydown', event => {\n if (event.key === ' ' && event.target.matches('a[data-wi-deferred-trigger][role=\"button\"]')) {\n event.preventDefault();\n event.target.click();\n }\n });\n const mutations = new MutationObserver(records => {\n for (const record of records) {\n for (const node of record.addedNodes) {\n if (node.nodeType === 1) this.init(node);\n }\n }\n });\n mutations.observe(doc.documentElement, { childList: true, subtree: true });\n }\n const roots = [...scope.querySelectorAll('[data-wi-deferred]')];\n if (scope.matches?.('[data-wi-deferred]')) roots.unshift(scope);\n for (const root of roots) {\n if (initialized.has(root)) continue;\n initialized.add(root);\n root.querySelectorAll('a[data-wi-deferred-trigger]').forEach(link => link.setAttribute('role', 'button'));\n if (root.dataset.wiDeferred !== 'visible' || typeof IntersectionObserver === 'undefined') continue;\n const observer = new IntersectionObserver(entries => {\n if (!entries.some(entry => entry.isIntersecting)) return;\n observer.disconnect();\n this.load(root).catch(() => {});\n });\n observer.observe(root);\n }\n }\n\n static load(target, { focus = false } = {}) {\n const root = typeof target === 'string' ? document.querySelector(target) : target;\n if (!root) return Promise.reject(new Error('Deferred content not found.'));\n if (pending.has(root)) return pending.get(root);\n const task = this.activate(root, focus);\n pending.set(root, task);\n return task;\n }\n\n static async activate(root, focus) {\n const template = root.querySelector(':scope > template[data-wi-deferred-template]');\n if (!template) throw new Error('Deferred template not found.');\n const doc = root.ownerDocument;\n const content = doc.createElement('div');\n content.className = 'wi-deferred-content';\n content.append(template.content.cloneNode(true));\n const scripts = [...content.querySelectorAll('script')];\n scripts.forEach(script => script.remove());\n root.dataset.wiDeferredState = 'loading';\n root.setAttribute('aria-busy', 'true');\n root.append(content);\n try {\n // Sequential activation preserves dependencies between trusted scripts.\n for (const original of scripts) {\n await new Promise((resolve, reject) => {\n const script = doc.createElement('script');\n for (const attribute of original.attributes) script.setAttribute(attribute.name, attribute.value);\n const asynchronous = original.src || original.type === 'module';\n if (asynchronous) {\n script.async = false;\n script.onload = resolve;\n script.onerror = () => reject(new Error('Deferred script failed to load.'));\n }\n script.textContent = original.textContent;\n content.append(script);\n if (!asynchronous) resolve();\n });\n }\n root.querySelector(':scope > [data-wi-deferred-placeholder]')?.remove();\n template.remove();\n root.dataset.wiDeferredState = 'ready';\n if (focus) {\n const target = content.querySelector('iframe, button, a[href], [tabindex]') || content;\n if (!target.hasAttribute('tabindex')) target.setAttribute('tabindex', '-1');\n target.focus({ preventScroll: true });\n }\n root.dispatchEvent(new CustomEvent('wi:deferred:ready', { bubbles: true }));\n return content;\n } catch (error) {\n content.remove();\n root.dataset.wiDeferredState = 'error';\n root.querySelectorAll('[data-wi-deferred-trigger]').forEach(trigger => {\n trigger.removeAttribute('role');\n if (trigger.tagName === 'BUTTON') trigger.disabled = true;\n });\n root.dispatchEvent(new CustomEvent('wi:deferred:error', { bubbles: true, detail: { error } }));\n throw error;\n } finally {\n root.removeAttribute('aria-busy');\n }\n }\n}\n","export default class TranslationProvider {\n\n static translations = {};\n static defaultTranslations = {};\n\n static get lang() {\n return document.documentElement.lang || \"it\";\n }\n\n static async init(json, jsonDefault = {}) {\n\n this.translations = json;\n this.defaultTranslations = jsonDefault;\n \n }\n\n static get(key, replacements = []) {\n\n // 1. Prova lingua corrente\n let value = this.getNestedValue(this.translations, key);\n\n // 2. Se non trovato, prova default\n if (value == null) { value = this.getNestedValue(this.defaultTranslations, key); }\n\n // 3. Se ancora null → errore\n if (value == null) { console.error(\"Chiave di traduzione mancante: '\" + key + \"'\"); return key; }\n\n // 4. Sostituzione placeholder\n if (Array.isArray(replacements) && replacements.length > 0) {\n replacements.forEach((rep, idx) => {\n value = value.replace(new RegExp(\"\\\\{\" + idx + \"\\\\}\", \"g\"), rep);\n });\n }\n\n return value;\n\n }\n\n static getNestedValue(obj, key) {\n\n const segments = key.split('.');\n let current = obj;\n\n for (const segment of segments) {\n if (typeof current !== 'object' || current === null || !(segment in current)) {\n return null;\n }\n current = current[segment];\n }\n\n return current;\n\n }\n\n}","// Wrapper Google Maps: mappa base, editing marker, percorso (Directions),\n// autocomplete, import/export JSON. Richiede l'API caricata (vedi requireGoogleMaps).\nexport default class MapManager {\n\n constructor(mapElement, options = {}) {\n\n const {\n infoElement = null,\n exportElement = null,\n mapId = null,\n travelMode = 'DRIVING',\n onError = (message) => alert(message)\n } = options;\n\n this.mapElement = mapElement;\n this.infoElement = infoElement;\n this.exportElement = exportElement;\n this.mapId = mapId;\n this.travelMode = travelMode;\n this.onError = onError;\n\n this.map = null;\n this.directionsService = null;\n this.directionsRenderer = null;\n this.autocomplete = null;\n this.mapClickListener = null;\n this.editingEnabled = false;\n this.routeEnabled = false;\n this.advancedMarkers = [];\n\n this.inputElement = null;\n\n this.waypoints = [];\n this.markers = [];\n this.mapType = 'hybrid';\n this.labelsVisible = false;\n\n }\n\n // Risolve la stringa travelMode ('DRIVING' | 'BICYCLING' | 'WALKING' | 'TRANSIT')\n getTravelMode() {\n return google.maps.TravelMode[this.travelMode] ?? google.maps.TravelMode.DRIVING;\n }\n\n // Inizializza solo la mappa base, senza editing o percorso\n initBaseMap(options = {}) {\n\n const mapOptions = {\n center: { lat: 20, lng: 0 },\n zoom: 2,\n mapTypeId: this.mapType,\n mapTypeControl: false,\n zoomControl: true,\n streetViewControl: false,\n fullscreenControl: false,\n ...options\n };\n\n if (this.mapId) {\n mapOptions.mapId = this.mapId;\n }\n\n this.map = new google.maps.Map(this.mapElement, mapOptions);\n this.updateMapStyle();\n\n return this.map;\n\n }\n\n initMap() {\n\n this.initBaseMap();\n\n }\n\n // Abilita l'editing: click sulla mappa aggiunge un marker trascinabile\n enableEditing() {\n\n if (!this.map) { this.initBaseMap(); }\n\n this.editingEnabled = true;\n\n if (this.mapClickListener) { this.mapClickListener.remove(); }\n\n this.mapClickListener = this.map.addListener(\"click\", (e) => this.addChangeableMarker(e.latLng));\n\n }\n\n disableEditing() {\n\n if (this.mapClickListener) {\n this.mapClickListener.remove();\n this.mapClickListener = null;\n }\n\n this.editingEnabled = false;\n\n }\n\n // Abilita il rendering del percorso (Directions API)\n enableRoute(options = {}) {\n\n const {\n suppressMarkers = true,\n draggable = false,\n preserveViewport = false,\n recalc = true\n } = options;\n\n if (!this.map) {\n this.initBaseMap();\n }\n\n if (!this.directionsService) {\n this.directionsService = new google.maps.DirectionsService();\n }\n\n if (!this.directionsRenderer) {\n this.directionsRenderer = new google.maps.DirectionsRenderer({\n map: this.map,\n suppressMarkers,\n draggable,\n preserveViewport\n });\n } else {\n this.directionsRenderer.setMap(this.map);\n this.directionsRenderer.setOptions({\n suppressMarkers,\n draggable,\n preserveViewport\n });\n }\n\n this.routeEnabled = true;\n\n if (recalc && this.waypoints.length >= 2) {\n this.calcRoute();\n }\n\n }\n\n disableRoute() {\n\n this.routeEnabled = false;\n\n if (this.directionsRenderer) {\n this.directionsRenderer.set('directions', null);\n this.directionsRenderer.setMap(null);\n }\n\n }\n\n // Autocomplete Places su un input: il luogo scelto diventa un marker\n enableAutocomplete(inputElement) {\n\n this.inputElement = inputElement;\n this.autocomplete = new google.maps.places.Autocomplete(this.inputElement);\n this.autocomplete.bindTo(\"bounds\", this.map);\n\n this.autocomplete.addListener(\"place_changed\", () => {\n\n const place = this.autocomplete.getPlace();\n\n if (!place.geometry || !place.geometry.location) {\n this.onError(\"Luogo non trovato\");\n return;\n }\n\n this.inputElement.value = '';\n this.map.panTo(place.geometry.location);\n this.map.setZoom(15);\n this.addChangeableMarker(place.geometry.location);\n\n });\n\n }\n\n // Mappa in sola lettura con un percorso esistente (array di {lat, lng})\n initReadOnlyMap(percorso) {\n\n if (!Array.isArray(percorso) || percorso.length < 2) {\n console.warn(\"Percorso non valido o troppo corto.\");\n return;\n }\n\n this.initBaseMap({\n center: percorso[0],\n zoom: 14,\n disableDefaultUI: true,\n mapTypeId: this.mapType\n });\n\n this.disableEditing();\n this.enableRoute({ preserveViewport: true, recalc: false });\n\n const origin = percorso[0];\n const destination = percorso[percorso.length - 1];\n const via = percorso.slice(1, -1).map(p => ({ location: p, stopover: true }));\n\n this.directionsService.route({\n origin,\n destination,\n waypoints: via,\n travelMode: this.getTravelMode()\n }, (response, status) => {\n\n if (status === \"OK\") {\n\n this.directionsRenderer.setDirections(response);\n\n const bounds = new google.maps.LatLngBounds();\n response.routes[0].overview_path.forEach(point => bounds.extend(point));\n this.map.fitBounds(bounds);\n\n if (google.maps.marker && google.maps.marker.AdvancedMarkerElement && google.maps.marker.PinElement) {\n\n const originPin = new google.maps.marker.PinElement({ glyphText: \"A\" });\n new google.maps.marker.AdvancedMarkerElement({\n position: origin,\n map: this.map,\n content: originPin.element,\n title: \"A\"\n });\n\n const destinationPin = new google.maps.marker.PinElement({ glyphText: \"B\" });\n new google.maps.marker.AdvancedMarkerElement({\n position: destination,\n map: this.map,\n content: destinationPin.element,\n title: \"B\"\n });\n\n } else {\n\n new google.maps.Marker({\n position: origin,\n map: this.map,\n label: \"A\"\n });\n\n new google.maps.Marker({\n position: destination,\n map: this.map,\n label: \"B\"\n });\n\n }\n\n } else {\n this.onError(\"Errore nel calcolo del percorso: \" + status);\n }\n\n });\n\n }\n\n // type: 'roadmap' | 'satellite' | 'hybrid' | 'terrain'\n setMapType(type) {\n\n this.mapType = type;\n this.updateMapStyle();\n\n }\n\n toggleLabels() {\n\n this.labelsVisible = !this.labelsVisible;\n this.updateMapStyle();\n\n }\n\n updateMapStyle() {\n\n this.map.setMapTypeId(this.mapType);\n\n // Con mapId lo stile arriva dal cloud styling: setOptions({ styles }) verrebbe ignorato con warning\n if (this.mapId) return;\n\n if (this.labelsVisible) {\n this.map.setOptions({ styles: null });\n } else {\n this.map.setOptions({\n styles: [{ featureType: \"all\", elementType: \"labels\", stylers: [{ visibility: \"off\" }] }]\n });\n }\n\n }\n\n // Adatta lo zoom per includere percorso e marker\n fitBounds(options = {}) {\n\n if (!this.map) return;\n\n const {\n includeRoute = true,\n includeMarkers = true,\n includeAdvancedMarkers = true,\n extraPoints = [],\n padding = 40,\n minZoom = null,\n maxZoom = null\n } = options;\n\n const bounds = new google.maps.LatLngBounds();\n let hasPoints = false;\n\n const toLatLng = (point) => {\n if (!point) return null;\n if (typeof point.lat === \"function\" && typeof point.lng === \"function\") return point;\n if (typeof point.getPosition === \"function\") return point.getPosition();\n if (point.position) {\n const pos = point.position;\n if (typeof pos.lat === \"function\" && typeof pos.lng === \"function\") return pos;\n if (typeof pos.lat === \"number\" && typeof pos.lng === \"number\") {\n return new google.maps.LatLng(pos.lat, pos.lng);\n }\n }\n if (point.location) return toLatLng(point.location);\n if (typeof point.lat === \"number\" && typeof point.lng === \"number\") {\n return new google.maps.LatLng(point.lat, point.lng);\n }\n return null;\n };\n\n const extendWith = (point) => {\n const latLng = toLatLng(point);\n if (!latLng) return;\n bounds.extend(latLng);\n hasPoints = true;\n };\n\n if (includeRoute && this.directionsRenderer && this.directionsRenderer.getDirections) {\n const directions = this.directionsRenderer.getDirections();\n const route = directions?.routes?.[0];\n if (route?.overview_path?.length) {\n route.overview_path.forEach(p => extendWith(p));\n } else if (this.waypoints.length) {\n this.waypoints.forEach(wp => extendWith(wp.location));\n }\n } else if (includeRoute && this.waypoints.length) {\n this.waypoints.forEach(wp => extendWith(wp.location));\n }\n\n if (includeMarkers) {\n this.markers.forEach(marker => extendWith(marker));\n }\n\n if (includeAdvancedMarkers) {\n this.advancedMarkers.forEach(marker => extendWith(marker));\n }\n\n if (Array.isArray(extraPoints)) {\n extraPoints.forEach(point => extendWith(point));\n }\n\n if (!hasPoints) return;\n\n this.map.fitBounds(bounds, padding);\n\n if (minZoom !== null || maxZoom !== null) {\n const listener = this.map.addListener(\"idle\", () => {\n const zoom = this.map.getZoom();\n if (minZoom !== null && zoom < minZoom) this.map.setZoom(minZoom);\n if (maxZoom !== null && zoom > maxZoom) this.map.setZoom(maxZoom);\n listener.remove();\n });\n }\n\n }\n\n // customContent: (properties) => HTMLElement, es. il global gmapMarkerConstructor\n addAdvancedMarker(lat, lng, title, properties, customContent) {\n\n const content = typeof customContent === \"function\" ? customContent(properties) : null;\n\n if (google.maps.marker && google.maps.marker.AdvancedMarkerElement) {\n const marker = new google.maps.marker.AdvancedMarkerElement({\n map: this.map,\n content: content,\n position: new google.maps.LatLng(lat, lng),\n title: title,\n });\n this.advancedMarkers.push(marker);\n return marker;\n }\n\n console.warn(\"AdvancedMarkerElement non disponibile, uso Marker standard.\");\n const fallbackMarker = new google.maps.Marker({\n position: new google.maps.LatLng(lat, lng),\n map: this.map,\n title: title\n });\n this.advancedMarkers.push(fallbackMarker);\n return fallbackMarker;\n\n }\n\n addMarker(latLng, label) {\n\n const marker = new google.maps.Marker({\n position: latLng,\n map: this.map,\n label: label\n });\n\n return marker;\n\n }\n\n // Marker trascinabile: dragend aggiorna il percorso, doppio click lo rimuove\n addChangeableMarker(latLng) {\n\n const label = (this.markers.length + 1).toString();\n const marker = this.addMarker(latLng, label);\n\n marker.setDraggable(true);\n\n marker.addListener(\"dragend\", () => {\n this.updateWaypoints();\n if (this.routeEnabled) this.calcRoute();\n });\n\n marker.addListener(\"dblclick\", () => {\n marker.setMap(null);\n this.markers = this.markers.filter(m => m !== marker);\n this.updateWaypoints();\n if (this.routeEnabled) this.calcRoute();\n });\n\n this.markers.push(marker);\n this.updateWaypoints();\n if (this.routeEnabled && this.markers.length >= 2) this.calcRoute();\n\n }\n\n updateWaypoints() {\n\n this.waypoints = this.markers.map(m => ({ location: m.getPosition(), stopover: true }));\n this.markers.forEach((m, i) => m.setLabel((i + 1).toString()));\n this.saveRoute();\n\n }\n\n // Calcola il percorso tra i marker con le Directions API e lo disegna\n calcRoute() {\n\n if (!this.routeEnabled || !this.directionsService || !this.directionsRenderer) return;\n if (this.waypoints.length < 2) return;\n\n const origin = this.waypoints[0].location;\n const destination = this.waypoints[this.waypoints.length - 1].location;\n const via = this.waypoints.slice(1, -1);\n\n this.directionsService.route({\n origin,\n destination,\n waypoints: via,\n travelMode: this.getTravelMode()\n }, (response, status) => {\n if (status === \"OK\") {\n this.directionsRenderer.setDirections(response);\n this.showRouteInfo(response.routes[0].legs);\n const bounds = new google.maps.LatLngBounds();\n response.routes[0].overview_path.forEach(p => bounds.extend(p));\n this.map.fitBounds(bounds);\n } else {\n this.onError(\"Errore nel calcolo del percorso: \" + status);\n }\n });\n\n }\n\n showRouteInfo(legs) {\n\n let totalDistance = 0, totalDuration = 0;\n\n legs.forEach(leg => {\n totalDistance += leg.distance.value;\n totalDuration += leg.duration.value;\n });\n\n if (this.infoElement) {\n this.infoElement.innerHTML = `<strong>Distanza:</strong> ${(totalDistance / 1000).toFixed(2)} km<br><strong>Tempo stimato:</strong> ${this.formatTime(totalDuration)}`;\n }\n\n }\n\n // Secondi -> \"2h 10min\" oppure \"15min\"\n formatTime(seconds) {\n\n const mins = Math.floor(seconds / 60);\n const hrs = Math.floor(mins / 60);\n const remMins = mins % 60;\n\n return hrs > 0 ? `${hrs}h ${remMins}min` : `${remMins}min`;\n\n }\n\n resetMap() {\n\n this.markers.forEach(m => m.setMap(null));\n this.markers = [];\n this.waypoints = [];\n\n if (this.directionsRenderer) this.directionsRenderer.set('directions', null);\n if (this.infoElement) this.infoElement.innerHTML = '';\n\n }\n\n // Serializza i marker come JSON [{lat, lng}] nell'exportElement\n saveRoute() {\n\n const coords = this.markers.map(m => ({ lat: m.getPosition().lat(), lng: m.getPosition().lng() }));\n\n if (this.exportElement) this.exportElement.value = JSON.stringify(coords, null, 2);\n\n }\n\n loadRouteFromJSON(json) {\n\n this.resetMap();\n\n const coords = JSON.parse(json);\n\n coords.forEach(coord => this.addChangeableMarker(new google.maps.LatLng(coord.lat, coord.lng)));\n\n }\n\n}\n","import DeferredContent from '/src/class/DeferredContent.js';\n\nwindow.DeferredContent = DeferredContent;\nif (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', () => DeferredContent.init(), { once: true });\n} else {\n DeferredContent.init();\n}\n","import { ApiClient, TranslationProvider, MapManager, MapNavigator } from \"wonder-image\";\n\nwindow.ApiClient = ApiClient;\nwindow.TranslationProvider = TranslationProvider;\nwindow.MapManager = MapManager;\nwindow.MapNavigator = MapNavigator;\n\nwindow.API_CLIENT = new ApiClient(pathSite+'/api', API_TOKEN);\nwindow.API_CLIENT_APP = window.API_CLIENT;\n\nwindow.__t = function(key, replacements = []) {\n return TranslationProvider.get(key, replacements);\n}","import MapManager from './MapManager.js';\n\n// Navigazione live con geolocalizzazione su una mappa gestita da MapManager\nexport default class MapNavigator {\n\n constructor(mapManager) {\n\n if (!mapManager || !(mapManager instanceof MapManager)) {\n throw new Error(\"Devi passare una istanza valida di MapManager\");\n }\n\n this.mapManager = mapManager;\n this.map = mapManager.map;\n this.percorso = [];\n\n this.userMarker = null;\n this.watchId = null;\n this.previousPosition = null;\n\n }\n\n init(percorso) {\n\n this.stop();\n\n this.percorso = percorso;\n this.mapManager.initReadOnlyMap(percorso);\n this.map = this.mapManager.map;\n\n }\n\n // Avvia il tracciamento GPS continuo con watchPosition\n start() {\n\n if (!navigator.geolocation) {\n this.mapManager.onError(\"Geolocalizzazione non supportata dal tuo browser.\");\n return;\n }\n\n this.watchId = navigator.geolocation.watchPosition(\n (position) => this.updatePosition(position),\n (error) => this.mapManager.onError(\"Errore nella geolocalizzazione: \" + error.message),\n { enableHighAccuracy: true, maximumAge: 0, timeout: 10000 }\n );\n\n }\n\n // Aggiorna il marker utente e ruota la freccia secondo la direzione\n updatePosition(position) {\n\n const pos = {\n lat: position.coords.latitude,\n lng: position.coords.longitude,\n };\n\n let heading = 0;\n\n if (this.previousPosition) {\n heading = this.computeHeading(this.previousPosition, pos);\n }\n\n if (!this.userMarker) {\n this.map.setZoom(16);\n this.map.setCenter(pos);\n this.userMarker = new google.maps.Marker({\n position: pos,\n map: this.map,\n icon: {\n path: google.maps.SymbolPath.FORWARD_CLOSED_ARROW,\n scale: 4,\n fillColor: \"#007BFF\",\n fillOpacity: 1,\n strokeColor: \"#fff\",\n strokeWeight: 1,\n rotation: heading,\n anchor: new google.maps.Point(0, 2),\n },\n title: \"La tua posizione\",\n });\n } else {\n this.userMarker.setPosition(pos);\n const icon = this.userMarker.getIcon();\n icon.rotation = heading;\n this.userMarker.setIcon(icon);\n }\n\n this.previousPosition = pos;\n\n }\n\n // Bearing tra due coordinate, per orientare la freccia\n computeHeading(from, to) {\n\n const toRad = (deg) => (deg * Math.PI) / 180;\n const toDeg = (rad) => (rad * 180) / Math.PI;\n const lat1 = toRad(from.lat);\n const lon1 = toRad(from.lng);\n const lat2 = toRad(to.lat);\n const lon2 = toRad(to.lng);\n const dLon = lon2 - lon1;\n const y = Math.sin(dLon) * Math.cos(lat2);\n const x =\n Math.cos(lat1) * Math.sin(lat2) -\n Math.sin(lat1) * Math.cos(lat2) * Math.cos(dLon);\n const brng = Math.atan2(y, x);\n\n return (toDeg(brng) + 360) % 360;\n\n }\n\n stop() {\n\n if (this.watchId !== null) {\n navigator.geolocation.clearWatch(this.watchId);\n this.watchId = null;\n }\n\n if (this.userMarker) {\n this.userMarker.setMap(null);\n this.userMarker = null;\n }\n\n }\n\n // Apre Google Maps con il percorso attuale, col travelMode del MapManager\n openInGoogleMaps() {\n\n if (!this.percorso || this.percorso.length < 2) {\n this.mapManager.onError(\"Percorso insufficiente per l'apertura in Google Maps.\");\n return;\n }\n\n const origin = `${this.percorso[0].lat},${this.percorso[0].lng}`;\n const destination = `${this.percorso[this.percorso.length - 1].lat},${this.percorso[this.percorso.length - 1].lng}`;\n\n const waypoints = this.percorso\n .slice(1, -1)\n .map(p => `${p.lat},${p.lng}`)\n .join('|');\n\n const travelModes = { DRIVING: 'driving', BICYCLING: 'bicycling', WALKING: 'walking', TRANSIT: 'transit' };\n\n const url = new URL('https://www.google.com/maps/dir/');\n url.searchParams.set('api', '1');\n url.searchParams.set('origin', origin);\n url.searchParams.set('destination', destination);\n if (waypoints) url.searchParams.set('waypoints', waypoints);\n url.searchParams.set('travelmode', travelModes[this.mapManager.travelMode] ?? 'driving');\n\n window.open(url.toString(), '_blank');\n\n }\n\n}\n"],"names":["module","exports","src","log","error","console","execScript","attachEvent","addEventListener","eval","call","__webpack_require__","__webpack_module_cache__","moduleId","cachedModule","undefined","__webpack_modules__","ApiClient","constructor","baseUrl","token","this","request","endpoint","options","headers","Authorization","TranslationProvider","lang","body","FormData","JSON","stringify","response","fetch","data","get","json","success","status","method","post","put","pending","WeakMap","initialized","WeakSet","DeferredContent","init","scope","document","doc","ownerDocument","has","add","event","trigger","target","closest","button","ctrlKey","metaKey","shiftKey","altKey","root","dataset","wiDeferredState","preventDefault","load","focus","catch","key","matches","click","MutationObserver","records","record","node","addedNodes","nodeType","observe","documentElement","childList","subtree","roots","querySelectorAll","unshift","forEach","link","setAttribute","wiDeferred","IntersectionObserver","observer","entries","some","entry","isIntersecting","disconnect","querySelector","Promise","reject","Error","task","activate","set","template","content","createElement","className","append","cloneNode","scripts","script","remove","original","resolve","attribute","attributes","name","value","asynchronous","type","async","onload","onerror","textContent","hasAttribute","preventScroll","dispatchEvent","CustomEvent","bubbles","removeAttribute","tagName","disabled","detail","static","jsonDefault","translations","defaultTranslations","replacements","getNestedValue","Array","isArray","length","rep","idx","replace","RegExp","obj","segments","split","current","segment","MapManager","mapElement","infoElement","exportElement","mapId","travelMode","onError","message","alert","map","directionsService","directionsRenderer","autocomplete","mapClickListener","editingEnabled","routeEnabled","advancedMarkers","inputElement","waypoints","markers","mapType","labelsVisible","getTravelMode","google","maps","TravelMode","DRIVING","initBaseMap","mapOptions","center","lat","lng","zoom","mapTypeId","mapTypeControl","zoomControl","streetViewControl","fullscreenControl","Map","updateMapStyle","initMap","enableEditing","addListener","e","addChangeableMarker","latLng","disableEditing","enableRoute","suppressMarkers","draggable","preserveViewport","recalc","DirectionsService","setMap","setOptions","DirectionsRenderer","calcRoute","disableRoute","enableAutocomplete","places","Autocomplete","bindTo","place","getPlace","geometry","location","panTo","setZoom","initReadOnlyMap","percorso","warn","disableDefaultUI","origin","destination","via","slice","p","stopover","route","setDirections","bounds","LatLngBounds","routes","overview_path","point","extend","fitBounds","marker","AdvancedMarkerElement","PinElement","originPin","glyphText","position","element","title","destinationPin","Marker","label","setMapType","toggleLabels","setMapTypeId","styles","featureType","elementType","stylers","visibility","includeRoute","includeMarkers","includeAdvancedMarkers","extraPoints","padding","minZoom","maxZoom","hasPoints","toLatLng","getPosition","pos","LatLng","extendWith","getDirections","directions","wp","listener","getZoom","addAdvancedMarker","properties","customContent","push","fallbackMarker","addMarker","toString","setDraggable","updateWaypoints","filter","m","i","setLabel","saveRoute","showRouteInfo","legs","totalDistance","totalDuration","leg","distance","duration","innerHTML","toFixed","formatTime","seconds","mins","Math","floor","hrs","remMins","resetMap","coords","loadRouteFromJSON","parse","coord","window","readyState","once","MapNavigator","mapManager","userMarker","watchId","previousPosition","stop","start","navigator","geolocation","watchPosition","updatePosition","enableHighAccuracy","maximumAge","timeout","latitude","longitude","heading","computeHeading","setPosition","icon","getIcon","rotation","setIcon","setCenter","path","SymbolPath","FORWARD_CLOSED_ARROW","scale","fillColor","fillOpacity","strokeColor","strokeWeight","anchor","Point","from","to","toRad","deg","PI","lat1","lon1","lat2","dLon","y","sin","cos","x","brng","atan2","clearWatch","openInGoogleMaps","join","url","URL","searchParams","BICYCLING","WALKING","TRANSIT","open","API_CLIENT","pathSite","API_TOKEN","API_CLIENT_APP","__t"],"sourceRoot":""}
|