UNPKG

froala-editor

Version:

The next generation Javascript WYSIWYG HTML rich text editor made by devs for devs. High performance and modern design make it easy to use for developers and loved by users.

7 lines (6 loc) 839 kB
/*! * froala_editor v5.1.0 (https://www.froala.com/wysiwyg-editor) * License https://froala.com/wysiwyg-editor/terms/ * Copyright 2014-2026 Froala Labs */ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("froala-editor")):"function"==typeof define&&define.amd?define(["froala-editor"],t):t(("undefined"!=typeof globalThis?globalThis:e||self).FroalaEditor)}(this,function(ct){"use strict";function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}function l(e,t,n,a,r,i,o){try{var s=e[i](o),l=s.value}catch(e){return n(e)}s.done?t(l):Promise.resolve(l).then(a,r)}function g(s){return function(){var e=this,o=arguments;return new Promise(function(t,n){var a=s.apply(e,o);function r(e){l(a,t,n,r,i,"next",e)}function i(e){l(a,t,n,r,i,"throw",e)}r(void 0)})}}function Te(e,t){var n,a,r,i,o="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(o)return r=!(a=!0),{s:function(){o=o.call(e)},n:function(){var e=o.next();return a=e.done,e},e:function(e){r=!0,n=e},f:function(){try{a||null==o["return"]||o["return"]()}finally{if(r)throw n}}};if(Array.isArray(e)||(o=s(e))||t)return o&&(e=o),i=0,{s:t=function(){},n:function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}},e:function(e){throw e},f:t};throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _(e,t,n){return(t=function(e){e=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0===n)return("string"===t?String:Number)(e);e=n.call(e,t);if("object"!=typeof e)return e;throw new TypeError("@@toPrimitive must return a primitive value.")}(e,"string");return"symbol"==typeof e?e:e+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(t,e){var n,a=Object.keys(t);return Object.getOwnPropertySymbols&&(n=Object.getOwnPropertySymbols(t),e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),a.push.apply(a,n)),a}function A(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?r(Object(n),!0).forEach(function(e){_(t,e,n[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}function T(){var g,h,e="function"==typeof Symbol?Symbol:{},t=e.iterator||"@@iterator",n=e.toStringTag||"@@toStringTag";function a(e,t,n,a){var r,i,o,s,l,c,d,f,p,t=t&&t.prototype instanceof b?t:b,t=Object.create(t.prototype);return v(t,"_invoke",(r=e,i=n,d=a||[],f=!1,p={p:c=0,n:0,v:g,a:u,f:u.bind(g,4),d:function(e,t){return o=e,s=0,l=g,p.n=t,m}},function(e,t,n){if(1<c)throw TypeError("Generator is already running");for(f&&1===t&&u(t,n),s=t,l=n;(h=s<2?g:l)||!f;){o||(s?s<3?(1<s&&(p.n=-1),u(s,l)):p.n=l:p.v=l);try{if(c=2,o){if(h=o[e=s?e:"next"]){if(!(h=h.call(o,l)))throw TypeError("iterator result is not an object");if(!h.done)return h;l=h.value,s<2&&(s=0)}else 1===s&&(h=o["return"])&&h.call(o),s<2&&(l=TypeError("The iterator does not provide a '"+e+"' method"),s=1);o=g}else if((h=(f=p.n<0)?l:r.call(i,p))!==m)break}catch(h){o=g,s=1,l=h}finally{c=1}}return{value:h,done:f}}),!0),t;function u(e,t){for(s=e,l=t,h=0;!f&&c&&!n&&h<d.length;h++){var n,a=d[h],r=p.p,i=a[2];3<e?(n=i===t)&&(l=a[(s=a[4])?5:s=3],a[4]=a[5]=g):a[0]<=r&&((n=e<2&&r<a[1])?(s=0,p.v=t,p.n=a[1]):r<i&&(n=e<3||a[0]>t||i<t)&&(a[4]=e,a[5]=t,p.n=i,s=0))}if(n||1<e)return m;throw f=!0,t}}var m={};function b(){}function r(){}function i(){}h=Object.getPrototypeOf;var e=[][t]?h(h([][t]())):(v(h={},t,function(){return this}),h),o=i.prototype=b.prototype=Object.create(e);function s(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,i):(e.__proto__=i,v(e,n,"GeneratorFunction")),e.prototype=Object.create(o),e}return v(o,"constructor",r.prototype=i),v(i,"constructor",r),v(i,n,r.displayName="GeneratorFunction"),v(o),v(o,n,"Generator"),v(o,t,function(){return this}),v(o,"toString",function(){return"[object Generator]"}),(T=function(){return{w:a,m:s}})()}function v(e,t,n,a){var i=Object.defineProperty;try{i({},"",{})}catch(e){i=0}(v=function(e,t,n,a){function r(t,n){v(e,t,function(e){return this._invoke(t,n,e)})}t?i?i(e,t,{value:n,enumerable:!a,configurable:!a,writable:!a}):e[t]=n:(r("next",0),r("throw",1),r("return",2))})(e,t,n,a)}function ke(e){return function(e){if(Array.isArray(e))return a(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||s(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function dt(e){return(dt="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})(e)}function s(e,t){var n;if(e)return"string"==typeof e?a(e,t):"Map"===(n="Object"===(n={}.toString.call(e).slice(8,-1))&&e.constructor?e.constructor.name:n)||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?a(e,t):void 0}if(Object.assign(ct.POPUP_TEMPLATES,{"aiAssist.promptPopup":"[_AI_ASSIST_PROMPT_LAYER_][_BUTTON_]","aiAssist.progress":"[_PROGRESS_BAR_]","aiAssist.TermsAccepted":"[_TERMS_AND_CONDITIONS_LAYER_]"}),Object.assign(ct.DEFAULTS,{aiAssistEndpoint:null,aiAssistHeaders:{},aiAssistRequest:null,aiAssistDataKeys:null,aiAssistAdditionalData:null,aiAssistResponseParserPath:null,aiSupplementalTermsAccepted:!1,aiAssistToneOptions:[{title:"Professional",prompt:"Rewrite the following content using polished, formal, and respectful language. Maintain a professional tone that conveys expertise and competence. Preserve all HTML formatting, links, and styles."},{title:"Casual",prompt:"Rewrite the following content using casual, conversational language as if speaking with a friend. Keep the tone relaxed and informal. Preserve all HTML formatting, links, and styles."},{title:"Confident",prompt:"Rewrite the following content using compelling, assertive, and optimistic language. Convey strong confidence and authority in the message. Preserve all HTML formatting, links, and styles."},{title:"Friendly",prompt:"Rewrite the following content using warm, approachable, and empathetic language. Create a friendly and comforting tone that shows understanding. Preserve all HTML formatting, links, and styles."}],aiAssistTranslateOptions:[{title:"English",prompt:"Translate the following content to English. Maintain the original meaning, tone, and preserve all HTML formatting, links, and styles."},{title:"Spanish",prompt:"Translate the following content to Spanish. Maintain the original meaning, tone, and preserve all HTML formatting, links, and styles."},{title:"German",prompt:"Translate the following content to German. Maintain the original meaning, tone, and preserve all HTML formatting, links, and styles."},{title:"French",prompt:"Translate the following content to French. Maintain the original meaning, tone, and preserve all HTML formatting, links, and styles."},{title:"Japanese",prompt:"Translate the following content to Japanese. Maintain the original meaning, tone, and preserve all HTML formatting, links, and styles."},{title:"Korean",prompt:"Translate the following content to Korean. Maintain the original meaning, tone, and preserve all HTML formatting, links, and styles."},{title:"Arabic",prompt:"Translate the following content to Arabic. Maintain the original meaning, tone, and preserve all HTML formatting, links, and styles."},{title:"Chinese",prompt:"Translate the following content to Chinese. Maintain the original meaning, tone, and preserve all HTML formatting, links, and styles."}],aiAssistPromptTemplate:'\n Answer the question based on the context provided below. If the context is empty, answer the question based on your knowledge.\n Your response must be in valid HTML format only - do not include markdown code blocks or backticks.\n Preserve all HTML formatting, tags, links, styles, and structure from the context.\n If generating new content, use appropriate HTML tags for proper formatting.\n If the response includes code snippets inside <pre> or <code> tags, ensure the outer <pre> tag includes a data-code-snippet attribute whose value is the language name (for example: data-code-snippet="javascript"). Do not add any class to the tag \u2014 include only the data-code-snippet attribute.\n Do not add explanatory text outside the HTML response.'}),ct.PLUGINS.aiAssist=function(h){var a,s=h.$,m=null,b=null;return h.opts.aiSupplementalTermsAccepted?(ct.RegisterShortcut(ct.KEYCODE.I,"aiAssist",null,"I",!0,!1),{_init:function(){setTimeout(function(){h.$tb&&h.events.$on(h.$box,"mouseover mouseout focusin focusout",'.fr-dropdown[data-cmd="aiTranslateTo"], .fr-dropdown[data-cmd="aiChangeTone"]',f),h.$tb&&h.events.$on(h.$tb,"mousedown keydown",'.fr-dropdown[data-cmd="aiShortCuts"]',function(e){var t;e.currentTarget&&e.currentTarget.nextElementSibling&&(t=s(e.currentTarget.nextElementSibling),"false"===s(e.currentTarget).attr("aria-expanded"))&&t.find("button.fr-dropdown").addClass("fr-disabled")})},10),h.events.on("destroy",function(){b&&b.abort()}),h.events.on("commands.after",e)},showPromptPopup:w}):(a=function a(){var e='\n <div class="fr-layer fr-active fr-terms-conditions-layer" style="width: auto; min-width: 200px;">\n <div class="fr-message fr-terms-message">\n <p>'.concat(h.language.translate("To use AI features in Froala, you need to accept the AI Supplemental Terms."),"</p>\n <p>").concat(h.language.translate("Please set"),"<code> aiSupplementalTermsAccepted </code>").concat(h.language.translate("to"),"<code> true </code>").concat(h.language.translate("in your configuration to provide consent."),"</p>\n <p>").concat(h.language.translate("You can review the terms here:"),' <a href="https://www.ideracorp.com/legal/Froala#tabs-2" target="_blank">').concat(h.language.translate("View AI Supplemental Terms"),'</a></p>\n </div>\n <div class="fr-action-buttons">\n <button class="fr-trim-button fr-plugins-ok">').concat(h.language.translate("OK"),"</button>\n </div>\n </div>\n "),e=h.popups.create("aiAssist.TermsAccepted",{terms_and_conditions_layer:e});return h.popups.setContainer("aiAssist.TermsAccepted",h.$tb),h.events.$on(e,"click",".fr-plugins-ok",function(){h.popups.hide("aiAssist.TermsAccepted");var e=h.$tb.find('.fr-command[data-cmd="aiShortCuts"]');e&&e.length&&e.hasClass("fr-active")&&e.removeClass("fr-active")}),e},{showTermsAcceptedPopup:function(){h.popups.get("aiAssist.TermsAccepted")||a();var e=h.$tb.find('.fr-command[data-cmd="aiAssist"]'),t=e.isVisible()?h.button.getPosition(e):{left:0,top:0},n=t.left;h.popups.show("aiAssist.TermsAccepted",n,t.top,e.outerHeight?e.outerHeight():0,!0)}});function v(e){h.popups.get("aiAssist.progress")||(n={progress_bar:'\n <div class="fr-image-progress-bar-layer fr-layer fr-active">\n <h3 tabIndex="-1" class="fr-message">'.concat(h.language.translate("Generating Response"),'</h3>\n <div class="fr-loader fr-indeterminate"><span class="fr-progress"></span></div>\n </div>')},n=h.popups.create("aiAssist.progress",n),h.popups.setContainer("aiAssist.progress",h.$tb));var t,n=h.$tb.find('.fr-command[data-cmd="aiShortCuts"]');e?n.isVisible()?(t=(e=h.button.getPosition(n)).left,h.popups.show("aiAssist.progress",t,e.top,n.outerHeight(),!0)):h.popups.show("aiAssist.progress"):h.popups.hide("aiAssist.progress")}function E(){var e={ai_assist_prompt_layer:'\n <div class="fr-layer fr-active fr-ai-assist">\n <div class="fr-ai-assist-prompt-inner">\n <div class="fr-ai-assist-error-layer"></div>\n <div class="fr-ai-assist-response-layer">\n <div class="fr-ai-assist-response-content fr-view" contenteditable="false"></div>\n <div class="fr-action-buttons">\n <button type="button" class="fr-command fr-submit" data-cmd="aiAssistInsert" tabIndex="4" role="button" title="'.concat(h.language.translate("Insert"),'">').concat(h.language.translate("Insert"),'</button>\n <button type="button" class="fr-command fr-response-refresh" data-cmd="aiAssistRefresh" tabIndex="5" role="button" title="').concat(h.language.translate("Try again"),'">\n <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none">\n <path d="M16.5 9C16.5 13.14 13.14 16.5 9 16.5C4.86 16.5 2.3325 12.33 2.3325 12.33M2.3325 12.33H5.7225M2.3325 12.33V16.08M1.5 9C1.5 4.86 4.83 1.5 9 1.5C14.0025 1.5 16.5 5.67 16.5 5.67M16.5 5.67V1.92M16.5 5.67H13.17" stroke="#0098F7" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>\n </svg>\n </button>\n <div class="fr-ai-assist-label">').concat(h.language.translate("AI responses can be inaccurate."),'</div>\n </div>\n </div>\n <div class="fr-ai-assist-prompt-layer">\n <input type="text" class="fr-ai-assist-prompt-input" tabIndex="1" placeholder="').concat(h.language.translate("Ask AI to generate"),'"/>\n <div class="loader" role="status" aria-label="Loading">\n <span class="dot" style="--i:0"></span>\n <span class="dot" style="--i:1"></span>\n <span class="dot" style="--i:2"></span>\n <span class="dot" style="--i:3"></span>\n <span class="dot" style="--i:4"></span>\n </div>\n <div class="fr-buttons fr-more-toolbar">\n ').concat(h.button.buildList(["aiShortCuts"]).replace('tabIndex="-1"','tabIndex="2"'),'\n </div>\n <button class="fr-command fr-ai-assist-submit-btn" type="button" role="button" data-cmd="aiAssistSubmit" tabIndex="3" data-state="disabled" title="">\n <svg xmlns="http://www.w3.org/2000/svg" class="fr-svg" width="24" height="24" viewBox="0 0 24 24" fill="none">\n <path d="M14.43 5.93007L20.5 12.0001L14.43 18.0701" stroke="inherit" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>\n <path d="M3.50008 12L20.3301 12" stroke="inherit" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>\n </svg>\n </button>\n </div>\n </div>\n </div>\n '),button:'<div class="fr-ai-assist-close-btn">'.concat(h.button.buildList(["closePromptPopup"]),"</div>")};(m=h.popups.create("aiAssist.promptPopup",e)).addClass("fr-ai-assist-prompt-popup"),m.on("click",'.fr-command[data-cmd="aiAssistInsert"]',l),m.on("click",'.fr-command[data-cmd="aiAssistRefresh"]',c),m.on("click",".fr-ai-assist-submit-btn",r),m.on("input",".fr-ai-assist-prompt-input",n),m.on("keydown",d),h.events.on("popups.hide.aiAssist.promptPopup",t),h.events.$on(s(h.o_win),"scroll",y)}function w(){m||E(),m.hasClass("fr-active")||(m.find(".fr-ai-assist-response-layer").addClass("fr-hidden"),m.find(".fr-ai-assist-prompt-layer").removeClass("fr-not-disabled"),m.addClass("fr-do-not-hide"),C("disabled"),h.popups.setContainer("aiAssist.promptPopup",h.$box),h.selection.save(),m.data("context",h.selection.isCollapsed()?null:h.html.getSelected()),m.data("session_id","new_session"),m.data("question_order_number",1),y({showPromptPopup:!0}),h.$doc.on("selectionchange",p))}function y(e){var t,n,a,r,i,o;m&&(m.isVisible()||e&&e.showPromptPopup)&&(t=(o=h.$wp[0].getBoundingClientRect()).bottom,n=o.top,o=o.height,a=parseInt(h.$el.css("padding"))||0,r=s(h.o_win)[0].innerHeight,i=m.height()||100,o=h.$wp.offset().top+o-(i+a),r<t&&(o-=t-r+10),h.opts.toolbarBottom&&(o=n<0?Math.abs(n)+a+a:n+a),e&&e.showPromptPopup?h.popups.show("aiAssist.promptPopup","auto",o):m.isVisible()&&n+(m.height()+a+20)<r&&(h.opts.iframe&&(o-=h.$iframe.offset().top),h.position.at("auto",o,m)))}function t(){var e=m.find(".fr-ai-assist-prompt-input"),t=m.find(".fr-ai-assist-response-layer");e.val(""),t.find(".fr-ai-assist-response-content")[0].textContent="",m.find(".fr-ai-assist-error-layer")[0].textContent="",b&&(b.abort(),b=null),m.removeData("context"),m.removeData("session_id"),m.removeData("question_order_number"),h.selection.restore(),h.$doc.off("selectionchange",p)}function n(){0<m.find(".fr-ai-assist-prompt-input").val().trim().length?C("active"):C("disabled")}function r(){return"disabled"!==m.attr("data-state")&&(!b||(b.abort(),b=null,"progress"!==m.attr("data-state")))&&void i()}function i(){o.apply(this,arguments)}function o(){return(o=g(T().m(function e(t,n,a){var r,i,o,s,l,c,d,f,p,u,g;return T().w(function(e){for(;;)switch(e.p=e.n){case 0:if(b=new AbortController,m||E(),l=m.find(".fr-ai-assist-prompt-input"),r=b.signal,n=n||m.data("context"),t=t||l.val().trim(),i=m.data("session_id"),o=m.data("question_order_number"),s=h.opts.aiAssistPromptTemplate||"",s+='\n Question: """'.concat(t,'""" \n '),n&&(s+='\n Context: """'.concat(n,'""" \n ')),s+="\n Answer:",C("progress"),l.val(""),e.p=1,l=m.find(".fr-ai-assist-response-layer"),c=l.find(".fr-ai-assist-response-content"),d=null,m.find(".fr-ai-assist-error-layer")[0].textContent="",h.opts.aiAssistRequest&&"function"==typeof h.opts.aiAssistRequest)return p={prompt:s,context:n,question:t,session_id:i,question_order_number:o},e.n=2,h.opts.aiAssistRequest(p,r);e.n=3;break;case 2:d=e.v,e.n=6;break;case 3:if(h.opts.aiAssistEndpoint)return f=h.opts.aiAssistDataKeys||{},p=_(_(_(_(_({},f.id||"id",f.idValue||""),f.question||"question",s),f.questionOrderNumber||"question_order_number",f.questionOrderNumberValue||o||1),f.sessionId||"session_id",f.sessionIdValue||i||"new_session"),f.timestamp||"question_timestamp",(new Date).toISOString()),h.opts.aiAssistAdditionalData&&"object"===dt(h.opts.aiAssistAdditionalData)&&(p=A(A({},p),h.opts.aiAssistAdditionalData)),e.n=4,fetch(h.opts.aiAssistEndpoint,{method:"POST",mode:"cors",headers:h.opts.aiAssistHeaders,body:JSON.stringify(p),signal:r}).then(function(e){if(e.ok)return e.json();throw new Error("HTTP error "+e.status)}).then(function(e){var t;return t=h.opts.aiAssistResponseParserPath?h.opts.aiAssistResponseParserPath.split(".").reduce(function(e,t){if(e&&t.includes("[")&&t.includes("]")){var n,a=t.match(/^(.+)\[(\d+)\]$/);if(a)return n=a[1],a=parseInt(a[2]),e[n]&&e[n][a]}return e&&e[t]},e):e.answer||"",m.data("session_id",e[f.sessionId||"session_id"]||i),m.data("question_order_number",(o||1)+1),t||""});e.n=5;break;case 4:d=e.v,e.n=6;break;case 5:throw new Error(h.language.translate("Ensure that all required dependent libraries are available for the plugin to work."));case 6:d&&(m.data("context",d),a&&(v(!1),w()),l.removeClass("fr-hidden"),m.find(".fr-ai-assist-prompt-layer").addClass("fr-not-disabled"),"string"==typeof(d="string"==typeof d?d.replace(/^```html\s*/i,"").replace(/\s*```$/,""):d)&&/<[^>]+>/.test(d)?(u=d.match(/<body[^>]*>([\s\S]*?)<\/body>/i))&&u[1]?c.html(u[1].trim()):c.html(d):c.text(d),C("active"),y()),e.n=9;break;case 7:if(e.p=7,"AbortError"===(g=e.v).name||g.message&&g.message.includes("abort"))return e.a(2);e.n=8;break;case 8:u="AI request failed"+(g.message?": "+g.message:""),m.find(".fr-ai-assist-error-layer").text("Error: "+u),w();case 9:return e.p=9,a?v(!1):C("disabled"),b=null,e.f(9);case 10:return e.a(2)}},e,null,[[1,7,9,10]])}))).apply(this,arguments)}function l(){var e=m.find(".fr-ai-assist-response-layer").find(".fr-ai-assist-response-content").html();if(!1===h.events.trigger("aiAssist.beforeInsert",[e]))return!1;h.selection.restore(),h.undo.saveStep(),h.html.insert(e),h.undo.saveStep(),m.removeClass("fr-do-not-hide"),h.popups.hide("aiAssist.promptPopup"),h.events.trigger("aiAssist.afterInsert")}function c(){i("rephrase this context with in the same language",m.find(".fr-ai-assist-response-layer").find(".fr-ai-assist-response-content").html()||m.data("context")||"")}function C(e){m.attr("data-state",e);m.find(".fr-ai-assist-submit-btn").attr("title",h.language.translate({active:"Submit",progress:"Stop"}[e])||"")}function d(e){if("Enter"===e.key&&m&&m.isVisible()&&"active"===m.attr("data-state"))return r(),e.preventDefault(),!1}function e(e,t,n){var a;"aiTranslateTo"!=e&&"aiChangeTone"!==e||(m&&m.isVisible()?(e=m.find(".fr-ai-assist-prompt-input"),a=m.find(".fr-ai-assist-response-content").html()||m.data("context")||"",i(n,e.val()+"\n"+a)):h.selection.isCollapsed()||(v(!0),i(n,h.html.getSelected(),!0)))}function f(e){var t=s(e.target).parents(".fr-dropdown-menu");t&&"false"===t.attr("aria-hidden")&&(t=t.prev(),"mouseover"===(e=e.type)||"focusin"===e?(t.removeClass("fr-active"),t.addClass("fr-shortcut-active")):"mouseout"!==e&&"focusout"!==e||(t.removeClass("fr-shortcut-active"),t.addClass("fr-active")))}function p(){var e;m&&m.isVisible()&&h.core.hasFocus()&&(e=h.selection.text()&&h.html.getSelected(),e=m.find(".fr-ai-assist-response-content").html()||e||"",h.$el.find("span.fr-custom-selection-highlight").removeClass("fr-custom-selection-highlight"),m.data("context",e))}},ct.DefineIcon("aiAssist",{template:"svgMultiplePath",VIEWBOX:"-4 -4 24 24",PATHS:'\n <path d="M11.8087 1.96539L12.4638 0H13.6023L14.2574 1.96539L16.2228 2.62053V3.75895L14.2574 4.41408L13.6023 6.37947H12.4638L11.8087 4.41408L9.84332 3.75895V2.62053L11.8087 1.96539Z" fill="black"/>\n <path d="M14.0331 8.18974V15.1897H12.0331V8.18974H14.0331Z" fill="black"/>\n <path fill-rule="evenodd" clip-rule="evenodd" d="M3.37037 2.18974H6.69575L10.066 15.1897H7.99989L7.22214 12.1897H2.8439L2.06612 15.1897H0L3.37037 2.18974ZM3.36242 10.1897H6.70364L5.14813 4.18974H4.91797L3.36242 10.1897Z" fill="black"/>\n '}),ct.RegisterCommand("aiAssist",{title:"Ask AI to generate or refine text, adjusting its tone and language.",focus:!0,undo:!1,popup:!0,refreshAfterCallback:!1,plugin:"aiAssist",callback:function(){this.opts.aiSupplementalTermsAccepted?this.aiAssist.showPromptPopup():this.aiAssist.showTermsAcceptedPopup()}}),ct.DefineIcon("closePromptPopup",{NAME:"cancel",SVG_KEY:"cancel",VIEWBOX:"-3 -3 30 30"}),ct.RegisterCommand("closePromptPopup",{title:"Cancel",undo:!1,focus:!1,plugin:"aiAssist",callback:function(){this.popups.get("aiAssist.promptPopup").removeClass("fr-do-not-hide"),this.popups.hide("aiAssist.promptPopup")}}),ct.DefineIcon("aiShortCuts",{template:"svgMultiplePath",VIEWBOX:"0 -1 25 25",PATHS:'\n <path fill-rule="evenodd" clip-rule="evenodd" d="M17.9895 9.0698L16.9626 10.0967L18.9032 12.0371L19.9301 11.0102C19.8979 10.9004 19.8552 10.7779 19.8019 10.6497C19.6525 10.2906 19.4522 9.96311 19.2445 9.75543C19.0368 9.54774 18.7092 9.34739 18.3501 9.19805C18.2219 9.14475 18.0993 9.10198 17.9895 9.0698ZM17.4889 13.4512L15.5483 11.5109L10.3845 16.6743C9.75838 17.3004 9.38821 18.3187 9.19026 19.3086C9.14791 19.5205 9.11491 19.7233 9.08922 19.9107C9.27634 19.885 9.47894 19.852 9.69047 19.8097C10.6799 19.6116 11.6984 19.2413 12.3252 18.6146L17.4889 13.4512ZM8 21C7 21 7 20.9995 7 20.9995L7 20.9974L7.00001 20.9936L7.00008 20.9823L7.00054 20.9455C7.00105 20.9148 7.00201 20.8719 7.00387 20.8181C7.00758 20.7105 7.01486 20.5587 7.02915 20.3728C7.05764 20.0023 7.11455 19.4893 7.22909 18.9165C7.4505 17.8093 7.91903 16.3112 8.97033 15.26L16.938 7.29288C17.1235 7.1074 17.3744 7.00223 17.6368 7.00003C18.0758 6.99637 18.6313 7.14895 19.118 7.35134C19.6243 7.56188 20.2052 7.88773 20.6586 8.34116C21.1121 8.79461 21.438 9.37543 21.6486 9.88176C21.851 10.3685 22.0036 10.924 21.9999 11.3629C21.9977 11.6253 21.8925 11.8762 21.707 12.0617L13.7393 20.0288C12.6877 21.0804 11.19 21.5492 10.0829 21.7708C9.51028 21.8854 8.99735 21.9423 8.62701 21.9708C8.44116 21.9851 8.28942 21.9924 8.18188 21.9961C8.12806 21.998 8.08518 21.999 8.05448 21.9995L8.01768 21.9999L8.00639 22L8.00258 22L8.00113 22C8.00113 22 8 22 8 21ZM8 21V22C7.44772 22 7 21.5518 7 20.9995L8 21Z" fill="inherit"/>\n <path fill-rule="evenodd" clip-rule="evenodd" d="M7.5 2C7.93043 2 8.31257 2.27543 8.44868 2.68377L9.41557 5.58443L12.3162 6.55132C12.7246 6.68743 13 7.06957 13 7.5C13 7.93043 12.7246 8.31257 12.3162 8.44868L9.41557 9.41557L8.44868 12.3162C8.31257 12.7246 7.93043 13 7.5 13C7.06957 13 6.68743 12.7246 6.55132 12.3162L5.58443 9.41557L2.68377 8.44868C2.27543 8.31257 2 7.93043 2 7.5C2 7.06957 2.27543 6.68743 2.68377 6.55132L5.58443 5.58443L6.55132 2.68377C6.68743 2.27543 7.06957 2 7.5 2ZM7.5 6.16228L7.32368 6.69123C7.22415 6.98983 6.98983 7.22415 6.69123 7.32368L6.16228 7.5L6.69123 7.67632C6.98983 7.77585 7.22415 8.01017 7.32368 8.30877L7.5 8.83772L7.67632 8.30877C7.77585 8.01017 8.01017 7.77585 8.30877 7.67632L8.83772 7.5L8.30877 7.32368C8.01017 7.22415 7.77585 6.98983 7.67632 6.69123L7.5 6.16228Z" fill="inherit"/>\n '}),ct.RegisterCommand("aiShortCuts",{title:"AI Shortcuts",type:"dropdown",focus:!1,undo:!1,refreshAfterCallback:!0,plugin:"aiAssist",toggle:!1,html:function(){var e=this.$,t=e(this.doc.createElement("div")).html(this.button.buildList(["aiChangeTone"])),e=e(this.doc.createElement("div")).html(this.button.buildList(["aiTranslateTo"]));return t.find("button").addClass("fr-disabled"),e.find("button").addClass("fr-disabled"),'\n <ul class="fr-dropdown-list" role="aiShortcuts">\n <li class="fr-ai-shortcuts-label">\n <a class="fr-message">'.concat(this.language.translate("Select a text layer to edit"),'</a>\n </li>\n <li role="aiShortcuts" class="fr-buttons">\n ').concat(t.html(),'\n </li>\n <li role="aiShortcuts" class="fr-buttons">\n ').concat(e.html(),"\n </li>\n </ul>\n ")},refreshOnShow:function(n,a){if(!this.opts.aiSupplementalTermsAccepted)return a.hide(),this.aiAssist.showTermsAcceptedPopup(),!1;var r,i,o,e,t,s=this;a.find(".fr-dropdown-list").find(".fr-dropdown-wrapper").css("height",""),setTimeout(function(){a.addClass("fr-ai-shortcuts-dropdown")},10),0<n.parents(".fr-ai-assist-prompt-layer").length?(r=n.closest(".fr-ai-assist-prompt-popup"),i=r.attr("data-state"),o=r.data("context"),"disabled"===i&&o?r.find(".fr-ai-assist-prompt-layer").addClass("fr-not-disabled"):r.find(".fr-ai-assist-prompt-layer").removeClass("fr-not-disabled"),a.hide(),a.addClass("fr-popup"),setTimeout(function(){var e=r.find(".fr-ai-shortcuts-dropdown").find("button.fr-dropdown"),t=r.find(".fr-ai-assist-response-layer"),t=("disabled"!==i&&"progress"!==i||!t.hasClass("fr-hidden")||o?e.removeClass("fr-disabled"):e.addClass("fr-disabled"),a.css("left","unset"),a.css("right",0),a.show(),a.find(".fr-dropdown-content").first().height());a.find(".fr-dropdown-wrapper").first().css("height",t),a.css("top","").css("bottom",""),s.opts.toolbarBottom?(e=n.outerHeight()/10,a.css("top",n.position().top+n.outerHeight()-e)):a.css("bottom",n.height()-n.position().top)},10)):(e=a.find("> .fr-dropdown-wrapper"),t=a.find("button.fr-dropdown"),this.selection.isCollapsed()?(a.removeClass("fr-not-disabled"),t.addClass("fr-disabled"),e.css("height","140")):(a.addClass("fr-not-disabled"),t.removeClass("fr-disabled"),e.css("height","110")))}}),ct.DefineIcon("aiChangeTone",{template:"svgMultiplePath",VIEWBOX:"0 0 24 24",PATHS:'\n <path style="fill:none;" d="M3.50043 20.4999C4.33043 21.3299 5.67043 21.3299 6.50043 20.4999L19.5004 7.49994C20.3304 6.66994 20.3304 5.32994 19.5004 4.49994C18.6704 3.66994 17.3304 3.66994 16.5004 4.49994L3.50043 17.4999C2.67043 18.3299 2.67043 19.6699 3.50043 20.4999Z" stroke="black" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>\n <path style="fill:none;" d="M18.0098 8.98999L15.0098 5.98999" stroke="black" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>\n <path style="fill:none;" d="M8.5 2.44L10 2L9.56 3.5L10 5L8.5 4.56L7 5L7.44 3.5L7 2L8.5 2.44Z" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>\n <path style="fill:none;" d="M4.5 8.44L6 8L5.56 9.5L6 11L4.5 10.56L3 11L3.44 9.5L3 8L4.5 8.44Z" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>\n <path style="fill:none;" d="M19.5 13.44L21 13L20.56 14.5L21 16L19.5 15.56L18 16L18.44 14.5L18 13L19.5 13.44Z" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>\n '}),ct.RegisterCommand("aiChangeTone",{title:"Change Tone",type:"dropdown",undo:!1,focus:!1,plugin:"aiAssist",html:function(){var e=this.opts.aiAssistToneOptions.map(function(e){return'\n <li role="toneOption">\n <a class="fr-command" tabIndex="-1" role="option" data-cmd="aiChangeTone" data-param1="'.concat(e.title,'" data-param2="').concat(e.prompt,'" title="').concat(e.title,'">\n ').concat(e.title,"\n </a>\n </li>\n ")}).join("");return'\n <ul class="fr-dropdown-list" role="toneOptions">\n '.concat(e,"\n </ul>\n ")}}),ct.DefineIcon("aiTranslateTo",{template:"svgMultiplePath",VIEWBOX:"0 0 24 24",PATHS:'\n <path style="fill:none;" d="M16.9897 8.95996H7.00977" stroke="black" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>\n <path style="fill:none;" d="M12 7.28003V8.96002" stroke="black" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>\n <path style="fill:none;" d="M14.5 8.93994C14.5 13.2399 11.14 16.7199 7 16.7199" stroke="black" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>\n <path style="fill:none;" d="M17.0002 16.72C15.2002 16.72 13.6002 15.76 12.4502 14.25" stroke="black" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>\n <path style="fill:none;" d="M9 22H15C20 22 22 20 22 15V9C22 4 20 2 15 2H9C4 2 2 4 2 9V15C2 20 4 22 9 22Z" stroke="black" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>\n '}),ct.RegisterCommand("aiTranslateTo",{title:"Translate To",type:"dropdown",undo:!1,focus:!1,plugin:"aiAssist",html:function(){var e=this.opts.aiAssistTranslateOptions.map(function(e){return'\n <li role="translateTo">\n <a class="fr-command" tabIndex="-1" role="option" data-cmd="aiTranslateTo" data-param1="'.concat(e.title,'" data-param2="').concat(e.prompt,'" title="').concat(e.title,'">\n ').concat(e.title,"\n </a>\n </li>\n ")}).join("");return'\n <ul class="fr-dropdown-list" role="translateOptions">\n '.concat(e,"\n </ul>\n ")}}),ct.PLUGINS.align=function(d){var f=d.$;return{apply:function(t){var e=d.selection.ranges(0),n=(n=e.commonAncestorContainer).nodeType===Node.TEXT_NODE?d.selection.element():n,a=f(n).closest("table.fr-selection-handle-selected"),r=f(n).parents("TD, TH"),i=!d.selection.isCollapsed(),o="TD"===n.tagName||"TH"===n.tagName,e=(i=i&&o)&&(null==(s=n.textContent)?void 0:s.trim())===(null==(s=e.toString())?void 0:s.trim()),s=d.table&&d.table.selectedCells(),o=o||s&&0<s.length||r.length&&d.el.contains(r.get(0))&&"BR"===n.tagName;if(f(n).parents(".fr-img-caption").length)f(n).css("text-align",t);else if(a.length&&d.el.contains(a[0]))a.find("td").css("text-align",t);else if(o&&!i||e)s&&s.length?s.forEach(function(e){e=f(e);e.css("text-align",t),e.children().css("text-align","")}):((a=["TD","TH"].includes(n.tagName)?f(n):r).css("text-align",t),a.children().css("text-align",""));else{d.selection.save(),s&&s.length||d.html.wrap(!0,!0,!0,!0),d.selection.restore();for(var l=d.helpers.selectionBlocks([".fr-code-snippet"]),c=0;c<l.length;c++)f(l[c]).css("text-align",t).removeClass("fr-temp-div"),""===f(l[c]).attr("class")&&f(l[c]).removeAttr("class"),""===f(l[c]).attr("style")&&f(l[c]).removeAttr("style");d.selection.save(),d.html.unwrap(),d.selection.restore()}},refresh:function(e){var t=d.selection.blocks();t.length&&(t=d.helpers.getAlignment(f(t[0])),e.find("> *").first().replaceWith(d.icon.create("align-".concat(t))))},refreshOnShow:function(e,t){var n=d.selection.blocks();n.length&&(n=d.helpers.getAlignment(f(n[0])),t.find('a.fr-command[data-param1="'.concat(n,'"]')).addClass("fr-active").attr("aria-selected",!0))},refreshForToolbar:function(e){var t=d.selection.blocks();t.length&&(t=(t=d.helpers.getAlignment(f(t[0]))).charAt(0).toUpperCase()+t.slice(1),"align".concat(t)===e.attr("data-cmd"))&&e.addClass("fr-active")}}},ct.DefineIcon("align",{NAME:"align-left",SVG_KEY:"alignLeft"}),ct.DefineIcon("align-left",{NAME:"align-left",SVG_KEY:"alignLeft"}),ct.DefineIcon("align-right",{NAME:"align-right",SVG_KEY:"alignRight"}),ct.DefineIcon("align-center",{NAME:"align-center",SVG_KEY:"alignCenter"}),ct.DefineIcon("align-justify",{NAME:"align-justify",SVG_KEY:"alignJustify"}),ct.RegisterCommand("align",{type:"dropdown",title:"Align",options:{left:"Align Left",center:"Align Center",right:"Align Right",justify:"Align Justify"},html:function(){var e,t='<ul class="fr-dropdown-list" role="presentation">',n=ct.COMMANDS.align.options;for(e in n)n.hasOwnProperty(e)&&(t+='<li role="presentation"><a class="fr-command fr-title" tabIndex="-1" role="option" data-cmd="align"data-param1="\n '.concat(e,'" title="').concat(this.language.translate(n[e]),'">').concat(this.icon.create("align-".concat(e)),'<span class="fr-sr-only">\n ').concat(this.language.translate(n[e]),"</span></a></li>"));return t+="</ul>"},callback:function(e,t){this.align.apply(t)},refresh:function(e){this.align.refresh(e)},refreshOnShow:function(e,t){this.align.refreshOnShow(e,t)},plugin:"align"}),ct.RegisterCommand("alignLeft",{type:"button",icon:"align-left",title:"Align Left",callback:function(){this.align.apply("left")},refresh:function(e){this.align.refreshForToolbar(e)},plugin:"align"}),ct.RegisterCommand("alignRight",{type:"button",icon:"align-right",title:"Align Right",callback:function(){this.align.apply("right")},refresh:function(e){this.align.refreshForToolbar(e)},plugin:"align"}),ct.RegisterCommand("alignCenter",{type:"button",icon:"align-center",title:"Align Center",callback:function(){this.align.apply("center")},refresh:function(e){this.align.refreshForToolbar(e)},plugin:"align"}),ct.RegisterCommand("alignJustify",{type:"button",icon:"align-justify",title:"Align Justify",callback:function(){this.align.apply("justify")},refresh:function(e){this.align.refreshForToolbar(e)},plugin:"align"}),Object.assign(ct.DEFAULTS,{charCounterMax:-1,charCounterCount:!0}),ct.PLUGINS.charCounter=function(d){var t,f,a=d.$;function e(e){var t=d.opts.charCounterMax;if(!(t<0)){var n=f();if("keydown"===e.type){if(n<t)return!0;var a=e.which;if(!d.keys.ctrlKey(e)&&d.keys.isCharacter(a)||a===ct.KEYCODE.IME)return e.preventDefault(),e.stopPropagation(),d.events.trigger("charCounter.exceeded"),!1}a=e.originalEvent&&e.originalEvent.inputType||"";if(!/delete|historyUndo|historyRedo/.test(a)){if("beforeinput"===e.type){a=e.data||e.originalEvent&&e.originalEvent.data||e.originalEvent&&e.originalEvent.dataTransfer&&e.originalEvent.dataTransfer.getData("text")||"",a=n-d.win.getSelection().toString().length+a.length;if(t-n<=0||t<a)return e.preventDefault(),e.stopPropagation(),d.events.trigger("charCounter.exceeded"),!1}if("input"===e.type&&t<n){d.selection.save();for(var r,a=d.el,i=t,o="",s=document.createTreeWalker(a,NodeFilter.SHOW_TEXT,null,!1),l=!0;(r=s.nextNode())&&o.length<i;){var c=i-o.length;if(r.textContent.length>c){r.textContent=r.textContent.slice(0,c),l=!1;break}o+=r.textContent}for(l&&(r=s.previousNode());r=s.nextNode();)r.textContent="";d.selection.restore()}}}return!0}function n(e){return d.opts.charCounterMax<0||a("<div>").html(e).text().length+f()<=d.opts.charCounterMax?e:(d.events.trigger("charCounter.exceeded"),"")}function r(e,t,n){return d.opts.charCounterMax<0||(e.includes('<span class="fr-emoticon')||e.includes('<i class="fa ')?!(f()>=d.opts.charCounterMax&&(d.events.trigger("charCounter.exceeded"),1)):a("<div>").html(e).text().length+f()<=d.opts.charCounterMax||(d.events.trigger("charCounter.exceeded"),!1))}function i(){var e;d.opts.charCounterCount&&(e=f()+(0<d.opts.charCounterMax?"/"+d.opts.charCounterMax:""),t.text("".concat(d.language.translate("Characters")," : ").concat(e)),d.opts.toolbarBottom&&t.css("margin-bottom",d.$tb.outerHeight(!0)),0<=(e=d.$wp.get(0).offsetWidth-d.$wp.get(0).clientWidth))&&("rtl"==d.opts.direction?t.css("margin-left",e):t.css("margin-right",e))}return{_init:function(){return!!d.$wp&&!!d.opts.charCounterCount&&((t=a(document.createElement("span")).attr("class","fr-counter")).css("bottom",d.$wp.css("border-bottom-width")),(d.$second_tb||d.$wp).append(t),d.events.on("keydown beforeinput input",e,!0),d.events.on("paste.afterCleanup",n),d.events.on("keyup contentChanged input",function(){d.events.trigger("charCounter.update")}),d.events.on("html.beforeInsert",r),d.events.on("charCounter.update",i),d.events.trigger("charCounter.update"),void d.events.on("destroy",function(){a(d.o_win).off("resize.char".concat(d.id)),t.removeData().remove(),t=null}))},count:f=function f(){var e=d.opts.iframe&&d.markdown&&d.markdown.isEnabled()?d.$el.text()||"":d.el.textContent||"",t=d.$el.find(".fr-page-break"),n=(t.text()||"").length;return e.replace(/\u200B/g,"").length-n*t.length}}},ct.PLUGINS.codeBeautifier=function(){var e,t,n,a,K={};function _(a,e){var n,t={"@page":!0,"@font-face":!0,"@keyframes":!0,"@media":!0,"@supports":!0,"@document":!0},r={"@media":!0,"@supports":!0,"@document":!0},i=(e=e||{},a=(a=a||"").replace(/\r\n|[\r\u2028\u2029]/g,"\n"),e.indent_size||4),o=e.indent_char||" ",s=e.selector_separator_newline===undefined||e.selector_separator_newline,l=e.end_with_newline!==undefined&&e.end_with_newline,c=e.newline_between_rules===undefined||e.newline_between_rules,d=e.eol||"\n",f=("string"==typeof i&&(i=parseInt(i,10)),e.indent_with_tabs&&(o="\t",i=1),d=d.replace(/\\r/,"\r").replace(/\\n/,"\n"),/^\s+$/),p=-1,u=0;function g(){return(n=a.charAt(++p))||""}function h(e){var t=p;return e&&b(),e=a.charAt(p+1)||"",p=t-1,g(),e}function m(e){for(var t=p;g();)if("\\"===n)g();else{if(-1!==e.indexOf(n))break;if("\n"===n)break}return a.substring(t,p+1)}function b(){for(;f.test(h());)g(),0}function v(e){var t=p;for(e="/"===h(),g();g();){if(!e&&"*"===n&&"/"===h()){g();break}if(e&&"\n"===n)return a.substring(t,p)}return a.substring(t,p)+n}function E(e){return a.substring(p-e.length,p).toLowerCase()===e}var w=a.match(/^[\t ]*/)[0],y=new Array(i+1).join(o),C=0,_=0;for(var A={"{":function(e){A.singleSpace(),T.push(e),A.newLine()},"}":function(e){A.newLine(),T.push(e),A.newLine()},_lastCharWhitespace:function(){return f.test(T[T.length-1])},newLine:function(e){T.length&&(e||"\n"===T[T.length-1]||A.trim(),T.push("\n"),w)&&T.push(w)},singleSpace:function(){T.length&&!A._lastCharWhitespace()&&T.push(" ")},preserveSingleSpace:function(){O&&A.singleSpace()},trim:function(){for(;A._lastCharWhitespace();)T.pop()}},T=[],k=!1,S=!1,R=!1,L="";;){var x,I=function(){var e="";for(n&&f.test(n)&&(e=n);f.test(g());)e+=n;return e}(),O=""!==I,I=-1!==I.indexOf("\n"),M=L,L=n;if(!n)break;"/"===n&&"*"===h()?(x=0===C,(I||x)&&A.newLine(),T.push(v()),A.newLine(),x&&A.newLine(!0)):"/"===n&&"/"===h()?(I||"{"===M||A.trim(),A.singleSpace(),T.push(v()),A.newLine()):"@"===n?(A.preserveSingleSpace(),T.push(n),x=void 0,x=p,I=m(I=": , {}()[]/='\""),p=x-1,g(),(M=I).match(/[ :]$/)&&(g(),M=m(": ").replace(/\s$/,""),T.push(M),A.singleSpace()),(M=M.replace(/\s$/,""))in t&&(_+=1,M in r)&&(R=!0)):"#"===n&&"{"===h()?(A.preserveSingleSpace(),T.push(m("}"))):"{"===n?"}"===h(!0)?(b(),g(),A.singleSpace(),T.push("{}"),A.newLine(),c&&0===C&&A.newLine(!0)):(C++,w+=y,A["{"](n),k=R?(R=!1,_<C):_<=C):"}"===n?(C--,w=w.slice(0,-i),A["}"](n),S=k=!1,_&&_--,c&&0===C&&A.newLine(!0)):":"===n?(b(),!k&&!R||E("&")||function(){for(var e=0,t=p+1;t<a.length;t++){var n=a.charAt(t);if("{"===n)return 1;if("("===n)e+=1;else if(")"===n){if(0===e)return;--e}else if(" "===n||"}"===n)return}}()?":"===h()?(g(),T.push("::")):T.push(":"):(S=!0,T.push(":"),A.singleSpace())):'"'===n||"'"===n?(A.preserveSingleSpace(),T.push(m(n))):" "===n?(S=!1,T.push(n),A.newLine()):"("===n?E("url")?(T.push(n),b(),g()&&(")"!==n&&'"'!==n&&"'"!==n?T.push(m(")")):p--)):(u++,A.preserveSingleSpace(),T.push(n),b()):")"===n?(T.push(n),u--):","===n?(T.push(n),b(),s&&!S&&u<1?A.newLine():A.singleSpace()):("]"!==n&&("["!==n&&"="===n?(b(),n="="):A.preserveSingleSpace()),T.push(n))}e="";return w&&(e+=w),e+=T.join("").replace(/[\r\n\t ]+$/,""),l&&(e+="\n"),e="\n"!=d?e.replace(/[\n]/g,d):e}function z(e,t){for(var n=0;n<t.length;n+=1)if(t[n]===e)return!0;return!1}function V(e){return e.replace(/^\s+|\s+$/g,"")}function A(e,t){return new r(e,t).beautify()}e=K,t="\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u08a0\u08a2-\u08ac\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19c1-\u19c7\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1cf5\u1cf6\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa80-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc",n=new RegExp("[".concat(t,"]")),a=new RegExp("[".concat(t," ").concat("\u0300-\u036f\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u0620-\u0649\u0672-\u06d3\u06e7-\u06e8\u06fb-\u06fc\u0730-\u074a\u0800-\u0814\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0840-\u0857\u08e4-\u08fe\u0900-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962-\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09d7\u09df-\u09e0\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2-\u0ae3\u0ae6-\u0aef\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b5f-\u0b60\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c01-\u0c03\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62-\u0c63\u0c66-\u0c6f\u0c82\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2-\u0ce3\u0ce6-\u0cef\u0d02\u0d03\u0d46-\u0d48\u0d57\u0d62-\u0d63\u0d66-\u0d6f\u0d82\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0df2\u0df3\u0e34-\u0e3a\u0e40-\u0e45\u0e50-\u0e59\u0eb4-\u0eb9\u0ec8-\u0ecd\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f41-\u0f47\u0f71-\u0f84\u0f86-\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u1000-\u1029\u1040-\u1049\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u170e-\u1710\u1720-\u1730\u1740-\u1750\u1772\u1773\u1780-\u17b2\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u1920-\u192b\u1930-\u193b\u1951-\u196d\u19b0-\u19c0\u19c8-\u19c9\u19d0-\u19d9\u1a00-\u1a15\u1a20-\u1a53\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1b46-\u1b4b\u1b50-\u1b59\u1b6b-\u1b73\u1bb0-\u1bb9\u1be6-\u1bf3\u1c00-\u1c22\u1c40-\u1c49\u1c5b-\u1c7d\u1cd0-\u1cd2\u1d00-\u1dbe\u1e01-\u1f15\u200c\u200d\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2d81-\u2d96\u2de0-\u2dff\u3021-\u3028\u3099\u309a\ua640-\ua66d\ua674-\ua67d\ua69f\ua6f0-\ua6f1\ua7f8-\ua800\ua806\ua80b\ua823-\ua827\ua880-\ua881\ua8b4-\ua8c4\ua8d0-\ua8d9\ua8f3-\ua8f7\ua900-\ua909\ua926-\ua92d\ua930-\ua945\ua980-\ua983\ua9b3-\ua9c0\uaa00-\uaa27\uaa40-\uaa41\uaa4c-\uaa4d\uaa50-\uaa59\uaa7b\uaae0-\uaae9\uaaf2-\uaaf3\uabc0-\uabe1\uabec\uabed\uabf0-\uabf9\ufb20-\ufb28\ufe00-\ufe0f\ufe20-\ufe26\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f","]")),e.newline=/[\n\r\u2028\u2029]/,e.lineBreak=new RegExp("\r\n|".concat(e.newline.source)),e.allLineBreaks=new RegExp(e.lineBreak.source,"g"),e.isIdentifierStart=function(e){return e<65?36===e||64===e:e<91||(e<97?95===e:e<123||170<=e&&n.test(String.fromCharCode(e)))},e.isIdentifierChar=function(e){return e<48?36===e:e<58||!(e<65)&&(e<91||(e<97?95===e:e<123||170<=e&&a.test(String.fromCharCode(e))))};var P={BlockStatement:"BlockStatement",Statement:"Statement",ObjectLiteral:"ObjectLiteral",ArrayLiteral:"ArrayLiteral",ForInitializer:"ForInitializer",Conditional:"Conditional",Expression:"Expression"};function r(a,e){var o,r,i,s,l,c,t,d,n,f,p,u,g,h=[],m="";function b(e,t){var n=0;return e&&(n=e.indentation_level,!o.just_added_newline())&&e.line_indent_level>n&&(n=e.line_indent_level),{mode:t,parent:e,last_text:e?e.last_text:"",last_word:e?e.last_word:"",declaration_statement:!1,declaration_assignment:!1,multiline_frame:!1,if_block:!1,else_block:!1,do_block:!1,do_while:!1,in_case_statement:!1,in_case:!1,case_body:!1,indentation_level:n,line_indent_level:e?e.line_indent_level:n,start_line_index:o.get_line_number(),ternary_depth:0}}for(u={TK_START_EXPR:function(){x();var e=P.Expression;if("["===s.text){if("TK_WORD"===l||")"===d.last_text)return"TK_RESERVED"===l&&z(d.last_text,i.line_starters)&&(o.space_before_token=!0),T(e),_(),A(),void(g.space_in_paren&&(o.space_before_token=!0));e=P.ArrayLiteral,!k(d.mode)||"["!==d.last_text&&(","!==d.last_text||"]"!==c&&"}"!==c)||g.keep_array_indentation||y()}else"TK_RESERVED"===l&&"for"===d.last_text?e=P.ForInitializer:"TK_RESERVED"===l&&z(d.last_text,["if","while"])&&(e=P.Conditional);" "===d.last_text||"TK_START_BLOCK"===l?y():"TK_END_EXPR"===l||"TK_START_EXPR"===l||"TK_END_BLOCK"===l||"."===d.last_text?w(s.wanted_newline):"TK_RESERVED"===l&&"("===s.text||"TK_WORD"===l||"TK_OPERATOR"===l?"TK_RESERVED"===l&&("function"===d.last_word||"typeof"===d.last_word)||"*"===d.last_text&&"function"===c?g.space_after_anon_function&&(o.space_before_token=!0):"TK_RESERVED"!==l||!z(d.last_text,i.line_starters)&&"catch"!==d.last_text||g.space_before_conditional&&(o.space_before_token=!0):o.space_before_token=!0;"("===s.text&&"TK_RESERVED"===l&&"await"===d.last_word&&(o.space_before_token=!0);"("!==s.text||"TK_EQUALS"!==l&&"TK_OPERATOR"!==l||L()||w();T(e),_(),g.space_in_paren&&(o.space_before_token=!0);A()},TK_END_EXPR:function(){for(;d.mode===P.Statement;)R();d.multiline_frame&&w("]"===s.text&&k(d.mode)&&!g.keep_array_indentation);g.space_in_paren&&("TK_START_EXPR"!==l||g.space_in_empty_paren?o.space_before_token=!0:(o.trim(),o.space_before_token=!1));("]"===s.text&&g.keep_array_indentation?(_(),R):(R(),_))();o.remove_redundant_indentation(n),d.do_while&&n.mode===P.Conditional&&(n.mode=P.Expression,d.do_block=!1,d.do_while=!1)},TK_START_BLOCK:function(){var e=O(1),t=O(2);!t||!(":"===t.text&&z(e.type,["TK_STRING","TK_WORD","TK_RESERVED"])||z(e.text,["get","set"])&&z(t.type,["TK_WORD","TK_RESERVED"]))||z(c,["class","interface"])?T(P.BlockStatement):T(P.ObjectLiteral);t=!e.comments_before.l