├── .github └── stale.yml ├── .gitignore ├── .idea └── .gitignore ├── LICENSE ├── README.md └── popover_ex ├── assets ├── jquery.formchimp.js ├── jquery.formchimp.min.js ├── jquery.wait.js ├── jquery.wait.min.js ├── marked.min.js ├── replacer.js ├── replacer.min.js ├── underscore-min.js ├── underscore-min.map ├── versioncompare.js └── versioncompare.min.js ├── css ├── popoverex.edit.css └── style.css ├── languages ├── de_DE.json ├── en_GB.json └── ru_RU.json ├── plugin.php ├── views ├── WidgetkitExPlugin.php ├── _content.php ├── edit.php └── widget.php └── widget.svg /.github/stale.yml: -------------------------------------------------------------------------------- 1 | # Number of days of inactivity before an issue becomes stale 2 | daysUntilStale: 30 3 | # Number of days of inactivity before a stale issue is closed 4 | daysUntilClose: 14 5 | # Issues with these labels will never be considered stale 6 | exemptLabels: 7 | - pinned 8 | - security 9 | # Label to use when marking an issue as stale 10 | staleLabel: wontfix 11 | # Comment to post when marking an issue as stale. Set to `false` to disable 12 | markComment: > 13 | This issue has been automatically marked as stale because it has not had 14 | recent activity. It will be closed if no further activity occurs. Thank you 15 | for your contributions. 16 | # Comment to post when closing a stale issue. Set to `false` to disable 17 | closeComment: false -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Windows thumbnail db 2 | Thumbs.db 3 | 4 | # OSX files 5 | .DS_Store 6 | 7 | #log files 8 | *.log 9 | 10 | #bak files 11 | ~* 12 | *.bak 13 | 14 | #archives 15 | *.zip 16 | *.rar -------------------------------------------------------------------------------- /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | # Datasource local storage ignored files 5 | /../../../../:\git\widgetkit-popover-ex\.idea/dataSources/ 6 | /dataSources.local.xml 7 | # Editor-based HTTP Client requests 8 | /httpRequests/ 9 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![Version](https://img.shields.io/badge/Release-v1.2.5-green.svg?style=flat) ![Widgetkit](https://img.shields.io/badge/Widgetkit-v2.4.x+-green.svg?style=flat) ![Widgetkit 3](https://img.shields.io/badge/Widgetkit_3-not_supported-red.svg?style=flat) ![Joomla](https://img.shields.io/badge/Joomla!-v3.4.x+-yellow.svg?style=flat) ![Wordpress](https://img.shields.io/badge/Wordpress-v4.4.x+-yellow.svg?style=flat) ![PHP7](https://img.shields.io/badge/PHP7-compatible-blue.svg?style=flat) ![YoothemePro](https://img.shields.io/badge/YoothemePro-compatible-blue.svg?style=flat) 2 | 3 | ![PopoverEx widget logo](https://raw.githubusercontent.com/wiki/rvalitov/widgetkit-popover-ex/images/logo.png) 4 | 5 | # Overview 6 | **PopoverEx** is an advanced Popover widget for [Yootheme Widgetkit2](https://yootheme.com/widgetkit). After installation it becomes available in the Widgets list as a "native" widget and can be used as any other widget. The widget allows to position each item through coordinates on top of a main image and display content inside a dropdown. 7 | 8 | __Notice about Widgetkit 3 and status of this project__: Yootheme [announced](https://yootheme.com/blog/2021/01/26/widgetkit-3.0-completely-rebuilt-with-uikit-3) a third version of Widgetkit on January 26th, 2021. 9 | I received reports that after upgrade to Widgetkit 3 my widgets do not work properly. 10 | I'm very sorry that I currently not able to devote my time to this project to develop it further. 11 | In its current state it's "bug free" and works with Widgetkit 2 and Joomla 3. 12 | Currently, I don't have plans to add support for Widgetkit 3 or add any other serious improvements. 13 | This project has been my pet project that I was doing in my free time, and I've been happy to share it for free with the community. 14 | As I stopped using Widgetkit in my own websites, I lost motivation in further updates to this project. 15 | I'm happy if my work and widgets were of any help or use in your websites! 16 | 17 | ## Features 18 | ### Basic Features 19 | * **Collection of toggle icons** - you can choose a toggle icon from the predefined list. 20 | * **Hover/Click behavior** - you can select how the widget will respond: the dropdown can be displayed when the user moves their mouse over the icon or when they click it. 21 | * **Panel styles** - different panel styles for the dropdown. 22 | * **Compatible with Yootheme Pro** - you can use this widget with [Yootheme Pro](https://yootheme.com/pro/). 23 | * **Backward compatibility** - all other behavior, styling and features of the original [Popover widget](http://yootheme.com/demo/widgetkit/joomla/index.php/home/popover) are preserved. 24 | 25 | ### Unique Features 26 | The new features that the PopoverEx has and that are not available in the original Popover widget: 27 | 28 | * **Custom Default Toggle Icon** - a custom icon can be set very easy from the control panel. 29 | * **Responsive Toggle Icon** - you can setup the size and resize behavior of the icon. 30 | * **Unique Icons for Every Item** - you can setup individual unique icons for any element. 31 | * **Opacity control** - you can define the transparency level of the icons. 32 | * **Tooltips for all options** - it's much easier to use the widget, because tooltips are available for all settings. 33 | * **Update notifications** - you will be notified if new versions of the widget are available. 34 | * **Multilingual interface**, translated into languages: 35 | * **English** (en_GB) 36 | * **Русский** (ru_RU) 37 | * **Deutsch** (de_DE) 38 | * Your language not listed? You can help with translation, [read more](https://github.com/rvalitov/widgetkit-popover-ex/wiki/Translation-issues). 39 | 40 | # Supported platforms 41 | * The core code is based on Widgetkit 2.5.2 and was updated since accordingly. This widget should work with any Widgetkit 2.4.x and later. Tested on Widgetkit 2.5.x, 2.6.x, 2.7.x, 2.8.x, 2.9.x. 42 | * PHP5 and PHP7 compatible 43 | * Joomla 3.4.x or later required 44 | * Wordpress 4.4.x or later 45 | 46 | **Read full system requirements [here](https://github.com/rvalitov/widgetkit-popover-ex/wiki/System-requirements).** 47 | 48 | # How to install? 49 | The installation procedure is described [here](https://github.com/rvalitov/widgetkit-popover-ex/wiki/How-to-install). 50 | 51 | # The manual 52 | Some issues about using the widget are available in the [Wiki area](https://github.com/rvalitov/widgetkit-popover-ex/wiki). 53 | 54 | # Authors, Contributors and Acknowledgment 55 | * This widget is created by [Ramil Valitov](http://www.valitov.me). 56 | * The code is based on the original [Popover widget](http://yootheme.com/demo/widgetkit/joomla/index.php/home/popover) by [Yootheme](http://yootheme.com/). 57 | * Logo is based on [Tango Icon Library](https://www.iconfinder.com/iconsets/tango-icon-library) 58 | * The default toggle icon is created by [Icons Land](https://www.iconfinder.com/iconsets/softwaredemo) 59 | * Thanks to [Marco Rensch](https://github.com/marcorensch) for translation to German language. 60 | 61 | ## Disclaimer 62 | This project is NOT affiliated with, endorsed, or sponsored by the Yootheme. Widgetkit, its name, trademark, and other aspects of the app are trademarked and owned by their respective owners. 63 | 64 | # Feedback 65 | Your feedback is very appreciated. If you want to see new features in this module, please, post your ideas and feature requests in the [issue tracker](https://github.com/rvalitov/widgetkit-popover-ex/issues). 66 | 67 | # Donations 68 | This is a free project that I do in my spare time. If you find it useful, then you can support it by donating some amount of money. This will help to keep the project alive and making it better: develop new features, make new releases, fix bugs, update the [manuals](https://github.com/rvalitov/widgetkit-popover-ex/wiki), and provide at least some minimal technical support (there's an [issue tracker here](https://github.com/rvalitov/widgetkit-popover-ex/issues)). 69 | 70 | You can choose any payment method you prefer: 71 | 72 | Your Currency | Payment Method 73 | ------------ | ------------- 74 | Euro € | [![Card](https://img.shields.io/badge/EURO-Debit/Credit%20Card-6f202b.svg?style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=BJJF3E6DBRYHA) [![PayPal](https://img.shields.io/badge/EURO-PayPal-blue.svg?style=flat)](https://www.paypal.me/valitov/0eur) 75 | USD $ | [![Card](https://img.shields.io/badge/USD-Debit/Credit%20Card-6f202b.svg?style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=B8VMNU7SEAU8J) [![PayPal](https://img.shields.io/badge/USD-PayPal-blue.svg?style=flat)](https://www.paypal.me/valitov/0usd) 76 | Russian Ruble ₽ | [![Card](https://img.shields.io/badge/RUB-Debit/Credit%20Card-6f202b.svg?style=flat)](https://money.yandex.ru/to/410011424143476) [![PayPal](https://img.shields.io/badge/RUB-PayPal-blue.svg?style=flat)](https://www.paypal.me/valitov/0rub) [![YandexMoney](https://img.shields.io/badge/RUB-YandexMoney-5b0d56.svg?style=flat)](https://money.yandex.ru/to/410011424143476) 77 | Other | [![Card](https://img.shields.io/badge/OTHER-Debit/Credit%20Card-6f202b.svg?style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=BJJF3E6DBRYHA) [![PayPal](https://img.shields.io/badge/OTHER-PayPal-blue.svg?style=flat)](https://www.paypal.me/valitov) 78 | 79 | # Support or Contact 80 | Having trouble with PopoverEx Widget? May be something has already been described in the [Wiki area](https://github.com/rvalitov/widgetkit-popover-ex/wiki) or reported in the [issue tracker](https://github.com/rvalitov/widgetkit-popover-ex/issues). If you don't find your problem there, then, please, add your issue there. 81 | 82 | Being a free project which I do in my spare time, I hope you understand that I can't offer 24/7 support:) You may contact me via e-mail ramilvalitov@gmail.com, I will try to answer to all of them (if such messages imply an answer), however, not immediately, it may take a few days or a week... so, just be patient. 83 | 84 | Note, that I can answer only to questions and problems directly related to this widget. Answers to basic questions about the widgetkit nature and simple help about how to use widgets in general or how to use Joomla you can find in appropriate forums: 85 | 86 | * [Joomla](http://forum.joomla.org/) 87 | * [Widgetkits](https://yootheme.com/support) 88 | -------------------------------------------------------------------------------- /popover_ex/assets/jquery.formchimp.js: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | 3 | jQuery FormChimp - v1.2.1 4 | A customizable MailChimp ajax plugin for jQuery 5 | Fabio Quarantini - @febba 6 | http://www.fabioquarantini.com/formchimp/ 7 | 8 | ========================================================================== */ 9 | 10 | 11 | ;( function( $, window, document, undefined ) { 12 | 13 | $.fn.formchimp = function( settings ) { 14 | 15 | var $form = $(this); 16 | var $body = $('body'); 17 | var actionUrl = $form.attr('action').replace('/post?', '/post-json?').concat('&c=?'); 18 | var $button = $form.find('[type="submit"]'); 19 | var defaults = { 20 | 'appendElement': $form, // Declare where the new element, containing the messages from Mailchimp will be appended to. 21 | 'buttonSelector': $button, // Set the button selector. 22 | 'buttonText': '', // The message to be written on the submit button after a successful subscription. 23 | 'debug': false, // Activate debug message in console. 24 | 'errorMessage': '', // Set custom error message given when return an error. 25 | 'onMailChimpSuccess': function() {}, // Callback that fires on success. 26 | 'onMailChimpError': function() {}, // Callback that fires on errors. 27 | 'responseClass': "mc-response", // Declare custom element in page for message output. (Set different classes for multiple sign-up forms) 28 | 'successMessage': '', // Set a custom success message. 29 | 'url': actionUrl, // The mailchip list subscription url, to get the JSONP address just change `post` to `post-json` and append `&c=?` at the end. 30 | }; 31 | var originalButtonText = defaults.buttonSelector.text(); 32 | 33 | // Merge default whith settings 34 | $.extend( defaults, settings ); 35 | 36 | // On submit 37 | $( $form ).on( 'submit', function( event ) { 38 | 39 | // Disable default action of submit 40 | event.preventDefault(); 41 | 42 | // Remove status class and add the loading 43 | $body.removeClass('mc-success mc-error').addClass('mc-loading'); 44 | 45 | // If the response container does not exists 46 | if ( $("." + defaults.responseClass).length === 0 ) { 47 | 48 | // Add response container to append element 49 | $responseContainer = $('
').addClass( defaults.responseClass ).appendTo( defaults.appendElement ); 50 | 51 | } else { 52 | 53 | // Remove old message 54 | $responseContainer.html(''); 55 | 56 | } 57 | 58 | // Perform an Ajax request 59 | $.ajax({ 60 | 61 | url: defaults.url, 62 | data: $form.serialize(), 63 | dataType: 'jsonp' 64 | 65 | }).done( function( data ) { 66 | 67 | // If debug is active 68 | if ( defaults.debug ) { 69 | 70 | // Log in cosole the Mailchimp data 71 | console.log( JSON.stringify(data) ); 72 | } 73 | 74 | // Save the Mailchimp data 75 | var responseMessage = data.msg; 76 | 77 | // If the message start with a number and contains "-" 78 | if( !isNaN(responseMessage.charAt(0)) && responseMessage.charAt(2) === '-' ) { 79 | 80 | // Remove first 3 characters 81 | responseMessage = responseMessage.substring(3); 82 | 83 | } 84 | 85 | // Add status class and remove the loading class 86 | $body.addClass('mc-' + data.result).removeClass('mc-loading'); 87 | 88 | // If the Mailchimp result is success 89 | if ( data.result === 'success' ) { 90 | 91 | // If success message parameter is not empty 92 | if ( defaults.successMessage !== '' ) { 93 | 94 | // Replace the default success message with parameter 95 | responseMessage = defaults.successMessage; 96 | 97 | } 98 | 99 | // If button text parameter is not empty 100 | if ( defaults.buttonText !== '' ) { 101 | 102 | // Replace the default button text with parameter 103 | defaults.buttonSelector.text(defaults.buttonText); 104 | 105 | } 106 | 107 | // Add event on error 108 | $(document).trigger('mailChimpSuccess'); 109 | 110 | // Run callback 111 | defaults.onMailChimpSuccess.call(); 112 | 113 | } else { // If there is an error 114 | 115 | // If error message parameter is not empty 116 | if ( defaults.errorMessage !== '' ) { 117 | 118 | // Replace the default error message with parameter 119 | responseMessage = defaults.errorMessage; 120 | 121 | } 122 | 123 | // If button text parameter is not empty 124 | if ( defaults.buttonText !== '' ) { 125 | 126 | // Replace the default button text with the original text 127 | defaults.buttonSelector.text(originalButtonText); 128 | 129 | } 130 | 131 | // Add event on error 132 | $(document).trigger('mailChimpError'); 133 | 134 | // Run callback 135 | defaults.onMailChimpError.call(); 136 | 137 | } 138 | 139 | // Show the message 140 | $responseContainer.html(responseMessage); 141 | 142 | }); 143 | 144 | }); 145 | 146 | }; 147 | 148 | })( jQuery, window, document ); -------------------------------------------------------------------------------- /popover_ex/assets/jquery.formchimp.min.js: -------------------------------------------------------------------------------- 1 | /*! FormChimp v1.2.1 | Fabio Quarantini - http://www.fabioquarantini.com */ 2 | !function(a,b,c,d){a.fn.formchimp=function(b){var d=a(this),e=a("body"),f=d.attr("action").replace("/post?","/post-json?").concat("&c=?"),g=d.find('[type="submit"]'),h={appendElement:d,buttonSelector:g,buttonText:"",debug:!1,errorMessage:"",onMailChimpSuccess:function(){},onMailChimpError:function(){},responseClass:"mc-response",successMessage:"",url:f},i=h.buttonSelector.text();a.extend(h,b),a(d).on("submit",function(b){b.preventDefault(),e.removeClass("mc-success mc-error").addClass("mc-loading"),0===a("."+h.responseClass).length?$responseContainer=a("
").addClass(h.responseClass).appendTo(h.appendElement):$responseContainer.html(""),a.ajax({url:h.url,data:d.serialize(),dataType:"jsonp"}).done(function(b){h.debug&&console.log(JSON.stringify(b));var d=b.msg;isNaN(d.charAt(0))||"-"!==d.charAt(2)||(d=d.substring(3)),e.addClass("mc-"+b.result).removeClass("mc-loading"),"success"===b.result?(""!==h.successMessage&&(d=h.successMessage),""!==h.buttonText&&h.buttonSelector.text(h.buttonText),a(c).trigger("mailChimpSuccess"),h.onMailChimpSuccess.call()):(""!==h.errorMessage&&(d=h.errorMessage),""!==h.buttonText&&h.buttonSelector.text(i),a(c).trigger("mailChimpError"),h.onMailChimpError.call()),$responseContainer.html(d)})})}}(jQuery,window,document); -------------------------------------------------------------------------------- /popover_ex/assets/jquery.wait.js: -------------------------------------------------------------------------------- 1 | (function ($) { 2 | /** 3 | * @function 4 | * @property {object} jQuery plugin which runs handler function once specified element is inserted into the DOM 5 | * @param {function} handler A function to execute at the time when the element is inserted 6 | * @param {bool} shouldRunHandlerOnce Optional: if true, handler is unbound after its first invocation 7 | * @example $(selector).waitUntilExists(function); 8 | */ 9 | 10 | $.fn.waitUntilExists = function (handler, shouldRunHandlerOnce, isChild) { 11 | var found = 'found'; 12 | var $this = $(this.selector); 13 | var $elements = $this.not(function () { return $(this).data(found); }).each(handler).data(found, true); 14 | 15 | if (!isChild) 16 | { 17 | (window.waitUntilExists_Intervals = window.waitUntilExists_Intervals || {})[this.selector] = 18 | window.setInterval(function () { $this.waitUntilExists(handler, shouldRunHandlerOnce, true); }, 500); 19 | } 20 | else if (shouldRunHandlerOnce && $elements.length) 21 | { 22 | window.clearInterval(window.waitUntilExists_Intervals[this.selector]); 23 | } 24 | 25 | return $this; 26 | }; 27 | }(jQuery)); -------------------------------------------------------------------------------- /popover_ex/assets/jquery.wait.min.js: -------------------------------------------------------------------------------- 1 | !function(t){t.fn.waitUntilExists=function(n,i,s){var e="found",a=t(this.selector),l=a.not(function(){return t(this).data(e)}).each(n).data(e,!0);return s?i&&l.length&&window.clearInterval(window.waitUntilExists_Intervals[this.selector]):(window.waitUntilExists_Intervals=window.waitUntilExists_Intervals||{})[this.selector]=window.setInterval(function(){a.waitUntilExists(n,i,!0)},500),a}}(jQuery); -------------------------------------------------------------------------------- /popover_ex/assets/marked.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * marked - a markdown parser 3 | * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed) 4 | * https://github.com/chjj/marked 5 | */ 6 | (function(){var block={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:noop,hr:/^( *[-*_]){3,} *(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/,nptable:noop,lheading:/^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,blockquote:/^( *>[^\n]+(\n(?!def)[^\n]+)*\n*)+/,list:/^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:/^ *(?:comment *(?:\n|\s*$)|closed *(?:\n{2,}|\s*$)|closing *(?:\n{2,}|\s*$))/,def:/^ *\[([^\]]+)\]: *]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/,table:noop,paragraph:/^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+)\n*/,text:/^[^\n]+/};block.bullet=/(?:[*+-]|\d+\.)/;block.item=/^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/;block.item=replace(block.item,"gm")(/bull/g,block.bullet)();block.list=replace(block.list)(/bull/g,block.bullet)("hr","\\n+(?=\\1?(?:[-*_] *){3,}(?:\\n+|$))")("def","\\n+(?="+block.def.source+")")();block.blockquote=replace(block.blockquote)("def",block.def)();block._tag="(?!(?:"+"a|em|strong|small|s|cite|q|dfn|abbr|data|time|code"+"|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo"+"|span|br|wbr|ins|del|img)\\b)\\w+(?!:/|[^\\w\\s@]*@)\\b";block.html=replace(block.html)("comment",//)("closed",/<(tag)[\s\S]+?<\/\1>/)("closing",/])*?>/)(/tag/g,block._tag)();block.paragraph=replace(block.paragraph)("hr",block.hr)("heading",block.heading)("lheading",block.lheading)("blockquote",block.blockquote)("tag","<"+block._tag)("def",block.def)();block.normal=merge({},block);block.gfm=merge({},block.normal,{fences:/^ *(`{3,}|~{3,})[ \.]*(\S+)? *\n([\s\S]*?)\s*\1 *(?:\n+|$)/,paragraph:/^/,heading:/^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/});block.gfm.paragraph=replace(block.paragraph)("(?!","(?!"+block.gfm.fences.source.replace("\\1","\\2")+"|"+block.list.source.replace("\\1","\\3")+"|")();block.tables=merge({},block.gfm,{nptable:/^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/,table:/^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/});function Lexer(options){this.tokens=[];this.tokens.links={};this.options=options||marked.defaults;this.rules=block.normal;if(this.options.gfm){if(this.options.tables){this.rules=block.tables}else{this.rules=block.gfm}}}Lexer.rules=block;Lexer.lex=function(src,options){var lexer=new Lexer(options);return lexer.lex(src)};Lexer.prototype.lex=function(src){src=src.replace(/\r\n|\r/g,"\n").replace(/\t/g," ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n");return this.token(src,true)};Lexer.prototype.token=function(src,top,bq){var src=src.replace(/^ +$/gm,""),next,loose,cap,bull,b,item,space,i,l;while(src){if(cap=this.rules.newline.exec(src)){src=src.substring(cap[0].length);if(cap[0].length>1){this.tokens.push({type:"space"})}}if(cap=this.rules.code.exec(src)){src=src.substring(cap[0].length);cap=cap[0].replace(/^ {4}/gm,"");this.tokens.push({type:"code",text:!this.options.pedantic?cap.replace(/\n+$/,""):cap});continue}if(cap=this.rules.fences.exec(src)){src=src.substring(cap[0].length);this.tokens.push({type:"code",lang:cap[2],text:cap[3]||""});continue}if(cap=this.rules.heading.exec(src)){src=src.substring(cap[0].length);this.tokens.push({type:"heading",depth:cap[1].length,text:cap[2]});continue}if(top&&(cap=this.rules.nptable.exec(src))){src=src.substring(cap[0].length);item={type:"table",header:cap[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:cap[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:cap[3].replace(/\n$/,"").split("\n")};for(i=0;i ?/gm,"");this.token(cap,top,true);this.tokens.push({type:"blockquote_end"});continue}if(cap=this.rules.list.exec(src)){src=src.substring(cap[0].length);bull=cap[2];this.tokens.push({type:"list_start",ordered:bull.length>1});cap=cap[0].match(this.rules.item);next=false;l=cap.length;i=0;for(;i1&&b.length>1)){src=cap.slice(i+1).join("\n")+src;i=l-1}}loose=next||/\n\n(?!\s*$)/.test(item);if(i!==l-1){next=item.charAt(item.length-1)==="\n";if(!loose)loose=next}this.tokens.push({type:loose?"loose_item_start":"list_item_start"});this.token(item,false,bq);this.tokens.push({type:"list_item_end"})}this.tokens.push({type:"list_end"});continue}if(cap=this.rules.html.exec(src)){src=src.substring(cap[0].length);this.tokens.push({type:this.options.sanitize?"paragraph":"html",pre:!this.options.sanitizer&&(cap[1]==="pre"||cap[1]==="script"||cap[1]==="style"),text:cap[0]});continue}if(!bq&&top&&(cap=this.rules.def.exec(src))){src=src.substring(cap[0].length);this.tokens.links[cap[1].toLowerCase()]={href:cap[2],title:cap[3]};continue}if(top&&(cap=this.rules.table.exec(src))){src=src.substring(cap[0].length);item={type:"table",header:cap[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:cap[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:cap[3].replace(/(?: *\| *)?\n$/,"").split("\n")};for(i=0;i])/,autolink:/^<([^ >]+(@|:\/)[^ >]+)>/,url:noop,tag:/^|^<\/?\w+(?:"[^"]*"|'[^']*'|[^'">])*?>/,link:/^!?\[(inside)\]\(href\)/,reflink:/^!?\[(inside)\]\s*\[([^\]]*)\]/,nolink:/^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,strong:/^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,em:/^\b_((?:[^_]|__)+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,code:/^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,br:/^ {2,}\n(?!\s*$)/,del:noop,text:/^[\s\S]+?(?=[\\?(?:\s+['"]([\s\S]*?)['"])?\s*/;inline.link=replace(inline.link)("inside",inline._inside)("href",inline._href)();inline.reflink=replace(inline.reflink)("inside",inline._inside)();inline.normal=merge({},inline);inline.pedantic=merge({},inline.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/});inline.gfm=merge({},inline.normal,{escape:replace(inline.escape)("])","~|])")(),url:/^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,del:/^~~(?=\S)([\s\S]*?\S)~~/,text:replace(inline.text)("]|","~]|")("|","|https?://|")()});inline.breaks=merge({},inline.gfm,{br:replace(inline.br)("{2,}","*")(),text:replace(inline.gfm.text)("{2,}","*")()});function InlineLexer(links,options){this.options=options||marked.defaults;this.links=links;this.rules=inline.normal;this.renderer=this.options.renderer||new Renderer;this.renderer.options=this.options;if(!this.links){throw new Error("Tokens array requires a `links` property.")}if(this.options.gfm){if(this.options.breaks){this.rules=inline.breaks}else{this.rules=inline.gfm}}else if(this.options.pedantic){this.rules=inline.pedantic}}InlineLexer.rules=inline;InlineLexer.output=function(src,links,options){var inline=new InlineLexer(links,options);return inline.output(src)};InlineLexer.prototype.output=function(src){var out="",link,text,href,cap;while(src){if(cap=this.rules.escape.exec(src)){src=src.substring(cap[0].length);out+=cap[1];continue}if(cap=this.rules.autolink.exec(src)){src=src.substring(cap[0].length);if(cap[2]==="@"){text=cap[1].charAt(6)===":"?this.mangle(cap[1].substring(7)):this.mangle(cap[1]);href=this.mangle("mailto:")+text}else{text=escape(cap[1]);href=text}out+=this.renderer.link(href,null,text);continue}if(!this.inLink&&(cap=this.rules.url.exec(src))){src=src.substring(cap[0].length);text=escape(cap[1]);href=text;out+=this.renderer.link(href,null,text);continue}if(cap=this.rules.tag.exec(src)){if(!this.inLink&&/^/i.test(cap[0])){this.inLink=false}src=src.substring(cap[0].length);out+=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(cap[0]):escape(cap[0]):cap[0];continue}if(cap=this.rules.link.exec(src)){src=src.substring(cap[0].length);this.inLink=true;out+=this.outputLink(cap,{href:cap[2],title:cap[3]});this.inLink=false;continue}if((cap=this.rules.reflink.exec(src))||(cap=this.rules.nolink.exec(src))){src=src.substring(cap[0].length);link=(cap[2]||cap[1]).replace(/\s+/g," ");link=this.links[link.toLowerCase()];if(!link||!link.href){out+=cap[0].charAt(0);src=cap[0].substring(1)+src;continue}this.inLink=true;out+=this.outputLink(cap,link);this.inLink=false;continue}if(cap=this.rules.strong.exec(src)){src=src.substring(cap[0].length);out+=this.renderer.strong(this.output(cap[2]||cap[1]));continue}if(cap=this.rules.em.exec(src)){src=src.substring(cap[0].length);out+=this.renderer.em(this.output(cap[2]||cap[1]));continue}if(cap=this.rules.code.exec(src)){src=src.substring(cap[0].length);out+=this.renderer.codespan(escape(cap[2],true));continue}if(cap=this.rules.br.exec(src)){src=src.substring(cap[0].length);out+=this.renderer.br();continue}if(cap=this.rules.del.exec(src)){src=src.substring(cap[0].length);out+=this.renderer.del(this.output(cap[1]));continue}if(cap=this.rules.text.exec(src)){src=src.substring(cap[0].length);out+=this.renderer.text(escape(this.smartypants(cap[0])));continue}if(src){throw new Error("Infinite loop on byte: "+src.charCodeAt(0))}}return out};InlineLexer.prototype.outputLink=function(cap,link){var href=escape(link.href),title=link.title?escape(link.title):null;return cap[0].charAt(0)!=="!"?this.renderer.link(href,title,this.output(cap[1])):this.renderer.image(href,title,escape(cap[1]))};InlineLexer.prototype.smartypants=function(text){if(!this.options.smartypants)return text;return text.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…")};InlineLexer.prototype.mangle=function(text){if(!this.options.mangle)return text;var out="",l=text.length,i=0,ch;for(;i.5){ch="x"+ch.toString(16)}out+="&#"+ch+";"}return out};function Renderer(options){this.options=options||{}}Renderer.prototype.code=function(code,lang,escaped){if(this.options.highlight){var out=this.options.highlight(code,lang);if(out!=null&&out!==code){escaped=true;code=out}}if(!lang){return"
"+(escaped?code:escape(code,true))+"\n
"}return'
'+(escaped?code:escape(code,true))+"\n
\n"};Renderer.prototype.blockquote=function(quote){return"
\n"+quote+"
\n"};Renderer.prototype.html=function(html){return html};Renderer.prototype.heading=function(text,level,raw){return"'+text+"\n"};Renderer.prototype.hr=function(){return this.options.xhtml?"
\n":"
\n"};Renderer.prototype.list=function(body,ordered){var type=ordered?"ol":"ul";return"<"+type+">\n"+body+"\n"};Renderer.prototype.listitem=function(text){return"
  • "+text+"
  • \n"};Renderer.prototype.paragraph=function(text){return"

    "+text+"

    \n"};Renderer.prototype.table=function(header,body){return"\n"+"\n"+header+"\n"+"\n"+body+"\n"+"
    \n"};Renderer.prototype.tablerow=function(content){return"\n"+content+"\n"};Renderer.prototype.tablecell=function(content,flags){var type=flags.header?"th":"td";var tag=flags.align?"<"+type+' style="text-align:'+flags.align+'">':"<"+type+">";return tag+content+"\n"};Renderer.prototype.strong=function(text){return""+text+""};Renderer.prototype.em=function(text){return""+text+""};Renderer.prototype.codespan=function(text){return""+text+""};Renderer.prototype.br=function(){return this.options.xhtml?"
    ":"
    "};Renderer.prototype.del=function(text){return""+text+""};Renderer.prototype.link=function(href,title,text){if(this.options.sanitize){try{var prot=decodeURIComponent(unescape(href)).replace(/[^\w:]/g,"").toLowerCase()}catch(e){return""}if(prot.indexOf("javascript:")===0||prot.indexOf("vbscript:")===0){return""}}var out='
    ";return out};Renderer.prototype.image=function(href,title,text){var out=''+text+'":">";return out};Renderer.prototype.text=function(text){return text};function Parser(options){this.tokens=[];this.token=null;this.options=options||marked.defaults;this.options.renderer=this.options.renderer||new Renderer;this.renderer=this.options.renderer;this.renderer.options=this.options}Parser.parse=function(src,options,renderer){var parser=new Parser(options,renderer);return parser.parse(src)};Parser.prototype.parse=function(src){this.inline=new InlineLexer(src.links,this.options,this.renderer);this.tokens=src.reverse();var out="";while(this.next()){out+=this.tok()}return out};Parser.prototype.next=function(){return this.token=this.tokens.pop()};Parser.prototype.peek=function(){return this.tokens[this.tokens.length-1]||0};Parser.prototype.parseText=function(){var body=this.token.text;while(this.peek().type==="text"){body+="\n"+this.next().text}return this.inline.output(body)};Parser.prototype.tok=function(){switch(this.token.type){case"space":{return""}case"hr":{return this.renderer.hr()}case"heading":{return this.renderer.heading(this.inline.output(this.token.text),this.token.depth,this.token.text)}case"code":{return this.renderer.code(this.token.text,this.token.lang,this.token.escaped)}case"table":{var header="",body="",i,row,cell,flags,j;cell="";for(i=0;i/g,">").replace(/"/g,""").replace(/'/g,"'")}function unescape(html){return html.replace(/&([#\w]+);/g,function(_,n){n=n.toLowerCase();if(n==="colon")return":";if(n.charAt(0)==="#"){return n.charAt(1)==="x"?String.fromCharCode(parseInt(n.substring(2),16)):String.fromCharCode(+n.substring(1))}return""})}function replace(regex,opt){regex=regex.source;opt=opt||"";return function self(name,val){if(!name)return new RegExp(regex,opt);val=val.source||val;val=val.replace(/(^|[^\[])\^/g,"$1");regex=regex.replace(name,val);return self}}function noop(){}noop.exec=noop;function merge(obj){var i=1,target,key;for(;iAn error occured:

    "+escape(e.message+"",true)+"
    "}throw e}}marked.options=marked.setOptions=function(opt){merge(marked.defaults,opt);return marked};marked.defaults={gfm:true,tables:true,breaks:false,pedantic:false,sanitize:false,sanitizer:null,mangle:true,smartLists:false,silent:false,highlight:null,langPrefix:"lang-",smartypants:false,headerPrefix:"",renderer:new Renderer,xhtml:false};marked.Parser=Parser;marked.parser=Parser.parse;marked.Renderer=Renderer;marked.Lexer=Lexer;marked.lexer=Lexer.lex;marked.InlineLexer=InlineLexer;marked.inlineLexer=InlineLexer.output;marked.parse=marked;if(typeof module!=="undefined"&&typeof exports==="object"){module.exports=marked}else if(typeof define==="function"&&define.amd){define(function(){return marked})}else{this.marked=marked}}).call(function(){return this||(typeof window!=="undefined"?window:global)}()); -------------------------------------------------------------------------------- /popover_ex/assets/replacer.js: -------------------------------------------------------------------------------- 1 | /* 2 | This code is used for replacements of data in string, usually after $translate service 3 | */ 4 | "use strict"; 5 | /* 6 | data - original string 7 | expression - associative array, key => value. 8 | The function replaces all occurances of %key% in data into value. 9 | Returns the string with all replacements done. 10 | */ 11 | function replaceTransAll(data,expression){ 12 | for (var key in expression) 13 | data=data.replace('%'+key+'%',expression[key]); 14 | return data; 15 | } -------------------------------------------------------------------------------- /popover_ex/assets/replacer.min.js: -------------------------------------------------------------------------------- 1 | "use strict";function replaceTransAll(r,e){for(var n in e)r=r.replace("%"+n+"%",e[n]);return r} -------------------------------------------------------------------------------- /popover_ex/assets/underscore-min.js: -------------------------------------------------------------------------------- 1 | // Underscore.js 1.8.3 2 | // http://underscorejs.org 3 | // (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors 4 | // Underscore may be freely distributed under the MIT license. 5 | (function(){function n(n){function t(t,r,e,u,i,o){for(;i>=0&&o>i;i+=n){var a=u?u[i]:i;e=r(e,t[a],a,t)}return e}return function(r,e,u,i){e=b(e,i,4);var o=!k(r)&&m.keys(r),a=(o||r).length,c=n>0?0:a-1;return arguments.length<3&&(u=r[o?o[c]:c],c+=n),t(r,e,u,o,c,a)}}function t(n){return function(t,r,e){r=x(r,e);for(var u=O(t),i=n>0?0:u-1;i>=0&&u>i;i+=n)if(r(t[i],i,t))return i;return-1}}function r(n,t,r){return function(e,u,i){var o=0,a=O(e);if("number"==typeof i)n>0?o=i>=0?i:Math.max(i+a,o):a=i>=0?Math.min(i+1,a):i+a+1;else if(r&&i&&a)return i=r(e,u),e[i]===u?i:-1;if(u!==u)return i=t(l.call(e,o,a),m.isNaN),i>=0?i+o:-1;for(i=n>0?o:a-1;i>=0&&a>i;i+=n)if(e[i]===u)return i;return-1}}function e(n,t){var r=I.length,e=n.constructor,u=m.isFunction(e)&&e.prototype||a,i="constructor";for(m.has(n,i)&&!m.contains(t,i)&&t.push(i);r--;)i=I[r],i in n&&n[i]!==u[i]&&!m.contains(t,i)&&t.push(i)}var u=this,i=u._,o=Array.prototype,a=Object.prototype,c=Function.prototype,f=o.push,l=o.slice,s=a.toString,p=a.hasOwnProperty,h=Array.isArray,v=Object.keys,g=c.bind,y=Object.create,d=function(){},m=function(n){return n instanceof m?n:this instanceof m?void(this._wrapped=n):new m(n)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=m),exports._=m):u._=m,m.VERSION="1.8.3";var b=function(n,t,r){if(t===void 0)return n;switch(null==r?3:r){case 1:return function(r){return n.call(t,r)};case 2:return function(r,e){return n.call(t,r,e)};case 3:return function(r,e,u){return n.call(t,r,e,u)};case 4:return function(r,e,u,i){return n.call(t,r,e,u,i)}}return function(){return n.apply(t,arguments)}},x=function(n,t,r){return null==n?m.identity:m.isFunction(n)?b(n,t,r):m.isObject(n)?m.matcher(n):m.property(n)};m.iteratee=function(n,t){return x(n,t,1/0)};var _=function(n,t){return function(r){var e=arguments.length;if(2>e||null==r)return r;for(var u=1;e>u;u++)for(var i=arguments[u],o=n(i),a=o.length,c=0;a>c;c++){var f=o[c];t&&r[f]!==void 0||(r[f]=i[f])}return r}},j=function(n){if(!m.isObject(n))return{};if(y)return y(n);d.prototype=n;var t=new d;return d.prototype=null,t},w=function(n){return function(t){return null==t?void 0:t[n]}},A=Math.pow(2,53)-1,O=w("length"),k=function(n){var t=O(n);return"number"==typeof t&&t>=0&&A>=t};m.each=m.forEach=function(n,t,r){t=b(t,r);var e,u;if(k(n))for(e=0,u=n.length;u>e;e++)t(n[e],e,n);else{var i=m.keys(n);for(e=0,u=i.length;u>e;e++)t(n[i[e]],i[e],n)}return n},m.map=m.collect=function(n,t,r){t=x(t,r);for(var e=!k(n)&&m.keys(n),u=(e||n).length,i=Array(u),o=0;u>o;o++){var a=e?e[o]:o;i[o]=t(n[a],a,n)}return i},m.reduce=m.foldl=m.inject=n(1),m.reduceRight=m.foldr=n(-1),m.find=m.detect=function(n,t,r){var e;return e=k(n)?m.findIndex(n,t,r):m.findKey(n,t,r),e!==void 0&&e!==-1?n[e]:void 0},m.filter=m.select=function(n,t,r){var e=[];return t=x(t,r),m.each(n,function(n,r,u){t(n,r,u)&&e.push(n)}),e},m.reject=function(n,t,r){return m.filter(n,m.negate(x(t)),r)},m.every=m.all=function(n,t,r){t=x(t,r);for(var e=!k(n)&&m.keys(n),u=(e||n).length,i=0;u>i;i++){var o=e?e[i]:i;if(!t(n[o],o,n))return!1}return!0},m.some=m.any=function(n,t,r){t=x(t,r);for(var e=!k(n)&&m.keys(n),u=(e||n).length,i=0;u>i;i++){var o=e?e[i]:i;if(t(n[o],o,n))return!0}return!1},m.contains=m.includes=m.include=function(n,t,r,e){return k(n)||(n=m.values(n)),("number"!=typeof r||e)&&(r=0),m.indexOf(n,t,r)>=0},m.invoke=function(n,t){var r=l.call(arguments,2),e=m.isFunction(t);return m.map(n,function(n){var u=e?t:n[t];return null==u?u:u.apply(n,r)})},m.pluck=function(n,t){return m.map(n,m.property(t))},m.where=function(n,t){return m.filter(n,m.matcher(t))},m.findWhere=function(n,t){return m.find(n,m.matcher(t))},m.max=function(n,t,r){var e,u,i=-1/0,o=-1/0;if(null==t&&null!=n){n=k(n)?n:m.values(n);for(var a=0,c=n.length;c>a;a++)e=n[a],e>i&&(i=e)}else t=x(t,r),m.each(n,function(n,r,e){u=t(n,r,e),(u>o||u===-1/0&&i===-1/0)&&(i=n,o=u)});return i},m.min=function(n,t,r){var e,u,i=1/0,o=1/0;if(null==t&&null!=n){n=k(n)?n:m.values(n);for(var a=0,c=n.length;c>a;a++)e=n[a],i>e&&(i=e)}else t=x(t,r),m.each(n,function(n,r,e){u=t(n,r,e),(o>u||1/0===u&&1/0===i)&&(i=n,o=u)});return i},m.shuffle=function(n){for(var t,r=k(n)?n:m.values(n),e=r.length,u=Array(e),i=0;e>i;i++)t=m.random(0,i),t!==i&&(u[i]=u[t]),u[t]=r[i];return u},m.sample=function(n,t,r){return null==t||r?(k(n)||(n=m.values(n)),n[m.random(n.length-1)]):m.shuffle(n).slice(0,Math.max(0,t))},m.sortBy=function(n,t,r){return t=x(t,r),m.pluck(m.map(n,function(n,r,e){return{value:n,index:r,criteria:t(n,r,e)}}).sort(function(n,t){var r=n.criteria,e=t.criteria;if(r!==e){if(r>e||r===void 0)return 1;if(e>r||e===void 0)return-1}return n.index-t.index}),"value")};var F=function(n){return function(t,r,e){var u={};return r=x(r,e),m.each(t,function(e,i){var o=r(e,i,t);n(u,e,o)}),u}};m.groupBy=F(function(n,t,r){m.has(n,r)?n[r].push(t):n[r]=[t]}),m.indexBy=F(function(n,t,r){n[r]=t}),m.countBy=F(function(n,t,r){m.has(n,r)?n[r]++:n[r]=1}),m.toArray=function(n){return n?m.isArray(n)?l.call(n):k(n)?m.map(n,m.identity):m.values(n):[]},m.size=function(n){return null==n?0:k(n)?n.length:m.keys(n).length},m.partition=function(n,t,r){t=x(t,r);var e=[],u=[];return m.each(n,function(n,r,i){(t(n,r,i)?e:u).push(n)}),[e,u]},m.first=m.head=m.take=function(n,t,r){return null==n?void 0:null==t||r?n[0]:m.initial(n,n.length-t)},m.initial=function(n,t,r){return l.call(n,0,Math.max(0,n.length-(null==t||r?1:t)))},m.last=function(n,t,r){return null==n?void 0:null==t||r?n[n.length-1]:m.rest(n,Math.max(0,n.length-t))},m.rest=m.tail=m.drop=function(n,t,r){return l.call(n,null==t||r?1:t)},m.compact=function(n){return m.filter(n,m.identity)};var S=function(n,t,r,e){for(var u=[],i=0,o=e||0,a=O(n);a>o;o++){var c=n[o];if(k(c)&&(m.isArray(c)||m.isArguments(c))){t||(c=S(c,t,r));var f=0,l=c.length;for(u.length+=l;l>f;)u[i++]=c[f++]}else r||(u[i++]=c)}return u};m.flatten=function(n,t){return S(n,t,!1)},m.without=function(n){return m.difference(n,l.call(arguments,1))},m.uniq=m.unique=function(n,t,r,e){m.isBoolean(t)||(e=r,r=t,t=!1),null!=r&&(r=x(r,e));for(var u=[],i=[],o=0,a=O(n);a>o;o++){var c=n[o],f=r?r(c,o,n):c;t?(o&&i===f||u.push(c),i=f):r?m.contains(i,f)||(i.push(f),u.push(c)):m.contains(u,c)||u.push(c)}return u},m.union=function(){return m.uniq(S(arguments,!0,!0))},m.intersection=function(n){for(var t=[],r=arguments.length,e=0,u=O(n);u>e;e++){var i=n[e];if(!m.contains(t,i)){for(var o=1;r>o&&m.contains(arguments[o],i);o++);o===r&&t.push(i)}}return t},m.difference=function(n){var t=S(arguments,!0,!0,1);return m.filter(n,function(n){return!m.contains(t,n)})},m.zip=function(){return m.unzip(arguments)},m.unzip=function(n){for(var t=n&&m.max(n,O).length||0,r=Array(t),e=0;t>e;e++)r[e]=m.pluck(n,e);return r},m.object=function(n,t){for(var r={},e=0,u=O(n);u>e;e++)t?r[n[e]]=t[e]:r[n[e][0]]=n[e][1];return r},m.findIndex=t(1),m.findLastIndex=t(-1),m.sortedIndex=function(n,t,r,e){r=x(r,e,1);for(var u=r(t),i=0,o=O(n);o>i;){var a=Math.floor((i+o)/2);r(n[a])i;i++,n+=r)u[i]=n;return u};var E=function(n,t,r,e,u){if(!(e instanceof t))return n.apply(r,u);var i=j(n.prototype),o=n.apply(i,u);return m.isObject(o)?o:i};m.bind=function(n,t){if(g&&n.bind===g)return g.apply(n,l.call(arguments,1));if(!m.isFunction(n))throw new TypeError("Bind must be called on a function");var r=l.call(arguments,2),e=function(){return E(n,e,t,this,r.concat(l.call(arguments)))};return e},m.partial=function(n){var t=l.call(arguments,1),r=function(){for(var e=0,u=t.length,i=Array(u),o=0;u>o;o++)i[o]=t[o]===m?arguments[e++]:t[o];for(;e=e)throw new Error("bindAll must be passed function names");for(t=1;e>t;t++)r=arguments[t],n[r]=m.bind(n[r],n);return n},m.memoize=function(n,t){var r=function(e){var u=r.cache,i=""+(t?t.apply(this,arguments):e);return m.has(u,i)||(u[i]=n.apply(this,arguments)),u[i]};return r.cache={},r},m.delay=function(n,t){var r=l.call(arguments,2);return setTimeout(function(){return n.apply(null,r)},t)},m.defer=m.partial(m.delay,m,1),m.throttle=function(n,t,r){var e,u,i,o=null,a=0;r||(r={});var c=function(){a=r.leading===!1?0:m.now(),o=null,i=n.apply(e,u),o||(e=u=null)};return function(){var f=m.now();a||r.leading!==!1||(a=f);var l=t-(f-a);return e=this,u=arguments,0>=l||l>t?(o&&(clearTimeout(o),o=null),a=f,i=n.apply(e,u),o||(e=u=null)):o||r.trailing===!1||(o=setTimeout(c,l)),i}},m.debounce=function(n,t,r){var e,u,i,o,a,c=function(){var f=m.now()-o;t>f&&f>=0?e=setTimeout(c,t-f):(e=null,r||(a=n.apply(i,u),e||(i=u=null)))};return function(){i=this,u=arguments,o=m.now();var f=r&&!e;return e||(e=setTimeout(c,t)),f&&(a=n.apply(i,u),i=u=null),a}},m.wrap=function(n,t){return m.partial(t,n)},m.negate=function(n){return function(){return!n.apply(this,arguments)}},m.compose=function(){var n=arguments,t=n.length-1;return function(){for(var r=t,e=n[t].apply(this,arguments);r--;)e=n[r].call(this,e);return e}},m.after=function(n,t){return function(){return--n<1?t.apply(this,arguments):void 0}},m.before=function(n,t){var r;return function(){return--n>0&&(r=t.apply(this,arguments)),1>=n&&(t=null),r}},m.once=m.partial(m.before,2);var M=!{toString:null}.propertyIsEnumerable("toString"),I=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"];m.keys=function(n){if(!m.isObject(n))return[];if(v)return v(n);var t=[];for(var r in n)m.has(n,r)&&t.push(r);return M&&e(n,t),t},m.allKeys=function(n){if(!m.isObject(n))return[];var t=[];for(var r in n)t.push(r);return M&&e(n,t),t},m.values=function(n){for(var t=m.keys(n),r=t.length,e=Array(r),u=0;r>u;u++)e[u]=n[t[u]];return e},m.mapObject=function(n,t,r){t=x(t,r);for(var e,u=m.keys(n),i=u.length,o={},a=0;i>a;a++)e=u[a],o[e]=t(n[e],e,n);return o},m.pairs=function(n){for(var t=m.keys(n),r=t.length,e=Array(r),u=0;r>u;u++)e[u]=[t[u],n[t[u]]];return e},m.invert=function(n){for(var t={},r=m.keys(n),e=0,u=r.length;u>e;e++)t[n[r[e]]]=r[e];return t},m.functions=m.methods=function(n){var t=[];for(var r in n)m.isFunction(n[r])&&t.push(r);return t.sort()},m.extend=_(m.allKeys),m.extendOwn=m.assign=_(m.keys),m.findKey=function(n,t,r){t=x(t,r);for(var e,u=m.keys(n),i=0,o=u.length;o>i;i++)if(e=u[i],t(n[e],e,n))return e},m.pick=function(n,t,r){var e,u,i={},o=n;if(null==o)return i;m.isFunction(t)?(u=m.allKeys(o),e=b(t,r)):(u=S(arguments,!1,!1,1),e=function(n,t,r){return t in r},o=Object(o));for(var a=0,c=u.length;c>a;a++){var f=u[a],l=o[f];e(l,f,o)&&(i[f]=l)}return i},m.omit=function(n,t,r){if(m.isFunction(t))t=m.negate(t);else{var e=m.map(S(arguments,!1,!1,1),String);t=function(n,t){return!m.contains(e,t)}}return m.pick(n,t,r)},m.defaults=_(m.allKeys,!0),m.create=function(n,t){var r=j(n);return t&&m.extendOwn(r,t),r},m.clone=function(n){return m.isObject(n)?m.isArray(n)?n.slice():m.extend({},n):n},m.tap=function(n,t){return t(n),n},m.isMatch=function(n,t){var r=m.keys(t),e=r.length;if(null==n)return!e;for(var u=Object(n),i=0;e>i;i++){var o=r[i];if(t[o]!==u[o]||!(o in u))return!1}return!0};var N=function(n,t,r,e){if(n===t)return 0!==n||1/n===1/t;if(null==n||null==t)return n===t;n instanceof m&&(n=n._wrapped),t instanceof m&&(t=t._wrapped);var u=s.call(n);if(u!==s.call(t))return!1;switch(u){case"[object RegExp]":case"[object String]":return""+n==""+t;case"[object Number]":return+n!==+n?+t!==+t:0===+n?1/+n===1/t:+n===+t;case"[object Date]":case"[object Boolean]":return+n===+t}var i="[object Array]"===u;if(!i){if("object"!=typeof n||"object"!=typeof t)return!1;var o=n.constructor,a=t.constructor;if(o!==a&&!(m.isFunction(o)&&o instanceof o&&m.isFunction(a)&&a instanceof a)&&"constructor"in n&&"constructor"in t)return!1}r=r||[],e=e||[];for(var c=r.length;c--;)if(r[c]===n)return e[c]===t;if(r.push(n),e.push(t),i){if(c=n.length,c!==t.length)return!1;for(;c--;)if(!N(n[c],t[c],r,e))return!1}else{var f,l=m.keys(n);if(c=l.length,m.keys(t).length!==c)return!1;for(;c--;)if(f=l[c],!m.has(t,f)||!N(n[f],t[f],r,e))return!1}return r.pop(),e.pop(),!0};m.isEqual=function(n,t){return N(n,t)},m.isEmpty=function(n){return null==n?!0:k(n)&&(m.isArray(n)||m.isString(n)||m.isArguments(n))?0===n.length:0===m.keys(n).length},m.isElement=function(n){return!(!n||1!==n.nodeType)},m.isArray=h||function(n){return"[object Array]"===s.call(n)},m.isObject=function(n){var t=typeof n;return"function"===t||"object"===t&&!!n},m.each(["Arguments","Function","String","Number","Date","RegExp","Error"],function(n){m["is"+n]=function(t){return s.call(t)==="[object "+n+"]"}}),m.isArguments(arguments)||(m.isArguments=function(n){return m.has(n,"callee")}),"function"!=typeof/./&&"object"!=typeof Int8Array&&(m.isFunction=function(n){return"function"==typeof n||!1}),m.isFinite=function(n){return isFinite(n)&&!isNaN(parseFloat(n))},m.isNaN=function(n){return m.isNumber(n)&&n!==+n},m.isBoolean=function(n){return n===!0||n===!1||"[object Boolean]"===s.call(n)},m.isNull=function(n){return null===n},m.isUndefined=function(n){return n===void 0},m.has=function(n,t){return null!=n&&p.call(n,t)},m.noConflict=function(){return u._=i,this},m.identity=function(n){return n},m.constant=function(n){return function(){return n}},m.noop=function(){},m.property=w,m.propertyOf=function(n){return null==n?function(){}:function(t){return n[t]}},m.matcher=m.matches=function(n){return n=m.extendOwn({},n),function(t){return m.isMatch(t,n)}},m.times=function(n,t,r){var e=Array(Math.max(0,n));t=b(t,r,1);for(var u=0;n>u;u++)e[u]=t(u);return e},m.random=function(n,t){return null==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))},m.now=Date.now||function(){return(new Date).getTime()};var B={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},T=m.invert(B),R=function(n){var t=function(t){return n[t]},r="(?:"+m.keys(n).join("|")+")",e=RegExp(r),u=RegExp(r,"g");return function(n){return n=null==n?"":""+n,e.test(n)?n.replace(u,t):n}};m.escape=R(B),m.unescape=R(T),m.result=function(n,t,r){var e=null==n?void 0:n[t];return e===void 0&&(e=r),m.isFunction(e)?e.call(n):e};var q=0;m.uniqueId=function(n){var t=++q+"";return n?n+t:t},m.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var K=/(.)^/,z={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},D=/\\|'|\r|\n|\u2028|\u2029/g,L=function(n){return"\\"+z[n]};m.template=function(n,t,r){!t&&r&&(t=r),t=m.defaults({},t,m.templateSettings);var e=RegExp([(t.escape||K).source,(t.interpolate||K).source,(t.evaluate||K).source].join("|")+"|$","g"),u=0,i="__p+='";n.replace(e,function(t,r,e,o,a){return i+=n.slice(u,a).replace(D,L),u=a+t.length,r?i+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'":e?i+="'+\n((__t=("+e+"))==null?'':__t)+\n'":o&&(i+="';\n"+o+"\n__p+='"),t}),i+="';\n",t.variable||(i="with(obj||{}){\n"+i+"}\n"),i="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+i+"return __p;\n";try{var o=new Function(t.variable||"obj","_",i)}catch(a){throw a.source=i,a}var c=function(n){return o.call(this,n,m)},f=t.variable||"obj";return c.source="function("+f+"){\n"+i+"}",c},m.chain=function(n){var t=m(n);return t._chain=!0,t};var P=function(n,t){return n._chain?m(t).chain():t};m.mixin=function(n){m.each(m.functions(n),function(t){var r=m[t]=n[t];m.prototype[t]=function(){var n=[this._wrapped];return f.apply(n,arguments),P(this,r.apply(m,n))}})},m.mixin(m),m.each(["pop","push","reverse","shift","sort","splice","unshift"],function(n){var t=o[n];m.prototype[n]=function(){var r=this._wrapped;return t.apply(r,arguments),"shift"!==n&&"splice"!==n||0!==r.length||delete r[0],P(this,r)}}),m.each(["concat","join","slice"],function(n){var t=o[n];m.prototype[n]=function(){return P(this,t.apply(this._wrapped,arguments))}}),m.prototype.value=function(){return this._wrapped},m.prototype.valueOf=m.prototype.toJSON=m.prototype.value,m.prototype.toString=function(){return""+this._wrapped},"function"==typeof define&&define.amd&&define("underscore",[],function(){return m})}).call(this); 6 | //# sourceMappingURL=underscore-min.map -------------------------------------------------------------------------------- /popover_ex/assets/underscore-min.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"underscore-min.js","sources":["underscore.js"],"names":["createReduce","dir","iterator","obj","iteratee","memo","keys","index","length","currentKey","context","optimizeCb","isArrayLike","_","arguments","createPredicateIndexFinder","array","predicate","cb","getLength","createIndexFinder","predicateFind","sortedIndex","item","idx","i","Math","max","min","slice","call","isNaN","collectNonEnumProps","nonEnumIdx","nonEnumerableProps","constructor","proto","isFunction","prototype","ObjProto","prop","has","contains","push","root","this","previousUnderscore","ArrayProto","Array","Object","FuncProto","Function","toString","hasOwnProperty","nativeIsArray","isArray","nativeKeys","nativeBind","bind","nativeCreate","create","Ctor","_wrapped","exports","module","VERSION","func","argCount","value","other","collection","accumulator","apply","identity","isObject","matcher","property","Infinity","createAssigner","keysFunc","undefinedOnly","source","l","key","baseCreate","result","MAX_ARRAY_INDEX","pow","each","forEach","map","collect","results","reduce","foldl","inject","reduceRight","foldr","find","detect","findIndex","findKey","filter","select","list","reject","negate","every","all","some","any","includes","include","fromIndex","guard","values","indexOf","invoke","method","args","isFunc","pluck","where","attrs","findWhere","computed","lastComputed","shuffle","rand","set","shuffled","random","sample","n","sortBy","criteria","sort","left","right","a","b","group","behavior","groupBy","indexBy","countBy","toArray","size","partition","pass","fail","first","head","take","initial","last","rest","tail","drop","compact","flatten","input","shallow","strict","startIndex","output","isArguments","j","len","without","difference","uniq","unique","isSorted","isBoolean","seen","union","intersection","argsLength","zip","unzip","object","findLastIndex","low","high","mid","floor","lastIndexOf","range","start","stop","step","ceil","executeBound","sourceFunc","boundFunc","callingContext","self","TypeError","bound","concat","partial","boundArgs","position","bindAll","Error","memoize","hasher","cache","address","delay","wait","setTimeout","defer","throttle","options","timeout","previous","later","leading","now","remaining","clearTimeout","trailing","debounce","immediate","timestamp","callNow","wrap","wrapper","compose","after","times","before","once","hasEnumBug","propertyIsEnumerable","allKeys","mapObject","pairs","invert","functions","methods","names","extend","extendOwn","assign","pick","oiteratee","omit","String","defaults","props","clone","tap","interceptor","isMatch","eq","aStack","bStack","className","areArrays","aCtor","bCtor","pop","isEqual","isEmpty","isString","isElement","nodeType","type","name","Int8Array","isFinite","parseFloat","isNumber","isNull","isUndefined","noConflict","constant","noop","propertyOf","matches","accum","Date","getTime","escapeMap","&","<",">","\"","'","`","unescapeMap","createEscaper","escaper","match","join","testRegexp","RegExp","replaceRegexp","string","test","replace","escape","unescape","fallback","idCounter","uniqueId","prefix","id","templateSettings","evaluate","interpolate","noMatch","escapes","\\","\r","\n","
","
","escapeChar","template","text","settings","oldSettings","offset","variable","render","e","data","argument","chain","instance","_chain","mixin","valueOf","toJSON","define","amd"],"mappings":";;;;CAKC,WA4KC,QAASA,GAAaC,GAGpB,QAASC,GAASC,EAAKC,EAAUC,EAAMC,EAAMC,EAAOC,GAClD,KAAOD,GAAS,GAAaC,EAARD,EAAgBA,GAASN,EAAK,CACjD,GAAIQ,GAAaH,EAAOA,EAAKC,GAASA,CACtCF,GAAOD,EAASC,EAAMF,EAAIM,GAAaA,EAAYN,GAErD,MAAOE,GAGT,MAAO,UAASF,EAAKC,EAAUC,EAAMK,GACnCN,EAAWO,EAAWP,EAAUM,EAAS,EACzC,IAAIJ,IAAQM,EAAYT,IAAQU,EAAEP,KAAKH,GACnCK,GAAUF,GAAQH,GAAKK,OACvBD,EAAQN,EAAM,EAAI,EAAIO,EAAS,CAMnC,OAJIM,WAAUN,OAAS,IACrBH,EAAOF,EAAIG,EAAOA,EAAKC,GAASA,GAChCA,GAASN,GAEJC,EAASC,EAAKC,EAAUC,EAAMC,EAAMC,EAAOC,IA+ZtD,QAASO,GAA2Bd,GAClC,MAAO,UAASe,EAAOC,EAAWP,GAChCO,EAAYC,EAAGD,EAAWP,EAG1B,KAFA,GAAIF,GAASW,EAAUH,GACnBT,EAAQN,EAAM,EAAI,EAAIO,EAAS,EAC5BD,GAAS,GAAaC,EAARD,EAAgBA,GAASN,EAC5C,GAAIgB,EAAUD,EAAMT,GAAQA,EAAOS,GAAQ,MAAOT,EAEpD,QAAQ,GAsBZ,QAASa,GAAkBnB,EAAKoB,EAAeC,GAC7C,MAAO,UAASN,EAAOO,EAAMC,GAC3B,GAAIC,GAAI,EAAGjB,EAASW,EAAUH,EAC9B,IAAkB,gBAAPQ,GACLvB,EAAM,EACNwB,EAAID,GAAO,EAAIA,EAAME,KAAKC,IAAIH,EAAMhB,EAAQiB,GAE5CjB,EAASgB,GAAO,EAAIE,KAAKE,IAAIJ,EAAM,EAAGhB,GAAUgB,EAAMhB,EAAS,MAE9D,IAAIc,GAAeE,GAAOhB,EAE/B,MADAgB,GAAMF,EAAYN,EAAOO,GAClBP,EAAMQ,KAASD,EAAOC,GAAO,CAEtC,IAAID,IAASA,EAEX,MADAC,GAAMH,EAAcQ,EAAMC,KAAKd,EAAOS,EAAGjB,GAASK,EAAEkB,OAC7CP,GAAO,EAAIA,EAAMC,GAAK,CAE/B,KAAKD,EAAMvB,EAAM,EAAIwB,EAAIjB,EAAS,EAAGgB,GAAO,GAAWhB,EAANgB,EAAcA,GAAOvB,EACpE,GAAIe,EAAMQ,KAASD,EAAM,MAAOC,EAElC,QAAQ,GAqPZ,QAASQ,GAAoB7B,EAAKG,GAChC,GAAI2B,GAAaC,EAAmB1B,OAChC2B,EAAchC,EAAIgC,YAClBC,EAASvB,EAAEwB,WAAWF,IAAgBA,EAAYG,WAAcC,EAGhEC,EAAO,aAGX,KAFI3B,EAAE4B,IAAItC,EAAKqC,KAAU3B,EAAE6B,SAASpC,EAAMkC,IAAOlC,EAAKqC,KAAKH,GAEpDP,KACLO,EAAON,EAAmBD,GACtBO,IAAQrC,IAAOA,EAAIqC,KAAUJ,EAAMI,KAAU3B,EAAE6B,SAASpC,EAAMkC,IAChElC,EAAKqC,KAAKH,GA74BhB,GAAII,GAAOC,KAGPC,EAAqBF,EAAK/B,EAG1BkC,EAAaC,MAAMV,UAAWC,EAAWU,OAAOX,UAAWY,EAAYC,SAASb,UAIlFK,EAAmBI,EAAWJ,KAC9Bd,EAAmBkB,EAAWlB,MAC9BuB,EAAmBb,EAASa,SAC5BC,EAAmBd,EAASc,eAK5BC,EAAqBN,MAAMO,QAC3BC,EAAqBP,OAAO3C,KAC5BmD,EAAqBP,EAAUQ,KAC/BC,EAAqBV,OAAOW,OAG1BC,EAAO,aAGPhD,EAAI,SAASV,GACf,MAAIA,aAAeU,GAAUV,EACvB0C,eAAgBhC,QACtBgC,KAAKiB,SAAW3D,GADiB,GAAIU,GAAEV,GAOlB,oBAAZ4D,UACa,mBAAXC,SAA0BA,OAAOD,UAC1CA,QAAUC,OAAOD,QAAUlD,GAE7BkD,QAAQlD,EAAIA,GAEZ+B,EAAK/B,EAAIA,EAIXA,EAAEoD,QAAU,OAKZ,IAAItD,GAAa,SAASuD,EAAMxD,EAASyD,GACvC,GAAIzD,QAAiB,GAAG,MAAOwD,EAC/B,QAAoB,MAAZC,EAAmB,EAAIA,GAC7B,IAAK,GAAG,MAAO,UAASC,GACtB,MAAOF,GAAKpC,KAAKpB,EAAS0D,GAE5B,KAAK,GAAG,MAAO,UAASA,EAAOC,GAC7B,MAAOH,GAAKpC,KAAKpB,EAAS0D,EAAOC,GAEnC,KAAK,GAAG,MAAO,UAASD,EAAO7D,EAAO+D,GACpC,MAAOJ,GAAKpC,KAAKpB,EAAS0D,EAAO7D,EAAO+D,GAE1C,KAAK,GAAG,MAAO,UAASC,EAAaH,EAAO7D,EAAO+D,GACjD,MAAOJ,GAAKpC,KAAKpB,EAAS6D,EAAaH,EAAO7D,EAAO+D,IAGzD,MAAO,YACL,MAAOJ,GAAKM,MAAM9D,EAASI,aAO3BI,EAAK,SAASkD,EAAO1D,EAASyD,GAChC,MAAa,OAATC,EAAsBvD,EAAE4D,SACxB5D,EAAEwB,WAAW+B,GAAezD,EAAWyD,EAAO1D,EAASyD,GACvDtD,EAAE6D,SAASN,GAAevD,EAAE8D,QAAQP,GACjCvD,EAAE+D,SAASR,GAEpBvD,GAAET,SAAW,SAASgE,EAAO1D,GAC3B,MAAOQ,GAAGkD,EAAO1D,EAASmE,KAI5B,IAAIC,GAAiB,SAASC,EAAUC,GACtC,MAAO,UAAS7E,GACd,GAAIK,GAASM,UAAUN,MACvB,IAAa,EAATA,GAAqB,MAAPL,EAAa,MAAOA,EACtC,KAAK,GAAII,GAAQ,EAAWC,EAARD,EAAgBA,IAIlC,IAAK,GAHD0E,GAASnE,UAAUP,GACnBD,EAAOyE,EAASE,GAChBC,EAAI5E,EAAKE,OACJiB,EAAI,EAAOyD,EAAJzD,EAAOA,IAAK,CAC1B,GAAI0D,GAAM7E,EAAKmB,EACVuD,IAAiB7E,EAAIgF,SAAc,KAAGhF,EAAIgF,GAAOF,EAAOE,IAGjE,MAAOhF,KAKPiF,EAAa,SAAS9C,GACxB,IAAKzB,EAAE6D,SAASpC,GAAY,QAC5B,IAAIqB,EAAc,MAAOA,GAAarB,EACtCuB,GAAKvB,UAAYA,CACjB,IAAI+C,GAAS,GAAIxB,EAEjB,OADAA,GAAKvB,UAAY,KACV+C,GAGLT,EAAW,SAASO,GACtB,MAAO,UAAShF,GACd,MAAc,OAAPA,MAAmB,GAAIA,EAAIgF,KAQlCG,EAAkB5D,KAAK6D,IAAI,EAAG,IAAM,EACpCpE,EAAYyD,EAAS,UACrBhE,EAAc,SAAS0D,GACzB,GAAI9D,GAASW,EAAUmD,EACvB,OAAwB,gBAAV9D,IAAsBA,GAAU,GAAe8E,GAAV9E,EASrDK,GAAE2E,KAAO3E,EAAE4E,QAAU,SAAStF,EAAKC,EAAUM,GAC3CN,EAAWO,EAAWP,EAAUM,EAChC,IAAIe,GAAGjB,CACP,IAAII,EAAYT,GACd,IAAKsB,EAAI,EAAGjB,EAASL,EAAIK,OAAYA,EAAJiB,EAAYA,IAC3CrB,EAASD,EAAIsB,GAAIA,EAAGtB,OAEjB,CACL,GAAIG,GAAOO,EAAEP,KAAKH,EAClB,KAAKsB,EAAI,EAAGjB,EAASF,EAAKE,OAAYA,EAAJiB,EAAYA,IAC5CrB,EAASD,EAAIG,EAAKmB,IAAKnB,EAAKmB,GAAItB,GAGpC,MAAOA,IAITU,EAAE6E,IAAM7E,EAAE8E,QAAU,SAASxF,EAAKC,EAAUM,GAC1CN,EAAWc,EAAGd,EAAUM,EAIxB,KAAK,GAHDJ,IAAQM,EAAYT,IAAQU,EAAEP,KAAKH,GACnCK,GAAUF,GAAQH,GAAKK,OACvBoF,EAAU5C,MAAMxC,GACXD,EAAQ,EAAWC,EAARD,EAAgBA,IAAS,CAC3C,GAAIE,GAAaH,EAAOA,EAAKC,GAASA,CACtCqF,GAAQrF,GAASH,EAASD,EAAIM,GAAaA,EAAYN,GAEzD,MAAOyF,IA+BT/E,EAAEgF,OAAShF,EAAEiF,MAAQjF,EAAEkF,OAAS/F,EAAa,GAG7Ca,EAAEmF,YAAcnF,EAAEoF,MAAQjG,GAAc,GAGxCa,EAAEqF,KAAOrF,EAAEsF,OAAS,SAAShG,EAAKc,EAAWP,GAC3C,GAAIyE,EAMJ,OAJEA,GADEvE,EAAYT,GACRU,EAAEuF,UAAUjG,EAAKc,EAAWP,GAE5BG,EAAEwF,QAAQlG,EAAKc,EAAWP,GAE9ByE,QAAa,IAAKA,KAAS,EAAUhF,EAAIgF,GAA7C,QAKFtE,EAAEyF,OAASzF,EAAE0F,OAAS,SAASpG,EAAKc,EAAWP,GAC7C,GAAIkF,KAKJ,OAJA3E,GAAYC,EAAGD,EAAWP,GAC1BG,EAAE2E,KAAKrF,EAAK,SAASiE,EAAO7D,EAAOiG,GAC7BvF,EAAUmD,EAAO7D,EAAOiG,IAAOZ,EAAQjD,KAAKyB,KAE3CwB,GAIT/E,EAAE4F,OAAS,SAAStG,EAAKc,EAAWP,GAClC,MAAOG,GAAEyF,OAAOnG,EAAKU,EAAE6F,OAAOxF,EAAGD,IAAaP,IAKhDG,EAAE8F,MAAQ9F,EAAE+F,IAAM,SAASzG,EAAKc,EAAWP,GACzCO,EAAYC,EAAGD,EAAWP,EAG1B,KAAK,GAFDJ,IAAQM,EAAYT,IAAQU,EAAEP,KAAKH,GACnCK,GAAUF,GAAQH,GAAKK,OAClBD,EAAQ,EAAWC,EAARD,EAAgBA,IAAS,CAC3C,GAAIE,GAAaH,EAAOA,EAAKC,GAASA,CACtC,KAAKU,EAAUd,EAAIM,GAAaA,EAAYN,GAAM,OAAO,EAE3D,OAAO,GAKTU,EAAEgG,KAAOhG,EAAEiG,IAAM,SAAS3G,EAAKc,EAAWP,GACxCO,EAAYC,EAAGD,EAAWP,EAG1B,KAAK,GAFDJ,IAAQM,EAAYT,IAAQU,EAAEP,KAAKH,GACnCK,GAAUF,GAAQH,GAAKK,OAClBD,EAAQ,EAAWC,EAARD,EAAgBA,IAAS,CAC3C,GAAIE,GAAaH,EAAOA,EAAKC,GAASA,CACtC,IAAIU,EAAUd,EAAIM,GAAaA,EAAYN,GAAM,OAAO,EAE1D,OAAO,GAKTU,EAAE6B,SAAW7B,EAAEkG,SAAWlG,EAAEmG,QAAU,SAAS7G,EAAKoB,EAAM0F,EAAWC,GAGnE,MAFKtG,GAAYT,KAAMA,EAAMU,EAAEsG,OAAOhH,KACd,gBAAb8G,IAAyBC,KAAOD,EAAY,GAChDpG,EAAEuG,QAAQjH,EAAKoB,EAAM0F,IAAc,GAI5CpG,EAAEwG,OAAS,SAASlH,EAAKmH,GACvB,GAAIC,GAAO1F,EAAMC,KAAKhB,UAAW,GAC7B0G,EAAS3G,EAAEwB,WAAWiF,EAC1B,OAAOzG,GAAE6E,IAAIvF,EAAK,SAASiE,GACzB,GAAIF,GAAOsD,EAASF,EAASlD,EAAMkD,EACnC,OAAe,OAARpD,EAAeA,EAAOA,EAAKM,MAAMJ,EAAOmD,MAKnD1G,EAAE4G,MAAQ,SAAStH,EAAKgF,GACtB,MAAOtE,GAAE6E,IAAIvF,EAAKU,EAAE+D,SAASO,KAK/BtE,EAAE6G,MAAQ,SAASvH,EAAKwH,GACtB,MAAO9G,GAAEyF,OAAOnG,EAAKU,EAAE8D,QAAQgD,KAKjC9G,EAAE+G,UAAY,SAASzH,EAAKwH,GAC1B,MAAO9G,GAAEqF,KAAK/F,EAAKU,EAAE8D,QAAQgD,KAI/B9G,EAAEc,IAAM,SAASxB,EAAKC,EAAUM,GAC9B,GACI0D,GAAOyD,EADPxC,GAAUR,IAAUiD,GAAgBjD,GAExC,IAAgB,MAAZzE,GAA2B,MAAPD,EAAa,CACnCA,EAAMS,EAAYT,GAAOA,EAAMU,EAAEsG,OAAOhH,EACxC,KAAK,GAAIsB,GAAI,EAAGjB,EAASL,EAAIK,OAAYA,EAAJiB,EAAYA,IAC/C2C,EAAQjE,EAAIsB,GACR2C,EAAQiB,IACVA,EAASjB,OAIbhE,GAAWc,EAAGd,EAAUM,GACxBG,EAAE2E,KAAKrF,EAAK,SAASiE,EAAO7D,EAAOiG,GACjCqB,EAAWzH,EAASgE,EAAO7D,EAAOiG,IAC9BqB,EAAWC,GAAgBD,KAAchD,KAAYQ,KAAYR,OACnEQ,EAASjB,EACT0D,EAAeD,IAIrB,OAAOxC,IAITxE,EAAEe,IAAM,SAASzB,EAAKC,EAAUM,GAC9B,GACI0D,GAAOyD,EADPxC,EAASR,IAAUiD,EAAejD,GAEtC,IAAgB,MAAZzE,GAA2B,MAAPD,EAAa,CACnCA,EAAMS,EAAYT,GAAOA,EAAMU,EAAEsG,OAAOhH,EACxC,KAAK,GAAIsB,GAAI,EAAGjB,EAASL,EAAIK,OAAYA,EAAJiB,EAAYA,IAC/C2C,EAAQjE,EAAIsB,GACA4D,EAARjB,IACFiB,EAASjB,OAIbhE,GAAWc,EAAGd,EAAUM,GACxBG,EAAE2E,KAAKrF,EAAK,SAASiE,EAAO7D,EAAOiG,GACjCqB,EAAWzH,EAASgE,EAAO7D,EAAOiG,IACnBsB,EAAXD,GAAwChD,MAAbgD,GAAoChD,MAAXQ,KACtDA,EAASjB,EACT0D,EAAeD,IAIrB,OAAOxC,IAKTxE,EAAEkH,QAAU,SAAS5H,GAInB,IAAK,GAAe6H,GAHhBC,EAAMrH,EAAYT,GAAOA,EAAMU,EAAEsG,OAAOhH,GACxCK,EAASyH,EAAIzH,OACb0H,EAAWlF,MAAMxC,GACZD,EAAQ,EAAiBC,EAARD,EAAgBA,IACxCyH,EAAOnH,EAAEsH,OAAO,EAAG5H,GACfyH,IAASzH,IAAO2H,EAAS3H,GAAS2H,EAASF,IAC/CE,EAASF,GAAQC,EAAI1H,EAEvB,OAAO2H,IAMTrH,EAAEuH,OAAS,SAASjI,EAAKkI,EAAGnB,GAC1B,MAAS,OAALmB,GAAanB,GACVtG,EAAYT,KAAMA,EAAMU,EAAEsG,OAAOhH,IAC/BA,EAAIU,EAAEsH,OAAOhI,EAAIK,OAAS,KAE5BK,EAAEkH,QAAQ5H,GAAK0B,MAAM,EAAGH,KAAKC,IAAI,EAAG0G,KAI7CxH,EAAEyH,OAAS,SAASnI,EAAKC,EAAUM,GAEjC,MADAN,GAAWc,EAAGd,EAAUM,GACjBG,EAAE4G,MAAM5G,EAAE6E,IAAIvF,EAAK,SAASiE,EAAO7D,EAAOiG,GAC/C,OACEpC,MAAOA,EACP7D,MAAOA,EACPgI,SAAUnI,EAASgE,EAAO7D,EAAOiG,MAElCgC,KAAK,SAASC,EAAMC,GACrB,GAAIC,GAAIF,EAAKF,SACTK,EAAIF,EAAMH,QACd,IAAII,IAAMC,EAAG,CACX,GAAID,EAAIC,GAAKD,QAAW,GAAG,MAAO,EAClC,IAAQC,EAAJD,GAASC,QAAW,GAAG,OAAQ,EAErC,MAAOH,GAAKlI,MAAQmI,EAAMnI,QACxB,SAIN,IAAIsI,GAAQ,SAASC,GACnB,MAAO,UAAS3I,EAAKC,EAAUM,GAC7B,GAAI2E,KAMJ,OALAjF,GAAWc,EAAGd,EAAUM,GACxBG,EAAE2E,KAAKrF,EAAK,SAASiE,EAAO7D,GAC1B,GAAI4E,GAAM/E,EAASgE,EAAO7D,EAAOJ,EACjC2I,GAASzD,EAAQjB,EAAOe,KAEnBE,GAMXxE,GAAEkI,QAAUF,EAAM,SAASxD,EAAQjB,EAAOe,GACpCtE,EAAE4B,IAAI4C,EAAQF,GAAME,EAAOF,GAAKxC,KAAKyB,GAAaiB,EAAOF,IAAQf,KAKvEvD,EAAEmI,QAAUH,EAAM,SAASxD,EAAQjB,EAAOe,GACxCE,EAAOF,GAAOf,IAMhBvD,EAAEoI,QAAUJ,EAAM,SAASxD,EAAQjB,EAAOe,GACpCtE,EAAE4B,IAAI4C,EAAQF,GAAME,EAAOF,KAAaE,EAAOF,GAAO,IAI5DtE,EAAEqI,QAAU,SAAS/I,GACnB,MAAKA,GACDU,EAAE0C,QAAQpD,GAAa0B,EAAMC,KAAK3B,GAClCS,EAAYT,GAAaU,EAAE6E,IAAIvF,EAAKU,EAAE4D,UACnC5D,EAAEsG,OAAOhH,OAIlBU,EAAEsI,KAAO,SAAShJ,GAChB,MAAW,OAAPA,EAAoB,EACjBS,EAAYT,GAAOA,EAAIK,OAASK,EAAEP,KAAKH,GAAKK,QAKrDK,EAAEuI,UAAY,SAASjJ,EAAKc,EAAWP,GACrCO,EAAYC,EAAGD,EAAWP,EAC1B,IAAI2I,MAAWC,IAIf,OAHAzI,GAAE2E,KAAKrF,EAAK,SAASiE,EAAOe,EAAKhF,IAC9Bc,EAAUmD,EAAOe,EAAKhF,GAAOkJ,EAAOC,GAAM3G,KAAKyB,MAE1CiF,EAAMC,IAShBzI,EAAE0I,MAAQ1I,EAAE2I,KAAO3I,EAAE4I,KAAO,SAASzI,EAAOqH,EAAGnB,GAC7C,MAAa,OAATlG,MAA2B,GACtB,MAALqH,GAAanB,EAAclG,EAAM,GAC9BH,EAAE6I,QAAQ1I,EAAOA,EAAMR,OAAS6H,IAMzCxH,EAAE6I,QAAU,SAAS1I,EAAOqH,EAAGnB,GAC7B,MAAOrF,GAAMC,KAAKd,EAAO,EAAGU,KAAKC,IAAI,EAAGX,EAAMR,QAAe,MAAL6H,GAAanB,EAAQ,EAAImB,MAKnFxH,EAAE8I,KAAO,SAAS3I,EAAOqH,EAAGnB,GAC1B,MAAa,OAATlG,MAA2B,GACtB,MAALqH,GAAanB,EAAclG,EAAMA,EAAMR,OAAS,GAC7CK,EAAE+I,KAAK5I,EAAOU,KAAKC,IAAI,EAAGX,EAAMR,OAAS6H,KAMlDxH,EAAE+I,KAAO/I,EAAEgJ,KAAOhJ,EAAEiJ,KAAO,SAAS9I,EAAOqH,EAAGnB,GAC5C,MAAOrF,GAAMC,KAAKd,EAAY,MAALqH,GAAanB,EAAQ,EAAImB,IAIpDxH,EAAEkJ,QAAU,SAAS/I,GACnB,MAAOH,GAAEyF,OAAOtF,EAAOH,EAAE4D,UAI3B,IAAIuF,GAAU,SAASC,EAAOC,EAASC,EAAQC,GAE7C,IAAK,GADDC,MAAa7I,EAAM,EACdC,EAAI2I,GAAc,EAAG5J,EAASW,EAAU8I,GAAYzJ,EAAJiB,EAAYA,IAAK,CACxE,GAAI2C,GAAQ6F,EAAMxI,EAClB,IAAIb,EAAYwD,KAAWvD,EAAE0C,QAAQa,IAAUvD,EAAEyJ,YAAYlG,IAAS,CAE/D8F,IAAS9F,EAAQ4F,EAAQ5F,EAAO8F,EAASC,GAC9C,IAAII,GAAI,EAAGC,EAAMpG,EAAM5D,MAEvB,KADA6J,EAAO7J,QAAUgK,EACNA,EAAJD,GACLF,EAAO7I,KAAS4C,EAAMmG,SAEdJ,KACVE,EAAO7I,KAAS4C,GAGpB,MAAOiG,GAITxJ,GAAEmJ,QAAU,SAAShJ,EAAOkJ,GAC1B,MAAOF,GAAQhJ,EAAOkJ,GAAS,IAIjCrJ,EAAE4J,QAAU,SAASzJ,GACnB,MAAOH,GAAE6J,WAAW1J,EAAOa,EAAMC,KAAKhB,UAAW,KAMnDD,EAAE8J,KAAO9J,EAAE+J,OAAS,SAAS5J,EAAO6J,EAAUzK,EAAUM,GACjDG,EAAEiK,UAAUD,KACfnK,EAAUN,EACVA,EAAWyK,EACXA,GAAW,GAEG,MAAZzK,IAAkBA,EAAWc,EAAGd,EAAUM,GAG9C,KAAK,GAFD2E,MACA0F,KACKtJ,EAAI,EAAGjB,EAASW,EAAUH,GAAYR,EAAJiB,EAAYA,IAAK,CAC1D,GAAI2C,GAAQpD,EAAMS,GACdoG,EAAWzH,EAAWA,EAASgE,EAAO3C,EAAGT,GAASoD,CAClDyG,IACGpJ,GAAKsJ,IAASlD,GAAUxC,EAAO1C,KAAKyB,GACzC2G,EAAOlD,GACEzH,EACJS,EAAE6B,SAASqI,EAAMlD,KACpBkD,EAAKpI,KAAKkF,GACVxC,EAAO1C,KAAKyB,IAEJvD,EAAE6B,SAAS2C,EAAQjB,IAC7BiB,EAAO1C,KAAKyB,GAGhB,MAAOiB,IAKTxE,EAAEmK,MAAQ,WACR,MAAOnK,GAAE8J,KAAKX,EAAQlJ,WAAW,GAAM,KAKzCD,EAAEoK,aAAe,SAASjK,GAGxB,IAAK,GAFDqE,MACA6F,EAAapK,UAAUN,OAClBiB,EAAI,EAAGjB,EAASW,EAAUH,GAAYR,EAAJiB,EAAYA,IAAK,CAC1D,GAAIF,GAAOP,EAAMS,EACjB,KAAIZ,EAAE6B,SAAS2C,EAAQ9D,GAAvB,CACA,IAAK,GAAIgJ,GAAI,EAAOW,EAAJX,GACT1J,EAAE6B,SAAS5B,UAAUyJ,GAAIhJ,GADAgJ,KAG5BA,IAAMW,GAAY7F,EAAO1C,KAAKpB,IAEpC,MAAO8D,IAKTxE,EAAE6J,WAAa,SAAS1J,GACtB,GAAI4I,GAAOI,EAAQlJ,WAAW,GAAM,EAAM,EAC1C,OAAOD,GAAEyF,OAAOtF,EAAO,SAASoD,GAC9B,OAAQvD,EAAE6B,SAASkH,EAAMxF,MAM7BvD,EAAEsK,IAAM,WACN,MAAOtK,GAAEuK,MAAMtK,YAKjBD,EAAEuK,MAAQ,SAASpK,GAIjB,IAAK,GAHDR,GAASQ,GAASH,EAAEc,IAAIX,EAAOG,GAAWX,QAAU,EACpD6E,EAASrC,MAAMxC,GAEVD,EAAQ,EAAWC,EAARD,EAAgBA,IAClC8E,EAAO9E,GAASM,EAAE4G,MAAMzG,EAAOT,EAEjC,OAAO8E,IAMTxE,EAAEwK,OAAS,SAAS7E,EAAMW,GAExB,IAAK,GADD9B,MACK5D,EAAI,EAAGjB,EAASW,EAAUqF,GAAWhG,EAAJiB,EAAYA,IAChD0F,EACF9B,EAAOmB,EAAK/E,IAAM0F,EAAO1F,GAEzB4D,EAAOmB,EAAK/E,GAAG,IAAM+E,EAAK/E,GAAG,EAGjC,OAAO4D,IAiBTxE,EAAEuF,UAAYrF,EAA2B,GACzCF,EAAEyK,cAAgBvK,GAA4B,GAI9CF,EAAES,YAAc,SAASN,EAAOb,EAAKC,EAAUM,GAC7CN,EAAWc,EAAGd,EAAUM,EAAS,EAGjC,KAFA,GAAI0D,GAAQhE,EAASD,GACjBoL,EAAM,EAAGC,EAAOrK,EAAUH,GACjBwK,EAAND,GAAY,CACjB,GAAIE,GAAM/J,KAAKgK,OAAOH,EAAMC,GAAQ,EAChCpL,GAASY,EAAMyK,IAAQrH,EAAOmH,EAAME,EAAM,EAAQD,EAAOC,EAE/D,MAAOF,IAgCT1K,EAAEuG,QAAUhG,EAAkB,EAAGP,EAAEuF,UAAWvF,EAAES,aAChDT,EAAE8K,YAAcvK,GAAmB,EAAGP,EAAEyK,eAKxCzK,EAAE+K,MAAQ,SAASC,EAAOC,EAAMC,GAClB,MAARD,IACFA,EAAOD,GAAS,EAChBA,EAAQ,GAEVE,EAAOA,GAAQ,CAKf,KAAK,GAHDvL,GAASkB,KAAKC,IAAID,KAAKsK,MAAMF,EAAOD,GAASE,GAAO,GACpDH,EAAQ5I,MAAMxC,GAETgB,EAAM,EAAShB,EAANgB,EAAcA,IAAOqK,GAASE,EAC9CH,EAAMpK,GAAOqK,CAGf,OAAOD,GAQT,IAAIK,GAAe,SAASC,EAAYC,EAAWzL,EAAS0L,EAAgB7E,GAC1E,KAAM6E,YAA0BD,IAAY,MAAOD,GAAW1H,MAAM9D,EAAS6G,EAC7E,IAAI8E,GAAOjH,EAAW8G,EAAW5J,WAC7B+C,EAAS6G,EAAW1H,MAAM6H,EAAM9E,EACpC,OAAI1G,GAAE6D,SAASW,GAAgBA,EACxBgH,EAMTxL,GAAE6C,KAAO,SAASQ,EAAMxD,GACtB,GAAI+C,GAAcS,EAAKR,OAASD,EAAY,MAAOA,GAAWe,MAAMN,EAAMrC,EAAMC,KAAKhB,UAAW,GAChG,KAAKD,EAAEwB,WAAW6B,GAAO,KAAM,IAAIoI,WAAU,oCAC7C,IAAI/E,GAAO1F,EAAMC,KAAKhB,UAAW,GAC7ByL,EAAQ,WACV,MAAON,GAAa/H,EAAMqI,EAAO7L,EAASmC,KAAM0E,EAAKiF,OAAO3K,EAAMC,KAAKhB,aAEzE,OAAOyL,IAMT1L,EAAE4L,QAAU,SAASvI,GACnB,GAAIwI,GAAY7K,EAAMC,KAAKhB,UAAW,GAClCyL,EAAQ,WAGV,IAAK,GAFDI,GAAW,EAAGnM,EAASkM,EAAUlM,OACjC+G,EAAOvE,MAAMxC,GACRiB,EAAI,EAAOjB,EAAJiB,EAAYA,IAC1B8F,EAAK9F,GAAKiL,EAAUjL,KAAOZ,EAAIC,UAAU6L,KAAcD,EAAUjL,EAEnE,MAAOkL,EAAW7L,UAAUN,QAAQ+G,EAAK5E,KAAK7B,UAAU6L,KACxD,OAAOV,GAAa/H,EAAMqI,EAAO1J,KAAMA,KAAM0E,GAE/C,OAAOgF,IAMT1L,EAAE+L,QAAU,SAASzM,GACnB,GAAIsB,GAA8B0D,EAA3B3E,EAASM,UAAUN,MAC1B,IAAc,GAAVA,EAAa,KAAM,IAAIqM,OAAM,wCACjC,KAAKpL,EAAI,EAAOjB,EAAJiB,EAAYA,IACtB0D,EAAMrE,UAAUW,GAChBtB,EAAIgF,GAAOtE,EAAE6C,KAAKvD,EAAIgF,GAAMhF,EAE9B,OAAOA,IAITU,EAAEiM,QAAU,SAAS5I,EAAM6I,GACzB,GAAID,GAAU,SAAS3H,GACrB,GAAI6H,GAAQF,EAAQE,MAChBC,EAAU,IAAMF,EAASA,EAAOvI,MAAM3B,KAAM/B,WAAaqE,EAE7D,OADKtE,GAAE4B,IAAIuK,EAAOC,KAAUD,EAAMC,GAAW/I,EAAKM,MAAM3B,KAAM/B,YACvDkM,EAAMC,GAGf,OADAH,GAAQE,SACDF,GAKTjM,EAAEqM,MAAQ,SAAShJ,EAAMiJ,GACvB,GAAI5F,GAAO1F,EAAMC,KAAKhB,UAAW,EACjC,OAAOsM,YAAW,WAChB,MAAOlJ,GAAKM,MAAM,KAAM+C,IACvB4F,IAKLtM,EAAEwM,MAAQxM,EAAE4L,QAAQ5L,EAAEqM,MAAOrM,EAAG,GAOhCA,EAAEyM,SAAW,SAASpJ,EAAMiJ,EAAMI,GAChC,GAAI7M,GAAS6G,EAAMlC,EACfmI,EAAU,KACVC,EAAW,CACVF,KAASA,KACd,IAAIG,GAAQ,WACVD,EAAWF,EAAQI,WAAY,EAAQ,EAAI9M,EAAE+M,MAC7CJ,EAAU,KACVnI,EAASnB,EAAKM,MAAM9D,EAAS6G,GACxBiG,IAAS9M,EAAU6G,EAAO,MAEjC,OAAO,YACL,GAAIqG,GAAM/M,EAAE+M,KACPH,IAAYF,EAAQI,WAAY,IAAOF,EAAWG,EACvD,IAAIC,GAAYV,GAAQS,EAAMH,EAc9B,OAbA/M,GAAUmC,KACV0E,EAAOzG,UACU,GAAb+M,GAAkBA,EAAYV,GAC5BK,IACFM,aAAaN,GACbA,EAAU,MAEZC,EAAWG,EACXvI,EAASnB,EAAKM,MAAM9D,EAAS6G,GACxBiG,IAAS9M,EAAU6G,EAAO,OACrBiG,GAAWD,EAAQQ,YAAa,IAC1CP,EAAUJ,WAAWM,EAAOG,IAEvBxI,IAQXxE,EAAEmN,SAAW,SAAS9J,EAAMiJ,EAAMc,GAChC,GAAIT,GAASjG,EAAM7G,EAASwN,EAAW7I,EAEnCqI,EAAQ,WACV,GAAI/D,GAAO9I,EAAE+M,MAAQM,CAEVf,GAAPxD,GAAeA,GAAQ,EACzB6D,EAAUJ,WAAWM,EAAOP,EAAOxD,IAEnC6D,EAAU,KACLS,IACH5I,EAASnB,EAAKM,MAAM9D,EAAS6G,GACxBiG,IAAS9M,EAAU6G,EAAO,QAKrC,OAAO,YACL7G,EAAUmC,KACV0E,EAAOzG,UACPoN,EAAYrN,EAAE+M,KACd,IAAIO,GAAUF,IAAcT,CAO5B,OANKA,KAASA,EAAUJ,WAAWM,EAAOP,IACtCgB,IACF9I,EAASnB,EAAKM,MAAM9D,EAAS6G,GAC7B7G,EAAU6G,EAAO,MAGZlC,IAOXxE,EAAEuN,KAAO,SAASlK,EAAMmK,GACtB,MAAOxN,GAAE4L,QAAQ4B,EAASnK,IAI5BrD,EAAE6F,OAAS,SAASzF,GAClB,MAAO,YACL,OAAQA,EAAUuD,MAAM3B,KAAM/B,aAMlCD,EAAEyN,QAAU,WACV,GAAI/G,GAAOzG,UACP+K,EAAQtE,EAAK/G,OAAS,CAC1B,OAAO,YAGL,IAFA,GAAIiB,GAAIoK,EACJxG,EAASkC,EAAKsE,GAAOrH,MAAM3B,KAAM/B,WAC9BW,KAAK4D,EAASkC,EAAK9F,GAAGK,KAAKe,KAAMwC,EACxC,OAAOA,KAKXxE,EAAE0N,MAAQ,SAASC,EAAOtK,GACxB,MAAO,YACL,QAAMsK,EAAQ,EACLtK,EAAKM,MAAM3B,KAAM/B,WAD1B,SAOJD,EAAE4N,OAAS,SAASD,EAAOtK,GACzB,GAAI7D,EACJ,OAAO,YAKL,QAJMmO,EAAQ,IACZnO,EAAO6D,EAAKM,MAAM3B,KAAM/B,YAEb,GAAT0N,IAAYtK,EAAO,MAChB7D,IAMXQ,EAAE6N,KAAO7N,EAAE4L,QAAQ5L,EAAE4N,OAAQ,EAM7B,IAAIE,KAAevL,SAAU,MAAMwL,qBAAqB,YACpD1M,GAAsB,UAAW,gBAAiB,WAClC,uBAAwB,iBAAkB,iBAqB9DrB,GAAEP,KAAO,SAASH,GAChB,IAAKU,EAAE6D,SAASvE,GAAM,QACtB,IAAIqD,EAAY,MAAOA,GAAWrD,EAClC,IAAIG,KACJ,KAAK,GAAI6E,KAAOhF,GAASU,EAAE4B,IAAItC,EAAKgF,IAAM7E,EAAKqC,KAAKwC,EAGpD,OADIwJ,IAAY3M,EAAoB7B,EAAKG,GAClCA,GAITO,EAAEgO,QAAU,SAAS1O,GACnB,IAAKU,EAAE6D,SAASvE,GAAM,QACtB,IAAIG,KACJ,KAAK,GAAI6E,KAAOhF,GAAKG,EAAKqC,KAAKwC,EAG/B,OADIwJ,IAAY3M,EAAoB7B,EAAKG,GAClCA,GAITO,EAAEsG,OAAS,SAAShH,GAIlB,IAAK,GAHDG,GAAOO,EAAEP,KAAKH,GACdK,EAASF,EAAKE,OACd2G,EAASnE,MAAMxC,GACViB,EAAI,EAAOjB,EAAJiB,EAAYA,IAC1B0F,EAAO1F,GAAKtB,EAAIG,EAAKmB,GAEvB,OAAO0F,IAKTtG,EAAEiO,UAAY,SAAS3O,EAAKC,EAAUM,GACpCN,EAAWc,EAAGd,EAAUM,EAKtB,KAAK,GADDD,GAHFH,EAAQO,EAAEP,KAAKH,GACbK,EAASF,EAAKE,OACdoF,KAEKrF,EAAQ,EAAWC,EAARD,EAAgBA,IAClCE,EAAaH,EAAKC,GAClBqF,EAAQnF,GAAcL,EAASD,EAAIM,GAAaA,EAAYN,EAE9D,OAAOyF,IAIX/E,EAAEkO,MAAQ,SAAS5O,GAIjB,IAAK,GAHDG,GAAOO,EAAEP,KAAKH,GACdK,EAASF,EAAKE,OACduO,EAAQ/L,MAAMxC,GACTiB,EAAI,EAAOjB,EAAJiB,EAAYA,IAC1BsN,EAAMtN,IAAMnB,EAAKmB,GAAItB,EAAIG,EAAKmB,IAEhC,OAAOsN,IAITlO,EAAEmO,OAAS,SAAS7O,GAGlB,IAAK,GAFDkF,MACA/E,EAAOO,EAAEP,KAAKH,GACTsB,EAAI,EAAGjB,EAASF,EAAKE,OAAYA,EAAJiB,EAAYA,IAChD4D,EAAOlF,EAAIG,EAAKmB,KAAOnB,EAAKmB,EAE9B,OAAO4D,IAKTxE,EAAEoO,UAAYpO,EAAEqO,QAAU,SAAS/O,GACjC,GAAIgP,KACJ,KAAK,GAAIhK,KAAOhF,GACVU,EAAEwB,WAAWlC,EAAIgF,KAAOgK,EAAMxM,KAAKwC,EAEzC,OAAOgK,GAAM3G,QAIf3H,EAAEuO,OAAStK,EAAejE,EAAEgO,SAI5BhO,EAAEwO,UAAYxO,EAAEyO,OAASxK,EAAejE,EAAEP,MAG1CO,EAAEwF,QAAU,SAASlG,EAAKc,EAAWP,GACnCO,EAAYC,EAAGD,EAAWP,EAE1B,KAAK,GADmByE,GAApB7E,EAAOO,EAAEP,KAAKH,GACTsB,EAAI,EAAGjB,EAASF,EAAKE,OAAYA,EAAJiB,EAAYA,IAEhD,GADA0D,EAAM7E,EAAKmB,GACPR,EAAUd,EAAIgF,GAAMA,EAAKhF,GAAM,MAAOgF,IAK9CtE,EAAE0O,KAAO,SAASlE,EAAQmE,EAAW9O,GACnC,GAA+BN,GAAUE,EAArC+E,KAAalF,EAAMkL,CACvB,IAAW,MAAPlL,EAAa,MAAOkF,EACpBxE,GAAEwB,WAAWmN,IACflP,EAAOO,EAAEgO,QAAQ1O,GACjBC,EAAWO,EAAW6O,EAAW9O,KAEjCJ,EAAO0J,EAAQlJ,WAAW,GAAO,EAAO,GACxCV,EAAW,SAASgE,EAAOe,EAAKhF,GAAO,MAAOgF,KAAOhF,IACrDA,EAAM8C,OAAO9C,GAEf,KAAK,GAAIsB,GAAI,EAAGjB,EAASF,EAAKE,OAAYA,EAAJiB,EAAYA,IAAK,CACrD,GAAI0D,GAAM7E,EAAKmB,GACX2C,EAAQjE,EAAIgF,EACZ/E,GAASgE,EAAOe,EAAKhF,KAAMkF,EAAOF,GAAOf,GAE/C,MAAOiB,IAITxE,EAAE4O,KAAO,SAAStP,EAAKC,EAAUM,GAC/B,GAAIG,EAAEwB,WAAWjC,GACfA,EAAWS,EAAE6F,OAAOtG,OACf,CACL,GAAIE,GAAOO,EAAE6E,IAAIsE,EAAQlJ,WAAW,GAAO,EAAO,GAAI4O,OACtDtP,GAAW,SAASgE,EAAOe,GACzB,OAAQtE,EAAE6B,SAASpC,EAAM6E,IAG7B,MAAOtE,GAAE0O,KAAKpP,EAAKC,EAAUM,IAI/BG,EAAE8O,SAAW7K,EAAejE,EAAEgO,SAAS,GAKvChO,EAAE+C,OAAS,SAAStB,EAAWsN,GAC7B,GAAIvK,GAASD,EAAW9C,EAExB,OADIsN,IAAO/O,EAAEwO,UAAUhK,EAAQuK,GACxBvK,GAITxE,EAAEgP,MAAQ,SAAS1P,GACjB,MAAKU,GAAE6D,SAASvE,GACTU,EAAE0C,QAAQpD,GAAOA,EAAI0B,QAAUhB,EAAEuO,UAAWjP,GADtBA,GAO/BU,EAAEiP,IAAM,SAAS3P,EAAK4P,GAEpB,MADAA,GAAY5P,GACLA,GAITU,EAAEmP,QAAU,SAAS3E,EAAQ1D,GAC3B,GAAIrH,GAAOO,EAAEP,KAAKqH,GAAQnH,EAASF,EAAKE,MACxC,IAAc,MAAV6K,EAAgB,OAAQ7K,CAE5B,KAAK,GADDL,GAAM8C,OAAOoI,GACR5J,EAAI,EAAOjB,EAAJiB,EAAYA,IAAK,CAC/B,GAAI0D,GAAM7E,EAAKmB,EACf,IAAIkG,EAAMxC,KAAShF,EAAIgF,MAAUA,IAAOhF,IAAM,OAAO,EAEvD,OAAO,EAKT,IAAI8P,GAAK,SAAStH,EAAGC,EAAGsH,EAAQC,GAG9B,GAAIxH,IAAMC,EAAG,MAAa,KAAND,GAAW,EAAIA,IAAM,EAAIC,CAE7C,IAAS,MAALD,GAAkB,MAALC,EAAW,MAAOD,KAAMC,CAErCD,aAAa9H,KAAG8H,EAAIA,EAAE7E,UACtB8E,YAAa/H,KAAG+H,EAAIA,EAAE9E,SAE1B,IAAIsM,GAAYhN,EAAStB,KAAK6G,EAC9B,IAAIyH,IAAchN,EAAStB,KAAK8G,GAAI,OAAO,CAC3C,QAAQwH,GAEN,IAAK,kBAEL,IAAK,kBAGH,MAAO,GAAKzH,GAAM,GAAKC,CACzB,KAAK,kBAGH,OAAKD,KAAOA,GAAWC,KAAOA,EAEhB,KAAND,EAAU,GAAKA,IAAM,EAAIC,GAAKD,KAAOC,CAC/C,KAAK,gBACL,IAAK,mBAIH,OAAQD,KAAOC,EAGnB,GAAIyH,GAA0B,mBAAdD,CAChB,KAAKC,EAAW,CACd,GAAgB,gBAAL1H,IAA6B,gBAALC,GAAe,OAAO,CAIzD,IAAI0H,GAAQ3H,EAAExG,YAAaoO,EAAQ3H,EAAEzG,WACrC,IAAImO,IAAUC,KAAW1P,EAAEwB,WAAWiO,IAAUA,YAAiBA,IACxCzP,EAAEwB,WAAWkO,IAAUA,YAAiBA,KACzC,eAAiB5H,IAAK,eAAiBC,GAC7D,OAAO,EAQXsH,EAASA,MACTC,EAASA,KAET,KADA,GAAI3P,GAAS0P,EAAO1P,OACbA,KAGL,GAAI0P,EAAO1P,KAAYmI,EAAG,MAAOwH,GAAO3P,KAAYoI,CAQtD,IAJAsH,EAAOvN,KAAKgG,GACZwH,EAAOxN,KAAKiG,GAGRyH,EAAW,CAGb,GADA7P,EAASmI,EAAEnI,OACPA,IAAWoI,EAAEpI,OAAQ,OAAO,CAEhC,MAAOA,KACL,IAAKyP,EAAGtH,EAAEnI,GAASoI,EAAEpI,GAAS0P,EAAQC,GAAS,OAAO,MAEnD,CAEL,GAAsBhL,GAAlB7E,EAAOO,EAAEP,KAAKqI,EAGlB,IAFAnI,EAASF,EAAKE,OAEVK,EAAEP,KAAKsI,GAAGpI,SAAWA,EAAQ,OAAO,CACxC,MAAOA,KAGL,GADA2E,EAAM7E,EAAKE,IACLK,EAAE4B,IAAImG,EAAGzD,KAAQ8K,EAAGtH,EAAExD,GAAMyD,EAAEzD,GAAM+K,EAAQC,GAAU,OAAO,EAMvE,MAFAD,GAAOM,MACPL,EAAOK,OACA,EAIT3P,GAAE4P,QAAU,SAAS9H,EAAGC,GACtB,MAAOqH,GAAGtH,EAAGC,IAKf/H,EAAE6P,QAAU,SAASvQ,GACnB,MAAW,OAAPA,GAAoB,EACpBS,EAAYT,KAASU,EAAE0C,QAAQpD,IAAQU,EAAE8P,SAASxQ,IAAQU,EAAEyJ,YAAYnK,IAA6B,IAAfA,EAAIK,OAChE,IAAvBK,EAAEP,KAAKH,GAAKK,QAIrBK,EAAE+P,UAAY,SAASzQ,GACrB,SAAUA,GAAwB,IAAjBA,EAAI0Q,WAKvBhQ,EAAE0C,QAAUD,GAAiB,SAASnD,GACpC,MAA8B,mBAAvBiD,EAAStB,KAAK3B,IAIvBU,EAAE6D,SAAW,SAASvE,GACpB,GAAI2Q,SAAc3Q,EAClB,OAAgB,aAAT2Q,GAAgC,WAATA,KAAuB3Q,GAIvDU,EAAE2E,MAAM,YAAa,WAAY,SAAU,SAAU,OAAQ,SAAU,SAAU,SAASuL,GACxFlQ,EAAE,KAAOkQ,GAAQ,SAAS5Q,GACxB,MAAOiD,GAAStB,KAAK3B,KAAS,WAAa4Q,EAAO,OAMjDlQ,EAAEyJ,YAAYxJ,aACjBD,EAAEyJ,YAAc,SAASnK,GACvB,MAAOU,GAAE4B,IAAItC,EAAK,YAMJ,kBAAP,KAAyC,gBAAb6Q,aACrCnQ,EAAEwB,WAAa,SAASlC,GACtB,MAAqB,kBAAPA,KAAqB,IAKvCU,EAAEoQ,SAAW,SAAS9Q,GACpB,MAAO8Q,UAAS9Q,KAAS4B,MAAMmP,WAAW/Q,KAI5CU,EAAEkB,MAAQ,SAAS5B,GACjB,MAAOU,GAAEsQ,SAAShR,IAAQA,KAASA,GAIrCU,EAAEiK,UAAY,SAAS3K,GACrB,MAAOA,MAAQ,GAAQA,KAAQ,GAAgC,qBAAvBiD,EAAStB,KAAK3B,IAIxDU,EAAEuQ,OAAS,SAASjR,GAClB,MAAe,QAARA,GAITU,EAAEwQ,YAAc,SAASlR,GACvB,MAAOA,SAAa,IAKtBU,EAAE4B,IAAM,SAAStC,EAAKgF,GACpB,MAAc,OAAPhF,GAAekD,EAAevB,KAAK3B,EAAKgF,IAQjDtE,EAAEyQ,WAAa,WAEb,MADA1O,GAAK/B,EAAIiC,EACFD,MAIThC,EAAE4D,SAAW,SAASL,GACpB,MAAOA,IAITvD,EAAE0Q,SAAW,SAASnN,GACpB,MAAO,YACL,MAAOA,KAIXvD,EAAE2Q,KAAO,aAET3Q,EAAE+D,SAAWA,EAGb/D,EAAE4Q,WAAa,SAAStR,GACtB,MAAc,OAAPA,EAAc,aAAe,SAASgF,GAC3C,MAAOhF,GAAIgF,KAMftE,EAAE8D,QAAU9D,EAAE6Q,QAAU,SAAS/J,GAE/B,MADAA,GAAQ9G,EAAEwO,aAAc1H,GACjB,SAASxH,GACd,MAAOU,GAAEmP,QAAQ7P,EAAKwH,KAK1B9G,EAAE2N,MAAQ,SAASnG,EAAGjI,EAAUM,GAC9B,GAAIiR,GAAQ3O,MAAMtB,KAAKC,IAAI,EAAG0G,GAC9BjI,GAAWO,EAAWP,EAAUM,EAAS,EACzC,KAAK,GAAIe,GAAI,EAAO4G,EAAJ5G,EAAOA,IAAKkQ,EAAMlQ,GAAKrB,EAASqB,EAChD,OAAOkQ,IAIT9Q,EAAEsH,OAAS,SAASvG,EAAKD,GAKvB,MAJW,OAAPA,IACFA,EAAMC,EACNA,EAAM,GAEDA,EAAMF,KAAKgK,MAAMhK,KAAKyG,UAAYxG,EAAMC,EAAM,KAIvDf,EAAE+M,IAAMgE,KAAKhE,KAAO,WAClB,OAAO,GAAIgE,OAAOC,UAIpB,IAAIC,IACFC,IAAK,QACLC,IAAK,OACLC,IAAK,OACLC,IAAK,SACLC,IAAK,SACLC,IAAK,UAEHC,EAAcxR,EAAEmO,OAAO8C,GAGvBQ,EAAgB,SAAS5M,GAC3B,GAAI6M,GAAU,SAASC,GACrB,MAAO9M,GAAI8M,IAGTvN,EAAS,MAAQpE,EAAEP,KAAKoF,GAAK+M,KAAK,KAAO,IACzCC,EAAaC,OAAO1N,GACpB2N,EAAgBD,OAAO1N,EAAQ,IACnC,OAAO,UAAS4N,GAEd,MADAA,GAAmB,MAAVA,EAAiB,GAAK,GAAKA,EAC7BH,EAAWI,KAAKD,GAAUA,EAAOE,QAAQH,EAAeL,GAAWM,GAG9EhS,GAAEmS,OAASV,EAAcR,GACzBjR,EAAEoS,SAAWX,EAAcD,GAI3BxR,EAAEwE,OAAS,SAASgG,EAAQzG,EAAUsO,GACpC,GAAI9O,GAAkB,MAAViH,MAAsB,GAAIA,EAAOzG,EAI7C,OAHIR,SAAe,KACjBA,EAAQ8O,GAEHrS,EAAEwB,WAAW+B,GAASA,EAAMtC,KAAKuJ,GAAUjH,EAKpD,IAAI+O,GAAY,CAChBtS,GAAEuS,SAAW,SAASC,GACpB,GAAIC,KAAOH,EAAY,EACvB,OAAOE,GAASA,EAASC,EAAKA,GAKhCzS,EAAE0S,kBACAC,SAAc,kBACdC,YAAc,mBACdT,OAAc,mBAMhB,IAAIU,GAAU,OAIVC,GACFxB,IAAU,IACVyB,KAAU,KACVC,KAAU,IACVC,KAAU,IACVC,SAAU,QACVC,SAAU,SAGRzB,EAAU,4BAEV0B,EAAa,SAASzB,GACxB,MAAO,KAAOmB,EAAQnB,GAOxB3R,GAAEqT,SAAW,SAASC,EAAMC,EAAUC,IAC/BD,GAAYC,IAAaD,EAAWC,GACzCD,EAAWvT,EAAE8O,YAAayE,EAAUvT,EAAE0S,iBAGtC,IAAI5O,GAAUgO,SACXyB,EAASpB,QAAUU,GAASzO,QAC5BmP,EAASX,aAAeC,GAASzO,QACjCmP,EAASZ,UAAYE,GAASzO,QAC/BwN,KAAK,KAAO,KAAM,KAGhBlS,EAAQ,EACR0E,EAAS,QACbkP,GAAKpB,QAAQpO,EAAS,SAAS6N,EAAOQ,EAAQS,EAAaD,EAAUc,GAanE,MAZArP,IAAUkP,EAAKtS,MAAMtB,EAAO+T,GAAQvB,QAAQR,EAAS0B,GACrD1T,EAAQ+T,EAAS9B,EAAMhS,OAEnBwS,EACF/N,GAAU,cAAgB+N,EAAS,iCAC1BS,EACTxO,GAAU,cAAgBwO,EAAc,uBAC/BD,IACTvO,GAAU,OAASuO,EAAW,YAIzBhB,IAETvN,GAAU,OAGLmP,EAASG,WAAUtP,EAAS,mBAAqBA,EAAS,OAE/DA,EAAS,2CACP,oDACAA,EAAS,eAEX,KACE,GAAIuP,GAAS,GAAIrR,UAASiR,EAASG,UAAY,MAAO,IAAKtP,GAC3D,MAAOwP,GAEP,KADAA,GAAExP,OAASA,EACLwP,EAGR,GAAIP,GAAW,SAASQ,GACtB,MAAOF,GAAO1S,KAAKe,KAAM6R,EAAM7T,IAI7B8T,EAAWP,EAASG,UAAY,KAGpC,OAFAL,GAASjP,OAAS,YAAc0P,EAAW,OAAS1P,EAAS,IAEtDiP,GAITrT,EAAE+T,MAAQ,SAASzU,GACjB,GAAI0U,GAAWhU,EAAEV,EAEjB,OADA0U,GAASC,QAAS,EACXD,EAUT,IAAIxP,GAAS,SAASwP,EAAU1U,GAC9B,MAAO0U,GAASC,OAASjU,EAAEV,GAAKyU,QAAUzU,EAI5CU,GAAEkU,MAAQ,SAAS5U,GACjBU,EAAE2E,KAAK3E,EAAEoO,UAAU9O,GAAM,SAAS4Q,GAChC,GAAI7M,GAAOrD,EAAEkQ,GAAQ5Q,EAAI4Q,EACzBlQ,GAAEyB,UAAUyO,GAAQ,WAClB,GAAIxJ,IAAQ1E,KAAKiB,SAEjB,OADAnB,GAAK6B,MAAM+C,EAAMzG,WACVuE,EAAOxC,KAAMqB,EAAKM,MAAM3D,EAAG0G,QAMxC1G,EAAEkU,MAAMlU,GAGRA,EAAE2E,MAAM,MAAO,OAAQ,UAAW,QAAS,OAAQ,SAAU,WAAY,SAASuL,GAChF,GAAIzJ,GAASvE,EAAWgO,EACxBlQ,GAAEyB,UAAUyO,GAAQ,WAClB,GAAI5Q,GAAM0C,KAAKiB,QAGf,OAFAwD,GAAO9C,MAAMrE,EAAKW,WACJ,UAATiQ,GAA6B,WAATA,GAAqC,IAAf5Q,EAAIK,cAAqBL,GAAI,GACrEkF,EAAOxC,KAAM1C,MAKxBU,EAAE2E,MAAM,SAAU,OAAQ,SAAU,SAASuL,GAC3C,GAAIzJ,GAASvE,EAAWgO,EACxBlQ,GAAEyB,UAAUyO,GAAQ,WAClB,MAAO1L,GAAOxC,KAAMyE,EAAO9C,MAAM3B,KAAKiB,SAAUhD,eAKpDD,EAAEyB,UAAU8B,MAAQ,WAClB,MAAOvB,MAAKiB,UAKdjD,EAAEyB,UAAU0S,QAAUnU,EAAEyB,UAAU2S,OAASpU,EAAEyB,UAAU8B,MAEvDvD,EAAEyB,UAAUc,SAAW,WACrB,MAAO,GAAKP,KAAKiB,UAUG,kBAAXoR,SAAyBA,OAAOC,KACzCD,OAAO,gBAAkB,WACvB,MAAOrU,OAGXiB,KAAKe"} -------------------------------------------------------------------------------- /popover_ex/assets/versioncompare.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | /* 4 | Returns: 5 | -1 if v1 is less than v2 6 | 0 if vesions are equal 7 | 1 if v1 is greater than v2 8 | */ 9 | function versioncompare(v1,v2){ 10 | var s1,s2; 11 | s1=v1.toLowerCase(); 12 | s2=v2.toLowerCase(); 13 | s1=s1.replace(/^\D+/, ''); 14 | s2=s2.replace(/^\D+/, ''); 15 | if (s1==s2) 16 | return 0; 17 | if ( (!s1) || (!s2) ) 18 | return 0; 19 | return (versionsort([s1,s2])[0]==s1)? -1: 1; 20 | } 21 | 22 | /** 23 | * Read a list of versions an sort it. 24 | * @module version-sort 25 | * @function index 26 | * @param {array} versions An array of versions to sort. 27 | * @param {object} opts An object of options. 28 | * @return {array} The same version array but sorted.* 29 | * @license http://git.io/bHDfwQ ISC License 30 | */ 31 | function versionsort(versions, opts) { 32 | 33 | // Options 34 | var options = { 35 | ignore_stages: false, 36 | nested : false 37 | }; 38 | if (opts) { 39 | options.ignore_stages = opts.ignore_stages || options.ignore_stages; 40 | options.nested = opts.nested || options.nested; 41 | } 42 | 43 | 44 | // Nested objects 45 | if (options.nested) { 46 | var versionsObject = versions; 47 | versions = []; 48 | versionsObject.forEach(function (_version) { 49 | versions.push(_version[options.nested]); 50 | }); 51 | } 52 | 53 | var regex = /^([\d+\.]+)(([a-z]*)(\d*))$/; 54 | 55 | var store = { 56 | number : [], 57 | stage : [], 58 | stageName : [], 59 | stageNumber: [] 60 | }; 61 | var lenStore = { 62 | number : [], 63 | sequence : [], 64 | stage : [], 65 | stageName : [], 66 | stageNumber: [] 67 | }; 68 | var len = { 69 | number : 0, 70 | sequence : 0, 71 | stageName : 0, 72 | stageNumber: 0 73 | }; 74 | var v = []; 75 | 76 | // Fill stores up! 77 | versions.forEach(function (_version) { 78 | var compose = composeVersion(_version, regex); 79 | v.push(compose); 80 | store.number.push(compose.number); 81 | store.stage.push(compose.stage); 82 | store.stageName.push(compose.stageName); 83 | store.stageNumber.push(compose.stageNumber); 84 | }); 85 | 86 | v.forEach(function (_version) { 87 | // number 88 | _version.number.split('.').forEach(function (_sequence) { 89 | lenStore.number.push(parseInt(_sequence)); 90 | }); 91 | // sequence 92 | lenStore.sequence.push(_version.number.split('.').length); 93 | // stageName 94 | if (_version.stageName === null) { 95 | lenStore.stageName.push(''); 96 | } else { 97 | lenStore.stageName.push(_version.stageName); 98 | } 99 | // stageNumber 100 | if (_version.stageNumber === null) { 101 | lenStore.stageNumber.push(0); 102 | } else { 103 | lenStore.stageNumber.push(parseInt(_version.stageNumber)); 104 | } 105 | }); 106 | 107 | lenStore.stageName = _.union(lenStore.stageName); 108 | lenStore.stageName.sort(function(a, b) { 109 | return a.localeCompare(b); 110 | }); 111 | 112 | // Transform the store on unique stage names in order to place stable versions 113 | // at the end. 114 | lenStore.stageName[0] = null; 115 | lenStore.stageName.push(''); 116 | 117 | 118 | // Number of digit in the biggest sequence 119 | len.number = _.max(lenStore.number).toString().length; 120 | // Biggest number of sequence 121 | len.sequence = _.max(lenStore.sequence); 122 | //TODO: commenting 123 | len.stageName = lenStore.stageName.length.toString().length; 124 | //TODO: commenting 125 | len.stageNumber = _.max(lenStore.stageNumber).toString().length; 126 | 127 | 128 | var versionsSort = []; 129 | 130 | v.forEach(function (_version, _i) { 131 | if (options.ignore_stages && _version.stageName) { 132 | return; 133 | } 134 | var calc = ''; 135 | 136 | // number 137 | var split = _version.number.split('.'); 138 | var missingDots = new Array(len.sequence - split.length + 1).join('.'); 139 | var versionFull = _version.number + missingDots; 140 | versionFull.split('.').forEach(function (_sequence) { 141 | calc += new Array(len.number - _sequence.length + 1).join('0'); 142 | calc += _sequence; 143 | }); 144 | 145 | // stageName 146 | var stageName = _version.stageName || ''; 147 | var stageNameIndex = _.indexOf(lenStore.stageName, stageName); 148 | var stageNameLen = stageNameIndex.toString().length; 149 | var stageNameZero = new Array(len.stageName - stageNameLen + 1).join('0'); 150 | calc += stageNameZero + stageNameIndex; 151 | 152 | // stageNumber 153 | var stageNumLen = lenStore.stageNumber[_i].toString().length; 154 | var stageNumZero = new Array(len.stageNumber - stageNumLen + 1).join('0'); 155 | calc += stageNumZero + lenStore.stageNumber[_i].toString(); 156 | 157 | // parseInt 158 | calc = parseInt(calc); 159 | 160 | var index = versions[_i]; 161 | var items = { index: index, calc: calc }; 162 | if (options.nested) { 163 | items.object = versionsObject[_i]; 164 | } 165 | versionsSort.push(items); 166 | }); 167 | 168 | versionsSort.sort(function (a, b) { 169 | return b.calc - a.calc; 170 | }); 171 | 172 | var r = []; 173 | versionsSort.forEach(function (_versionSort) { 174 | if (options.nested) { 175 | r.push(_versionSort.object); 176 | return; 177 | } 178 | r.push(_versionSort.index); 179 | }); 180 | 181 | return r.reverse(); 182 | 183 | }; 184 | 185 | /** 186 | * Transform a string into an exploitable version object. 187 | * @param str The original string 188 | * @returns {{number: *, stage: (*|null), stageName: (*|null), stageNumber: (*|null)}} 189 | */ 190 | function composeVersion(str, regex) { 191 | var r = regex.exec(str); 192 | return { 193 | number : r[ 1 ], 194 | stage : r[ 2 ] || null, 195 | stageName : r[ 3 ] || null, 196 | stageNumber: r[ 4 ] || null 197 | }; 198 | } -------------------------------------------------------------------------------- /popover_ex/assets/versioncompare.min.js: -------------------------------------------------------------------------------- 1 | "use strict";function versioncompare(e,t){var a,n;return a=e.toLowerCase(),n=t.toLowerCase(),a=a.replace(/^\D+/,""),n=n.replace(/^\D+/,""),a==n?0:a&&n?versionsort([a,n])[0]==a?-1:1:0}function versionsort(e,t){var a={ignore_stages:!1,nested:!1};if(t&&(a.ignore_stages=t.ignore_stages||a.ignore_stages,a.nested=t.nested||a.nested),a.nested){var n=e;e=[],n.forEach(function(t){e.push(t[a.nested])})}var s=/^([\d+\.]+)(([a-z]*)(\d*))$/,r={number:[],stage:[],stageName:[],stageNumber:[]},u={number:[],sequence:[],stage:[],stageName:[],stageNumber:[]},g={number:0,sequence:0,stageName:0,stageNumber:0},o=[];e.forEach(function(e){var t=composeVersion(e,s);o.push(t),r.number.push(t.number),r.stage.push(t.stage),r.stageName.push(t.stageName),r.stageNumber.push(t.stageNumber)}),o.forEach(function(e){e.number.split(".").forEach(function(e){u.number.push(parseInt(e))}),u.sequence.push(e.number.split(".").length),null===e.stageName?u.stageName.push(""):u.stageName.push(e.stageName),null===e.stageNumber?u.stageNumber.push(0):u.stageNumber.push(parseInt(e.stageNumber))}),u.stageName=_.union(u.stageName),u.stageName.sort(function(e,t){return e.localeCompare(t)}),u.stageName[0]=null,u.stageName.push(""),g.number=_.max(u.number).toString().length,g.sequence=_.max(u.sequence),g.stageName=u.stageName.length.toString().length,g.stageNumber=_.max(u.stageNumber).toString().length;var m=[];o.forEach(function(t,s){if(!a.ignore_stages||!t.stageName){var r="",o=t.number.split("."),i=new Array(g.sequence-o.length+1).join("."),c=t.number+i;c.split(".").forEach(function(e){r+=new Array(g.number-e.length+1).join("0"),r+=e});var N=t.stageName||"",h=_.indexOf(u.stageName,N),l=h.toString().length,b=new Array(g.stageName-l+1).join("0");r+=b+h;var p=u.stageNumber[s].toString().length,f=new Array(g.stageNumber-p+1).join("0");r+=f+u.stageNumber[s].toString(),r=parseInt(r);var v=e[s],d={index:v,calc:r};a.nested&&(d.object=n[s]),m.push(d)}}),m.sort(function(e,t){return t.calc-e.calc});var i=[];return m.forEach(function(e){return a.nested?void i.push(e.object):void i.push(e.index)}),i.reverse()}function composeVersion(e,t){var a=t.exec(e);return{number:a[1],stage:a[2]||null,stageName:a[3]||null,stageNumber:a[4]||null}} -------------------------------------------------------------------------------- /popover_ex/css/popoverex.edit.css: -------------------------------------------------------------------------------- 1 | .uk-popoverex-tooltip.uk-tooltip{ 2 | word-break: normal; 3 | background: #fff0e0; 4 | color: rgba(0, 0, 0, 0.8); 5 | border-radius: 10px; 6 | } 7 | .uk-popoverex-tooltip.uk-tooltip-top:after { 8 | border-top-color: #fff0e0; 9 | } 10 | .uk-popoverex div span[data-uk-tooltip]{ 11 | margin-top:5px; 12 | } 13 | .uk-popoverex div span > span[data-uk-tooltip] > i{ 14 | color:#ffb105; 15 | margin-left:5px; 16 | text-decoration: none; 17 | font-family: FontAwesome; 18 | display: inline-block; 19 | font-weight: 400; 20 | font-style: normal; 21 | line-height: 1; 22 | -webkit-font-smoothing: antialiased; 23 | -moz-osx-font-smoothing: grayscale; 24 | } 25 | .uk-popoverex div span > span[data-uk-tooltip]>i:before { 26 | content: "\f059"; 27 | } -------------------------------------------------------------------------------- /popover_ex/css/style.css: -------------------------------------------------------------------------------- 1 | .uk-widgetkit-popover-ex a.wk-popover-custom { 2 | width: 100%; 3 | height: 100%; 4 | display: block; 5 | background-size: contain; 6 | background-repeat: no-repeat; 7 | background-image: url('data:image/png;base64,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'); 8 | } 9 | .uk-widgetkit-popover-ex a.wk-popover-custom:hover { 10 | opacity: 1 !important; 11 | transition: opacity 0.3s ease-out; 12 | } 13 | .uk-widgetkit-popover-ex div.uk-contrast, .uk-widgetkit-popover-ex div.wk-contrast{ 14 | width: 100%; 15 | height: 100%; 16 | } -------------------------------------------------------------------------------- /popover_ex/languages/de_DE.json: -------------------------------------------------------------------------------- 1 | { 2 | "About": "Über", 3 | "Adds a custom CSS class to the widget. You can specify several classes using space between them.": "Fügt dem Widget eine eigene CSS Klasse hinzu. Du kannst mehrere Klassen durch Leerzeichen hinzufügen.", 4 | "Alignment": "Ausrichtung", 5 | "A new version is available. Please, update.": "Eine neue Version ist verfügbar. Bitte installiere die aktuellste Version.", 6 | "AngularJS version": "AngularJS Version", 7 | "Animation": "Animation", 8 | "Author": "Autor", 9 | "Available": "Verfügbar", 10 | "Bank card": "Bank card", 11 | "Bottom": "Unten", 12 | "Box": "Box", 13 | "Box Primary": "Box Primär", 14 | "Box Secondary": "Box Sekundär", 15 | "Build date": "Erstellungsdatum", 16 | "Button": "Button", 17 | "Button Large": "Grosser Button", 18 | "Button Large Primary": "Grosser Button Primär", 19 | "Button Link": "Button Link", 20 | "Button Primary": "Button Primär", 21 | "Center": "Zentriert", 22 | "Choose the toggle icon.": "Wähle das Toggle Icon", 23 | "Click": "Klick", 24 | "Close": "Schliessen", 25 | "CMS": "CMS", 26 | "Color": "Farbe", 27 | "Content": "Inhalt", 28 | "Couldn't retrieve information about files of your release": "Es konnten keine Dateiinformationen zur verwendeten Version gefunden werden", 29 | "Custom": "Eigener", 30 | "Custom Toggle Icon Settings": "Einstellungen für das Eigene Toggle Icon", 31 | "Database version": "Datenbankversion", 32 | "Default": "Standard", 33 | "Defines the position of the dropdowns.": "Definiert die Position der Dropdowns.", 34 | "Defines when the dropdowns become visible: on mouse hover or on click.": "Definiert wann der Dropdown sichtbar wird: bei Mouseover oder beim klicken.", 35 | "Define the font size of the title.": "Definiere die Schriftgrösse des Titels.", 36 | "Define the link text.": "Definiere den Link Text.", 37 | "Define the text alignment.": "Konfiguriere die Text Ausrichtung.", 38 | "Define what will be displayed inside the overlay or hide the overlay.": "Definiert was innerhalb des Overlays angezeigt werden soll oder verstecke das Overlay.", 39 | "Details": "Details", 40 | "Display": "Anzeigen", 41 | "Display the image inside the dropdowns.": "Zeift das Bild innerhalb des Dropdowns an.", 42 | "Display the Read More link. The link URL is added to each item in the Content Manager.": "Zeige den Weiterlesen Link. Die Link URL wird für jedes Item im Content Manager hinzugefügt.", 43 | "Donation": "Donation", 44 | "Download page": "Download Seite", 45 | "E-mail": "E-Mail", 46 | "Enables/disables opening all links in a new window of the browser. Otherwise, they open in the same window.": "Aktiviert / Deaktiviert das öffnen aller Links in einem neuen Browserfenster. Wenn die Option nicht aktiviert ist werden alle Links im selben Fenster geöffnet.", 47 | "Euro": "Euro", 48 | "Extra Large": "Extra Gross", 49 | "Eye": "Auge", 50 | "Fade": "Verblassen", 51 | "Failed to get information from server": "Das laden von Informationen vom Server ist fehlgeschlagen", 52 | "Failed to parse JSON": "JSON konnte nicht analysiert werden", 53 | "Failed to retrieve information": "Es konnten keine Informationen geladen werden", 54 | "Failed to retrieve information about available updates.": "Es konnten keine Informationen über verfügbare Updates geladen werden", 55 | "Failure": "Fehler", 56 | "File": "Datei", 57 | "File is altered": "Datei wurde verändert", 58 | "File is missing": "Datei fehlt", 59 | "Files integrity": "Dateiintegrität", 60 | "First name": "Vorname", 61 | "General": "Allgemein", 62 | "Grayscale": "Graustufen", 63 | "Height": "Höhe", 64 | "Height of the main popover image in pixels. You can also use 'auto' value.": "Höhe des Popover Bild in Pixel. Du kannst auch 'auto' als Wert verwenden.", 65 | "Height (px)": "Höhe (px)", 66 | "Hover": "Hover", 67 | "How to update": "Wie aktualisiert werden kann", 68 | "HTML Class": "HTML Klasse", 69 | "Icon": "Icon", 70 | "If second one exists": "Wenn ein zweites existiert", 71 | "If you like this module, please, donate. It will help to support the project and improve it. You can choose any suitable payment method and donate any amount. Thank you!": "If you like this module, please, donate. It will help to support the project and improve it. You can choose any suitable payment method and donate any amount. Thank you!", 72 | "Image": "Bild", 73 | "Image Animation": "Bild Animation", 74 | "Info": "Info", 75 | "Info Circle": "Info Kreis", 76 | "Information about your release is not available. The files can't be verified.": "Es liegen keine Informationen zur verwendeten Version vor. Die Dateien können nicht verifiziert werden.", 77 | "Installation path": "Installationspfad", 78 | "Installed": "Installiert", 79 | "Instructions": "Anleitung", 80 | "Items": "Elemente", 81 | "jQuery version": "jQuery Version", 82 | "Last name": "Nachname", 83 | "Left": "Links", 84 | "Link": "Link", 85 | "Link entire panel, if link exists": "Das gesamte Panel verlinken wenn ein Link existiert", 86 | "Link Target": "Link Ziel", 87 | "Map Marker": "Kartenmarkierung", 88 | "Maximum Height (px)": "Maximale Höhe (px)", 89 | "Maximum Width (px)": "Maximale Breite (px)", 90 | "Media": "Media", 91 | "Minimum Height (px)": "Minimale Höhe (px)", 92 | "Minimum Width (px)": "Minimale Breite (px)", 93 | "Mode": "Modus", 94 | "%name% plugin update details": "%name% Plugin update Details", 95 | "New release of plugin %name% is available!": "Es ist eine neue Version von %name% verfügbar!", 96 | "Newsletter": "Newsletter", 97 | "No": "No", 98 | "None": "Keine", 99 | "No problems detected": "Es wurden keine Fehler gefunden", 100 | "Ok": "OK", 101 | "Opacity": "Sichtbarkeit", 102 | "Opacity of the icon, a value in the range 0.0 (fully transparent) - 1.0 (opaque).": "Sichtbarkeit des Icons. Der Wert kann im Bereich von 0.0 (nicht sichtbar) - 1.0 (vollständig sichtbar) liegen.", 103 | "Open all links in a new window": "Öffne alle Links in einem neuen Fenster", 104 | "Other currencies": "Other currencies", 105 | "Overlay": "Overlay", 106 | "Panel": "Panel", 107 | "Path to the image file that will be used as a custom toggle icon. This setting sets the default icon for all content elements. If this field is left empty, then a default icon (that is distributed with this plugin) will be used. You can set a unique icon for any content element: you can do this by setting a 'Custom Toggle Image' field in the 'Content Settings' tab. This option is available only if you use 'Custom' content source type. The 'Custom Toggle Image' field has a higher priority and if set will override the value of this setting.": "Pfad zur Bilddatei, welche als Eigenes Toggle Icon genutzt werden soll. Diese Einstellung definiert den Standardwert für alle Inhaltselemente. Wenn dieses Feld leer gelassen wird wird ein Standardicon (welches mit dem Plugin installiert wurde) genutzt. Du kannst für jedes Element verschiedene Icons definieren: Füge hierzu ein Feld mit dem Namen 'Custom Toggle Image' in den Inhaltseinstellungen des Widgets hinzu. Diese Einstellung ist nur verfügbar wenn als Inhaltstyp 'Custom' gewählt wird. Das 'Custom Toggle Image' Feld hat eine höhere Priorität und überschreibt bei Nutzung die Grafik welche hier definiert wird.", 108 | "Payment methods:": "Payment methods:", 109 | "PayPal": "PayPal", 110 | "PHP version": "PHP Version", 111 | "Please, fill in all the fields below, then click Submit button": "Bitte fülle alle untenstehenden Felder aus und klicke auf den Button abonnieren", 112 | "Please, wait...": "Bitte warten...", 113 | "Plugin build date": "Plugin Erstellungsdatum", 114 | "Plugin name": "Plugin Name", 115 | "Plugin version": "Plugin Version", 116 | "Plus": "Plus", 117 | "Plus Circle": "Pluszeichen in Kreis", 118 | "Plus Square": "Pluszeichen in Quadrat", 119 | "Plus Square Outlined": "Pluszeichen in umrahmten Quadrat", 120 | "Popover": "Popover", 121 | "Position": "Position", 122 | "Problem": "Problem", 123 | "Ramil Valitov": "Ramil Valitov", 124 | "Release information": "Release Informationen", 125 | "Right": "Rechts", 126 | "Russian ruble": "Russian ruble", 127 | "Scale": "Skalierung", 128 | "Search": "Suche", 129 | "Search Plus": "Suchen Plus", 130 | "Select the style of the panel used in dropdowns.": "Wähle den Style des Panels der für die Dropdowns verwendet wird.", 131 | "Set the style of the Read More link.": "Konfiguriere das Aussehen des Weiterlesen Links.", 132 | "Set the width and height of the image in pixels. Use 'auto' for auto size.": "Definiere die Breite und die Höhe des Bildes in Pixel. Wähle 'auto' für die automatische Berechnung der Grösse.", 133 | "Show content": "Inhalt anzeigen", 134 | "Show link": "Link anzeigen", 135 | "Show media": "Media Inhalte anzeigen", 136 | "Show title": "Titel anzeigen", 137 | "Slide Bottom": "Von unten einfliegen", 138 | "Slide Left": "Von links einfliegen", 139 | "Slide Right": "Von rechts einfliegen", 140 | "Slide Top": "Von oben einfliegen", 141 | "Spin": "Drehen", 142 | "Style": "Style", 143 | "Subscribe": "Abonnieren", 144 | "Subscription form": "Anmeldeformular", 145 | "Text": "Text", 146 | "The animation that will be applied to the image.": "Die Animation welche für das Bild angewendet wird.", 147 | "The animation that will be applied to the overlay when being displayed.": "Die Animation welche für das Overlay verwendet wird.", 148 | "The height of the custom toggle icon in pixels or percents. This field is mandatory and should be specified.": "Die Höhe des eigenen Toggle Icons in Pixel oder Prozent. Diese Angabe ist zwingend notwendig.", 149 | "The main popover image that is used as the background.": "Das Popover Bild, welches als Hintergrund genutzt wird.", 150 | "The maximum height of the custom toggle icon in pixels. This setting is useful to support responsive design and make dynamic size of the custom toggle icon. If this field is left empty, then no restriction to maximum height is applied.": "The maximum height of the custom toggle icon in pixels. This setting is useful to support responsive design and make dynamic size of the custom toggle icon. If this field is left empty, then no restriction to maximum height is applied.", 151 | "The maximum width of the custom toggle icon in pixels. This setting is useful to support responsive design and make dynamic size of the custom toggle icon. If this field is left empty, then no restriction to maximum width is applied.": "Die maximale Breite des eigenen Toggle Icons in Pixel. Diese Einstellung ist empfehlenswert für Responsive Webdesign. Weiters kann damit das eigene Toggle Icon mit dynamischer Grösse dargestellt werden. Wird dieses Feld leer gelassen, wird kein Wert für die maximale Breite angewendet.", 152 | "The minimum height of the custom toggle icon in pixels. This setting is useful to support responsive design and make dynamic size of the custom toggle icon. If this field is left empty, then no restriction to minimum height is applied.": "Die minimale Höhe des eigenen Toggle Icons in Pixel. Diese Einstellung ist empfehlenswert für Responsive Webdesign. Weiters kann damit das eigene Toggle Icon mit dynamischer Grösse dargestellt werden. Wird dieses Feld leer gelassen, wird kein Wert für die minimale Höhe genutzt.", 153 | "The minimum width of the custom toggle icon in pixels. This setting is useful to support responsive design and make dynamic size of the custom toggle icon. If this field is left empty, then no restriction to minimum width is applied.": "Die minimale Breite des eigenen Toggle Icons in Pixel. Diese Einstellung ist empfehlenswert für Responsive Webdesign. Weiters kann damit das eigene Toggle Icon mit dynamischer Grösse dargestellt werden. Wird dieses Feld leer gelassen, wird kein Wert für die minimale Breite genutzt.", 154 | "The width of the custom toggle icon in pixels or percents. This field is mandatory and should be specified.": "Die Breite des eigenen Toggle Icons in Pixel oder Prozent. Dieser Wert ist zwingend notwendig und sollte definiert werden.", 155 | "This plugin is outdated!": "Dieses Plugin ist veraltet!", 156 | "Title Size": "Titelgrösse", 157 | "Toggle Icon": "Toggle Icon", 158 | "Top": "Oben", 159 | "UIkit version": "UIkit Version", 160 | "UIkit version in Widgetkit bundle": "UIkit version in Widgetkit bundle", 161 | "Update details": "Update Details", 162 | "USD": "USD", 163 | "Use a high-contrast color.": "Benutze eine Farbe mit hohem Kontrast.", 164 | "Use a high-contrast color inside the overlay.": "Benutze eine Farbe mit hohem Kontrast innerhalb des Overlay's.", 165 | "Verify files": "Dateien überprüfen", 166 | "Version": "Version", 167 | "Website": "Webseite", 168 | "We have different free products that extend functionality of the Widgetkit. Please, subscribe for a newsletter to get notifications about new releases of the current plugin, other widgets that we create, and news when a completely new product for the Widgetkit becomes available.": "Wir stellen verschiedene gratis Produkte zur Verfügung welche die Funktion von Widgetkit erweitern. Bitte abonniere unseren Newsletter um von uns über verfügbare Updates, andere Widgets oder über ein neues Produkt informiert zu werden.", 169 | "Widgetkit version": "Widgetkit Version", 170 | "Widgetkit version 2.9.0 and later are compatible with Yootheme Pro.": "Widgetkit version 2.9.0 and later are compatible with Yootheme Pro.", 171 | "Width": "Breite", 172 | "Width of the main popover image in pixels. You can also use 'auto' value.": "Die Breite des Popover Bild in Pixel. Du kannst auch 'auto' als Wert verwenden.", 173 | "Width of the popover in pixels.": "Breite des Popover Bild in Pixel.", 174 | "Width (px)": "Breite (px)", 175 | "Wiki and manuals": "Wiki und Handbücher", 176 | "Write access check": "Schreibzugriffsprüfung", 177 | "Yandex Money": "Yandex Money", 178 | "Yes": "Yes", 179 | "Yootheme Pro compatible": "Yootheme Pro compatible", 180 | "You must set the main popover image below. Otherwise, the whole widget will be disabled and will not render.": "Du musst ein Popover Bild definieren. Andernfalls kann das Widget nicht auf der Seite geladen werden.", 181 | "Your PHP is quite old. Although this plugin can work with your version of PHP, upgrade is recommended to the latest stable version of PHP.": "Die installierte PHP Version ist relativ alt. Wenngleich dieses Plugin funktioniert, empfehlen wir auf die aktuellste, stabile Version von PHP zu aktualisieren.", 182 | "Your PHP is too old! Upgrade is strongly recommended! This plugin may not work with your version of PHP.": "Die installierte PHP Version ist zu alt! Ein Upgrade ist nötig um dieses Plugin nutzen zu können.", 183 | "Your PHP version is OK.": "Die installierte PHP Version ist in Ordnung.", 184 | "Your UIkit version is OK.": "Deine Version des UIkit ist in Ordnung.", 185 | "Your UIkit version is too old, please upgrade your Widgetkit.": "Die installierte UIkit Version ist zu alt, bitte aktualisiere Widgetkit.", 186 | "Your version of the plugin is up to date!": "Deine Version des Plugins ist aktuell!", 187 | "Your Widgetkit version is OK.": "Deine Version des Widgetkit ist in Ordnung.", 188 | "Your Widgetkit version is quite old. Although this plugin may work with your version of Widgetkit, upgrade is recommended to the latest stable version of Widgetkit.": "Die installierte Widgetkit Version ist relativ alt. Wenngleich dieses Plugin funktioniert, empfehlen wir ein Update auf die aktuelle Widgetkit Version durchzuführen.", 189 | "Your Widgetkit version is too old. Upgrade is strongly recommended. Although this plugin may work with your version of Widgetkit, upgrade is recommended to the latest stable version of Widgetkit.": "Die installierte Widgetkit Version ist zu alt! Ein Upgrade ist nötig um dieses Plugin nutzen zu können." 190 | } -------------------------------------------------------------------------------- /popover_ex/languages/en_GB.json: -------------------------------------------------------------------------------- 1 | { 2 | "About": "About", 3 | "Adds a custom CSS class to the widget. You can specify several classes using space between them.": "Adds a custom CSS class to the widget. You can specify several classes using space between them.", 4 | "Alignment": "Alignment", 5 | "A new version is available. Please, update.": "A new version is available. Please, update.", 6 | "AngularJS version": "AngularJS version", 7 | "Animation": "Animation", 8 | "Author": "Author", 9 | "Available": "Available", 10 | "Bank card": "Bank card", 11 | "Bottom": "Bottom", 12 | "Box": "Box", 13 | "Box Primary": "Box Primary", 14 | "Box Secondary": "Box Secondary", 15 | "Build date": "Build date", 16 | "Button": "Button", 17 | "Button Large": "Button Large", 18 | "Button Large Primary": "Button Large Primary", 19 | "Button Link": "Button Link", 20 | "Button Primary": "Button Primary", 21 | "Center": "Center", 22 | "Choose the toggle icon.": "Choose the toggle icon.", 23 | "Click": "Click", 24 | "Close": "Close", 25 | "CMS": "CMS", 26 | "Color": "Color", 27 | "Content": "Content", 28 | "Couldn't retrieve information about files of your release": "Couldn't retrieve information about files of your release", 29 | "Custom": "Custom", 30 | "Custom Toggle Icon Settings": "Custom Toggle Icon Settings", 31 | "Database version": "Database version", 32 | "Default": "Default", 33 | "Defines the position of the dropdowns.": "Defines the position of the dropdowns.", 34 | "Defines when the dropdowns become visible: on mouse hover or on click.": "Defines when the dropdowns become visible: on mouse hover or on click.", 35 | "Define the font size of the title.": "Define the font size of the title.", 36 | "Define the link text.": "Define the link text.", 37 | "Define the text alignment.": "Define the text alignment.", 38 | "Define what will be displayed inside the overlay or hide the overlay.": "Define what will be displayed inside the overlay or hide the overlay.", 39 | "Details": "Details", 40 | "Display": "Display", 41 | "Display the image inside the dropdowns.": "Display the image inside the dropdowns.", 42 | "Display the Read More link. The link URL is added to each item in the Content Manager.": "Display the Read More link. The link URL is added to each item in the Content Manager.", 43 | "Donation": "Donation", 44 | "Download page": "Download page", 45 | "E-mail": "E-mail", 46 | "Enables/disables opening all links in a new window of the browser. Otherwise, they open in the same window.": "Enables/disables opening all links in a new window of the browser. Otherwise, they open in the same window.", 47 | "Euro": "Euro", 48 | "Extra Large": "Extra Large", 49 | "Eye": "Eye", 50 | "Fade": "Fade", 51 | "Failed to get information from server": "Failed to get information from server", 52 | "Failed to parse JSON": "Failed to parse JSON", 53 | "Failed to retrieve information": "Failed to retrieve information", 54 | "Failed to retrieve information about available updates.": "Failed to retrieve information about available updates.", 55 | "Failure": "Failure", 56 | "File": "File", 57 | "File is altered": "File is altered", 58 | "File is missing": "File is missing", 59 | "Files integrity": "Files integrity", 60 | "First name": "First name", 61 | "General": "General", 62 | "Grayscale": "Grayscale", 63 | "Height": "Height", 64 | "Height of the main popover image in pixels. You can also use 'auto' value.": "Height of the main popover image in pixels. You can also use 'auto' value.", 65 | "Height (px)": "Height (px)", 66 | "Hover": "Hover", 67 | "How to update": "How to update", 68 | "HTML Class": "HTML Class", 69 | "Icon": "Icon", 70 | "If second one exists": "If second one exists", 71 | "If you like this module, please, donate. It will help to support the project and improve it. You can choose any suitable payment method and donate any amount. Thank you!": "If you like this module, please, donate. It will help to support the project and improve it. You can choose any suitable payment method and donate any amount. Thank you!", 72 | "Image": "Image", 73 | "Image Animation": "Image Animation", 74 | "Info": "Info", 75 | "Info Circle": "Info Circle", 76 | "Information about your release is not available. The files can't be verified.": "Information about your release is not available. The files can't be verified.", 77 | "Installation path": "Installation path", 78 | "Installed": "Installed", 79 | "Instructions": "Instructions", 80 | "Items": "Items", 81 | "jQuery version": "jQuery version", 82 | "Last name": "Last name", 83 | "Left": "Left", 84 | "Link": "Link", 85 | "Link entire panel, if link exists": "Link entire panel, if link exists", 86 | "Link Target": "Link Target", 87 | "Map Marker": "Map Marker", 88 | "Maximum Height (px)": "Maximum Height (px)", 89 | "Maximum Width (px)": "Maximum Width (px)", 90 | "Media": "Media", 91 | "Minimum Height (px)": "Minimum Height (px)", 92 | "Minimum Width (px)": "Minimum Width (px)", 93 | "Mode": "Mode", 94 | "%name% plugin update details": "%name% plugin update details", 95 | "New release of plugin %name% is available!": "New release of plugin %name% is available!", 96 | "Newsletter": "Newsletter", 97 | "No": "No", 98 | "None": "None", 99 | "No problems detected": "No problems detected", 100 | "Ok": "Ok", 101 | "Opacity": "Opacity", 102 | "Opacity of the icon, a value in the range 0.0 (fully transparent) - 1.0 (opaque).": "Opacity of the icon, a value in the range 0.0 (fully transparent) - 1.0 (opaque).", 103 | "Open all links in a new window": "Open all links in a new window", 104 | "Other currencies": "Other currencies", 105 | "Overlay": "Overlay", 106 | "Panel": "Panel", 107 | "Path to the image file that will be used as a custom toggle icon. This setting sets the default icon for all content elements. If this field is left empty, then a default icon (that is distributed with this plugin) will be used. You can set a unique icon for any content element: you can do this by setting a 'Custom Toggle Image' field in the 'Content Settings' tab. This option is available only if you use 'Custom' content source type. The 'Custom Toggle Image' field has a higher priority and if set will override the value of this setting.": "Path to the image file that will be used as a custom toggle icon. This setting sets the default icon for all content elements. If this field is left empty, then a default icon (that is distributed with this plugin) will be used. You can set a unique icon for any content element: you can do this by setting a 'Custom Toggle Image' field in the 'Content Settings' tab. This option is available only if you use 'Custom' content source type. The 'Custom Toggle Image' field has a higher priority and if set will override the value of this setting.", 108 | "Payment methods:": "Payment methods:", 109 | "PayPal": "PayPal", 110 | "PHP version": "PHP version", 111 | "Please, fill in all the fields below, then click Submit button": "Please, fill in all the fields below, then click Submit button", 112 | "Please, wait...": "Please, wait...", 113 | "Plugin build date": "Plugin build date", 114 | "Plugin name": "Plugin name", 115 | "Plugin version": "Plugin version", 116 | "Plus": "Plus", 117 | "Plus Circle": "Plus Circle", 118 | "Plus Square": "Plus Square", 119 | "Plus Square Outlined": "Plus Square Outlined", 120 | "Popover": "Popover", 121 | "Position": "Position", 122 | "Problem": "Problem", 123 | "Ramil Valitov": "Ramil Valitov", 124 | "Release information": "Release information", 125 | "Right": "Right", 126 | "Russian ruble": "Russian ruble", 127 | "Scale": "Scale", 128 | "Search": "Search", 129 | "Search Plus": "Search Plus", 130 | "Select the style of the panel used in dropdowns.": "Select the style of the panel used in dropdowns.", 131 | "Set the style of the Read More link.": "Set the style of the Read More link.", 132 | "Set the width and height of the image in pixels. Use 'auto' for auto size.": "Set the width and height of the image in pixels. Use 'auto' for auto size.", 133 | "Show content": "Show content", 134 | "Show link": "Show link", 135 | "Show media": "Show media", 136 | "Show title": "Show title", 137 | "Slide Bottom": "Slide Bottom", 138 | "Slide Left": "Slide Left", 139 | "Slide Right": "Slide Right", 140 | "Slide Top": "Slide Top", 141 | "Spin": "Spin", 142 | "Style": "Style", 143 | "Subscribe": "Subscribe", 144 | "Subscription form": "Subscription form", 145 | "Text": "Text", 146 | "The animation that will be applied to the image.": "The animation that will be applied to the image.", 147 | "The animation that will be applied to the overlay when being displayed.": "The animation that will be applied to the overlay when being displayed.", 148 | "The height of the custom toggle icon in pixels or percents. This field is mandatory and should be specified.": "The height of the custom toggle icon in pixels or percents. This field is mandatory and should be specified.", 149 | "The main popover image that is used as the background.": "The main popover image that is used as the background.", 150 | "The maximum height of the custom toggle icon in pixels. This setting is useful to support responsive design and make dynamic size of the custom toggle icon. If this field is left empty, then no restriction to maximum height is applied.": "The maximum height of the custom toggle icon in pixels. This setting is useful to support responsive design and make dynamic size of the custom toggle icon. If this field is left empty, then no restriction to maximum height is applied.", 151 | "The maximum width of the custom toggle icon in pixels. This setting is useful to support responsive design and make dynamic size of the custom toggle icon. If this field is left empty, then no restriction to maximum width is applied.": "The maximum width of the custom toggle icon in pixels. This setting is useful to support responsive design and make dynamic size of the custom toggle icon. If this field is left empty, then no restriction to maximum width is applied.", 152 | "The minimum height of the custom toggle icon in pixels. This setting is useful to support responsive design and make dynamic size of the custom toggle icon. If this field is left empty, then no restriction to minimum height is applied.": "The minimum height of the custom toggle icon in pixels. This setting is useful to support responsive design and make dynamic size of the custom toggle icon. If this field is left empty, then no restriction to minimum height is applied.", 153 | "The minimum width of the custom toggle icon in pixels. This setting is useful to support responsive design and make dynamic size of the custom toggle icon. If this field is left empty, then no restriction to minimum width is applied.": "The minimum width of the custom toggle icon in pixels. This setting is useful to support responsive design and make dynamic size of the custom toggle icon. If this field is left empty, then no restriction to minimum width is applied.", 154 | "The width of the custom toggle icon in pixels or percents. This field is mandatory and should be specified.": "The width of the custom toggle icon in pixels or percents. This field is mandatory and should be specified.", 155 | "This plugin is outdated!": "This plugin is outdated!", 156 | "Title Size": "Title Size", 157 | "Toggle Icon": "Toggle Icon", 158 | "Top": "Top", 159 | "UIkit version": "UIkit version", 160 | "UIkit version in Widgetkit bundle": "UIkit version in Widgetkit bundle", 161 | "Update details": "Update details", 162 | "USD": "USD", 163 | "Use a high-contrast color.": "Use a high-contrast color.", 164 | "Use a high-contrast color inside the overlay.": "Use a high-contrast color inside the overlay.", 165 | "Verify files": "Verify files", 166 | "Version": "Version", 167 | "Website": "Website", 168 | "We have different free products that extend functionality of the Widgetkit. Please, subscribe for a newsletter to get notifications about new releases of the current plugin, other widgets that we create, and news when a completely new product for the Widgetkit becomes available.": "We have different free products that extend functionality of the Widgetkit. Please, subscribe for a newsletter to get notifications about new releases of the current plugin, other widgets that we create, and news when a completely new product for the Widgetkit becomes available.", 169 | "Widgetkit version": "Widgetkit version", 170 | "Widgetkit version 2.9.0 and later are compatible with Yootheme Pro.": "Widgetkit version 2.9.0 and later are compatible with Yootheme Pro.", 171 | "Width": "Width", 172 | "Width of the main popover image in pixels. You can also use 'auto' value.": "Width of the main popover image in pixels. You can also use 'auto' value.", 173 | "Width of the popover in pixels.": "Width of the popover in pixels.", 174 | "Width (px)": "Width (px)", 175 | "Wiki and manuals": "Wiki and manuals", 176 | "Write access check": "Write access check", 177 | "Yandex Money": "Yandex Money", 178 | "Yes": "Yes", 179 | "Yootheme Pro compatible": "Yootheme Pro compatible", 180 | "You must set the main popover image below. Otherwise, the whole widget will be disabled and will not render.": "You must set the main popover image below. Otherwise, the whole widget will be disabled and will not render.", 181 | "Your PHP is quite old. Although this plugin can work with your version of PHP, upgrade is recommended to the latest stable version of PHP.": "Your PHP is quite old. Although this plugin can work with your version of PHP, upgrade is recommended to the latest stable version of PHP.", 182 | "Your PHP is too old! Upgrade is strongly recommended! This plugin may not work with your version of PHP.": "Your PHP is too old! Upgrade is strongly recommended! This plugin may not work with your version of PHP.", 183 | "Your PHP version is OK.": "Your PHP version is OK.", 184 | "Your UIkit version is OK.": "Your UIkit version is OK.", 185 | "Your UIkit version is too old, please upgrade your Widgetkit.": "Your UIkit version is too old, please upgrade your Widgetkit.", 186 | "Your version of the plugin is up to date!": "Your version of the plugin is up to date!", 187 | "Your Widgetkit version is OK.": "Your Widgetkit version is OK.", 188 | "Your Widgetkit version is quite old. Although this plugin may work with your version of Widgetkit, upgrade is recommended to the latest stable version of Widgetkit.": "Your Widgetkit version is quite old. Although this plugin may work with your version of Widgetkit, upgrade is recommended to the latest stable version of Widgetkit.", 189 | "Your Widgetkit version is too old. Upgrade is strongly recommended. Although this plugin may work with your version of Widgetkit, upgrade is recommended to the latest stable version of Widgetkit.": "Your Widgetkit version is too old. Upgrade is strongly recommended. Although this plugin may work with your version of Widgetkit, upgrade is recommended to the latest stable version of Widgetkit." 190 | } -------------------------------------------------------------------------------- /popover_ex/languages/ru_RU.json: -------------------------------------------------------------------------------- 1 | { 2 | "About": "О плагине", 3 | "Adds a custom CSS class to the widget. You can specify several classes using space between them.": "Добавляет индивидуальный CSS класс виджету. Вы можете указать несколько классов, разделяя их пробелом.", 4 | "Alignment": "Выравнивание", 5 | "A new version is available. Please, update.": "Доступна новая версия. Пожалуйста, обновитесь.", 6 | "AngularJS version": "Версия AngularJS", 7 | "Animation": "Анимация", 8 | "Author": "Автор", 9 | "Available": "Доступно", 10 | "Bank card": "Банковская карта", 11 | "Bottom": "Внизу", 12 | "Box": "Рамка", 13 | "Box Primary": "Основная рамка", 14 | "Box Secondary": "Дополнительная рамка", 15 | "Build date": "Дата сборки", 16 | "Button": "Кнопка", 17 | "Button Large": "Большая кнопка", 18 | "Button Large Primary": "Большая основная кнопка", 19 | "Button Link": "Кнопка ссылка", 20 | "Button Primary": "Основная кнопка", 21 | "Center": "По центру", 22 | "Choose the toggle icon.": "Выберите иконку-переключатель.", 23 | "Click": "Клик", 24 | "Close": "Закрыть", 25 | "CMS": "Движок сайта", 26 | "Color": "Цвет", 27 | "Content": "Содержание", 28 | "Couldn't retrieve information about files of your release": "Не удалось получить информацию о файлах вашей версии", 29 | "Custom": "Индивидуальный", 30 | "Custom Toggle Icon Settings": "Настройки индивидуальной иконки-переключателя.", 31 | "Database version": "Версия базы данных", 32 | "Default": "По умолчанию", 33 | "Defines the position of the dropdowns.": "Определяет положение всплывающего окна.", 34 | "Defines when the dropdowns become visible: on mouse hover or on click.": "Определяет, когда всплывающее окно становится видимым: при наведении мыши или при клике.", 35 | "Define the font size of the title.": "Задать размер шрифта заголовка.", 36 | "Define the link text.": "Задает текст ссылки.", 37 | "Define the text alignment.": "Задать выравнивание текста.", 38 | "Define what will be displayed inside the overlay or hide the overlay.": "Задает что будет отображаться внутри наложенного слоя или скрывает наложенный слой.", 39 | "Details": "Подробности", 40 | "Display": "Отобразить", 41 | "Display the image inside the dropdowns.": "Отображать изображение внутри всплывающего окна.", 42 | "Display the Read More link. The link URL is added to each item in the Content Manager.": "Отобразить ссылку 'Читать далее'. Ссылка на URL добавляется к каждому элементу в Менеджере Содержания.", 43 | "Donation": "Пожертвование", 44 | "Download page": "Страница для скачивания", 45 | "E-mail": "E-mail", 46 | "Enables/disables opening all links in a new window of the browser. Otherwise, they open in the same window.": "Включает/отключает открытие всех ссылок в новом окне браузера. Иначе все ссылки будут открываться в текущем окне.", 47 | "Euro": "Евро", 48 | "Extra Large": "Очень большой", 49 | "Eye": "Глаз", 50 | "Fade": "Постепенное проявление", 51 | "Failed to get information from server": "Не удалось получить данные от сервера", 52 | "Failed to parse JSON": "Не удалось обработать JSON", 53 | "Failed to retrieve information": "Не удалось получить информацию", 54 | "Failed to retrieve information about available updates.": "Не удалось получить сведения о доступных обновлениях.", 55 | "Failure": "Неуспех", 56 | "File": "Файл", 57 | "File is altered": "Файл изменен", 58 | "File is missing": "Файл отсутствует", 59 | "Files integrity": "Целостность файлов", 60 | "First name": "Имя", 61 | "General": "Общие", 62 | "Grayscale": "Оттенки серого", 63 | "Height": "Высота", 64 | "Height of the main popover image in pixels. You can also use 'auto' value.": "Высота основного изображения всплывающего окна в пикселях. Вы также можете использовать значение 'auto'.", 65 | "Height (px)": "Высота (пиксели)", 66 | "Hover": "Наведение указателя мыши", 67 | "How to update": "Как обновить", 68 | "HTML Class": "HTML класс", 69 | "Icon": "Иконка", 70 | "If second one exists": "Если второе существует", 71 | "If you like this module, please, donate. It will help to support the project and improve it. You can choose any suitable payment method and donate any amount. Thank you!": "Если Вам нравится этот модуль, пожалуйста, сделайте пожертвование. Это поможет поддерживать этот проект и развивать его дальше. Вы можете выбрать любой удобный метод оплаты и произвольную сумму. Большое спасибо!", 72 | "Image": "Изображение", 73 | "Image Animation": "Анимация изображения", 74 | "Info": "Информация", 75 | "Info Circle": "Информация - окружность", 76 | "Information about your release is not available. The files can't be verified.": "Информация о вашей версии недоступна. Файлы не могут быть проверены.", 77 | "Installation path": "Пусть установки", 78 | "Installed": "Установлено", 79 | "Instructions": "Инструкции", 80 | "Items": "Элементы", 81 | "jQuery version": "Версия jQuery", 82 | "Last name": "Фамилия", 83 | "Left": "Слева", 84 | "Link": "Ссылка", 85 | "Link entire panel, if link exists": "Ссылка добавляется ко всей панели, если ссылка указана", 86 | "Link Target": "Цель ссылки", 87 | "Map Marker": "Маркер карты", 88 | "Maximum Height (px)": "Максимальная высота (пиксели)", 89 | "Maximum Width (px)": "Максимальная ширина (пиксели)", 90 | "Media": "Медиа", 91 | "Minimum Height (px)": "Минимальная высота (пиксели)", 92 | "Minimum Width (px)": "Минимальная ширина (пиксели)", 93 | "Mode": "Режим", 94 | "%name% plugin update details": "Сведения об обновлении плагина %name%", 95 | "New release of plugin %name% is available!": "Доступна новая версия плагина %name%!", 96 | "Newsletter": "Новостная рассылка", 97 | "No": "Нет", 98 | "None": "Отсутствует", 99 | "No problems detected": "Проблем не обнаружено", 100 | "Ok": "Ок", 101 | "Opacity": "Прозрачность", 102 | "Opacity of the icon, a value in the range 0.0 (fully transparent) - 1.0 (opaque).": "Прозрачность иконки, значение в диапазоне от 0.0 (полностью прозрачное) до 1.0 (непрозрачное).", 103 | "Open all links in a new window": "Открывать все ссылки в новом окне", 104 | "Other currencies": "Другие валюты", 105 | "Overlay": "Наложенный слой", 106 | "Panel": "Панель", 107 | "Path to the image file that will be used as a custom toggle icon. This setting sets the default icon for all content elements. If this field is left empty, then a default icon (that is distributed with this plugin) will be used. You can set a unique icon for any content element: you can do this by setting a 'Custom Toggle Image' field in the 'Content Settings' tab. This option is available only if you use 'Custom' content source type. The 'Custom Toggle Image' field has a higher priority and if set will override the value of this setting.": "Путьк файлу изображения, который будет использоваться в качестве индивидуальной иконки-переключателя. Этот параметр задает иконку по умолчанию для всех элементов содержания. Если это поле пустое, тогда будет использована иконка по умолчанию (которая поставляется вместе с этим плагином). Вы можете задать уникальную иконку для любого элемента содержания: для этого используйте поле 'Custom Toggle Image' на вкладке 'Настройки содержания'. Эта опция доступна, только если вы используете 'Индивидуальный' в качестве типа источника содержания. Поле 'Уникальная иконка-переключатель' имеет более высокий приоритет и если задано, то его значение переопределяет значение текущей настройки.", 108 | "Payment methods:": "Способы оплаты:", 109 | "PayPal": "PayPal", 110 | "PHP version": "Версия PHP", 111 | "Please, fill in all the fields below, then click Submit button": "Пожалуйста, заполните все следующие ниже поля, после этого нажмите на кнопку Подписаться", 112 | "Please, wait...": "Пожалуйста, подождите...", 113 | "Plugin build date": "Дата сборки плагина", 114 | "Plugin name": "Название плагина", 115 | "Plugin version": "Версия плагина", 116 | "Plus": "Плюс", 117 | "Plus Circle": "Плюс - окружность", 118 | "Plus Square": "Плюс - квадрат", 119 | "Plus Square Outlined": "Плюс - квадрат, контур", 120 | "Popover": "Всплывающее окно", 121 | "Position": "Позиция", 122 | "Problem": "Проблема", 123 | "Ramil Valitov": "Рамиль Валитов", 124 | "Release information": "Информация о выпуске", 125 | "Right": "Справа", 126 | "Russian ruble": "Российский рубль", 127 | "Scale": "Увеличение", 128 | "Search": "Поиск", 129 | "Search Plus": "Поиск плюс", 130 | "Select the style of the panel used in dropdowns.": "Выберите тип панели, используемой во всплывающем окне.", 131 | "Set the style of the Read More link.": "Установить стиль ссылки 'Читать далее'", 132 | "Set the width and height of the image in pixels. Use 'auto' for auto size.": "Установка ширины и высоты изображения в пикселях. Используйте 'auto' для использования автоматического размера.", 133 | "Show content": "Показать содержимое", 134 | "Show link": "Показать ссылку", 135 | "Show media": "Показать медиа", 136 | "Show title": "Показать заголовок", 137 | "Slide Bottom": "Скольжение снизу", 138 | "Slide Left": "Скольжение слева", 139 | "Slide Right": "Скольжение справа", 140 | "Slide Top": "Скольжение сверху", 141 | "Spin": "Вращение", 142 | "Style": "Стиль", 143 | "Subscribe": "Подписаться", 144 | "Subscription form": "Форма подписки", 145 | "Text": "Текст", 146 | "The animation that will be applied to the image.": "Анимация, применяемая к изображению.", 147 | "The animation that will be applied to the overlay when being displayed.": "Анимация, которая применяется к наложенному слою при его отображении.", 148 | "The height of the custom toggle icon in pixels or percents. This field is mandatory and should be specified.": "Высота индивидуальной кнопки-переключателя в пикселях или процентах. Это поле обязательно для заполнения.", 149 | "The main popover image that is used as the background.": "Основное изображения всплывающего окна, используется в качестве фона.", 150 | "The maximum height of the custom toggle icon in pixels. This setting is useful to support responsive design and make dynamic size of the custom toggle icon. If this field is left empty, then no restriction to maximum height is applied.": "Максимальная высота индивидуальной иконки-переключателя. Это значение применяется для поддержки адаптивного дизайна и придания динамического размера для индивидуальной кнопки-переключателя. Если это поле пустое, тогда к максимальной высоте никакие ограничения не применяются.", 151 | "The maximum width of the custom toggle icon in pixels. This setting is useful to support responsive design and make dynamic size of the custom toggle icon. If this field is left empty, then no restriction to maximum width is applied.": "Максимальная ширина индивидуальной иконки-переключателя. Это значение применяется для поддержки адаптивного дизайна и придания динамического размера для индивидуальной кнопки-переключателя. Если это поле пустое, тогда к максимальной ширине никакие ограничения не применяются.", 152 | "The minimum height of the custom toggle icon in pixels. This setting is useful to support responsive design and make dynamic size of the custom toggle icon. If this field is left empty, then no restriction to minimum height is applied.": "Минимальная высота индивидуальной иконки-переключателя. Это значение применяется для поддержки адаптивного дизайна и придания динамического размера для индивидуальной кнопки-переключателя. Если это поле пустое, тогда к минимальной высоте никакие ограничения не применяются.", 153 | "The minimum width of the custom toggle icon in pixels. This setting is useful to support responsive design and make dynamic size of the custom toggle icon. If this field is left empty, then no restriction to minimum width is applied.": "Минимальная ширина индивидуальной иконки-переключателя. Это значение применяется для поддержки адаптивного дизайна и придания динамического размера для индивидуальной кнопки-переключателя. Если это поле пустое, тогда к минимальной ширине никакие ограничения не применяются.", 154 | "The width of the custom toggle icon in pixels or percents. This field is mandatory and should be specified.": "Ширина индивидуальной иконки-переключателя в пикселях или процентах. Это поле является обязательным и должно быть заполнено.", 155 | "This plugin is outdated!": "Этот плагин устарел!", 156 | "Title Size": "Размер заголовка", 157 | "Toggle Icon": "Иконка-переключатель", 158 | "Top": "Наверху", 159 | "UIkit version": "Версия UIkit", 160 | "UIkit version in Widgetkit bundle": "Версия UIkit в поставке с Widgetkit", 161 | "Update details": "Подробности обновления", 162 | "USD": "Доллар США", 163 | "Use a high-contrast color.": "Использовать высококонтрастный цвет.", 164 | "Use a high-contrast color inside the overlay.": "Использовать высококонтрастный цвет внутри наложенного слоя.", 165 | "Verify files": "Проверить файлы", 166 | "Version": "Версия", 167 | "Website": "Веб-сайт", 168 | "We have different free products that extend functionality of the Widgetkit. Please, subscribe for a newsletter to get notifications about new releases of the current plugin, other widgets that we create, and news when a completely new product for the Widgetkit becomes available.": "У нас несколько бесплатных продуктов, которые расширяют возможности Widgetkit. Пожалуйста, подпишитесь на новостную рассылку для получения информации о выпуске новых версий текущего плагина, других разрабатываемых нами виджетах, а также анонсах о новых продуктах для Widgetkit.", 169 | "Widgetkit version": "Версия Widgetkit", 170 | "Widgetkit version 2.9.0 and later are compatible with Yootheme Pro.": "Widgetkit версии 2.9.0 и более поздних совместимы с Yootheme Pro.", 171 | "Width": "Ширина", 172 | "Width of the main popover image in pixels. You can also use 'auto' value.": "Ширина основного изображения всплывающего окна в пикселях. Вы можете использовать также значение 'auto'.", 173 | "Width of the popover in pixels.": "Ширина всплывающего окна в пикселях.", 174 | "Width (px)": "Ширина (пиксели)", 175 | "Wiki and manuals": "Вики и документация", 176 | "Write access check": "Проверка доступа для записи", 177 | "Yandex Money": "Яндекс.Деньги", 178 | "Yes": "Да", 179 | "Yootheme Pro compatible": "Совместимость с Yootheme Pro", 180 | "You must set the main popover image below. Otherwise, the whole widget will be disabled and will not render.": "Ниже Вы должны указать основное изображение всплывающего окна. Иначе весь виджет будет отключен и не будет отображаться.", 181 | "Your PHP is quite old. Although this plugin can work with your version of PHP, upgrade is recommended to the latest stable version of PHP.": "Версия PHP довольно старая! Хотя этот плагин может работать с установленной версией PHP, рекомендуется провести обновление PHP до последней стабильной версии.", 182 | "Your PHP is too old! Upgrade is strongly recommended! This plugin may not work with your version of PHP.": "Версия PHP слишком старая! Настоятельно рекомендуется провести обновление! Этот плагин может не работать с Вашей версией PHP.", 183 | "Your PHP version is OK.": "Версия PHP является подходящей.", 184 | "Your UIkit version is OK.": "Версия UIKit является подходящей.", 185 | "Your UIkit version is too old, please upgrade your Widgetkit.": "Ваша версия UIKit слишком старая, пожалуйста, обновите Widgetkit.", 186 | "Your version of the plugin is up to date!": "Установлена последняя версия плагина!", 187 | "Your Widgetkit version is OK.": "Версия Widgetkit является подходящей.", 188 | "Your Widgetkit version is quite old. Although this plugin may work with your version of Widgetkit, upgrade is recommended to the latest stable version of Widgetkit.": "Версия Widgetkit достаточно старая. Хотя этот плагин может и будет работать с Вашей версией Widgetkit, рекомендуется обновить Widgetkit до последней стабильной версии.", 189 | "Your Widgetkit version is too old. Upgrade is strongly recommended. Although this plugin may work with your version of Widgetkit, upgrade is recommended to the latest stable version of Widgetkit.": "Версия Widgetkit слишком старая! Настоятельно рекомендуется провести обновление! Хотя этот плагин может и будет работать с Вашей версией Widgetkit, рекомендуется обновить Widgetkit до последней стабильной версии." 190 | } -------------------------------------------------------------------------------- /popover_ex/plugin.php: -------------------------------------------------------------------------------- 1 | 'widget/popover_ex', 16 | 17 | 'main' => 'YOOtheme\\Widgetkit\\Widget\\Widget', 18 | 19 | 'plugin_version' => 'v1.2.5', 20 | 21 | 'plugin_date' => '25/06/2018', 22 | 23 | 'plugin_logo' => 'https://raw.githubusercontent.com/wiki/rvalitov/widgetkit-popover-ex/images/logo.png', 24 | 25 | 'plugin_wiki' => 'https://github.com/rvalitov/widgetkit-popover-ex/wiki', 26 | 27 | 'config' => array( 28 | 29 | 'name' => 'popover_ex', 30 | 'label' => 'PopoverEx', 31 | 'core' => true, 32 | 'icon' => 'plugins/widgets/popover_ex/widget.svg', 33 | 'view' => 'plugins/widgets/popover_ex/views/widget.php', 34 | 'item' => array('title', 'content', 'media'), 35 | 'fields' => array( 36 | array( 37 | 'type' => 'text', 38 | 'name' => 'top', 39 | 'label' => 'Top' 40 | ), 41 | array( 42 | 'type' => 'text', 43 | 'name' => 'left', 44 | 'label' => 'Left' 45 | ), 46 | array( 47 | 'type' => 'media', 48 | 'name' => 'custom_icon_image', 49 | 'label' => 'Custom Toggle Image' 50 | ) 51 | ), 52 | 'settings' => array( 53 | 'width' => '', 54 | 'image' => '', 55 | 'image_hero_width' => 'auto', 56 | 'image_hero_height' => 'auto', 57 | 'position' => 'top-center', 58 | 'mode' => 'hover', 59 | 'toggle' => 'plus', 60 | 'contrast' => true, 61 | 'panel' => 'box', 62 | 'panel_link' => false, 63 | //Extra parameters: 64 | 'custom_toggle_path' => '', 65 | 'custom_toggle_width' => '10%', 66 | 'custom_toggle_height' => '10%', 67 | 'custom_toggle_min_width' => '48', 68 | 'custom_toggle_min_height' => '48', 69 | 'custom_toggle_max_width' => '128', 70 | 'custom_toggle_max_height' => '128', 71 | 'toggle_opacity' => '1', 72 | 73 | 'media' => true, 74 | 'image_width' => 'auto', 75 | 'image_height' => 'auto', 76 | 'media_overlay' => 'icon', 77 | 'overlay_animation' => 'fade', 78 | 'media_animation' => 'scale', 79 | 80 | 'title' => true, 81 | 'content' => true, 82 | 'social_buttons' => true, 83 | 'title_size' => 'panel', 84 | 'text_align' => 'left', 85 | 'link' => true, 86 | 'link_style' => 'button', 87 | 'link_text' => 'Read more', 88 | 89 | 'link_target' => false, 90 | 'class' => '' 91 | ) 92 | 93 | ), 94 | 95 | 'events' => array( 96 | 97 | 'init.site' => function($event, $app) { 98 | $uikit=(WidgetkitExPlugin::getCSSPrefix($app)=='uk') ? 'uikit' : 'uikit2'; 99 | $app['styles']->add('widgetkit-popover_ex', 'plugins/widgets/popover_ex/css/style.css', array($uikit)); 100 | }, 101 | 102 | 'init.admin' => function($event, $app) { 103 | $plugin=new WidgetkitExPlugin($app); 104 | $uikit=(WidgetkitExPlugin::getCSSPrefix($app)=='uk') ? 'uikit' : 'uikit2'; 105 | //Backend CSS 106 | $app['styles']->add('popover_ex_edit', 'plugins/widgets/popover_ex/css/popoverex.edit.css', array('widgetkit-application')); 107 | //Adding our own translations: 108 | $app['translator']->addResource('plugins/widgets/popover_ex/languages/'.$app['locale'].'.json'); 109 | //Edit template: 110 | $app['angular']->addTemplate('popover_ex.edit', 'plugins/widgets/popover_ex/views/edit.php', true); 111 | //Adding tooltip: 112 | $app['scripts']->add($uikit.'-tooltip', 'vendor/assets/uikit/js/components/tooltip.min.js', array($uikit)); 113 | $app['styles']->add($uikit.'-tooltip', 'https://cdnjs.cloudflare.com/ajax/libs/uikit/'.$plugin->getUIkitVersion().'/css/components/tooltip.min.css', array($uikit)); 114 | //jQuery wait plugin: 115 | $app['scripts']->add('jquery.wait', 'plugins/widgets/popover_ex/assets/jquery.wait.min.js', array($uikit)); 116 | //Marked: 117 | $app['scripts']->add('marked', 'plugins/widgets/popover_ex/assets/marked.min.js', array($uikit)); 118 | //Mailchimp for subscription: 119 | $app['scripts']->add('mailchimp', 'plugins/widgets/popover_ex/assets/jquery.formchimp.min.js', array($uikit)); 120 | //Underscore.js 121 | $app['scripts']->add('underscore', 'plugins/widgets/popover_ex/assets/underscore-min.js', array($uikit)); 122 | //Semantic version compare 123 | $app['scripts']->add('versioncompare', 'plugins/widgets/popover_ex/assets/versioncompare.min.js', array($uikit)); 124 | //Marked: 125 | $app['scripts']->add('replacer', 'plugins/widgets/popover_ex/assets/replacer.min.js', array($uikit)); 126 | //Generating dynamic update script: 127 | $app['scripts']->add('popover_ex.dynamic-updater', $plugin->generateUpdaterJS($app), array(), 'string'); 128 | }, 129 | 130 | 'request' => function($event, $app) { 131 | $global=null; 132 | if ( (isset($app['request'])) && (isset($app['request']->request)) ) { 133 | $content=$app['request']->request->get('content'); 134 | if (isset($content['data']['_widget']['data']['global'])) 135 | $global=$content['data']['_widget']['data']['global']; 136 | } 137 | 138 | if ($global){ 139 | //Global is set for valid requests like "Save" and "Save & Close" 140 | $plugin=new WidgetkitExPlugin($app); 141 | $plugin->saveGlobalSettings($global); 142 | } 143 | } 144 | ) 145 | 146 | ); 147 | -------------------------------------------------------------------------------- /popover_ex/views/_content.php: -------------------------------------------------------------------------------- 1 | type($field) == 'image') { 19 | $media2 = $field; 20 | break; 21 | } 22 | } 23 | } 24 | 25 | // Media Type 26 | $attrs = array('class' => ''); 27 | $width = $item['media.width']; 28 | $height = $item['media.height']; 29 | 30 | if ($item->type('media') == 'image') { 31 | $attrs['alt'] = strip_tags($item['title']); 32 | 33 | $attrs['class'] .= ($settings['media_animation'] != 'none' && !$media2) ? ' '.$cssprefix.'-overlay-' . $settings['media_animation'] : ''; 34 | 35 | $width = ($settings['image_width'] != 'auto') ? $settings['image_width'] : ''; 36 | $height = ($settings['image_height'] != 'auto') ? $settings['image_height'] : ''; 37 | } 38 | 39 | if ($item->type('media') == 'video') { 40 | $attrs['class'] = $cssprefix.'-responsive-width'; 41 | $attrs['controls'] = true; 42 | } 43 | 44 | if ($item->type('media') == 'iframe') { 45 | $attrs['class'] = $cssprefix.'-responsive-width'; 46 | } 47 | 48 | $attrs['width'] = ($width) ? $width : ''; 49 | $attrs['height'] = ($height) ? $height : ''; 50 | 51 | if (($item->type('media') == 'image') && ($settings['image_width'] != 'auto' || $settings['image_height'] != 'auto')) { 52 | $media = $item->thumbnail('media', $width, $height, $attrs); 53 | } else { 54 | $media = $item->media('media', $attrs); 55 | } 56 | 57 | // Second Image as Overlay 58 | if ($media2) { 59 | 60 | $attrs['class'] .= ' '.$cssprefix.'-overlay-panel '.$cssprefix.'-overlay-image'; 61 | $attrs['class'] .= ($settings['media_animation'] != 'none') ? ' '.$cssprefix.'-overlay-' . $settings['media_animation'] : ''; 62 | 63 | $media2 = $item->thumbnail($media2, $width, $height, $attrs); 64 | } 65 | 66 | // Link and Overlay 67 | $overlay = ''; 68 | $overlay_hover = ''; 69 | $panel_hover = ''; 70 | 71 | if ($item['link']) { 72 | 73 | if ($settings['panel_link']) { 74 | 75 | if (($settings['media_overlay'] == 'icon') || 76 | ($media2) || 77 | ($item['media'] && $settings['media'] && $settings['media_animation'] != 'none')) { 78 | $panel_hover = $cssprefix.'-overlay-hover'; 79 | } 80 | 81 | } elseif ($settings['media_overlay'] == 'link' || $settings['media_overlay'] == 'icon' || $settings['media_overlay'] == 'image') { 82 | $overlay = '
    '; 83 | $overlay_hover = ' '.$cssprefix.'-overlay-hover'; 84 | } 85 | 86 | if ($settings['media_overlay'] == 'icon') { 87 | $overlay = '
    ' . $overlay; 88 | } 89 | 90 | if ($media2) { 91 | $overlay = $media2 . $overlay; 92 | } 93 | 94 | } 95 | 96 | if ($overlay || ($settings['panel_link'] && $settings['media_animation'] != 'none')) { 97 | $media = '
    ' . $media . $overlay . '
    '; 98 | } 99 | 100 | // Panel Title last 101 | if ($settings['title_size'] == 'panel' && 102 | !($item['content'] && $settings['content']) && 103 | !($item['link'] && $settings['link'])) { 104 | $title_size .= ' '.$cssprefix.'-margin-bottom-remove'; 105 | } 106 | 107 | ?> 108 | 109 |
    110 | 111 | 112 | > 113 | 114 | 115 | 116 |
    117 | 118 | 119 | 120 |

    121 | 122 | 123 | > 124 | 125 | 126 | 127 | 128 |

    129 | 130 | 131 | 132 |
    133 | 134 | 135 | 136 |

    href="escape('link'); ?>">trans($settings['link_text']); ?>

    137 | 138 | 139 |
    -------------------------------------------------------------------------------- /popover_ex/views/edit.php: -------------------------------------------------------------------------------- 1 | 13 | 14 |
    15 | 28 |
    29 | 30 | 352 | 353 |
    354 |
    -------------------------------------------------------------------------------- /popover_ex/views/widget.php: -------------------------------------------------------------------------------- 1 | thumbnailUrl($settings['image'], $width, $height); 87 | 88 | } 89 | $custom_style=''; 90 | ?> 91 | 92 | 93 | =0) && ($v<1) ) 108 | $opacity_style='opacity:'.$v.';'; 109 | } 110 | ?> 111 |
    112 |
    113 | 114 | 115 | 116 | $item) : 117 | 118 | // Position 119 | $left = isset($item['left']) && $item['left'] ? (float) $item['left'] : ''; 120 | $top = isset($item['top']) && $item['top'] ? (float) $item['top'] : ''; 121 | 122 | if ($left !== 0 && !$left || $top !== 0 && !$top) continue; 123 | 124 | $left .= '%'; 125 | $top .= '%'; 126 | 127 | ?> 128 | 129 |
    -dropdown=""> 130 | 131 | '; ?> 132 | 133 | 149 | 150 | '; ?> 151 | 152 |
    > 153 | 154 | render('plugins/widgets/' . $widget->getConfig('name') . '/views/_content.php', compact('item', 'settings', 'panel', 'title_size', 'link_style', 'link_target')); ?> 155 | 156 |
    157 | 158 |
    159 | 160 | 161 |
    162 | 163 |
    -slideset="{default: 1}"> 164 |
    165 |
      166 | $item) : ?> 167 |
    • render('plugins/widgets/' . $widget->getConfig('name') . '/views/_content.php', compact('item', 'settings', 'panel', 'title_size', 'link_style', 'link_target')); ?>
    • 168 | 169 |
    170 |
    171 |
      172 |
      173 | 174 |
      175 | 176 | -------------------------------------------------------------------------------- /popover_ex/widget.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 24 | 26 | 28 | 30 | 32 | 34 | 36 | 37 | 38 | 40 | 41 | 43 | 44 | 45 | 47 | 48 | 50 | 51 | 52 | 53 | 54 | 56 | 57 | 58 | 59 | 60 | 62 | 63 | 64 | 66 | 67 | --------------------------------------------------------------------------------