wonder-image 2.1.2-alpha.1 → 2.1.2-alpha.2
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/dist/backend/head.js +1 -1
- package/dist/backend/head.js.map +1 -1
- package/dist/images/cc.svg +8 -8
- package/dist/images/cg.svg +6 -6
- package/dist/images/ck.svg +8 -8
- package/dist/images/cm.svg +5 -5
- package/dist/images/cn.svg +8 -8
- package/dist/images/cu.svg +3 -3
- package/dist/images/cw.svg +7 -7
- package/dist/images/de.svg +4 -4
- package/dist/images/dg.svg +125 -125
- package/dist/images/dk.svg +4 -4
- package/dist/images/do.svg +53 -54
- package/dist/images/ee.svg +4 -4
- package/dist/images/eh.svg +14 -9
- package/dist/images/er.svg +6 -11
- package/dist/images/es-ct.svg +3 -3
- package/dist/images/es-pv.svg +4 -4
- package/dist/images/eu.svg +3 -3
- package/dist/images/fi.svg +4 -4
- package/dist/images/fj.svg +74 -77
- package/dist/images/fr.svg +4 -4
- package/dist/images/gb-nir.svg +108 -109
- package/dist/images/gb.svg +6 -6
- package/dist/images/gf.svg +4 -4
- package/dist/images/gh.svg +5 -5
- package/dist/images/gn.svg +4 -4
- package/dist/images/gp.svg +4 -4
- package/dist/images/gq.svg +19 -19
- package/dist/images/gr.svg +13 -13
- package/dist/images/gs.svg +119 -118
- package/dist/images/gt.svg +4 -4
- package/dist/images/gu.svg +18 -18
- package/dist/images/gw.svg +11 -13
- package/dist/images/gy.svg +6 -6
- package/dist/images/hm.svg +7 -7
- package/dist/images/hn.svg +9 -9
- package/dist/images/ht.svg +13 -13
- package/dist/images/hu.svg +4 -4
- package/dist/images/id.svg +3 -3
- package/dist/images/im.svg +30 -30
- package/dist/images/in.svg +5 -5
- package/dist/images/iq.svg +5 -5
- package/dist/images/ir.svg +211 -211
- package/dist/images/is.svg +6 -6
- package/dist/images/it.svg +4 -4
- package/dist/images/jm.svg +5 -5
- package/dist/images/kh.svg +4 -4
- package/dist/images/km.svg +10 -10
- package/dist/images/kw.svg +7 -7
- package/dist/images/kz.svg +5 -5
- package/dist/images/lb.svg +7 -7
- package/dist/images/ls.svg +7 -7
- package/dist/images/ma.svg +3 -3
- package/dist/images/mc.svg +3 -3
- package/dist/images/mf.svg +4 -4
- package/dist/images/mg.svg +4 -4
- package/dist/images/mh.svg +5 -4
- package/dist/images/mm.svg +11 -9
- package/dist/images/mq.svg +4 -4
- package/dist/images/mr.svg +5 -5
- package/dist/images/mt.svg +30 -32
- package/dist/images/mv.svg +5 -5
- package/dist/images/mw.svg +8 -13
- package/dist/images/mx.svg +375 -370
- package/dist/images/my.svg +17 -25
- package/dist/images/na.svg +9 -9
- package/dist/images/ni.svg +6 -6
- package/dist/images/nu.svg +9 -9
- package/dist/images/pc.svg +32 -32
- package/dist/images/pg.svg +14 -7
- package/dist/images/ph.svg +5 -5
- package/dist/images/pl.svg +3 -3
- package/dist/images/pm.svg +4 -4
- package/dist/images/pr.svg +7 -7
- package/dist/images/pt.svg +21 -21
- package/dist/images/qa.svg +3 -3
- package/dist/images/re.svg +6 -4
- package/dist/images/ro.svg +4 -4
- package/dist/images/ru.svg +4 -4
- package/dist/images/sc.svg +6 -6
- package/dist/images/sh.svg +6 -6
- package/dist/images/sj.svg +6 -6
- package/dist/images/sk.svg +8 -8
- package/dist/images/sn.svg +5 -5
- package/dist/images/ss.svg +7 -7
- package/dist/images/tc.svg +15 -15
- package/dist/images/td.svg +4 -4
- package/dist/images/tf.svg +11 -11
- package/dist/images/tj.svg +20 -24
- package/dist/images/tl.svg +7 -7
- package/dist/images/tm.svg +198 -199
- package/dist/images/tn.svg +3 -3
- package/dist/images/to.svg +5 -5
- package/dist/images/tr.svg +5 -5
- package/dist/images/tt.svg +4 -6
- package/dist/images/tw.svg +27 -25
- package/dist/images/tz.svg +9 -7
- package/dist/images/ug.svg +24 -24
- package/dist/images/us.svg +6 -6
- package/dist/images/uz.svg +8 -8
- package/dist/images/vg.svg +8 -8
- package/dist/images/vi.svg +18 -18
- package/dist/images/yt.svg +4 -4
- package/dist/images/zw.svg +3 -3
- package/package.json +1 -1
package/dist/backend/head.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
/*! For license information please see head.js.LICENSE.txt */
|
|
2
|
-
(()=>{var e={5285(e){e.exports="function ajaxRequest(link, onSuccess = reloadPage, params = null) {\n\n loadingSpinner();\n\n $.ajax({\n type: \"POST\",\n url: link,\n data: { \n post: 'true'\n }, \n success: function(data) {\n\n if (onSuccess != null) {\n if (typeof onSuccess === 'function') {\n \n if (params == null) {\n onSuccess();\n } else {\n onSuccess(params);\n }\n \n } else {\n \n try {\n \n var x = JSON.parse(onSuccess.replace('"', '\"'));\n\n var f = x.function;\n var p = x.parameters;\n \n } catch {\n\n var f = onSuccess;\n var p = params;\n\n }\n \n window[f](p);\n \n }\n }\n\n loadingSpinner();\n \n },\n error: function (XMLHttpRequest) {\n ajaxRequestError(XMLHttpRequest);\n loadingSpinner();\n }\n }); \n\n}\n\nfunction reloadPage() {\n\n location.reload();\n \n}"},4729(e){e.exports="function toastContainer() {\n\n if (document.querySelector('.toast-container')) {\n\n var container = document.querySelector('.toast-container');\n\n }else{\n\n var container = document.createElement('div');\n container.classList.add('toast-container');\n container.classList.add('position-fixed');\n container.classList.add('top-0');\n container.classList.add('end-0');\n container.classList.add('p-3');\n\n document.body.insertBefore(container, document.body.firstChild);\n\n }\n\n return container;\n\n}\n\nfunction alertToast(alert, type = null, title = null, text = null) {\n\n var container = toastContainer();\n\n $(\".toast.show\").toast().hide();\n \n if (alert == 801) {\n\n container.innerHTML = NO_INTERNET_ALERT + container.innerHTML;\n const toast = new bootstrap.Toast(container.firstElementChild);\n toast.show();\n\n } else if (alert != undefined) {\n\n API_CLIENT_APP.post(\"/backend/alert/\", { \n code: alert,\n alertType: type,\n alertTitle: title,\n alertText: text\n })\n .then(data => {\n \n container.innerHTML = data.response + container.innerHTML;\n const toast = new bootstrap.Toast(container.firstElementChild);\n toast.show();\n \n var url = new URL(window.location.href);\n url.searchParams.delete('alert');\n window.history.replaceState(null, null, url);\n\n })\n .catch(error => console.error(error));\n\n }\n\n}"},8553(e){e.exports="function bootstrapToast() {\n\n var toastElList = [].slice.call(document.querySelectorAll('.toast'))\n var toastList = toastElList.map(function(toastEl) {\n return new bootstrap.Toast(toastEl)\n });\n toastList.forEach(toast => toast.show());\n\n}\n\nfunction bootstrapTooltip() { $('[data-bs-toggle=\"tooltip\"]').tooltip(); }\n\nfunction bootstrapTheme(theme) {\n\n document.querySelector(\"html\").setAttribute(\"data-bs-theme\", theme);\n\n localStorage.setItem('theme', theme);\n \n if (theme == 'light') {\n\n if (document.querySelector('#bs-theme i.light-theme')) { document.querySelector('#bs-theme i.light-theme').classList.remove('d-none'); }\n if (document.querySelector('#bs-theme i.dark-theme')) { document.querySelector('#bs-theme i.dark-theme').classList.add('d-none'); }\n\n document.querySelector('#be-logo-white').classList.add('d-none');\n document.querySelector('#be-logo-black').classList.remove('d-none');\n\n element = document.querySelector('[data-bs-theme-value=\"light\"]');\n el = document.querySelector('[data-bs-theme-value=\"dark\"]');\n\n } else if (theme == 'dark') {\n\n if (document.querySelector('#bs-theme i.light-theme')) { document.querySelector('#bs-theme i.light-theme').classList.add('d-none'); }\n if (document.querySelector('#bs-theme i.dark-theme')) { document.querySelector('#bs-theme i.dark-theme').classList.remove('d-none'); }\n\n document.querySelector('#be-logo-white').classList.remove('d-none');\n document.querySelector('#be-logo-black').classList.add('d-none');\n\n element = document.querySelector('[data-bs-theme-value=\"dark\"]');\n el = document.querySelector('[data-bs-theme-value=\"light\"]');\n\n }\n\n if (el) { el.classList.remove('active'); }\n if (element) { element.classList.add('active'); }\n\n}\n\nfunction setUpBootstrap() {\n \n bootstrapTooltip();\n\n}"},5249(e){e.exports='class CustomHyperlink extends Hyperlink {\n iconSvg(name, width = 14, height = 14) {\n const svg = document.createElementNS(\'http://www.w3.org/2000/svg\', \'svg\');\n svg.classList.add(\'icon\', \'icon--\' + name);\n svg.setAttribute(\'width\', \'24\');\n svg.setAttribute(\'height\',\'24\');\n svg.setAttribute(\'viewBox\', \'0 0 24 24\')\n svg.setAttribute(\'fill\', \'none\');\n if (name == \'link\') {\n svg.innerHTML = `\n <path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M7.69998 12.6L7.67896 12.62C6.53993 13.7048 6.52012 15.5155 7.63516 16.625V16.625C8.72293 17.7073 10.4799 17.7102 11.5712 16.6314L13.0263 15.193C14.0703 14.1609 14.2141 12.525 13.3662 11.3266L13.22 11.12"></path><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M16.22 11.12L16.3564 10.9805C17.2895 10.0265 17.3478 8.5207 16.4914 7.49733V7.49733C15.5691 6.39509 13.9269 6.25143 12.8271 7.17675L11.3901 8.38588C10.0935 9.47674 9.95706 11.4241 11.0888 12.6852L11.12 12.72"></path>\n `;\n } else {\n svg.innerHTML = `\n <path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M15.7795 11.5C15.7795 11.5 16.053 11.1962 16.5497 10.6722C17.4442 9.72856 17.4701 8.2475 16.5781 7.30145V7.30145C15.6482 6.31522 14.0873 6.29227 13.1288 7.25073L11.8796 8.49999"></path><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M8.24517 12.3883C8.24517 12.3883 7.97171 12.6922 7.47504 13.2161C6.58051 14.1598 6.55467 15.6408 7.44666 16.5869V16.5869C8.37653 17.5731 9.93744 17.5961 10.8959 16.6376L12.1452 15.3883"></path><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M17.7802 15.1032L16.597 14.9422C16.0109 14.8624 15.4841 15.3059 15.4627 15.8969L15.4199 17.0818"></path><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M6.39064 9.03238L7.58432 9.06668C8.17551 9.08366 8.6522 8.58665 8.61056 7.99669L8.5271 6.81397"></path><line x1="12.1142" x2="11.7" y1="12.2" y2="11.7858" stroke="currentColor" stroke-linecap="round" stroke-width="2"></line>\n `;\n }\n return svg;\n }\n}\n\nclass CustomEmded extends Embed {\n \n static get toolbox() {\n return {\n title: \'Iframe\',\n icon: \'<svg width="20" height="20" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10 13a5 5 0 0 1 0-6M14 11a5 5 0 0 1 0 6"></path><line x1="14" y1="7" x2="14" y2="7"></line><line x1="10" y1="17" x2="10" y2="17"></line></svg>\'\n };\n }\n \n /**\n * Render Embed tool content\n *\n * @returns {HTMLElement}\n */\n render() {\n if (!this.data.service) {\n const container = document.createElement(\'div\');\n \n this.element = container;\n const input = document.createElement(\'input\');\n input.classList.add(\'cdx-input\');\n input.placeholder = \'https://www.youtube.com/watch?v=w8vsuOXZBXc\';\n input.type = \'url\';\n input.addEventListener(\'paste\', (event) => {\n const url = event.clipboardData.getData(\'text\');\n const service = Object.keys(Embed.services).find((key) => Embed.services[key].regex.test(url));\n if (service) {\n this.onPaste({detail: {key: service, data: url}});\n }\n });\n container.appendChild(input);\n \n return container;\n }\n return super.render();\n }\n \n validate(savedData) {\n return savedData.service && savedData.source ? true : false;\n }\n}\n\nclass CustomVideoTool extends VideoTool {\n \n static get toolbox() {\n return {\n title: \'Video\',\n icon: \'<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M10 10.5606V13.4394C10 14.4777 11.1572 15.0971 12.0211 14.5211L14.1803 13.0817C14.9536 12.5661 14.9503 11.4317 14.18 10.9181L12.0214 9.47907C11.1591 8.9042 10 9.5203 10 10.5606Z" stroke="black" stroke-width="2"/><rect x="5" y="5" width="14" height="14" rx="4" stroke="black" stroke-width="2"/></svg>\'\n };\n }\n \n}\n\nvar EDITORJS_TOOLS_BLOG = {\n paragraph: {\n inlineToolbar: true,\n tunes: [\'textAlign\']\n },\n header: {\n class: Header,\n inlineToolbar: true,\n tunes: [\'textAlign\'],\n config: {\n placeholder: \'Titolo...\',\n levels: [1, 2, 4],\n defaultLevel: 2\n }\n },\n quote: {\n class: Quote,\n inlineToolbar: true,\n config: {\n quotePlaceholder: \'Scrivi una citazione...\',\n captionPlaceholder: \'Autore\',\n },\n },\n list: {\n class: NestedList,\n inlineToolbar: true,\n config: {\n defaultStyle: \'unordered\'\n },\n },\n delimiter: Delimiter,\n table: {\n class: Table,\n inlineToolbar: [\'link\', \'italic\', \'bold\'],\n },\n // code: CodeTool,\n image: {\n class: ImageTool,\n config: {\n captionPlaceholder: \'Caption...\',\n endpoints: {\n byFile: pathApp+\'/api/backend/editorjs/image.php\'\n // Aggiungere cartella dove caricare i file\n },\n field: \'image\',\n types: \'image/png, image/jpg, image/jpeg\',\n additionalRequestHeaders: { dir: \'\' }\n // Forzo nel css la rimozione "display: none" di withBorder, stretched e withBackground\n }\n },\n gallery: {\n class: ImageGallery,\n config: {\n captionPlaceholder: \'Caption galleria...\',\n endpoints: {\n byFile: pathApp+\'/api/backend/editorjs/image.php\'\n // Aggiungere cartella dove caricare i file\n },\n field: \'image\',\n types: \'image/png, image/jpg, image/jpeg\',\n additionalRequestHeaders: { dir: \'\' }\n // Forzo nel css la rimozione "display: none" di fit e slider\n },\n },\n Marker: Marker,\n inlineCode: InlineCode,\n attaches: {\n class: AttachesTool,\n config: {\n endpoint: pathApp+\'/api/backend/editorjs/file.php\',\n // Aggiungere cartella dove caricare i file\n field: \'file\',\n additionalRequestHeaders: { dir: \'\' }\n }\n },\n // TODO: Aggiungi caricamento video (potrebbe tornare utile la classe ImageTool)\n // video: {\n // class: CustomVideoTool,\n // config: {\n // captionPlaceholder: \'Caption...\',\n // endpoints: {\n // byFile: pathSite+\'/api/task/article/file.php\'\n // },\n // player: {\n // controls: true,\n // autoplay: false,\n // },\n // field: \'file\',\n // types: \'video/quicktime, video/mp4\'\n // // Forzo nel css la rimozione "display: none" di withBorder, stretched e withBackground\n // }\n // },\n // TODO: embed non funziona. Trovare un modo per caricare iframe\n // embed: {\n // class: CustomEmded,\n // },\n textAlign: {\n class: AlignmentTuneTool,\n config:{\n default: "left"\n },\n },\n link: {\n class: CustomHyperlink,\n config: {\n shortcut: \'CMD+L\',\n target: \'_blank\',\n rel: \'nofollow\',\n availableTargets: [\'_blank\', \'_self\'],\n availableRels: [\'author\', \'noreferrer\'],\n validate: false,\n }\n },\n};\n\nvar EDITORJS_TOOLS_TABLE = {\n paragraph: false,\n inlineCode: InlineCode,\n table: {\n class: Table,\n inlineToolbar: [\'link\', \'italic\', \'bold\'],\n }\n};\n\nvar EDITORJS_i18n_IT = {\n messages: {\n ui: {\n "blockTunes": {\n "toggler": {\n "Click to tune": "Modifica",\n "or drag to move": "Trascina per muovere"\n },\n },\n "inlineToolbar": {\n "converter": {\n "Convert to": "Converti"\n }\n },\n "toolbar": {\n "toolbox": {\n "Add": "Aggiungi",\n }\n }\n },\n toolNames: {\n "Add": "Aggiungi",\n "Quote": "Citazione",\n "Delimiter": "Linea",\n "Text": "Testo",\n "Heading": "Titolo",\n "Table": "Tabella",\n "Code": "Codice",\n "List": "Elenco",\n "Bold": "Grassetto",\n "Italic": "Corsivo",\n "Marker": "Evidenzia",\n "InlineCode": "Codice",\n "TextAlign": "Allineamento",\n "Gallery": "Galleria",\n "Image": "Immagine",\n "Attachment": "Allega file",\n },\n tools: {\n "header": {\n "Heading 1": "Titolo grande",\n "Heading 2": "Titolo",\n "Heading 4": "Sottotitolo"\n },\n "link": {\n "Add a link": "Aggiungi link"\n },\n "code": {\n "Enter a code": "Inserisci codice",\n },\n "quote": {\n "Align Left": "Allinea a sinistra",\n "Align Center": "Allinea in centro",\n },\n "table": {\n "With headings": "Con intestazione",\n "Without headings": "Senza intestazione",\n "Add column to left": "Aggiungi colonna sinistra",\n "Add column to right": "Aggiungi colonna destra",\n "Add row above": "Aggiungi riga sopra",\n "Add row below": "Aggiungi riga sotto",\n "Delete column": "Elimina colonna",\n "Delete row": "Elimina riga",\n },\n "list": {\n "Ordered": "Elenco numerato",\n "Unordered": "Elenco puntato",\n },\n "gallery": {\n "Select an Image": "Seleziona immagini",\n },\n "image": {\n "Select an Image": "Seleziona immagine",\n },\n "video": {\n "Select an Video": "Seleziona video",\n },\n "attaches": {\n "Select file to upload": "Seleziona file da allegare",\n },\n },\n blockTunes: {\n "delete": {\n "Delete": "Elimina",\n "Click to delete": "Clicca per elimina"\n },\n "moveUp": {\n "Move up": "Su"\n },\n "moveDown": {\n "Move down": "Giù"\n }\n },\n }\n};'},3990(e){e.exports="function moveFile(selectorContainer, selectorData, action) {\n\n var link = pathApp+'/api/backend/file/move.php';\n\n var el = document.querySelector(selectorContainer+' '+selectorData);\n\n var table = el.dataset.wiDbTable;\n var column = el.dataset.wiDbColumn;\n var rowId = el.dataset.wiDbRow;\n var fileId = el.dataset.wiFileId;\n var oldPosition = Number(el.dataset.wiOrder);\n var nFile = el.dataset.wiNFile;\n\n $.ajax({\n type: \"POST\",\n url: link,\n data: { \n post: 'true',\n table: table,\n column: column,\n row_id: rowId,\n file_id: fileId,\n action: action\n },\n success: function (data) {\n \n if (action == 'up') {\n var newPosition = oldPosition - 1;\n } else if (action == 'down') {\n var newPosition = oldPosition + 1;\n }\n\n var file1 = document.querySelector(selectorContainer+' .wi-card-file.order-'+oldPosition);\n var file2 = document.querySelector(selectorContainer+' .wi-card-file.order-'+newPosition);\n\n file1.classList.remove('order-'+oldPosition);\n file1.classList.add('order-'+newPosition);\n file1.dataset.wiOrder = newPosition;\n file1.dataset.wiFileId = file2.dataset.wiFileId;\n\n file2.classList.remove('order-'+newPosition);\n file2.classList.add('order-'+oldPosition);\n file2.dataset.wiOrder = oldPosition;\n file2.dataset.wiFileId = fileId;\n\n // Sistema first e last\n firstLastFile(selectorContainer, nFile);\n \n },\n error: function (XMLHttpRequest) {\n ajaxRequestError(XMLHttpRequest);\n }\n }); \n\n}\n\nfunction deleteFile(selectorContainer, selectorData) {\n\n var el = document.querySelector(selectorContainer+' '+selectorData);\n\n var folder = el.dataset.wiFolder;\n var table = el.dataset.wiDbTable;\n var column = el.dataset.wiDbColumn;\n var rowId = el.dataset.wiDbRow;\n var fileId = el.dataset.wiFileId;\n\n var oldPosition = Number(el.dataset.wiOrder);\n var nFile = el.dataset.wiNFile;\n\n var fileName = el.dataset.wiFileName;\n\n var text = \"Sei sicuro di eliminare il file <b>\"+fileName+\"</b>?\";\n var link = pathApp+'/api/backend/file/delete.php?folder='+folder+'&table='+table+'&column='+column+'&row_id='+rowId+'&file_id='+fileId;\n\n var onSuccess = '{ \"function\" : \"removeFile\", \"parameters\": { \"container\" : \"'+selectorContainer+'\", \"data\" : \"'+selectorData+'\", \"nFile\" : \"'+nFile+'\", \"position\" : \"'+oldPosition+'\"} }';\n\n modal(text, link, 'ATTENZIONE', 'Elimina', 'danger', 'Chiudi', 'dark', onSuccess);\n\n}\n\nfunction removeFile(parameters) {\n\n var selectorContainer = parameters.container;\n var selectorData = parameters.data;\n var deletedFilePosition = Number(parameters.position);\n var maxFile = Number(parameters.maxFile);\n var old_nFile = Number(parameters.nFile);\n const real_nFile = old_nFile - 1;\n\n document.querySelector(selectorContainer+' '+selectorData).remove();\n\n document.querySelectorAll(selectorContainer+' .wi-card-file').forEach(element => {\n\n var filePosition = Number(element.dataset.wiOrder);\n element.dataset.wiNFile = real_nFile;\n\n if (filePosition > deletedFilePosition) {\n\n var newPosition = filePosition - 1;\n var newId = newPosition - 1;\n\n element.dataset.wiOrder = newPosition;\n element.classList.remove('order-'+filePosition);\n element.classList.add('order-'+newPosition);\n\n element.dataset.wiFileId = newId;\n\n }\n\n });\n\n\n var maxFile = document.querySelector(selectorContainer+' input').dataset.wiMaxFile;\n\n if (maxFile > real_nFile) {\n document.querySelector(selectorContainer+' input').disabled = false;\n }\n\n firstLastFile(selectorContainer, real_nFile);\n\n $('#modal').modal('hide');\n\n}\n\nfunction firstLastFile(selectorContainer, nFile) {\n\n if (document.querySelectorAll(selectorContainer+' .wi-card-file').length > 0) {\n\n if (document.querySelector(selectorContainer+' .wi-card-file.wi-first-file')) {\n document.querySelector(selectorContainer+' .wi-card-file.wi-first-file').classList.remove('wi-first-file');\n }\n \n if (document.querySelector(selectorContainer+' .wi-card-file.wi-last-file')) {\n document.querySelector(selectorContainer+' .wi-card-file.wi-last-file').classList.remove('wi-last-file');\n }\n \n document.querySelector(selectorContainer+' .wi-card-file.order-1').classList.add('wi-first-file');\n document.querySelector(selectorContainer+' .wi-card-file.order-'+nFile).classList.add('wi-last-file');\n \n }\n\n}"},7418(e){e.exports="function check() {\n \n document.querySelectorAll(\"form button[type='submit'], form button.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 }\n\n var formElement = button.form;\n\n formElement.querySelectorAll(\".wi-checkbox-required, .wi-radio-required\").forEach(checkboxContainer => {\n\n if (checkboxContainer.closest('[data-wi-conditional-hidden=\"true\"]')) { return; }\n\n if (checkboxContainer.querySelectorAll(\"input[type='checkbox']:checked, input[type='radio']:checked\").length == 0) { button.setAttribute(\"disabled\", null); }\n\n });\n\n });\n\n}\n\nfunction lengthCount(event) {\n\n var val = event.target.value;\n var container = event.target.parentElement;\n\n if (container.querySelector('.wi-counter')) {\n container.querySelector('.wi-counter').innerHTML = val.length;\n }\n\n}\n\nfunction checkColor(event) {\n\n var val = event.target.value;\n var container = event.target.parentElement;\n\n if (val.includes('#')) {\n container.querySelector('.wi-show-color').style.color = val;\n } else {\n container.querySelector('.wi-show-color').style.color = 'rgba('+val+')';\n }\n \n}\n\nfunction generateCode(selector) {\n\n document.querySelector(selector).value = code();\n \n}\n\nfunction disableInput(type) {\n\n if (type == 'user') {\n var inputArray = document.querySelectorAll('input[name=name], input[name=surname], input[name=username], input[name=email], input[name=\"profile_picture[]\"], select[name=color], select[name=active]');\n }\n\n inputArray.forEach(element => {\n\n element.disabled = true;\n element.dataset.wiOldValue = element.value;\n element.dataset.wiOldRequired = element.required;\n \n element.value = '';\n element.required = false;\n\n }); \n\n}\n\nfunction enabledInput(type) {\n\n if (type == 'user') {\n var inputArray = document.querySelectorAll('input[name=name], input[name=surname], input[name=username], input[name=email], input[name=\"profile_picture[]\"], select[name=color], select[name=active]');\n }\n\n inputArray.forEach(element => {\n\n if (element.dataset.wiOldValue) {\n var wiOldValue = element.dataset.wiOldValue;\n } else {\n if (element.name == 'active') {\n var wiOldValue = \"true\";\n } else if (element.name == 'color') {\n var wiOldValue = \"blue\";\n } else {\n var wiOldValue = \"\";\n }\n }\n \n if (element.dataset.wiOldRequired) {\n var wiOldRequired = element.dataset.wiOldRequired;\n } else {\n var wiOldRequired = \"\";\n }\n \n element.disabled = false;\n element.value = wiOldValue;\n element.required = wiOldRequired;\n\n }); \n \n}\n\nfunction createCheckbox(array, element, container, checked = false) {\n\n var name = element.dataset.wiName;\n var attribute = element.dataset.wiAttribute;\n\n if (element.dataset.wiSearchRadio != undefined) {\n var type = \"radio\";\n } else if (element.dataset.wiSearchCheckbox != undefined) {\n var type = \"checkbox\";\n }\n\n var containerMaster = container.parentElement;\n var footer = containerMaster.querySelector('.card .card-footer');\n footer.innerHTML = 'Cerco...';\n\n try {\n\n const response = JSON.parse(array);\n const nResponse = response.length;\n \n var HTML_CHECKED = \"\";\n \n container.querySelectorAll('input:checked').forEach(el => {\n \n el.setAttribute('checked', true);\n HTML_CHECKED += \"<div class='form-check'>\"+el.parentElement.innerHTML+\"</div>\";\n \n });\n \n container.innerHTML = \"\";\n \n for (let index = 0; index < nResponse; index++) {\n \n var idCode = code();\n var HTML = \"\";\n var att = attribute;\n \n var value = response[index]['value'];\n var label = response[index]['label'];\n var inputValue = response[index]['input-value'];\n \n if (checked) { var att = attribute+\" checked\"; }\n \n if (HTML_CHECKED.search('value=\"'+value+'\"') == '-1') {\n \n HTML += \"<div class='form-check'>\";\n HTML += \"<input id='\"+idCode+\"' type='\"+type+\"' class='form-check-input' name='\"+name+\"' value='\"+value+\"' data-wi-check='true' \"+att+\" >\";\n HTML += \"<label class='form-check-label wi-check-label user-select-none' for='\"+idCode+\"'>\"+label+\"</label>\";\n HTML += \"</div>\";\n \n container.insertAdjacentHTML(\"beforeend\", HTML);\n \n }\n \n }\n\n container.insertAdjacentHTML(\"beforeend\", HTML_CHECKED);\n \n if (inputValue == '') {\n footer.innerHTML = \"Cerca risultati\";\n } else if (nResponse == 1) {\n footer.innerHTML = nResponse+\" risultato\";\n } else if (nResponse != 1) {\n footer.innerHTML = nResponse+\" risultati\";\n }\n \n } catch {\n\n console.log(array);\n footer.innerHTML = 'Errore nel file! Contatta assistenza';\n\n }\n\n}\n\nfunction inputSearch(event) {\n\n var inputText = event.target;\n\n var containerMaster = inputText.parentElement;\n var container = containerMaster.querySelector('.card .card-body');\n var footer = containerMaster.querySelector('.card .card-footer');\n\n var inputValue = inputText.value.toLowerCase();\n\n if (inputText.dataset.wiSearchUrl != undefined) {\n\n var url = inputText.dataset.wiSearchUrl;\n\n var footer = containerMaster.querySelector('.card .card-footer');\n footer.innerHTML = 'Cerco...';\n\n $.ajax({\n type: \"POST\",\n url: url,\n data: { \n post: 'true',\n search: inputValue\n }, \n success: function (data) {\n createCheckbox(data, inputText, container);\n checkInput();\n },\n error: function (XMLHttpRequest) {\n\n ajaxRequestError(XMLHttpRequest);\n footer.innerHTML = 'Errore! Riprova la ricerca.';\n\n }\n });\n \n } else {\n \n container.querySelectorAll('label.wi-check-label').forEach(element => {\n \n var container = element.parentElement;\n var name = element.innerHTML.toLowerCase();\n \n if (name.includes(inputValue)) {\n element.parentElement.style.display = 'block';\n } else if (container.querySelector('input').checked == false) {\n element.parentElement.style.display = 'none';\n }\n \n });\n\n }\n \n}\n\nfunction filterSelect(selectElement, dataName, value) {\n\n selectElement.querySelectorAll('option').forEach(option => {\n\n if (option.getAttribute('data-'+dataName)) {\n \n var filterValue = JSON.parse(option.getAttribute('data-'+dataName));\n\n if ((Array.isArray(filterValue) && filterValue.includes(value)) || filterValue == value) {\n\n option.disabled = false;\n option.hidden = false;\n\n } else {\n\n if (option.selected == true) {\n selectElement.value = \"\";\n }\n\n option.disabled = true;\n option.hidden = true;\n\n }\n\n }\n\n });\n \n}\n\nfunction createOptions( select, options ) {\n\n select.disabled = true;\n select.innerHTML = \"\";\n\n var selectAttribute = select.dataset.wiAttribute || '';\n var selectLabel = select.labels[0];\n\n var i = 0;\n\n for (var optionValue in options) {\n\n var optionLabel = options[optionValue];\n\n select[i] = new Option(optionLabel, optionValue);\n\n i++;\n\n }\n\n if (i === 0) {\n\n select.required = false;\n selectLabel.innerHTML = selectLabel.innerHTML.replace('*', '');\n\n } else {\n\n select.disabled = false;\n\n if (selectAttribute.indexOf('required') != '-1') { \n\n select.required = true;\n\n if (selectLabel.innerHTML.indexOf('*') == '-1') { \n selectLabel.innerHTML = selectLabel.innerHTML+'*' \n }\n\n }\n\n }\n\n}\n\nfunction inputError(input, error) {\n\n const container = input.closest('.form-floating, .input-group, .card').parentElement || input.parentElement;\n const feedback = container.querySelector('.invalid-feedback');\n \n if (feedback) {\n feedback.textContent = error;\n feedback.style.display = \"block\";\n }\n\n input.classList.add('is-invalid');\n input.setCustomValidity(error);\n\n}\n\nfunction removeInputError(input) {\n\n const container = input.closest('.form-floating, .input-group, .card').parentElement || input.parentElement;\n const feedback = container.querySelector('.invalid-feedback');\n \n if (feedback) {\n feedback.textContent = \"\";\n feedback.style.display = \"none\";\n }\n\n input.classList.remove('is-invalid');\n input.setCustomValidity(\"\");\n\n}\n"},9636(e){e.exports="function copyRow(container, element, callback) {\n\n element.querySelectorAll('input[type=\"file\"]').forEach(element => {\n\n FilePond.destroy(element.parentElement);\n\n });\n\n var copy = element.cloneNode(true);\n var position = container.childElementCount;\n var lineId = container.id+'_row_'+code(10);\n\n copy.id = lineId;\n copy.classList.remove('visually-hidden');\n copy.classList.add('wi-copy-row');\n copy.classList.add('order-'+position);\n\n if (copy.querySelector('input[name=\"position[]\"]')) {\n copy.querySelector('input[name=\"position[]\"]').value = position;\n }\n\n copy.querySelectorAll('[data-wi-attribute]').forEach(element => {\n\n var attribute = element.dataset.wiAttribute;\n\n if (attribute != '') {\n\n if (attribute.includes('required')) { element.required = true; }\n if (attribute.includes('disabled')) { element.disabled = true; }\n if (attribute.includes('readonly')) { element.readOnly = true; }\n if (attribute.includes('data-wi-sort-pos')) { \n element.dataset.wiSortPos = true; \n element.value = position;\n }\n\n }\n\n });\n\n // Inserisco la linea\n container.appendChild(copy);\n\n // Cambio gli Id degli input e li resetto\n var line = document.getElementById(lineId);\n line.querySelectorAll('input, select, textarea').forEach(element => {\n \n if (element.hasAttribute('data-select2-id')) { \n\n var c = element.parentElement;\n c.querySelector('span.select2').remove();\n \n $(element).select2('destroy');\n \n } else if (element.type == \"file\") {\n\n var name = element.name;\n element.name = name.replace(/-\\d+\\[\\]$/, `-${position}[]`);\n \n }\n\n element.id = 'input_'+code(10);\n\n });\n\n setInput(copy);\n checkInput();\n rowSetArrow(container);\n bootstrapTooltip();\n\n if (typeof callback === 'function') { callback(); }\n\n}\n\nfunction rowOrder(el1, action, callback) {\n\n var container = el1.parentElement;\n \n for (let a = 1; a < 100; a++) { \n \n var classEl1 = 'order-'+a;\n\n if(el1.classList.contains(classEl1)) {\n\n if (action == 'up') { var b = a - 1; } \n if (action == 'down') { var b = a + 1; }\n\n var classEl2 = 'order-'+b;\n\n var el2 = container.querySelector('.'+classEl2);\n\n rowChangePos(el1, a, b);\n rowChangePos(el2, b, a);\n\n rowSetArrow(container);\n\n break;\n\n }\n\n }\n\n if (typeof callback === 'function') { callback(); }\n\n}\n\nfunction rowChangePos(element, oldPosition, newPosition) {\n \n element.classList.remove('order-'+oldPosition);\n element.classList.add('order-'+newPosition);\n\n if (element.querySelector('[data-wi-sort-pos]')) {\n element.querySelector('[data-wi-sort-pos]').value = newPosition;\n } else if (element.querySelector('input[name=\"position[]\"]')) {\n element.querySelector('input[name=\"position[]\"]').value = newPosition;\n }\n \n}\n\nfunction rowRemoveModal(element, callback) {\n\n var container = element.parentElement;\n\n var text = 'Sei sicuro di voler eliminare questa linea?<br>Se <b>NON</b> salvi questa operazione non verrà effettuata!'\n modal(text, 'link');\n\n for (let a = 1; a < 100; a++) { \n\n var elementClass = 'order-'+a;\n if(element.classList.contains(elementClass)) { \n var orderN = a;\n break; \n }\n\n }\n\n var selector = '#'+container.id+' .'+elementClass;\n \n var onclick = 'rowRemove(\"'+selector+'\", \"'+orderN+'\")';\n if (typeof callback === 'function') { onclick += ';'+callback.name+'()'; }\n \n var sendBtn = document.querySelector('#modal button.send');\n sendBtn.setAttribute(\"onclick\", onclick);\n\n}\n\nfunction rowRemove(selector, nRow) {\n\n $('#modal').modal('hide');\n\n var element = document.querySelector(selector);\n var container = element.parentElement;\n var containerId = container.id;\n pageRemove(element);\n\n var rowStart = (nRow * 1) + 1;\n\n for (let a = rowStart; a < 100; a++) {\n\n var selector = '#'+containerId+' .order-'+a;\n\n if (document.querySelector(selector)) {\n var b = a - 1;\n rowChangePos(document.querySelector(selector), a, b);\n } else {\n break;\n }\n \n }\n\n rowSetArrow(container)\n\n}\n\nfunction rowSetArrow(container) {\n\n var nRow = document.querySelectorAll('#'+container.id+' .wi-copy-row').length;\n\n if (document.querySelector('#'+container.id+' .wi-copy-row.order-1 .wi-arrow-up') || document.querySelector('#'+container.id+' .wi-copy-row.order-1 .wi-arrow-down')) {\n\n if (nRow > 1) {\n\n for (let i = 1; i <= nRow; i++) {\n\n var arrowUp = document.querySelector('#'+container.id+' .wi-copy-row.order-'+i+' .wi-arrow-up');\n var arrowDown = document.querySelector('#'+container.id+' .wi-copy-row.order-'+i+' .wi-arrow-down');\n\n if (arrowUp.classList.contains('visually-hidden')) {\n arrowUp.classList.remove('visually-hidden');\n }\n\n if (arrowDown.classList.contains('visually-hidden')) {\n arrowDown.classList.remove('visually-hidden');\n }\n\n if (i == 1) {\n arrowUp.classList.add('visually-hidden');\n }\n\n if (i == nRow) {\n arrowDown.classList.add('visually-hidden');\n }\n \n }\n\n } else if (nRow == 1) {\n\n document.querySelector('#'+container.id+' .wi-copy-row.order-1 .wi-arrow-up').classList.add('visually-hidden');\n document.querySelector('#'+container.id+' .wi-copy-row.order-1 .wi-arrow-down').classList.add('visually-hidden');\n\n }\n\n }\n \n}"},1989(e){e.exports="function searchStates(inputCountry, stateValue = null) {\n\n var form = inputCountry.form;\n var inputCountryName = inputCountry.name;\n var inputStateName = inputCountry.dataset.wiInputState;\n var inputState = form.querySelector('select[name=\"'+inputStateName+'\"]');\n\n inputState.disabled = true;\n inputState.value = \"\";\n\n delay(100).then(() => {\n\n if (form.querySelector('select[name=\"'+inputCountryName+'\"]').value != null) {\n\n var country = form.querySelector('select[name=\"'+inputCountryName+'\"]').value;\n\n if (inputState.dataset.wiListStates != country) {\n \n inputState.dataset.wiListStates = country;\n\n loadingSpinner();\n\n $.ajax({\n type: \"POST\",\n url: pathApp+'/api/states.php',\n data: { \n post: 'true',\n country: country\n }, \n success: function (data) {\n\n createOptions(inputState, JSON.parse(data));\n loadingSpinner();\n\n },\n error: function (XMLHttpRequest) {\n\n ajaxRequestError(XMLHttpRequest);\n loadingSpinner();\n\n }\n });\n\n } else {\n\n inputState.disabled = false;\n \n }\n\n }\n\n });\n\n}\n"},9198(e){e.exports="async function formUpload(form, url, responseFunction = null) {\n \n var formData = new FormData(form);\n formData.append('post', 'true');\n\n await postData(url, formData).then((data) => {\n \n if (data != false) {\n if (typeof responseFunction === 'function') { responseFunction(data); }\n }\n\n });\n\n}"},1826(e){e.exports="// Sanitizza l'HTML del rich text editor (Quill) per prevenire XSS.\n// Quill 2.0.3 non valida l'HTML in input/export: DOMPurify rimuove script,\n// gestori di eventi e URI pericolosi mantenendo la formattazione consentita.\nfunction wiSanitizeHtml(html) {\n\n if (html == null) { return ''; }\n\n if (typeof window.DOMPurify !== 'undefined') {\n\n return window.DOMPurify.sanitize(html, {\n ALLOWED_TAGS: ['p', 'br', 'span', 'strong', 'b', 'em', 'i', 'u', 's', 'strike', 'del', 'ol', 'ul', 'li', 'a', 'blockquote'],\n ALLOWED_ATTR: ['href', 'target', 'rel', 'class']\n });\n\n }\n\n // Fallback fail-closed: se DOMPurify non è disponibile, rimuove ogni markup.\n var tmp = document.createElement('div');\n tmp.textContent = html;\n return tmp.innerHTML;\n\n}\n\nfunction setSearchInput(CONTAINER) {\n\n CONTAINER.querySelectorAll(\"[data-wi-search='true']\").forEach(element => {\n\n element.addEventListener(\"keyup\", inputSearch);\n element.addEventListener(\"change\", lengthCount);\n element.addEventListener(\"focusin\", lengthCount);\n element.addEventListener(\"focusout\", lengthCount);\n\n if (element.dataset.wiSearchUrl != undefined) { setDynamicSearch(element); }\n\n });\n \n}\n\nfunction setDynamicSearch(element) {\n\n var dataValue = element.dataset.wiValue;\n var containerMaster = element.parentElement;\n var container = containerMaster.querySelector('.card .card-body');\n var footer = containerMaster.querySelector('.card .card-footer');\n\n container.innerHTML = \"\";\n\n if (dataValue != '') {\n\n var value = dataValue;\n var url = element.dataset.wiSearchUrl;\n\n $.ajax({\n type: \"POST\",\n url: url,\n data: { \n post: 'true',\n id: value\n }, \n success: function (data) {\n createCheckbox(data, element, container, true);\n checkInput();\n },\n error: function (XMLHttpRequest) {\n\n ajaxRequestError(XMLHttpRequest);\n footer.innerHTML = 'Errore!';\n\n }\n });\n \n }\n\n}\n\nfunction setUploader(CONTAINER) {\n\n CONTAINER.querySelectorAll(\"[data-wi-uploader]\").forEach(uploader => {\n\n var id = uploader.id;\n var type = uploader.dataset.wiUploader;\n var dir = uploader.dataset.wiDir;\n var value = uploader.dataset.wiValue;\n var label = uploader.dataset.wiUploaderLabel;\n var maxSize = uploader.dataset.maxFileSize;\n var maxFiles = uploader.dataset.maxFiles;\n var sizeBefore = uploader.dataset.sizeBefore;\n var minSizeImage = uploader.dataset.minSizeImage;\n var accept = uploader.accept;\n\n if (accept === '' || accept === '*') {\n var validation = false;\n } else {\n var validation = true;\n }\n\n var files = [];\n \n if (value != \"\") {\n\n var value = JSON.parse(value);\n \n value.forEach(file => {\n\n var linkDowload = dir+file;\n var linkPoster = linkDowload;\n\n if (minSizeImage != \"\") {\n if (sizeBefore) {\n linkPoster = dir + minSizeImage + '-' + file;\n } else {\n const lastDot = file.lastIndexOf('.');\n const extension = lastDot !== -1 ? file.slice(lastDot + 1) : '';\n const name = lastDot !== -1 ? file.slice(0, lastDot) : file;\n linkPoster = dir + name + '-' +minSizeImage + (extension ? '.' + extension : '');\n }\n }\n \n var source = {\n source: linkDowload\n };\n\n files.push(source);\n\n });\n\n }\n\n if (type == 'classic') {\n\n FilePond.create(uploader, {\n storeAsFile: true,\n allowReorder: true,\n labelIdle: `Trascina `+label+` o <span class=\"filepond--label-action\">Cerca</span>`,\n files: files,\n allowDownloadByUrl: true,\n allowImagePreview: true,\n imagePreviewMaxFileSize: '128KB',\n allowFileTypeValidation: validation,\n allowFileSizeValidation: maxSize == '' ? false : true,\n maxFileSize: maxSize,\n labelMaxFileSizeExceeded: `File troppo grande`,\n labelMaxFileSize: `Dimensioni massime file {filesize}`,\n maxFiles: maxFiles,\n instantUpload: false,\n onaddfile: () => { check(); },\n onremovefile: () => { check(); }\n });\n \n } else if (type == 'profile') {\n\n FilePond.create(uploader, {\n storeAsFile: true,\n labelIdle: `Trascina `+label+` o <span class=\"filepond--label-action\">Cerca</span>`,\n imageCropAspectRatio: '1:1',\n stylePanelLayout: 'compact circle',\n styleLoadIndicatorPosition: 'center bottom',\n styleButtonRemoveItemPosition: 'center bottom',\n files: files,\n allowDownloadByUrl: true,\n allowImagePreview: true,\n imagePreviewMaxFileSize: '128KB',\n allowFileTypeValidation: validation,\n allowFileSizeValidation: maxSize == '' ? false : true,\n maxFileSize: maxSize,\n labelMaxFileSizeExceeded: `File troppo grande`,\n labelMaxFileSize: `Dimensioni massime file {filesize}`,\n maxFiles: maxFiles,\n instantUpload: false,\n onaddfile: () => { check(); },\n onremovefile: () => { check(); }\n });\n \n }\n\n });\n\n}\n\nfunction setTextarea(CONTAINER) {\n\n CONTAINER.querySelectorAll(\"[data-wi-textarea]\").forEach(textarea => {\n\n var container = textarea.parentElement;\n var type = textarea.dataset.wiTextarea;\n\n var textareaId = textarea.id;\n var textareaValue = atob(textarea.dataset.wiValue);\n\n // Creo l'editor\n var editorId = textareaId+'_editor';\n\n var editor = document.createElement(\"div\");\n editor.id = editorId;\n editor.classList.add('position-relative');\n editor.classList.add('float-start');\n editor.classList.add('w-100');\n editor.classList.add('h-auto');\n editor.classList.add('border');\n editor.style.maxHeight = '250px';\n\n if (type == 'base' || type == 'plus' || type == 'pro') {\n\n // Quill.js\n\n editor.classList.add('border-top-0');\n editor.classList.add('rounded-bottom');\n editor.classList.add('overflow-scroll');\n \n container.after(editor);\n\n var toolbarId = editorId+'_toolbar';\n\n if (type == 'base') {\n var option = [['bold', 'italic', 'underline', 'strike'], ['clean']];\n } else if (type == 'plus') {\n var option = [['bold', 'italic', 'underline', 'strike'], ['link'], ['clean']];\n } else if (type == 'pro') {\n var option = [['bold', 'italic', 'underline', 'strike'], ['link'], [{ list: 'ordered' }, { list: 'bullet' }], ['clean']];\n }\n\n new Quill('#'+editorId, {\n theme: 'snow',\n modules: {\n toolbar: option\n }\n }).on('text-change', (delta, oldDelta, source) => {\n textarea.value = wiSanitizeHtml(editor.innerHTML);\n });\n\n var col = container.parentElement;\n var toolbar = col.querySelector('.ql-toolbar');\n\n toolbar.id = toolbarId;\n toolbar.classList.add('position-relative');\n toolbar.classList.add('float-start');\n toolbar.classList.add('w-100');\n toolbar.classList.add('border');\n toolbar.classList.add('rounded-top');\n\n var editor = document.querySelector('#'+editorId+' .ql-editor');\n\n editor.innerHTML = wiSanitizeHtml(textareaValue.replace(\"'\", \"\\'\"));\n\n editor.addEventListener('keydown', () => { textarea.value = wiSanitizeHtml(editor.innerHTML); });\n editor.addEventListener('DOMNodeInserted', () => { textarea.value = wiSanitizeHtml(editor.innerHTML); });\n\n } else if (type == 'table' || type == 'blog') {\n\n // Editor.js\n\n EDITORJS_TOOLS_BLOG.image.config.additionalRequestHeaders.dir = textarea.dataset.wiFolder+'/images';\n EDITORJS_TOOLS_BLOG.gallery.config.additionalRequestHeaders.dir = textarea.dataset.wiFolder+'/images';\n EDITORJS_TOOLS_BLOG.attaches.config.additionalRequestHeaders.dir = textarea.dataset.wiFolder+'/files';\n\n editor.classList.add('wi-'+type);\n editor.classList.add('pt-3');\n editor.classList.add('rounded');\n editor.classList.add('overflow-scroll');\n\n container.after(editor);\n\n if (type == 'table') {\n \n if (textareaValue == null || textareaValue == '') {\n var data = '{\"blocks\":[{\"id\":\"O3rAzVD6s8\",\"type\":\"table\",\"data\":{\"withHeadings\":true,\"content\":[]}}]}';\n } else {\n var data = '{\"blocks\":'+textareaValue+'}';\n }\n\n var tools = EDITORJS_TOOLS_TABLE;\n\n } else if (type == 'blog') {\n\n editor.style.maxHeight = '500px';\n\n if (textareaValue == null || textareaValue == '') {\n var data = '{}';\n } else {\n var data = '{\"blocks\":'+textareaValue+'}';\n }\n\n var tools = EDITORJS_TOOLS_BLOG;\n \n }\n\n new EditorJS({\n tools: tools,\n holder: editorId, \n autofocus: false,\n data: JSON.parse(data),\n onChange: (api) => {\n\n api.saver.save().then((outputData) => {\n var editorValue = JSON.stringify(outputData.blocks);\n document.getElementById(textareaId).value = editorValue;\n }).catch((error) => {\n console.log('Saving failed: ', error)\n });\n\n },\n i18n: EDITORJS_i18n_IT\n });\n\n }\n\n });\n\n}\n\nfunction setJsTree(CONTAINER) {\n \n CONTAINER.querySelectorAll('[data-wi-tree]').forEach(element => {\n\n var container = element.parentElement;\n\n var type = element.dataset.wiTree;\n var searchBar = container.querySelector('[data-wi-search=\"true\"]');\n\n var Tree = $(element).jstree({\n core: {\n check_callback: false\n },\n checkbox : {\n keep_selected_style: false,\n three_state: false,\n },\n types : {\n default : {\n icon : \"bi bi-folder\"\n }\n },\n plugins : [ \"checkbox\", \"types\", \"search\" ]\n });\n\n Tree.jstree('open_all');\n\n if (searchBar != undefined) {\n $(searchBar).keyup(function () {\n var v = $(searchBar).val();\n $(Tree).jstree(true).search(v);\n });\n }\n\n $(element).on('click', '.jstree-anchor', function(e) {\n\n var selectedNodes = $(element).jstree().get_checked();\n\n container.querySelectorAll('input[type=\"checkbox\"]:checked').forEach(element => { element.checked = false; });\n\n if (type == 'radio') {\n\n if (selectedNodes.length > 1) {\n $(element).jstree().uncheck_node(selectedNodes[0]);\n }\n\n var selectedNodes = $(element).jstree().get_checked();\n\n }\n\n selectedNodes.forEach(element => { container.querySelector('input[value=\"'+element+'\"]').checked = true; });\n\n check();\n\n });\n\n });\n\n}\n\nfunction setCheckBoolean(CONTAINER) {\n \n CONTAINER.querySelectorAll('[data-wi-check-boolean]').forEach(element => {\n\n var inputTrue = element.querySelector('input.wi-true');\n var labelTrue = inputTrue.labels[0];\n var inputFalse = element.querySelector('input.wi-false');\n var labelFalse = inputFalse.labels[0];\n\n inputTrue.addEventListener(\"change\", (el) => {\n\n var checked = el.target.checked;\n\n if (checked) { \n inputFalse.checked = false; \n labelFalse.classList.remove('btn-primary'); \n labelTrue.classList.add('btn-primary'); \n } else {\n labelTrue.classList.remove('btn-primary'); \n }\n\n });\n\n inputFalse.addEventListener(\"change\", (el) => {\n\n var checked = el.target.checked;\n\n if (checked) { \n inputTrue.checked = false; \n labelTrue.classList.remove('btn-primary'); \n labelFalse.classList.add('btn-primary'); \n } else {\n labelFalse.classList.remove('btn-primary'); \n }\n\n });\n\n\n });\n\n}\n\nfunction setSelect2(CONTAINER) {\n \n CONTAINER.querySelectorAll('[data-wi-select-search]').forEach(element => {\n\n if ($(element).parents('.modal').length !== 0) {\n var parent = $(element).parents('.modal');\n } else {\n var parent = document.getElementById('content');\n }\n \n var multiple = (element.dataset.wiSelectSearchMultiple == 'true') ? true : false;\n\n $(element).select2({\n theme: 'bootstrap4',\n language: 'it',\n multiple: multiple,\n width: 'style',\n dropdownParent: parent,\n dropdownCssClass: 'card-body border dropdown-menu'\n }).on(\"change\", function(e) {\n\n check();\n\n if (element.dataset.wiInputCountry) { \n searchStates(element);\n }\n\n });\n\n });\n \n}\n\nfunction setInput(container = document) {\n\n setGoogleMapsApi();\n setSearchInput(container);\n setTextarea(container);\n setUploader(container);\n setJsTree(container);\n setCheckBoolean(container);\n setSelect2(container);\n setConditional(container);\n\n}\n"},9221(e){e.exports="function jqueryDaterange() {\n \n $('.wi-daterange-filter').datepicker({\n format: 'dd/mm/yyyy',\n language: 'it', \n orientation: 'bottom left'\n });\n\n}\n\nfunction setUpJquery() {\n \n jqueryDaterange();\n\n}"},7642(e){e.exports="function modal(text, link, title = 'ATTENZIONE', sendText = 'Elimina', sendColor = 'danger', closeText = 'Chiudi', closeColor = 'dark', onSuccess = 'reloadPage', params = null) {\n \n document.querySelector('#modal .modal-title').innerHTML = title;\n document.querySelector('#modal .modal-body').innerHTML = text;\n\n var sendBtn = document.querySelector('#modal button.send');\n sendBtn.innerHTML = sendText;\n sendBtn.classList.add('btn-'+sendColor);\n\n if (onSuccess == 'reloadPage') {\n \n sendBtn.setAttribute(\"onclick\", \"ajaxRequest('\"+link+\"')\");\n\n } else {\n \n if (typeof onSuccess === 'function') {\n sendBtn.setAttribute(\"onclick\", \"ajaxRequest('\"+link+\"', \"+onSuccess+\", '\"+params+\"')\");\n } else {\n sendBtn.setAttribute(\"onclick\", \"ajaxRequest('\"+link+\"', '\"+onSuccess+\"', '\"+params+\"')\");\n }\n\n }\n\n var closeBtn = document.querySelector('#modal button.close');\n closeBtn.innerHTML = closeText;\n closeBtn.classList.add('btn-'+closeColor);\n\n const modal = new bootstrap.Modal('#modal')\n modal.show();\n\n}"},5071(e){e.exports="function menu() { \n\n var el = document.getElementById('sidebar');\n el.classList.toggle(\"show\");\n\n var el = document.getElementById('menu');\n\n var iconMenu = el.querySelector('.open-menu');\n var iconClose = el.querySelector('.close-menu');\n\n if (iconMenu.classList.contains('d-none')) {\n\n // Chiudo il menu\n iconMenu.classList.remove('d-none');\n iconClose.classList.add('d-none');\n\n $('.offcanvas').offcanvas('hide');\n \n } else {\n\n // Apro il menu\n iconClose.classList.remove('d-none');\n iconMenu.classList.add('d-none');\n\n if (document.querySelector('#sidebar li.active [data-bs-target]')) {\n var offcanvasId = document.querySelector('#sidebar li.active [data-bs-target]').dataset.bsTarget;\n $(offcanvasId).offcanvas('show');\n }\n\n }\n \n}\n\nfunction loadingSpinner() {\n\n document.getElementById('loading-spinner').classList.toggle('d-none');\n \n}"},8882(e){e.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}'},6944(e){e.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}'},8197(e){e.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}"},1367(e){e.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'},7059(e){e.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}"},2700(e){e.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"},3883(e){e.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}'},6338(e){e.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'},8636(e){e.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}"},4642(e){e.exports=function(e){function n(e){"undefined"!=typeof console&&(console.error||console.log)("[Script Loader]",e)}try{"undefined"!=typeof execScript&&"undefined"!=typeof attachEvent&&"undefined"==typeof addEventListener?execScript(e):"undefined"!=typeof eval?eval.call(null,e):n("EvalError: No eval function available")}catch(e){n(e)}}},734(e,n,t){t(4642)(t(5285))},9196(e,n,t){t(4642)(t(4729))},9676(e,n,t){t(4642)(t(8553))},5328(e,n,t){t(4642)(t(5249))},4315(e,n,t){t(4642)(t(3990))},5545(e,n,t){t(4642)(t(7418))},8109(e,n,t){t(4642)(t(9636))},6225(e,n,t){t(4642)(t(1989))},2879(e,n,t){t(4642)(t(9198))},2981(e,n,t){t(4642)(t(1826))},2730(e,n,t){t(4642)(t(9221))},555(e,n,t){t(4642)(t(7642))},8258(e,n,t){t(4642)(t(5071))},9111(e,n,t){t(4642)(t(8882))},2347(e,n,t){t(4642)(t(6944))},8004(e,n,t){t(4642)(t(8197))},9118(e,n,t){t(4642)(t(1367))},550(e,n,t){t(4642)(t(7059))},3211(e,n,t){t(4642)(t(2700))},3286(e,n,t){t(4642)(t(3883))},4581(e,n,t){t(4642)(t(6338))},9899(e,n,t){t(4642)(t(8636))},767(){"use strict";function e(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,i=Array(n);t<n;t++)i[t]=e[t];return i}function n(n,t){return function(e){if(Array.isArray(e))return e}(n)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var i,r,a,o,l=[],s=!0,c=!1;try{if(a=(t=t.call(e)).next,0===n);else for(;!(s=(i=a.call(t)).done)&&(l.push(i.value),l.length!==n);s=!0);}catch(e){c=!0,r=e}finally{try{if(!s&&null!=t.return&&(o=t.return(),Object(o)!==o))return}finally{if(c)throw r}}return l}}(n,t)||function(n,t){if(n){if("string"==typeof n)return e(n,t);var i={}.toString.call(n).slice(8,-1);return"Object"===i&&n.constructor&&(i=n.constructor.name),"Map"===i||"Set"===i?Array.from(n):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?e(n,t):void 0}}(n,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}const t=Object.entries,i=Object.setPrototypeOf,r=Object.isFrozen,a=Object.getPrototypeOf,o=Object.getOwnPropertyDescriptor;let l=Object.freeze,s=Object.seal,c=Object.create,d="undefined"!=typeof Reflect&&Reflect,u=d.apply,p=d.construct;l||(l=function(e){return e}),s||(s=function(e){return e}),u||(u=function(e,n){for(var t=arguments.length,i=new Array(t>2?t-2:0),r=2;r<t;r++)i[r-2]=arguments[r];return e.apply(n,i)}),p||(p=function(e){for(var n=arguments.length,t=new Array(n>1?n-1:0),i=1;i<n;i++)t[i-1]=arguments[i];return new e(...t)});const m=N(Array.prototype.forEach),f=N(Array.prototype.lastIndexOf),h=N(Array.prototype.pop),g=N(Array.prototype.push),v=N(Array.prototype.splice),y=Array.isArray,b=N(String.prototype.toLowerCase),w=N(String.prototype.toString),S=N(String.prototype.match),E=N(String.prototype.replace),k=N(String.prototype.indexOf),T=N(String.prototype.trim),x=N(Number.prototype.toString),L=N(Boolean.prototype.toString),A="undefined"==typeof BigInt?null:N(BigInt.prototype.toString),C="undefined"==typeof Symbol?null:N(Symbol.prototype.toString),M=N(Object.prototype.hasOwnProperty),I=N(Object.prototype.toString),R=N(RegExp.prototype.test),O=(q=TypeError,function(){for(var e=arguments.length,n=new Array(e),t=0;t<e;t++)n[t]=arguments[t];return p(q,n)});var q;function N(e){return function(n){n instanceof RegExp&&(n.lastIndex=0);for(var t=arguments.length,i=new Array(t>1?t-1:0),r=1;r<t;r++)i[r-1]=arguments[r];return u(e,n,i)}}function P(e,n){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:b;if(i&&i(e,null),!y(n))return e;let a=n.length;for(;a--;){let i=n[a];if("string"==typeof i){const e=t(i);e!==i&&(r(n)||(n[a]=e),i=e)}e[i]=!0}return e}function D(e){for(let n=0;n<e.length;n++){M(e,n)||(e[n]=null)}return e}function _(e){const i=c(null);for(const a of t(e)){var r=n(a,2);const t=r[0],o=r[1];M(e,t)&&(y(o)?i[t]=D(o):o&&"object"==typeof o&&o.constructor===Object?i[t]=_(o):i[t]=o)}return i}function F(e,n){for(;null!==e;){const t=o(e,n);if(t){if(t.get)return N(t.get);if("function"==typeof t.value)return N(t.value)}e=a(e)}return function(){return null}}const z=l(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),H=l(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),V=l(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),B=l(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),U=l(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),j=l(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),$=l(["#text"]),G=l(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","command","commandfor","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns"]),W=l(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dominant-baseline","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","pointer-events","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-orientation","text-rendering","textlength","type","u1","u2","unicode","values","vector-effect","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),Y=l(["accent","accentunder","align","bevelled","close","columnalign","columnlines","columnspacing","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lquote","lspace","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),J=l(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),X=s(/{{[\w\W]*|^[\w\W]*}}/g),K=s(/<%[\w\W]*|^[\w\W]*%>/g),Z=s(/\${[\w\W]*/g),Q=s(/^data-[\-\w.\u00B7-\uFFFF]+$/),ee=s(/^aria-[\-\w]+$/),ne=s(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),te=s(/^(?:\w+script|data):/i),ie=s(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),re=s(/^html$/i),ae=s(/^[a-z][.\w]*(-[.\w]+)+$/i),oe=s(/<[/\w!]/g),le=s(/<[/\w]/g),se=s(/<\/no(script|embed|frames)/i),ce=s(/\/>/i),de=1,ue=3,pe=7,me=8,fe=9,he=11,ge=["style","script","xmp","iframe","noembed","noframes","plaintext","noscript"],ve=l(P({},ge)),ye=function(){const e={};return m(ge,n=>{e[n]=s(new RegExp("</"+n+"(?=[\\t\\n\\f\\r />])","i"))}),l(e)}(),be=function(){return"undefined"==typeof window?null:window},we=function(e,n,t,i){return M(e,n)&&y(e[n])?P(i.base?_(i.base):{},e[n],i.transform):t},Se=function(e,n,t){const i=M(e,n)?e[n]:void 0;return i&&"object"==typeof i?_(i):t()};var Ee=function e(){let n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:be();const i=n=>e(n);if(i.version="3.4.15",i.removed=[],!n||!n.document||n.document.nodeType!==fe||!n.Element)return i.isSupported=!1,i;let r=n.document;const a=r,o=a.currentScript;n.DocumentFragment;const d=n.HTMLTemplateElement,u=n.Node,p=n.Element,q=n.NodeFilter,N=n.NamedNodeMap;void 0===N&&(n.NamedNodeMap||n.MozNamedAttrMap),n.HTMLFormElement;const D=n.DOMParser,ge=n.trustedTypes,Ee=p.prototype,ke=F(Ee,"cloneNode"),Te=F(Ee,"remove"),xe=F(Ee,"removeAttributeNode"),Le=F(Ee,"nextSibling"),Ae=F(Ee,"childNodes"),Ce=F(Ee,"parentNode"),Me=F(Ee,"shadowRoot"),Ie=F(Ee,"attributes"),Re=u&&u.prototype?F(u.prototype,"nodeType"):null,Oe=u&&u.prototype?F(u.prototype,"nodeName"):null,qe=u&&u.prototype?F(u.prototype,"ownerDocument"):null,Ne=function(e){return Re?Re(e):e.nodeType},Pe=function(e){return Oe?Oe(e):e.nodeName};if("function"==typeof d){const e=r.createElement("template");e.content&&e.content.ownerDocument&&(r=e.content.ownerDocument)}let De,_e,Fe="",ze=!1,He=0;const Ve=function(){if(He>0)throw O('A configured TRUSTED_TYPES_POLICY callback (createHTML or createScriptURL) must not call DOMPurify.sanitize, as that causes infinite recursion. Do not pass a policy whose callbacks wrap DOMPurify as TRUSTED_TYPES_POLICY; see the "DOMPurify and Trusted Types" section of the README.')},Be=function(e){Ve(),He++;try{return De.createHTML(e)}finally{He--}},Ue=function(){return ze||(_e=function(e,n){if("object"!=typeof e||"function"!=typeof e.createPolicy)return null;let t=null;const i="data-tt-policy-suffix";n&&n.hasAttribute(i)&&(t=n.getAttribute(i));const r="dompurify"+(t?"#"+t:"");try{return e.createPolicy(r,{createHTML:e=>e,createScriptURL:e=>e})}catch(e){return console.warn("TrustedTypes policy "+r+" could not be created."),null}}(ge,o),ze=!0),_e},je=r,$e=je.implementation,Ge=je.createNodeIterator,We=je.createDocumentFragment,Ye=je.getElementsByTagName,Je=a.importNode;let Xe={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]};i.isSupported="function"==typeof t&&"function"==typeof Ce&&$e&&void 0!==$e.createHTMLDocument;const Ke=X,Ze=K,Qe=Z,en=Q,nn=ee,tn=te,rn=ie,an=ae;let on=ne,ln=null;const sn=P({},[...z,...H,...V,...U,...$]);let cn=null;const dn=P({},[...G,...W,...Y,...J]);let un=Object.seal(c(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),pn=null,mn=null;const fn=Object.seal(c(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}}));let hn=!0,gn=!0,vn=!1,yn=!0,bn=!1,wn=!0,Sn=!1,En=!1,kn=null,Tn=null,xn=!1,Ln=!1,An=!1,Cn=!1,Mn=!0,In=!1;const Rn="user-content-";let On=!0,qn=!1,Nn={},Pn=null;const Dn=P({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","selectedcontent","style","svg","template","thead","title","video","xmp"]);let _n=null;const Fn=P({},["audio","video","img","source","image","track"]);let zn=null;const Hn=P({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Vn="http://www.w3.org/1998/Math/MathML",Bn="http://www.w3.org/2000/svg",Un="http://www.w3.org/1999/xhtml";let jn=Un,$n=!1,Gn=null;const Wn=P({},[Vn,Bn,Un],w),Yn=l(["mi","mo","mn","ms","mtext"]);let Jn=P({},Yn);const Xn=l(["annotation-xml"]);let Kn=P({},Xn);const Zn=P({},["title","style","font","a","script"]);let Qn=null;const et=["application/xhtml+xml","text/html"];let nt=null,tt=null;const it=r.createElement("form"),rt=function(e){return e instanceof RegExp||e instanceof Function},at=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(tt&&tt===e)return;e&&"object"==typeof e||(e={}),e=_(e),Qn=-1===et.indexOf(e.PARSER_MEDIA_TYPE)?"text/html":e.PARSER_MEDIA_TYPE,nt="application/xhtml+xml"===Qn?w:b,ln=we(e,"ALLOWED_TAGS",sn,{transform:nt}),cn=we(e,"ALLOWED_ATTR",dn,{transform:nt}),Gn=we(e,"ALLOWED_NAMESPACES",Wn,{transform:w}),zn=we(e,"ADD_URI_SAFE_ATTR",Hn,{transform:nt,base:Hn}),_n=we(e,"ADD_DATA_URI_TAGS",Fn,{transform:nt,base:Fn}),Pn=we(e,"FORBID_CONTENTS",Dn,{transform:nt}),pn=we(e,"FORBID_TAGS",_({}),{transform:nt}),mn=we(e,"FORBID_ATTR",_({}),{transform:nt}),Nn=!!M(e,"USE_PROFILES")&&(e.USE_PROFILES&&"object"==typeof e.USE_PROFILES?_(e.USE_PROFILES):e.USE_PROFILES),hn=!1!==e.ALLOW_ARIA_ATTR,gn=!1!==e.ALLOW_DATA_ATTR,vn=e.ALLOW_UNKNOWN_PROTOCOLS||!1,yn=!1!==e.ALLOW_SELF_CLOSE_IN_ATTR,bn=e.SAFE_FOR_TEMPLATES||!1,wn=!1!==e.SAFE_FOR_XML,Sn=e.WHOLE_DOCUMENT||!1,Ln=e.RETURN_DOM||!1,An=e.RETURN_DOM_FRAGMENT||!1,Cn=e.RETURN_TRUSTED_TYPE||!1,xn=e.FORCE_BODY||!1,Mn=!1!==e.SANITIZE_DOM,In=e.SANITIZE_NAMED_PROPS||!1,On=!1!==e.KEEP_CONTENT,qn=e.IN_PLACE||!1,on=function(e){try{return R(e,""),!0}catch(e){return!1}}(e.ALLOWED_URI_REGEXP)?e.ALLOWED_URI_REGEXP:ne,jn="string"==typeof e.NAMESPACE?e.NAMESPACE:Un,Jn=Se(e,"MATHML_TEXT_INTEGRATION_POINTS",()=>P({},Yn)),Kn=Se(e,"HTML_INTEGRATION_POINTS",()=>P({},Xn));const n=Se(e,"CUSTOM_ELEMENT_HANDLING",()=>c(null));if(un=c(null),M(n,"tagNameCheck")&&rt(n.tagNameCheck)&&(un.tagNameCheck=n.tagNameCheck),M(n,"attributeNameCheck")&&rt(n.attributeNameCheck)&&(un.attributeNameCheck=n.attributeNameCheck),M(n,"allowCustomizedBuiltInElements")&&"boolean"==typeof n.allowCustomizedBuiltInElements&&(un.allowCustomizedBuiltInElements=n.allowCustomizedBuiltInElements),s(un),bn&&(gn=!1),An&&(Ln=!0),Nn&&(ln=P({},$),cn=c(null),!0===Nn.html&&(P(ln,z),P(cn,G)),!0===Nn.svg&&(P(ln,H),P(cn,W),P(cn,J)),!0===Nn.svgFilters&&(P(ln,V),P(cn,W),P(cn,J)),!0===Nn.mathMl&&(P(ln,U),P(cn,Y),P(cn,J))),fn.tagCheck=null,fn.attributeCheck=null,M(e,"ADD_TAGS")&&("function"==typeof e.ADD_TAGS?fn.tagCheck=e.ADD_TAGS:y(e.ADD_TAGS)&&(ln===sn&&(ln=_(ln)),P(ln,e.ADD_TAGS,nt))),M(e,"ADD_ATTR")&&("function"==typeof e.ADD_ATTR?fn.attributeCheck=e.ADD_ATTR:y(e.ADD_ATTR)&&(cn===dn&&(cn=_(cn)),P(cn,e.ADD_ATTR,nt))),M(e,"ADD_FORBID_CONTENTS")&&y(e.ADD_FORBID_CONTENTS)&&(Pn===Dn&&(Pn=_(Pn)),P(Pn,e.ADD_FORBID_CONTENTS,nt)),On&&(ln["#text"]=!0),Sn&&P(ln,["html","head","body"]),ln.table&&(P(ln,["tbody"]),delete pn.tbody),e.TRUSTED_TYPES_POLICY){if("function"!=typeof e.TRUSTED_TYPES_POLICY.createHTML)throw O('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if("function"!=typeof e.TRUSTED_TYPES_POLICY.createScriptURL)throw O('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');const n=De;De=e.TRUSTED_TYPES_POLICY;try{Fe=Be("")}catch(e){throw De=n,e}}else null===e.TRUSTED_TYPES_POLICY?(De=void 0,Fe=""):(void 0===De&&(De=Ue()),De&&"string"==typeof Fe&&(Fe=Be("")));l&&l(e),tt=e},ot=P({},[...H,...V,...B]),lt=P({},[...U,...j]),st=function(e){let n=Ce(e);n&&n.tagName||(n={namespaceURI:jn,tagName:"template"});const t=b(e.tagName),i=b(n.tagName);return!!Gn[e.namespaceURI]&&(e.namespaceURI===Bn?function(e,n,t){return n.namespaceURI===Un?"svg"===e:n.namespaceURI===Vn?"svg"===e&&("annotation-xml"===t||Jn[t]):Boolean(ot[e])}(t,n,i):e.namespaceURI===Vn?function(e,n,t){return n.namespaceURI===Un?"math"===e:n.namespaceURI===Bn?"math"===e&&Kn[t]:Boolean(lt[e])}(t,n,i):e.namespaceURI===Un?function(e,n,t){return!(n.namespaceURI===Bn&&!Kn[t])&&!(n.namespaceURI===Vn&&!Jn[t])&&!lt[e]&&(Zn[e]||!ot[e])}(t,n,i):!("application/xhtml+xml"!==Qn||!Gn[e.namespaceURI]))},ct=function(e){g(i.removed,{element:e});try{Ce(e).removeChild(e)}catch(n){if(Te(e),!Ce(e))throw O("a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place")}},dt=function(e,n,t){try{xe(e,n)}catch(n){try{e.removeAttribute(t)}catch(e){}}},ut=function(e){ft(e);const n=Ae(e);if(n){const e=[];m(n,n=>{g(e,n)}),m(e,e=>{try{Te(e)}catch(e){}})}const t=Ie(e);if(t)for(let n=t.length-1;n>=0;--n){const i=t[n],r=i&&i.name;"string"==typeof r&&dt(e,i,r)}},pt=function(e,n,t){if(!t)try{t=n.getAttributeNode(e)}catch(e){t=null}g(i.removed,{attribute:t||null,from:n});try{t?xe(n,t):n.removeAttribute(e)}catch(t){try{n.removeAttribute(e)}catch(e){}}if("is"===e)if(Ln||An)try{ct(n)}catch(e){}else try{n.setAttribute(e,"")}catch(e){}},mt=function(e){const n=Ie(e);if(n)for(let t=n.length-1;t>=0;--t){const i=n[t],r=i&&i.name;"string"!=typeof r||cn[nt(r)]||dt(e,i,r)}},ft=function(e){const n=[e];for(;n.length>0;){const e=n.pop();Ne(e)===de&&mt(e);const t=Ae(e);if(t)for(let e=t.length-1;e>=0;--e)n.push(t[e])}},ht=function(e,n){return!!wn&&("patchsrc"===e||"for"===e&&"label"!==n&&"output"!==n)},gt=function(e){let n=null,t=null;if(xn)e="<remove></remove>"+e;else{const n=S(e,/^[\r\n\t ]+/);t=n&&n[0]}"application/xhtml+xml"===Qn&&jn===Un&&(e='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+e+"</body></html>");const i=De?Be(e):e;if(jn===Un)try{n=(new D).parseFromString(i,Qn)}catch(e){}if(!n||!n.documentElement){n=$e.createDocument(jn,"template",null);try{n.documentElement.innerHTML=$n?Fe:i}catch(e){}}const a=n.body||n.documentElement;return e&&t&&a.insertBefore(r.createTextNode(t),a.childNodes[0]||null),jn===Un?Ye.call(n,Sn?"html":"body")[0]:Sn?n.documentElement:a},vt=function(e){const n=qe?qe(e):e.ownerDocument;return Ge.call(n||e,e,q.SHOW_ELEMENT|q.SHOW_COMMENT|q.SHOW_TEXT|q.SHOW_PROCESSING_INSTRUCTION|q.SHOW_CDATA_SECTION,null)},yt=function(e){return e=E(e,Ke," "),e=E(e,Ze," "),e=E(e,Qe," ")},bt=function(e){var n;e.normalize();const t=qe?qe(e):e.ownerDocument,i=Ge.call(t||e,e,q.SHOW_TEXT|q.SHOW_COMMENT|q.SHOW_CDATA_SECTION|q.SHOW_PROCESSING_INSTRUCTION,null);let r=i.nextNode();for(;r;)r.data=yt(r.data),r=i.nextNode();const a=null===(n=e.querySelectorAll)||void 0===n?void 0:n.call(e,"template");a&&m(a,e=>{St(e.content)&&bt(e.content)})},wt=function(e){const n=Oe?Oe(e):null;return"string"==typeof n&&("form"===nt(n)&&("string"!=typeof e.nodeName||"string"!=typeof e.textContent||"function"!=typeof e.removeChild||e.attributes!==Ie(e)||"function"!=typeof e.removeAttribute||"function"!=typeof e.removeAttributeNode||"function"!=typeof e.getAttributeNode||"function"!=typeof e.setAttribute||"string"!=typeof e.namespaceURI||"function"!=typeof e.insertBefore||"function"!=typeof e.hasChildNodes||e.nodeType!==Re(e)||e.childNodes!==Ae(e)))},St=function(e){if(!Re||"object"!=typeof e||null===e)return!1;try{return Re(e)===he}catch(e){return!1}},Et=function(e){if(!Re||"object"!=typeof e||null===e)return!1;try{return"number"==typeof Re(e)}catch(e){return!1}};function kt(e,n,t){0!==e.length&&m(e,e=>{e.call(i,n,t,tt)})}const Tt=function(e,n){if(e instanceof RegExp)return R(e,n);if(e instanceof Function){for(var t=arguments.length,i=new Array(t>2?t-2:0),r=2;r<t;r++)i[r-2]=arguments[r];return Boolean(e(n,...i))}return!1},xt=function(e,n,t,i){return 0===e.length?n:n===t||n===i?_(n):n},Lt=function(e,n){return e!==n&&null===Ce(e)&&(qn&&ft(e),!0)},At=function(e,n){if(kt(Xe.beforeSanitizeElements,e,null),Lt(e,n))return!0;if(wt(e))return ct(e),!0;const t=nt(Pe(e));if(ln=xt(Xe.uponSanitizeElement,ln,sn,kn),kt(Xe.uponSanitizeElement,e,{tagName:t,allowedTags:ln}),Lt(e,n))return!0;if(function(e,n){return!!(wn&&e.hasChildNodes()&&!Et(e.firstElementChild)&&R(oe,e.textContent)&&R(oe,e.innerHTML))||!!(wn&&e.namespaceURI===Un&&ve[n]&&(Et(e.firstElementChild)||"string"==typeof e.textContent&&R(ye[n],e.textContent)))||e.nodeType===pe||!(!wn||e.nodeType!==me||!R(le,e.data))}(e,t))return ct(e),!0;if(pn[t]||!(fn.tagCheck instanceof Function&&fn.tagCheck(t))&&!ln[t]){const i=function(e,n,t){if(!pn[n]&&It(n)&&Tt(un.tagNameCheck,n))return!1;if(On&&!Pn[n]){const n=Ce(e),i=Ae(e);if(i&&n)for(let r=i.length-1;r>=0;--r){const a=e===t?ke(i[r],!0):i[r];n.insertBefore(a,Le(e))}}return ct(e),!0}(e,t,n);return!1===i&&kt(Xe.afterSanitizeElements,e,null),i}if(Ne(e)===de&&!st(e))return ct(e),!0;if(("noscript"===t||"noembed"===t||"noframes"===t)&&R(se,e.innerHTML))return ct(e),!0;if(bn&&e.nodeType===ue){const n=yt(e.textContent);e.textContent!==n&&(g(i.removed,{element:e.cloneNode()}),e.textContent=n)}return kt(Xe.afterSanitizeElements,e,null),!1},Ct=function(e,n,t){if(mn[n])return!1;if(ht(n,e))return!1;if(Mn&&("id"===n||"name"===n)&&(t in r||t in it))return!1;const i=cn[n]||fn.attributeCheck instanceof Function&&fn.attributeCheck(n,e);return!(!gn||!R(en,n))||(!(!hn||!R(nn,n))||(i?!!zn[n]||(!!R(on,E(t,rn,""))||(!("src"!==n&&"xlink:href"!==n&&"href"!==n||"script"===e||0!==k(t,"data:")||!_n[e])||(!(!vn||R(tn,E(t,rn,"")))||!t))):It(e)&&Tt(un.tagNameCheck,e)&&Tt(un.attributeNameCheck,n,e)||"is"===n&&un.allowCustomizedBuiltInElements&&Tt(un.tagNameCheck,t)))},Mt=P({},["annotation-xml","color-profile","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","missing-glyph"]),It=function(e){return!Mt[b(e)]&&R(an,e)},Rt=function(e,n,t,i){if(De&&"object"==typeof ge&&"function"==typeof ge.getAttributeType&&!t)switch(ge.getAttributeType(e,n)){case"TrustedHTML":return Be(i);case"TrustedScriptURL":return function(e){Ve(),He++;try{return De.createScriptURL(e)}finally{He--}}(i)}return i},Ot=function(e,n,t,i){try{return t?e.setAttributeNS(t,n,i):e.setAttribute(n,i),!wt(e)||(ct(e),!1)}catch(t){return pt(n,e),!1}},qt=function(e){kt(Xe.beforeSanitizeAttributes,e,null);const n=e.attributes;if(!n||wt(e))return;cn=xt(Xe.uponSanitizeAttribute,cn,dn,Tn);const t={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:cn,forceKeepAttr:void 0};let r=n.length;const a=nt(e.nodeName);for(;r--;){const o=n[r],l=o.name,s=o.namespaceURI,c=o.value,d=nt(l),u=c;let p="value"===l?u:T(u),m=!1;if(t.attrName=d,t.attrValue=p,t.keepAttr=!0,t.forceKeepAttr=void 0,kt(Xe.uponSanitizeAttribute,e,t),p=t.attrValue,!In||"id"!==d&&"name"!==d||0===k(p,Rn)||(pt(l,e,o),p=Rn+p,m=!0),wn&&R(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,p))pt(l,e,o);else if("attributename"===d&&S(p,"href"))pt(l,e,o);else if(!t.forceKeepAttr)if(t.keepAttr)if(yn||!R(ce,p))if(bn&&(p=yt(p)),Ct(a,d,p)){if(p=Rt(a,d,s,p),p!==u){Ot(e,l,s,p)&&m&&h(i.removed)}}else pt(l,e,o);else pt(l,e,o);else pt(l,e,o)}kt(Xe.afterSanitizeAttributes,e,null)},Nt=function(e){let n=null;const t=vt(e);for(kt(Xe.beforeSanitizeShadowDOM,e,null);n=t.nextNode();)if(kt(Xe.uponSanitizeShadowNode,n,null),At(n,e),qt(n),St(n.content)&&Nt(n.content),Ne(n)===de){const e=Me(n);St(e)&&(Pt(e),Nt(e))}kt(Xe.afterSanitizeShadowDOM,e,null)},Pt=function(e){const n=[{node:e,shadow:null}];for(;n.length>0;){const e=n.pop();if(e.shadow){Nt(e.shadow);continue}const t=e.node,i=Ne(t)===de,r=Ae(t);if(r)for(let e=r.length-1;e>=0;--e)n.push({node:r[e],shadow:null});if(i){const e=Oe?Oe(t):null;if("string"==typeof e&&"template"===nt(e)){const e=t.content;St(e)&&n.push({node:e,shadow:null})}}if(i){const e=Me(t);St(e)&&n.push({node:null,shadow:e},{node:e,shadow:null})}}};return i.sanitize=function(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=null,r=null,o=null,l=null;if($n=!e,$n&&(e="\x3c!--\x3e"),"string"!=typeof e&&!Et(e)&&"string"!=typeof(e=function(e){switch(typeof e){case"string":return e;case"number":return x(e);case"boolean":return L(e);case"bigint":return A?A(e):"0";case"symbol":return C?C(e):"Symbol()";case"undefined":default:return I(e);case"function":case"object":{if(null===e)return I(e);const n=e,t=F(n,"toString");if("function"==typeof t){const e=t(n);return"string"==typeof e?e:I(e)}return I(e)}}}(e)))throw O("dirty is not a string, aborting");if(!i.isSupported)return e;En?(ln=kn,cn=Tn):at(n),(Xe.uponSanitizeElement.length>0||Xe.uponSanitizeAttribute.length>0)&&(ln=_(ln)),Xe.uponSanitizeAttribute.length>0&&(cn=_(cn)),i.removed=[];const s=qn&&"string"!=typeof e&&Et(e);if(s){!function(e){if(!wn)return;const n=[e];for(;n.length>0;){const e=n.pop(),t=Ne(e);if(t===pe||t===me&&R(le,e.data)){try{Te(e)}catch(e){}continue}if(t===de){const n=e,t=nt(Pe(e));try{n.hasAttribute&&n.hasAttribute("patchsrc")&&n.removeAttribute("patchsrc"),n.hasAttribute&&n.hasAttribute("for")&&ht("for",t)&&n.removeAttribute("for")}catch(e){}}const i=Ae(e);if(i)for(let e=i.length-1;e>=0;--e)n.push(i[e])}}(e);const n=Pe(e);if("string"==typeof n){const t=nt(n);if(!ln[t]||pn[t])throw ut(e),O("root node is forbidden and cannot be sanitized in-place")}if(wt(e))throw ut(e),O("root node is clobbered and cannot be sanitized in-place");try{Pt(e)}catch(n){throw ut(e),n}}else if(Et(e))t=gt("\x3c!----\x3e"),r=t.ownerDocument.importNode(e,!0),r.nodeType===de&&"BODY"===r.nodeName||"HTML"===r.nodeName?t=r:t.appendChild(r),Pt(t);else{if(!Ln&&!bn&&!Sn&&-1===e.indexOf("<"))return De&&Cn?Be(e):e;if(t=gt(e),!t)return Ln?null:Cn?Fe:""}t&&xn&&ct(t.firstChild);const c=s?e:t;try{const e=vt(c);for(;o=e.nextNode();)At(o,c),qt(o),St(o.content)&&Nt(o.content)}catch(n){throw s&&(ut(e),m(i.removed,e=>{e.element&&ft(e.element)})),n}if(s)return m(i.removed,e=>{e.element&&ft(e.element)}),bn&&bt(e),e;if(Ln){if(bn&&bt(t),An)for(l=We.call(t.ownerDocument);t.firstChild;)l.appendChild(t.firstChild);else l=t;return(cn.shadowroot||cn.shadowrootmode)&&(l=Je.call(a,l,!0)),l}let d=Sn?t.outerHTML:t.innerHTML;return Sn&&ln["!doctype"]&&t.ownerDocument&&t.ownerDocument.doctype&&t.ownerDocument.doctype.name&&R(re,t.ownerDocument.doctype.name)&&(d="<!DOCTYPE "+t.ownerDocument.doctype.name+">\n"+d),bn&&(d=yt(d)),De&&Cn?Be(d):d},i.setConfig=function(){at(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),En=!0,kn=ln,Tn=cn},i.clearConfig=function(){tt=null,En=!1,kn=null,Tn=null,De=_e,Fe=""},i.isValidAttribute=function(e,n,t){tt||at({});const i=nt(e),r=nt(n);return Ct(i,r,t)},i.addHook=function(e,n){"function"==typeof n&&M(Xe,e)&&g(Xe[e],n)},i.removeHook=function(e,n){if(M(Xe,e)){if(void 0!==n){const t=f(Xe[e],n);return-1===t?void 0:v(Xe[e],t,1)[0]}return h(Xe[e])}},i.removeHooks=function(e){M(Xe,e)&&(Xe[e]=[])},i.removeAllHooks=function(){Xe={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},i}();window.DOMPurify=Ee}};const n={};function t(i){const r=n[i];if(void 0!==r)return r.exports;const a=n[i]={exports:{}};return e[i](a,a.exports,t),a.exports}(()=>{"use strict";class e{static translations={};static defaultTranslations={};static get lang(){return document.documentElement.lang||"it"}static async init(e,n={}){this.translations=e,this.defaultTranslations=n}static get(e,n=[]){let t=this.getNestedValue(this.translations,e);return null==t&&(t=this.getNestedValue(this.defaultTranslations,e)),null==t?(console.error("Chiave di traduzione mancante: '"+e+"'"),e):(Array.isArray(n)&&n.length>0&&n.forEach((e,n)=>{t=t.replace(new RegExp("\\{"+n+"\\}","g"),e)}),t)}static getNestedValue(e,n){const t=n.split(".");let i=e;for(const e of t){if("object"!=typeof i||null===i||!(e in i))return null;i=i[e]}return i}}class n{constructor(e,n){this.baseUrl=e,this.token=n}async request(n,t={}){const i={Authorization:`Bearer ${this.token}`,"Accept-Language":e.lang,...t.headers};let r=t.body;r instanceof FormData||void 0===r||(i["Content-Type"]="application/json",r=JSON.stringify(r));const a=await fetch(`${this.baseUrl}${n}`,{...t,headers:i,body:r});let o;a.headers.get("content-type");try{o=await a.json()}catch{throw{success:!1,status:a.status,response:"Errore nel parsing della risposta"}}if(!o.success)throw o;return o}get(e){return this.request(e,{method:"GET"})}post(e,n){return this.request(e,{method:"POST",body:n})}put(e,n){return this.request(e,{method:"PUT",body:n})}delete(e){return this.request(e,{method:"DELETE"})}}class i{constructor(e,n={}){const{infoElement:t=null,exportElement:i=null,mapId:r=null,travelMode:a="DRIVING",onError:o=e=>alert(e)}=n;this.mapElement=e,this.infoElement=t,this.exportElement=i,this.mapId=r,this.travelMode=a,this.onError=o,this.map=null,this.directionsService=null,this.directionsRenderer=null,this.autocomplete=null,this.mapClickListener=null,this.editingEnabled=!1,this.routeEnabled=!1,this.advancedMarkers=[],this.inputElement=null,this.waypoints=[],this.markers=[],this.mapType="hybrid",this.labelsVisible=!1}getTravelMode(){return google.maps.TravelMode[this.travelMode]??google.maps.TravelMode.DRIVING}initBaseMap(e={}){const n={center:{lat:20,lng:0},zoom:2,mapTypeId:this.mapType,mapTypeControl:!1,zoomControl:!0,streetViewControl:!1,fullscreenControl:!1,...e};return this.mapId&&(n.mapId=this.mapId),this.map=new google.maps.Map(this.mapElement,n),this.updateMapStyle(),this.map}initMap(){this.initBaseMap()}enableEditing(){this.map||this.initBaseMap(),this.editingEnabled=!0,this.mapClickListener&&this.mapClickListener.remove(),this.mapClickListener=this.map.addListener("click",e=>this.addChangeableMarker(e.latLng))}disableEditing(){this.mapClickListener&&(this.mapClickListener.remove(),this.mapClickListener=null),this.editingEnabled=!1}enableRoute(e={}){const{suppressMarkers:n=!0,draggable:t=!1,preserveViewport:i=!1,recalc:r=!0}=e;this.map||this.initBaseMap(),this.directionsService||(this.directionsService=new google.maps.DirectionsService),this.directionsRenderer?(this.directionsRenderer.setMap(this.map),this.directionsRenderer.setOptions({suppressMarkers:n,draggable:t,preserveViewport:i})):this.directionsRenderer=new google.maps.DirectionsRenderer({map:this.map,suppressMarkers:n,draggable:t,preserveViewport:i}),this.routeEnabled=!0,r&&this.waypoints.length>=2&&this.calcRoute()}disableRoute(){this.routeEnabled=!1,this.directionsRenderer&&(this.directionsRenderer.set("directions",null),this.directionsRenderer.setMap(null))}enableAutocomplete(e){this.inputElement=e,this.autocomplete=new google.maps.places.Autocomplete(this.inputElement),this.autocomplete.bindTo("bounds",this.map),this.autocomplete.addListener("place_changed",()=>{const e=this.autocomplete.getPlace();e.geometry&&e.geometry.location?(this.inputElement.value="",this.map.panTo(e.geometry.location),this.map.setZoom(15),this.addChangeableMarker(e.geometry.location)):this.onError("Luogo non trovato")})}initReadOnlyMap(e){if(!Array.isArray(e)||e.length<2)return void console.warn("Percorso non valido o troppo corto.");this.initBaseMap({center:e[0],zoom:14,disableDefaultUI:!0,mapTypeId:this.mapType}),this.disableEditing(),this.enableRoute({preserveViewport:!0,recalc:!1});const n=e[0],t=e[e.length-1],i=e.slice(1,-1).map(e=>({location:e,stopover:!0}));this.directionsService.route({origin:n,destination:t,waypoints:i,travelMode:this.getTravelMode()},(e,i)=>{if("OK"===i){this.directionsRenderer.setDirections(e);const i=new google.maps.LatLngBounds;if(e.routes[0].overview_path.forEach(e=>i.extend(e)),this.map.fitBounds(i),google.maps.marker&&google.maps.marker.AdvancedMarkerElement&&google.maps.marker.PinElement){const e=new google.maps.marker.PinElement({glyphText:"A"});new google.maps.marker.AdvancedMarkerElement({position:n,map:this.map,content:e.element,title:"A"});const i=new google.maps.marker.PinElement({glyphText:"B"});new google.maps.marker.AdvancedMarkerElement({position:t,map:this.map,content:i.element,title:"B"})}else new google.maps.Marker({position:n,map:this.map,label:"A"}),new google.maps.Marker({position:t,map:this.map,label:"B"})}else this.onError("Errore nel calcolo del percorso: "+i)})}setMapType(e){this.mapType=e,this.updateMapStyle()}toggleLabels(){this.labelsVisible=!this.labelsVisible,this.updateMapStyle()}updateMapStyle(){this.map.setMapTypeId(this.mapType),this.mapId||(this.labelsVisible?this.map.setOptions({styles:null}):this.map.setOptions({styles:[{featureType:"all",elementType:"labels",stylers:[{visibility:"off"}]}]}))}fitBounds(e={}){if(!this.map)return;const{includeRoute:n=!0,includeMarkers:t=!0,includeAdvancedMarkers:i=!0,extraPoints:r=[],padding:a=40,minZoom:o=null,maxZoom:l=null}=e,s=new google.maps.LatLngBounds;let c=!1;const d=e=>{if(!e)return null;if("function"==typeof e.lat&&"function"==typeof e.lng)return e;if("function"==typeof e.getPosition)return e.getPosition();if(e.position){const n=e.position;if("function"==typeof n.lat&&"function"==typeof n.lng)return n;if("number"==typeof n.lat&&"number"==typeof n.lng)return new google.maps.LatLng(n.lat,n.lng)}return e.location?d(e.location):"number"==typeof e.lat&&"number"==typeof e.lng?new google.maps.LatLng(e.lat,e.lng):null},u=e=>{const n=d(e);n&&(s.extend(n),c=!0)};if(n&&this.directionsRenderer&&this.directionsRenderer.getDirections){const e=this.directionsRenderer.getDirections(),n=e?.routes?.[0];n?.overview_path?.length?n.overview_path.forEach(e=>u(e)):this.waypoints.length&&this.waypoints.forEach(e=>u(e.location))}else n&&this.waypoints.length&&this.waypoints.forEach(e=>u(e.location));if(t&&this.markers.forEach(e=>u(e)),i&&this.advancedMarkers.forEach(e=>u(e)),Array.isArray(r)&&r.forEach(e=>u(e)),c&&(this.map.fitBounds(s,a),null!==o||null!==l)){const e=this.map.addListener("idle",()=>{const n=this.map.getZoom();null!==o&&n<o&&this.map.setZoom(o),null!==l&&n>l&&this.map.setZoom(l),e.remove()})}}addAdvancedMarker(e,n,t,i,r){const a="function"==typeof r?r(i):null;if(google.maps.marker&&google.maps.marker.AdvancedMarkerElement){const i=new google.maps.marker.AdvancedMarkerElement({map:this.map,content:a,position:new google.maps.LatLng(e,n),title:t});return this.advancedMarkers.push(i),i}console.warn("AdvancedMarkerElement non disponibile, uso Marker standard.");const o=new google.maps.Marker({position:new google.maps.LatLng(e,n),map:this.map,title:t});return this.advancedMarkers.push(o),o}addMarker(e,n){return new google.maps.Marker({position:e,map:this.map,label:n})}addChangeableMarker(e){const n=(this.markers.length+1).toString(),t=this.addMarker(e,n);t.setDraggable(!0),t.addListener("dragend",()=>{this.updateWaypoints(),this.routeEnabled&&this.calcRoute()}),t.addListener("dblclick",()=>{t.setMap(null),this.markers=this.markers.filter(e=>e!==t),this.updateWaypoints(),this.routeEnabled&&this.calcRoute()}),this.markers.push(t),this.updateWaypoints(),this.routeEnabled&&this.markers.length>=2&&this.calcRoute()}updateWaypoints(){this.waypoints=this.markers.map(e=>({location:e.getPosition(),stopover:!0})),this.markers.forEach((e,n)=>e.setLabel((n+1).toString())),this.saveRoute()}calcRoute(){if(!this.routeEnabled||!this.directionsService||!this.directionsRenderer)return;if(this.waypoints.length<2)return;const e=this.waypoints[0].location,n=this.waypoints[this.waypoints.length-1].location,t=this.waypoints.slice(1,-1);this.directionsService.route({origin:e,destination:n,waypoints:t,travelMode:this.getTravelMode()},(e,n)=>{if("OK"===n){this.directionsRenderer.setDirections(e),this.showRouteInfo(e.routes[0].legs);const n=new google.maps.LatLngBounds;e.routes[0].overview_path.forEach(e=>n.extend(e)),this.map.fitBounds(n)}else this.onError("Errore nel calcolo del percorso: "+n)})}showRouteInfo(e){let n=0,t=0;e.forEach(e=>{n+=e.distance.value,t+=e.duration.value}),this.infoElement&&(this.infoElement.innerHTML=`<strong>Distanza:</strong> ${(n/1e3).toFixed(2)} km<br><strong>Tempo stimato:</strong> ${this.formatTime(t)}`)}formatTime(e){const n=Math.floor(e/60),t=Math.floor(n/60),i=n%60;return t>0?`${t}h ${i}min`:`${i}min`}resetMap(){this.markers.forEach(e=>e.setMap(null)),this.markers=[],this.waypoints=[],this.directionsRenderer&&this.directionsRenderer.set("directions",null),this.infoElement&&(this.infoElement.innerHTML="")}saveRoute(){const e=this.markers.map(e=>({lat:e.getPosition().lat(),lng:e.getPosition().lng()}));this.exportElement&&(this.exportElement.value=JSON.stringify(e,null,2))}loadRouteFromJSON(e){this.resetMap();JSON.parse(e).forEach(e=>this.addChangeableMarker(new google.maps.LatLng(e.lat,e.lng)))}}window.ApiClient=n,window.TranslationProvider=e,window.MapManager=i,window.MapNavigator=class{constructor(e){if(!(e&&e instanceof i))throw new Error("Devi passare una istanza valida di MapManager");this.mapManager=e,this.map=e.map,this.percorso=[],this.userMarker=null,this.watchId=null,this.previousPosition=null}init(e){this.stop(),this.percorso=e,this.mapManager.initReadOnlyMap(e),this.map=this.mapManager.map}start(){navigator.geolocation?this.watchId=navigator.geolocation.watchPosition(e=>this.updatePosition(e),e=>this.mapManager.onError("Errore nella geolocalizzazione: "+e.message),{enableHighAccuracy:!0,maximumAge:0,timeout:1e4}):this.mapManager.onError("Geolocalizzazione non supportata dal tuo browser.")}updatePosition(e){const n={lat:e.coords.latitude,lng:e.coords.longitude};let t=0;if(this.previousPosition&&(t=this.computeHeading(this.previousPosition,n)),this.userMarker){this.userMarker.setPosition(n);const e=this.userMarker.getIcon();e.rotation=t,this.userMarker.setIcon(e)}else this.map.setZoom(16),this.map.setCenter(n),this.userMarker=new google.maps.Marker({position:n,map:this.map,icon:{path:google.maps.SymbolPath.FORWARD_CLOSED_ARROW,scale:4,fillColor:"#007BFF",fillOpacity:1,strokeColor:"#fff",strokeWeight:1,rotation:t,anchor:new google.maps.Point(0,2)},title:"La tua posizione"});this.previousPosition=n}computeHeading(e,n){const t=e=>e*Math.PI/180,i=t(e.lat),r=t(e.lng),a=t(n.lat),o=t(n.lng)-r,l=Math.sin(o)*Math.cos(a),s=Math.cos(i)*Math.sin(a)-Math.sin(i)*Math.cos(a)*Math.cos(o),c=Math.atan2(l,s);return(180*c/Math.PI+360)%360}stop(){null!==this.watchId&&(navigator.geolocation.clearWatch(this.watchId),this.watchId=null),this.userMarker&&(this.userMarker.setMap(null),this.userMarker=null)}openInGoogleMaps(){if(!this.percorso||this.percorso.length<2)return void this.mapManager.onError("Percorso insufficiente per l'apertura in Google Maps.");const e=`${this.percorso[0].lat},${this.percorso[0].lng}`,n=`${this.percorso[this.percorso.length-1].lat},${this.percorso[this.percorso.length-1].lng}`,t=this.percorso.slice(1,-1).map(e=>`${e.lat},${e.lng}`).join("|"),i=new URL("https://www.google.com/maps/dir/");i.searchParams.set("api","1"),i.searchParams.set("origin",e),i.searchParams.set("destination",n),t&&i.searchParams.set("waypoints",t),i.searchParams.set("travelmode",{DRIVING:"driving",BICYCLING:"bicycling",WALKING:"walking",TRANSIT:"transit"}[this.mapManager.travelMode]??"driving"),window.open(i.toString(),"_blank")}},window.API_CLIENT=new n(pathSite+"/api",API_TOKEN),window.API_CLIENT_APP=window.API_CLIENT,window.__t=function(n,t=[]){return e.get(n,t)};t(767),t(8004),t(3286),t(550),t(9118),t(3211),t(4581),t(2347),t(9899),t(9111),t(8258),t(734),t(5328),t(5545),t(4315),t(2981),t(2879),t(8109),t(6225),t(9196),t(555),t(9676),t(2730);class r{modalText={add:{title:"Nuovo indirizzo"},modify:{title:"Modifica indirizzo"},delete:{title:"Elimina indirizzo",description:"Vuoi eliminare il seguente indirizzo:"}};constructor(e,n="address_",t=!1){this.container=e,this.prefix=n,this.required=t,this.container.querySelector('input[name="'+this.prefix+'id"]')&&(this.id=this.container.querySelector('input[name="'+this.prefix+'id"]')),this.name=this.container.querySelector('input[name="'+this.prefix+'name"]'),this.surname=this.container.querySelector('input[name="'+this.prefix+'surname"]'),this.country=this.container.querySelector('select[name="'+this.prefix+'country"]'),this.province=this.container.querySelector('select[name="'+this.prefix+'province"]'),this.cap=this.container.querySelector('input[name="'+this.prefix+'cap"]'),this.city=this.container.querySelector('input[name="'+this.prefix+'city"]'),this.street=this.container.querySelector('input[name="'+this.prefix+'street"]'),this.number=this.container.querySelector('input[name="'+this.prefix+'number"]'),this.phonePrefix=this.container.querySelector('select[name="'+this.prefix+'phone_prefix"]'),this.phone=this.container.querySelector('input[name="'+this.prefix+'phone"]'),this.container.querySelector('input[name="'+this.prefix+'more"]')&&(this.more=this.container.querySelector('input[name="'+this.prefix+'more"]'))}setForm(e){this.id.value=e.id,this.name.value=e.name,this.surname.value=e.surname,this.cap.value=e.cap,this.city.value=e.city,this.street.value=e.street,this.number.value=e.number,this.phone.value=e.phone,$(this.country).val(e.country).trigger("change"),delay(500).then(()=>{$(this.province).val(e.province).trigger("change")}),$(this.phonePrefix).val(e.phonePrefix).trigger("change"),this.initForm()}initForm(){this.required&&(setRequired(this.name,!0),setRequired(this.surname,!0),setRequired(this.country,!0),setRequired(this.province,!0),setRequired(this.cap,!0),setRequired(this.city,!0),setRequired(this.street,!0),setRequired(this.number,!0)),this.name.disabled=!1,this.surname.disabled=!1,this.phonePrefix.disabled=!1,this.phone.disabled=!1,this.country.disabled=!1,this.province.disabled=!1,this.cap.disabled=!1,this.city.disabled=!1,this.street.disabled=!1,this.number.disabled=!1,this.more&&(this.more.disabled=!1),check()}resetForm(e=!1){this.container.querySelectorAll("input, select").forEach(n=>{n.name.substring(0,this.prefix.length)==this.prefix&&(n.name==this.prefix+"country"?$(n).val("IT").trigger("change"):n.name==this.prefix+"phone_prefix"?$(n).val("+39").trigger("change"):n.value="",setRequired(n,!1),e&&(n.disabled=!0))}),check()}modalDelete(e,n){var t=document.querySelector("#"+this.prefix+"modal-delete");t.querySelector('input[name="'+this.prefix+'delete-id"]').value=e,t.querySelector(".modal-title").innerHTML=this.modalText.delete.title,t.querySelector(".modal-body .value").innerHTML=this.modalText.delete.description+"<br>"+n,new bootstrap.Modal(t).show()}modalForm(e="modify"){var n,t=document.querySelector("#"+this.prefix+"modal-form");new bootstrap.Modal(t).show(),"modify"==e?n=this.modalText.modify.title:"add"==e&&(n=this.modalText.add.title),t.querySelector(".modal-title").innerHTML=n,t.addEventListener("hidden.bs.modal",()=>{this.resetForm(!0)})}}window.Address=r,window.Billing=class extends r{modalText={add:{title:"Nuovi dati di fatturazione"},modify:{title:"Modifica dati di fatturazione"},delete:{title:"Elimina dati di fatturazione",description:"Vuoi eliminare i seguenti dati di fatturazione:"}};constructor(e,n="billing_",t=!1){super(e,n,t),this.container.querySelector('input[name="'+this.prefix+'type"]')?this.type=this.container.querySelector('input[name="'+this.prefix+'type"]'):this.type=this.container.querySelector('select[name="'+this.prefix+'type"]'),this.businessName=this.container.querySelector('input[name="'+this.prefix+'business_name"]'),this.cf=this.container.querySelector('input[name="'+this.prefix+'cf"]'),this.pi=this.container.querySelector('input[name="'+this.prefix+'pi"]'),this.sdi=this.container.querySelector('input[name="'+this.prefix+'sdi"]'),this.pec=this.container.querySelector('input[name="'+this.prefix+'pec"]')}initForm(){super.initForm(),this.type.disabled=!1,this.cf.disabled=!1,setRequired(this.type,!0),"business"==this.type.value?(this.businessName.parentElement.parentElement.classList.remove("d-none"),this.businessName.disabled=!1,console.log(this.businessName),this.pi.parentElement.parentElement.classList.remove("d-none"),this.pi.disabled=!1,this.sdi.parentElement.parentElement.classList.remove("d-none"),this.sdi.disabled=!1,this.pec.parentElement.parentElement.classList.remove("d-none"),this.pec.disabled=!1,this.name.parentElement.parentElement.classList.add("d-none"),this.name.disabled=!0,this.surname.parentElement.parentElement.classList.add("d-none"),this.surname.disabled=!0,this.required&&(setRequired(this.businessName,!0),setRequired(this.pi,!0),setRequired(this.cf,!1),setRequired(this.name,!1),setRequired(this.surname,!1))):"private"==this.type.value&&(this.name.parentElement.parentElement.classList.remove("d-none"),this.name.disabled=!1,this.surname.parentElement.parentElement.classList.remove("d-none"),this.surname.disabled=!1,this.businessName.parentElement.parentElement.classList.add("d-none"),this.businessName.disabled=!0,this.pi.parentElement.parentElement.classList.add("d-none"),this.pi.disabled=!0,this.sdi.parentElement.parentElement.classList.add("d-none"),this.sdi.disabled=!0,this.pec.parentElement.parentElement.classList.add("d-none"),this.pec.disabled=!0,this.required&&(setRequired(this.name,!0),setRequired(this.surname,!0),setRequired(this.cf,!0),setRequired(this.businessName,!1),setRequired(this.pi,!1))),check()}setForm(e){this.type.value=e.type,this.businessName.value=e.businessName,this.cf.value=e.cf,this.pi.value=e.pi,this.sdi.value=e.sdi,this.pec.value=e.pec,super.setForm(e)}resetForm(){this.container.querySelectorAll("input, select").forEach(e=>{e.name.substring(0,this.prefix.length)==this.prefix&&(e.name==this.prefix+"type"?e.value="private":e.name==this.prefix+"country"?$(e).val("IT").trigger("change"):e.name==this.prefix+"phone_prefix"?$(e).val("+39").trigger("change"):e.value="",setRequired(e,!1))}),check()}}})()})();
|
|
2
|
+
(()=>{var e={5285(e){e.exports="function ajaxRequest(link, onSuccess = reloadPage, params = null) {\n\n loadingSpinner();\n\n $.ajax({\n type: \"POST\",\n url: link,\n data: { \n post: 'true'\n }, \n success: function(data) {\n\n if (onSuccess != null) {\n if (typeof onSuccess === 'function') {\n \n if (params == null) {\n onSuccess();\n } else {\n onSuccess(params);\n }\n \n } else {\n \n try {\n \n var x = JSON.parse(onSuccess.replace('"', '\"'));\n\n var f = x.function;\n var p = x.parameters;\n \n } catch {\n\n var f = onSuccess;\n var p = params;\n\n }\n \n window[f](p);\n \n }\n }\n\n loadingSpinner();\n \n },\n error: function (XMLHttpRequest) {\n ajaxRequestError(XMLHttpRequest);\n loadingSpinner();\n }\n }); \n\n}\n\nfunction reloadPage() {\n\n location.reload();\n \n}"},4729(e){e.exports="function toastContainer() {\n\n if (document.querySelector('.toast-container')) {\n\n var container = document.querySelector('.toast-container');\n\n }else{\n\n var container = document.createElement('div');\n container.classList.add('toast-container');\n container.classList.add('position-fixed');\n container.classList.add('top-0');\n container.classList.add('end-0');\n container.classList.add('p-3');\n\n document.body.insertBefore(container, document.body.firstChild);\n\n }\n\n return container;\n\n}\n\nfunction alertToast(alert, type = null, title = null, text = null) {\n\n var container = toastContainer();\n\n $(\".toast.show\").toast().hide();\n \n if (alert == 801) {\n\n container.innerHTML = NO_INTERNET_ALERT + container.innerHTML;\n const toast = new bootstrap.Toast(container.firstElementChild);\n toast.show();\n\n } else if (alert != undefined) {\n\n API_CLIENT_APP.post(\"/backend/alert/\", { \n code: alert,\n alertType: type,\n alertTitle: title,\n alertText: text\n })\n .then(data => {\n \n container.innerHTML = data.response + container.innerHTML;\n const toast = new bootstrap.Toast(container.firstElementChild);\n toast.show();\n \n var url = new URL(window.location.href);\n url.searchParams.delete('alert');\n window.history.replaceState(null, null, url);\n\n })\n .catch(error => console.error(error));\n\n }\n\n}"},8553(e){e.exports="function bootstrapToast() {\n\n var toastElList = [].slice.call(document.querySelectorAll('.toast'))\n var toastList = toastElList.map(function(toastEl) {\n return new bootstrap.Toast(toastEl)\n });\n toastList.forEach(toast => toast.show());\n\n}\n\nfunction bootstrapTooltip() { $('[data-bs-toggle=\"tooltip\"]').tooltip(); }\n\nfunction bootstrapTheme(theme) {\n\n document.querySelector(\"html\").setAttribute(\"data-bs-theme\", theme);\n\n localStorage.setItem('theme', theme);\n \n if (theme == 'light') {\n\n if (document.querySelector('#bs-theme i.light-theme')) { document.querySelector('#bs-theme i.light-theme').classList.remove('d-none'); }\n if (document.querySelector('#bs-theme i.dark-theme')) { document.querySelector('#bs-theme i.dark-theme').classList.add('d-none'); }\n\n document.querySelector('#be-logo-white').classList.add('d-none');\n document.querySelector('#be-logo-black').classList.remove('d-none');\n\n element = document.querySelector('[data-bs-theme-value=\"light\"]');\n el = document.querySelector('[data-bs-theme-value=\"dark\"]');\n\n } else if (theme == 'dark') {\n\n if (document.querySelector('#bs-theme i.light-theme')) { document.querySelector('#bs-theme i.light-theme').classList.add('d-none'); }\n if (document.querySelector('#bs-theme i.dark-theme')) { document.querySelector('#bs-theme i.dark-theme').classList.remove('d-none'); }\n\n document.querySelector('#be-logo-white').classList.remove('d-none');\n document.querySelector('#be-logo-black').classList.add('d-none');\n\n element = document.querySelector('[data-bs-theme-value=\"dark\"]');\n el = document.querySelector('[data-bs-theme-value=\"light\"]');\n\n }\n\n if (el) { el.classList.remove('active'); }\n if (element) { element.classList.add('active'); }\n\n}\n\nfunction setUpBootstrap() {\n \n bootstrapTooltip();\n\n}"},5249(e){e.exports='class CustomHyperlink extends Hyperlink {\n iconSvg(name, width = 14, height = 14) {\n const svg = document.createElementNS(\'http://www.w3.org/2000/svg\', \'svg\');\n svg.classList.add(\'icon\', \'icon--\' + name);\n svg.setAttribute(\'width\', \'24\');\n svg.setAttribute(\'height\',\'24\');\n svg.setAttribute(\'viewBox\', \'0 0 24 24\')\n svg.setAttribute(\'fill\', \'none\');\n if (name == \'link\') {\n svg.innerHTML = `\n <path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M7.69998 12.6L7.67896 12.62C6.53993 13.7048 6.52012 15.5155 7.63516 16.625V16.625C8.72293 17.7073 10.4799 17.7102 11.5712 16.6314L13.0263 15.193C14.0703 14.1609 14.2141 12.525 13.3662 11.3266L13.22 11.12"></path><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M16.22 11.12L16.3564 10.9805C17.2895 10.0265 17.3478 8.5207 16.4914 7.49733V7.49733C15.5691 6.39509 13.9269 6.25143 12.8271 7.17675L11.3901 8.38588C10.0935 9.47674 9.95706 11.4241 11.0888 12.6852L11.12 12.72"></path>\n `;\n } else {\n svg.innerHTML = `\n <path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M15.7795 11.5C15.7795 11.5 16.053 11.1962 16.5497 10.6722C17.4442 9.72856 17.4701 8.2475 16.5781 7.30145V7.30145C15.6482 6.31522 14.0873 6.29227 13.1288 7.25073L11.8796 8.49999"></path><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M8.24517 12.3883C8.24517 12.3883 7.97171 12.6922 7.47504 13.2161C6.58051 14.1598 6.55467 15.6408 7.44666 16.5869V16.5869C8.37653 17.5731 9.93744 17.5961 10.8959 16.6376L12.1452 15.3883"></path><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M17.7802 15.1032L16.597 14.9422C16.0109 14.8624 15.4841 15.3059 15.4627 15.8969L15.4199 17.0818"></path><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M6.39064 9.03238L7.58432 9.06668C8.17551 9.08366 8.6522 8.58665 8.61056 7.99669L8.5271 6.81397"></path><line x1="12.1142" x2="11.7" y1="12.2" y2="11.7858" stroke="currentColor" stroke-linecap="round" stroke-width="2"></line>\n `;\n }\n return svg;\n }\n}\n\nclass CustomEmded extends Embed {\n \n static get toolbox() {\n return {\n title: \'Iframe\',\n icon: \'<svg width="20" height="20" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10 13a5 5 0 0 1 0-6M14 11a5 5 0 0 1 0 6"></path><line x1="14" y1="7" x2="14" y2="7"></line><line x1="10" y1="17" x2="10" y2="17"></line></svg>\'\n };\n }\n \n /**\n * Render Embed tool content\n *\n * @returns {HTMLElement}\n */\n render() {\n if (!this.data.service) {\n const container = document.createElement(\'div\');\n \n this.element = container;\n const input = document.createElement(\'input\');\n input.classList.add(\'cdx-input\');\n input.placeholder = \'https://www.youtube.com/watch?v=w8vsuOXZBXc\';\n input.type = \'url\';\n input.addEventListener(\'paste\', (event) => {\n const url = event.clipboardData.getData(\'text\');\n const service = Object.keys(Embed.services).find((key) => Embed.services[key].regex.test(url));\n if (service) {\n this.onPaste({detail: {key: service, data: url}});\n }\n });\n container.appendChild(input);\n \n return container;\n }\n return super.render();\n }\n \n validate(savedData) {\n return savedData.service && savedData.source ? true : false;\n }\n}\n\nclass CustomVideoTool extends VideoTool {\n \n static get toolbox() {\n return {\n title: \'Video\',\n icon: \'<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M10 10.5606V13.4394C10 14.4777 11.1572 15.0971 12.0211 14.5211L14.1803 13.0817C14.9536 12.5661 14.9503 11.4317 14.18 10.9181L12.0214 9.47907C11.1591 8.9042 10 9.5203 10 10.5606Z" stroke="black" stroke-width="2"/><rect x="5" y="5" width="14" height="14" rx="4" stroke="black" stroke-width="2"/></svg>\'\n };\n }\n \n}\n\nvar EDITORJS_TOOLS_BLOG = {\n paragraph: {\n inlineToolbar: true,\n tunes: [\'textAlign\']\n },\n header: {\n class: Header,\n inlineToolbar: true,\n tunes: [\'textAlign\'],\n config: {\n placeholder: \'Titolo...\',\n levels: [1, 2, 4],\n defaultLevel: 2\n }\n },\n quote: {\n class: Quote,\n inlineToolbar: true,\n config: {\n quotePlaceholder: \'Scrivi una citazione...\',\n captionPlaceholder: \'Autore\',\n },\n },\n list: {\n class: NestedList,\n inlineToolbar: true,\n config: {\n defaultStyle: \'unordered\'\n },\n },\n delimiter: Delimiter,\n table: {\n class: Table,\n inlineToolbar: [\'link\', \'italic\', \'bold\'],\n },\n // code: CodeTool,\n image: {\n class: ImageTool,\n config: {\n captionPlaceholder: \'Caption...\',\n endpoints: {\n byFile: pathApp+\'/api/backend/editorjs/image.php\'\n // Aggiungere cartella dove caricare i file\n },\n field: \'image\',\n types: \'image/png, image/jpg, image/jpeg\',\n additionalRequestHeaders: { dir: \'\' }\n // Forzo nel css la rimozione "display: none" di withBorder, stretched e withBackground\n }\n },\n gallery: {\n class: ImageGallery,\n config: {\n captionPlaceholder: \'Caption galleria...\',\n endpoints: {\n byFile: pathApp+\'/api/backend/editorjs/image.php\'\n // Aggiungere cartella dove caricare i file\n },\n field: \'image\',\n types: \'image/png, image/jpg, image/jpeg\',\n additionalRequestHeaders: { dir: \'\' }\n // Forzo nel css la rimozione "display: none" di fit e slider\n },\n },\n Marker: Marker,\n inlineCode: InlineCode,\n attaches: {\n class: AttachesTool,\n config: {\n endpoint: pathApp+\'/api/backend/editorjs/file.php\',\n // Aggiungere cartella dove caricare i file\n field: \'file\',\n additionalRequestHeaders: { dir: \'\' }\n }\n },\n // TODO: Aggiungi caricamento video (potrebbe tornare utile la classe ImageTool)\n // video: {\n // class: CustomVideoTool,\n // config: {\n // captionPlaceholder: \'Caption...\',\n // endpoints: {\n // byFile: pathSite+\'/api/task/article/file.php\'\n // },\n // player: {\n // controls: true,\n // autoplay: false,\n // },\n // field: \'file\',\n // types: \'video/quicktime, video/mp4\'\n // // Forzo nel css la rimozione "display: none" di withBorder, stretched e withBackground\n // }\n // },\n // TODO: embed non funziona. Trovare un modo per caricare iframe\n // embed: {\n // class: CustomEmded,\n // },\n textAlign: {\n class: AlignmentTuneTool,\n config:{\n default: "left"\n },\n },\n link: {\n class: CustomHyperlink,\n config: {\n shortcut: \'CMD+L\',\n target: \'_blank\',\n rel: \'nofollow\',\n availableTargets: [\'_blank\', \'_self\'],\n availableRels: [\'author\', \'noreferrer\'],\n validate: false,\n }\n },\n};\n\nvar EDITORJS_TOOLS_TABLE = {\n paragraph: false,\n inlineCode: InlineCode,\n table: {\n class: Table,\n inlineToolbar: [\'link\', \'italic\', \'bold\'],\n }\n};\n\nvar EDITORJS_i18n_IT = {\n messages: {\n ui: {\n "blockTunes": {\n "toggler": {\n "Click to tune": "Modifica",\n "or drag to move": "Trascina per muovere"\n },\n },\n "inlineToolbar": {\n "converter": {\n "Convert to": "Converti"\n }\n },\n "toolbar": {\n "toolbox": {\n "Add": "Aggiungi",\n }\n }\n },\n toolNames: {\n "Add": "Aggiungi",\n "Quote": "Citazione",\n "Delimiter": "Linea",\n "Text": "Testo",\n "Heading": "Titolo",\n "Table": "Tabella",\n "Code": "Codice",\n "List": "Elenco",\n "Bold": "Grassetto",\n "Italic": "Corsivo",\n "Marker": "Evidenzia",\n "InlineCode": "Codice",\n "TextAlign": "Allineamento",\n "Gallery": "Galleria",\n "Image": "Immagine",\n "Attachment": "Allega file",\n },\n tools: {\n "header": {\n "Heading 1": "Titolo grande",\n "Heading 2": "Titolo",\n "Heading 4": "Sottotitolo"\n },\n "link": {\n "Add a link": "Aggiungi link"\n },\n "code": {\n "Enter a code": "Inserisci codice",\n },\n "quote": {\n "Align Left": "Allinea a sinistra",\n "Align Center": "Allinea in centro",\n },\n "table": {\n "With headings": "Con intestazione",\n "Without headings": "Senza intestazione",\n "Add column to left": "Aggiungi colonna sinistra",\n "Add column to right": "Aggiungi colonna destra",\n "Add row above": "Aggiungi riga sopra",\n "Add row below": "Aggiungi riga sotto",\n "Delete column": "Elimina colonna",\n "Delete row": "Elimina riga",\n },\n "list": {\n "Ordered": "Elenco numerato",\n "Unordered": "Elenco puntato",\n },\n "gallery": {\n "Select an Image": "Seleziona immagini",\n },\n "image": {\n "Select an Image": "Seleziona immagine",\n },\n "video": {\n "Select an Video": "Seleziona video",\n },\n "attaches": {\n "Select file to upload": "Seleziona file da allegare",\n },\n },\n blockTunes: {\n "delete": {\n "Delete": "Elimina",\n "Click to delete": "Clicca per elimina"\n },\n "moveUp": {\n "Move up": "Su"\n },\n "moveDown": {\n "Move down": "Giù"\n }\n },\n }\n};'},3990(e){e.exports="function moveFile(selectorContainer, selectorData, action) {\n\n var link = pathApp+'/api/backend/file/move.php';\n\n var el = document.querySelector(selectorContainer+' '+selectorData);\n\n var table = el.dataset.wiDbTable;\n var column = el.dataset.wiDbColumn;\n var rowId = el.dataset.wiDbRow;\n var fileId = el.dataset.wiFileId;\n var oldPosition = Number(el.dataset.wiOrder);\n var nFile = el.dataset.wiNFile;\n\n $.ajax({\n type: \"POST\",\n url: link,\n data: { \n post: 'true',\n table: table,\n column: column,\n row_id: rowId,\n file_id: fileId,\n action: action\n },\n success: function (data) {\n \n if (action == 'up') {\n var newPosition = oldPosition - 1;\n } else if (action == 'down') {\n var newPosition = oldPosition + 1;\n }\n\n var file1 = document.querySelector(selectorContainer+' .wi-card-file.order-'+oldPosition);\n var file2 = document.querySelector(selectorContainer+' .wi-card-file.order-'+newPosition);\n\n file1.classList.remove('order-'+oldPosition);\n file1.classList.add('order-'+newPosition);\n file1.dataset.wiOrder = newPosition;\n file1.dataset.wiFileId = file2.dataset.wiFileId;\n\n file2.classList.remove('order-'+newPosition);\n file2.classList.add('order-'+oldPosition);\n file2.dataset.wiOrder = oldPosition;\n file2.dataset.wiFileId = fileId;\n\n // Sistema first e last\n firstLastFile(selectorContainer, nFile);\n \n },\n error: function (XMLHttpRequest) {\n ajaxRequestError(XMLHttpRequest);\n }\n }); \n\n}\n\nfunction deleteFile(selectorContainer, selectorData) {\n\n var el = document.querySelector(selectorContainer+' '+selectorData);\n\n var folder = el.dataset.wiFolder;\n var table = el.dataset.wiDbTable;\n var column = el.dataset.wiDbColumn;\n var rowId = el.dataset.wiDbRow;\n var fileId = el.dataset.wiFileId;\n\n var oldPosition = Number(el.dataset.wiOrder);\n var nFile = el.dataset.wiNFile;\n\n var fileName = el.dataset.wiFileName;\n\n var text = \"Sei sicuro di eliminare il file <b>\"+fileName+\"</b>?\";\n var link = pathApp+'/api/backend/file/delete.php?folder='+folder+'&table='+table+'&column='+column+'&row_id='+rowId+'&file_id='+fileId;\n\n var onSuccess = '{ \"function\" : \"removeFile\", \"parameters\": { \"container\" : \"'+selectorContainer+'\", \"data\" : \"'+selectorData+'\", \"nFile\" : \"'+nFile+'\", \"position\" : \"'+oldPosition+'\"} }';\n\n modal(text, link, 'ATTENZIONE', 'Elimina', 'danger', 'Chiudi', 'dark', onSuccess);\n\n}\n\nfunction removeFile(parameters) {\n\n var selectorContainer = parameters.container;\n var selectorData = parameters.data;\n var deletedFilePosition = Number(parameters.position);\n var maxFile = Number(parameters.maxFile);\n var old_nFile = Number(parameters.nFile);\n const real_nFile = old_nFile - 1;\n\n document.querySelector(selectorContainer+' '+selectorData).remove();\n\n document.querySelectorAll(selectorContainer+' .wi-card-file').forEach(element => {\n\n var filePosition = Number(element.dataset.wiOrder);\n element.dataset.wiNFile = real_nFile;\n\n if (filePosition > deletedFilePosition) {\n\n var newPosition = filePosition - 1;\n var newId = newPosition - 1;\n\n element.dataset.wiOrder = newPosition;\n element.classList.remove('order-'+filePosition);\n element.classList.add('order-'+newPosition);\n\n element.dataset.wiFileId = newId;\n\n }\n\n });\n\n\n var maxFile = document.querySelector(selectorContainer+' input').dataset.wiMaxFile;\n\n if (maxFile > real_nFile) {\n document.querySelector(selectorContainer+' input').disabled = false;\n }\n\n firstLastFile(selectorContainer, real_nFile);\n\n $('#modal').modal('hide');\n\n}\n\nfunction firstLastFile(selectorContainer, nFile) {\n\n if (document.querySelectorAll(selectorContainer+' .wi-card-file').length > 0) {\n\n if (document.querySelector(selectorContainer+' .wi-card-file.wi-first-file')) {\n document.querySelector(selectorContainer+' .wi-card-file.wi-first-file').classList.remove('wi-first-file');\n }\n \n if (document.querySelector(selectorContainer+' .wi-card-file.wi-last-file')) {\n document.querySelector(selectorContainer+' .wi-card-file.wi-last-file').classList.remove('wi-last-file');\n }\n \n document.querySelector(selectorContainer+' .wi-card-file.order-1').classList.add('wi-first-file');\n document.querySelector(selectorContainer+' .wi-card-file.order-'+nFile).classList.add('wi-last-file');\n \n }\n\n}"},7418(e){e.exports="function check() {\n \n document.querySelectorAll(\"form button[type='submit'], form button.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 }\n\n var formElement = button.form;\n\n formElement.querySelectorAll(\".wi-checkbox-required, .wi-radio-required\").forEach(checkboxContainer => {\n\n if (checkboxContainer.closest('[data-wi-conditional-hidden=\"true\"]')) { return; }\n\n if (checkboxContainer.querySelectorAll(\"input[type='checkbox']:checked, input[type='radio']:checked\").length == 0) { button.setAttribute(\"disabled\", null); }\n\n });\n\n });\n\n}\n\nfunction lengthCount(event) {\n\n var val = event.target.value;\n var container = event.target.parentElement;\n\n if (container.querySelector('.wi-counter')) {\n container.querySelector('.wi-counter').innerHTML = val.length;\n }\n\n}\n\nfunction checkColor(event) {\n\n var val = event.target.value;\n var container = event.target.parentElement;\n\n if (val.includes('#')) {\n container.querySelector('.wi-show-color').style.color = val;\n } else {\n container.querySelector('.wi-show-color').style.color = 'rgba('+val+')';\n }\n \n}\n\nfunction generateCode(selector) {\n\n document.querySelector(selector).value = code();\n \n}\n\nfunction disableInput(type) {\n\n if (type == 'user') {\n var inputArray = document.querySelectorAll('input[name=name], input[name=surname], input[name=username], input[name=email], input[name=\"profile_picture[]\"], select[name=color], select[name=active]');\n }\n\n inputArray.forEach(element => {\n\n element.disabled = true;\n element.dataset.wiOldValue = element.value;\n element.dataset.wiOldRequired = element.required;\n \n element.value = '';\n element.required = false;\n\n }); \n\n}\n\nfunction enabledInput(type) {\n\n if (type == 'user') {\n var inputArray = document.querySelectorAll('input[name=name], input[name=surname], input[name=username], input[name=email], input[name=\"profile_picture[]\"], select[name=color], select[name=active]');\n }\n\n inputArray.forEach(element => {\n\n if (element.dataset.wiOldValue) {\n var wiOldValue = element.dataset.wiOldValue;\n } else {\n if (element.name == 'active') {\n var wiOldValue = \"true\";\n } else if (element.name == 'color') {\n var wiOldValue = \"blue\";\n } else {\n var wiOldValue = \"\";\n }\n }\n \n if (element.dataset.wiOldRequired) {\n var wiOldRequired = element.dataset.wiOldRequired;\n } else {\n var wiOldRequired = \"\";\n }\n \n element.disabled = false;\n element.value = wiOldValue;\n element.required = wiOldRequired;\n\n }); \n \n}\n\nfunction createCheckbox(array, element, container, checked = false) {\n\n var name = element.dataset.wiName;\n var attribute = element.dataset.wiAttribute;\n\n if (element.dataset.wiSearchRadio != undefined) {\n var type = \"radio\";\n } else if (element.dataset.wiSearchCheckbox != undefined) {\n var type = \"checkbox\";\n }\n\n var containerMaster = container.parentElement;\n var footer = containerMaster.querySelector('.card .card-footer');\n footer.innerHTML = 'Cerco...';\n\n try {\n\n const response = JSON.parse(array);\n const nResponse = response.length;\n \n var HTML_CHECKED = \"\";\n \n container.querySelectorAll('input:checked').forEach(el => {\n \n el.setAttribute('checked', true);\n HTML_CHECKED += \"<div class='form-check'>\"+el.parentElement.innerHTML+\"</div>\";\n \n });\n \n container.innerHTML = \"\";\n \n for (let index = 0; index < nResponse; index++) {\n \n var idCode = code();\n var HTML = \"\";\n var att = attribute;\n \n var value = response[index]['value'];\n var label = response[index]['label'];\n var inputValue = response[index]['input-value'];\n \n if (checked) { var att = attribute+\" checked\"; }\n \n if (HTML_CHECKED.search('value=\"'+value+'\"') == '-1') {\n \n HTML += \"<div class='form-check'>\";\n HTML += \"<input id='\"+idCode+\"' type='\"+type+\"' class='form-check-input' name='\"+name+\"' value='\"+value+\"' data-wi-check='true' \"+att+\" >\";\n HTML += \"<label class='form-check-label wi-check-label user-select-none' for='\"+idCode+\"'>\"+label+\"</label>\";\n HTML += \"</div>\";\n \n container.insertAdjacentHTML(\"beforeend\", HTML);\n \n }\n \n }\n\n container.insertAdjacentHTML(\"beforeend\", HTML_CHECKED);\n \n if (inputValue == '') {\n footer.innerHTML = \"Cerca risultati\";\n } else if (nResponse == 1) {\n footer.innerHTML = nResponse+\" risultato\";\n } else if (nResponse != 1) {\n footer.innerHTML = nResponse+\" risultati\";\n }\n \n } catch {\n\n console.log(array);\n footer.innerHTML = 'Errore nel file! Contatta assistenza';\n\n }\n\n}\n\nfunction inputSearch(event) {\n\n var inputText = event.target;\n\n var containerMaster = inputText.parentElement;\n var container = containerMaster.querySelector('.card .card-body');\n var footer = containerMaster.querySelector('.card .card-footer');\n\n var inputValue = inputText.value.toLowerCase();\n\n if (inputText.dataset.wiSearchUrl != undefined) {\n\n var url = inputText.dataset.wiSearchUrl;\n\n var footer = containerMaster.querySelector('.card .card-footer');\n footer.innerHTML = 'Cerco...';\n\n $.ajax({\n type: \"POST\",\n url: url,\n data: { \n post: 'true',\n search: inputValue\n }, \n success: function (data) {\n createCheckbox(data, inputText, container);\n checkInput();\n },\n error: function (XMLHttpRequest) {\n\n ajaxRequestError(XMLHttpRequest);\n footer.innerHTML = 'Errore! Riprova la ricerca.';\n\n }\n });\n \n } else {\n \n container.querySelectorAll('label.wi-check-label').forEach(element => {\n \n var container = element.parentElement;\n var name = element.innerHTML.toLowerCase();\n \n if (name.includes(inputValue)) {\n element.parentElement.style.display = 'block';\n } else if (container.querySelector('input').checked == false) {\n element.parentElement.style.display = 'none';\n }\n \n });\n\n }\n \n}\n\nfunction filterSelect(selectElement, dataName, value) {\n\n selectElement.querySelectorAll('option').forEach(option => {\n\n if (option.getAttribute('data-'+dataName)) {\n \n var filterValue = JSON.parse(option.getAttribute('data-'+dataName));\n\n if ((Array.isArray(filterValue) && filterValue.includes(value)) || filterValue == value) {\n\n option.disabled = false;\n option.hidden = false;\n\n } else {\n\n if (option.selected == true) {\n selectElement.value = \"\";\n }\n\n option.disabled = true;\n option.hidden = true;\n\n }\n\n }\n\n });\n \n}\n\nfunction createOptions( select, options ) {\n\n select.disabled = true;\n select.innerHTML = \"\";\n\n var selectAttribute = select.dataset.wiAttribute || '';\n var selectLabel = select.labels[0];\n\n var i = 0;\n\n for (var optionValue in options) {\n\n var optionLabel = options[optionValue];\n\n select[i] = new Option(optionLabel, optionValue);\n\n i++;\n\n }\n\n if (i === 0) {\n\n select.required = false;\n selectLabel.innerHTML = selectLabel.innerHTML.replace('*', '');\n\n } else {\n\n select.disabled = false;\n\n if (selectAttribute.indexOf('required') != '-1') { \n\n select.required = true;\n\n if (selectLabel.innerHTML.indexOf('*') == '-1') { \n selectLabel.innerHTML = selectLabel.innerHTML+'*' \n }\n\n }\n\n }\n\n}\n\nfunction inputError(input, error) {\n\n const container = input.closest('.form-floating, .input-group, .card').parentElement || input.parentElement;\n const feedback = container.querySelector('.invalid-feedback');\n \n if (feedback) {\n feedback.textContent = error;\n feedback.style.display = \"block\";\n }\n\n input.classList.add('is-invalid');\n input.setCustomValidity(error);\n\n}\n\nfunction removeInputError(input) {\n\n const container = input.closest('.form-floating, .input-group, .card').parentElement || input.parentElement;\n const feedback = container.querySelector('.invalid-feedback');\n \n if (feedback) {\n feedback.textContent = \"\";\n feedback.style.display = \"none\";\n }\n\n input.classList.remove('is-invalid');\n input.setCustomValidity(\"\");\n\n}\n"},9636(e){e.exports="function copyRow(container, element, callback) {\n\n element.querySelectorAll('input[type=\"file\"]').forEach(element => {\n\n FilePond.destroy(element.parentElement);\n\n });\n\n var copy = element.cloneNode(true);\n var position = container.childElementCount;\n var lineId = container.id+'_row_'+code(10);\n\n copy.id = lineId;\n copy.classList.remove('visually-hidden');\n copy.classList.add('wi-copy-row');\n copy.classList.add('order-'+position);\n\n if (copy.querySelector('input[name=\"position[]\"]')) {\n copy.querySelector('input[name=\"position[]\"]').value = position;\n }\n\n copy.querySelectorAll('[data-wi-attribute]').forEach(element => {\n\n var attribute = element.dataset.wiAttribute;\n\n if (attribute != '') {\n\n if (attribute.includes('required')) { element.required = true; }\n if (attribute.includes('disabled')) { element.disabled = true; }\n if (attribute.includes('readonly')) { element.readOnly = true; }\n if (attribute.includes('data-wi-sort-pos')) { \n element.dataset.wiSortPos = true; \n element.value = position;\n }\n\n }\n\n });\n\n // Inserisco la linea\n container.appendChild(copy);\n\n // Cambio gli Id degli input e li resetto\n var line = document.getElementById(lineId);\n line.querySelectorAll('input, select, textarea').forEach(element => {\n \n if (element.hasAttribute('data-select2-id')) { \n\n var c = element.parentElement;\n c.querySelector('span.select2').remove();\n \n $(element).select2('destroy');\n \n } else if (element.type == \"file\") {\n\n var name = element.name;\n element.name = name.replace(/-\\d+\\[\\]$/, `-${position}[]`);\n \n }\n\n element.id = 'input_'+code(10);\n\n });\n\n setInput(copy);\n checkInput();\n rowSetArrow(container);\n bootstrapTooltip();\n\n if (typeof callback === 'function') { callback(); }\n\n}\n\nfunction rowOrder(el1, action, callback) {\n\n var container = el1.parentElement;\n \n for (let a = 1; a < 100; a++) { \n \n var classEl1 = 'order-'+a;\n\n if(el1.classList.contains(classEl1)) {\n\n if (action == 'up') { var b = a - 1; } \n if (action == 'down') { var b = a + 1; }\n\n var classEl2 = 'order-'+b;\n\n var el2 = container.querySelector('.'+classEl2);\n\n rowChangePos(el1, a, b);\n rowChangePos(el2, b, a);\n\n rowSetArrow(container);\n\n break;\n\n }\n\n }\n\n if (typeof callback === 'function') { callback(); }\n\n}\n\nfunction rowChangePos(element, oldPosition, newPosition) {\n \n element.classList.remove('order-'+oldPosition);\n element.classList.add('order-'+newPosition);\n\n if (element.querySelector('[data-wi-sort-pos]')) {\n element.querySelector('[data-wi-sort-pos]').value = newPosition;\n } else if (element.querySelector('input[name=\"position[]\"]')) {\n element.querySelector('input[name=\"position[]\"]').value = newPosition;\n }\n \n}\n\nfunction rowRemoveModal(element, callback) {\n\n var container = element.parentElement;\n\n var text = 'Sei sicuro di voler eliminare questa linea?<br>Se <b>NON</b> salvi questa operazione non verrà effettuata!'\n modal(text, 'link');\n\n for (let a = 1; a < 100; a++) { \n\n var elementClass = 'order-'+a;\n if(element.classList.contains(elementClass)) { \n var orderN = a;\n break; \n }\n\n }\n\n var selector = '#'+container.id+' .'+elementClass;\n \n var onclick = 'rowRemove(\"'+selector+'\", \"'+orderN+'\")';\n if (typeof callback === 'function') { onclick += ';'+callback.name+'()'; }\n \n var sendBtn = document.querySelector('#modal button.send');\n sendBtn.setAttribute(\"onclick\", onclick);\n\n}\n\nfunction rowRemove(selector, nRow) {\n\n $('#modal').modal('hide');\n\n var element = document.querySelector(selector);\n var container = element.parentElement;\n var containerId = container.id;\n pageRemove(element);\n\n var rowStart = (nRow * 1) + 1;\n\n for (let a = rowStart; a < 100; a++) {\n\n var selector = '#'+containerId+' .order-'+a;\n\n if (document.querySelector(selector)) {\n var b = a - 1;\n rowChangePos(document.querySelector(selector), a, b);\n } else {\n break;\n }\n \n }\n\n rowSetArrow(container)\n\n}\n\nfunction rowSetArrow(container) {\n\n var nRow = document.querySelectorAll('#'+container.id+' .wi-copy-row').length;\n\n if (document.querySelector('#'+container.id+' .wi-copy-row.order-1 .wi-arrow-up') || document.querySelector('#'+container.id+' .wi-copy-row.order-1 .wi-arrow-down')) {\n\n if (nRow > 1) {\n\n for (let i = 1; i <= nRow; i++) {\n\n var arrowUp = document.querySelector('#'+container.id+' .wi-copy-row.order-'+i+' .wi-arrow-up');\n var arrowDown = document.querySelector('#'+container.id+' .wi-copy-row.order-'+i+' .wi-arrow-down');\n\n if (arrowUp.classList.contains('visually-hidden')) {\n arrowUp.classList.remove('visually-hidden');\n }\n\n if (arrowDown.classList.contains('visually-hidden')) {\n arrowDown.classList.remove('visually-hidden');\n }\n\n if (i == 1) {\n arrowUp.classList.add('visually-hidden');\n }\n\n if (i == nRow) {\n arrowDown.classList.add('visually-hidden');\n }\n \n }\n\n } else if (nRow == 1) {\n\n document.querySelector('#'+container.id+' .wi-copy-row.order-1 .wi-arrow-up').classList.add('visually-hidden');\n document.querySelector('#'+container.id+' .wi-copy-row.order-1 .wi-arrow-down').classList.add('visually-hidden');\n\n }\n\n }\n \n}"},1989(e){e.exports="function searchStates(inputCountry, stateValue = null) {\n\n var form = inputCountry.form;\n var inputCountryName = inputCountry.name;\n var inputStateName = inputCountry.dataset.wiInputState;\n var inputState = form.querySelector('select[name=\"'+inputStateName+'\"]');\n\n inputState.disabled = true;\n inputState.value = \"\";\n\n delay(100).then(() => {\n\n if (form.querySelector('select[name=\"'+inputCountryName+'\"]').value != null) {\n\n var country = form.querySelector('select[name=\"'+inputCountryName+'\"]').value;\n\n if (inputState.dataset.wiListStates != country) {\n \n inputState.dataset.wiListStates = country;\n\n loadingSpinner();\n\n $.ajax({\n type: \"POST\",\n url: pathApp+'/api/states.php',\n data: { \n post: 'true',\n country: country\n }, \n success: function (data) {\n\n createOptions(inputState, JSON.parse(data));\n loadingSpinner();\n\n },\n error: function (XMLHttpRequest) {\n\n ajaxRequestError(XMLHttpRequest);\n loadingSpinner();\n\n }\n });\n\n } else {\n\n inputState.disabled = false;\n \n }\n\n }\n\n });\n\n}\n"},9198(e){e.exports="async function formUpload(form, url, responseFunction = null) {\n \n var formData = new FormData(form);\n formData.append('post', 'true');\n\n await postData(url, formData).then((data) => {\n \n if (data != false) {\n if (typeof responseFunction === 'function') { responseFunction(data); }\n }\n\n });\n\n}"},1826(e){e.exports="// Sanitizza l'HTML del rich text editor (Quill) per prevenire XSS.\n// Quill 2.0.3 non valida l'HTML in input/export: DOMPurify rimuove script,\n// gestori di eventi e URI pericolosi mantenendo la formattazione consentita.\nfunction wiSanitizeHtml(html) {\n\n if (html == null) { return ''; }\n\n if (typeof window.DOMPurify !== 'undefined') {\n\n return window.DOMPurify.sanitize(html, {\n ALLOWED_TAGS: ['p', 'br', 'span', 'strong', 'b', 'em', 'i', 'u', 's', 'strike', 'del', 'ol', 'ul', 'li', 'a', 'blockquote'],\n ALLOWED_ATTR: ['href', 'target', 'rel', 'class']\n });\n\n }\n\n // Fallback fail-closed: se DOMPurify non è disponibile, rimuove ogni markup.\n var tmp = document.createElement('div');\n tmp.textContent = html;\n return tmp.innerHTML;\n\n}\n\nfunction setSearchInput(CONTAINER) {\n\n CONTAINER.querySelectorAll(\"[data-wi-search='true']\").forEach(element => {\n\n element.addEventListener(\"keyup\", inputSearch);\n element.addEventListener(\"change\", lengthCount);\n element.addEventListener(\"focusin\", lengthCount);\n element.addEventListener(\"focusout\", lengthCount);\n\n if (element.dataset.wiSearchUrl != undefined) { setDynamicSearch(element); }\n\n });\n \n}\n\nfunction setDynamicSearch(element) {\n\n var dataValue = element.dataset.wiValue;\n var containerMaster = element.parentElement;\n var container = containerMaster.querySelector('.card .card-body');\n var footer = containerMaster.querySelector('.card .card-footer');\n\n container.innerHTML = \"\";\n\n if (dataValue != '') {\n\n var value = dataValue;\n var url = element.dataset.wiSearchUrl;\n\n $.ajax({\n type: \"POST\",\n url: url,\n data: { \n post: 'true',\n id: value\n }, \n success: function (data) {\n createCheckbox(data, element, container, true);\n checkInput();\n },\n error: function (XMLHttpRequest) {\n\n ajaxRequestError(XMLHttpRequest);\n footer.innerHTML = 'Errore!';\n\n }\n });\n \n }\n\n}\n\nfunction setUploader(CONTAINER) {\n\n CONTAINER.querySelectorAll(\"[data-wi-uploader]\").forEach(uploader => {\n\n var id = uploader.id;\n var type = uploader.dataset.wiUploader;\n var dir = uploader.dataset.wiDir;\n var value = uploader.dataset.wiValue;\n var label = uploader.dataset.wiUploaderLabel;\n var maxSize = uploader.dataset.maxFileSize;\n var maxFiles = uploader.dataset.maxFiles;\n var sizeBefore = uploader.dataset.sizeBefore;\n var minSizeImage = uploader.dataset.minSizeImage;\n var accept = uploader.accept;\n\n if (accept === '' || accept === '*') {\n var validation = false;\n } else {\n var validation = true;\n }\n\n var files = [];\n \n if (value != \"\") {\n\n var value = JSON.parse(value);\n \n value.forEach(file => {\n\n var linkDowload = dir+file;\n var linkPoster = linkDowload;\n\n if (minSizeImage != \"\") {\n if (sizeBefore) {\n linkPoster = dir + minSizeImage + '-' + file;\n } else {\n const lastDot = file.lastIndexOf('.');\n const extension = lastDot !== -1 ? file.slice(lastDot + 1) : '';\n const name = lastDot !== -1 ? file.slice(0, lastDot) : file;\n linkPoster = dir + name + '-' +minSizeImage + (extension ? '.' + extension : '');\n }\n }\n \n var source = {\n source: linkDowload\n };\n\n files.push(source);\n\n });\n\n }\n\n if (type == 'classic') {\n\n var pond = FilePond.create(uploader, {\n storeAsFile: true,\n allowReorder: true,\n labelIdle: `Trascina `+label+` o <span class=\"filepond--label-action\">Cerca</span>`,\n files: files,\n allowDownloadByUrl: true,\n allowImagePreview: true,\n imagePreviewMaxFileSize: '128KB',\n allowFileTypeValidation: validation,\n allowFileSizeValidation: maxSize == '' ? false : true,\n maxFileSize: maxSize,\n labelMaxFileSizeExceeded: `File troppo grande`,\n labelMaxFileSize: `Dimensioni massime file {filesize}`,\n maxFiles: maxFiles,\n instantUpload: false,\n onaddfile: () => { check(); },\n onremovefile: () => { check(); }\n });\n \n } else if (type == 'profile') {\n\n var pond = FilePond.create(uploader, {\n storeAsFile: true,\n labelIdle: `Trascina `+label+` o <span class=\"filepond--label-action\">Cerca</span>`,\n imageCropAspectRatio: '1:1',\n stylePanelLayout: 'compact circle',\n styleLoadIndicatorPosition: 'center bottom',\n styleButtonRemoveItemPosition: 'center bottom',\n files: files,\n allowDownloadByUrl: true,\n allowImagePreview: true,\n imagePreviewMaxFileSize: '128KB',\n allowFileTypeValidation: validation,\n allowFileSizeValidation: maxSize == '' ? false : true,\n maxFileSize: maxSize,\n labelMaxFileSizeExceeded: `File troppo grande`,\n labelMaxFileSize: `Dimensioni massime file {filesize}`,\n maxFiles: maxFiles,\n instantUpload: false,\n onaddfile: () => { check(); },\n onremovefile: () => { check(); }\n });\n \n }\n\n if (pond && uploader.dataset.wiFileReferences === 'true') {\n setUploaderFileReferences(pond, files, value);\n }\n\n });\n\n}\n\nfunction setUploaderFileReferences(pond, files, storedNames) {\n const form = pond.element.closest('form');\n if (!form) { return; }\n\n const stored = new Map(files.map((file, index) => [file.source, storedNames[index]]));\n const prepared = new Map();\n pond.on('preparefile', (item, output) => prepared.set(item.id, output));\n pond.on('removefile', (error, item) => { if (!error && item) prepared.delete(item.id); });\n const serialize = event => {\n if (!pond.element.isConnected || pond.disabled || pond.element.closest('fieldset:disabled')) { return; }\n\n const name = pond.name;\n const base = name.replace(/\\[\\]$/, '');\n const manifestName = base.endsWith(']')\n ? base.replace(/\\]$/, '__wi_files]')\n : base + '__wi_files';\n const manifest = [];\n let uploadIndex = 0;\n\n event.formData.delete(name);\n pond.getFiles().forEach(item => {\n if (stored.has(item.source)) {\n manifest.push(stored.get(item.source));\n } else {\n const file = prepared.get(item.id) || item.file;\n manifest.push(uploadIndex++);\n event.formData.append(name, file, file.name || item.file.name);\n }\n });\n event.formData.set(manifestName, JSON.stringify(manifest));\n };\n\n form.addEventListener('formdata', serialize);\n pond.on('destroy', () => form.removeEventListener('formdata', serialize));\n}\n\nfunction setTextarea(CONTAINER) {\n\n CONTAINER.querySelectorAll(\"[data-wi-textarea]\").forEach(textarea => {\n\n var container = textarea.parentElement;\n var type = textarea.dataset.wiTextarea;\n\n var textareaId = textarea.id;\n var textareaValue = atob(textarea.dataset.wiValue);\n\n // Creo l'editor\n var editorId = textareaId+'_editor';\n\n var editor = document.createElement(\"div\");\n editor.id = editorId;\n editor.classList.add('position-relative');\n editor.classList.add('float-start');\n editor.classList.add('w-100');\n editor.classList.add('h-auto');\n editor.classList.add('border');\n editor.style.maxHeight = '250px';\n\n if (type == 'base' || type == 'plus' || type == 'pro') {\n\n // Quill.js\n\n editor.classList.add('border-top-0');\n editor.classList.add('rounded-bottom');\n editor.classList.add('overflow-scroll');\n \n container.after(editor);\n\n var toolbarId = editorId+'_toolbar';\n\n if (type == 'base') {\n var option = [['bold', 'italic', 'underline', 'strike'], ['clean']];\n } else if (type == 'plus') {\n var option = [['bold', 'italic', 'underline', 'strike'], ['link'], ['clean']];\n } else if (type == 'pro') {\n var option = [['bold', 'italic', 'underline', 'strike'], ['link'], [{ list: 'ordered' }, { list: 'bullet' }], ['clean']];\n }\n\n new Quill('#'+editorId, {\n theme: 'snow',\n modules: {\n toolbar: option\n }\n }).on('text-change', (delta, oldDelta, source) => {\n textarea.value = wiSanitizeHtml(editor.innerHTML);\n });\n\n var col = container.parentElement;\n var toolbar = col.querySelector('.ql-toolbar');\n\n toolbar.id = toolbarId;\n toolbar.classList.add('position-relative');\n toolbar.classList.add('float-start');\n toolbar.classList.add('w-100');\n toolbar.classList.add('border');\n toolbar.classList.add('rounded-top');\n\n var editor = document.querySelector('#'+editorId+' .ql-editor');\n\n editor.innerHTML = wiSanitizeHtml(textareaValue.replace(\"'\", \"\\'\"));\n\n editor.addEventListener('keydown', () => { textarea.value = wiSanitizeHtml(editor.innerHTML); });\n editor.addEventListener('DOMNodeInserted', () => { textarea.value = wiSanitizeHtml(editor.innerHTML); });\n\n } else if (type == 'table' || type == 'blog') {\n\n // Editor.js\n\n EDITORJS_TOOLS_BLOG.image.config.additionalRequestHeaders.dir = textarea.dataset.wiFolder+'/images';\n EDITORJS_TOOLS_BLOG.gallery.config.additionalRequestHeaders.dir = textarea.dataset.wiFolder+'/images';\n EDITORJS_TOOLS_BLOG.attaches.config.additionalRequestHeaders.dir = textarea.dataset.wiFolder+'/files';\n\n editor.classList.add('wi-'+type);\n editor.classList.add('pt-3');\n editor.classList.add('rounded');\n editor.classList.add('overflow-scroll');\n\n container.after(editor);\n\n if (type == 'table') {\n \n if (textareaValue == null || textareaValue == '') {\n var data = '{\"blocks\":[{\"id\":\"O3rAzVD6s8\",\"type\":\"table\",\"data\":{\"withHeadings\":true,\"content\":[]}}]}';\n } else {\n var data = '{\"blocks\":'+textareaValue+'}';\n }\n\n var tools = EDITORJS_TOOLS_TABLE;\n\n } else if (type == 'blog') {\n\n editor.style.maxHeight = '500px';\n\n if (textareaValue == null || textareaValue == '') {\n var data = '{}';\n } else {\n var data = '{\"blocks\":'+textareaValue+'}';\n }\n\n var tools = EDITORJS_TOOLS_BLOG;\n \n }\n\n new EditorJS({\n tools: tools,\n holder: editorId, \n autofocus: false,\n data: JSON.parse(data),\n onChange: (api) => {\n\n api.saver.save().then((outputData) => {\n var editorValue = JSON.stringify(outputData.blocks);\n document.getElementById(textareaId).value = editorValue;\n }).catch((error) => {\n console.log('Saving failed: ', error)\n });\n\n },\n i18n: EDITORJS_i18n_IT\n });\n\n }\n\n });\n\n}\n\nfunction setJsTree(CONTAINER) {\n \n CONTAINER.querySelectorAll('[data-wi-tree]').forEach(element => {\n\n var container = element.parentElement;\n\n var type = element.dataset.wiTree;\n var searchBar = container.querySelector('[data-wi-search=\"true\"]');\n\n var Tree = $(element).jstree({\n core: {\n check_callback: false\n },\n checkbox : {\n keep_selected_style: false,\n three_state: false,\n },\n types : {\n default : {\n icon : \"bi bi-folder\"\n }\n },\n plugins : [ \"checkbox\", \"types\", \"search\" ]\n });\n\n Tree.jstree('open_all');\n\n if (searchBar != undefined) {\n $(searchBar).keyup(function () {\n var v = $(searchBar).val();\n $(Tree).jstree(true).search(v);\n });\n }\n\n $(element).on('click', '.jstree-anchor', function(e) {\n\n var selectedNodes = $(element).jstree().get_checked();\n\n container.querySelectorAll('input[type=\"checkbox\"]:checked').forEach(element => { element.checked = false; });\n\n if (type == 'radio') {\n\n if (selectedNodes.length > 1) {\n $(element).jstree().uncheck_node(selectedNodes[0]);\n }\n\n var selectedNodes = $(element).jstree().get_checked();\n\n }\n\n selectedNodes.forEach(element => { container.querySelector('input[value=\"'+element+'\"]').checked = true; });\n\n check();\n\n });\n\n });\n\n}\n\nfunction setCheckBoolean(CONTAINER) {\n \n CONTAINER.querySelectorAll('[data-wi-check-boolean]').forEach(element => {\n\n var inputTrue = element.querySelector('input.wi-true');\n var labelTrue = inputTrue.labels[0];\n var inputFalse = element.querySelector('input.wi-false');\n var labelFalse = inputFalse.labels[0];\n\n inputTrue.addEventListener(\"change\", (el) => {\n\n var checked = el.target.checked;\n\n if (checked) { \n inputFalse.checked = false; \n labelFalse.classList.remove('btn-primary'); \n labelTrue.classList.add('btn-primary'); \n } else {\n labelTrue.classList.remove('btn-primary'); \n }\n\n });\n\n inputFalse.addEventListener(\"change\", (el) => {\n\n var checked = el.target.checked;\n\n if (checked) { \n inputTrue.checked = false; \n labelTrue.classList.remove('btn-primary'); \n labelFalse.classList.add('btn-primary'); \n } else {\n labelFalse.classList.remove('btn-primary'); \n }\n\n });\n\n\n });\n\n}\n\nfunction setSelect2(CONTAINER) {\n \n CONTAINER.querySelectorAll('[data-wi-select-search]').forEach(element => {\n\n if ($(element).parents('.modal').length !== 0) {\n var parent = $(element).parents('.modal');\n } else {\n var parent = document.getElementById('content');\n }\n \n var multiple = (element.dataset.wiSelectSearchMultiple == 'true') ? true : false;\n\n $(element).select2({\n theme: 'bootstrap4',\n language: 'it',\n multiple: multiple,\n width: 'style',\n dropdownParent: parent,\n dropdownCssClass: 'card-body border dropdown-menu'\n }).on(\"change\", function(e) {\n\n check();\n\n if (element.dataset.wiInputCountry) { \n searchStates(element);\n }\n\n });\n\n });\n \n}\n\nfunction setInput(container = document) {\n\n setGoogleMapsApi();\n setSearchInput(container);\n setTextarea(container);\n setUploader(container);\n setJsTree(container);\n setCheckBoolean(container);\n setSelect2(container);\n setConditional(container);\n\n}\n"},9221(e){e.exports="function jqueryDaterange() {\n \n $('.wi-daterange-filter').datepicker({\n format: 'dd/mm/yyyy',\n language: 'it', \n orientation: 'bottom left'\n });\n\n}\n\nfunction setUpJquery() {\n \n jqueryDaterange();\n\n}"},7642(e){e.exports="function modal(text, link, title = 'ATTENZIONE', sendText = 'Elimina', sendColor = 'danger', closeText = 'Chiudi', closeColor = 'dark', onSuccess = 'reloadPage', params = null) {\n \n document.querySelector('#modal .modal-title').innerHTML = title;\n document.querySelector('#modal .modal-body').innerHTML = text;\n\n var sendBtn = document.querySelector('#modal button.send');\n sendBtn.innerHTML = sendText;\n sendBtn.classList.add('btn-'+sendColor);\n\n if (onSuccess == 'reloadPage') {\n \n sendBtn.setAttribute(\"onclick\", \"ajaxRequest('\"+link+\"')\");\n\n } else {\n \n if (typeof onSuccess === 'function') {\n sendBtn.setAttribute(\"onclick\", \"ajaxRequest('\"+link+\"', \"+onSuccess+\", '\"+params+\"')\");\n } else {\n sendBtn.setAttribute(\"onclick\", \"ajaxRequest('\"+link+\"', '\"+onSuccess+\"', '\"+params+\"')\");\n }\n\n }\n\n var closeBtn = document.querySelector('#modal button.close');\n closeBtn.innerHTML = closeText;\n closeBtn.classList.add('btn-'+closeColor);\n\n const modal = new bootstrap.Modal('#modal')\n modal.show();\n\n}"},5071(e){e.exports="function menu() { \n\n var el = document.getElementById('sidebar');\n el.classList.toggle(\"show\");\n\n var el = document.getElementById('menu');\n\n var iconMenu = el.querySelector('.open-menu');\n var iconClose = el.querySelector('.close-menu');\n\n if (iconMenu.classList.contains('d-none')) {\n\n // Chiudo il menu\n iconMenu.classList.remove('d-none');\n iconClose.classList.add('d-none');\n\n $('.offcanvas').offcanvas('hide');\n \n } else {\n\n // Apro il menu\n iconClose.classList.remove('d-none');\n iconMenu.classList.add('d-none');\n\n if (document.querySelector('#sidebar li.active [data-bs-target]')) {\n var offcanvasId = document.querySelector('#sidebar li.active [data-bs-target]').dataset.bsTarget;\n $(offcanvasId).offcanvas('show');\n }\n\n }\n \n}\n\nfunction loadingSpinner() {\n\n document.getElementById('loading-spinner').classList.toggle('d-none');\n \n}"},8882(e){e.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}'},6944(e){e.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}'},8197(e){e.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}"},1367(e){e.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'},7059(e){e.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}"},2700(e){e.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"},3883(e){e.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}'},6338(e){e.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'},8636(e){e.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}"},4642(e){e.exports=function(e){function n(e){"undefined"!=typeof console&&(console.error||console.log)("[Script Loader]",e)}try{"undefined"!=typeof execScript&&"undefined"!=typeof attachEvent&&"undefined"==typeof addEventListener?execScript(e):"undefined"!=typeof eval?eval.call(null,e):n("EvalError: No eval function available")}catch(e){n(e)}}},734(e,n,t){t(4642)(t(5285))},9196(e,n,t){t(4642)(t(4729))},9676(e,n,t){t(4642)(t(8553))},5328(e,n,t){t(4642)(t(5249))},4315(e,n,t){t(4642)(t(3990))},5545(e,n,t){t(4642)(t(7418))},8109(e,n,t){t(4642)(t(9636))},6225(e,n,t){t(4642)(t(1989))},2879(e,n,t){t(4642)(t(9198))},2981(e,n,t){t(4642)(t(1826))},2730(e,n,t){t(4642)(t(9221))},555(e,n,t){t(4642)(t(7642))},8258(e,n,t){t(4642)(t(5071))},9111(e,n,t){t(4642)(t(8882))},2347(e,n,t){t(4642)(t(6944))},8004(e,n,t){t(4642)(t(8197))},9118(e,n,t){t(4642)(t(1367))},550(e,n,t){t(4642)(t(7059))},3211(e,n,t){t(4642)(t(2700))},3286(e,n,t){t(4642)(t(3883))},4581(e,n,t){t(4642)(t(6338))},9899(e,n,t){t(4642)(t(8636))},767(){"use strict";function e(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,i=Array(n);t<n;t++)i[t]=e[t];return i}function n(n,t){return function(e){if(Array.isArray(e))return e}(n)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var i,r,a,o,l=[],s=!0,c=!1;try{if(a=(t=t.call(e)).next,0===n);else for(;!(s=(i=a.call(t)).done)&&(l.push(i.value),l.length!==n);s=!0);}catch(e){c=!0,r=e}finally{try{if(!s&&null!=t.return&&(o=t.return(),Object(o)!==o))return}finally{if(c)throw r}}return l}}(n,t)||function(n,t){if(n){if("string"==typeof n)return e(n,t);var i={}.toString.call(n).slice(8,-1);return"Object"===i&&n.constructor&&(i=n.constructor.name),"Map"===i||"Set"===i?Array.from(n):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?e(n,t):void 0}}(n,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}const t=Object.entries,i=Object.setPrototypeOf,r=Object.isFrozen,a=Object.getPrototypeOf,o=Object.getOwnPropertyDescriptor;let l=Object.freeze,s=Object.seal,c=Object.create,d="undefined"!=typeof Reflect&&Reflect,u=d.apply,p=d.construct;l||(l=function(e){return e}),s||(s=function(e){return e}),u||(u=function(e,n){for(var t=arguments.length,i=new Array(t>2?t-2:0),r=2;r<t;r++)i[r-2]=arguments[r];return e.apply(n,i)}),p||(p=function(e){for(var n=arguments.length,t=new Array(n>1?n-1:0),i=1;i<n;i++)t[i-1]=arguments[i];return new e(...t)});const m=N(Array.prototype.forEach),f=N(Array.prototype.lastIndexOf),h=N(Array.prototype.pop),g=N(Array.prototype.push),v=N(Array.prototype.splice),y=Array.isArray,b=N(String.prototype.toLowerCase),w=N(String.prototype.toString),S=N(String.prototype.match),E=N(String.prototype.replace),k=N(String.prototype.indexOf),T=N(String.prototype.trim),x=N(Number.prototype.toString),L=N(Boolean.prototype.toString),A="undefined"==typeof BigInt?null:N(BigInt.prototype.toString),C="undefined"==typeof Symbol?null:N(Symbol.prototype.toString),M=N(Object.prototype.hasOwnProperty),I=N(Object.prototype.toString),R=N(RegExp.prototype.test),O=(q=TypeError,function(){for(var e=arguments.length,n=new Array(e),t=0;t<e;t++)n[t]=arguments[t];return p(q,n)});var q;function N(e){return function(n){n instanceof RegExp&&(n.lastIndex=0);for(var t=arguments.length,i=new Array(t>1?t-1:0),r=1;r<t;r++)i[r-1]=arguments[r];return u(e,n,i)}}function P(e,n){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:b;if(i&&i(e,null),!y(n))return e;let a=n.length;for(;a--;){let i=n[a];if("string"==typeof i){const e=t(i);e!==i&&(r(n)||(n[a]=e),i=e)}e[i]=!0}return e}function D(e){for(let n=0;n<e.length;n++){M(e,n)||(e[n]=null)}return e}function _(e){const i=c(null);for(const a of t(e)){var r=n(a,2);const t=r[0],o=r[1];M(e,t)&&(y(o)?i[t]=D(o):o&&"object"==typeof o&&o.constructor===Object?i[t]=_(o):i[t]=o)}return i}function F(e,n){for(;null!==e;){const t=o(e,n);if(t){if(t.get)return N(t.get);if("function"==typeof t.value)return N(t.value)}e=a(e)}return function(){return null}}const z=l(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),H=l(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),V=l(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),B=l(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),U=l(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),j=l(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),$=l(["#text"]),G=l(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","command","commandfor","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns"]),W=l(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dominant-baseline","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","pointer-events","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-orientation","text-rendering","textlength","type","u1","u2","unicode","values","vector-effect","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),Y=l(["accent","accentunder","align","bevelled","close","columnalign","columnlines","columnspacing","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lquote","lspace","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),J=l(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),X=s(/{{[\w\W]*|^[\w\W]*}}/g),K=s(/<%[\w\W]*|^[\w\W]*%>/g),Z=s(/\${[\w\W]*/g),Q=s(/^data-[\-\w.\u00B7-\uFFFF]+$/),ee=s(/^aria-[\-\w]+$/),ne=s(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),te=s(/^(?:\w+script|data):/i),ie=s(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),re=s(/^html$/i),ae=s(/^[a-z][.\w]*(-[.\w]+)+$/i),oe=s(/<[/\w!]/g),le=s(/<[/\w]/g),se=s(/<\/no(script|embed|frames)/i),ce=s(/\/>/i),de=1,ue=3,pe=7,me=8,fe=9,he=11,ge=["style","script","xmp","iframe","noembed","noframes","plaintext","noscript"],ve=l(P({},ge)),ye=function(){const e={};return m(ge,n=>{e[n]=s(new RegExp("</"+n+"(?=[\\t\\n\\f\\r />])","i"))}),l(e)}(),be=function(){return"undefined"==typeof window?null:window},we=function(e,n,t,i){return M(e,n)&&y(e[n])?P(i.base?_(i.base):{},e[n],i.transform):t},Se=function(e,n,t){const i=M(e,n)?e[n]:void 0;return i&&"object"==typeof i?_(i):t()};var Ee=function e(){let n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:be();const i=n=>e(n);if(i.version="3.4.15",i.removed=[],!n||!n.document||n.document.nodeType!==fe||!n.Element)return i.isSupported=!1,i;let r=n.document;const a=r,o=a.currentScript;n.DocumentFragment;const d=n.HTMLTemplateElement,u=n.Node,p=n.Element,q=n.NodeFilter,N=n.NamedNodeMap;void 0===N&&(n.NamedNodeMap||n.MozNamedAttrMap),n.HTMLFormElement;const D=n.DOMParser,ge=n.trustedTypes,Ee=p.prototype,ke=F(Ee,"cloneNode"),Te=F(Ee,"remove"),xe=F(Ee,"removeAttributeNode"),Le=F(Ee,"nextSibling"),Ae=F(Ee,"childNodes"),Ce=F(Ee,"parentNode"),Me=F(Ee,"shadowRoot"),Ie=F(Ee,"attributes"),Re=u&&u.prototype?F(u.prototype,"nodeType"):null,Oe=u&&u.prototype?F(u.prototype,"nodeName"):null,qe=u&&u.prototype?F(u.prototype,"ownerDocument"):null,Ne=function(e){return Re?Re(e):e.nodeType},Pe=function(e){return Oe?Oe(e):e.nodeName};if("function"==typeof d){const e=r.createElement("template");e.content&&e.content.ownerDocument&&(r=e.content.ownerDocument)}let De,_e,Fe="",ze=!1,He=0;const Ve=function(){if(He>0)throw O('A configured TRUSTED_TYPES_POLICY callback (createHTML or createScriptURL) must not call DOMPurify.sanitize, as that causes infinite recursion. Do not pass a policy whose callbacks wrap DOMPurify as TRUSTED_TYPES_POLICY; see the "DOMPurify and Trusted Types" section of the README.')},Be=function(e){Ve(),He++;try{return De.createHTML(e)}finally{He--}},Ue=function(){return ze||(_e=function(e,n){if("object"!=typeof e||"function"!=typeof e.createPolicy)return null;let t=null;const i="data-tt-policy-suffix";n&&n.hasAttribute(i)&&(t=n.getAttribute(i));const r="dompurify"+(t?"#"+t:"");try{return e.createPolicy(r,{createHTML:e=>e,createScriptURL:e=>e})}catch(e){return console.warn("TrustedTypes policy "+r+" could not be created."),null}}(ge,o),ze=!0),_e},je=r,$e=je.implementation,Ge=je.createNodeIterator,We=je.createDocumentFragment,Ye=je.getElementsByTagName,Je=a.importNode;let Xe={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]};i.isSupported="function"==typeof t&&"function"==typeof Ce&&$e&&void 0!==$e.createHTMLDocument;const Ke=X,Ze=K,Qe=Z,en=Q,nn=ee,tn=te,rn=ie,an=ae;let on=ne,ln=null;const sn=P({},[...z,...H,...V,...U,...$]);let cn=null;const dn=P({},[...G,...W,...Y,...J]);let un=Object.seal(c(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),pn=null,mn=null;const fn=Object.seal(c(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}}));let hn=!0,gn=!0,vn=!1,yn=!0,bn=!1,wn=!0,Sn=!1,En=!1,kn=null,Tn=null,xn=!1,Ln=!1,An=!1,Cn=!1,Mn=!0,In=!1;const Rn="user-content-";let On=!0,qn=!1,Nn={},Pn=null;const Dn=P({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","selectedcontent","style","svg","template","thead","title","video","xmp"]);let _n=null;const Fn=P({},["audio","video","img","source","image","track"]);let zn=null;const Hn=P({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Vn="http://www.w3.org/1998/Math/MathML",Bn="http://www.w3.org/2000/svg",Un="http://www.w3.org/1999/xhtml";let jn=Un,$n=!1,Gn=null;const Wn=P({},[Vn,Bn,Un],w),Yn=l(["mi","mo","mn","ms","mtext"]);let Jn=P({},Yn);const Xn=l(["annotation-xml"]);let Kn=P({},Xn);const Zn=P({},["title","style","font","a","script"]);let Qn=null;const et=["application/xhtml+xml","text/html"];let nt=null,tt=null;const it=r.createElement("form"),rt=function(e){return e instanceof RegExp||e instanceof Function},at=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(tt&&tt===e)return;e&&"object"==typeof e||(e={}),e=_(e),Qn=-1===et.indexOf(e.PARSER_MEDIA_TYPE)?"text/html":e.PARSER_MEDIA_TYPE,nt="application/xhtml+xml"===Qn?w:b,ln=we(e,"ALLOWED_TAGS",sn,{transform:nt}),cn=we(e,"ALLOWED_ATTR",dn,{transform:nt}),Gn=we(e,"ALLOWED_NAMESPACES",Wn,{transform:w}),zn=we(e,"ADD_URI_SAFE_ATTR",Hn,{transform:nt,base:Hn}),_n=we(e,"ADD_DATA_URI_TAGS",Fn,{transform:nt,base:Fn}),Pn=we(e,"FORBID_CONTENTS",Dn,{transform:nt}),pn=we(e,"FORBID_TAGS",_({}),{transform:nt}),mn=we(e,"FORBID_ATTR",_({}),{transform:nt}),Nn=!!M(e,"USE_PROFILES")&&(e.USE_PROFILES&&"object"==typeof e.USE_PROFILES?_(e.USE_PROFILES):e.USE_PROFILES),hn=!1!==e.ALLOW_ARIA_ATTR,gn=!1!==e.ALLOW_DATA_ATTR,vn=e.ALLOW_UNKNOWN_PROTOCOLS||!1,yn=!1!==e.ALLOW_SELF_CLOSE_IN_ATTR,bn=e.SAFE_FOR_TEMPLATES||!1,wn=!1!==e.SAFE_FOR_XML,Sn=e.WHOLE_DOCUMENT||!1,Ln=e.RETURN_DOM||!1,An=e.RETURN_DOM_FRAGMENT||!1,Cn=e.RETURN_TRUSTED_TYPE||!1,xn=e.FORCE_BODY||!1,Mn=!1!==e.SANITIZE_DOM,In=e.SANITIZE_NAMED_PROPS||!1,On=!1!==e.KEEP_CONTENT,qn=e.IN_PLACE||!1,on=function(e){try{return R(e,""),!0}catch(e){return!1}}(e.ALLOWED_URI_REGEXP)?e.ALLOWED_URI_REGEXP:ne,jn="string"==typeof e.NAMESPACE?e.NAMESPACE:Un,Jn=Se(e,"MATHML_TEXT_INTEGRATION_POINTS",()=>P({},Yn)),Kn=Se(e,"HTML_INTEGRATION_POINTS",()=>P({},Xn));const n=Se(e,"CUSTOM_ELEMENT_HANDLING",()=>c(null));if(un=c(null),M(n,"tagNameCheck")&&rt(n.tagNameCheck)&&(un.tagNameCheck=n.tagNameCheck),M(n,"attributeNameCheck")&&rt(n.attributeNameCheck)&&(un.attributeNameCheck=n.attributeNameCheck),M(n,"allowCustomizedBuiltInElements")&&"boolean"==typeof n.allowCustomizedBuiltInElements&&(un.allowCustomizedBuiltInElements=n.allowCustomizedBuiltInElements),s(un),bn&&(gn=!1),An&&(Ln=!0),Nn&&(ln=P({},$),cn=c(null),!0===Nn.html&&(P(ln,z),P(cn,G)),!0===Nn.svg&&(P(ln,H),P(cn,W),P(cn,J)),!0===Nn.svgFilters&&(P(ln,V),P(cn,W),P(cn,J)),!0===Nn.mathMl&&(P(ln,U),P(cn,Y),P(cn,J))),fn.tagCheck=null,fn.attributeCheck=null,M(e,"ADD_TAGS")&&("function"==typeof e.ADD_TAGS?fn.tagCheck=e.ADD_TAGS:y(e.ADD_TAGS)&&(ln===sn&&(ln=_(ln)),P(ln,e.ADD_TAGS,nt))),M(e,"ADD_ATTR")&&("function"==typeof e.ADD_ATTR?fn.attributeCheck=e.ADD_ATTR:y(e.ADD_ATTR)&&(cn===dn&&(cn=_(cn)),P(cn,e.ADD_ATTR,nt))),M(e,"ADD_FORBID_CONTENTS")&&y(e.ADD_FORBID_CONTENTS)&&(Pn===Dn&&(Pn=_(Pn)),P(Pn,e.ADD_FORBID_CONTENTS,nt)),On&&(ln["#text"]=!0),Sn&&P(ln,["html","head","body"]),ln.table&&(P(ln,["tbody"]),delete pn.tbody),e.TRUSTED_TYPES_POLICY){if("function"!=typeof e.TRUSTED_TYPES_POLICY.createHTML)throw O('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if("function"!=typeof e.TRUSTED_TYPES_POLICY.createScriptURL)throw O('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');const n=De;De=e.TRUSTED_TYPES_POLICY;try{Fe=Be("")}catch(e){throw De=n,e}}else null===e.TRUSTED_TYPES_POLICY?(De=void 0,Fe=""):(void 0===De&&(De=Ue()),De&&"string"==typeof Fe&&(Fe=Be("")));l&&l(e),tt=e},ot=P({},[...H,...V,...B]),lt=P({},[...U,...j]),st=function(e){let n=Ce(e);n&&n.tagName||(n={namespaceURI:jn,tagName:"template"});const t=b(e.tagName),i=b(n.tagName);return!!Gn[e.namespaceURI]&&(e.namespaceURI===Bn?function(e,n,t){return n.namespaceURI===Un?"svg"===e:n.namespaceURI===Vn?"svg"===e&&("annotation-xml"===t||Jn[t]):Boolean(ot[e])}(t,n,i):e.namespaceURI===Vn?function(e,n,t){return n.namespaceURI===Un?"math"===e:n.namespaceURI===Bn?"math"===e&&Kn[t]:Boolean(lt[e])}(t,n,i):e.namespaceURI===Un?function(e,n,t){return!(n.namespaceURI===Bn&&!Kn[t])&&!(n.namespaceURI===Vn&&!Jn[t])&&!lt[e]&&(Zn[e]||!ot[e])}(t,n,i):!("application/xhtml+xml"!==Qn||!Gn[e.namespaceURI]))},ct=function(e){g(i.removed,{element:e});try{Ce(e).removeChild(e)}catch(n){if(Te(e),!Ce(e))throw O("a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place")}},dt=function(e,n,t){try{xe(e,n)}catch(n){try{e.removeAttribute(t)}catch(e){}}},ut=function(e){ft(e);const n=Ae(e);if(n){const e=[];m(n,n=>{g(e,n)}),m(e,e=>{try{Te(e)}catch(e){}})}const t=Ie(e);if(t)for(let n=t.length-1;n>=0;--n){const i=t[n],r=i&&i.name;"string"==typeof r&&dt(e,i,r)}},pt=function(e,n,t){if(!t)try{t=n.getAttributeNode(e)}catch(e){t=null}g(i.removed,{attribute:t||null,from:n});try{t?xe(n,t):n.removeAttribute(e)}catch(t){try{n.removeAttribute(e)}catch(e){}}if("is"===e)if(Ln||An)try{ct(n)}catch(e){}else try{n.setAttribute(e,"")}catch(e){}},mt=function(e){const n=Ie(e);if(n)for(let t=n.length-1;t>=0;--t){const i=n[t],r=i&&i.name;"string"!=typeof r||cn[nt(r)]||dt(e,i,r)}},ft=function(e){const n=[e];for(;n.length>0;){const e=n.pop();Ne(e)===de&&mt(e);const t=Ae(e);if(t)for(let e=t.length-1;e>=0;--e)n.push(t[e])}},ht=function(e,n){return!!wn&&("patchsrc"===e||"for"===e&&"label"!==n&&"output"!==n)},gt=function(e){let n=null,t=null;if(xn)e="<remove></remove>"+e;else{const n=S(e,/^[\r\n\t ]+/);t=n&&n[0]}"application/xhtml+xml"===Qn&&jn===Un&&(e='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+e+"</body></html>");const i=De?Be(e):e;if(jn===Un)try{n=(new D).parseFromString(i,Qn)}catch(e){}if(!n||!n.documentElement){n=$e.createDocument(jn,"template",null);try{n.documentElement.innerHTML=$n?Fe:i}catch(e){}}const a=n.body||n.documentElement;return e&&t&&a.insertBefore(r.createTextNode(t),a.childNodes[0]||null),jn===Un?Ye.call(n,Sn?"html":"body")[0]:Sn?n.documentElement:a},vt=function(e){const n=qe?qe(e):e.ownerDocument;return Ge.call(n||e,e,q.SHOW_ELEMENT|q.SHOW_COMMENT|q.SHOW_TEXT|q.SHOW_PROCESSING_INSTRUCTION|q.SHOW_CDATA_SECTION,null)},yt=function(e){return e=E(e,Ke," "),e=E(e,Ze," "),e=E(e,Qe," ")},bt=function(e){var n;e.normalize();const t=qe?qe(e):e.ownerDocument,i=Ge.call(t||e,e,q.SHOW_TEXT|q.SHOW_COMMENT|q.SHOW_CDATA_SECTION|q.SHOW_PROCESSING_INSTRUCTION,null);let r=i.nextNode();for(;r;)r.data=yt(r.data),r=i.nextNode();const a=null===(n=e.querySelectorAll)||void 0===n?void 0:n.call(e,"template");a&&m(a,e=>{St(e.content)&&bt(e.content)})},wt=function(e){const n=Oe?Oe(e):null;return"string"==typeof n&&("form"===nt(n)&&("string"!=typeof e.nodeName||"string"!=typeof e.textContent||"function"!=typeof e.removeChild||e.attributes!==Ie(e)||"function"!=typeof e.removeAttribute||"function"!=typeof e.removeAttributeNode||"function"!=typeof e.getAttributeNode||"function"!=typeof e.setAttribute||"string"!=typeof e.namespaceURI||"function"!=typeof e.insertBefore||"function"!=typeof e.hasChildNodes||e.nodeType!==Re(e)||e.childNodes!==Ae(e)))},St=function(e){if(!Re||"object"!=typeof e||null===e)return!1;try{return Re(e)===he}catch(e){return!1}},Et=function(e){if(!Re||"object"!=typeof e||null===e)return!1;try{return"number"==typeof Re(e)}catch(e){return!1}};function kt(e,n,t){0!==e.length&&m(e,e=>{e.call(i,n,t,tt)})}const Tt=function(e,n){if(e instanceof RegExp)return R(e,n);if(e instanceof Function){for(var t=arguments.length,i=new Array(t>2?t-2:0),r=2;r<t;r++)i[r-2]=arguments[r];return Boolean(e(n,...i))}return!1},xt=function(e,n,t,i){return 0===e.length?n:n===t||n===i?_(n):n},Lt=function(e,n){return e!==n&&null===Ce(e)&&(qn&&ft(e),!0)},At=function(e,n){if(kt(Xe.beforeSanitizeElements,e,null),Lt(e,n))return!0;if(wt(e))return ct(e),!0;const t=nt(Pe(e));if(ln=xt(Xe.uponSanitizeElement,ln,sn,kn),kt(Xe.uponSanitizeElement,e,{tagName:t,allowedTags:ln}),Lt(e,n))return!0;if(function(e,n){return!!(wn&&e.hasChildNodes()&&!Et(e.firstElementChild)&&R(oe,e.textContent)&&R(oe,e.innerHTML))||!!(wn&&e.namespaceURI===Un&&ve[n]&&(Et(e.firstElementChild)||"string"==typeof e.textContent&&R(ye[n],e.textContent)))||e.nodeType===pe||!(!wn||e.nodeType!==me||!R(le,e.data))}(e,t))return ct(e),!0;if(pn[t]||!(fn.tagCheck instanceof Function&&fn.tagCheck(t))&&!ln[t]){const i=function(e,n,t){if(!pn[n]&&It(n)&&Tt(un.tagNameCheck,n))return!1;if(On&&!Pn[n]){const n=Ce(e),i=Ae(e);if(i&&n)for(let r=i.length-1;r>=0;--r){const a=e===t?ke(i[r],!0):i[r];n.insertBefore(a,Le(e))}}return ct(e),!0}(e,t,n);return!1===i&&kt(Xe.afterSanitizeElements,e,null),i}if(Ne(e)===de&&!st(e))return ct(e),!0;if(("noscript"===t||"noembed"===t||"noframes"===t)&&R(se,e.innerHTML))return ct(e),!0;if(bn&&e.nodeType===ue){const n=yt(e.textContent);e.textContent!==n&&(g(i.removed,{element:e.cloneNode()}),e.textContent=n)}return kt(Xe.afterSanitizeElements,e,null),!1},Ct=function(e,n,t){if(mn[n])return!1;if(ht(n,e))return!1;if(Mn&&("id"===n||"name"===n)&&(t in r||t in it))return!1;const i=cn[n]||fn.attributeCheck instanceof Function&&fn.attributeCheck(n,e);return!(!gn||!R(en,n))||(!(!hn||!R(nn,n))||(i?!!zn[n]||(!!R(on,E(t,rn,""))||(!("src"!==n&&"xlink:href"!==n&&"href"!==n||"script"===e||0!==k(t,"data:")||!_n[e])||(!(!vn||R(tn,E(t,rn,"")))||!t))):It(e)&&Tt(un.tagNameCheck,e)&&Tt(un.attributeNameCheck,n,e)||"is"===n&&un.allowCustomizedBuiltInElements&&Tt(un.tagNameCheck,t)))},Mt=P({},["annotation-xml","color-profile","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","missing-glyph"]),It=function(e){return!Mt[b(e)]&&R(an,e)},Rt=function(e,n,t,i){if(De&&"object"==typeof ge&&"function"==typeof ge.getAttributeType&&!t)switch(ge.getAttributeType(e,n)){case"TrustedHTML":return Be(i);case"TrustedScriptURL":return function(e){Ve(),He++;try{return De.createScriptURL(e)}finally{He--}}(i)}return i},Ot=function(e,n,t,i){try{return t?e.setAttributeNS(t,n,i):e.setAttribute(n,i),!wt(e)||(ct(e),!1)}catch(t){return pt(n,e),!1}},qt=function(e){kt(Xe.beforeSanitizeAttributes,e,null);const n=e.attributes;if(!n||wt(e))return;cn=xt(Xe.uponSanitizeAttribute,cn,dn,Tn);const t={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:cn,forceKeepAttr:void 0};let r=n.length;const a=nt(e.nodeName);for(;r--;){const o=n[r],l=o.name,s=o.namespaceURI,c=o.value,d=nt(l),u=c;let p="value"===l?u:T(u),m=!1;if(t.attrName=d,t.attrValue=p,t.keepAttr=!0,t.forceKeepAttr=void 0,kt(Xe.uponSanitizeAttribute,e,t),p=t.attrValue,!In||"id"!==d&&"name"!==d||0===k(p,Rn)||(pt(l,e,o),p=Rn+p,m=!0),wn&&R(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,p))pt(l,e,o);else if("attributename"===d&&S(p,"href"))pt(l,e,o);else if(!t.forceKeepAttr)if(t.keepAttr)if(yn||!R(ce,p))if(bn&&(p=yt(p)),Ct(a,d,p)){if(p=Rt(a,d,s,p),p!==u){Ot(e,l,s,p)&&m&&h(i.removed)}}else pt(l,e,o);else pt(l,e,o);else pt(l,e,o)}kt(Xe.afterSanitizeAttributes,e,null)},Nt=function(e){let n=null;const t=vt(e);for(kt(Xe.beforeSanitizeShadowDOM,e,null);n=t.nextNode();)if(kt(Xe.uponSanitizeShadowNode,n,null),At(n,e),qt(n),St(n.content)&&Nt(n.content),Ne(n)===de){const e=Me(n);St(e)&&(Pt(e),Nt(e))}kt(Xe.afterSanitizeShadowDOM,e,null)},Pt=function(e){const n=[{node:e,shadow:null}];for(;n.length>0;){const e=n.pop();if(e.shadow){Nt(e.shadow);continue}const t=e.node,i=Ne(t)===de,r=Ae(t);if(r)for(let e=r.length-1;e>=0;--e)n.push({node:r[e],shadow:null});if(i){const e=Oe?Oe(t):null;if("string"==typeof e&&"template"===nt(e)){const e=t.content;St(e)&&n.push({node:e,shadow:null})}}if(i){const e=Me(t);St(e)&&n.push({node:null,shadow:e},{node:e,shadow:null})}}};return i.sanitize=function(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=null,r=null,o=null,l=null;if($n=!e,$n&&(e="\x3c!--\x3e"),"string"!=typeof e&&!Et(e)&&"string"!=typeof(e=function(e){switch(typeof e){case"string":return e;case"number":return x(e);case"boolean":return L(e);case"bigint":return A?A(e):"0";case"symbol":return C?C(e):"Symbol()";case"undefined":default:return I(e);case"function":case"object":{if(null===e)return I(e);const n=e,t=F(n,"toString");if("function"==typeof t){const e=t(n);return"string"==typeof e?e:I(e)}return I(e)}}}(e)))throw O("dirty is not a string, aborting");if(!i.isSupported)return e;En?(ln=kn,cn=Tn):at(n),(Xe.uponSanitizeElement.length>0||Xe.uponSanitizeAttribute.length>0)&&(ln=_(ln)),Xe.uponSanitizeAttribute.length>0&&(cn=_(cn)),i.removed=[];const s=qn&&"string"!=typeof e&&Et(e);if(s){!function(e){if(!wn)return;const n=[e];for(;n.length>0;){const e=n.pop(),t=Ne(e);if(t===pe||t===me&&R(le,e.data)){try{Te(e)}catch(e){}continue}if(t===de){const n=e,t=nt(Pe(e));try{n.hasAttribute&&n.hasAttribute("patchsrc")&&n.removeAttribute("patchsrc"),n.hasAttribute&&n.hasAttribute("for")&&ht("for",t)&&n.removeAttribute("for")}catch(e){}}const i=Ae(e);if(i)for(let e=i.length-1;e>=0;--e)n.push(i[e])}}(e);const n=Pe(e);if("string"==typeof n){const t=nt(n);if(!ln[t]||pn[t])throw ut(e),O("root node is forbidden and cannot be sanitized in-place")}if(wt(e))throw ut(e),O("root node is clobbered and cannot be sanitized in-place");try{Pt(e)}catch(n){throw ut(e),n}}else if(Et(e))t=gt("\x3c!----\x3e"),r=t.ownerDocument.importNode(e,!0),r.nodeType===de&&"BODY"===r.nodeName||"HTML"===r.nodeName?t=r:t.appendChild(r),Pt(t);else{if(!Ln&&!bn&&!Sn&&-1===e.indexOf("<"))return De&&Cn?Be(e):e;if(t=gt(e),!t)return Ln?null:Cn?Fe:""}t&&xn&&ct(t.firstChild);const c=s?e:t;try{const e=vt(c);for(;o=e.nextNode();)At(o,c),qt(o),St(o.content)&&Nt(o.content)}catch(n){throw s&&(ut(e),m(i.removed,e=>{e.element&&ft(e.element)})),n}if(s)return m(i.removed,e=>{e.element&&ft(e.element)}),bn&&bt(e),e;if(Ln){if(bn&&bt(t),An)for(l=We.call(t.ownerDocument);t.firstChild;)l.appendChild(t.firstChild);else l=t;return(cn.shadowroot||cn.shadowrootmode)&&(l=Je.call(a,l,!0)),l}let d=Sn?t.outerHTML:t.innerHTML;return Sn&&ln["!doctype"]&&t.ownerDocument&&t.ownerDocument.doctype&&t.ownerDocument.doctype.name&&R(re,t.ownerDocument.doctype.name)&&(d="<!DOCTYPE "+t.ownerDocument.doctype.name+">\n"+d),bn&&(d=yt(d)),De&&Cn?Be(d):d},i.setConfig=function(){at(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),En=!0,kn=ln,Tn=cn},i.clearConfig=function(){tt=null,En=!1,kn=null,Tn=null,De=_e,Fe=""},i.isValidAttribute=function(e,n,t){tt||at({});const i=nt(e),r=nt(n);return Ct(i,r,t)},i.addHook=function(e,n){"function"==typeof n&&M(Xe,e)&&g(Xe[e],n)},i.removeHook=function(e,n){if(M(Xe,e)){if(void 0!==n){const t=f(Xe[e],n);return-1===t?void 0:v(Xe[e],t,1)[0]}return h(Xe[e])}},i.removeHooks=function(e){M(Xe,e)&&(Xe[e]=[])},i.removeAllHooks=function(){Xe={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},i}();window.DOMPurify=Ee}};const n={};function t(i){const r=n[i];if(void 0!==r)return r.exports;const a=n[i]={exports:{}};return e[i](a,a.exports,t),a.exports}(()=>{"use strict";class e{static translations={};static defaultTranslations={};static get lang(){return document.documentElement.lang||"it"}static async init(e,n={}){this.translations=e,this.defaultTranslations=n}static get(e,n=[]){let t=this.getNestedValue(this.translations,e);return null==t&&(t=this.getNestedValue(this.defaultTranslations,e)),null==t?(console.error("Chiave di traduzione mancante: '"+e+"'"),e):(Array.isArray(n)&&n.length>0&&n.forEach((e,n)=>{t=t.replace(new RegExp("\\{"+n+"\\}","g"),e)}),t)}static getNestedValue(e,n){const t=n.split(".");let i=e;for(const e of t){if("object"!=typeof i||null===i||!(e in i))return null;i=i[e]}return i}}class n{constructor(e,n){this.baseUrl=e,this.token=n}async request(n,t={}){const i={Authorization:`Bearer ${this.token}`,"Accept-Language":e.lang,...t.headers};let r=t.body;r instanceof FormData||void 0===r||(i["Content-Type"]="application/json",r=JSON.stringify(r));const a=await fetch(`${this.baseUrl}${n}`,{...t,headers:i,body:r});let o;a.headers.get("content-type");try{o=await a.json()}catch{throw{success:!1,status:a.status,response:"Errore nel parsing della risposta"}}if(!o.success)throw o;return o}get(e){return this.request(e,{method:"GET"})}post(e,n){return this.request(e,{method:"POST",body:n})}put(e,n){return this.request(e,{method:"PUT",body:n})}delete(e){return this.request(e,{method:"DELETE"})}}class i{constructor(e,n={}){const{infoElement:t=null,exportElement:i=null,mapId:r=null,travelMode:a="DRIVING",onError:o=e=>alert(e)}=n;this.mapElement=e,this.infoElement=t,this.exportElement=i,this.mapId=r,this.travelMode=a,this.onError=o,this.map=null,this.directionsService=null,this.directionsRenderer=null,this.autocomplete=null,this.mapClickListener=null,this.editingEnabled=!1,this.routeEnabled=!1,this.advancedMarkers=[],this.inputElement=null,this.waypoints=[],this.markers=[],this.mapType="hybrid",this.labelsVisible=!1}getTravelMode(){return google.maps.TravelMode[this.travelMode]??google.maps.TravelMode.DRIVING}initBaseMap(e={}){const n={center:{lat:20,lng:0},zoom:2,mapTypeId:this.mapType,mapTypeControl:!1,zoomControl:!0,streetViewControl:!1,fullscreenControl:!1,...e};return this.mapId&&(n.mapId=this.mapId),this.map=new google.maps.Map(this.mapElement,n),this.updateMapStyle(),this.map}initMap(){this.initBaseMap()}enableEditing(){this.map||this.initBaseMap(),this.editingEnabled=!0,this.mapClickListener&&this.mapClickListener.remove(),this.mapClickListener=this.map.addListener("click",e=>this.addChangeableMarker(e.latLng))}disableEditing(){this.mapClickListener&&(this.mapClickListener.remove(),this.mapClickListener=null),this.editingEnabled=!1}enableRoute(e={}){const{suppressMarkers:n=!0,draggable:t=!1,preserveViewport:i=!1,recalc:r=!0}=e;this.map||this.initBaseMap(),this.directionsService||(this.directionsService=new google.maps.DirectionsService),this.directionsRenderer?(this.directionsRenderer.setMap(this.map),this.directionsRenderer.setOptions({suppressMarkers:n,draggable:t,preserveViewport:i})):this.directionsRenderer=new google.maps.DirectionsRenderer({map:this.map,suppressMarkers:n,draggable:t,preserveViewport:i}),this.routeEnabled=!0,r&&this.waypoints.length>=2&&this.calcRoute()}disableRoute(){this.routeEnabled=!1,this.directionsRenderer&&(this.directionsRenderer.set("directions",null),this.directionsRenderer.setMap(null))}enableAutocomplete(e){this.inputElement=e,this.autocomplete=new google.maps.places.Autocomplete(this.inputElement),this.autocomplete.bindTo("bounds",this.map),this.autocomplete.addListener("place_changed",()=>{const e=this.autocomplete.getPlace();e.geometry&&e.geometry.location?(this.inputElement.value="",this.map.panTo(e.geometry.location),this.map.setZoom(15),this.addChangeableMarker(e.geometry.location)):this.onError("Luogo non trovato")})}initReadOnlyMap(e){if(!Array.isArray(e)||e.length<2)return void console.warn("Percorso non valido o troppo corto.");this.initBaseMap({center:e[0],zoom:14,disableDefaultUI:!0,mapTypeId:this.mapType}),this.disableEditing(),this.enableRoute({preserveViewport:!0,recalc:!1});const n=e[0],t=e[e.length-1],i=e.slice(1,-1).map(e=>({location:e,stopover:!0}));this.directionsService.route({origin:n,destination:t,waypoints:i,travelMode:this.getTravelMode()},(e,i)=>{if("OK"===i){this.directionsRenderer.setDirections(e);const i=new google.maps.LatLngBounds;if(e.routes[0].overview_path.forEach(e=>i.extend(e)),this.map.fitBounds(i),google.maps.marker&&google.maps.marker.AdvancedMarkerElement&&google.maps.marker.PinElement){const e=new google.maps.marker.PinElement({glyphText:"A"});new google.maps.marker.AdvancedMarkerElement({position:n,map:this.map,content:e.element,title:"A"});const i=new google.maps.marker.PinElement({glyphText:"B"});new google.maps.marker.AdvancedMarkerElement({position:t,map:this.map,content:i.element,title:"B"})}else new google.maps.Marker({position:n,map:this.map,label:"A"}),new google.maps.Marker({position:t,map:this.map,label:"B"})}else this.onError("Errore nel calcolo del percorso: "+i)})}setMapType(e){this.mapType=e,this.updateMapStyle()}toggleLabels(){this.labelsVisible=!this.labelsVisible,this.updateMapStyle()}updateMapStyle(){this.map.setMapTypeId(this.mapType),this.mapId||(this.labelsVisible?this.map.setOptions({styles:null}):this.map.setOptions({styles:[{featureType:"all",elementType:"labels",stylers:[{visibility:"off"}]}]}))}fitBounds(e={}){if(!this.map)return;const{includeRoute:n=!0,includeMarkers:t=!0,includeAdvancedMarkers:i=!0,extraPoints:r=[],padding:a=40,minZoom:o=null,maxZoom:l=null}=e,s=new google.maps.LatLngBounds;let c=!1;const d=e=>{if(!e)return null;if("function"==typeof e.lat&&"function"==typeof e.lng)return e;if("function"==typeof e.getPosition)return e.getPosition();if(e.position){const n=e.position;if("function"==typeof n.lat&&"function"==typeof n.lng)return n;if("number"==typeof n.lat&&"number"==typeof n.lng)return new google.maps.LatLng(n.lat,n.lng)}return e.location?d(e.location):"number"==typeof e.lat&&"number"==typeof e.lng?new google.maps.LatLng(e.lat,e.lng):null},u=e=>{const n=d(e);n&&(s.extend(n),c=!0)};if(n&&this.directionsRenderer&&this.directionsRenderer.getDirections){const e=this.directionsRenderer.getDirections(),n=e?.routes?.[0];n?.overview_path?.length?n.overview_path.forEach(e=>u(e)):this.waypoints.length&&this.waypoints.forEach(e=>u(e.location))}else n&&this.waypoints.length&&this.waypoints.forEach(e=>u(e.location));if(t&&this.markers.forEach(e=>u(e)),i&&this.advancedMarkers.forEach(e=>u(e)),Array.isArray(r)&&r.forEach(e=>u(e)),c&&(this.map.fitBounds(s,a),null!==o||null!==l)){const e=this.map.addListener("idle",()=>{const n=this.map.getZoom();null!==o&&n<o&&this.map.setZoom(o),null!==l&&n>l&&this.map.setZoom(l),e.remove()})}}addAdvancedMarker(e,n,t,i,r){const a="function"==typeof r?r(i):null;if(google.maps.marker&&google.maps.marker.AdvancedMarkerElement){const i=new google.maps.marker.AdvancedMarkerElement({map:this.map,content:a,position:new google.maps.LatLng(e,n),title:t});return this.advancedMarkers.push(i),i}console.warn("AdvancedMarkerElement non disponibile, uso Marker standard.");const o=new google.maps.Marker({position:new google.maps.LatLng(e,n),map:this.map,title:t});return this.advancedMarkers.push(o),o}addMarker(e,n){return new google.maps.Marker({position:e,map:this.map,label:n})}addChangeableMarker(e){const n=(this.markers.length+1).toString(),t=this.addMarker(e,n);t.setDraggable(!0),t.addListener("dragend",()=>{this.updateWaypoints(),this.routeEnabled&&this.calcRoute()}),t.addListener("dblclick",()=>{t.setMap(null),this.markers=this.markers.filter(e=>e!==t),this.updateWaypoints(),this.routeEnabled&&this.calcRoute()}),this.markers.push(t),this.updateWaypoints(),this.routeEnabled&&this.markers.length>=2&&this.calcRoute()}updateWaypoints(){this.waypoints=this.markers.map(e=>({location:e.getPosition(),stopover:!0})),this.markers.forEach((e,n)=>e.setLabel((n+1).toString())),this.saveRoute()}calcRoute(){if(!this.routeEnabled||!this.directionsService||!this.directionsRenderer)return;if(this.waypoints.length<2)return;const e=this.waypoints[0].location,n=this.waypoints[this.waypoints.length-1].location,t=this.waypoints.slice(1,-1);this.directionsService.route({origin:e,destination:n,waypoints:t,travelMode:this.getTravelMode()},(e,n)=>{if("OK"===n){this.directionsRenderer.setDirections(e),this.showRouteInfo(e.routes[0].legs);const n=new google.maps.LatLngBounds;e.routes[0].overview_path.forEach(e=>n.extend(e)),this.map.fitBounds(n)}else this.onError("Errore nel calcolo del percorso: "+n)})}showRouteInfo(e){let n=0,t=0;e.forEach(e=>{n+=e.distance.value,t+=e.duration.value}),this.infoElement&&(this.infoElement.innerHTML=`<strong>Distanza:</strong> ${(n/1e3).toFixed(2)} km<br><strong>Tempo stimato:</strong> ${this.formatTime(t)}`)}formatTime(e){const n=Math.floor(e/60),t=Math.floor(n/60),i=n%60;return t>0?`${t}h ${i}min`:`${i}min`}resetMap(){this.markers.forEach(e=>e.setMap(null)),this.markers=[],this.waypoints=[],this.directionsRenderer&&this.directionsRenderer.set("directions",null),this.infoElement&&(this.infoElement.innerHTML="")}saveRoute(){const e=this.markers.map(e=>({lat:e.getPosition().lat(),lng:e.getPosition().lng()}));this.exportElement&&(this.exportElement.value=JSON.stringify(e,null,2))}loadRouteFromJSON(e){this.resetMap();JSON.parse(e).forEach(e=>this.addChangeableMarker(new google.maps.LatLng(e.lat,e.lng)))}}window.ApiClient=n,window.TranslationProvider=e,window.MapManager=i,window.MapNavigator=class{constructor(e){if(!(e&&e instanceof i))throw new Error("Devi passare una istanza valida di MapManager");this.mapManager=e,this.map=e.map,this.percorso=[],this.userMarker=null,this.watchId=null,this.previousPosition=null}init(e){this.stop(),this.percorso=e,this.mapManager.initReadOnlyMap(e),this.map=this.mapManager.map}start(){navigator.geolocation?this.watchId=navigator.geolocation.watchPosition(e=>this.updatePosition(e),e=>this.mapManager.onError("Errore nella geolocalizzazione: "+e.message),{enableHighAccuracy:!0,maximumAge:0,timeout:1e4}):this.mapManager.onError("Geolocalizzazione non supportata dal tuo browser.")}updatePosition(e){const n={lat:e.coords.latitude,lng:e.coords.longitude};let t=0;if(this.previousPosition&&(t=this.computeHeading(this.previousPosition,n)),this.userMarker){this.userMarker.setPosition(n);const e=this.userMarker.getIcon();e.rotation=t,this.userMarker.setIcon(e)}else this.map.setZoom(16),this.map.setCenter(n),this.userMarker=new google.maps.Marker({position:n,map:this.map,icon:{path:google.maps.SymbolPath.FORWARD_CLOSED_ARROW,scale:4,fillColor:"#007BFF",fillOpacity:1,strokeColor:"#fff",strokeWeight:1,rotation:t,anchor:new google.maps.Point(0,2)},title:"La tua posizione"});this.previousPosition=n}computeHeading(e,n){const t=e=>e*Math.PI/180,i=t(e.lat),r=t(e.lng),a=t(n.lat),o=t(n.lng)-r,l=Math.sin(o)*Math.cos(a),s=Math.cos(i)*Math.sin(a)-Math.sin(i)*Math.cos(a)*Math.cos(o),c=Math.atan2(l,s);return(180*c/Math.PI+360)%360}stop(){null!==this.watchId&&(navigator.geolocation.clearWatch(this.watchId),this.watchId=null),this.userMarker&&(this.userMarker.setMap(null),this.userMarker=null)}openInGoogleMaps(){if(!this.percorso||this.percorso.length<2)return void this.mapManager.onError("Percorso insufficiente per l'apertura in Google Maps.");const e=`${this.percorso[0].lat},${this.percorso[0].lng}`,n=`${this.percorso[this.percorso.length-1].lat},${this.percorso[this.percorso.length-1].lng}`,t=this.percorso.slice(1,-1).map(e=>`${e.lat},${e.lng}`).join("|"),i=new URL("https://www.google.com/maps/dir/");i.searchParams.set("api","1"),i.searchParams.set("origin",e),i.searchParams.set("destination",n),t&&i.searchParams.set("waypoints",t),i.searchParams.set("travelmode",{DRIVING:"driving",BICYCLING:"bicycling",WALKING:"walking",TRANSIT:"transit"}[this.mapManager.travelMode]??"driving"),window.open(i.toString(),"_blank")}},window.API_CLIENT=new n(pathSite+"/api",API_TOKEN),window.API_CLIENT_APP=window.API_CLIENT,window.__t=function(n,t=[]){return e.get(n,t)};t(767),t(8004),t(3286),t(550),t(9118),t(3211),t(4581),t(2347),t(9899),t(9111),t(8258),t(734),t(5328),t(5545),t(4315),t(2981),t(2879),t(8109),t(6225),t(9196),t(555),t(9676),t(2730);class r{modalText={add:{title:"Nuovo indirizzo"},modify:{title:"Modifica indirizzo"},delete:{title:"Elimina indirizzo",description:"Vuoi eliminare il seguente indirizzo:"}};constructor(e,n="address_",t=!1){this.container=e,this.prefix=n,this.required=t,this.container.querySelector('input[name="'+this.prefix+'id"]')&&(this.id=this.container.querySelector('input[name="'+this.prefix+'id"]')),this.name=this.container.querySelector('input[name="'+this.prefix+'name"]'),this.surname=this.container.querySelector('input[name="'+this.prefix+'surname"]'),this.country=this.container.querySelector('select[name="'+this.prefix+'country"]'),this.province=this.container.querySelector('select[name="'+this.prefix+'province"]'),this.cap=this.container.querySelector('input[name="'+this.prefix+'cap"]'),this.city=this.container.querySelector('input[name="'+this.prefix+'city"]'),this.street=this.container.querySelector('input[name="'+this.prefix+'street"]'),this.number=this.container.querySelector('input[name="'+this.prefix+'number"]'),this.phonePrefix=this.container.querySelector('select[name="'+this.prefix+'phone_prefix"]'),this.phone=this.container.querySelector('input[name="'+this.prefix+'phone"]'),this.container.querySelector('input[name="'+this.prefix+'more"]')&&(this.more=this.container.querySelector('input[name="'+this.prefix+'more"]'))}setForm(e){this.id.value=e.id,this.name.value=e.name,this.surname.value=e.surname,this.cap.value=e.cap,this.city.value=e.city,this.street.value=e.street,this.number.value=e.number,this.phone.value=e.phone,$(this.country).val(e.country).trigger("change"),delay(500).then(()=>{$(this.province).val(e.province).trigger("change")}),$(this.phonePrefix).val(e.phonePrefix).trigger("change"),this.initForm()}initForm(){this.required&&(setRequired(this.name,!0),setRequired(this.surname,!0),setRequired(this.country,!0),setRequired(this.province,!0),setRequired(this.cap,!0),setRequired(this.city,!0),setRequired(this.street,!0),setRequired(this.number,!0)),this.name.disabled=!1,this.surname.disabled=!1,this.phonePrefix.disabled=!1,this.phone.disabled=!1,this.country.disabled=!1,this.province.disabled=!1,this.cap.disabled=!1,this.city.disabled=!1,this.street.disabled=!1,this.number.disabled=!1,this.more&&(this.more.disabled=!1),check()}resetForm(e=!1){this.container.querySelectorAll("input, select").forEach(n=>{n.name.substring(0,this.prefix.length)==this.prefix&&(n.name==this.prefix+"country"?$(n).val("IT").trigger("change"):n.name==this.prefix+"phone_prefix"?$(n).val("+39").trigger("change"):n.value="",setRequired(n,!1),e&&(n.disabled=!0))}),check()}modalDelete(e,n){var t=document.querySelector("#"+this.prefix+"modal-delete");t.querySelector('input[name="'+this.prefix+'delete-id"]').value=e,t.querySelector(".modal-title").innerHTML=this.modalText.delete.title,t.querySelector(".modal-body .value").innerHTML=this.modalText.delete.description+"<br>"+n,new bootstrap.Modal(t).show()}modalForm(e="modify"){var n,t=document.querySelector("#"+this.prefix+"modal-form");new bootstrap.Modal(t).show(),"modify"==e?n=this.modalText.modify.title:"add"==e&&(n=this.modalText.add.title),t.querySelector(".modal-title").innerHTML=n,t.addEventListener("hidden.bs.modal",()=>{this.resetForm(!0)})}}window.Address=r,window.Billing=class extends r{modalText={add:{title:"Nuovi dati di fatturazione"},modify:{title:"Modifica dati di fatturazione"},delete:{title:"Elimina dati di fatturazione",description:"Vuoi eliminare i seguenti dati di fatturazione:"}};constructor(e,n="billing_",t=!1){super(e,n,t),this.container.querySelector('input[name="'+this.prefix+'type"]')?this.type=this.container.querySelector('input[name="'+this.prefix+'type"]'):this.type=this.container.querySelector('select[name="'+this.prefix+'type"]'),this.businessName=this.container.querySelector('input[name="'+this.prefix+'business_name"]'),this.cf=this.container.querySelector('input[name="'+this.prefix+'cf"]'),this.pi=this.container.querySelector('input[name="'+this.prefix+'pi"]'),this.sdi=this.container.querySelector('input[name="'+this.prefix+'sdi"]'),this.pec=this.container.querySelector('input[name="'+this.prefix+'pec"]')}initForm(){super.initForm(),this.type.disabled=!1,this.cf.disabled=!1,setRequired(this.type,!0),"business"==this.type.value?(this.businessName.parentElement.parentElement.classList.remove("d-none"),this.businessName.disabled=!1,console.log(this.businessName),this.pi.parentElement.parentElement.classList.remove("d-none"),this.pi.disabled=!1,this.sdi.parentElement.parentElement.classList.remove("d-none"),this.sdi.disabled=!1,this.pec.parentElement.parentElement.classList.remove("d-none"),this.pec.disabled=!1,this.name.parentElement.parentElement.classList.add("d-none"),this.name.disabled=!0,this.surname.parentElement.parentElement.classList.add("d-none"),this.surname.disabled=!0,this.required&&(setRequired(this.businessName,!0),setRequired(this.pi,!0),setRequired(this.cf,!1),setRequired(this.name,!1),setRequired(this.surname,!1))):"private"==this.type.value&&(this.name.parentElement.parentElement.classList.remove("d-none"),this.name.disabled=!1,this.surname.parentElement.parentElement.classList.remove("d-none"),this.surname.disabled=!1,this.businessName.parentElement.parentElement.classList.add("d-none"),this.businessName.disabled=!0,this.pi.parentElement.parentElement.classList.add("d-none"),this.pi.disabled=!0,this.sdi.parentElement.parentElement.classList.add("d-none"),this.sdi.disabled=!0,this.pec.parentElement.parentElement.classList.add("d-none"),this.pec.disabled=!0,this.required&&(setRequired(this.name,!0),setRequired(this.surname,!0),setRequired(this.cf,!0),setRequired(this.businessName,!1),setRequired(this.pi,!1))),check()}setForm(e){this.type.value=e.type,this.businessName.value=e.businessName,this.cf.value=e.cf,this.pi.value=e.pi,this.sdi.value=e.sdi,this.pec.value=e.pec,super.setForm(e)}resetForm(){this.container.querySelectorAll("input, select").forEach(e=>{e.name.substring(0,this.prefix.length)==this.prefix&&(e.name==this.prefix+"type"?e.value="private":e.name==this.prefix+"country"?$(e).val("IT").trigger("change"):e.name==this.prefix+"phone_prefix"?$(e).val("+39").trigger("change"):e.value="",setRequired(e,!1))}),check()}}})()})();
|
|
3
3
|
//# sourceMappingURL=head.js.map
|