UNPKG

csdsolutions-csdjs

Version:

Libreria per i progetti di CSD Solutions

1 lines 149 kB
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("$CSD",[],t):"object"==typeof exports?exports.$CSD=t():e.$CSD=t()}(this,(()=>(()=>{var e={529:(e,t,n)=>{"use strict";n.d(t,{default:()=>Le});var o={};n.r(o),n.d(o,{destroyBtn:()=>J,destroyFab:()=>D,getCheckboxValues:()=>s,getRadioValue:()=>l,initializeAccordion:()=>ge,initializeBtn:()=>Z,initializeCheckbox:()=>r,initializeConfirmDialog:()=>le,initializeCustomSelect:()=>j,initializeDatepickers:()=>V,initializeDropdown:()=>N,initializeEditor:()=>h,initializeFab:()=>k,initializeList:()=>ue,initializeMask:()=>B,initializeMenu:()=>ye,initializeModal:()=>ce,initializeNavigation:()=>se,initializeNumber:()=>O,initializeOTP:()=>H,initializePassword:()=>Q,initializePopover:()=>pe,initializeRadio:()=>d,initializeRange:()=>ae,initializeReorder:()=>T,initializeSearchbar:()=>K,initializeSegment:()=>Ce,initializeSidebar:()=>we,initializeSplitButton:()=>ie,initializeSplitter:()=>fe,initializeStepper:()=>he,initializeSubmenu:()=>De,initializeTab:()=>ve,initializeTextArea:()=>re,initializeToast:()=>de,initializeToggle:()=>G,initializeToggleButton:()=>X,initializeToolbar:()=>Se,showAccordion:()=>be});var a=n(831);function i(e){var t,n=e.closest(".csd-field").find(".csd-checkbox-input"),o=n.find(".csd-checkbox-input:checked"),a={type:"csd_change",action:"change",item:e,targetValue:e.attr("value"),totalItems:n.length,checkedItems:o.length,allChecked:n.length===o.length,allUnchecked:0===o.length,checkedValues:(t=[],o.each((function(){t.push($CSD(this).attr("value"))})),t)};e.trigger(a)}function r(e){var t=$CSD(e),n=t.attr("label")||"",o=t.attr("id")||"checkbox-"+Math.random().toString(36).substr(2,9),a=$CSD('<div class="csd-checkbox-wrapper"></div>'),r=$CSD('<div class="csd-checkbox"></div>'),s=$CSD('<input type="checkbox" class="csd-checkbox-input">').attr("id",o),c=$CSD('<div class="csd-checkbox-box"><ion-icon name="checkmark-sharp"></ion-icon></div>');t.elements[0].checked&&(s.elements[0].checked=!0),t.elements[0].disabled&&(s.elements[0].disabled=!0),t.attr("name")&&s.attr("name",t.attr("name")),t.attr("value")&&s.attr("value",t.attr("value"));var l=t.attr("class");if(l){var d=l.split(" ").filter((function(e){return"csd-checkbox"!==e})).join(" ");d&&s.addClass(d)}for(var u=t.elements[0],f=0;f<u.attributes.length;f++){var p=u.attributes[f];["type","class","id"].includes(p.name)||s.attr(p.name,p.value)}if(r.append(s),r.append(c),a.append(r),n){var h=$CSD('<label class="csd-checkbox-label"></label>').text(n).attr("for",o);a.append(h)}t.replaceWith(a),a.find(".csd-checkbox-label").on("click",(function(e){if(e.preventDefault(),e.stopPropagation(),!a.find(".csd-checkbox-input").prop("disabled")){var t=a.find(".csd-checkbox-input").prop("checked");a.find(".csd-checkbox-input").prop("checked",!t),i(a.find(".csd-checkbox-input"))}})),a.find(".csd-checkbox-box").on("click",(function(e){if(e.preventDefault(),!a.find(".csd-checkbox-input").prop("disabled")){var t=a.find(".csd-checkbox-input").prop("checked");a.find(".csd-checkbox-input").prop("checked",!t),i(a.find(".csd-checkbox-input"))}}))}function s(e){var t=[];return $CSD('.csd-checkbox-wrapper input[name="'.concat(e,'"]')).each((function(){var e=$CSD(this);t.push({value:e.val()||"on",checked:e.elements[0].checked,disabled:e.elements[0].disabled,label:e.closest(".csd-checkbox-wrapper").find(".csd-checkbox-label").text()})})),t}function c(e){var t=e.closest(".csd-field").find(".csd-radio-input"),n=t.find(".csd-radio-input:checked"),o={type:"csd_change",action:"change",item:e,targetValue:e.attr("value"),totalItems:t.length,selectedValue:n.length?n.attr("value"):null,selectedLabel:n.length?n.closest(".csd-radio-wrapper").find(".csd-radio-label").text():null,hasSelection:n.length>0};e.trigger(o)}function l(e){var t=[];return $CSD('.csd-radio-wrapper input[name="'.concat(e,'"]')).each((function(){var e=$CSD(this);t.push({value:e.val()||"on",checked:e.elements[0].checked,disabled:e.elements[0].disabled,label:e.closest(".csd-radio-wrapper").find(".csd-radio-label").text()})})),t}function d(e){var t=$CSD(e),n=t.attr("label")||"",o=t.attr("id")||"radio-"+Math.random().toString(36).substr(2,9),a=$CSD('<div class="csd-radio-wrapper"></div>'),i=$CSD('<div class="csd-radio"></div>'),r=$CSD('<input type="radio" class="csd-radio-input">').attr("id",o),s=$CSD('<div class="csd-radio-box"><div class="csd-radio-dot"></div></div>');t.elements[0].checked&&(r.elements[0].checked=!0),t.elements[0].disabled&&(r.elements[0].disabled=!0),t.attr("name")&&r.attr("name",t.attr("name")),t.attr("value")&&r.attr("value",t.attr("value"));var l=t.attr("class");if(l){var d=l.split(" ").filter((function(e){return"csd-radio"!==e})).join(" ");d&&r.addClass(d)}for(var u=t.elements[0],f=0;f<u.attributes.length;f++){var p=u.attributes[f];["type","class","id"].includes(p.name)||r.attr(p.name,p.value)}if(i.append(r),i.append(s),a.append(i),n){var h=$CSD('<label class="csd-radio-label"></label>').text(n).attr("for",o);a.append(h)}t.replaceWith(a),a.find(".csd-radio-label").on("click",(function(e){e.preventDefault(),e.stopPropagation(),a.find(".csd-radio-input").prop("disabled")||(a.find(".csd-radio-input").prop("checked",!0),c(a.find(".csd-radio-input")))})),a.find(".csd-radio-box").on("click",(function(e){e.preventDefault(),a.find(".csd-radio-input").prop("disabled")||(a.find(".csd-radio-input").prop("checked",!0),c(a.find(".csd-radio-input")))}))}function u(e){return u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},u(e)}function f(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return p(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?p(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0,a=function(){};return{s:a,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,r=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return r=e.done,e},e:function(e){s=!0,i=e},f:function(){try{r||null==n.return||n.return()}finally{if(s)throw i}}}}function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=Array(t);n<t;n++)o[n]=e[n];return o}function h(e){if(e&&!e.initialized){var t=$CSD(e),n=$CSD('<div class="csd-editor-container"></div>');t.wrap(n);var o=function(){var e=$CSD('<div class="csd-editor-menubar"></div>');return Object.keys(y).forEach((function(t){var n=$CSD('<div class="csd-editor-menu-item">\n <span>'.concat(t.charAt(0).toUpperCase()+t.slice(1),'</span>\n <div class="csd-editor-menu-dropdown">\n ').concat(y[t].map((function(e){return'\n <button type="button" data-action="'.concat(e.action,'">\n <i class="').concat(e.icon,'"></i>\n ').concat(e.label,"\n </button>\n ")})).join(""),"\n </div>\n </div>"));e.append(n)})),e}(),a=function(){var e=$CSD('<div class="csd-editor-toolbar"></div>');w.forEach((function(t){var n=$CSD('<div class="csd-editor-toolbar-group"></div>');t.forEach((function(e){var t=function(e){var t={undo:{icon:"fa-solid fa-rotate-left",title:"Undo (Ctrl+Z)",shortcut:"Ctrl+Z"},redo:{icon:"fa-solid fa-rotate-right",title:"Redo (Ctrl+Y)",shortcut:"Ctrl+Y"},cut:{icon:"fa-regular fa-scissors",title:"Cut (Ctrl+X)",shortcut:"Ctrl+X"},copy:{icon:"fa-regular fa-copy",title:"Copy (Ctrl+C)",shortcut:"Ctrl+C"},paste:{icon:"fa-regular fa-clipboard",title:"Paste (Ctrl+V)",shortcut:"Ctrl+V"},heading:{icon:"fa-solid fa-heading",title:"Heading",dropdown:!0},bold:{icon:"fa-solid fa-bold",title:"Bold (Ctrl+B)",shortcut:"Ctrl+B"},italic:{icon:"fa-solid fa-italic",title:"Italic (Ctrl+I)",shortcut:"Ctrl+I"},underline:{icon:"fa-solid fa-underline",title:"Underline (Ctrl+U)",shortcut:"Ctrl+U"},strikethrough:{icon:"fa-solid fa-strikethrough",title:"Strikethrough"},font:{icon:"fa-solid fa-font",title:"Font Family",dropdown:!0},fontSize:{icon:"fa-solid fa-text-height",title:"Font Size",dropdown:!0},textColor:{icon:"fa-solid fa-palette",title:"Text Color",dropdown:!0},backgroundColor:{icon:"fa-solid fa-fill",title:"Background Color",dropdown:!0},alignment:{icon:"fa-solid fa-align-justify",title:"Text Alignment",dropdown:!0},numberedList:{icon:"fa-solid fa-list-ol",title:"Numbered List (Ctrl+Shift+7)"},bulletedList:{icon:"fa-solid fa-list-ul",title:"Bulleted List (Ctrl+Shift+8)"},indent:{icon:"fa-solid fa-indent",title:"Increase Indent (Tab)"},outdent:{icon:"fa-solid fa-outdent",title:"Decrease Indent (Shift+Tab)"},link:{icon:"fa-solid fa-link",title:"Insert Link (Ctrl+K)",shortcut:"Ctrl+K"},image:{icon:"fa-regular fa-image",title:"Insert Image"},table:{icon:"fa-solid fa-table",title:"Insert Table"},specialCharacters:{icon:"fa-solid fa-s",title:"Special Characters"},pageBreak:{icon:"fa-solid fa-grip-lines",title:"Insert Page Break"},sourceEditing:{icon:"fa-solid fa-code",title:"Source Editing"}}[e];if(!t)return"";var n=t.title,o=$CSD('\n <button type="button" class="csd-editor-tool" data-command="'.concat(e,'">\n <i class="').concat(t.icon,'"></i>\n ').concat(t.dropdown?'<i class="fa-solid fa-chevron-down"></i>':"",'\n <span class="csd-editor-tooltip">').concat(n,"</span>\n </button>\n "));return o}(e);n.append(t)})),e.append(n)}));var t=function(){var e=$CSD('<div class="csd-editor-toolbar-mobile"></div>'),t=$CSD('<div class="csd-editor-toolbar-mobile-top"></div>'),n=$CSD('<div class="csd-editor-toolbar-group"></div>');n.append('\n <button class="csd-editor-tool" data-command="undo">\n <i class="fa-solid fa-rotate-left"></i>\n </button>\n <button class="csd-editor-tool" data-command="redo">\n <i class="fa-solid fa-rotate-right"></i>\n </button>\n <button class="csd-editor-tool" data-command="copy">\n <i class="fa-solid fa-copy"></i>\n </button>\n <button class="csd-editor-tool" data-command="paste">\n <i class="fa-solid fa-paste"></i>\n </button>\n ');var o=$CSD('\n <div class="csd-editor-toolbar-dropdown">\n <button class="csd-editor-tool">\n <i class="fa-solid fa-plus"></i>\n </button>\n <div class="csd-editor-toolbar-dropdown-menu">\n <button data-command="image"><i class="fa-regular fa-image"></i> Image</button>\n <button data-command="link"><i class="fa-solid fa-link"></i> Link</button>\n </div>\n </div>\n ');t.append(n),t.append(o);var a=$CSD('<div class="csd-editor-toolbar-mobile-bottom"></div>'),i=$CSD('<div class="csd-editor-toolbar-group"></div>');i.append('\n <button class="csd-editor-tool" data-command="bold" style="width: 100%; height: 100%;">\n <i class="fa-solid fa-bold" style="pointer-events: none;"></i>\n </button>\n <button class="csd-editor-tool" data-command="italic" style="width: 100%; height: 100%;">\n <i class="fa-solid fa-italic" style="pointer-events: none;"></i>\n </button>\n <button class="csd-editor-tool" data-command="underline" style="width: 100%; height: 100%;">\n <i class="fa-solid fa-underline" style="pointer-events: none;"></i>\n </button>\n <button class="csd-editor-tool" data-command="textColor" style="width: 100%; height: 100%;">\n <i class="fa-solid fa-palette" style="pointer-events: none;"></i>\n </button>\n ');var r=$CSD('\n <div class="csd-editor-toolbar-dropdown">\n <button class="csd-editor-tool" style="width: 100%; height: 100%;">\n <i class="fa-solid fa-align-left" style="pointer-events: none;"></i>\n </button>\n <div class="csd-editor-toolbar-dropdown-menu">\n <button data-command="justifyLeft" style="width: 100%;"><i class="fa-solid fa-align-left" style="pointer-events: none;"></i></button>\n <button data-command="justifyCenter" style="width: 100%;"><i class="fa-solid fa-align-center" style="pointer-events: none;"></i></button>\n <button data-command="justifyRight" style="width: 100%;"><i class="fa-solid fa-align-right" style="pointer-events: none;"></i></button>\n </div>\n </div>\n '),s=$CSD('\n <div class="csd-editor-toolbar-dropdown">\n <button class="csd-editor-tool" style="width: 100%; height: 100%;">\n <i class="fa-solid fa-text-height" style="pointer-events: none;"></i>\n </button>\n <div class="csd-editor-toolbar-dropdown-menu">\n <button data-command="fontSize" data-value="1" style="width: 100%;">Small</button>\n <button data-command="fontSize" data-value="3" style="width: 100%;">Normal</button>\n <button data-command="fontSize" data-value="5" style="width: 100%;">Large</button>\n <button data-command="fontSize" data-value="7" style="width: 100%;">Huge</button>\n </div>\n </div>\n '),c=$CSD('\n <div class="csd-editor-toolbar-dropdown">\n <button class="csd-editor-tool" style="width: 100%; height: 100%;">\n <i class="fa-solid fa-ellipsis" style="pointer-events: none;"></i>\n </button>\n <div class="csd-editor-toolbar-dropdown-menu">\n <button data-command="strikethrough" style="width: 100%;"><i class="fa-solid fa-strikethrough" style="pointer-events: none;"></i> Strikethrough</button>\n <button data-command="subscript" style="width: 100%;"><i class="fa-solid fa-subscript" style="pointer-events: none;"></i> Subscript</button>\n <button data-command="superscript" style="width: 100%;"><i class="fa-solid fa-superscript" style="pointer-events: none;"></i> Superscript</button>\n <button data-command="indent" style="width: 100%;"><i class="fa-solid fa-indent" style="pointer-events: none;"></i> Indent</button>\n <button data-command="outdent" style="width: 100%;"><i class="fa-solid fa-outdent" style="pointer-events: none;"></i> Outdent</button>\n </div>\n </div>\n ');return a.append(i),a.append(r),a.append(s),a.append(c),e.append(t),e.append(a),e}();return $CSD('<div class="csd-editor-toolbars"></div>').append(e).append(t)}(),i=$CSD('<div class="csd-editor-content" contenteditable="true"></div>');i.attr("placeholder",t.attr("placeholder")||"");var r=$CSD('\n <div class="csd-editor-statusbar">\n <div class="csd-editor-wordcount">Words: 0</div>\n <div class="csd-editor-charcount">Characters: 0</div>\n </div>\n ');t.before(o),t.before(a),t.before(i),t.after(r),t.hide(),i.html(t.val()),function(e){var t,n=e.closest(".csd-editor-container"),o=n.find(".csd-editor-toolbar-mobile").find(".csd-editor-toolbar-mobile-bottom"),a=n.find(".csd-editor-toolbar-mobile-top"),i=!1;function r(){if("undefined"!=typeof window){var e=window.visualViewport;if(!e)return;var t=Math.max(0,window.innerHeight-e.height),r=window.visualViewport.offsetTop||0;if(document.documentElement.style.setProperty("--keyboard-height","".concat(t,"px")),t>0){n.addClass("keyboard-open"),o.addClass("keyboard-open");var s=n.find(".csd-editor-toolbar-mobile-top");o.css({position:"fixed",bottom:"".concat(t,"px"),transform:"translateY(".concat(r,"px)"),zIndex:1050}),s.css({position:"fixed",top:0,left:0,right:0,transform:"translateY(".concat(r,"px)"),zIndex:1050})}else i||(n.removeClass("keyboard-open"),o.removeClass("keyboard-open"),o.css({position:"fixed",bottom:0,transform:"none",zIndex:1050}),a.css({position:"fixed",top:0,left:0,right:0,transform:"none",zIndex:1050}))}}"undefined"!=typeof window&&window.visualViewport&&(window.visualViewport.addEventListener("resize",r),window.visualViewport.addEventListener("scroll",(function(){a.css("opacity","0"),a.css("pointer-events","none"),o.css("opacity","0"),o.css("pointer-events","none"),t&&clearTimeout(t),t=setTimeout((function(){a.css("opacity","1"),a.css("pointer-events","auto"),o.css("opacity","1"),o.css("pointer-events","auto"),r()}),150)}))),o.on("mousedown touchstart",".csd-editor-tool",(function(e){i=!0,e.preventDefault()})),o.on("mouseup touchend",".csd-editor-tool",(function(){setTimeout((function(){i=!1,e.focus()}),100)})),e.on("focus",(function(){r();var t=e[0].getBoundingClientRect();if("undefined"!=typeof window){var n=window.visualViewport?window.visualViewport.height:window.innerHeight;t.bottom>n&&window.scrollTo({top:window.pageYOffset+(t.bottom-n)+100,behavior:"smooth"})}})),e.on("blur",(function(e){i||$CSD(e.target).closest(".csd-color-picker").length?e.preventDefault():(document.documentElement.style.setProperty("--keyboard-height","0px"),n.removeClass("keyboard-open"),o.removeClass("keyboard-open"),o.css({position:"fixed",bottom:0,transform:"none",opacity:"1",pointerEvents:"auto"}))})),r()}(i),function(e,t){var n=e.closest(".csd-editor-container");e.on("input",(function(){t.val(e.html()),t.trigger("change"),b(n)})),n.on("click",".csd-editor-tool",(function(t){t.preventDefault();$CSD(this).data("tool");v(this,e)})),n.on("click",".csd-editor-menu-item button",(function(t){t.preventDefault(),function(e,t){switch(e){case"new":confirm("Create new document? All changes will be lost.")&&t.html("");break;case"open":var n=document.createElement("input");n.type="file",n.accept=".txt,.html,.md",n.onchange=function(e){var n=e.target.files[0];if(n){var o=new FileReader;o.onload=function(e){t.html(e.target.result)},o.readAsText(n)}},n.click();break;case"save":var o=t.html();if("undefined"!=typeof window){var a=new Blob([o],{type:"text/html"}),i=window.URL.createObjectURL(a),r=document.createElement("a");r.href=i,r.download="document.html",r.click(),window.URL.revokeObjectURL(i)}break;case"export-pdf":alert("PDF export functionality requires a PDF generation library. Please implement based on your needs.");break;case"export-word":var s=t.html();if("undefined"!=typeof window){var c=new Blob([s],{type:"application/msword"}),l=window.URL.createObjectURL(c),d=document.createElement("a");d.href=l,d.download="document.doc",d.click(),window.URL.revokeObjectURL(l)}}}($CSD(this).data("action"),e)})),b(n),e.on("paste",(function(e){e.preventDefault();var t=e.originalEvent.clipboardData||("undefined"!=typeof window?window.clipboardData:null),n=t?t.getData("text/html")||t.getData("text"):"",o=document.createElement("div");o.innerHTML=n;var a,i=f(o.getElementsByTagName("*"));try{for(i.s();!(a=i.n()).done;){for(var r=a.value,s=["font-weight","font-style","text-decoration","text-align"],c=r.style,l=c.length-1;l>=0;l--){var d=c[l];s.includes(d)||c.removeProperty(d)}r.removeAttribute("class"),r.removeAttribute("id")}}catch(e){i.e(e)}finally{i.f()}document.execCommand("insertHTML",!1,o.innerHTML)}))}(i,t),a.find(".csd-editor-toolbar-dropdown > button").on("touchend",(function(e){e.preventDefault(),e.stopPropagation();var t=$CSD(this).closest(".csd-editor-toolbar-dropdown");t.toggleClass("active"),a.find(".csd-editor-toolbar-dropdown.active").not(t).removeClass("active")})),$CSD(document).on("touchend",(function(e){$CSD(e.target).closest(".csd-editor-toolbar-dropdown").length||a.find(".csd-editor-toolbar-dropdown.active").removeClass("active")})),a.find(".csd-editor-toolbar-dropdown-menu button").on("touchend",(function(e){e.preventDefault(),e.stopPropagation();var t=$CSD(this).data("command"),n=$CSD(this).data("value");t&&(v({command:t,value:n},i),$CSD(this).closest(".csd-editor-toolbar-dropdown").removeClass("active"),t.startsWith("justify")&&$CSD(this).closest(".csd-editor-toolbar-dropdown").find("button i").attr("class",$CSD(this).find("i").attr("class")))})),a.find(".csd-editor-tool").on("touchend",(function(e){var n,o;e.preventDefault(),e.stopPropagation(),n=e.target,o=$CSD(n).data("command"),$CSD(n).data("value"),o&&(t[0].focus({preventScroll:!0}),v(n,i),["bold","italic","underline"].includes(o)&&$CSD(n).toggleClass("active"))})),i.on("selectionchange",(function(){!function(e){["bold","italic","underline"].forEach((function(t){var n=document.queryCommandState(t);e.find('[data-command="'.concat(t,'"]')).toggleClass("active",n)}))}(a)})),function(e){function t(){var t=e.html();if(t){var n=t.split(/\n|<br\/?>/).map((function(e){return(e=e.trim()).match(/^#\s/)?"<h1>".concat(e.replace(/^#\s/,""),"</h1>"):e.match(/^##\s/)?"<h2>".concat(e.replace(/^##\s/,""),"</h2>"):e.match(/^###\s/)?"<h3>".concat(e.replace(/^###\s/,""),"</h3>"):e.match(/^[\*\-]\s/)?"<ul><li>".concat(e.replace(/^[\*\-]\s/,""),"</li></ul>"):e.match(/^1\.\s/)?"<ol><li>".concat(e.replace(/^1\.\s/,""),"</li></ol>"):e.match(/^>\s/)?"<blockquote>".concat(e.replace(/^>\s/,""),"</blockquote>"):e.match(/^```/)?"<pre><code>":(e=(e=(e=(e=e.replace(/\*\*([^\*]+)\*\*/g,"<strong>$1</strong>")).replace(/\*([^\*]+)\*/g,"<em>$1</em>")).replace(/`([^`]+)`/g,"<code>$1</code>")).replace(/\[([^\]]+)\]\(([^\)]+)\)/g,'<a href="$2">$1</a>'))?"<p>".concat(e,"</p>"):"<p><br></p>"}));e.html(n.join(""))}}t(),e.on("keydown",(function(e){if("Enter"===e.key){if("undefined"==typeof window)return;if("undefined"==typeof window)return;var t=window.getSelection();if(!t||!t.rangeCount)return;var n=t.anchorNode.textContent;if(n&&n.match(/^#\s/))e.preventDefault(),document.execCommand("formatBlock",!1,"h1"),document.execCommand("delete",!1),document.execCommand("delete",!1);else if(n.match(/^##\s/))e.preventDefault(),document.execCommand("formatBlock",!1,"h2"),document.execCommand("delete",!1),document.execCommand("delete",!1),document.execCommand("delete",!1);else if(n.match(/^###\s/))e.preventDefault(),document.execCommand("formatBlock",!1,"h3"),document.execCommand("delete",!1),document.execCommand("delete",!1),document.execCommand("delete",!1),document.execCommand("delete",!1);else if(n.match(/^[\*\-]\s/))e.preventDefault(),document.execCommand("insertUnorderedList",!1),document.execCommand("delete",!1),document.execCommand("delete",!1);else if(n.match(/^1\.\s/))e.preventDefault(),document.execCommand("insertOrderedList",!1),document.execCommand("delete",!1),document.execCommand("delete",!1),document.execCommand("delete",!1);else if(n.match(/^>\s/))e.preventDefault(),document.execCommand("formatBlock",!1,"blockquote"),document.execCommand("delete",!1),document.execCommand("delete",!1);else if(n.match(/^```/)){e.preventDefault(),document.execCommand("formatBlock",!1,"pre");var o=t.anchorNode.parentElement;if("PRE"===o.tagName){var a=document.createElement("code");o.appendChild(a);var i=document.createRange();i.setStart(a,0),t.removeAllRanges(),t.addRange(i)}document.execCommand("delete",!1),document.execCommand("delete",!1),document.execCommand("delete",!1)}}else if(e.ctrlKey)switch(e.key.toLowerCase()){case"b":e.preventDefault(),document.execCommand("bold",!1);break;case"i":e.preventDefault(),document.execCommand("italic",!1);break;case"u":e.preventDefault(),document.execCommand("underline",!1)}else if("Tab"===e.key)e.preventDefault(),document.execCommand(e.shiftKey?"outdent":"indent",!1);else if(" "===e.key){if("undefined"==typeof window)return;var r=window.getSelection();if(!r)return;var s=r.anchorNode,c=r.anchorOffset;if(s&&s.textContent&&s.textContent.match(/\*\*([^\*]+)\*\*$/))e.preventDefault(),C(r,s.textContent.match(/\*\*([^\*]+)\*\*$/)[1],c,"**",document.execCommand.bind(document,"bold",!1));else if(line.match(/\*([^\*]+)\*$/)){e.preventDefault(),C(r,line.match(/\*([^\*]+)\*$/)[1],c,"*",document.execCommand.bind(document,"italic",!1))}else if(line.match(/`([^`]+)`$/)){e.preventDefault(),C(r,line.match(/`([^`]+)`$/)[1],c,"`",(function(){document.execCommand("fontName",!1,"monospace")}))}else if(line.match(/\[([^\]]+)\]\(([^\)]+)\)$/)){e.preventDefault();var l=line.match(/\[([^\]]+)\]\(([^\)]+)\)$/),d=(l[1],l[2]),u=document.createRange();u.setStart(r.anchorNode,c-l[0].length),u.setEnd(r.anchorNode,c),r.removeAllRanges(),r.addRange(u),document.execCommand("createLink",!1,d),document.execCommand("insertText",!1," ")}}}))}(i),e.initialized=!0}}function v(e,t){if(e){t.focus();var n,o="string"==typeof e?e:e&&"object"===u(e)&&e.dataset?e.dataset.command:e&&"object"===u(e)?e.command:null,a="string"==typeof e?null:e&&"object"===u(e)&&e.dataset?e.dataset.value:e&&"object"===u(e)?e.value:null;if(o)switch(o){case"undo":case"redo":case"bold":case"italic":case"underline":case"strikethrough":case"justifyLeft":case"justifyCenter":case"justifyRight":case"justifyFull":document.execCommand(o,!1);break;case"heading":m(t,[{text:"Heading 1",command:"formatBlock",value:"h1"},{text:"Heading 2",command:"formatBlock",value:"h2"},{text:"Heading 3",command:"formatBlock",value:"h3"},{text:"Paragraph",command:"formatBlock",value:"p"}]);break;case"formatBlock":if("undefined"!=typeof window){window.getSelection().getRangeAt(0);document.execCommand(o,!1,a)}break;case"font":m(t,[{text:"Arial",command:"fontName",value:"Arial"},{text:"Times New Roman",command:"fontName",value:"Times New Roman"},{text:"Courier New",command:"fontName",value:"Courier New"},{text:"Georgia",command:"fontName",value:"Georgia"}]);break;case"fontName":document.execCommand(o,!1,a);break;case"fontSize":null===a?m(t,[{text:"Small",command:"fontSize",value:"1"},{text:"Normal",command:"fontSize",value:"3"},{text:"Large",command:"fontSize",value:"5"},{text:"Huge",command:"fontSize",value:"7"}]):document.execCommand(o,!1,a);break;case"textColor":g("color",e);break;case"backgroundColor":g("backgroundColor",e);break;case"alignment":m(t,[{text:"Left",icon:"fa-solid fa-align-left",command:"justifyLeft"},{text:"Center",icon:"fa-solid fa-align-center",command:"justifyCenter"},{text:"Right",icon:"fa-solid fa-align-right",command:"justifyRight"},{text:"Justify",icon:"fa-solid fa-align-justify",command:"justifyFull"}]);break;case"numberedList":document.execCommand("insertOrderedList",!1);break;case"bulletedList":document.execCommand("insertUnorderedList",!1);break;case"indent":document.execCommand("indent",!1);break;case"outdent":document.execCommand("outdent",!1);break;case"link":!function(e){var t,n=window.getSelection(),o=e.elements[0],a="";n.rangeCount>0&&(a=(t=n.getRangeAt(0)).toString(),o.contains(t.commonAncestorContainer)||(t=null));if(!t){if(t=document.createRange(),document.activeElement===o&&n.focusNode)if(n.focusNode.nodeType===Node.TEXT_NODE)t.setStart(n.focusNode,n.focusOffset),t.setEnd(n.focusNode,n.focusOffset);else{for(var i,r=document.createTreeWalker(o,NodeFilter.SHOW_TEXT,null,!1),s=null,c=1/0;i=r.nextNode();){var l=document.createRange();l.selectNode(i);var d=l.getBoundingClientRect(),u=Math.abs(d.top-n.focusNode.getBoundingClientRect().top);u<c&&(c=u,s=i)}if(s)t.setStart(s,s.length),t.setEnd(s,s.length);else{var f=document.createTextNode("");o.appendChild(f),t.setStart(f,0),t.setEnd(f,0)}}else{var p=o.lastChild;if(!p||"BR"===p.nodeName){var h=document.createTextNode("");o.appendChild(h),p=h}t.selectNode(p),t.collapse(!1)}n.removeAllRanges(),n.addRange(t)}var v=$CSD('\n <div class="csd-editor-link-popover">\n <div class="link-form">\n <div class="csd-field">\n <label class="csd-label">URL:</label>\n <input type="text" class="csd-input link-url" placeholder="https://" value="">\n </div>\n <div class="csd-field">\n <label class="csd-label">Testo:</label>\n <input type="text" class="csd-input link-text" value="'.concat(a,'">\n </div>\n <div class="form-buttons">\n <button type="button" class="csd-btn btn-insert">Inserisci</button>\n <button type="button" class="csd-btn btn-cancel">Annulla</button>\n </div>\n </div>\n </div>\n ')),m=t.getBoundingClientRect();if(0===m.top&&0===m.left&&0===m.width&&0===m.height){var g=t.getClientRects();m=g.length>0?g[0]:o.getBoundingClientRect()}var b=window.pageYOffset||document.documentElement.scrollTop,C=window.pageXOffset||document.documentElement.scrollLeft;v.css({position:"absolute",top:m.bottom+b+"px",left:m.left+C+"px"}),$CSD("body").append(v),v.on("mousedown",(function(e){["INPUT","TEXTAREA"].includes(e.target.tagName)||e.preventDefault(),e.stopPropagation()})),v.find(".btn-cancel").on("click",(function(){v.remove()})),v.find(".btn-insert").on("click",(function(){var e=v.find(".link-url").val(),o=v.find(".link-text").val();if(e){var a=document.createElement("a");a.href=e,a.textContent=o||e,a.title=e,a.style.cursor="pointer",a.addEventListener("dblclick",(function(e){e.preventDefault(),"undefined"!=typeof window&&window.open(this.href,"_blank")})),t.deleteContents(),t.insertNode(a);var i=document.createTextNode(" ");a.nextSibling?a.parentNode.insertBefore(i,a.nextSibling):a.parentNode.appendChild(i);var r=document.createRange();r.setStartAfter(i),r.collapse(!0),n.removeAllRanges(),n.addRange(r)}v.remove()})),v.find(".link-url").focus();var y=function(e){v.elements[0].contains(e.target)||(v.remove(),$CSD(document).off("mousedown",y))};setTimeout((function(){$CSD(document).on("mousedown",y)}),100)}(t);break;case"image":(n=document.createElement("input")).type="file",n.accept="image/*",n.onchange=function(){var e=this.files[0];if(e){var t=new FileReader;t.onload=function(e){var t=document.createElement("img");t.src=e.target.result,t.style.maxWidth="100%",t.style.position="relative",t.style.cursor="default",t.className="csd-resizable-image";var n=["top-left","top-right","bottom-left","bottom-right"],o=document.createElement("div");function a(){d=!1,u=null,document.body.style.userSelect="",o.classList.remove("resizing")}o.style.cssText="\n position: relative;\n display: inline-block;\n margin: 5px;\n ",n.forEach((function(e){var t=document.createElement("div");switch(t.className="resize-corner ".concat(e),t.style.cssText="\n position: absolute;\n width: 12px;\n height: 12px;\n background: white;\n border: 2px solid #007bff;\n border-radius: 50%;\n cursor: ew-resize;\n opacity: 0;\n transition: opacity 0.2s ease;\n z-index: 1000;\n ",e){case"top-left":t.style.top="-6px",t.style.left="-6px";break;case"top-right":t.style.top="-6px",t.style.right="-6px";break;case"bottom-left":t.style.bottom="-6px",t.style.left="-6px";break;case"bottom-right":t.style.bottom="-6px",t.style.right="-6px"}o.appendChild(t)})),o.addEventListener("mouseenter",(function(){o.querySelectorAll(".resize-corner").forEach((function(e){e.style.opacity="1"}))})),o.addEventListener("mouseleave",(function(){d||o.querySelectorAll(".resize-corner").forEach((function(e){e.style.opacity="0"}))})),o.addEventListener("mousedown",(function(){o.querySelectorAll(".resize-corner").forEach((function(e){e.style.opacity="1"}))})),o.appendChild(t),o.querySelectorAll(".resize-corner").forEach((function(e){e.addEventListener("mousedown",f),e.addEventListener("touchstart",f)})),t.addEventListener("mousedown",f);var i=window.getSelection(),r=i.getRangeAt(0);r.deleteContents(),r.insertNode(o);var s=document.createTextNode(" ");o.parentNode.insertBefore(s,o.nextSibling);var c,l,d=!1,u=null;function f(e){d=!0,c=e.type.includes("mouse")?e.pageX:e.touches[0].pageX,l=t.offsetWidth,e.preventDefault(),document.body.style.userSelect="none",o.classList.add("resizing")}function p(e){if(d){var n,a=(e.type.includes("mouse")?e.pageX:e.touches[0].pageX)-c;n=u&&(u.classList.contains("top-left")||u.classList.contains("bottom-left"))?l-a:l+a,n=Math.max(50,Math.min(n,o.parentNode.offsetWidth)),t.style.width=n+"px",e.preventDefault()}}function a(){d=!1,u=null,document.body.style.userSelect="",o.classList.remove("resizing")}t.addEventListener("mousedown",f),document.addEventListener("mousemove",p),document.addEventListener("mouseup",a),t.addEventListener("touchstart",f),document.addEventListener("touchmove",p),document.addEventListener("touchend",a);var h=function(){document.removeEventListener("mousemove",p),document.removeEventListener("mouseup",a),document.removeEventListener("touchmove",p),document.removeEventListener("touchend",a)},v=new MutationObserver((function(e){e.forEach((function(e){e.removedNodes.forEach((function(e){e===o&&(h(),v.disconnect())}))}))}));v.observe(o.parentNode,{childList:!0});var m=document.createRange();m.setStartAfter(s),m.collapse(!0),i.removeAllRanges(),i.addRange(m)},t.readAsDataURL(e)}},n.click();break;case"table":!function(e){for(var t=8,n=8,o=0,a=0,i='<div class="table-grid">',r=0;r<t;r++){i+='<div class="table-row">';for(var s=0;s<n;s++)i+='<div class="table-cell" data-row="'.concat(r,'" data-col="').concat(s,'"></div>');i+="</div>"}i+="</div>",i+='<div class="table-size">0 x 0</div>';var c=$CSD('\n <div class="csd-editor-table-picker">\n '.concat(i,"\n </div>\n "));function l(e,t){o=e+1,a=t+1,c.find(".table-size").text("".concat(o," x ").concat(a)),c.find(".table-cell").each((function(){var n=$CSD(this),o=parseInt(n.data("row")),a=parseInt(n.data("col"));o<=e&&a<=t?n.addClass("selected"):n.removeClass("selected")}))}var d=$CSD(event.target).closest(".csd-editor-tool").elements[0].getBoundingClientRect(),u=window.pageYOffset||document.documentElement.scrollTop,f=window.pageXOffset||document.documentElement.scrollLeft;c.css({position:"absolute",top:d.bottom+u+"px",left:d.left+f+"px"}),$CSD("body").append(c),c.on("mouseover",".table-cell",(function(e){l(parseInt($CSD(this).data("row")),parseInt($CSD(this).data("col")))})),c.find(".table-grid").on("mouseleave",(function(){o>0&&a>0&&l(o-1,a-1)})),c.on("click",".table-cell",(function(){o>0&&a>0&&(!function(e,t,n){for(var o="<table><tbody>",a=0;a<t;a++){o+="<tr>";for(var i=0;i<n;i++)o+="<td><br></td>";o+="</tr>"}o+="</tbody></table>";var r=e.elements[0];if("undefined"==typeof window)return;var s,c=window.getSelection();c.rangeCount>0&&(s=c.getRangeAt(0),r.contains(s.commonAncestorContainer)||(s=null));if(!s){if(s=document.createRange(),document.activeElement===r&&c.focusNode)if(c.focusNode.nodeType===Node.TEXT_NODE)s.setStart(c.focusNode,c.focusOffset),s.setEnd(c.focusNode,c.focusOffset);else{for(var l,d=document.createTreeWalker(r,NodeFilter.SHOW_TEXT,null,!1),u=null,f=1/0;l=d.nextNode();){var p=document.createRange();p.selectNode(l);var h=p.getBoundingClientRect(),v=Math.abs(h.top-c.focusNode.getBoundingClientRect().top);v<f&&(f=v,u=l)}if(u)s.setStart(u,u.length),s.setEnd(u,u.length);else{var m=document.createTextNode("");r.appendChild(m),s.setStart(m,0),s.setEnd(m,0)}}else{var g=r.lastChild;if(!g||"BR"===g.nodeName){var b=document.createTextNode("");r.appendChild(b),g=b}s.selectNode(g),s.collapse(!1)}c.removeAllRanges(),c.addRange(s)}var C=document.createElement("table");C.innerHTML=o,s.deleteContents(),s.insertNode(C);var y=document.createElement("p");y.innerHTML="<br>",C.parentNode.insertBefore(y,C.nextSibling);var w=document.createRange();w.setStartAfter(y),w.collapse(!0),c.removeAllRanges(),c.addRange(w)}(e,o,a),c.remove())})),c.on("mousedown",(function(e){e.stopPropagation()}));var p=function(e){c.elements[0].contains(e.target)||(c.remove(),$CSD(document).off("mousedown",p))};setTimeout((function(){$CSD(document).on("mousedown",p)}),100)}(t);break;case"specialCharacters":!function(){var e=["€","£","$","¥","¢","₽","₹","±","×","÷","≠","≈","≤","≥","∞","∑","∏","√","∫","∂","∆","¼","½","¾","⅓","⅔","⅕","⅖","⅗","⅘","←","→","↑","↓","↔","↕","⇐","⇒","⇑","⇓","©","®","™","§","¶","†","‡","•","·","…","‰","′","″","À","Á","È","É","Ì","Í","Ò","Ó","Ù","Ú","à","á","è","é","ì","í","ò","ó","ù","ú"],t=$CSD('<div class="csd-editor-special-chars"></div>'),n=$CSD('\n <div class="special-chars-grid">\n '.concat(e.map((function(e){return'\n <button type="button" class="special-char-item" title="'.concat(e,'">').concat(e,"</button>\n ")})).join(""),"\n </div>\n "));t.append(n),t.css({position:"absolute",background:"#fff",border:"1px solid #ddd",borderRadius:"4px",padding:"10px",boxShadow:"0 2px 8px rgba(0,0,0,0.15)",zIndex:1e3,maxHeight:"400px",overflowY:"auto",width:"400px"}),t.find(".special-chars-grid").css({display:"grid",gridTemplateColumns:"repeat(10, 1fr)",gap:"5px"}),t.find(".special-char-item").css({width:"30px",height:"30px",border:"1px solid #ddd",borderRadius:"4px",background:"#fff",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"16px",transition:"all 0.2s"});var o=$CSD(event.target).closest(".csd-editor-tool")[0].getBoundingClientRect(),a=window.pageYOffset||document.documentElement.scrollTop,i=window.pageXOffset||document.documentElement.scrollLeft;t.css({top:o.bottom+a+5+"px",left:o.left+i+"px"}),$CSD("body").append(t),t.find(".special-char-item").hover((function(){$(this).css({background:"#f5f5f5",borderColor:"#999"})}),(function(){$(this).css({background:"#fff",borderColor:"#ddd"})})),t.on("click",".special-char-item",(function(e){e.stopPropagation();var n=$CSD(this).text().trim();document.execCommand("insertText",!1,n),t.remove()})),setTimeout((function(){$CSD(document).one("mousedown",(function(e){t[0].contains(e.target)||t.remove()}))}),0)}();break;case"pageBreak":document.execCommand("insertHTML",!1,'<hr class="page-break">');break;case"sourceEditing":!function(e){var t=e.closest(".csd-editor-container");if(t.hasClass("source-mode")){var n=e.text();e.html(n),t.removeClass("source-mode")}else{var o=e.html();e.text(o),t.addClass("source-mode")}}(t);break;case"paste":t.elements[0].addEventListener("paste",(function(e){if(e.preventDefault(),"undefined"!=typeof window){var t,n=e.clipboardData||window.clipboardData;if(n.types.includes("text/html")){t=n.getData("text/html");var o=document.createElement("div");o.innerHTML=t;var a=function(e){if(1===e.nodeType){var t=["href","src","alt"];if(Array.from(e.attributes).forEach((function(n){t.includes(n.name)||e.removeAttribute(n.name)})),e.style.length>0){var n=["font-weight","font-style","text-decoration","text-align"];Array.from(e.style).forEach((function(t){n.includes(t)||e.style.removeProperty(t)}))}Array.from(e.children).forEach(a)}};a(o),t=o.innerHTML}else t=(t=n.getData("text/plain")).replace(/\n/g,"<br>");if("undefined"!=typeof window){var i=window.getSelection();if(i.rangeCount){var r=i.getRangeAt(0);r.deleteContents();var s=document.createDocumentFragment(),c=document.createElement("div");for(c.innerHTML=t;c.firstChild;)s.appendChild(c.firstChild);r.insertNode(s),r.collapse(!1),i.removeAllRanges(),i.addRange(r)}}}}));break;default:o&&document.execCommand(o,!1,a||null)}}}function m(e,t){var n=$CSD('<div class="csd-editor-dropdown"></div>');t.forEach((function(e){var t=$CSD('\n <button type="button" class="csd-editor-dropdown-item csd-editor-tool" data-command="'.concat(e.command||"",'" data-value="').concat(e.value||"",'">\n ').concat(e.icon?'<i class="'.concat(e.icon,'"></i>'):"","\n <span>").concat(e.text,"</span>\n </button>\n "));n.append(t)}));var o=$CSD(event.target).closest(".csd-editor-tool")[0].getBoundingClientRect(),a=window.pageYOffset||document.documentElement.scrollTop,i=window.pageXOffset||document.documentElement.scrollLeft;n.css({position:"absolute",top:o.bottom+a+"px",left:o.left+i+"px"}),$CSD("body").append(n),n.on("click",".csd-editor-dropdown-item",(function(t){t.preventDefault(),t.stopPropagation();this.dataset.command,this.dataset.value;v(this,e),n.remove()})),n.on("mousedown",(function(e){e.preventDefault(),e.stopPropagation()})),setTimeout((function(){$CSD(document).on("mousedown",(function(e){n[0].contains(e.target)||(n.remove(),$CSD(document).off("mousedown"))}))}),0)}function g(e,t){if($CSD(t).attr("data-color-picker"))return $CSD(t).removeAttr("data-color-picker"),void $CSD(".csd-editor-container").css("padding-bottom","0");var n;event.preventDefault(),event.stopPropagation();var o=!1,a=$CSD(event.target).closest(".csd-editor-tool"),i=a.closest(".csd-editor-toolbar-mobile-bottom");if(i.length){var r=function(){var e,t,n,o=c,a=l,i=d,r=(1-Math.abs(2*i/100-1))*a/100,u=r*(1-Math.abs(o/60%2-1)),f=i/100-r/2;o<60?(e=r,t=u,n=0):o<120?(e=u,t=r,n=0):o<180?(e=0,t=r,n=u):o<240?(e=0,t=u,n=r):o<300?(e=u,t=0,n=r):(e=r,t=0,n=u);var p=function(e){var t=Math.round(255*(e+f)).toString(16);return 1===t.length?"0"+t:t},h="#"+p(e)+p(t)+p(n);return s.find(".color-area").css("background","linear-gradient(to right, #fff, hsl(".concat(c,", 100%, 50%))")),h},s=$CSD('\n <div class="csd-color-picker" style="position: absolute; bottom: 100%; left: 0; right: 0; background: #fff; padding: 4px 8px 0; box-shadow: 0 -2px 5px rgba(0,0,0,0.1); z-index: 1000;">\n <div class="color-area" style="width: 100%; height: 150px; position: relative; background: linear-gradient(to right, #fff, #f00);">\n <div style="position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: linear-gradient(to bottom, transparent, #000);"></div>\n <div class="color-pointer" style="position: absolute; width: 10px; height: 10px; border: 2px solid #fff; border-radius: 50%; transform: translate(-50%, -50%);"></div>\n </div>\n <div class="hue-slider" style="width: 100%; height: 20px; margin: 6px 0 2px; background: linear-gradient(to right, #f00, #ff0, #0f0, #0ff, #00f, #f0f, #f00); position: relative;">\n <div class="hue-handle" style="position: absolute; top: 0; width: 5px; height: 100%; background: #fff; border: 1px solid #000; transform: translateX(-50%);"></div>\n </div>\n </div>\n '),c=0,l=100,d=50;$CSD(".csd-editor-container").css("padding-bottom","var(--keyboard-height)");var u="color-picker-"+Math.random().toString(36).substring(2,9);s.attr("data-id",u),$CSD(t).attr("data-color-picker",u),i.append(s),"undefined"!=typeof window&&window.scrollBy({top:scrollNeeded,behavior:"smooth"});var f=s.find(".color-area"),p=s.find(".color-pointer");f.on("touchstart",(function(t){t.preventDefault(),t.stopPropagation();var a=this.getBoundingClientRect();function i(t){t.stopPropagation();var i=t.touches[0],s=Math.max(0,Math.min(i.clientX-a.left,a.width)),c=Math.max(0,Math.min(i.clientY-a.top,a.height));l=s/a.width*100,d=100-c/a.height*100,p.css({left:s+"px",top:c+"px"});var u=r(),f=window.getSelection().getRangeAt(0);f.collapsed?(n||(n=document.createElement("span")),"color"==e?n.style.color=u:"background"==e&&(n.style.backgroundColor=u),n.innerHTML="​",f.insertNode(n),f.setStartAfter(n)):(n||(n=document.createElement("span")),"color"==e?n.style.color=u:"background"==e&&(n.style.backgroundColor=u),o||(f.surroundContents(n),o=!0))}$CSD(document).on("touchmove",i),$CSD(document).on("touchend touchcancel",(function e(){$CSD(document).off("touchmove",i),$CSD(document).off("touchend touchcancel",e)})),i(t)}));var h=s.find(".hue-slider"),v=s.find(".hue-handle");h.on("touchstart",(function(t){t.preventDefault(),t.stopPropagation();var a=this.getBoundingClientRect();function i(t){t.stopPropagation();var i=t.touches[0],s=Math.max(0,Math.min(i.clientX-a.left,a.width));c=s/a.width*360,v.css("left",s+"px");var l=r(),d=window.getSelection().getRangeAt(0);d.collapsed?(n||(n=document.createElement("span")),"color"==e?n.style.color=l:"background"==e&&(n.style.backgroundColor=l),n.innerHTML="​",d.insertNode(n),d.setStartAfter(n)):(n||(n=document.createElement("span")),"color"==e?n.style.color=l:"background"==e&&(n.style.backgroundColor=l),o||(d.surroundContents(n),o=!0))}$CSD(document).on("touchmove",i),$CSD(document).on("touchend touchcancel",(function e(){$CSD(document).off("touchmove",i),$CSD(document).off("touchend touchcancel",e)})),i(t)})),r(),p.css({left:"100%",top:"0%"}),v.css("left","0"),setTimeout((function(){$CSD(document).one("touchstart",(function(e){s[0].contains(e.target)||($CSD(".csd-editor-container").css("padding-bottom","0"),s.remove())}))}),0)}else{var m=$CSD('\n <div class="csd-editor-color-picker">\n <div class="color-grid">\n '.concat(["#000000","#FF0000","#00FF00","#0000FF","#FFFF00","#FF00FF","#00FFFF","#FFFFFF","#808080","#800000","#008000","#000080","#808000","#800080","#008080","#C0C0C0"].map((function(e){return'\n <button type="button" class="color-item" style="background-color: '.concat(e,'" data-color="').concat(e,'"></button>\n ')})).join(""),"\n </div>\n </div>\n ")),g=a[0].getBoundingClientRect(),b=window.pageYOffset||document.documentElement.scrollTop,C=window.pageXOffset||document.documentElement.scrollLeft;m.css({position:"absolute",top:g.bottom+b+"px",left:g.left+C+"px"}),$CSD("body").append(m),m.on("click",".color-item",(function(){var t=$CSD(this).data("color"),a=window.getSelection().getRangeAt(0);a.collapsed?(n||(n=document.createElement("span")),"color"==e?n.style.color=t:"background"==e&&(n.style.backgroundColor=t),n.innerHTML="​",a.insertNode(n),a.setStartAfter(n)):(n||(n=document.createElement("span")),"color"==e?n.style.color=t:"background"==e&&(n.style.backgroundColor=t),o||(a.surroundContents(n),o=!0))})),setTimeout((function(){$CSD(document).on("click",(function(e){var t=$CSD(e.target);t.closest(".csd-editor-color-picker").length&&t.closest(".csd-color-picker").length||m.remove()}))}),0)}}function b(e){var t=e.find(".csd-editor-content").text(),n=t.trim().split(/\s+/).length,o=t.length;e.find(".csd-editor-wordcount").text("Words: ".concat(n)),e.find(".csd-editor-charcount").text("Characters: ".concat(o))}function C(e,t,n,o,a){var i=document.createRange();i.setStart(e.anchorNode,n-(t.length+2*o.length)),i.setEnd(e.anchorNode,n),e.removeAllRanges(),e.addRange(i),a(),document.execCommand("insertText",!1,t+" ")}"undefined"!=typeof window&&(window.getCheckboxValues=s),"undefined"!=typeof window&&(window.getRadioValue=l);var y={file:[{label:"New Document",icon:"fa-regular fa-file",action:"new"},{label:"Open...",icon:"fa-regular fa-folder-open",action:"open"},{label:"Save",icon:"fa-regular fa-floppy-disk",action:"save"},{label:"Export as PDF",icon:"fa-regular fa-file-pdf",action:"export-pdf"},{label:"Export as Word",icon:"fa-regular fa-file-word",action:"export-word"}],edit:[{label:"Undo",icon:"fa-solid fa-rotate-left",action:"undo"},{label:"Redo",icon:"fa-solid fa-rotate-right",action:"redo"},{label:"Cut",icon:"fa-regular fa-scissors",action:"cut"},{label:"Copy",icon:"fa-regular fa-copy",action:"copy"},{label:"Paste",icon:"fa-regular fa-clipboard",action:"paste"}],insert:[{label:"Image",icon:"fa-regular fa-image",action:"image"},{label:"Table",icon:"fa-solid fa-table",action:"table"},{label:"Link",icon:"fa-solid fa-link",action:"link"},{label:"Special Character",icon:"fa-solid fa-s",action:"special-char"},{label:"Page Break",icon:"fa-solid fa-grip-lines",action:"page-break"}],format:[{label:"Bold",icon:"fa-solid fa-bold",action:"bold"},{label:"Italic",icon:"fa-solid fa-italic",action:"italic"},{label:"Underline",icon:"fa-solid fa-underline",action:"underline"},{label:"Strikethrough",icon:"fa-solid fa-strikethrough",action:"strikethrough"}]},w=[["undo","redo"],["cut","copy","paste"],["heading"],["bold","italic","underline","strikethrough"],["font","fontSize"],["textColor","backgroundColor"],["alignment"],["numberedList","bulletedList"],["indent","outdent"],["link","image","table"],["specialCharacters","pageBreak"],["sourceEditing"]];var S=new Set;function D(e){if(e){var t=$CSD(e);if(t.attr("data-csd-fab-initialized")){e.csdFab&&e.csdFab.destroy&&e.csdFab.destroy(),S.delete(e);var n=t.find(".csd-fab-button").first(),o=t.find(".csd-fab-list");if(n.length){var a=n.clone(!1,!0);n.replaceWith(a)}o.find(".csd-fab-button").each((function(){var e=$CSD(this),t=e.clone(!1,!0);e.replaceWith(t)})),t.removeClass("open"),o.find(".csd-fab-button").css({transform:"",transition:"","transition-delay":"",cursor:""}),delete e.csdFab,delete e.initialized,t.removeAttr("data-csd-fab-initialized")}}}function k(e){if(e){var t=$CSD(e);if(t.attr("data-csd-fab-initialized")&&D(e),!e.initialized){var n=t.find(".csd-fab-button").first(),o=t.find(".csd-fab-list"),a=o.length>0,i=!1;if(n.on("click",(function(e){e.preventDefault(),e.stopPropagation(),a&&(i?c():s())})),a){o.find(".csd-fab-button").on("click",(function(e){e.preventDefault(),e.stopPropagation(),c()}));var r=function(e){$CSD(e.target).closest(".csd-fab").length||S.forEach((function(e){e.csdFab&&e.csdFab.close()}))};$CSD(document).on("click",r),o.each((function(){$CSD(this).find(".csd-fab-button").css({transform:"translate(0, 0)",transition:"all 0.3s","transition-delay":"0s"})})),t.find(".csd-fab-button").css("cursor","pointer"),e.csdFab={open:s,close:c,destroy:function(){n.off(),o.find(".csd-fab-button").off(),$CSD(document).off("click",r),S.delete(e),e.initialized=!1}}}return e.initialized=!0,t.attr("data-csd-fab-initialized","true"),e.csdFab}}function s(){a&&!i&&(S.forEach((function(t){t!==e&&t.csdFab&&t.csdFab.close()})),i=!0,t.addClass("open"),S.add(e),o.each((function(){var e,t,n,o,a,i;e=$CSD(this),t=e.data("type")||"linear",n=e.data("direction")||"top",o=e.find(".csd-fab-button