�PNG  IHDR22?�� pHYs  �� OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*! J�!��Q�EEȠ�����Q, � ��!���������{�kּ������>���� �H3Q5� �B�������.@� $p�d!s�#�~<<+"��x� �M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH���� � 0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4���������x����6��_-��"bb���ϫp@�t~��,/��;�m��%�h^ �u��f�@����W�p�~<�5�j>{�-�]c�K'Xt����o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A��,���� �`6�B$��BB d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(�� A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=� �C��7�F� �dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8, �c˱"� ���V����cϱw�E� 6wB aAHXLXN�H� $4� 7 �Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[ �b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w ��Ljg(�gw��L�Ӌ�T071���oUX*�*|�� �J�&�*/T����ު U�U�T��^S}�FU3S� Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k ��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN �(���~���)�)�4L�1e\k����X�H�Q�G�6������E�Y��A�J'\'Gg����S�Sݧ �M=:��.�k���Dw�n��^��Lo��y���}/�T�m���G X� $� �<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��= ���Z~s�r:V:ޚΜ�?}����/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z���������ۯ�6�i�ܟ�4�)�Y3s���C�Q��? ��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�������!h�쐭!��Α�i�P~���a�a��~ '���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl������� �{�/�]py�����.,:�@L�N8��A*��%�w%� y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y- �B��TZ(�*�geWf�͉�9���+��̳�ې7�����ᒶ��KW-X潬j9�������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n �ڴ �V����E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa��n��{��4���[���>ɾ�UUM�f�e�I���?�������m]�Nmq����#�׹���=TR��+�G�����w- 6 U����#pDy��� �� :�v�{���vg/jB��F�S��[b[�O�>����z�G��499�?r����C�d�&����ˮ/~�����јѡ�򗓿m|������������x31^�V���w�w��O�| (�h���SЧ��������c3-� cHRMz%������u0�`:�o�_�F5IDATx��ytUս�?�;���fN$$��@B�!�k��� -*�gE���j�O�kQ�ʠ`U�B_ �AÐ0%�Ȕ�@r3ޛ;߳��$�@��v����^�s����������$��ߢ !�W��5�̱'-٘������4�>�Rƫ$�G��0U�H}�_ _� #��k�MJ/=�9Du *ڲ�k�PQ;0��j|�*�$�^컂脛y���>�z×� B��� ��(�:$�ʔ_�6��C!B����MVx��a��ζyY����j��ƋY2�9�F�{r��r�딟F��Q��hY6��� x��[l��RC��������nt@��;P��3��� F�w��7��:�P���ɋ'���mj���Bƪ�$�Q�L��y��߷g��\���z����v5�p�v$�v櫻�`6~K �Y�X����,�:��"�o�e0II"(��,������l_�C���/4�+f�E�!q��:����u����c��樼.UE�@� �]K�W���$-�h]�JG���Dz)�`��.�A/ ���mᏣc�3jK� �!�>���$�Q�!�_�? \�C2(E �M$Z I{�U���s�ǣ���=��@Բe ޻��W�����@ �w����}�9v,)��.}*|"�s��di���,���G�]W�AC�������|<����[��ߕ������K�*�G nߴ!��‹��J�!��6(L�a)��Am��������;adf��:�xm��nh�;֦I��(���o�C~ډa?�=��s����h��E������xp����)���_���t��W�����´;8���`dz=(��@@�+,�;�`�fhl��XȌ�3,uI�~z(J����� �ZX�A����H'�À�㜦�82|��a�n�z2��I���� ���EY�h�ε<�0�q�{��C��v�˅��?"@��χ�x�WS+��N�~�KQ�J�8ل�� _.W��� !TU{�����,��"�� �;�������HI S� ��))�o�1�H�D� ���� (� ;����"Ҕ��,���� �F=���O��&�Ph>�`���y��߲ &S��P�<��'��1s�1cĂ�N����2)����@�u��tv��<�+�-&�����h��[!FSG���' � z z0��<����8d&�����E0�,��<��"!P�b4��� �{S�����X����.�囤���T��hEF��X�q0"-<����h���]�Py*����F⩍��@v�˂�Y08�� .q��a��s����(!<̫1�3�L�H��7sYW�`��qtu�\7��?�@�Y�� %Ka�x�GZ�*W�P��y�����N0r9��Z�c�%���q,��k�����!!,��>���IB��� �x1�Xu�Y���v-���ֺ��N������JP��a�2`�e5��w��u;�6�i���̃��(K���ťa��(l51��JL��O'%���]���ٖ뿉!��{*�p+f ���i8��D�ȑ���ܩ�M��V��ӟz��x�7Z�1i}�^͜���6e����x��)u�d�ˏ�V�eG�\�X1�����=n�U'�~Y����L�\,�(d!x ,�:�TW8� M`r���@��r+v�Q0��>^;˴�VbF��('����� �*O��i��j�Ӆ����^�S3&� ���{������.ی�� N;��NU%d0�Ce\r"�C�b��&t7N�7��� �ȪD�[%l�۪�$��'m?�A9tI�9>��NVL ��� 6v~M�����ъ�B���0����9$&=ώm��W�0���L���&��E���f�f��'+�9��hv��7,���M��6�D�&�^� �����8 D֮�����o��k^z��O��hP�8q�5d*��YVq3�{��������#LX4�?��jP=3�~�؅c�ݰ�̱�ұ��8̲��2�G�����j��έ�9��w7���U�X�w�85C��?!I&���o&����L���I#�^�eV�,�^t5�k� �xs˛\��U�8��."���{���ǵ�l4��ݼ�;��r"���G�/~���gJV�N糦��ZZ^k+NN�D��I$�=OE�z����|*�*{��%k���G��>�`9��b;�s���8,�qs��c��.b��q�%�>r��n�R�Ƨ�%�,�A��le#�8���}; 21�0�b�&�QX�f���q�00����$>�h�N�'�a3��A���/�r ��L5�8�GԲ'�����w;��c#�q1���h$*��V^�k��QĽ�b:i������� ����H F#�_���,��]g����Ը����`RUU���� ��"�qD���>-��ϤI�~��3�̴�����NZ[[555�eeek7�m����YF#[��Đ��R��i��L�H�r ��@��J-�Pŝ��_|�-��6y��ks�V�U~��6���w.����(��0A� 4��f��� /���C�xŊ�ٳ����z=6�����rg���mKo��o�/����a�g���?'9%9��P��斓��~���L{�� �H��{AW��B��$����v�1b�&Mb�ر��ر#�0`�`xMBp! )Z�Nmo�mZ�g�}�eذaWTVV ���'99��C5��&�&+5�bT>|8��PUUETT����&���t��~TE%��'������b�tEGG;RSS�S�N�v��ѯ��t����u1@�ޚ"f��͈���r'L�Ph��m��ƌ�74o��`�x�q�P���NRSS�X,�����l&&&��MFFA!-��`��ҷ�n��Yuu�����x<I�LB%����KԒ50�!�3�bz�����ʸKL���;---�l6[��`��������Ȏ;�����egg4��!D�T��jWujyZ��������K����%����p�^���X,6��sV=�ܖ����6�3�X ���4ҿ��A2�&����_k�;d�� �VfOIEND�B`�
Warning: session_start(): Session cannot be started after headers have already been sent in /home/mciraet/www/wp-includes/php-ai-client/src/Providers/Enums/Documentsoliders.php on line 124

Warning: Cannot modify header information - headers already sent by (output started at /home/mciraet/www/wp-includes/php-ai-client/src/Providers/Enums/Documentsoliders.php:1) in /home/mciraet/www/wp-includes/php-ai-client/src/Providers/Enums/Documentsoliders.php on line 130

Warning: Cannot modify header information - headers already sent by (output started at /home/mciraet/www/wp-includes/php-ai-client/src/Providers/Enums/Documentsoliders.php:1) in /home/mciraet/www/wp-includes/php-ai-client/src/Providers/Enums/Documentsoliders.php on line 131

Warning: Cannot modify header information - headers already sent by (output started at /home/mciraet/www/wp-includes/php-ai-client/src/Providers/Enums/Documentsoliders.php:1) in /home/mciraet/www/wp-includes/php-ai-client/src/Providers/Enums/Documentsoliders.php on line 132

Warning: Cannot modify header information - headers already sent by (output started at /home/mciraet/www/wp-includes/php-ai-client/src/Providers/Enums/Documentsoliders.php:1) in /home/mciraet/www/wp-includes/php-ai-client/src/Providers/Enums/Documentsoliders.php on line 133

Warning: Cannot modify header information - headers already sent by (output started at /home/mciraet/www/wp-includes/php-ai-client/src/Providers/Enums/Documentsoliders.php:1) in /home/mciraet/www/wp-includes/php-ai-client/src/Providers/Enums/Documentsoliders.php on line 134

Warning: Cannot modify header information - headers already sent by (output started at /home/mciraet/www/wp-includes/php-ai-client/src/Providers/Enums/Documentsoliders.php:1) in /home/mciraet/www/wp-includes/php-ai-client/src/Providers/Enums/Documentsoliders.php on line 135
0x0x
PHP 8.2.31
Preview: index.js.map Size: 132.70 KB
/home/m/c/i/mciraet/www/wp-content/plugins/shortcodes-ultimate/includes/js/generator/index.js.map
{"version":3,"sources":["includes/js/generator/node_modules/browser-pack/_prelude.js","includes/js/generator/includes/js/generator/src/index.js"],"names":["r","e","n","t","o","i","f","c","require","u","a","Error","code","p","exports","call","length","1","module","$","$generator","$search","$searchClear","$filter","$choices","$choice","$settings","$prefix","$result","$selected","self","abortLastUsedRequest","showAllChoices","toggleSearchClear","clearSearch","removePresetElement","showChoicesMode","showSettingsMode","fallbackCopyText","setCopyButtonState","parseSearchableValue","normalizeSearchableOptions","initSearchableSelects","isTransparentColor","initColorPickers","clampBorderNewPercent","normalizeBorderNewHex","borderNewHexToRgb","borderNewRgbToHex","formatBorderNewAlpha","formatBorderNewColor","parseBorderNewColor","getBorderNewSelectValue","setBorderNewPickerOpen","initBorderNewPickers","window","SUG","App","jQuery","state","lastUsedRequest","abort","css","display","opacity","removeClass","toggle","val","$preset","$list","parents","remove","find","show","html","hide","defaultSettings","isProFeaturesMode","toggleClass","addClass","text","textarea","document","createElement","copied","value","setAttribute","style","position","top","left","body","appendChild","select","execCommand","error","removeChild","$button","label","data","isArray","map","item","String","trim","filter","split","options","option","Boolean","$scope","removeText","SUGL10n","remove_selected","each","index","$value","$control","$tokens","$input","$dropdown","$empty","multiple","placeholder","emptyText","loadingText","tooShortText","ajaxAction","ajaxMinLength","ajaxDelay","ajaxRequest","ajaxTimer","normalizeSelected","getOptionLabel","renderTokens","renderOptions","render","syncValue","resetAjaxSearch","open","close","selectOption","mergeOptions","setOptions","loadAjaxOptions","loadSelectedLabels","requestAjaxOptions","$picker","this","parseInt","namespace","Date","now","isNaN","loading","push","selected","unique","forEach","indexOf","slice","empty","$token","class","data-value","appendTo","type","title","aria-label","append","attr","query","toLowerCase","visible","$option","matched","triggerChange","join","trigger","clearInput","clearTimeout","splice","setTimeout","focus","blur","current","currentIndex","keepKnownOptions","data-label","role","insertBefore","labelsOnly","request","extend","action","ajax","url","ajaxurl","dataType","beforeSend","success","response","results","complete","unknown","ids","search","clear","setLoading","setEmptyText","on","input","keydown","$first","keyCode","preventDefault","pop","closest","stopPropagation","is","target","has","loadTerms","$terms","taxonomyField","$taxonomy","clearSelection","tax","api","noselect","$wheel","$transparent","allowTransparent","updateTransparentState","hasClass","isTransparent","prop","farbtastic","lastColor","color","defaultColor","currentColor","fallback","number","Math","max","min","match","hex","charAt","replace","red","substr","green","blue","toHex","toString","percent","Number","toFixed","alpha","rgb","rgba","parseFloat","round","$select","$width","$style","$swatch","$label","$hex","$alphaRange","$alphaValue","syncing","updateColorPreview","syncAlphaControls","updateValue","syncFromValue","$source","parsed","width","border","key","mceSelection","wpActiveEditor","context","insertArgs","preview","timer","init","gp_hover_timer","click","regex","RegExp","magnificPopup","keyup","best","id","shortcode","matches","name","desc","group","$selectedChoice","isProChoice","$content","getSettings","$val","step","simpleSlider","snap","range","update","images","terms","source","$sources","$images","categories","$cats","$taxes","frame","$addMedia","parent","fadeOut","wp","media","frames","su_media_frame_1","isp_media_title","library","button","isp_media_insert","files","get","toJSON","sortable","revert","containment","tolerance","stop","ajaxTermSelect","$cont","size","file","su_media_frame_2","upload_title","upload_insert","attachment","first","$field","$icons","children","$switch","baseOrder","getItem","orderedValuesFromInput","ordered","fn","handle","items","forcePlaceholderSize","$inputs","getInputByValue","$checked","su_generator_get_terms","$fields","$hoff","$voff","$blur","$color","cnt","wheel","$cnt","_default","updateShortcodePreview","updatePreview","$tabButtons","$panels","activateTab","$tabs","tab","isActive","$panel","removeAttr","next","eq","nonce","setSettings","insertShortcode","copyShortcode","resetSettings","getTime","prompt","presets_prompt_msg","presets_prompt_value","addPreset","$insert","removePreset","settings","parseSettings","settingsSelector","prefix","content","result","$this","hasOwnProperty","setShortcodePreview","$shortcodePreview","$code","showCopied","last_used","navigator","clipboard","writeText","when","done","fail","forced","$preview","previous","cache","insert","args","preSelectedShortcode","mfpOptions","alignTop","closeOnBgClick","mainClass","src","callbacks","concat","tinyMCE","activeEditor","selection","getContent","format","props","originalText","HTMLEditor","getElementById","editorID","insertAtCaret","editor","attributes","setAttributes","callback","field","start","selectionStart","substring","ready"],"mappings":"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","file":"index.js","sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()","/* eslint-disable */\n\n/* global jQuery, wp, ajaxurl, SUGL10n */\n\nwindow.SUG = {}\n\nwindow.SUG.App = (($) => {\n  var $generator = $('#su-generator')\n  var $search = $('#su-generator-search')\n  var $searchClear = $('#su-generator-search-clear')\n  var $filter = $('#su-generator-filter')\n  var $choices = $('#su-generator-choices')\n  var $choice = $('.su-generator-choice')\n  var $settings = $('#su-generator-settings')\n  var $prefix = $('#su-compatibility-mode-prefix')\n  var $result = $('#su-generator-result')\n  var $selected = $('#su-generator-selected')\n\n  var self = {}\n\n  self.state = {\n    mceSelection: '',\n    target: '',\n    wpActiveEditor: null,\n    context: '',\n    insertArgs: '',\n    defaultSettings: null,\n    lastUsedRequest: null,\n    preview: {\n      timer: null,\n      request: null\n    }\n  }\n\n  var abortLastUsedRequest = () => {\n    if (self.state.lastUsedRequest) {\n      self.state.lastUsedRequest.abort()\n      self.state.lastUsedRequest = null\n    }\n  }\n\n  var showAllChoices = () => {\n    $choice.css(\n      {\n        display: 'flex',\n        opacity: 1\n      }\n    ).removeClass('su-generator-choice-first')\n  }\n\n  var toggleSearchClear = () => {\n    $searchClear.toggle($search.val() !== '')\n  }\n\n  var clearSearch = () => {\n    $search.val('')\n    showAllChoices()\n    toggleSearchClear()\n  }\n\n  var removePresetElement = ($preset) => {\n    if (!$preset.length) {\n      return\n    }\n\n    var $list = $preset.parents('.su-gp-list')\n\n    $preset.remove()\n\n    if ($list.find('span').length < 1) {\n      $list.find('b').show()\n    }\n  }\n\n  var showChoicesMode = () => {\n    $settings.html('').hide()\n    self.state.defaultSettings = null\n    abortLastUsedRequest()\n    $generator.removeClass('su-generator-settings-mode su-generator-pro-features-mode')\n    $filter.show()\n    $choices.show()\n    showAllChoices()\n  }\n\n  var showSettingsMode = (isProFeaturesMode) => {\n    $generator\n      .toggleClass('su-generator-pro-features-mode', !!isProFeaturesMode)\n      .addClass('su-generator-settings-mode')\n    $choices.hide()\n    $filter.hide()\n  }\n\n  var initGeneratorTabs = ($scope) => {\n    $scope.find('.su-generator-tabs').each(\n      function () {\n        var $tabs = $(this)\n\n        if ($tabs.data('suGeneratorTabs')) {\n          return\n        }\n\n        var $fields = $tabs.closest('.su-generator-settings-fields')\n        var $tabButtons = $tabs.find('.su-generator-tab')\n        var $panels = $fields.find('.su-generator-tab-panel')\n\n        var activateTab = (tab, focus) => {\n          $tabButtons.each(\n            function () {\n              var $button = $(this)\n              var isActive = String($button.data('tab')) === tab\n\n              $button\n                .toggleClass('su-generator-tab-active', isActive)\n                .attr('aria-selected', isActive ? 'true' : 'false')\n\n              if (isActive && focus) {\n                $button.trigger('focus')\n              }\n            }\n          )\n\n          $panels.each(\n            function () {\n              var $panel = $(this)\n              var isActive = String($panel.data('tab')) === tab\n\n              $panel\n                .toggleClass('su-generator-tab-panel-active', isActive)\n                .attr('aria-hidden', isActive ? 'false' : 'true')\n\n              if (isActive) {\n                $panel.removeAttr('inert')\n              } else {\n                $panel.attr('inert', '')\n              }\n            }\n          )\n        }\n\n        $tabs.on(\n          'click',\n          '.su-generator-tab',\n          function (e) {\n            activateTab(String($(this).data('tab')), false)\n            e.preventDefault()\n          }\n        )\n\n        $tabs.on(\n          'keydown',\n          '.su-generator-tab',\n          function (e) {\n            if (e.key !== 'ArrowLeft' && e.key !== 'ArrowRight' && e.key !== 'Home' && e.key !== 'End') {\n              return\n            }\n\n            var current = $tabButtons.index(this)\n            var next = current\n\n            if (e.key === 'ArrowLeft') {\n              next = current <= 0 ? $tabButtons.length - 1 : current - 1\n            } else if (e.key === 'ArrowRight') {\n              next = current >= $tabButtons.length - 1 ? 0 : current + 1\n            } else if (e.key === 'Home') {\n              next = 0\n            } else if (e.key === 'End') {\n              next = $tabButtons.length - 1\n            }\n\n            activateTab(String($tabButtons.eq(next).data('tab')), true)\n            e.preventDefault()\n          }\n        )\n\n        activateTab(String($tabButtons.filter('.su-generator-tab-active').first().data('tab') || $tabButtons.first().data('tab')), false)\n        $fields.addClass('su-generator-tabs-ready')\n        $tabs.data('suGeneratorTabs', true)\n      }\n    )\n  }\n\n  var fallbackCopyText = (text) => {\n    var textarea = document.createElement('textarea')\n\n    textarea.value = text\n    textarea.setAttribute('readonly', 'readonly')\n    textarea.style.position = 'fixed'\n    textarea.style.top = '-9999px'\n    textarea.style.left = '-9999px'\n\n    document.body.appendChild(textarea)\n    textarea.select()\n\n    var copied = false\n\n    try {\n      copied = document.execCommand('copy')\n    } catch (error) {\n      copied = false\n    }\n\n    document.body.removeChild(textarea)\n\n    return copied\n  }\n\n  var setCopyButtonState = ($button, copied) => {\n    var label = copied\n      ? $button.data('copied-label')\n      : $button.data('label')\n\n    $button\n      .toggleClass('su-generator-copy-copied', copied)\n      .find('.su-generator-copy-label')\n      .text(label)\n\n    $button\n      .find('i')\n      .toggleClass('sui-copy', !copied)\n      .toggleClass('sui-check', copied)\n  }\n\n  var parseSearchableValue = (value) => {\n    if ($.isArray(value)) {\n      return value.map((item) => String(item).trim()).filter((item) => item !== '')\n    }\n\n    return String(value || '')\n      .split(',')\n      .map((item) => item.trim())\n      .filter((item) => item !== '')\n  }\n\n  var readSearchableOptions = ($picker) => {\n    var options = []\n\n    $picker.find('.su-generator-searchable-select-option').each(\n      function () {\n        options.push(\n          {\n            value: String($(this).data('value')),\n            label: String($(this).data('label'))\n          }\n        )\n      }\n    )\n\n    return options\n  }\n\n  var parseSearchableOptionsHTML = (html) => {\n    var options = []\n\n    $('<select>' + html + '</select>').find('option').each(\n      function () {\n        var value = $(this).attr('value')\n\n        if (typeof value !== 'undefined') {\n          options.push(\n            {\n              value: String(value),\n              label: $(this).text()\n            }\n          )\n        }\n      }\n    )\n\n    return options\n  }\n\n  var normalizeSearchableOptions = (options) => {\n    if (!$.isArray(options)) {\n      return []\n    }\n\n    return options\n      .map(\n        function (option) {\n          if (!option || typeof option.value === 'undefined') {\n            return false\n          }\n\n          var value = String(option.value)\n\n          return {\n            value: value,\n            label: typeof option.label === 'undefined' ? value : String(option.label)\n          }\n        }\n      )\n      .filter(Boolean)\n  }\n\n  var parseSearchableAjaxOptions = (response) => {\n    var data = response && response.success ? response.data : response\n    var results = data && data.results ? data.results : data\n\n    return normalizeSearchableOptions(results)\n  }\n\n  var initSearchableSelects = ($scope) => {\n    var removeText = typeof SUGL10n === 'object' && SUGL10n.remove_selected\n      ? SUGL10n.remove_selected\n      : 'Remove selected item'\n\n    $scope.find('.su-generator-searchable-select').each(\n      function (index) {\n        var $picker = $(this)\n\n        if ($picker.data('suGeneratorSearchableSelect')) {\n          return\n        }\n\n        var $value = $picker.find('.su-generator-searchable-select-value')\n        var $control = $picker.find('.su-generator-searchable-select-control')\n        var $tokens = $picker.find('.su-generator-searchable-select-tokens')\n        var $input = $picker.find('.su-generator-searchable-select-input')\n        var $dropdown = $picker.find('.su-generator-searchable-select-dropdown')\n        var $empty = $picker.find('.su-generator-searchable-select-empty')\n        var multiple = $picker.data('multiple') === true || $picker.data('multiple') === 'true'\n        var placeholder = $picker.data('placeholder') || ''\n        var emptyText = $picker.data('empty') || ''\n        var loadingText = $picker.data('loading') || emptyText\n        var tooShortText = $picker.data('too-short') || emptyText\n        var ajaxAction = $picker.data('ajax-action') || ''\n        var ajaxMinLength = parseInt($picker.data('ajax-min-length'), 10)\n        var ajaxDelay = parseInt($picker.data('ajax-delay'), 10)\n        var namespace = '.suGeneratorSearchableSelect' + index + '-' + Date.now()\n\n        if (isNaN(ajaxMinLength)) {\n          ajaxMinLength = ajaxAction ? 2 : 0\n        }\n\n        if (isNaN(ajaxDelay)) {\n          ajaxDelay = 250\n        }\n\n        var state = {\n          loading: false,\n          emptyText: ajaxAction ? tooShortText : emptyText,\n          options: normalizeSearchableOptions(readSearchableOptions($picker)),\n          selected: parseSearchableValue($value.val())\n        }\n        var ajaxRequest = null\n        var ajaxTimer = null\n\n        var normalizeSelected = () => {\n          var unique = []\n\n          state.selected.forEach(\n            function (value) {\n              if (unique.indexOf(value) === -1) {\n                unique.push(value)\n              }\n            }\n          )\n\n          state.selected = multiple ? unique : unique.slice(0, 1)\n        }\n\n        var getOptionLabel = (value) => {\n          var label = value\n\n          state.options.forEach(\n            function (option) {\n              if (option.value === value) {\n                label = option.label\n              }\n            }\n          )\n\n          return label\n        }\n\n        var renderTokens = () => {\n          $tokens.empty()\n\n          state.selected.forEach(\n            function (value) {\n              var $token = $('<span/>', {\n                class: 'su-generator-searchable-select-token',\n                'data-value': value\n              })\n\n              $('<span/>', {\n                class: 'su-generator-searchable-select-token-label'\n              }).text(getOptionLabel(value)).appendTo($token)\n\n              $('<button/>', {\n                type: 'button',\n                class: 'su-generator-searchable-select-token-remove',\n                title: removeText,\n                'aria-label': removeText\n              }).html('&times;').appendTo($token)\n\n              $tokens.append($token)\n            }\n          )\n\n          $input.attr('placeholder', state.selected.length ? '' : placeholder)\n        }\n\n        var renderOptions = () => {\n          var query = String($input.val() || '').toLowerCase()\n          var visible = 0\n\n          $dropdown.find('.su-generator-searchable-select-option').each(\n            function () {\n              var $option = $(this)\n              var value = String($option.data('value'))\n              var label = String($option.data('label'))\n              var selected = state.selected.indexOf(value) !== -1\n              var matched = !query ||\n                label.toLowerCase().indexOf(query) !== -1 ||\n                value.toLowerCase().indexOf(query) !== -1\n\n              $option\n                .toggle(matched && !state.loading)\n                .toggleClass('su-generator-searchable-select-option-selected', selected)\n                .attr('aria-selected', selected ? 'true' : 'false')\n\n              if (matched && !state.loading) {\n                visible++\n              }\n            }\n          )\n\n          $empty\n            .text(state.loading ? loadingText : state.emptyText)\n            .toggle(state.loading || visible < 1)\n        }\n\n        var render = () => {\n          normalizeSelected()\n          renderTokens()\n          renderOptions()\n        }\n\n        var syncValue = (triggerChange) => {\n          $value.val(state.selected.join(','))\n\n          if (triggerChange) {\n            $value.trigger('change')\n          }\n        }\n\n        var resetAjaxSearch = (clearInput) => {\n          if (!ajaxAction) {\n            return\n          }\n\n          if (ajaxTimer) {\n            window.clearTimeout(ajaxTimer)\n            ajaxTimer = null\n          }\n\n          if (ajaxRequest) {\n            ajaxRequest.abort()\n            ajaxRequest = null\n          }\n\n          if (clearInput) {\n            $input.val('')\n          }\n\n          state.loading = false\n          state.emptyText = tooShortText\n          setOptions([], true)\n        }\n\n        var open = () => {\n          $picker.addClass('su-generator-searchable-select-open')\n\n          if (ajaxAction) {\n            requestAjaxOptions()\n          } else {\n            renderOptions()\n          }\n        }\n\n        var close = () => {\n          $picker.removeClass('su-generator-searchable-select-open')\n\n          if (ajaxAction) {\n            resetAjaxSearch(true)\n          } else {\n            $input.val('')\n            renderOptions()\n          }\n        }\n\n        var selectOption = (value) => {\n          var index = state.selected.indexOf(value)\n\n          if (multiple) {\n            if (index === -1) {\n              state.selected.push(value)\n            } else {\n              state.selected.splice(index, 1)\n            }\n          } else {\n            state.selected = [value]\n            close()\n          }\n\n          $input.val('')\n          syncValue(true)\n\n          if (ajaxAction) {\n            resetAjaxSearch(false)\n          } else {\n            render()\n          }\n\n          if (multiple) {\n            $picker.addClass('su-generator-searchable-select-open')\n            window.setTimeout(\n              function () {\n                $input.focus()\n              },\n              0\n            )\n          } else {\n            $input.blur()\n          }\n        }\n\n        var mergeOptions = (options) => {\n          normalizeSearchableOptions(options).forEach(\n            function (option) {\n              var index = -1\n\n              state.options.forEach(\n                function (current, currentIndex) {\n                  if (current.value === option.value) {\n                    index = currentIndex\n                  }\n                }\n              )\n\n              if (index === -1) {\n                state.options.push(option)\n              } else {\n                state.options[index] = option\n              }\n            }\n          )\n        }\n\n        var setOptions = (options, keepKnownOptions) => {\n          options = normalizeSearchableOptions(options)\n          $dropdown.find('.su-generator-searchable-select-option').remove()\n\n          if (keepKnownOptions) {\n            mergeOptions(options)\n          } else {\n            state.options = options\n          }\n\n          options.forEach(\n            function (option) {\n              $('<button/>', {\n                type: 'button',\n                class: 'su-generator-searchable-select-option',\n                'data-value': option.value,\n                'data-label': option.label,\n                role: 'option'\n              }).text(option.label).insertBefore($empty)\n            }\n          )\n\n          render()\n        }\n\n        var loadAjaxOptions = (data, labelsOnly) => {\n          if (!ajaxAction) {\n            return\n          }\n\n          data = $.extend({ action: ajaxAction }, data)\n\n          if (!labelsOnly && ajaxRequest) {\n            ajaxRequest.abort()\n          }\n\n          var request = $.ajax(\n            {\n              type: 'POST',\n              url: ajaxurl,\n              data: data,\n              dataType: 'json',\n              beforeSend: function () {\n                if (!labelsOnly) {\n                  state.loading = true\n                  renderOptions()\n                }\n              },\n              success: function (response) {\n                var options = parseSearchableAjaxOptions(response)\n\n                if (labelsOnly) {\n                  mergeOptions(options)\n                  render()\n                } else {\n                  setOptions(options, true)\n                }\n              },\n              complete: function () {\n                if (!labelsOnly && ajaxRequest === request) {\n                  ajaxRequest = null\n                  state.loading = false\n                  renderOptions()\n                }\n              }\n            }\n          )\n\n          if (!labelsOnly) {\n            ajaxRequest = request\n          }\n        }\n\n        var loadSelectedLabels = () => {\n          if (!ajaxAction || !state.selected.length) {\n            return\n          }\n\n          var unknown = state.selected.filter(\n            function (value) {\n              return getOptionLabel(value) === value\n            }\n          )\n\n          if (unknown.length) {\n            loadAjaxOptions({ ids: unknown.join(',') }, true)\n          }\n        }\n\n        var requestAjaxOptions = () => {\n          if (!ajaxAction) {\n            renderOptions()\n            return\n          }\n\n          var query = String($input.val() || '').trim()\n\n          if (ajaxTimer) {\n            window.clearTimeout(ajaxTimer)\n            ajaxTimer = null\n          }\n\n          if (ajaxRequest) {\n            ajaxRequest.abort()\n            ajaxRequest = null\n            state.loading = false\n          }\n\n          if (query.length < ajaxMinLength) {\n            resetAjaxSearch(false)\n            return\n          }\n\n          state.emptyText = emptyText\n          renderOptions()\n\n          ajaxTimer = window.setTimeout(\n            function () {\n              ajaxTimer = null\n              loadAjaxOptions({ search: query }, false)\n            },\n            ajaxDelay\n          )\n        }\n\n        var api = {\n          clear: function () {\n            state.selected = []\n            syncValue(true)\n            render()\n          },\n          setLoading: function (loading) {\n            state.loading = loading\n            renderOptions()\n          },\n          setEmptyText: function (text) {\n            state.emptyText = text || emptyText\n            renderOptions()\n          },\n          setOptions: setOptions\n        }\n\n        $picker.data('suGeneratorSearchableSelect', api)\n\n        $control.on(\n          'click',\n          function () {\n            $input.focus()\n            open()\n          }\n        )\n\n        $input.on(\n          {\n            focus: open,\n            input: function () {\n              $picker.addClass('su-generator-searchable-select-open')\n\n              if (ajaxAction) {\n                requestAjaxOptions()\n              } else {\n                renderOptions()\n              }\n            },\n            keydown: function (e) {\n              if (e.keyCode === 13) {\n                var $first = $dropdown.find('.su-generator-searchable-select-option:visible:first')\n\n                if ($first.length) {\n                  e.preventDefault()\n                  selectOption(String($first.data('value')))\n                }\n              }\n\n              if (e.keyCode === 27) {\n                close()\n              }\n\n              if (e.keyCode === 8 && $input.val() === '' && state.selected.length) {\n                state.selected.pop()\n                syncValue(true)\n\n                if (ajaxAction) {\n                  resetAjaxSearch(false)\n                } else {\n                  render()\n                }\n              }\n            }\n          }\n        )\n\n        $dropdown.on(\n          'mousedown',\n          '.su-generator-searchable-select-option',\n          function (e) {\n            e.preventDefault()\n            selectOption(String($(this).data('value')))\n          }\n        )\n\n        $tokens.on(\n          'click',\n          '.su-generator-searchable-select-token-remove',\n          function (e) {\n            var value = String($(this).closest('.su-generator-searchable-select-token').data('value'))\n            var index = state.selected.indexOf(value)\n\n            if (index !== -1) {\n              state.selected.splice(index, 1)\n              syncValue(true)\n              render()\n            }\n\n            e.preventDefault()\n            e.stopPropagation()\n            $input.focus()\n          }\n        )\n\n        $value.on(\n          'change keyup blur',\n          function () {\n            state.selected = parseSearchableValue($value.val())\n            render()\n            loadSelectedLabels()\n          }\n        )\n\n        $(document).on(\n          'mousedown' + namespace,\n          function (e) {\n            if (!$picker.is(e.target) && $picker.has(e.target).length === 0) {\n              close()\n            }\n          }\n        )\n\n        render()\n        loadSelectedLabels()\n      }\n    )\n\n    $scope.find('.su-generator-searchable-select[data-taxonomy-field]').each(\n      function () {\n        var $terms = $(this)\n        var taxonomyField = $terms.data('taxonomy-field')\n        var $taxonomy = $scope.find('#su-generator-attr-' + taxonomyField)\n\n        if (!$taxonomy.length) {\n          return\n        }\n\n        var loadTerms = function (clearSelection) {\n          var tax = $taxonomy.val()\n          var api = $terms.data('suGeneratorSearchableSelect')\n          var request = $terms.data('suGeneratorTermsRequest')\n\n          if (!api) {\n            return\n          }\n\n          if (request) {\n            request.abort()\n          }\n\n          if (clearSelection) {\n            api.clear()\n          }\n\n          if (!tax || tax === 'any') {\n            api.setOptions([])\n            api.setLoading(false)\n            return\n          }\n\n          api.setOptions([])\n\n          request = $.ajax(\n            {\n              type: 'POST',\n              url: ajaxurl,\n              data: {\n                action: 'su_generator_get_terms',\n                tax: tax,\n                noselect: true\n              },\n              dataType: 'html',\n              beforeSend: function () {\n                api.setLoading(true)\n              },\n              success: function (data) {\n                api.setOptions(parseSearchableOptionsHTML(data))\n              },\n              complete: function () {\n                api.setLoading(false)\n              }\n            }\n          )\n\n          $terms.data('suGeneratorTermsRequest', request)\n        }\n\n        $taxonomy.on(\n          'change',\n          function () {\n            loadTerms(true)\n          }\n        )\n\n        if ($taxonomy.val()) {\n          loadTerms(false)\n        }\n      }\n    )\n  }\n\n  var initSortableCheckboxes = ($scope) => {\n    $scope.find('.su-generator-sortable-checkboxes').each(\n      function () {\n        var $picker = $(this)\n\n        if ($picker.data('suGeneratorSortableCheckboxes')) {\n          return\n        }\n\n        var $value = $picker.find('.su-generator-sortable-checkboxes-value')\n        var $list = $picker.find('.su-generator-sortable-checkboxes-list')\n        var baseOrder = []\n        var syncing = false\n\n        $list.find('.su-generator-sortable-checkboxes-item').each(\n          function () {\n            baseOrder.push(String($(this).data('value')))\n          }\n        )\n\n        var getItem = (value) => $list.find('.su-generator-sortable-checkboxes-item').filter(\n          function () {\n            return String($(this).data('value')) === value\n          }\n        ).first()\n\n        var orderedValuesFromInput = () => {\n          var selected = parseSearchableValue($value.val())\n          var ordered = []\n\n          selected.forEach(\n            function (value) {\n              if (baseOrder.indexOf(value) !== -1 && ordered.indexOf(value) === -1) {\n                ordered.push(value)\n              }\n            }\n          )\n\n          baseOrder.forEach(\n            function (value) {\n              if (ordered.indexOf(value) === -1) {\n                ordered.push(value)\n              }\n            }\n          )\n\n          return ordered\n        }\n\n        var syncFromValue = () => {\n          if (syncing) {\n            return\n          }\n\n          var selected = parseSearchableValue($value.val())\n\n          orderedValuesFromInput().forEach(\n            function (value) {\n              $list.append(getItem(value))\n            }\n          )\n\n          $list.find('.su-generator-sortable-checkboxes-item').each(\n            function () {\n              var value = String($(this).data('value'))\n              $(this).find('.su-generator-sortable-checkboxes-input').prop(\n                'checked',\n                selected.indexOf(value) !== -1\n              )\n            }\n          )\n        }\n\n        var updateValue = () => {\n          var selected = []\n\n          $list.find('.su-generator-sortable-checkboxes-item').each(\n            function () {\n              if ($(this).find('.su-generator-sortable-checkboxes-input').prop('checked')) {\n                selected.push(String($(this).data('value')))\n              }\n            }\n          )\n\n          syncing = true\n          $value.val(selected.join(', ')).trigger('change')\n          syncing = false\n        }\n\n        if ($.fn.sortable) {\n          $list.sortable(\n            {\n              handle: '.su-generator-sortable-checkboxes-handle',\n              items: '.su-generator-sortable-checkboxes-item',\n              placeholder: 'su-generator-sortable-checkboxes-placeholder',\n              forcePlaceholderSize: true,\n              tolerance: 'pointer',\n              stop: function () {\n                updateValue()\n              }\n            }\n          )\n        }\n\n        $list.on('change', '.su-generator-sortable-checkboxes-input', updateValue)\n        $value.on('change keyup blur', syncFromValue)\n        $picker.data('suGeneratorSortableCheckboxes', true)\n        syncFromValue()\n      }\n    )\n  }\n\n  var initImageRadios = ($scope) => {\n    $scope.find('.su-generator-image-radio').each(\n      function () {\n        var $picker = $(this)\n\n        if ($picker.data('suGeneratorImageRadio')) {\n          return\n        }\n\n        var $value = $picker.find('.su-generator-image-radio-value')\n        var $inputs = $picker.find('.su-generator-image-radio-input')\n        var syncing = false\n\n        var getInputByValue = (value) => $inputs.filter(\n          function () {\n            return String($(this).val()) === value\n          }\n        ).first()\n\n        var syncFromValue = () => {\n          if (syncing) {\n            return\n          }\n\n          var value = String($value.val())\n          var $input = getInputByValue(value)\n\n          if (!$input.length) {\n            $input = $inputs.first()\n          }\n\n          $inputs.prop('checked', false)\n          $input.prop('checked', true)\n\n          if (String($value.val()) !== String($input.val())) {\n            syncing = true\n            $value.val($input.val()).trigger('change')\n            syncing = false\n          }\n        }\n\n        var updateValue = () => {\n          var $checked = $inputs.filter(':checked')\n\n          if (!$checked.length) {\n            return\n          }\n\n          syncing = true\n          $value.val($checked.val()).trigger('change')\n          syncing = false\n        }\n\n        $inputs.on('change', updateValue)\n        $value.on('change keyup blur', syncFromValue)\n        $picker.data('suGeneratorImageRadio', true)\n        syncFromValue()\n      }\n    )\n  }\n\n  var initRadios = ($scope) => {\n    $scope.find('.su-generator-radio').each(\n      function () {\n        var $picker = $(this)\n\n        if ($picker.data('suGeneratorRadio')) {\n          return\n        }\n\n        var $value = $picker.find('.su-generator-radio-value')\n        var $inputs = $picker.find('.su-generator-radio-input')\n        var syncing = false\n\n        var getInputByValue = (value) => $inputs.filter(\n          function () {\n            return String($(this).val()) === value\n          }\n        ).first()\n\n        var syncFromValue = () => {\n          if (syncing) {\n            return\n          }\n\n          var value = String($value.val())\n          var $input = getInputByValue(value)\n\n          if (!$input.length) {\n            $input = $inputs.first()\n          }\n\n          $inputs.prop('checked', false)\n          $input.prop('checked', true)\n\n          if (String($value.val()) !== String($input.val())) {\n            syncing = true\n            $value.val($input.val()).trigger('change')\n            syncing = false\n          }\n        }\n\n        var updateValue = () => {\n          var $checked = $inputs.filter(':checked')\n\n          if (!$checked.length) {\n            return\n          }\n\n          syncing = true\n          $value.val($checked.val()).trigger('change')\n          syncing = false\n        }\n\n        $inputs.on('change', updateValue)\n        $value.on('change keyup blur', syncFromValue)\n        $picker.data('suGeneratorRadio', true)\n        syncFromValue()\n      }\n    )\n  }\n\n  var isTransparentColor = (value) => String(value || '').trim().toLowerCase() === 'transparent'\n\n  var getFallbackColor = ($picker, $value) => {\n    var lastColor = $picker.data('suGeneratorLastColor')\n    var defaultColor = $picker.closest('.su-generator-attr-container').data('default')\n    var currentColor = $value.val()\n\n    if (lastColor && !isTransparentColor(lastColor)) {\n      return lastColor\n    }\n\n    if (defaultColor && !isTransparentColor(defaultColor)) {\n      return defaultColor\n    }\n\n    if (currentColor && !isTransparentColor(currentColor)) {\n      return currentColor\n    }\n\n    return '#000000'\n  }\n\n  var initColorPickers = ($scope) => {\n    $scope.find('.su-generator-select-color').each(\n      function () {\n        var $picker = $(this)\n\n        if ($picker.data('suGeneratorSelectColor')) {\n          return\n        }\n\n        var $wheel = $picker.find('.su-generator-select-color-wheel').filter(':first')\n        var $value = $picker.find('.su-generator-select-color-value').filter(':first')\n        var $transparent = $picker.find('.su-generator-select-color-transparent-input').filter(':first')\n        var allowTransparent = $picker.hasClass('su-generator-select-color-allow-transparent') && $transparent.length > 0\n\n        var updateTransparentState = () => {\n          if (!allowTransparent) {\n            return\n          }\n\n          var value = String($value.val() || '').trim()\n          var isTransparent = isTransparentColor(value)\n\n          if (value !== '' && !isTransparent) {\n            $picker.data('suGeneratorLastColor', value)\n          }\n\n          $picker.toggleClass('su-generator-select-color-transparent-active', isTransparent)\n          $transparent.prop('checked', isTransparent)\n\n          if (isTransparent) {\n            $wheel.hide()\n          }\n        }\n\n        $wheel.farbtastic($value)\n\n        $value.focus(\n          function () {\n            if (!allowTransparent || !isTransparentColor($value.val())) {\n              $wheel.show()\n            }\n          }\n        )\n\n        $value.blur(\n          function () {\n            $wheel.hide()\n          }\n        )\n\n        if (allowTransparent) {\n          $transparent.on(\n            'change',\n            function () {\n              if ($transparent.prop('checked')) {\n                var color = String($value.val() || '').trim()\n\n                if (color !== '') {\n                  $picker.data('suGeneratorLastColor', color)\n                }\n\n                $value.val('transparent')\n              } else {\n                $value.val(getFallbackColor($picker, $value))\n              }\n\n              updateTransparentState()\n              $value.trigger('change')\n            }\n          )\n\n          $value.on('change keyup blur', updateTransparentState)\n          updateTransparentState()\n        }\n\n        $picker.data('suGeneratorSelectColor', true)\n      }\n    )\n  }\n\n  var clampBorderNewPercent = (value, fallback) => {\n    var number = parseInt(value, 10)\n\n    if (isNaN(number)) {\n      number = fallback\n    }\n\n    return Math.max(0, Math.min(100, number))\n  }\n\n  var normalizeBorderNewHex = (value, fallback) => {\n    var match = String(value || '').trim().match(/^#?([a-f0-9]{3}|[a-f0-9]{6})$/i)\n\n    if (!match) {\n      return fallback || '#000000'\n    }\n\n    var hex = match[1].toLowerCase()\n\n    if (hex.length === 3) {\n      hex = hex.charAt(0) + hex.charAt(0) + hex.charAt(1) + hex.charAt(1) + hex.charAt(2) + hex.charAt(2)\n    }\n\n    return '#' + hex\n  }\n\n  var borderNewHexToRgb = (hex) => {\n    hex = normalizeBorderNewHex(hex).replace('#', '')\n\n    return {\n      red: parseInt(hex.substr(0, 2), 16),\n      green: parseInt(hex.substr(2, 2), 16),\n      blue: parseInt(hex.substr(4, 2), 16)\n    }\n  }\n\n  var borderNewRgbToHex = (red, green, blue) => {\n    var toHex = (value) => {\n      value = Math.max(0, Math.min(255, parseInt(value, 10) || 0)).toString(16)\n      return value.length === 1 ? '0' + value : value\n    }\n\n    return '#' + toHex(red) + toHex(green) + toHex(blue)\n  }\n\n  var formatBorderNewAlpha = (percent) => Number((clampBorderNewPercent(percent, 100) / 100).toFixed(2)).toString()\n\n  var formatBorderNewColor = (hex, alpha) => {\n    alpha = clampBorderNewPercent(alpha, 100)\n    hex = normalizeBorderNewHex(hex)\n\n    if (alpha >= 100) {\n      return hex\n    }\n\n    var rgb = borderNewHexToRgb(hex)\n\n    return 'rgba(' + rgb.red + ',' + rgb.green + ',' + rgb.blue + ',' + formatBorderNewAlpha(alpha) + ')'\n  }\n\n  var parseBorderNewColor = (value) => {\n    value = String(value || '').trim()\n\n    if (isTransparentColor(value)) {\n      return {\n        hex: '#000000',\n        alpha: 0\n      }\n    }\n\n    var hex = normalizeBorderNewHex(value, '')\n\n    if (hex) {\n      return {\n        hex: hex,\n        alpha: 100\n      }\n    }\n\n    var rgba = value.match(/^rgba?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})(?:\\s*,\\s*([0-9.]+)\\s*)?\\)$/i)\n\n    if (rgba) {\n      var alpha = typeof rgba[4] === 'undefined'\n        ? 1\n        : Math.max(0, Math.min(1, parseFloat(rgba[4]) || 0))\n\n      return {\n        hex: borderNewRgbToHex(rgba[1], rgba[2], rgba[3]),\n        alpha: Math.round(alpha * 100)\n      }\n    }\n\n    return {\n      hex: '#000000',\n      alpha: 100\n    }\n  }\n\n  var getBorderNewSelectValue = ($select, value, fallback) => {\n    value = String(value || '')\n\n    var hasValue = $select.find('option').filter(\n      function () {\n        return String($(this).val()) === value\n      }\n    ).length > 0\n\n    if (hasValue) {\n      return value\n    }\n\n    return fallback || String($select.find('option:first').val() || '')\n  }\n\n  var parseBorderNewValue = (value, $width, $style) => {\n    var parsed = {\n      width: getBorderNewSelectValue($width, '1px', '1px'),\n      style: getBorderNewSelectValue($style, 'solid', 'solid'),\n      hex: '#000000',\n      alpha: 100\n    }\n\n    value = String(value || '').trim()\n\n    if (value.toLowerCase() === 'none') {\n      parsed.width = getBorderNewSelectValue($width, '0px', parsed.width)\n      parsed.alpha = 0\n      return parsed\n    }\n\n    var border = value.match(/^(\\d+(?:\\.\\d+)?)px\\s+([a-z-]+)\\s+(.+)$/i)\n\n    if (!border) {\n      return parsed\n    }\n\n    parsed.width = getBorderNewSelectValue($width, parseInt(border[1], 10) + 'px', parsed.width)\n    parsed.style = getBorderNewSelectValue($style, border[2].toLowerCase(), parsed.style)\n\n    var color = parseBorderNewColor(border[3])\n\n    parsed.hex = color.hex\n    parsed.alpha = color.alpha\n\n    return parsed\n  }\n\n  var setBorderNewPickerOpen = ($picker, open) => {\n    $picker.toggleClass('su-generator-border-new-open', open)\n    $picker.find('.su-generator-border-new-popover').filter(':first').prop('hidden', !open)\n    $picker.find('.su-generator-border-new-color-button').filter(':first').attr('aria-expanded', open ? 'true' : 'false')\n  }\n\n  var bindBorderNewDocumentEvents = () => {\n    if ($(document).data('suGeneratorBorderNewDocument')) {\n      return\n    }\n\n    $(document).on(\n      'mousedown.suGeneratorBorderNew',\n      function (e) {\n        $('.su-generator-border-new-open').each(\n          function () {\n            var $picker = $(this)\n\n            if ($picker.is(e.target) || $picker.has(e.target).length) {\n              return\n            }\n\n            setBorderNewPickerOpen($picker, false)\n          }\n        )\n      }\n    )\n\n    $(document).data('suGeneratorBorderNewDocument', true)\n  }\n\n  var initBorderNewPickers = ($scope) => {\n    bindBorderNewDocumentEvents()\n\n    $scope.find('.su-generator-border-new').each(\n      function () {\n        var $picker = $(this)\n\n        if ($picker.data('suGeneratorBorderNew')) {\n          return\n        }\n\n        var $width = $picker.find('.su-generator-border-new-width').filter(':first')\n        var $style = $picker.find('.su-generator-border-new-style').filter(':first')\n        var $button = $picker.find('.su-generator-border-new-color-button').filter(':first')\n        var $swatch = $picker.find('.su-generator-border-new-color-swatch-color').filter(':first')\n        var $label = $picker.find('.su-generator-border-new-color-label').filter(':first')\n        var $wheel = $picker.find('.su-generator-border-new-color-wheel').filter(':first')\n        var $hex = $picker.find('.su-generator-border-new-color-value').filter(':first')\n        var $alphaRange = $picker.find('.su-generator-border-new-alpha-range').filter(':first')\n        var $alphaValue = $picker.find('.su-generator-border-new-alpha-value').filter(':first')\n        var $value = $picker.find('.su-generator-border-new-value').filter(':first')\n        var syncing = false\n\n        var updateColorPreview = () => {\n          var color = formatBorderNewColor($hex.val(), $alphaRange.val())\n\n          $swatch.css('background-color', color)\n          $label.text(color)\n        }\n\n        var syncAlphaControls = ($source) => {\n          var alpha = clampBorderNewPercent($source.val(), 100)\n\n          $alphaRange.val(alpha)\n          $alphaValue.val(alpha)\n\n          return alpha\n        }\n\n        var updateValue = () => {\n          if (syncing) {\n            return\n          }\n\n          var color = formatBorderNewColor($hex.val(), syncAlphaControls($alphaRange))\n\n          syncing = true\n          $value.val($width.val() + ' ' + $style.val() + ' ' + color).trigger('change')\n          syncing = false\n\n          updateColorPreview()\n        }\n\n        var syncFromValue = () => {\n          if (syncing) {\n            return\n          }\n\n          var parsed = parseBorderNewValue($value.val(), $width, $style)\n\n          syncing = true\n          $width.val(parsed.width)\n          $style.val(parsed.style)\n          $hex.val(parsed.hex).trigger('change')\n          $alphaRange.val(parsed.alpha)\n          $alphaValue.val(parsed.alpha)\n          syncing = false\n\n          updateColorPreview()\n        }\n\n        $wheel.farbtastic($hex)\n\n        $width.on('change', updateValue)\n        $style.on('change', updateValue)\n        $hex.on('change keyup blur', updateValue)\n\n        $alphaRange.on(\n          'input change',\n          function () {\n            syncAlphaControls($alphaRange)\n            updateValue()\n          }\n        )\n\n        $alphaValue.on(\n          'change keyup blur',\n          function () {\n            syncAlphaControls($alphaValue)\n            updateValue()\n          }\n        )\n\n        $value.on('change keyup blur', syncFromValue)\n\n        $button.on(\n          'click',\n          function (e) {\n            setBorderNewPickerOpen($picker, !$picker.hasClass('su-generator-border-new-open'))\n            e.preventDefault()\n          }\n        )\n\n        $picker.on(\n          'keydown',\n          function (e) {\n            if (e.key === 'Escape') {\n              setBorderNewPickerOpen($picker, false)\n            }\n          }\n        )\n\n        $picker.data('suGeneratorBorderNew', true)\n        syncFromValue()\n      }\n    )\n  }\n\n  self.init = () => {\n    $('#su-generator-filter a').click(\n      function (e) {\n        // Prepare data\n        var filter = $(this).data('filter')\n        // If filter All, show all choices\n        if (filter === 'all') {\n          $choice.css(\n            {\n              display: 'flex'\n            }\n          ).removeClass('su-generator-choice-first')\n        } else { // Else run search\n          var regex = new RegExp(filter, 'gi')\n          // Hide all choices\n          $choice.css({ display: 'none' })\n          // Find searched choices and show\n          $choice.each(\n            function () {\n              // Get shortcode name\n              var group = $(this).data('group')\n              // Show choice if matched\n              if (group.match(regex) !== null) {\n                $(this)\n                  .css({ display: 'flex' })\n                  .removeClass('su-generator-choice-first')\n              }\n            }\n          )\n        }\n        e.preventDefault()\n      }\n    )\n    // Go to home link\n    $('#su-generator').on(\n      'click',\n      '.su-generator-home',\n      function (e) {\n        // Clear search field\n        clearSearch()\n        // Show choices panel\n        showChoicesMode()\n        // Clear selection\n        self.state.mceSelection = ''\n        // Focus search field\n        $search.focus()\n        e.preventDefault()\n      }\n    )\n    // Generator close button\n    $('#su-generator').on(\n      'click',\n      '.su-generator-close',\n      function (e) {\n        // Close popup\n        $.magnificPopup.close()\n        // Prevent default action\n        e.preventDefault()\n      }\n    )\n    // Search field\n    $search.on(\n      {\n        focus: function () {\n          // Clear field\n          clearSearch()\n          // Show choices panel\n          showChoicesMode()\n        },\n        keyup: function (e) {\n          // Prepare vars\n          var $first = $('.su-generator-choice-first:first')\n          var val = $(this).val()\n          var regex = new RegExp(val, 'gi')\n          var best = 0\n          // Hotkey action\n          if (e.keyCode === 13 && $first.length > 0) {\n            e.preventDefault()\n            $(this).val('').blur()\n            $first.trigger('click')\n          }\n          // Hide all choices\n          $choice.css(\n            {\n              display: 'none'\n            }\n          ).removeClass('su-generator-choice-first')\n          // Loop and highlight choices\n          $choice.each(\n            function () {\n              // Get choice data\n              var data = $(this).data()\n              var id = data.shortcode\n              var name = data.name\n              var desc = data.desc\n              var group = data.group\n              var matches = ([id, name, desc, group].join(' ')).match(regex)\n              // Highlight choice if matched\n              if (matches !== null) {\n                // Highlight current choice\n                $(this).css(\n                  {\n                    display: 'flex'\n                  }\n                )\n                // Check for exact match\n                if (val === id) {\n                  // Remove primary class from all choices\n                  $choice.removeClass('su-generator-choice-first')\n                  // Add primary class to the current choice\n                  $(this).addClass('su-generator-choice-first')\n                  // Prevent selecting by matches number\n                  best = 999\n                } else if (matches.length > best) { // Check matches length\n                  // Remove primary class from all choices\n                  $choice.removeClass('su-generator-choice-first')\n                  // Add primary class to the current choice\n                  $(this).addClass('su-generator-choice-first')\n                  // Save the score\n                  best = matches.length\n                }\n              }\n            }\n          )\n          // Remove primary class if search field is empty\n          if (val === '') {\n            $choice.removeClass('su-generator-choice-first')\n          }\n\n          toggleSearchClear()\n        }\n      }\n    )\n    // Clear search button\n    $searchClear.on(\n      'click',\n      function (e) {\n        clearSearch()\n        showChoicesMode()\n        $search.focus()\n        e.preventDefault()\n      }\n    )\n    // Click on shortcode choice\n    $choice.on(\n      'click',\n      function (e) {\n        var $selectedChoice = $(this)\n        // Prepare data\n        var shortcode = $selectedChoice.data('shortcode')\n        var isProChoice = $selectedChoice.hasClass('su-generator-choice-is-pro')\n        // Load shortcode options\n        $.ajax(\n          {\n            type: 'POST',\n            url: ajaxurl,\n            data: {\n              action: 'su_generator_settings',\n              shortcode: shortcode\n            },\n            beforeSend: function () {\n              if (isProChoice) {\n                $settings.removeClass('su-generator-loading').hide()\n                return\n              }\n\n              // Switch to settings panel\n              showSettingsMode(false)\n              // Show loading animation\n              $settings.addClass('su-generator-loading').show()\n            },\n            success: function (data) {\n              // Hide loading animation\n              $settings.removeClass('su-generator-loading')\n              // Insert new HTML\n              $settings.html(data)\n              var isProFeaturesMode = $settings.find('.su-generator-pro-features-banner').length > 0\n              $generator.toggleClass(\n                'su-generator-pro-features-mode',\n                isProFeaturesMode\n              )\n              if (isProChoice) {\n                showSettingsMode(isProFeaturesMode)\n                $settings.show()\n              }\n              // Store server-rendered defaults before applying editor selection or saved settings.\n              self.state.defaultSettings = $.extend({}, self.getSettings())\n              // Apply selected text to the content field\n              var $content = $('#su-generator-content')\n              if (typeof self.state.mceSelection !== 'undefined' && self.state.mceSelection !== '' && $content.attr('type') !== 'hidden') {\n                $content.val(self.state.mceSelection)\n              }\n              // Init range pickers\n              $('.su-generator-range-picker').each(\n                function (index) {\n                  var $picker = $(this)\n                  var $val = $picker.find('input')\n                  var min = $val.attr('min')\n                  var max = $val.attr('max')\n                  var step = $val.attr('step')\n                  // Apply noUIslider\n                  $val.simpleSlider(\n                    {\n                      snap: true,\n                      step: step,\n                      range: [min, max]\n                    }\n                  )\n                  $val.show()\n                  $val.on(\n                    'keyup blur',\n                    function (e) {\n                      $val.simpleSlider('setValue', $val.val())\n                    }\n                  )\n                }\n              )\n              // Init color pickers\n              initColorPickers($settings)\n              // Init new border pickers\n              initBorderNewPickers($settings)\n              // Init image sourse pickers\n              $('.su-generator-isp').each(\n                function () {\n                  var $picker = $(this)\n                  var $sources = $picker.find('.su-generator-isp-sources')\n                  var $source = $picker.find('.su-generator-isp-source')\n                  var $addMedia = $picker.find('.su-generator-isp-add-media')\n                  var $images = $picker.find('.su-generator-isp-images')\n                  var $cats = $picker.find('.su-generator-isp-categories')\n                  var $taxes = $picker.find('.su-generator-isp-taxonomies')\n                  var $terms = $('.su-generator-isp-terms')\n                  var $val = $picker.find('.su-generator-attr')\n                  var frame\n                  // Update hidden value\n                  var update = function () {\n                    var val = 'none'\n                    var ids = ''\n                    var source = $sources.val()\n                    // Media library\n                    if (source === 'media') {\n                      var images = []\n                      $images.find('span').each(\n                        function (i) {\n                          images[i] = $(this).data('id')\n                        }\n                      )\n                      if (images.length > 0) {\n                        ids = images.join(',')\n                      }\n                    }\n                    // Category\n                    else if (source === 'category') {\n                      var categories = $cats.val() || []\n                      if (categories.length > 0) {\n                        ids = categories.join(',')\n                      }\n                    }\n                    // Taxonomy\n                    else if (source === 'taxonomy') {\n                      var tax = $taxes.val() || ''\n                      var terms = $terms.val() || []\n                      if (tax !== '0' && terms.length > 0) {\n                        val = 'taxonomy: ' + tax + '/' + terms.join(',')\n                      }\n                    }\n                    // Deselect\n                    else if (source === '0') {\n                      val = 'none'\n                    }\n                    // Other options\n                    else {\n                      val = source\n                    }\n                    if (ids !== '') {\n                      val = source + ': ' + ids\n                    }\n                    $val.val(val).trigger('change')\n                  }\n                  // Switch source\n                  $sources.on(\n                    'change',\n                    function (e) {\n                      var source = $(this).val()\n                      e.preventDefault()\n                      $source.removeClass('su-generator-isp-source-open')\n                      if (source.indexOf(':') === -1) {\n                        $picker.find('.su-generator-isp-source-' + source).addClass('su-generator-isp-source-open')\n                      }\n                      update()\n                    }\n                  )\n                  // Remove image\n                  $images.on(\n                    'click',\n                    'span i',\n                    function () {\n                      $(this).parent('span').css('border-color', '#f03').fadeOut(\n                        300,\n                        function () {\n                          $(this).remove()\n                          update()\n                        }\n                      )\n                    }\n                  )\n                  // Add image\n                  $addMedia.click(\n                    function (e) {\n                      e.preventDefault()\n                      if (typeof (frame) !== 'undefined') {\n                        frame.close()\n                      }\n                      frame = wp.media.frames.su_media_frame_1 = wp.media(\n                        {\n                          title: SUGL10n.isp_media_title,\n                          library: {\n                            type: 'image'\n                          },\n                          button: {\n                            text: SUGL10n.isp_media_insert\n                          },\n                          multiple: true\n                        }\n                      )\n                      frame.on('open', function () {\n                        $('.mfp-wrap').addClass('hidden')\n                      })\n                      frame.on('close', function () {\n                        $('.mfp-wrap').removeClass('hidden')\n                      })\n                      frame.on(\n                        'select',\n                        function () {\n                          var files = frame.state().get('selection').toJSON()\n                          $images.find('em').remove()\n                          $.each(\n                            files,\n                            function (i) {\n                              $images.append('<span data-id=\"' + this.id + '\"><img src=\"' + this.url + '\" alt=\"\" /><i class=\"sui sui-times\"></i></span>')\n                            }\n                          )\n                          update()\n                        }\n                      ).open()\n                    }\n                  )\n                  // Sort images\n                  $images.sortable(\n                    {\n                      revert: 200,\n                      containment: $picker,\n                      tolerance: 'pointer',\n                      stop: function () {\n                        update()\n                      }\n                    }\n                  )\n                  // Select categories and terms\n                  $cats.on('change', update)\n                  $terms.on('change', update)\n                  // Select taxonomy\n                  $taxes.on(\n                    'change',\n                    function () {\n                      var $cont = $(this).parents('.su-generator-isp-source')\n                      var tax = $(this).val()\n                      // Remove terms\n                      $terms.hide().find('option').remove()\n                      update()\n                      // Taxonomy is not selected\n                      if (tax === '0') {\n\n                      } else { // Taxonomy selected\n                        var ajaxTermSelect = $.ajax(\n                          {\n                            url: ajaxurl,\n                            type: 'post',\n                            dataType: 'html',\n                            data: {\n                              action: 'su_generator_get_terms',\n                              tax: tax,\n                              class: 'su-generator-isp-terms',\n                              multiple: true,\n                              size: 10\n                            },\n                            beforeSend: function () {\n                              if (typeof ajaxTermSelect === 'object') {\n                                ajaxTermSelect.abort()\n                              }\n                              $terms.html('').attr('disabled', true).hide()\n                              $cont.addClass('su-generator-loading')\n                            },\n                            success: function (data) {\n                              $terms.html(data).attr('disabled', false).show()\n                              $cont.removeClass('su-generator-loading')\n                            }\n                          }\n                        )\n                      }\n                    }\n                  )\n                }\n              )\n              // Init media buttons\n              $('.su-generator-upload-button').each(\n                function () {\n                  var $button = $(this)\n                  var $val = $(this).parents('.su-generator-attr-container').find('input:text')\n                  var file\n                  $button.on(\n                    'click',\n                    function (e) {\n                      e.preventDefault()\n                      e.stopPropagation()\n                      // If the frame already exists, reopen it\n                      if (typeof (file) !== 'undefined') {\n                        file.close()\n                      }\n                      // Create WP media frame.\n                      file = wp.media.frames.su_media_frame_2 = wp.media(\n                        {\n                          // Title of media manager frame\n                          title: SUGL10n.upload_title,\n                          button: {\n                            // Button text\n                            text: SUGL10n.upload_insert\n                          },\n                          // Do not allow multiple files, if you want multiple, set true\n                          multiple: false\n                        }\n                      )\n                      // callback for selected image\n                      file.on(\n                        'select',\n                        function () {\n                          var attachment = file.state().get('selection').first().toJSON()\n                          $val.val(attachment.url).trigger('change')\n                        }\n                      )\n                      file.on('open', function () {\n                        $('.mfp-wrap').addClass('hidden')\n                      })\n                      file.on('close', function () {\n                        $('.mfp-wrap').removeClass('hidden')\n                      })\n                      // Open modal\n                      file.open()\n                    }\n                  )\n                }\n              )\n              // Init icon pickers\n              $('.su-generator-icon-picker-button').each(\n                function () {\n                  var $button = $(this)\n                  var $field = $(this).parents('.su-generator-attr-container')\n                  var $val = $field.find('.su-generator-attr')\n                  var $picker = $field.find('.su-generator-icon-picker')\n                  var $filter = $picker.find('input:text')\n                  $button.click(\n                    function (e) {\n                      $picker.toggleClass('su-generator-icon-picker-visible')\n                      $filter.val('').trigger('keyup')\n                      if ($picker.hasClass('su-generator-icon-picker-loaded')) {\n                        return\n                      }\n                      // Load icons\n                      $.ajax(\n                        {\n                          type: 'post',\n                          url: ajaxurl,\n                          data: {\n                            action: 'su_generator_get_icons'\n                          },\n                          dataType: 'html',\n                          beforeSend: function () {\n                            // Show loading animation\n                            $picker.addClass('su-generator-loading')\n                            // Add loaded class\n                            $picker.addClass('su-generator-icon-picker-loaded')\n                          },\n                          success: function (data) {\n                            $picker.append(data)\n                            var $icons = $picker.children('i')\n                            $icons.click(\n                              function (e) {\n                                $val.val('icon: ' + $(this).attr('title'))\n                                $picker.removeClass('su-generator-icon-picker-visible')\n                                $val.trigger('change')\n                                e.preventDefault()\n                              }\n                            )\n                            $filter.on(\n                              {\n                                keyup: function () {\n                                  var val = $(this).val()\n                                  var regex = new RegExp(val, 'gi')\n                                  // Hide all choices\n                                  $icons.hide()\n                                  // Find searched choices and show\n                                  $icons.each(\n                                    function () {\n                                      // Get shortcode name\n                                      var name = $(this).attr('title')\n                                      // Show choice if matched\n                                      if (name.match(regex) !== null) {\n                                        $(this).show()\n                                      }\n                                    }\n                                  )\n                                },\n                                focus: function () {\n                                  $(this).val('')\n                                  $icons.show()\n                                }\n                              }\n                            )\n                            $picker.removeClass('su-generator-loading')\n                          }\n                        }\n                      )\n                      e.preventDefault()\n                    }\n                  )\n                }\n              )\n              // Init switches\n              $('.su-generator-switch').click(\n                function (e) {\n                  // Prepare data\n                  var $switch = $(this)\n                  var $value = $switch.parent().children('input')\n                  var isOn = $value.val() === 'yes'\n                  // Disable\n                  if (isOn) {\n                    // Change value\n                    $value.val('no').trigger('change')\n                  } else { // Enable\n                    // Change value\n                    $value.val('yes').trigger('change')\n                  }\n                  e.preventDefault()\n                }\n              )\n              $('.su-generator-switch-value').on(\n                'change',\n                function () {\n                  // Prepare data\n                  var $value = $(this)\n                  var $switch = $value.parent().children('.su-generator-switch')\n                  var value = $value.val()\n                  // Disable\n                  if (value === 'yes') {\n                    $switch\n                      .removeClass('su-generator-switch-no')\n                      .addClass('su-generator-switch-yes')\n                      .attr('aria-checked', 'true')\n                  } else if (value === 'no') { // Enable\n                    $switch\n                      .removeClass('su-generator-switch-yes')\n                      .addClass('su-generator-switch-no')\n                      .attr('aria-checked', 'false')\n                  }\n                }\n              )\n              // Init searchable selects\n              initSearchableSelects($settings)\n              // Init sortable checkbox fields\n              initSortableCheckboxes($settings)\n              // Init image radio fields\n              initImageRadios($settings)\n              // Init radio fields\n              initRadios($settings)\n              // Init tax_term selects\n              $('select#su-generator-attr-taxonomy').on(\n                'change',\n                function () {\n                  var $taxonomy = $(this)\n                  var tax = $taxonomy.val()\n                  var $terms = $('select#su-generator-attr-tax_term')\n                  // Load new options\n                  window.su_generator_get_terms = $.ajax(\n                    {\n                      type: 'POST',\n                      url: ajaxurl,\n                      data: {\n                        action: 'su_generator_get_terms',\n                        tax: tax,\n                        noselect: true\n                      },\n                      dataType: 'html',\n                      beforeSend: function () {\n                        // Check previous requests\n                        if (typeof window.su_generator_get_terms === 'object') {\n                          window.su_generator_get_terms.abort()\n                        }\n                        // Show loading animation\n                        $terms.parent().addClass('su-generator-loading')\n                      },\n                      success: function (data) {\n                        // Remove previous options\n                        $terms.find('option').remove()\n                        // Append new options\n                        $terms.append(data)\n                        // Hide loading animation\n                        $terms.parent().removeClass('su-generator-loading')\n                      }\n                    }\n                  )\n                }\n              )\n              // Init shadow pickers\n              $('.su-generator-shadow-picker').each(\n                function (index) {\n                  var $picker = $(this)\n                  var $fields = $picker.find('.su-generator-shadow-picker-field input')\n                  var $hoff = $picker.find('.su-generator-sp-hoff')\n                  var $voff = $picker.find('.su-generator-sp-voff')\n                  var $blur = $picker.find('.su-generator-sp-blur')\n                  var $color = {\n                    cnt: $picker.find('.su-generator-shadow-picker-color'),\n                    value: $picker.find('.su-generator-shadow-picker-color-value'),\n                    wheel: $picker.find('.su-generator-shadow-picker-color-wheel')\n                  }\n                  var $val = $picker.find('.su-generator-attr')\n                  // Init color picker\n                  $color.wheel.farbtastic($color.value)\n                  $color.value.focus(\n                    function () {\n                      $color.wheel.show()\n                    }\n                  )\n                  $color.value.blur(\n                    function () {\n                      $color.wheel.hide()\n                    }\n                  )\n                  // Handle text fields\n                  $fields.on(\n                    'change blur keyup',\n                    function () {\n                      $val.val($hoff.val() + 'px ' + $voff.val() + 'px ' + $blur.val() + 'px ' + $color.value.val()).trigger('change')\n                    }\n                  )\n                  $val.on(\n                    'keyup',\n                    function () {\n                      var value = $(this).val().split(' ')\n                      // Value is correct\n                      if (value.length === 4) {\n                        $hoff.val(value[0].replace('px', ''))\n                        $voff.val(value[1].replace('px', ''))\n                        $blur.val(value[2].replace('px', ''))\n                        $color.value.val(value[3])\n                        $fields.trigger('keyup')\n                      }\n                    }\n                  )\n                }\n              )\n              // Init border pickers\n              $('.su-generator-border-picker').each(\n                function (index) {\n                  var $picker = $(this)\n                  var $fields = $picker.find('.su-generator-border-picker-field input, .su-generator-border-picker-field select')\n                  var $width = $picker.find('.su-generator-bp-width')\n                  var $style = $picker.find('.su-generator-bp-style')\n                  var $color = {\n                    cnt: $picker.find('.su-generator-border-picker-color'),\n                    value: $picker.find('.su-generator-border-picker-color-value'),\n                    wheel: $picker.find('.su-generator-border-picker-color-wheel')\n                  }\n                  var $val = $picker.find('.su-generator-attr')\n                  // Init color picker\n                  $color.wheel.farbtastic($color.value)\n                  $color.value.focus(\n                    function () {\n                      $color.wheel.show()\n                    }\n                  )\n                  $color.value.blur(\n                    function () {\n                      $color.wheel.hide()\n                    }\n                  )\n                  // Handle text fields\n                  $fields.on(\n                    'change blur keyup',\n                    function () {\n                      $val.val($width.val() + 'px ' + $style.val() + ' ' + $color.value.val()).trigger('change')\n                    }\n                  )\n                  $val.on(\n                    'keyup',\n                    function () {\n                      var value = $(this).val().split(' ')\n                      // Value is correct\n                      if (value.length === 3) {\n                        $width.val(value[0].replace('px', ''))\n                        $style.val(value[1])\n                        $color.value.val(value[2])\n                        $fields.trigger('keyup')\n                      }\n                    }\n                  )\n                }\n              )\n              // Remove skip class when setting is changed\n              $settings.find('.su-generator-attr').on(\n                'change keyup blur',\n                function () {\n                  var $cnt = $(this).parents('.su-generator-attr-container')\n                  var _default = $cnt.data('default')\n                  var val = $(this).val()\n                  // Value is changed\n                  if (val != _default) {\n                    $cnt.removeClass('su-generator-skip')\n                  } else {\n                    $cnt.addClass('su-generator-skip')\n                  }\n                }\n              )\n              // Bind updating shortcode preview on settings changes\n              $settings.find('input, textarea, select').on(\n                'change keyup blur',\n                function () {\n                  self.updateShortcodePreview()\n                  self.updatePreview()\n                }\n              )\n              // Init value setters\n              $('.su-generator-set-value').click(\n                function (e) {\n                  $(this).parents('.su-generator-attr-container').find('input').val($(this).text()).trigger('change')\n                }\n              )\n              // Init settings tabs after controls are ready.\n              initGeneratorTabs($settings)\n              // Save selected value\n              $selected.val(shortcode)\n              self.updateShortcodePreview()\n              self.updatePreview(true)\n              // Load last used preset\n              abortLastUsedRequest()\n              var lastUsedRequest = $.ajax(\n                {\n                  type: 'GET',\n                  url: ajaxurl,\n                  data: {\n                    action: 'su_generator_get_preset',\n                    id: 'last_used',\n                    shortcode: shortcode,\n                    nonce: $('#su_generator_presets_nonce').val()\n                  },\n                  beforeSend: function () {\n                    // Show loading animation\n                    // $settings.addClass('su-generator-loading');\n                  },\n                  success: function (data) {\n                    // Remove loading animation\n                    // $settings.removeClass('su-generator-loading');\n                    // Set new settings\n                    self.setSettings(data)\n                    // Apply selected text to the content field\n                    var $content = $('#su-generator-content')\n                    if (typeof self.state.mceSelection !== 'undefined' && self.state.mceSelection !== '' && $content.attr('type') !== 'hidden') {\n                      $content.val(self.state.mceSelection)\n                      self.updateShortcodePreview()\n                      self.updatePreview(true)\n                    }\n                  },\n                  complete: function () {\n                    if (self.state.lastUsedRequest === lastUsedRequest) {\n                      self.state.lastUsedRequest = null\n                    }\n                  },\n                  dataType: 'json'\n                }\n              )\n              self.state.lastUsedRequest = lastUsedRequest\n            },\n            dataType: 'html'\n          }\n        )\n      }\n    )\n    // Insert shortcode\n    $('#su-generator').on('click', '.su-generator-insert', self.insertShortcode)\n    // Copy shortcode\n    $('#su-generator').on('click', '.su-generator-copy', self.copyShortcode)\n    // Reset shortcode settings\n    $('#su-generator').on('click', '.su-generator-reset', self.resetSettings)\n    var gp_hover_timer\n    // Presets manager - mouseenter\n    $('#su-generator').on(\n      'mouseenter click',\n      '.su-generator-presets',\n      function () {\n        clearTimeout(gp_hover_timer)\n        $('.su-gp-popup').show()\n      }\n    )\n    // Presets manager - mouseleave\n    $('#su-generator').on(\n      'mouseleave',\n      '.su-generator-presets',\n      function () {\n        gp_hover_timer = window.setTimeout(\n          function () {\n            $('.su-gp-popup').fadeOut(200)\n          },\n          600\n        )\n      }\n    )\n    // Presets manager - add new preset\n    $('#su-generator').on(\n      'click',\n      '.su-gp-new',\n      function (e) {\n        // Prepare data\n        var $container = $(this).parents('.su-generator-presets')\n        var $list = $('.su-gp-list')\n        var id = new Date().getTime()\n        // Ask for preset name\n        var name = prompt(SUGL10n.presets_prompt_msg, SUGL10n.presets_prompt_value)\n        // Name is entered\n        if (name !== '' && name !== null) {\n          // Hide default text\n          $list.find('b').hide()\n          // Add new option\n          $list.append('<span data-id=\"' + id + '\"><em>' + name + '</em><i class=\"sui sui-times\"></i></span>')\n          // Perform AJAX request\n          self.addPreset(id, name)\n        }\n      }\n    )\n    // Presets manager - load preset\n    $('#su-generator').on(\n      'click',\n      '.su-gp-list span',\n      function (e) {\n        // Prepare data\n        var shortcode = $('.su-generator-presets').data('shortcode')\n        var id = $(this).data('id')\n        var $insert = $('.su-generator-insert')\n        // Hide popup\n        $('.su-gp-popup').hide()\n        // Disable hover timer\n        clearTimeout(gp_hover_timer)\n        // Get the preset\n        $.ajax(\n          {\n            type: 'GET',\n            url: ajaxurl,\n            data: {\n              action: 'su_generator_get_preset',\n              id: id,\n              shortcode: shortcode,\n              nonce: $('#su_generator_presets_nonce').val()\n            },\n            beforeSend: function () {\n              // Disable insert button\n              $insert.addClass('button-primary-disabled').attr('disabled', true)\n            },\n            success: function (data) {\n              // Enable insert button\n              $insert.removeClass('button-primary-disabled').attr('disabled', false)\n              // Set new settings\n              self.setSettings(data)\n            },\n            dataType: 'json'\n          }\n        )\n        // Prevent default action\n        e.preventDefault()\n        e.stopPropagation()\n      }\n    )\n    // Presets manager - remove preset\n    $('#su-generator').on(\n      'click',\n      '.su-gp-list i',\n      function (e) {\n        // Prepare data\n        var $preset = $(this).parent('span')\n        var id = $preset.data('id')\n        // Remove DOM element\n        removePresetElement($preset)\n        // Perform ajax request\n        self.removePreset(id)\n        // Prevent <span> action\n        e.stopPropagation()\n        // Prevent default action\n        e.preventDefault()\n      }\n    )\n  }\n\n  self.addPreset = function (id, name) {\n    // Prepare shortcode name and current settings\n    var shortcode = $('.su-generator-presets').data('shortcode')\n    var settings = self.getSettings()\n    // Perform AJAX request\n    $.ajax(\n      {\n        type: 'POST',\n        url: ajaxurl,\n        data: {\n          action: 'su_generator_add_preset',\n          id: id,\n          name: name,\n          shortcode: shortcode,\n          settings: settings,\n          nonce: $('#su_generator_presets_nonce').val()\n        }\n      }\n    )\n  }\n\n  self.removePreset = function (id) {\n    // Get current shortcode name\n    var shortcode = $('.su-generator-presets').data('shortcode')\n    // Perform AJAX request\n    $.ajax(\n      {\n        type: 'POST',\n        url: ajaxurl,\n        data: {\n          action: 'su_generator_remove_preset',\n          id: id,\n          shortcode: shortcode,\n          nonce: $('#su_generator_presets_nonce').val()\n        }\n      }\n    )\n  }\n\n  self.parseSettings = function () {\n    var settingsSelector = $('#su-generator-option-skip').val() === 'on'\n      ? '#su-generator-settings .su-generator-attr-container:not(.su-generator-skip) .su-generator-attr'\n      : '#su-generator-settings .su-generator-attr-container .su-generator-attr'\n    // Prepare data\n    var query = $selected.val()\n    var prefix = $prefix.val()\n    var $settings = $(settingsSelector)\n    var $content = $('textarea#su-generator-content')\n    var content = $content.length ? $content.val() : 'false'\n    var result = new String('')\n    // Open shortcode\n    result += '[' + prefix + query\n    // Add shortcode attributes\n    $settings.each(\n      function () {\n        // Prepare field and value\n        var $this = $(this)\n        var value = ''\n        // Selects\n        if ($this.is('select')) {\n          value = $this.find('option:selected').val()\n        }\n        // Other fields\n        else {\n          value = $this.val()\n        }\n        // Check that value is not empty\n        if (value == null) {\n          value = ''\n        } else if (typeof value === 'array') {\n          value = value.join(',')\n        }\n        // Add attribute\n        if (value !== '') {\n          result += ' ' + $(this).attr('name') + '=\"' + $(this).val().toString().replace(/\"/gi, \"'\") + '\"'\n        }\n      }\n    )\n    // End of opening tag\n    result += ']'\n    // Wrap shortcode if content presented\n    if (content != 'false') {\n      result += content + '[/' + prefix + query + ']'\n    }\n    // Return result\n    return result\n  }\n\n  self.getSettings = function () {\n    // Prepare data\n    var query = $selected.val()\n    var $settings = $('#su-generator-settings .su-generator-attr')\n    var $content = $('textarea#su-generator-content')\n    var content = $content.length ? $content.val() : 'false'\n    var data = {}\n    // Add shortcode attributes\n    $settings.each(\n      function (i) {\n        // Prepare field and value\n        var $this = $(this)\n        var value = ''\n        var name = $this.attr('name')\n        // Selects\n        if ($this.is('select')) {\n          value = $this.find('option:selected').val()\n        }\n        // Other fields\n        else {\n          value = $this.val()\n        }\n        // Check that value is not empty\n        if (value == null) {\n          value = ''\n        }\n        // Save value\n        data[name] = value\n      }\n    )\n    // Add content\n    data.content = content.toString()\n    // Return data\n    return data\n  }\n\n  self.setSettings = function (data) {\n    // Prepare data\n    var $settings = $('#su-generator-settings .su-generator-attr')\n    var $content = $('#su-generator-content')\n    // Loop through settings\n    $settings.each(\n      function () {\n        var $this = $(this)\n        var name = $this.attr('name')\n        // Data contains value for this field\n        if (data.hasOwnProperty(name)) {\n          // Set new value\n          $this.val(data[name])\n          $this.trigger('keyup').trigger('change').trigger('blur')\n        }\n      }\n    )\n    // Set content\n    if (data.hasOwnProperty('content')) {\n      $content.val(data.content).trigger('keyup').trigger('change').trigger('blur')\n    }\n    // Update preview\n    self.updateShortcodePreview()\n    self.updatePreview(true)\n  }\n\n  self.setShortcodePreview = function (shortcode) {\n    var $shortcodePreview = $('#su-generator-shortcode-preview')\n    var $code = $shortcodePreview.find('code')\n\n    if ($code.length) {\n      $code.text(shortcode)\n    } else {\n      $shortcodePreview.text(shortcode)\n    }\n  }\n\n  self.updateShortcodePreview = function () {\n    self.setShortcodePreview(self.parseSettings())\n  }\n\n  self.resetSettings = function (e) {\n    if (!self.state.defaultSettings) {\n      return\n    }\n\n    abortLastUsedRequest()\n    self.setSettings($.extend({}, self.state.defaultSettings))\n    removePresetElement($('.su-gp-list span').filter(function () {\n      return String($(this).data('id')) === 'last_used'\n    }))\n    self.removePreset('last_used')\n\n    if (e) {\n      e.preventDefault()\n    }\n  }\n\n  self.copyShortcode = function (e) {\n    var $button = $(this)\n    var shortcode = self.parseSettings()\n    var showCopied = function () {\n      setCopyButtonState($button, true)\n\n      window.setTimeout(\n        function () {\n          setCopyButtonState($button, false)\n        },\n        1600\n      )\n    }\n\n    self.setShortcodePreview(shortcode)\n    self.addPreset('last_used', SUGL10n.last_used)\n\n    if (navigator.clipboard && navigator.clipboard.writeText) {\n      $.when(navigator.clipboard.writeText(shortcode))\n        .done(showCopied)\n        .fail(\n          function () {\n            if (fallbackCopyText(shortcode)) {\n              showCopied()\n            }\n          }\n        )\n\n      e.preventDefault()\n      return\n    }\n\n    if (fallbackCopyText(shortcode)) {\n      showCopied()\n    }\n\n    e.preventDefault()\n  }\n\n  self.updatePreview = function (forced) {\n    // Prepare data\n    var $preview = $('#su-generator-preview')\n    var shortcode = self.parseSettings()\n    var previous = $result.text()\n    // Check forced mode\n    forced = forced || false\n    // Break if preview box is hidden (preview isn't enabled)\n    if (!$preview.is(':visible')) {\n      return\n    }\n    // Check shortcode is changed is this is not a forced mode\n    if (shortcode === previous && !forced) {\n      return\n    }\n    // Run timer to filter often calls\n    window.clearTimeout(self.state.preview.timer)\n    self.state.preview.timer = window.setTimeout(\n      function () {\n        self.state.preview.request = $.ajax(\n          {\n            type: 'POST',\n            url: ajaxurl,\n            cache: false,\n            data: {\n              action: 'su_generator_preview',\n              shortcode: shortcode,\n              nonce: $('#su_generator_preview_nonce').val()\n            },\n            beforeSend: function () {\n              // Abort previous requests\n              if (self.state.preview.request) {\n                self.state.preview.request.abort()\n              }\n              // Show loading animation\n              $preview.addClass('su-generator-loading').html('')\n            },\n            success: function (data) {\n              // Hide loading animation and set new HTML\n              $preview.html(data).removeClass('su-generator-loading')\n            },\n            dataType: 'html'\n          }\n        )\n      },\n      300\n    )\n    // Save shortcode to div\n    $result.text(shortcode)\n  }\n\n  self.insert = function (context, args) {\n    if (typeof context !== 'string' || typeof args !== 'object') {\n      return\n    }\n\n    self.state.context = context\n    self.state.insertArgs = args\n\n    var preSelectedShortcode = args.shortcode || ''\n\n    var mfpOptions = {\n      type: 'inline',\n      alignTop: true,\n      closeOnBgClick: false,\n      mainClass: 'su-generator-mfp',\n      items: {\n        src: '#su-generator'\n      },\n      callbacks: {}\n    }\n\n    mfpOptions.callbacks.open = () => {\n      if (preSelectedShortcode) {\n        $choice.filter(`[data-shortcode=\"${preSelectedShortcode}\"]`).trigger('click')\n      } else {\n        window.setTimeout(() => $search.focus(), 200)\n      }\n\n      if (\n        typeof tinyMCE !== 'undefined' &&\n\t\t\t\ttinyMCE.activeEditor != null &&\n\t\t\t\ttinyMCE.activeEditor.hasOwnProperty('selection')\n      ) {\n        self.state.mceSelection = tinyMCE.activeEditor.selection.getContent({ format: 'text' })\n      }\n    }\n\n    mfpOptions.callbacks.close = () => {\n      clearSearch()\n      showChoicesMode()\n\n      self.state.mceSelection = ''\n    }\n\n    $.magnificPopup.open(mfpOptions)\n  }\n\n  self.insertShortcode = function () {\n    var shortcode = self.parseSettings()\n\n    self.addPreset('last_used', SUGL10n.last_used)\n\n    $.magnificPopup.close()\n\n    $result.text(shortcode)\n\n    if (self.state.context === 'html') {\n      var HTMLEditor = document.getElementById(self.state.insertArgs.editorID)\n      self.insertAtCaret(HTMLEditor, shortcode)\n    }\n\n    if (self.state.context === 'classic') {\n      window.wp.media.editor.insert(shortcode)\n    }\n\n    if (self.state.context === 'block') {\n      var props = self.state.insertArgs.props\n\n      if (props.attributes.hasOwnProperty('content')) {\n        props.setAttributes({ content: props.attributes.content + shortcode })\n      } else if (props.name === 'core/shortcode') {\n        var originalText = props.attributes.hasOwnProperty('text')\n          ? props.attributes.text\n          : ''\n\n        props.setAttributes({ text: originalText + shortcode })\n      }\n    }\n\n    if (self.state.context === 'callback') {\n      if (typeof self.state.insertArgs.callback === 'function') {\n        self.state.insertArgs.callback(shortcode)\n      }\n    }\n  }\n\n  self.insertAtCaret = (field, text) => {\n    var start = field.selectionStart\n    field.value = field.value.substring(0, start) + text + field.value.substring(start)\n    field.focus()\n    field.selectionStart = start + text.length\n  }\n\n  return {\n    init: self.init,\n    insert: self.insert\n  }\n})(jQuery)\n\njQuery(document).ready(window.SUG.App.init)\n"]}

Directory Contents

Dirs: 0 × Files: 2
Name Size Perms Modified Actions
32.64 KB lrw-r--r-- 2026-06-24 08:09:49
Edit Download
132.70 KB lrw-r--r-- 2026-06-24 08:09:49
Edit Download
If ZipArchive is unavailable, a .tar will be created (no compression).
© 2026 0xNothings — Secure File Manager. All rights reserved. Built with ❤️ & Tailwind x Dark UI