', 'igm');
+ reg_match.lastIndex = this.pos;
+ var reg_array = reg_match.exec(this.input);
+ var end_script = reg_array?reg_array.index:this.input.length; //absolute end of script
+ if(this.pos < end_script) { //get everything in between the script tags
+ content = this.input.substring(this.pos, end_script);
+ this.pos = end_script;
+ }
+ return content;
+ };
+
+ this.record_tag = function (tag){ //function to record a tag and its parent in this.tags Object
+ if (this.tags[tag + 'count']) { //check for the existence of this tag type
+ this.tags[tag + 'count']++;
+ this.tags[tag + this.tags[tag + 'count']] = this.indent_level; //and record the present indent level
+ }
+ else { //otherwise initialize this tag type
+ this.tags[tag + 'count'] = 1;
+ this.tags[tag + this.tags[tag + 'count']] = this.indent_level; //and record the present indent level
+ }
+ this.tags[tag + this.tags[tag + 'count'] + 'parent'] = this.tags.parent; //set the parent (i.e. in the case of a div this.tags.div1parent)
+ this.tags.parent = tag + this.tags[tag + 'count']; //and make this the current parent (i.e. in the case of a div 'div1')
+ };
+
+ this.retrieve_tag = function (tag) { //function to retrieve the opening tag to the corresponding closer
+ if (this.tags[tag + 'count']) { //if the openener is not in the Object we ignore it
+ var temp_parent = this.tags.parent; //check to see if it's a closable tag.
+ while (temp_parent) { //till we reach '' (the initial value);
+ if (tag + this.tags[tag + 'count'] === temp_parent) { //if this is it use it
+ break;
+ }
+ temp_parent = this.tags[temp_parent + 'parent']; //otherwise keep on climbing up the DOM Tree
+ }
+ if (temp_parent) { //if we caught something
+ this.indent_level = this.tags[tag + this.tags[tag + 'count']]; //set the indent_level accordingly
+ this.tags.parent = this.tags[temp_parent + 'parent']; //and set the current parent
+ }
+ delete this.tags[tag + this.tags[tag + 'count'] + 'parent']; //delete the closed tags parent reference...
+ delete this.tags[tag + this.tags[tag + 'count']]; //...and the tag itself
+ if (this.tags[tag + 'count'] === 1) {
+ delete this.tags[tag + 'count'];
+ }
+ else {
+ this.tags[tag + 'count']--;
+ }
+ }
+ };
+
+ this.get_tag = function (peek) { //function to get a full tag and parse its type
+ var input_char = '',
+ content = [],
+ comment = '',
+ space = false,
+ tag_start, tag_end,
+ orig_pos = this.pos,
+ orig_line_char_count = this.line_char_count;
+
+ peek = peek !== undefined ? peek : false;
+
+ do {
+ if (this.pos >= this.input.length) {
+ if (peek) {
+ this.pos = orig_pos;
+ this.line_char_count = orig_line_char_count;
+ }
+ return content.length?content.join(''):['', 'TK_EOF'];
+ }
+
+ input_char = this.input.charAt(this.pos);
+ this.pos++;
+ this.line_char_count++;
+
+ if (this.Utils.in_array(input_char, this.Utils.whitespace)) { //don't want to insert unnecessary space
+ space = true;
+ this.line_char_count--;
+ continue;
+ }
+
+ if (input_char === "'" || input_char === '"') {
+ if (!content[1] || content[1] !== '!') { //if we're in a comment strings don't get treated specially
+ input_char += this.get_unformatted(input_char);
+ space = true;
+ }
+ }
+
+ if (input_char === '=') { //no space before =
+ space = false;
+ }
+
+ if (content.length && content[content.length-1] !== '=' && input_char !== '>' && space) {
+ //no space after = or before >
+ if (this.line_char_count >= this.max_char) {
+ this.print_newline(false, content);
+ this.line_char_count = 0;
+ }
+ else {
+ content.push(' ');
+ this.line_char_count++;
+ }
+ space = false;
+ }
+ if (input_char === '<') {
+ tag_start = this.pos - 1;
+ }
+ content.push(input_char); //inserts character at-a-time (or string)
+ } while (input_char !== '>');
+
+ var tag_complete = content.join('');
+ var tag_index;
+ if (tag_complete.indexOf(' ') !== -1) { //if there's whitespace, thats where the tag name ends
+ tag_index = tag_complete.indexOf(' ');
+ }
+ else { //otherwise go with the tag ending
+ tag_index = tag_complete.indexOf('>');
+ }
+ var tag_check = tag_complete.substring(1, tag_index).toLowerCase();
+ if (tag_complete.charAt(tag_complete.length-2) === '/' ||
+ this.Utils.in_array(tag_check, this.Utils.single_token)) { //if this tag name is a single tag type (either in the list or has a closing /)
+ if ( ! peek) {
+ this.tag_type = 'SINGLE';
+ }
+ }
+ else if (tag_check === 'script') { //for later script handling
+ if ( ! peek) {
+ this.record_tag(tag_check);
+ this.tag_type = 'SCRIPT';
+ }
+ }
+ else if (tag_check === 'style') { //for future style handling (for now it justs uses get_content)
+ if ( ! peek) {
+ this.record_tag(tag_check);
+ this.tag_type = 'STYLE';
+ }
+ }
+ else if (this.is_unformatted(tag_check, unformatted)) { // do not reformat the "unformatted" tags
+ comment = this.get_unformatted(''+tag_check+'>', tag_complete); //...delegate to get_unformatted function
+ content.push(comment);
+ // Preserve collapsed whitespace either before or after this tag.
+ if (tag_start > 0 && this.Utils.in_array(this.input.charAt(tag_start - 1), this.Utils.whitespace)){
+ content.splice(0, 0, this.input.charAt(tag_start - 1));
+ }
+ tag_end = this.pos - 1;
+ if (this.Utils.in_array(this.input.charAt(tag_end + 1), this.Utils.whitespace)){
+ content.push(this.input.charAt(tag_end + 1));
+ }
+ this.tag_type = 'SINGLE';
+ }
+ else if (tag_check.charAt(0) === '!') { //peek for so...
+ comment = this.get_unformatted('-->', tag_complete); //...delegate to get_unformatted
+ content.push(comment);
+ }
+ if ( ! peek) {
+ this.tag_type = 'START';
+ }
+ }
+ else if (tag_check.indexOf('[endif') !== -1) {//peek for ', tag_complete);
+ content.push(comment);
+ this.tag_type = 'SINGLE';
+ }
+ }
+ else if ( ! peek) {
+ if (tag_check.charAt(0) === '/') { //this tag is a double tag so check for tag-ending
+ this.retrieve_tag(tag_check.substring(1)); //remove it and all ancestors
+ this.tag_type = 'END';
+ }
+ else { //otherwise it's a start-tag
+ this.record_tag(tag_check); //push it on the tag stack
+ this.tag_type = 'START';
+ }
+ if (this.Utils.in_array(tag_check, this.Utils.extra_liners)) { //check if this double needs an extra line
+ this.print_newline(true, this.output);
+ }
+ }
+
+ if (peek) {
+ this.pos = orig_pos;
+ this.line_char_count = orig_line_char_count;
+ }
+
+ return content.join(''); //returns fully formatted tag
+ };
+
+ this.get_unformatted = function (delimiter, orig_tag) { //function to return unformatted content in its entirety
+
+ if (orig_tag && orig_tag.toLowerCase().indexOf(delimiter) !== -1) {
+ return '';
+ }
+ var input_char = '';
+ var content = '';
+ var space = true;
+ do {
+
+ if (this.pos >= this.input.length) {
+ return content;
+ }
+
+ input_char = this.input.charAt(this.pos);
+ this.pos++;
+
+ if (this.Utils.in_array(input_char, this.Utils.whitespace)) {
+ if (!space) {
+ this.line_char_count--;
+ continue;
+ }
+ if (input_char === '\n' || input_char === '\r') {
+ content += '\n';
+ /* Don't change tab indention for unformatted blocks. If using code for html editing, this will greatly affect tags if they are specified in the 'unformatted array'
+ for (var i=0; i]*>\s*$/);
+
+ // if next_tag comes back but is not an isolated tag, then
+ // let's treat the 'a' tag as having content
+ // and respect the unformatted option
+ if (!tag || this.Utils.in_array(tag, unformatted)){
+ return true;
+ } else {
+ return false;
+ }
+ };
+
+ this.printer = function (js_source, indent_character, indent_size, max_char, brace_style) { //handles input/output and some other printing functions
+
+ this.input = js_source || ''; //gets the input for the Parser
+ this.output = [];
+ this.indent_character = indent_character;
+ this.indent_string = '';
+ this.indent_size = indent_size;
+ this.brace_style = brace_style;
+ this.indent_level = 0;
+ this.max_char = max_char;
+ this.line_char_count = 0; //count to see if max_char was exceeded
+
+ for (var i=0; i 0) {
+ this.indent_level--;
+ }
+ };
+ };
+ return this;
+ }
+
+ /*_____________________--------------------_____________________*/
+
+ multi_parser = new Parser(); //wrapping functions Parser
+ multi_parser.printer(html_source, indent_character, indent_size, max_char, brace_style); //initialize starting values
+
+ while (true) {
+ var t = multi_parser.get_token();
+ multi_parser.token_text = t[0];
+ multi_parser.token_type = t[1];
+
+ if (multi_parser.token_type === 'TK_EOF') {
+ break;
+ }
+
+ switch (multi_parser.token_type) {
+ case 'TK_TAG_START':
+ multi_parser.print_newline(false, multi_parser.output);
+ multi_parser.print_token(multi_parser.token_text);
+ multi_parser.indent();
+ multi_parser.current_mode = 'CONTENT';
+ break;
+ case 'TK_TAG_STYLE':
+ case 'TK_TAG_SCRIPT':
+ multi_parser.print_newline(false, multi_parser.output);
+ multi_parser.print_token(multi_parser.token_text);
+ multi_parser.current_mode = 'CONTENT';
+ break;
+ case 'TK_TAG_END':
+ //Print new line only if the tag has no content and has child
+ if (multi_parser.last_token === 'TK_CONTENT' && multi_parser.last_text === '') {
+ var tag_name = multi_parser.token_text.match(/\w+/)[0];
+ var tag_extracted_from_last_output = multi_parser.output[multi_parser.output.length -1].match(/<\s*(\w+)/);
+ if (tag_extracted_from_last_output === null || tag_extracted_from_last_output[1] !== tag_name) {
+ multi_parser.print_newline(true, multi_parser.output);
+ }
+ }
+ multi_parser.print_token(multi_parser.token_text);
+ multi_parser.current_mode = 'CONTENT';
+ break;
+ case 'TK_TAG_SINGLE':
+ // Don't add a newline before elements that should remain unformatted.
+ var tag_check = multi_parser.token_text.match(/^\s*<([a-z]+)/i);
+ if (!tag_check || !multi_parser.Utils.in_array(tag_check[1], unformatted)){
+ multi_parser.print_newline(false, multi_parser.output);
+ }
+ multi_parser.print_token(multi_parser.token_text);
+ multi_parser.current_mode = 'CONTENT';
+ break;
+ case 'TK_CONTENT':
+ if (multi_parser.token_text !== '') {
+ multi_parser.print_token(multi_parser.token_text);
+ }
+ multi_parser.current_mode = 'TAG';
+ break;
+ case 'TK_STYLE':
+ case 'TK_SCRIPT':
+ if (multi_parser.token_text !== '') {
+ multi_parser.output.push('\n');
+ var text = multi_parser.token_text,
+ _beautifier,
+ script_indent_level = 1;
+ if (multi_parser.token_type === 'TK_SCRIPT') {
+ _beautifier = typeof js_beautify === 'function' && js_beautify;
+ } else if (multi_parser.token_type === 'TK_STYLE') {
+ _beautifier = typeof css_beautify === 'function' && css_beautify;
+ }
+
+ if (options.indent_scripts === "keep") {
+ script_indent_level = 0;
+ } else if (options.indent_scripts === "separate") {
+ script_indent_level = -multi_parser.indent_level;
+ }
+
+ var indentation = multi_parser.get_full_indent(script_indent_level);
+ if (_beautifier) {
+ // call the Beautifier if avaliable
+ text = _beautifier(text.replace(/^\s*/, indentation), options);
+ } else {
+ // simply indent the string otherwise
+ var white = text.match(/^\s*/)[0];
+ var _level = white.match(/[^\n\r]*$/)[0].split(multi_parser.indent_string).length - 1;
+ var reindent = multi_parser.get_full_indent(script_indent_level -_level);
+ text = text.replace(/^\s*/, indentation)
+ .replace(/\r\n|\r|\n/g, '\n' + reindent)
+ .replace(/\s*$/, '');
+ }
+ if (text) {
+ multi_parser.print_token(text);
+ multi_parser.print_newline(true, multi_parser.output);
+ }
+ }
+ multi_parser.current_mode = 'TAG';
+ break;
+ }
+ multi_parser.last_token = multi_parser.token_type;
+ multi_parser.last_text = multi_parser.token_text;
+ }
+ return multi_parser.output.join('');
+ }
+
+ // If we're running a web page and don't have either of the above, add our one global
+ window.html_beautify = function(html_source, options) {
+ return style_html(html_source, options, window.js_beautify, window.css_beautify);
+ };
+
+}());
diff --git a/alive-admin/src/main/resources/static/ajax/libs/blockUI/jquery.blockUI.js b/alive-admin/src/main/resources/static/ajax/libs/blockUI/jquery.blockUI.js
new file mode 100644
index 0000000..552613d
--- /dev/null
+++ b/alive-admin/src/main/resources/static/ajax/libs/blockUI/jquery.blockUI.js
@@ -0,0 +1,620 @@
+/*!
+ * jQuery blockUI plugin
+ * Version 2.70.0-2014.11.23
+ * Requires jQuery v1.7 or later
+ *
+ * Examples at: http://malsup.com/jquery/block/
+ * Copyright (c) 2007-2013 M. Alsup
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ * Thanks to Amir-Hossein Sobhi for some excellent contributions!
+ */
+
+;(function() {
+/*jshint eqeqeq:false curly:false latedef:false */
+"use strict";
+
+ function setup($) {
+ $.fn._fadeIn = $.fn.fadeIn;
+
+ var noOp = $.noop || function() {};
+
+ // this bit is to ensure we don't call setExpression when we shouldn't (with extra muscle to handle
+ // confusing userAgent strings on Vista)
+ var msie = /MSIE/.test(navigator.userAgent);
+ var ie6 = /MSIE 6.0/.test(navigator.userAgent) && ! /MSIE 8.0/.test(navigator.userAgent);
+ var mode = document.documentMode || 0;
+ var setExpr = $.isFunction( document.createElement('div').style.setExpression );
+
+ // global $ methods for blocking/unblocking the entire page
+ $.blockUI = function(opts) { install(window, opts); };
+ $.unblockUI = function(opts) { remove(window, opts); };
+
+ // convenience method for quick growl-like notifications (http://www.google.com/search?q=growl)
+ $.growlUI = function(title, message, timeout, onClose) {
+ var $m = $('');
+ if (title) $m.append(''+title+'
');
+ if (message) $m.append(''+message+'
');
+ if (timeout === undefined) timeout = 3000;
+
+ // Added by konapun: Set timeout to 30 seconds if this growl is moused over, like normal toast notifications
+ var callBlock = function(opts) {
+ opts = opts || {};
+
+ $.blockUI({
+ message: $m,
+ fadeIn : typeof opts.fadeIn !== 'undefined' ? opts.fadeIn : 700,
+ fadeOut: typeof opts.fadeOut !== 'undefined' ? opts.fadeOut : 1000,
+ timeout: typeof opts.timeout !== 'undefined' ? opts.timeout : timeout,
+ centerY: false,
+ showOverlay: false,
+ onUnblock: onClose,
+ css: $.blockUI.defaults.growlCSS
+ });
+ };
+
+ callBlock();
+ var nonmousedOpacity = $m.css('opacity');
+ $m.mouseover(function() {
+ callBlock({
+ fadeIn: 0,
+ timeout: 30000
+ });
+
+ var displayBlock = $('.blockMsg');
+ displayBlock.stop(); // cancel fadeout if it has started
+ displayBlock.fadeTo(300, 1); // make it easier to read the message by removing transparency
+ }).mouseout(function() {
+ $('.blockMsg').fadeOut(1000);
+ });
+ // End konapun additions
+ };
+
+ // plugin method for blocking element content
+ $.fn.block = function(opts) {
+ if ( this[0] === window ) {
+ $.blockUI( opts );
+ return this;
+ }
+ var fullOpts = $.extend({}, $.blockUI.defaults, opts || {});
+ this.each(function() {
+ var $el = $(this);
+ if (fullOpts.ignoreIfBlocked && $el.data('blockUI.isBlocked'))
+ return;
+ $el.unblock({ fadeOut: 0 });
+ });
+
+ return this.each(function() {
+ if ($.css(this,'position') == 'static') {
+ this.style.position = 'relative';
+ $(this).data('blockUI.static', true);
+ }
+ this.style.zoom = 1; // force 'hasLayout' in ie
+ install(this, opts);
+ });
+ };
+
+ // plugin method for unblocking element content
+ $.fn.unblock = function(opts) {
+ if ( this[0] === window ) {
+ $.unblockUI( opts );
+ return this;
+ }
+ return this.each(function() {
+ remove(this, opts);
+ });
+ };
+
+ $.blockUI.version = 2.70; // 2nd generation blocking at no extra cost!
+
+ // override these in your code to change the default behavior and style
+ $.blockUI.defaults = {
+ // message displayed when blocking (use null for no message)
+ message: '',
+
+ title: null, // title string; only used when theme == true
+ draggable: true, // only used when theme == true (requires jquery-ui.js to be loaded)
+
+ theme: false, // set to true to use with jQuery UI themes
+
+ // styles for the message when blocking; if you wish to disable
+ // these and use an external stylesheet then do this in your code:
+ // $.blockUI.defaults.css = {};
+ css: {
+ padding: 0,
+ margin: 0,
+ width: '30%',
+ top: '40%',
+ left: '35%',
+ textAlign: 'center',
+ color: '#000',
+ border: '0px',
+ backgroundColor:'transparent',
+ cursor: 'wait'
+ },
+
+ // minimal style set used when themes are used
+ themedCSS: {
+ width: '30%',
+ top: '40%',
+ left: '35%'
+ },
+
+ // styles for the overlay
+ overlayCSS: {
+ backgroundColor: '#000',
+ opacity: 0.6,
+ cursor: 'wait'
+ },
+
+ // style to replace wait cursor before unblocking to correct issue
+ // of lingering wait cursor
+ cursorReset: 'default',
+
+ // styles applied when using $.growlUI
+ growlCSS: {
+ width: '350px',
+ top: '10px',
+ left: '',
+ right: '10px',
+ border: 'none',
+ padding: '5px',
+ opacity: 0.6,
+ cursor: 'default',
+ color: '#fff',
+ backgroundColor: '#000',
+ '-webkit-border-radius':'10px',
+ '-moz-border-radius': '10px',
+ 'border-radius': '10px'
+ },
+
+ // IE issues: 'about:blank' fails on HTTPS and javascript:false is s-l-o-w
+ // (hat tip to Jorge H. N. de Vasconcelos)
+ /*jshint scripturl:true */
+ iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank',
+
+ // force usage of iframe in non-IE browsers (handy for blocking applets)
+ forceIframe: false,
+
+ // z-index for the blocking overlay
+ baseZ: 1000,
+
+ // set these to true to have the message automatically centered
+ centerX: true, // <-- only effects element blocking (page block controlled via css above)
+ centerY: true,
+
+ // allow body element to be stetched in ie6; this makes blocking look better
+ // on "short" pages. disable if you wish to prevent changes to the body height
+ allowBodyStretch: true,
+
+ // enable if you want key and mouse events to be disabled for content that is blocked
+ bindEvents: true,
+
+ // be default blockUI will supress tab navigation from leaving blocking content
+ // (if bindEvents is true)
+ constrainTabKey: true,
+
+ // fadeIn time in millis; set to 0 to disable fadeIn on block
+ fadeIn: 200,
+
+ // fadeOut time in millis; set to 0 to disable fadeOut on unblock
+ fadeOut: 400,
+
+ // time in millis to wait before auto-unblocking; set to 0 to disable auto-unblock
+ timeout: 0,
+
+ // disable if you don't want to show the overlay
+ showOverlay: true,
+
+ // if true, focus will be placed in the first available input field when
+ // page blocking
+ focusInput: true,
+
+ // elements that can receive focus
+ focusableElements: ':input:enabled:visible',
+
+ // suppresses the use of overlay styles on FF/Linux (due to performance issues with opacity)
+ // no longer needed in 2012
+ // applyPlatformOpacityRules: true,
+
+ // callback method invoked when fadeIn has completed and blocking message is visible
+ onBlock: null,
+
+ // callback method invoked when unblocking has completed; the callback is
+ // passed the element that has been unblocked (which is the window object for page
+ // blocks) and the options that were passed to the unblock call:
+ // onUnblock(element, options)
+ onUnblock: null,
+
+ // callback method invoked when the overlay area is clicked.
+ // setting this will turn the cursor to a pointer, otherwise cursor defined in overlayCss will be used.
+ onOverlayClick: null,
+
+ // don't ask; if you really must know: http://groups.google.com/group/jquery-en/browse_thread/thread/36640a8730503595/2f6a79a77a78e493#2f6a79a77a78e493
+ quirksmodeOffsetHack: 4,
+
+ // class name of the message block
+ blockMsgClass: 'blockMsg',
+
+ // if it is already blocked, then ignore it (don't unblock and reblock)
+ ignoreIfBlocked: false
+ };
+
+ // private data and functions follow...
+
+ var pageBlock = null;
+ var pageBlockEls = [];
+
+ function install(el, opts) {
+ var css, themedCSS;
+ var full = (el == window);
+ var msg = (opts && opts.message !== undefined ? opts.message : undefined);
+ opts = $.extend({}, $.blockUI.defaults, opts || {});
+
+ if (opts.ignoreIfBlocked && $(el).data('blockUI.isBlocked'))
+ return;
+
+ opts.overlayCSS = $.extend({}, $.blockUI.defaults.overlayCSS, opts.overlayCSS || {});
+ css = $.extend({}, $.blockUI.defaults.css, opts.css || {});
+ if (opts.onOverlayClick)
+ opts.overlayCSS.cursor = 'pointer';
+
+ themedCSS = $.extend({}, $.blockUI.defaults.themedCSS, opts.themedCSS || {});
+ msg = msg === undefined ? opts.message : msg;
+
+ // remove the current block (if there is one)
+ if (full && pageBlock)
+ remove(window, {fadeOut:0});
+
+ // if an existing element is being used as the blocking content then we capture
+ // its current place in the DOM (and current display style) so we can restore
+ // it when we unblock
+ if (msg && typeof msg != 'string' && (msg.parentNode || msg.jquery)) {
+ var node = msg.jquery ? msg[0] : msg;
+ var data = {};
+ $(el).data('blockUI.history', data);
+ data.el = node;
+ data.parent = node.parentNode;
+ data.display = node.style.display;
+ data.position = node.style.position;
+ if (data.parent)
+ data.parent.removeChild(node);
+ }
+
+ $(el).data('blockUI.onUnblock', opts.onUnblock);
+ var z = opts.baseZ;
+
+ // blockUI uses 3 layers for blocking, for simplicity they are all used on every platform;
+ // layer1 is the iframe layer which is used to supress bleed through of underlying content
+ // layer2 is the overlay layer which has opacity and a wait cursor (by default)
+ // layer3 is the message content that is displayed while blocking
+ var lyr1, lyr2, lyr3, s;
+ if (msie || opts.forceIframe)
+ lyr1 = $('');
+ else
+ lyr1 = $('');
+
+ if (opts.theme)
+ lyr2 = $('');
+ else
+ lyr2 = $('');
+
+ if (opts.theme && full) {
+ s = '';
+ if ( opts.title ) {
+ s += '';
+ }
+ s += '
';
+ s += '
';
+ }
+ else if (opts.theme) {
+ s = '';
+ }
+ else if (full) {
+ s = '';
+ }
+ else {
+ s = '';
+ }
+ lyr3 = $(s);
+
+ // if we have a message, style it
+ if (msg) {
+ if (opts.theme) {
+ lyr3.css(themedCSS);
+ lyr3.addClass('ui-widget-content');
+ }
+ else
+ lyr3.css(css);
+ }
+
+ // style the overlay
+ if (!opts.theme /*&& (!opts.applyPlatformOpacityRules)*/)
+ lyr2.css(opts.overlayCSS);
+ lyr2.css('position', full ? 'fixed' : 'absolute');
+
+ // make iframe layer transparent in IE
+ if (msie || opts.forceIframe)
+ lyr1.css('opacity',0.0);
+
+ //$([lyr1[0],lyr2[0],lyr3[0]]).appendTo(full ? 'body' : el);
+ var layers = [lyr1,lyr2,lyr3], $par = full ? $('body') : $(el);
+ $.each(layers, function() {
+ this.appendTo($par);
+ });
+
+ if (opts.theme && opts.draggable && $.fn.draggable) {
+ lyr3.draggable({
+ handle: '.ui-dialog-titlebar',
+ cancel: 'li'
+ });
+ }
+
+ // ie7 must use absolute positioning in quirks mode and to account for activex issues (when scrolling)
+ var expr = setExpr && (!$.support.boxModel || $('object,embed', full ? null : el).length > 0);
+ if (ie6 || expr) {
+ // give body 100% height
+ if (full && opts.allowBodyStretch && $.support.boxModel)
+ $('html,body').css('height','100%');
+
+ // fix ie6 issue when blocked element has a border width
+ if ((ie6 || !$.support.boxModel) && !full) {
+ var t = sz(el,'borderTopWidth'), l = sz(el,'borderLeftWidth');
+ var fixT = t ? '(0 - '+t+')' : 0;
+ var fixL = l ? '(0 - '+l+')' : 0;
+ }
+
+ // simulate fixed position
+ $.each(layers, function(i,o) {
+ var s = o[0].style;
+ s.position = 'absolute';
+ if (i < 2) {
+ if (full)
+ s.setExpression('height','Math.max(document.body.scrollHeight, document.body.offsetHeight) - (jQuery.support.boxModel?0:'+opts.quirksmodeOffsetHack+') + "px"');
+ else
+ s.setExpression('height','this.parentNode.offsetHeight + "px"');
+ if (full)
+ s.setExpression('width','jQuery.support.boxModel && document.documentElement.clientWidth || document.body.clientWidth + "px"');
+ else
+ s.setExpression('width','this.parentNode.offsetWidth + "px"');
+ if (fixL) s.setExpression('left', fixL);
+ if (fixT) s.setExpression('top', fixT);
+ }
+ else if (opts.centerY) {
+ if (full) s.setExpression('top','(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (blah = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"');
+ s.marginTop = 0;
+ }
+ else if (!opts.centerY && full) {
+ var top = (opts.css && opts.css.top) ? parseInt(opts.css.top, 10) : 0;
+ var expression = '((document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + '+top+') + "px"';
+ s.setExpression('top',expression);
+ }
+ });
+ }
+
+ // show the message
+ if (msg) {
+ if (opts.theme)
+ lyr3.find('.ui-widget-content').append(msg);
+ else
+ lyr3.append(msg);
+ if (msg.jquery || msg.nodeType)
+ $(msg).show();
+ }
+
+ if ((msie || opts.forceIframe) && opts.showOverlay)
+ lyr1.show(); // opacity is zero
+ if (opts.fadeIn) {
+ var cb = opts.onBlock ? opts.onBlock : noOp;
+ var cb1 = (opts.showOverlay && !msg) ? cb : noOp;
+ var cb2 = msg ? cb : noOp;
+ if (opts.showOverlay)
+ lyr2._fadeIn(opts.fadeIn, cb1);
+ if (msg)
+ lyr3._fadeIn(opts.fadeIn, cb2);
+ }
+ else {
+ if (opts.showOverlay)
+ lyr2.show();
+ if (msg)
+ lyr3.show();
+ if (opts.onBlock)
+ opts.onBlock.bind(lyr3)();
+ }
+
+ // bind key and mouse events
+ bind(1, el, opts);
+
+ if (full) {
+ pageBlock = lyr3[0];
+ pageBlockEls = $(opts.focusableElements,pageBlock);
+ if (opts.focusInput)
+ setTimeout(focus, 20);
+ }
+ else
+ center(lyr3[0], opts.centerX, opts.centerY);
+
+ if (opts.timeout) {
+ // auto-unblock
+ var to = setTimeout(function() {
+ if (full)
+ $.unblockUI(opts);
+ else
+ $(el).unblock(opts);
+ }, opts.timeout);
+ $(el).data('blockUI.timeout', to);
+ }
+ }
+
+ // remove the block
+ function remove(el, opts) {
+ var count;
+ var full = (el == window);
+ var $el = $(el);
+ var data = $el.data('blockUI.history');
+ var to = $el.data('blockUI.timeout');
+ if (to) {
+ clearTimeout(to);
+ $el.removeData('blockUI.timeout');
+ }
+ opts = $.extend({}, $.blockUI.defaults, opts || {});
+ bind(0, el, opts); // unbind events
+
+ if (opts.onUnblock === null) {
+ opts.onUnblock = $el.data('blockUI.onUnblock');
+ $el.removeData('blockUI.onUnblock');
+ }
+
+ var els;
+ if (full) // crazy selector to handle odd field errors in ie6/7
+ els = $('body').children().filter('.blockUI').add('body > .blockUI');
+ else
+ els = $el.find('>.blockUI');
+
+ // fix cursor issue
+ if ( opts.cursorReset ) {
+ if ( els.length > 1 )
+ els[1].style.cursor = opts.cursorReset;
+ if ( els.length > 2 )
+ els[2].style.cursor = opts.cursorReset;
+ }
+
+ if (full)
+ pageBlock = pageBlockEls = null;
+
+ if (opts.fadeOut) {
+ count = els.length;
+ els.stop().fadeOut(opts.fadeOut, function() {
+ if ( --count === 0)
+ reset(els,data,opts,el);
+ });
+ }
+ else
+ reset(els, data, opts, el);
+ }
+
+ // move blocking element back into the DOM where it started
+ function reset(els,data,opts,el) {
+ var $el = $(el);
+ if ( $el.data('blockUI.isBlocked') )
+ return;
+
+ els.each(function(i,o) {
+ // remove via DOM calls so we don't lose event handlers
+ if (this.parentNode)
+ this.parentNode.removeChild(this);
+ });
+
+ if (data && data.el) {
+ data.el.style.display = data.display;
+ data.el.style.position = data.position;
+ data.el.style.cursor = 'default'; // #59
+ if (data.parent)
+ data.parent.appendChild(data.el);
+ $el.removeData('blockUI.history');
+ }
+
+ if ($el.data('blockUI.static')) {
+ $el.css('position', 'static'); // #22
+ }
+
+ if (typeof opts.onUnblock == 'function')
+ opts.onUnblock(el,opts);
+
+ // fix issue in Safari 6 where block artifacts remain until reflow
+ var body = $(document.body), w = body.width(), cssW = body[0].style.width;
+ body.width(w-1).width(w);
+ body[0].style.width = cssW;
+ }
+
+ // bind/unbind the handler
+ function bind(b, el, opts) {
+ var full = el == window, $el = $(el);
+
+ // don't bother unbinding if there is nothing to unbind
+ if (!b && (full && !pageBlock || !full && !$el.data('blockUI.isBlocked')))
+ return;
+
+ $el.data('blockUI.isBlocked', b);
+
+ // don't bind events when overlay is not in use or if bindEvents is false
+ if (!full || !opts.bindEvents || (b && !opts.showOverlay))
+ return;
+
+ // bind anchors and inputs for mouse and key events
+ var events = 'mousedown mouseup keydown keypress keyup touchstart touchend touchmove';
+ if (b)
+ $(document).bind(events, opts, handler);
+ else
+ $(document).unbind(events, handler);
+
+ // former impl...
+ // var $e = $('a,:input');
+ // b ? $e.bind(events, opts, handler) : $e.unbind(events, handler);
+ }
+
+ // event handler to suppress keyboard/mouse events when blocking
+ function handler(e) {
+ // allow tab navigation (conditionally)
+ if (e.type === 'keydown' && e.keyCode && e.keyCode == 9) {
+ if (pageBlock && e.data.constrainTabKey) {
+ var els = pageBlockEls;
+ var fwd = !e.shiftKey && e.target === els[els.length-1];
+ var back = e.shiftKey && e.target === els[0];
+ if (fwd || back) {
+ setTimeout(function(){focus(back);},10);
+ return false;
+ }
+ }
+ }
+ var opts = e.data;
+ var target = $(e.target);
+ if (target.hasClass('blockOverlay') && opts.onOverlayClick)
+ opts.onOverlayClick(e);
+
+ // allow events within the message content
+ if (target.parents('div.' + opts.blockMsgClass).length > 0)
+ return true;
+
+ // allow events for content that is not being blocked
+ return target.parents().children().filter('div.blockUI').length === 0;
+ }
+
+ function focus(back) {
+ if (!pageBlockEls)
+ return;
+ var e = pageBlockEls[back===true ? pageBlockEls.length-1 : 0];
+ if (e)
+ e.focus();
+ }
+
+ function center(el, x, y) {
+ var p = el.parentNode, s = el.style;
+ var l = ((p.offsetWidth - el.offsetWidth)/2) - sz(p,'borderLeftWidth');
+ var t = ((p.offsetHeight - el.offsetHeight)/2) - sz(p,'borderTopWidth');
+ if (x) s.left = l > 0 ? (l+'px') : '0';
+ if (y) s.top = t > 0 ? (t+'px') : '0';
+ }
+
+ function sz(el, p) {
+ return parseInt($.css(el,p),10)||0;
+ }
+
+ }
+
+
+ /*global define:true */
+ if (typeof define === 'function' && define.amd && define.amd.jQuery) {
+ define(['jquery'], setup);
+ } else {
+ setup(jQuery);
+ }
+
+})();
\ No newline at end of file
diff --git a/alive-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.css b/alive-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.css
new file mode 100644
index 0000000..0f27a5f
--- /dev/null
+++ b/alive-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.css
@@ -0,0 +1,671 @@
+/*!
+ * bootstrap-fileinput v5.2.4
+ * http://plugins.krajee.com/file-input
+ *
+ * Krajee default styling for bootstrap-fileinput.
+ *
+ * Author: Kartik Visweswaran
+ * Copyright: 2014 - 2021, Kartik Visweswaran, Krajee.com
+ *
+ * Licensed under the BSD-3-Clause
+ * https://github.com/kartik-v/bootstrap-fileinput/blob/master/LICENSE.md
+ */
+
+.file-loading input[type=file],
+input[type=file].file-loading {
+ width: 0;
+ height: 0;
+}
+
+.file-no-browse {
+ position: absolute;
+ left: 50%;
+ bottom: 20%;
+ width: 1px;
+ height: 1px;
+ font-size: 0;
+ opacity: 0;
+ border: none;
+ background: none;
+ outline: none;
+ box-shadow: none;
+}
+
+.kv-hidden,
+.file-caption-icon,
+.file-zoom-dialog .modal-header:before,
+.file-zoom-dialog .modal-header:after,
+.file-input-new .file-preview,
+.file-input-new .close,
+.file-input-new .glyphicon-file,
+.file-input-new .fileinput-remove-button,
+.file-input-new .fileinput-upload-button,
+.file-input-new .no-browse .input-group-btn,
+.file-input-ajax-new .fileinput-remove-button,
+.file-input-ajax-new .fileinput-upload-button,
+.file-input-ajax-new .no-browse .input-group-btn,
+.hide-content .kv-file-content,
+.is-locked .fileinput-upload-button,
+.is-locked .fileinput-remove-button {
+ display: none;
+}
+
+.btn-file input[type=file],
+.file-caption-icon,
+.file-preview .fileinput-remove,
+.krajee-default .file-thumb-progress,
+.file-zoom-dialog .btn-navigate,
+.file-zoom-dialog .floating-buttons {
+ position: absolute;
+}
+
+.file-caption-icon .kv-caption-icon {
+ line-height: inherit;
+}
+
+.file-input,
+.file-loading:before,
+.btn-file,
+.file-caption,
+.file-preview,
+.krajee-default.file-preview-frame,
+.krajee-default .file-thumbnail-footer,
+.file-zoom-dialog .modal-dialog {
+ position: relative;
+}
+
+.file-error-message pre,
+.file-error-message ul,
+.krajee-default .file-actions,
+.krajee-default .file-other-error {
+ text-align: left;
+}
+
+.file-error-message pre,
+.file-error-message ul {
+ margin: 0;
+}
+
+.krajee-default .file-drag-handle,
+.krajee-default .file-upload-indicator {
+ float: left;
+ margin-top: 10px;
+ width: 16px;
+ height: 16px;
+}
+
+.file-thumb-progress .progress,
+.file-thumb-progress .progress-bar {
+ font-family: Verdana, Helvetica, sans-serif;
+ font-size: 0.7rem;
+}
+
+.krajee-default .file-thumb-progress .progress,
+.kv-upload-progress .progress {
+ background-color: #ccc;
+}
+
+.krajee-default .file-caption-info,
+.krajee-default .file-size-info {
+ display: block;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ width: 160px;
+ height: 15px;
+ margin: auto;
+}
+
+.file-zoom-content > .file-object.type-video,
+.file-zoom-content > .file-object.type-flash,
+.file-zoom-content > .file-object.type-image {
+ max-width: 100%;
+ max-height: 100%;
+ width: auto;
+}
+
+.file-zoom-content > .file-object.type-video,
+.file-zoom-content > .file-object.type-flash {
+ height: 100%;
+}
+
+.file-zoom-content > .file-object.type-pdf,
+.file-zoom-content > .file-object.type-html,
+.file-zoom-content > .file-object.type-text,
+.file-zoom-content > .file-object.type-default {
+ width: 100%;
+}
+
+.file-loading:before {
+ content: " Loading...";
+ display: inline-block;
+ padding-left: 20px;
+ line-height: 16px;
+ font-size: 13px;
+ font-variant: small-caps;
+ color: #999;
+ background: transparent url(loading.gif) top left no-repeat;
+}
+
+.file-object {
+ margin: 0 0 -5px 0;
+ padding: 0;
+}
+
+.btn-file {
+ overflow: hidden;
+}
+
+.btn-file input[type=file] {
+ top: 0;
+ left: 0;
+ min-width: 100%;
+ min-height: 100%;
+ text-align: right;
+ opacity: 0;
+ background: none repeat scroll 0 0 transparent;
+ cursor: inherit;
+ display: block;
+}
+
+.btn-file ::-ms-browse {
+ font-size: 10000px;
+ width: 100%;
+ height: 100%;
+}
+
+.file-caption.icon-visible .file-caption-icon {
+ display: inline-block;
+}
+
+.file-caption.icon-visible .file-caption-name {
+ padding-left: 25px;
+}
+
+.file-caption.icon-visible > .input-group-lg .file-caption-name {
+ padding-left: 30px;
+}
+
+.file-caption.icon-visible > .input-group-sm .file-caption-name {
+ padding-left: 22px;
+}
+
+.file-caption-name:not(.file-caption-disabled) {
+ background-color: transparent;
+}
+
+.file-caption-name.file-processing {
+ font-style: italic;
+ border-color: #bbb;
+ opacity: 0.5;
+}
+
+.file-caption-icon {
+ padding: 7px 5px;
+ left: 4px;
+}
+
+.input-group-lg .file-caption-icon {
+ font-size: 1.25rem;
+}
+
+.input-group-sm .file-caption-icon {
+ font-size: 0.875rem;
+ padding: 0.25rem;
+}
+
+.file-error-message {
+ color: #a94442;
+ background-color: #f2dede;
+ margin: 5px;
+ border: 1px solid #ebccd1;
+ border-radius: 4px;
+ padding: 15px;
+}
+
+.file-error-message pre {
+ margin: 5px 0;
+}
+
+.file-caption-disabled {
+ background-color: #eee;
+ cursor: not-allowed;
+ opacity: 1;
+}
+
+.file-preview {
+ border-radius: 5px;
+ border: 1px solid #ddd;
+ padding: 8px;
+ width: 100%;
+ margin-bottom: 5px;
+}
+
+.file-preview .btn-xs {
+ padding: 1px 5px;
+ font-size: 12px;
+ line-height: 1.5;
+ border-radius: 3px;
+}
+
+.file-preview .fileinput-remove {
+ top: 1px;
+ right: 1px;
+ line-height: 10px;
+}
+
+.file-preview .clickable {
+ cursor: pointer;
+}
+
+.file-preview-image {
+ font: 40px Impact, Charcoal, sans-serif;
+ color: #008000;
+ width: auto;
+ height: auto;
+ max-width: 100%;
+ max-height: 100%;
+}
+
+.krajee-default.file-preview-frame {
+ margin: 8px;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.2);
+ padding: 6px;
+ float: left;
+ text-align: center;
+}
+
+.krajee-default.file-preview-frame .kv-file-content {
+ width: 213px;
+ height: 160px;
+}
+
+.krajee-default .file-preview-other-frame {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.krajee-default.file-preview-frame .kv-file-content.kv-pdf-rendered {
+ width: 400px;
+}
+
+.krajee-default.file-preview-frame[data-template="audio"] .kv-file-content {
+ width: 240px;
+ height: 55px;
+}
+
+.krajee-default.file-preview-frame .file-thumbnail-footer {
+ height: 70px;
+}
+
+.krajee-default.file-preview-frame:not(.file-preview-error):hover {
+ border: 1px solid rgba(0, 0, 0, 0.3);
+ box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.4);
+}
+
+.krajee-default .file-preview-text {
+ color: #428bca;
+ border: 1px solid #ddd;
+ outline: none;
+ resize: none;
+}
+
+.krajee-default .file-preview-html {
+ border: 1px solid #ddd;
+}
+
+.krajee-default .file-other-icon {
+ font-size: 6em;
+ line-height: 1;
+}
+
+.krajee-default .file-footer-buttons {
+ float: right;
+}
+
+.krajee-default .file-footer-caption {
+ display: block;
+ text-align: center;
+ padding-top: 4px;
+ font-size: 11px;
+ color: #777;
+ margin-bottom: 30px;
+}
+
+.file-upload-stats {
+ font-size: 10px;
+ text-align: center;
+ width: 100%;
+}
+
+.kv-upload-progress .file-upload-stats {
+ font-size: 12px;
+ margin: -10px 0 5px;
+}
+
+.krajee-default .file-preview-error {
+ opacity: 0.65;
+ box-shadow: none;
+}
+
+.krajee-default .file-thumb-progress {
+ top: 37px;
+ left: 0;
+ right: 0;
+}
+
+.krajee-default.kvsortable-ghost {
+ background: #e1edf7;
+ border: 2px solid #a1abff;
+}
+
+.krajee-default .file-preview-other:hover {
+ opacity: 0.8;
+}
+
+.krajee-default .file-preview-frame:not(.file-preview-error) .file-footer-caption:hover {
+ color: #000;
+}
+
+.kv-upload-progress .progress {
+ height: 20px;
+ margin: 10px 0;
+ overflow: hidden;
+}
+
+.kv-upload-progress .progress-bar {
+ height: 20px;
+ font-family: Verdana, Helvetica, sans-serif;
+}
+
+
+/*noinspection CssOverwrittenProperties*/
+
+.file-zoom-dialog .file-other-icon {
+ font-size: 22em;
+ font-size: 50vmin;
+}
+
+.file-zoom-dialog .modal-dialog {
+ width: auto;
+}
+
+.file-zoom-dialog .modal-header {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+}
+
+.file-zoom-dialog .btn-navigate {
+ margin: 0 0.1rem;
+ padding: 0;
+ font-size: 1.2rem;
+ width: 2.4rem;
+ height: 2.4rem;
+ top: 50%;
+ border-radius: 50%;
+ text-align:center;
+}
+
+.btn-navigate * {
+ width: auto;
+}
+
+.file-zoom-dialog .floating-buttons {
+ top: 5px;
+ right: 10px;
+}
+
+.file-zoom-dialog .btn-kv-prev {
+ left: 0;
+}
+
+.file-zoom-dialog .btn-kv-next {
+ right: 0;
+}
+
+.file-zoom-dialog .kv-zoom-caption {
+ max-width: 50%;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+
+.file-zoom-dialog .kv-zoom-header {
+ padding: 0.5rem;
+}
+
+.file-zoom-dialog .kv-zoom-body {
+ padding: 0.25rem 0.5rem 0.25rem 0;
+}
+
+.file-zoom-dialog .kv-zoom-description {
+ position: absolute;
+ opacity: 0.8;
+ font-size: 0.8rem;
+ background-color: #1a1a1a;
+ padding: 1rem;
+ text-align: center;
+ border-radius: 0.5rem;
+ color: #fff;
+ left: 15%;
+ right: 15%;
+ bottom: 15%;
+}
+
+.file-zoom-dialog .kv-desc-hide {
+ float: right;
+ color: #fff;
+ padding: 0 0.1rem;
+ background: none;
+ border: none;
+}
+
+.file-zoom-dialog .kv-desc-hide:hover {
+ opacity: 0.7;
+}
+
+.file-zoom-dialog .kv-desc-hide:focus {
+ opacity: 0.9;
+}
+
+.file-input-new .no-browse .form-control {
+ border-top-right-radius: 4px;
+ border-bottom-right-radius: 4px;
+}
+
+.file-input-ajax-new .no-browse .form-control {
+ border-top-right-radius: 4px;
+ border-bottom-right-radius: 4px;
+}
+
+.file-caption {
+ width: 100%;
+ position: relative;
+}
+
+.file-thumb-loading {
+ background: transparent url(loading.gif) no-repeat scroll center center content-box !important;
+}
+
+.file-drop-zone {
+ border: 1px dashed #aaa;
+ min-height: 260px;
+ border-radius: 4px;
+ text-align: center;
+ vertical-align: middle;
+ margin: 12px 15px 12px 12px;
+ padding: 5px;
+}
+
+.file-drop-zone.clickable:hover {
+ border: 2px dashed #999;
+}
+
+.file-drop-zone.clickable:focus {
+ border: 2px solid #5acde2;
+}
+
+.file-drop-zone .file-preview-thumbnails {
+ cursor: default;
+}
+
+.file-drop-zone-title {
+ color: #aaa;
+ font-size: 1.6em;
+ text-align: center;
+ padding: 85px 10px;
+ cursor: default;
+}
+
+.file-highlighted {
+ border: 2px dashed #999 !important;
+ background-color: #eee;
+}
+
+.file-uploading {
+ background: url(loading-sm.gif) no-repeat center bottom 10px;
+ opacity: 0.65;
+}
+
+.file-zoom-fullscreen .modal-dialog {
+ min-width: 100%;
+ margin: 0;
+}
+
+.file-zoom-fullscreen .modal-content {
+ border-radius: 0;
+ box-shadow: none;
+ min-height: 100vh;
+}
+
+.file-zoom-fullscreen .kv-zoom-body {
+ overflow-y: auto;
+}
+
+.floating-buttons {
+ z-index: 3000;
+}
+
+.floating-buttons .btn-kv {
+ margin-left: 3px;
+ z-index: 3000;
+}
+
+.kv-zoom-actions .btn-kv {
+ margin-left: 3px;
+}
+
+.file-zoom-content {
+ text-align: center;
+ white-space: nowrap;
+ min-height: 300px;
+}
+
+.file-zoom-content:hover {
+ background: transparent;
+}
+
+.file-zoom-content > * {
+ display: inline-block;
+ vertical-align: middle;
+}
+
+.file-zoom-content .kv-spacer {
+ height: 100%;
+}
+
+.file-zoom-content .file-preview-image {
+ max-height: 100%;
+}
+
+.file-zoom-content .file-preview-video {
+ max-height: 100%;
+}
+
+.file-zoom-content > .file-object.type-image {
+ height: auto;
+ min-height: inherit;
+}
+
+.file-zoom-content > .file-object.type-audio {
+ width: auto;
+ height: 30px;
+}
+
+@media (min-width: 576px) {
+ .file-zoom-dialog .modal-dialog {
+ max-width: 500px;
+ }
+}
+
+@media (min-width: 992px) {
+ .file-zoom-dialog .modal-lg {
+ max-width: 800px;
+ }
+}
+
+@media (max-width: 767px) {
+ .file-preview-thumbnails {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-direction: column;
+ }
+
+ .file-zoom-dialog .modal-header {
+ flex-direction: column;
+ }
+}
+
+@media (max-width: 350px) {
+ .krajee-default.file-preview-frame:not([data-template="audio"]) .kv-file-content {
+ width: 160px;
+ }
+}
+
+@media (max-width: 420px) {
+ .krajee-default.file-preview-frame .kv-file-content.kv-pdf-rendered {
+ width: 100%;
+ }
+}
+
+.file-loading[dir=rtl]:before {
+ background: transparent url(loading.gif) top right no-repeat;
+ padding-left: 0;
+ padding-right: 20px;
+}
+
+.clickable .file-drop-zone-title {
+ cursor: pointer;
+}
+
+.file-sortable .file-drag-handle:hover {
+ opacity: 0.7;
+}
+
+.file-sortable .file-drag-handle {
+ cursor: grab;
+ opacity: 1;
+}
+
+.file-grabbing,
+.file-grabbing * {
+ cursor: not-allowed !important;
+}
+
+.file-grabbing .file-preview-thumbnails * {
+ cursor: grabbing !important;
+}
+
+.file-preview-frame.sortable-chosen {
+ background-color: #d9edf7;
+ border-color: #17a2b8;
+ box-shadow: none !important;
+}
+
+.file-preview .kv-zoom-cache {
+ display: none;
+}
\ No newline at end of file
diff --git a/alive-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.js b/alive-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.js
new file mode 100644
index 0000000..352f1e3
--- /dev/null
+++ b/alive-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.js
@@ -0,0 +1,6405 @@
+/*!
+ * bootstrap-fileinput v5.2.4
+ * http://plugins.krajee.com/file-input
+ *
+ * Author: Kartik Visweswaran
+ * Copyright: 2014 - 2021, Kartik Visweswaran, Krajee.com
+ *
+ * Licensed under the BSD-3-Clause
+ * https://github.com/kartik-v/bootstrap-fileinput/blob/master/LICENSE.md
+ */
+(function (factory) {
+ 'use strict';
+ if (typeof define === 'function' && define.amd) {
+ define(['jquery'], factory);
+ } else {
+ if (typeof module === 'object' && module.exports) {
+ //noinspection NpmUsedModulesInstalled
+ module.exports = factory(require('jquery'));
+ } else {
+ factory(window.jQuery);
+ }
+ }
+}(function ($) {
+ 'use strict';
+ $.fn.fileinputLocales = {};
+ $.fn.fileinputThemes = {};
+ if (!$.fn.fileinputBsVersion) {
+ $.fn.fileinputBsVersion = (window.Alert && window.Alert.VERSION) ||
+ (window.bootstrap && window.bootstrap.Alert && bootstrap.Alert.VERSION) || '3.x.x';
+ }
+ String.prototype.setTokens = function (replacePairs) {
+ var str = this.toString(), key, re;
+ for (key in replacePairs) {
+ if (replacePairs.hasOwnProperty(key)) {
+ re = new RegExp('\{' + key + '\}', 'g');
+ str = str.replace(re, replacePairs[key]);
+ }
+ }
+ return str;
+ };
+
+ if (!Array.prototype.flatMap) { // polyfill flatMap
+ Array.prototype.flatMap = function (lambda) {
+ return [].concat(this.map(lambda));
+ };
+ }
+
+ if (!document.currentScript) {
+ document.currentScript = function() {
+ var scripts = document.getElementsByTagName('script');
+ return scripts[scripts.length - 1];
+ }();
+ }
+
+ var $h, FileInput, getLoadingUrl = function () {
+ var src = document.currentScript.src, srcPath = src.substring(0, src.lastIndexOf("/"));
+ return srcPath + '/loading.gif'
+ };
+
+ // fileinput helper object for all global variables and internal helper methods
+ $h = {
+ FRAMES: '.kv-preview-thumb',
+ SORT_CSS: 'file-sortable',
+ INIT_FLAG: 'init-',
+ ZOOM_VAR: getLoadingUrl() + '?kvTemp__2873389129__=', // used to prevent 404 errors in URL parsing
+ OBJECT_PARAMS: '\n' +
+ '\n' +
+ '\n' +
+ '\n' +
+ '\n' +
+ '\n',
+ DEFAULT_PREVIEW: '\n' +
+ '{previewFileIcon}\n' +
+ '
',
+ MODAL_ID: 'kvFileinputModal',
+ MODAL_EVENTS: ['show', 'shown', 'hide', 'hidden', 'loaded'],
+ logMessages: {
+ ajaxError: '{status}: {error}. Error Details: {text}.',
+ badDroppedFiles: 'Error scanning dropped files!',
+ badExifParser: 'Error loading the piexif.js library. {details}',
+ badInputType: 'The input "type" must be set to "file" for initializing the "bootstrap-fileinput" plugin.',
+ exifWarning: 'To avoid this warning, either set "autoOrientImage" to "false" OR ensure you have loaded ' +
+ 'the "piexif.js" library correctly on your page before the "fileinput.js" script.',
+ invalidChunkSize: 'Invalid upload chunk size: "{chunkSize}". Resumable uploads are disabled.',
+ invalidThumb: 'Invalid thumb frame with id: "{id}".',
+ noResumableSupport: 'The browser does not support resumable or chunk uploads.',
+ noUploadUrl: 'The "uploadUrl" is not set. Ajax uploads and resumable uploads have been disabled.',
+ retryStatus: 'Retrying upload for chunk # {chunk} for {filename}... retry # {retry}.',
+ chunkQueueError: 'Could not push task to ajax pool for chunk index # {index}.',
+ resumableMaxRetriesReached: 'Maximum resumable ajax retries ({n}) reached.',
+ resumableRetryError: 'Could not retry the resumable request (try # {n})... aborting.',
+ resumableAborting: 'Aborting / cancelling the resumable request.',
+ resumableRequestError: 'Error processing resumable request. {msg}'
+
+ },
+ objUrl: window.URL || window.webkitURL,
+ isBs: function (ver) {
+ var chk = $.trim(($.fn.fileinputBsVersion || '') + '');
+ ver = parseInt(ver, 10);
+ if (!chk) {
+ return ver === 4;
+ }
+ return ver === parseInt(chk.charAt(0), 10);
+
+ },
+ defaultButtonCss: function (fill) {
+ return 'btn-default btn-' + (fill ? '' : 'outline-') + 'secondary';
+ },
+ now: function () {
+ return new Date().getTime();
+ },
+ round: function (num) {
+ num = parseFloat(num);
+ return isNaN(num) ? 0 : Math.floor(Math.round(num));
+ },
+ getArray: function (obj) {
+ var i, arr = [], len = obj && obj.length || 0;
+ for (i = 0; i < len; i++) {
+ arr.push(obj[i]);
+ }
+ return arr;
+ },
+ getFileRelativePath: function (file) {
+ /** @namespace file.relativePath */
+ /** @namespace file.webkitRelativePath */
+ return String(file.newPath || file.relativePath || file.webkitRelativePath || $h.getFileName(file) || null);
+
+ },
+ getFileId: function (file, generateFileId) {
+ var relativePath = $h.getFileRelativePath(file);
+ if (typeof generateFileId === 'function') {
+ return generateFileId(file);
+ }
+ if (!file) {
+ return null;
+ }
+ if (!relativePath) {
+ return null;
+ }
+ return (file.size + '_' + encodeURIComponent(relativePath).replace(/%/g, '_'));
+ },
+ getFrameSelector: function (id, selector) {
+ selector = selector || '';
+ return '[id="' + id + '"]' + selector;
+ },
+ getZoomSelector: function (id, selector) {
+ return $h.getFrameSelector('zoom-' + id, selector);
+ },
+ getFrameElement: function ($element, id, selector) {
+ return $element.find($h.getFrameSelector(id, selector));
+ },
+ getZoomElement: function ($element, id, selector) {
+ return $element.find($h.getZoomSelector(id, selector));
+ },
+ getElapsed: function (seconds) {
+ var delta = seconds, out = '', result = {}, structure = {
+ year: 31536000,
+ month: 2592000,
+ week: 604800, // uncomment row to ignore
+ day: 86400, // feel free to add your own row
+ hour: 3600,
+ minute: 60,
+ second: 1
+ };
+ $h.getObjectKeys(structure).forEach(function (key) {
+ result[key] = Math.floor(delta / structure[key]);
+ delta -= result[key] * structure[key];
+ });
+ $.each(result, function (key, value) {
+ if (value > 0) {
+ out += (out ? ' ' : '') + value + key.substring(0, 1);
+ }
+ });
+ return out;
+ },
+ debounce: function (func, delay) {
+ var inDebounce;
+ return function () {
+ var args = arguments, context = this;
+ clearTimeout(inDebounce);
+ inDebounce = setTimeout(function () {
+ func.apply(context, args);
+ }, delay);
+ };
+ },
+ stopEvent: function (e) {
+ e.stopPropagation();
+ e.preventDefault();
+ },
+ getFileName: function (file) {
+ /** @namespace file.fileName */
+ return file ? (file.fileName || file.name || '') : ''; // some confusion in different versions of Firefox
+ },
+ createObjectURL: function (data) {
+ if ($h.objUrl && $h.objUrl.createObjectURL && data) {
+ return $h.objUrl.createObjectURL(data);
+ }
+ return '';
+ },
+ revokeObjectURL: function (data) {
+ if ($h.objUrl && $h.objUrl.revokeObjectURL && data) {
+ $h.objUrl.revokeObjectURL(data);
+ }
+ },
+ compare: function (input, str, exact) {
+ return input !== undefined && (exact ? input === str : input.match(str));
+ },
+ isIE: function (ver) {
+ var div, status;
+ // check for IE versions < 11
+ if (navigator.appName !== 'Microsoft Internet Explorer') {
+ return false;
+ }
+ if (ver === 10) {
+ return new RegExp('msie\\s' + ver, 'i').test(navigator.userAgent);
+ }
+ div = document.createElement('div');
+ div.innerHTML = '';
+ status = div.getElementsByTagName('i').length;
+ document.body.appendChild(div);
+ div.parentNode.removeChild(div);
+ return status;
+ },
+ canOrientImage: function ($el) {
+ var $img = $(document.createElement('img')).css({width: '1px', height: '1px'}).insertAfter($el),
+ flag = $img.css('image-orientation');
+ $img.remove();
+ return !!flag;
+ },
+ canAssignFilesToInput: function () {
+ var input = document.createElement('input');
+ try {
+ input.type = 'file';
+ input.files = null;
+ return true;
+ } catch (err) {
+ return false;
+ }
+ },
+ getDragDropFolders: function (items) {
+ var i, item, len = items ? items.length : 0, folders = 0;
+ if (len > 0 && items[0].webkitGetAsEntry()) {
+ for (i = 0; i < len; i++) {
+ item = items[i].webkitGetAsEntry();
+ if (item && item.isDirectory) {
+ folders++;
+ }
+ }
+ }
+ return folders;
+ },
+ initModal: function ($modal) {
+ var $body = $('body');
+ if ($body.length) {
+ $modal.appendTo($body);
+ }
+ },
+ isFunction: function (v) {
+ return typeof v === 'function';
+ },
+ isEmpty: function (value, trim) {
+ if (value === undefined || value === null || value === '') {
+ return true;
+ }
+ if ($h.isString(value) && trim) {
+ return $.trim(value) === '';
+ }
+ if ($h.isArray(value)) {
+ return value.length === 0;
+ }
+ if ($.isPlainObject(value) && $.isEmptyObject(value)) {
+ return true
+ }
+ return false;
+ },
+ isArray: function (a) {
+ return Array.isArray(a) || Object.prototype.toString.call(a) === '[object Array]';
+ },
+ isString: function (a) {
+ return Object.prototype.toString.call(a) === '[object String]';
+ },
+ ifSet: function (needle, haystack, def) {
+ def = def || '';
+ return (haystack && typeof haystack === 'object' && needle in haystack) ? haystack[needle] : def;
+ },
+ cleanArray: function (arr) {
+ if (!(arr instanceof Array)) {
+ arr = [];
+ }
+ return arr.filter(function (e) {
+ return (e !== undefined && e !== null);
+ });
+ },
+ spliceArray: function (arr, index, reverseOrder) {
+ var i, j = 0, out = [], newArr;
+ if (!(arr instanceof Array)) {
+ return [];
+ }
+ newArr = $.extend(true, [], arr);
+ if (reverseOrder) {
+ newArr.reverse();
+ }
+ for (i = 0; i < newArr.length; i++) {
+ if (i !== index) {
+ out[j] = newArr[i];
+ j++;
+ }
+ }
+ if (reverseOrder) {
+ out.reverse();
+ }
+ return out;
+ },
+ getNum: function (num, def) {
+ def = def || 0;
+ if (typeof num === 'number') {
+ return num;
+ }
+ if (typeof num === 'string') {
+ num = parseFloat(num);
+ }
+ return isNaN(num) ? def : num;
+ },
+ hasFileAPISupport: function () {
+ return !!(window.File && window.FileReader);
+ },
+ hasDragDropSupport: function () {
+ var div = document.createElement('div');
+ /** @namespace div.draggable */
+ /** @namespace div.ondragstart */
+ /** @namespace div.ondrop */
+ return !$h.isIE(9) &&
+ (div.draggable !== undefined || (div.ondragstart !== undefined && div.ondrop !== undefined));
+ },
+ hasFileUploadSupport: function () {
+ return $h.hasFileAPISupport() && window.FormData;
+ },
+ hasBlobSupport: function () {
+ try {
+ return !!window.Blob && Boolean(new Blob());
+ } catch (e) {
+ return false;
+ }
+ },
+ hasArrayBufferViewSupport: function () {
+ try {
+ return new Blob([new Uint8Array(100)]).size === 100;
+ } catch (e) {
+ return false;
+ }
+ },
+ hasResumableUploadSupport: function () {
+ /** @namespace Blob.prototype.webkitSlice */
+ /** @namespace Blob.prototype.mozSlice */
+ return $h.hasFileUploadSupport() && $h.hasBlobSupport() && $h.hasArrayBufferViewSupport() &&
+ (!!Blob.prototype.webkitSlice || !!Blob.prototype.mozSlice || !!Blob.prototype.slice || false);
+ },
+ dataURI2Blob: function (dataURI) {
+ var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder ||
+ window.MSBlobBuilder, canBlob = $h.hasBlobSupport(), byteStr, arrayBuffer, intArray, i, mimeStr, bb,
+ canProceed = (canBlob || BlobBuilder) && window.atob && window.ArrayBuffer && window.Uint8Array;
+ if (!canProceed) {
+ return null;
+ }
+ if (dataURI.split(',')[0].indexOf('base64') >= 0) {
+ byteStr = atob(dataURI.split(',')[1]);
+ } else {
+ byteStr = decodeURIComponent(dataURI.split(',')[1]);
+ }
+ arrayBuffer = new ArrayBuffer(byteStr.length);
+ intArray = new Uint8Array(arrayBuffer);
+ for (i = 0; i < byteStr.length; i += 1) {
+ intArray[i] = byteStr.charCodeAt(i);
+ }
+ mimeStr = dataURI.split(',')[0].split(':')[1].split(';')[0];
+ if (canBlob) {
+ return new Blob([$h.hasArrayBufferViewSupport() ? intArray : arrayBuffer], {type: mimeStr});
+ }
+ bb = new BlobBuilder();
+ bb.append(arrayBuffer);
+ return bb.getBlob(mimeStr);
+ },
+ arrayBuffer2String: function (buffer) {
+ if (window.TextDecoder) {
+ return new TextDecoder('utf-8').decode(buffer);
+ }
+ var array = Array.prototype.slice.apply(new Uint8Array(buffer)), out = '', i = 0, len, c, char2, char3;
+ len = array.length;
+ while (i < len) {
+ c = array[i++];
+ switch (c >> 4) { // jshint ignore:line
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ // 0xxxxxxx
+ out += String.fromCharCode(c);
+ break;
+ case 12:
+ case 13:
+ // 110x xxxx 10xx xxxx
+ char2 = array[i++];
+ out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F)); // jshint ignore:line
+ break;
+ case 14:
+ // 1110 xxxx 10xx xxxx 10xx xxxx
+ char2 = array[i++];
+ char3 = array[i++];
+ out += String.fromCharCode(((c & 0x0F) << 12) | // jshint ignore:line
+ ((char2 & 0x3F) << 6) | // jshint ignore:line
+ ((char3 & 0x3F) << 0)); // jshint ignore:line
+ break;
+ }
+ }
+ return out;
+ },
+ isHtml: function (str) {
+ var a = document.createElement('div');
+ a.innerHTML = str;
+ for (var c = a.childNodes, i = c.length; i--;) {
+ if (c[i].nodeType === 1) {
+ return true;
+ }
+ }
+ return false;
+ },
+ isSvg: function (str) {
+ return str.match(/^\s*<\?xml/i) && (str.match(/' + str + '' + tag + '>'));
+ },
+ uniqId: function () {
+ return (new Date().getTime() + Math.floor(Math.random() * Math.pow(10, 15))).toString(36);
+ },
+ cspBuffer: {
+ CSP_ATTRIB: 'data-csp-01928735', // a randomly named temporary attribute to store the CSP elem id
+ domElementsStyles: {},
+ stash: function (htmlString) {
+ var self = this, outerDom = $.parseHTML('' + htmlString + '
'), $el = $(outerDom);
+ $el.find('[style]').each(function (key, elem) {
+ var $elem = $(elem), styleDeclaration = $elem[0].style, id = $h.uniqId(), styles = {};
+ if (styleDeclaration && styleDeclaration.length) {
+ $(styleDeclaration).each(function () {
+ styles[this] = styleDeclaration[this];
+ });
+ self.domElementsStyles[id] = styles;
+ $elem.removeAttr('style').attr(self.CSP_ATTRIB, id);
+ }
+ });
+ $el.filter('*').removeAttr('style'); // make sure all style attr are removed
+ var values = Object.values ? Object.values(outerDom) : Object.keys(outerDom).map(function (itm) {
+ return outerDom[itm];
+ });
+ return values.flatMap(function (elem) {
+ return elem.innerHTML;
+ }).join('');
+ },
+ apply: function (domElement) {
+ var self = this, $el = $(domElement);
+ $el.find('[' + self.CSP_ATTRIB + ']').each(function (key, elem) {
+ var $elem = $(elem), id = $elem.attr(self.CSP_ATTRIB), styles = self.domElementsStyles[id];
+ if (styles) {
+ $elem.css(styles);
+ }
+ $elem.removeAttr(self.CSP_ATTRIB);
+ });
+ self.domElementsStyles = {};
+ }
+ },
+ setHtml: function ($elem, htmlString) {
+ var buf = $h.cspBuffer;
+ $elem.html(buf.stash(htmlString));
+ buf.apply($elem);
+ return $elem;
+ },
+ htmlEncode: function (str, undefVal) {
+ if (str === undefined) {
+ return undefVal || null;
+ }
+ return str.replace(/&/g, '&')
+ .replace(//g, '>')
+ .replace(/"/g, '"')
+ .replace(/'/g, ''');
+ },
+ replaceTags: function (str, tags) {
+ var out = str;
+ if (!tags) {
+ return out;
+ }
+ $.each(tags, function (key, value) {
+ if (typeof value === 'function') {
+ value = value();
+ }
+ out = out.split(key).join(value);
+ });
+ return out;
+ },
+ cleanMemory: function ($thumb) {
+ var data = $thumb.is('img') ? $thumb.attr('src') : $thumb.find('source').attr('src');
+ $h.revokeObjectURL(data);
+ },
+ findFileName: function (filePath) {
+ var sepIndex = filePath.lastIndexOf('/');
+ if (sepIndex === -1) {
+ sepIndex = filePath.lastIndexOf('\\');
+ }
+ return filePath.split(filePath.substring(sepIndex, sepIndex + 1)).pop();
+ },
+ checkFullScreen: function () {
+ return document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement ||
+ document.msFullscreenElement;
+ },
+ toggleFullScreen: function (maximize) {
+ var doc = document, de = doc.documentElement, isFullScreen = $h.checkFullScreen();
+ if (de && maximize && !isFullScreen) {
+ if (de.requestFullscreen) {
+ de.requestFullscreen();
+ } else {
+ if (de.msRequestFullscreen) {
+ de.msRequestFullscreen();
+ } else {
+ if (de.mozRequestFullScreen) {
+ de.mozRequestFullScreen();
+ } else {
+ if (de.webkitRequestFullscreen) {
+ de.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);
+ }
+ }
+ }
+ }
+ } else {
+ if (isFullScreen) {
+ if (doc.exitFullscreen) {
+ doc.exitFullscreen();
+ } else {
+ if (doc.msExitFullscreen) {
+ doc.msExitFullscreen();
+ } else {
+ if (doc.mozCancelFullScreen) {
+ doc.mozCancelFullScreen();
+ } else {
+ if (doc.webkitExitFullscreen) {
+ doc.webkitExitFullscreen();
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ moveArray: function (arr, oldIndex, newIndex, reverseOrder) {
+ var newArr = $.extend(true, [], arr);
+ if (reverseOrder) {
+ newArr.reverse();
+ }
+ if (newIndex >= newArr.length) {
+ var k = newIndex - newArr.length;
+ while ((k--) + 1) {
+ newArr.push(undefined);
+ }
+ }
+ newArr.splice(newIndex, 0, newArr.splice(oldIndex, 1)[0]);
+ if (reverseOrder) {
+ newArr.reverse();
+ }
+ return newArr;
+ },
+ closeButton: function (css) {
+ css = ($h.isBs(5) ? 'btn-close' : 'close') + (css ? ' ' + css : '');
+ return '';
+ },
+ getRotation: function (value) {
+ switch (value) {
+ case 2:
+ return 'rotateY(180deg)';
+ case 3:
+ return 'rotate(180deg)';
+ case 4:
+ return 'rotate(180deg) rotateY(180deg)';
+ case 5:
+ return 'rotate(270deg) rotateY(180deg)';
+ case 6:
+ return 'rotate(90deg)';
+ case 7:
+ return 'rotate(90deg) rotateY(180deg)';
+ case 8:
+ return 'rotate(270deg)';
+ default:
+ return '';
+ }
+ },
+ setTransform: function (el, val) {
+ if (!el) {
+ return;
+ }
+ el.style.transform = val;
+ el.style.webkitTransform = val;
+ el.style['-moz-transform'] = val;
+ el.style['-ms-transform'] = val;
+ el.style['-o-transform'] = val;
+ },
+ getObjectKeys: function (obj) {
+ var keys = [];
+ if (obj) {
+ $.each(obj, function (key) {
+ keys.push(key);
+ });
+ }
+ return keys;
+ },
+ getObjectSize: function (obj) {
+ return $h.getObjectKeys(obj).length;
+ },
+ /**
+ * Small dependency injection for the task manager
+ * https://gist.github.com/fearphage/4341799
+ */
+ whenAll: function (array) {
+ var s = [].slice, resolveValues = arguments.length === 1 && $h.isArray(array) ? array : s.call(arguments),
+ deferred = $.Deferred(), i, failed = 0, value, length = resolveValues.length,
+ remaining = length, rejectContexts, rejectValues, resolveContexts, updateFunc;
+ rejectContexts = rejectValues = resolveContexts = Array(length);
+ updateFunc = function (index, contexts, values) {
+ return function () {
+ if (values !== resolveValues) {
+ failed++;
+ }
+ deferred.notifyWith(contexts[index] = this, values[index] = s.call(arguments));
+ if (!(--remaining)) {
+ deferred[(!failed ? 'resolve' : 'reject') + 'With'](contexts, values);
+ }
+ };
+ };
+ for (i = 0; i < length; i++) {
+ if ((value = resolveValues[i]) && $.isFunction(value.promise)) {
+ value.promise()
+ .done(updateFunc(i, resolveContexts, resolveValues))
+ .fail(updateFunc(i, rejectContexts, rejectValues));
+ } else {
+ deferred.notifyWith(this, value);
+ --remaining;
+ }
+ }
+ if (!remaining) {
+ deferred.resolveWith(resolveContexts, resolveValues);
+ }
+ return deferred.promise();
+ }
+ };
+ FileInput = function (element, options) {
+ var self = this;
+ self.$element = $(element);
+ self.$parent = self.$element.parent();
+ if (!self._validate()) {
+ return;
+ }
+ self.isPreviewable = $h.hasFileAPISupport();
+ self.isIE9 = $h.isIE(9);
+ self.isIE10 = $h.isIE(10);
+ if (self.isPreviewable || self.isIE9) {
+ self._init(options);
+ self._listen();
+ }
+ self.$element.removeClass('file-loading');
+ };
+
+ FileInput.prototype = {
+ constructor: FileInput,
+ _cleanup: function () {
+ var self = this;
+ self.reader = null;
+ self.clearFileStack();
+ self.fileBatchCompleted = true;
+ self.isError = false;
+ self.isDuplicateError = false;
+ self.isPersistentError = false;
+ self.cancelling = false;
+ self.paused = false;
+ self.lastProgress = 0;
+ self._initAjax();
+ },
+ _isAborted: function () {
+ var self = this;
+ return self.cancelling || self.paused;
+ },
+ _initAjax: function () {
+ var self = this, tm = self.taskManager = {
+ pool: {},
+ addPool: function (id) {
+ return (tm.pool[id] = new tm.TasksPool(id));
+ },
+ getPool: function (id) {
+ return tm.pool[id];
+ },
+ addTask: function (id, logic) { // add standalone task directly from task manager
+ return new tm.Task(id, logic);
+ },
+ TasksPool: function (id) {
+ var tp = this;
+ tp.id = id;
+ tp.cancelled = false;
+ tp.cancelledDeferrer = $.Deferred();
+ tp.tasks = {};
+ tp.addTask = function (id, logic) {
+ return (tp.tasks[id] = new tm.Task(id, logic));
+ };
+ tp.size = function () {
+ return $h.getObjectSize(tp.tasks);
+ };
+ tp.run = function (maxThreads) {
+ var i = 0, failed = false, task, tasksList = $h.getObjectKeys(tp.tasks).map(function (key) {
+ return tp.tasks[key];
+ }), tasksDone = [], deferred = $.Deferred(), enqueue, callback;
+
+ if (tp.cancelled) {
+ tp.cancelledDeferrer.resolve();
+ return deferred.reject();
+ }
+ // if run all at once
+ if (!maxThreads) {
+ var tasksDeferredList = $h.getObjectKeys(tp.tasks).map(function (key) {
+ return tp.tasks[key].deferred;
+ });
+ // when all are done
+ $h.whenAll(tasksDeferredList).done(function () {
+ var argv = $h.getArray(arguments);
+ if (!tp.cancelled) {
+ deferred.resolve.apply(null, argv);
+ tp.cancelledDeferrer.reject();
+ } else {
+ deferred.reject.apply(null, argv);
+ tp.cancelledDeferrer.resolve();
+ }
+ }).fail(function () {
+ var argv = $h.getArray(arguments);
+ deferred.reject.apply(null, argv);
+ if (!tp.cancelled) {
+ tp.cancelledDeferrer.reject();
+ } else {
+ tp.cancelledDeferrer.resolve();
+ }
+ });
+ // run all tasks
+ $.each(tp.tasks, function (id) {
+ task = tp.tasks[id];
+ task.run();
+ });
+ return deferred;
+ }
+ enqueue = function (task) {
+ $.when(task.deferred)
+ .fail(function () {
+ failed = true;
+ callback.apply(null, arguments);
+ })
+ .always(callback);
+ };
+ callback = function () {
+ var argv = $h.getArray(arguments);
+ // notify a task just ended
+ deferred.notify(argv);
+ tasksDone.push(argv);
+ if (tp.cancelled) {
+ deferred.reject.apply(null, tasksDone);
+ tp.cancelledDeferrer.resolve();
+ return;
+ }
+ if (tasksDone.length === tp.size()) {
+ if (failed) {
+ deferred.reject.apply(null, tasksDone);
+ } else {
+ deferred.resolve.apply(null, tasksDone);
+ }
+ }
+ // if there are any tasks remaining
+ if (tasksList.length) {
+ task = tasksList.shift();
+ enqueue(task);
+ task.run();
+ }
+ };
+ // run the first "maxThreads" tasks
+ while (tasksList.length && i++ < maxThreads) {
+ task = tasksList.shift();
+ enqueue(task);
+ task.run();
+ }
+ return deferred;
+ };
+ tp.cancel = function () {
+ tp.cancelled = true;
+ return tp.cancelledDeferrer;
+ };
+ },
+ Task: function (id, logic) {
+ var tk = this;
+ tk.id = id;
+ tk.deferred = $.Deferred();
+ tk.logic = logic;
+ tk.context = null;
+ tk.run = function () {
+ var argv = $h.getArray(arguments);
+ argv.unshift(tk.deferred); // add deferrer as first argument
+ logic.apply(tk.context, argv); // run task
+ return tk.deferred; // return deferrer
+ };
+ tk.runWithContext = function (context) {
+ tk.context = context;
+ return tk.run();
+ };
+ }
+ };
+ self.ajaxQueue = [];
+ self.ajaxRequests = [];
+ self.ajaxAborted = false;
+ },
+ _init: function (options, refreshMode) {
+ var self = this, f, $el = self.$element, $cont, t, tmp;
+ self.options = options;
+ self.canOrientImage = $h.canOrientImage($el);
+ $.each(options, function (key, value) {
+ switch (key) {
+ case 'minFileCount':
+ case 'maxFileCount':
+ case 'maxTotalFileCount':
+ case 'minFileSize':
+ case 'maxFileSize':
+ case 'maxFilePreviewSize':
+ case 'resizeQuality':
+ case 'resizeIfSizeMoreThan':
+ case 'progressUploadThreshold':
+ case 'initialPreviewCount':
+ case 'zoomModalHeight':
+ case 'minImageHeight':
+ case 'maxImageHeight':
+ case 'minImageWidth':
+ case 'maxImageWidth':
+ case 'bytesToKB':
+ self[key] = $h.getNum(value);
+ break;
+ default:
+ self[key] = value;
+ break;
+ }
+ });
+ if (!self.bytesToKB || self.bytesToKB <= 0) {
+ self.bytesToKB = 1024;
+ }
+ if (self.errorCloseButton === undefined) {
+ self.errorCloseButton = $h.closeButton('kv-error-close' + ($h.isBs(5) ? ' float-end' : ''));
+ }
+ if (self.maxTotalFileCount > 0 && self.maxTotalFileCount < self.maxFileCount) {
+ self.maxTotalFileCount = self.maxFileCount;
+ }
+ if (self.rtl) { // swap buttons for rtl
+ tmp = self.previewZoomButtonIcons.prev;
+ self.previewZoomButtonIcons.prev = self.previewZoomButtonIcons.next;
+ self.previewZoomButtonIcons.next = tmp;
+ }
+ // validate chunk threads to not exceed maxAjaxThreads
+ if (!isNaN(self.maxAjaxThreads) && self.maxAjaxThreads < self.resumableUploadOptions.maxThreads) {
+ self.resumableUploadOptions.maxThreads = self.maxAjaxThreads;
+ }
+ self._initFileManager();
+ if (typeof self.autoOrientImage === 'function') {
+ self.autoOrientImage = self.autoOrientImage();
+ }
+ if (typeof self.autoOrientImageInitial === 'function') {
+ self.autoOrientImageInitial = self.autoOrientImageInitial();
+ }
+ if (!refreshMode) {
+ self._cleanup();
+ }
+ self.duplicateErrors = [];
+ self.$form = $el.closest('form');
+ self._initTemplateDefaults();
+ self.uploadFileAttr = !$h.isEmpty($el.attr('name')) ? $el.attr('name') : 'file_data';
+ t = self._getLayoutTemplate('progress');
+ self.progressTemplate = t.replace('{class}', self.progressClass);
+ self.progressInfoTemplate = t.replace('{class}', self.progressInfoClass);
+ self.progressPauseTemplate = t.replace('{class}', self.progressPauseClass);
+ self.progressCompleteTemplate = t.replace('{class}', self.progressCompleteClass);
+ self.progressErrorTemplate = t.replace('{class}', self.progressErrorClass);
+ self.isDisabled = $el.attr('disabled') || $el.attr('readonly');
+ if (self.isDisabled) {
+ $el.attr('disabled', true);
+ }
+ self.isClickable = self.browseOnZoneClick && self.showPreview &&
+ (self.dropZoneEnabled || !$h.isEmpty(self.defaultPreviewContent));
+ self.isAjaxUpload = $h.hasFileUploadSupport() && !$h.isEmpty(self.uploadUrl);
+ self.dropZoneEnabled = $h.hasDragDropSupport() && self.dropZoneEnabled;
+ if (!self.isAjaxUpload) {
+ self.dropZoneEnabled = self.dropZoneEnabled && $h.canAssignFilesToInput();
+ }
+ self.slug = typeof options.slugCallback === 'function' ? options.slugCallback : self._slugDefault;
+ self.mainTemplate = self.showCaption ? self._getLayoutTemplate('main1') : self._getLayoutTemplate('main2');
+ self.captionTemplate = self._getLayoutTemplate('caption');
+ self.previewGenericTemplate = self._getPreviewTemplate('generic');
+ if (!self.imageCanvas && self.resizeImage && (self.maxImageWidth || self.maxImageHeight)) {
+ self.imageCanvas = document.createElement('canvas');
+ self.imageCanvasContext = self.imageCanvas.getContext('2d');
+ }
+ if ($h.isEmpty($el.attr('id'))) {
+ $el.attr('id', $h.uniqId());
+ }
+ self.namespace = '.fileinput_' + $el.attr('id').replace(/-/g, '_');
+ if (self.$container === undefined) {
+ self.$container = self._createContainer();
+ } else {
+ self._refreshContainer();
+ }
+ $cont = self.$container;
+ self.$dropZone = $cont.find('.file-drop-zone');
+ self.$progress = $cont.find('.kv-upload-progress');
+ self.$btnUpload = $cont.find('.fileinput-upload');
+ self.$captionContainer = $h.getElement(options, 'elCaptionContainer', $cont.find('.file-caption'));
+ self.$caption = $h.getElement(options, 'elCaptionText', $cont.find('.file-caption-name'));
+ if (!$h.isEmpty(self.msgPlaceholder)) {
+ f = $el.attr('multiple') ? self.filePlural : self.fileSingle;
+ self.$caption.attr('placeholder', self.msgPlaceholder.replace('{files}', f));
+ }
+ self.$captionIcon = self.$captionContainer.find('.file-caption-icon');
+ self.$previewContainer = $h.getElement(options, 'elPreviewContainer', $cont.find('.file-preview'));
+ self.$preview = $h.getElement(options, 'elPreviewImage', $cont.find('.file-preview-thumbnails'));
+ self.$previewStatus = $h.getElement(options, 'elPreviewStatus', $cont.find('.file-preview-status'));
+ self.$errorContainer = $h.getElement(options, 'elErrorContainer',
+ self.$previewContainer.find('.kv-fileinput-error'));
+ self._validateDisabled();
+ if (!$h.isEmpty(self.msgErrorClass)) {
+ $h.addCss(self.$errorContainer, self.msgErrorClass);
+ }
+ if (!refreshMode) {
+ self._resetErrors();
+ self.$errorContainer.hide();
+ self.previewInitId = 'thumb-' + $el.attr('id');
+ self._initPreviewCache();
+ self._initPreview(true);
+ self._initPreviewActions();
+ if (self.$parent.hasClass('file-loading')) {
+ self.$container.insertBefore(self.$parent);
+ self.$parent.remove();
+ }
+ } else {
+ if (!self._errorsExist()) {
+ self.$errorContainer.hide();
+ }
+ }
+ self._setFileDropZoneTitle();
+ if ($el.attr('disabled')) {
+ self.disable();
+ }
+ self._initZoom();
+ if (self.hideThumbnailContent) {
+ $h.addCss(self.$preview, 'hide-content');
+ }
+ },
+ _initFileManager: function () {
+ var self = this;
+ self.uploadStartTime = $h.now();
+ self.fileManager = {
+ stack: {},
+ filesProcessed: [],
+ errors: [],
+ loadedImages: {},
+ totalImages: 0,
+ totalFiles: null,
+ totalSize: null,
+ uploadedSize: 0,
+ stats: {},
+ bpsLog: [],
+ bps: 0,
+ initStats: function (id) {
+ var data = {started: $h.now()};
+ if (id) {
+ self.fileManager.stats[id] = data;
+ } else {
+ self.fileManager.stats = data;
+ }
+ },
+ getUploadStats: function (id, loaded, total) {
+ var fm = self.fileManager,
+ started = id ? fm.stats[id] && fm.stats[id].started || $h.now() : self.uploadStartTime,
+ elapsed = ($h.now() - started) / 1000, bps = Math.ceil(elapsed ? loaded / elapsed : 0),
+ pendingBytes = total - loaded, out, delay = fm.bpsLog.length ? self.bitrateUpdateDelay : 0;
+ setTimeout(function () {
+ var i, j = 0, n = 0, len, beg;
+ fm.bpsLog.push(bps);
+ fm.bpsLog.sort(function (a, b) {
+ return a - b;
+ });
+ len = fm.bpsLog.length;
+ beg = len > 10 ? len - 10 : Math.ceil(len / 2);
+ for (i = len; i > beg; i--) {
+ n = parseFloat(fm.bpsLog[i]);
+ j++;
+ }
+ fm.bps = (j > 0 ? n / j : 0) * 64;
+ }, delay);
+ out = {
+ fileId: id,
+ started: started,
+ elapsed: elapsed,
+ loaded: loaded,
+ total: total,
+ bps: fm.bps,
+ bitrate: self._getSize(fm.bps, self.bitRateUnits),
+ pendingBytes: pendingBytes
+ };
+ if (id) {
+ fm.stats[id] = out;
+ } else {
+ fm.stats = out;
+ }
+ return out;
+ },
+ exists: function (id) {
+ return $.inArray(id, self.fileManager.getIdList()) !== -1;
+ },
+ count: function () {
+ return self.fileManager.getIdList().length;
+ },
+ total: function () {
+ var fm = self.fileManager;
+ if (!fm.totalFiles) {
+ fm.totalFiles = fm.count();
+ }
+ return fm.totalFiles;
+ },
+ getTotalSize: function () {
+ var fm = self.fileManager;
+ if (fm.totalSize) {
+ return fm.totalSize;
+ }
+ fm.totalSize = 0;
+ $.each(self.getFileStack(), function (id, f) {
+ var size = parseFloat(f.size);
+ fm.totalSize += isNaN(size) ? 0 : size;
+ });
+ return fm.totalSize;
+ },
+ add: function (file, id) {
+ if (!id) {
+ id = self.fileManager.getId(file);
+ }
+ if (!id) {
+ return;
+ }
+ self.fileManager.stack[id] = {
+ file: file,
+ name: $h.getFileName(file),
+ relativePath: $h.getFileRelativePath(file),
+ size: file.size,
+ nameFmt: self._getFileName(file, ''),
+ sizeFmt: self._getSize(file.size)
+ };
+ },
+ remove: function ($thumb) {
+ var id = self._getThumbFileId($thumb);
+ self.fileManager.removeFile(id);
+ },
+ removeFile: function (id) {
+ var fm = self.fileManager;
+ if (!id) {
+ return;
+ }
+ delete fm.stack[id];
+ delete fm.loadedImages[id];
+ },
+ move: function (idFrom, idTo) {
+ var result = {}, stack = self.fileManager.stack;
+ if (!idFrom && !idTo || idFrom === idTo) {
+ return;
+ }
+ $.each(stack, function (k, v) {
+ if (k !== idFrom) {
+ result[k] = v;
+ }
+ if (k === idTo) {
+ result[idFrom] = stack[idFrom];
+ }
+ });
+ self.fileManager.stack = result;
+ },
+ list: function () {
+ var files = [];
+ $.each(self.getFileStack(), function (k, v) {
+ if (v && v.file) {
+ files.push(v.file);
+ }
+ });
+ return files;
+ },
+ isPending: function (id) {
+ return $.inArray(id, self.fileManager.filesProcessed) === -1 && self.fileManager.exists(id);
+ },
+ isProcessed: function () {
+ var filesProcessed = true, fm = self.fileManager;
+ $.each(self.getFileStack(), function (id) {
+ if (fm.isPending(id)) {
+ filesProcessed = false;
+ }
+ });
+ return filesProcessed;
+ },
+ clear: function () {
+ var fm = self.fileManager;
+ self.isDuplicateError = false;
+ self.isPersistentError = false;
+ fm.totalFiles = null;
+ fm.totalSize = null;
+ fm.uploadedSize = 0;
+ fm.stack = {};
+ fm.errors = [];
+ fm.filesProcessed = [];
+ fm.stats = {};
+ fm.bpsLog = [];
+ fm.bps = 0;
+ fm.clearImages();
+ },
+ clearImages: function () {
+ self.fileManager.loadedImages = {};
+ self.fileManager.totalImages = 0;
+ },
+ addImage: function (id, config) {
+ self.fileManager.loadedImages[id] = config;
+ },
+ removeImage: function (id) {
+ delete self.fileManager.loadedImages[id];
+ },
+ getImageIdList: function () {
+ return $h.getObjectKeys(self.fileManager.loadedImages);
+ },
+ getImageCount: function () {
+ return self.fileManager.getImageIdList().length;
+ },
+ getId: function (file) {
+ return self._getFileId(file);
+ },
+ getIndex: function (id) {
+ return self.fileManager.getIdList().indexOf(id);
+ },
+ getThumb: function (id) {
+ var $thumb = null;
+ self._getThumbs().each(function () {
+ var $t = $(this);
+ if (self._getThumbFileId($t) === id) {
+ $thumb = $t;
+ }
+ });
+ return $thumb;
+ },
+ getThumbIndex: function ($thumb) {
+ var id = self._getThumbFileId($thumb);
+ return self.fileManager.getIndex(id);
+ },
+ getIdList: function () {
+ return $h.getObjectKeys(self.fileManager.stack);
+ },
+ getFile: function (id) {
+ return self.fileManager.stack[id] || null;
+ },
+ getFileName: function (id, fmt) {
+ var file = self.fileManager.getFile(id);
+ if (!file) {
+ return '';
+ }
+ return fmt ? (file.nameFmt || '') : file.name || '';
+ },
+ getFirstFile: function () {
+ var ids = self.fileManager.getIdList(), id = ids && ids.length ? ids[0] : null;
+ return self.fileManager.getFile(id);
+ },
+ setFile: function (id, file) {
+ if (self.fileManager.getFile(id)) {
+ self.fileManager.stack[id].file = file;
+ } else {
+ self.fileManager.add(file, id);
+ }
+ },
+ setProcessed: function (id) {
+ self.fileManager.filesProcessed.push(id);
+ },
+ getProgress: function () {
+ var total = self.fileManager.total(), filesProcessed = self.fileManager.filesProcessed.length;
+ if (!total) {
+ return 0;
+ }
+ return Math.ceil(filesProcessed / total * 100);
+
+ },
+ setProgress: function (id, pct) {
+ var f = self.fileManager.getFile(id);
+ if (!isNaN(pct) && f) {
+ f.progress = pct;
+ }
+ }
+ };
+ },
+ _setUploadData: function (fd, config) {
+ var self = this;
+ $.each(config, function (key, value) {
+ var param = self.uploadParamNames[key] || key;
+ if ($h.isArray(value)) {
+ fd.append(param, value[0], value[1]);
+ } else {
+ fd.append(param, value);
+ }
+ });
+ },
+ _initResumableUpload: function () {
+ var self = this, opts = self.resumableUploadOptions, logs = $h.logMessages, rm, fm = self.fileManager;
+ if (!self.enableResumableUpload) {
+ return;
+ }
+ if (opts.fallback !== false && typeof opts.fallback !== 'function') {
+ opts.fallback = function (s) {
+ s._log(logs.noResumableSupport);
+ s.enableResumableUpload = false;
+ };
+ }
+ if (!$h.hasResumableUploadSupport() && opts.fallback !== false) {
+ opts.fallback(self);
+ return;
+ }
+ if (!self.uploadUrl && self.enableResumableUpload) {
+ self._log(logs.noUploadUrl);
+ self.enableResumableUpload = false;
+ return;
+
+ }
+ opts.chunkSize = parseFloat(opts.chunkSize);
+ if (opts.chunkSize <= 0 || isNaN(opts.chunkSize)) {
+ self._log(logs.invalidChunkSize, {chunkSize: opts.chunkSize});
+ self.enableResumableUpload = false;
+ return;
+ }
+ rm = self.resumableManager = {
+ init: function (id, f, index) {
+ rm.logs = [];
+ rm.stack = [];
+ rm.error = '';
+ rm.id = id;
+ rm.file = f.file;
+ rm.fileName = f.name;
+ rm.fileIndex = index;
+ rm.completed = false;
+ rm.lastProgress = 0;
+ if (self.showPreview) {
+ rm.$thumb = fm.getThumb(id) || null;
+ rm.$progress = rm.$btnDelete = null;
+ if (rm.$thumb && rm.$thumb.length) {
+ rm.$progress = rm.$thumb.find('.file-thumb-progress');
+ rm.$btnDelete = rm.$thumb.find('.kv-file-remove');
+ }
+ }
+ rm.chunkSize = opts.chunkSize * self.bytesToKB;
+ rm.chunkCount = rm.getTotalChunks();
+ },
+ setAjaxError: function (jqXHR, textStatus, errorThrown, isTest) {
+ if (jqXHR.responseJSON && jqXHR.responseJSON.error) {
+ errorThrown = jqXHR.responseJSON.error.toString();
+ }
+ if (!isTest) {
+ rm.error = errorThrown;
+ }
+ if (opts.showErrorLog) {
+ self._log(logs.ajaxError, {
+ status: jqXHR.status,
+ error: errorThrown,
+ text: jqXHR.responseText || ''
+ });
+ }
+ },
+ reset: function () {
+ rm.stack = [];
+ rm.chunksProcessed = {};
+ },
+ setProcessed: function (status) {
+ var id = rm.id, msg, $thumb = rm.$thumb, $prog = rm.$progress, hasThumb = $thumb && $thumb.length,
+ params = {id: hasThumb ? $thumb.attr('id') : '', index: fm.getIndex(id), fileId: id}, tokens,
+ skipErrorsAndProceed = self.resumableUploadOptions.skipErrorsAndProceed;
+ rm.completed = true;
+ rm.lastProgress = 0;
+ if (hasThumb) {
+ $thumb.removeClass('file-uploading');
+ }
+ if (status === 'success') {
+ fm.uploadedSize += rm.file.size;
+ if (self.showPreview) {
+ self._setProgress(101, $prog);
+ self._setThumbStatus($thumb, 'Success');
+ self._initUploadSuccess(rm.chunksProcessed[id].data, $thumb);
+ }
+ fm.removeFile(id);
+ delete rm.chunksProcessed[id];
+ self._raise('fileuploaded', [params.id, params.index, params.fileId]);
+ if (fm.isProcessed()) {
+ self._setProgress(101);
+ }
+ } else {
+ if (status !== 'cancel') {
+ if (self.showPreview) {
+ self._setThumbStatus($thumb, 'Error');
+ self._setPreviewError($thumb, true);
+ self._setProgress(101, $prog, self.msgProgressError);
+ self._setProgress(101, self.$progress, self.msgProgressError);
+ self.cancelling = !skipErrorsAndProceed;
+ }
+ if (!self.$errorContainer.find('li[data-file-id="' + params.fileId + '"]').length) {
+ tokens = {file: rm.fileName, max: opts.maxRetries, error: rm.error};
+ msg = self.msgResumableUploadRetriesExceeded.setTokens(tokens);
+ $.extend(params, tokens);
+ self._showFileError(msg, params, 'filemaxretries');
+ if (skipErrorsAndProceed) {
+ fm.removeFile(id);
+ delete rm.chunksProcessed[id];
+ if (fm.isProcessed()) {
+ self._setProgress(101);
+ }
+ }
+ }
+ }
+ }
+ if (fm.isProcessed()) {
+ rm.reset();
+ }
+ },
+ check: function () {
+ var status = true;
+ $.each(rm.logs, function (index, value) {
+ if (!value) {
+ status = false;
+ return false;
+ }
+ });
+ },
+ processedResumables: function () {
+ var logs = rm.logs, i, count = 0;
+ if (!logs || !logs.length) {
+ return 0;
+ }
+ for (i = 0; i < logs.length; i++) {
+ if (logs[i] === true) {
+ count++;
+ }
+ }
+ return count;
+ },
+ getUploadedSize: function () {
+ var size = rm.processedResumables() * rm.chunkSize;
+ return size > rm.file.size ? rm.file.size : size;
+ },
+ getTotalChunks: function () {
+ var chunkSize = parseFloat(rm.chunkSize);
+ if (!isNaN(chunkSize) && chunkSize > 0) {
+ return Math.ceil(rm.file.size / chunkSize);
+ }
+ return 0;
+ },
+ getProgress: function () {
+ var chunksProcessed = rm.processedResumables(), total = rm.chunkCount;
+ if (total === 0) {
+ return 0;
+ }
+ return Math.ceil(chunksProcessed / total * 100);
+ },
+ checkAborted: function (intervalId) {
+ if (self._isAborted()) {
+ clearInterval(intervalId);
+ self.unlock();
+ }
+ },
+ upload: function () {
+ var ids = fm.getIdList(), flag = 'new', intervalId;
+ intervalId = setInterval(function () {
+ var id;
+ rm.checkAborted(intervalId);
+ if (flag === 'new') {
+ self.lock();
+ flag = 'processing';
+ id = ids.shift();
+ fm.initStats(id);
+ if (fm.stack[id]) {
+ rm.init(id, fm.stack[id], fm.getIndex(id));
+ rm.processUpload();
+ }
+ }
+ if (!fm.isPending(id) && rm.completed) {
+ flag = 'new';
+ }
+ if (fm.isProcessed()) {
+ var $initThumbs = self.$preview.find('.file-preview-initial');
+ if ($initThumbs.length) {
+ $h.addCss($initThumbs, $h.SORT_CSS);
+ self._initSortable();
+ }
+ clearInterval(intervalId);
+ self._clearFileInput();
+ self.unlock();
+ setTimeout(function () {
+ var data = self.previewCache.data;
+ if (data) {
+ self.initialPreview = data.content;
+ self.initialPreviewConfig = data.config;
+ self.initialPreviewThumbTags = data.tags;
+ }
+ self._raise('filebatchuploadcomplete', [
+ self.initialPreview,
+ self.initialPreviewConfig,
+ self.initialPreviewThumbTags,
+ self._getExtraData()
+ ]);
+ }, self.processDelay);
+ }
+ }, self.processDelay);
+ },
+ uploadResumable: function () {
+ var i, pool, tm = self.taskManager, total = rm.chunkCount;
+ pool = tm.addPool(rm.id);
+ for (i = 0; i < total; i++) {
+ rm.logs[i] = !!(rm.chunksProcessed[rm.id] && rm.chunksProcessed[rm.id][i]);
+ if (!rm.logs[i]) {
+ rm.pushAjax(i, 0);
+ }
+ }
+ pool.run(opts.maxThreads)
+ .done(function () {
+ rm.setProcessed('success');
+ })
+ .fail(function () {
+ rm.setProcessed(pool.cancelled ? 'cancel' : 'error');
+ });
+ },
+ processUpload: function () {
+ var fd, f, id = rm.id, fnBefore, fnSuccess, fnError, fnComplete, outData;
+ if (!opts.testUrl) {
+ rm.uploadResumable();
+ return;
+ }
+ fd = new FormData();
+ f = fm.stack[id];
+ self._setUploadData(fd, {
+ fileId: id,
+ fileName: f.fileName,
+ fileSize: f.size,
+ fileRelativePath: f.relativePath,
+ chunkSize: rm.chunkSize,
+ chunkCount: rm.chunkCount
+ });
+ fnBefore = function (jqXHR) {
+ outData = self._getOutData(fd, jqXHR);
+ self._raise('filetestbeforesend', [id, fm, rm, outData]);
+ };
+ fnSuccess = function (data, textStatus, jqXHR) {
+ outData = self._getOutData(fd, jqXHR, data);
+ var pNames = self.uploadParamNames, chunksUploaded = pNames.chunksUploaded || 'chunksUploaded',
+ params = [id, fm, rm, outData];
+ if (!data[chunksUploaded] || !$h.isArray(data[chunksUploaded])) {
+ self._raise('filetesterror', params);
+ } else {
+ if (!rm.chunksProcessed[id]) {
+ rm.chunksProcessed[id] = {};
+ }
+ $.each(data[chunksUploaded], function (key, index) {
+ rm.logs[index] = true;
+ rm.chunksProcessed[id][index] = true;
+ });
+ rm.chunksProcessed[id].data = data;
+ self._raise('filetestsuccess', params);
+ }
+ rm.uploadResumable();
+ };
+ fnError = function (jqXHR, textStatus, errorThrown) {
+ outData = self._getOutData(fd, jqXHR);
+ self._raise('filetestajaxerror', [id, fm, rm, outData]);
+ rm.setAjaxError(jqXHR, textStatus, errorThrown, true);
+ rm.uploadResumable();
+ };
+ fnComplete = function () {
+ self._raise('filetestcomplete', [id, fm, rm, self._getOutData(fd)]);
+ };
+ self._ajaxSubmit(fnBefore, fnSuccess, fnComplete, fnError, fd, id, rm.fileIndex, opts.testUrl);
+ },
+ pushAjax: function (index, retry) {
+ var tm = self.taskManager, pool = tm.getPool(rm.id);
+ pool.addTask(pool.size() + 1, function (deferrer) {
+ // use fifo chunk stack
+ var arr = rm.stack.shift(), index;
+ index = arr[0];
+ if (!rm.chunksProcessed[rm.id] || !rm.chunksProcessed[rm.id][index]) {
+ rm.sendAjax(index, arr[1], deferrer);
+ } else {
+ self._log(logs.chunkQueueError, {index: index});
+ }
+ });
+ rm.stack.push([index, retry]);
+ },
+ sendAjax: function (index, retry, deferrer) {
+ var f, chunkSize = rm.chunkSize, id = rm.id, file = rm.file, $thumb = rm.$thumb,
+ msgs = $h.logMessages, $btnDelete = rm.$btnDelete, logError = function (msg, tokens) {
+ if (tokens) {
+ msg = msg.setTokens(tokens);
+ }
+ msg = msgs.resumableRequestError.setTokens({msg: msg});
+ self._log(msg);
+ deferrer.reject(msg);
+ };
+ if (rm.chunksProcessed[id] && rm.chunksProcessed[id][index]) {
+ return;
+ }
+ if (retry > opts.maxRetries) {
+ logError(msgs.resumableMaxRetriesReached, {n: opts.maxRetries});
+ rm.setProcessed('error');
+ return;
+ }
+ var fd, outData, fnBefore, fnSuccess, fnError, fnComplete, slice = file.slice ? 'slice' :
+ (file.mozSlice ? 'mozSlice' : (file.webkitSlice ? 'webkitSlice' : 'slice')),
+ blob = file[slice](chunkSize * index, chunkSize * (index + 1));
+ fd = new FormData();
+ f = fm.stack[id];
+ self._setUploadData(fd, {
+ chunkCount: rm.chunkCount,
+ chunkIndex: index,
+ chunkSize: chunkSize,
+ chunkSizeStart: chunkSize * index,
+ fileBlob: [blob, rm.fileName],
+ fileId: id,
+ fileName: rm.fileName,
+ fileRelativePath: f.relativePath,
+ fileSize: file.size,
+ retryCount: retry
+ });
+ if (rm.$progress && rm.$progress.length) {
+ rm.$progress.show();
+ }
+ fnBefore = function (jqXHR) {
+ outData = self._getOutData(fd, jqXHR);
+ if (self.showPreview) {
+ if (!$thumb.hasClass('file-preview-success')) {
+ self._setThumbStatus($thumb, 'Loading');
+ $h.addCss($thumb, 'file-uploading');
+ }
+ $btnDelete.attr('disabled', true);
+ }
+ self._raise('filechunkbeforesend', [id, index, retry, fm, rm, outData]);
+ };
+ fnSuccess = function (data, textStatus, jqXHR) {
+ if (self._isAborted()) {
+ logError(msgs.resumableAborting);
+ return;
+ }
+ outData = self._getOutData(fd, jqXHR, data);
+ var paramNames = self.uploadParamNames, chunkIndex = paramNames.chunkIndex || 'chunkIndex',
+ params = [id, index, retry, fm, rm, outData];
+ if (data.error) {
+ if (opts.showErrorLog) {
+ self._log(logs.retryStatus, {
+ retry: retry + 1,
+ filename: rm.fileName,
+ chunk: index
+ });
+ }
+ self._raise('filechunkerror', params);
+ rm.pushAjax(index, retry + 1);
+ rm.error = data.error;
+ logError(data.error);
+ } else {
+ rm.logs[data[chunkIndex]] = true;
+ if (!rm.chunksProcessed[id]) {
+ rm.chunksProcessed[id] = {};
+ }
+ rm.chunksProcessed[id][data[chunkIndex]] = true;
+ rm.chunksProcessed[id].data = data;
+ deferrer.resolve.call(null, data);
+ self._raise('filechunksuccess', params);
+ rm.check();
+ }
+ };
+ fnError = function (jqXHR, textStatus, errorThrown) {
+ if (self._isAborted()) {
+ logError(msgs.resumableAborting);
+ return;
+ }
+ outData = self._getOutData(fd, jqXHR);
+ rm.setAjaxError(jqXHR, textStatus, errorThrown);
+ self._raise('filechunkajaxerror', [id, index, retry, fm, rm, outData]);
+ rm.pushAjax(index, retry + 1); // push another task
+ logError(msgs.resumableRetryError, {n: retry - 1}); // resolve the current task
+ };
+ fnComplete = function () {
+ if (!self._isAborted()) {
+ self._raise('filechunkcomplete', [id, index, retry, fm, rm, self._getOutData(fd)]);
+ }
+ };
+ self._ajaxSubmit(fnBefore, fnSuccess, fnComplete, fnError, fd, id, rm.fileIndex);
+ }
+ };
+ rm.reset();
+ },
+ _initTemplateDefaults: function () {
+ var self = this, tMain1, tMain2, tPreview, tFileIcon, tClose, tCaption, tBtnDefault, tBtnLink, tBtnBrowse,
+ tModalMain, tModal, tProgress, tSize, tFooter, tActions, tActionDelete, tActionUpload, tActionDownload,
+ tActionZoom, tActionDrag, tIndicator, tTagBef, tTagBef1, tTagBef2, tTagAft, tGeneric, tHtml, tImage,
+ tText, tOffice, tGdocs, tVideo, tAudio, tFlash, tObject, tPdf, tOther, tStyle, tZoomCache, vDefaultDim,
+ tStats, tModalLabel, tDescClose, renderObject = function (type, mime) {
+ return '\n';
+ }, defBtnCss1 = 'btn btn-sm btn-kv ' + $h.defaultButtonCss();
+ tMain1 = '{preview}\n' +
+ '\n' +
+ '';
+ tMain2 = '{preview}\n\n\n' +
+ '{remove}\n{cancel}\n{upload}\n{browse}\n';
+ tPreview = '\n' +
+ ' {close}' +
+ '
\n' +
+ '
\n' +
+ '
\n' +
+ '
\n' +
+ '
\n' +
+ '
\n' +
+ '
';
+ tClose = $h.closeButton('fileinput-remove');
+ tFileIcon = '';
+ // noinspection HtmlUnknownAttribute
+ tCaption = '\n';
+ //noinspection HtmlUnknownAttribute
+ tBtnDefault = '';
+ //noinspection HtmlUnknownTarget,HtmlUnknownAttribute
+ tBtnLink = '{icon} {label}';
+ //noinspection HtmlUnknownAttribute
+ tBtnBrowse = '{icon} {label}
';
+ tModalLabel = $h.MODAL_ID + 'Label';
+ tModalMain = '';
+ tModal = '\n' +
+ '
\n' +
+ ' \n' +
+ '
\n' +
+ '
\n' + '{prev} {next}\n' +
+ '
\n' +
+ '
\n' +
+ '
\n';
+ tDescClose = '';
+ tProgress = '\n' +
+ '
\n' +
+ ' {status}\n' +
+ '
\n' +
+ '
{stats}';
+ tStats = '' +
+ '{pendingTime} ' +
+ '{uploadSpeed}' +
+ '
';
+ tSize = ' ({sizeText})';
+ tFooter = '';
+ tActions = '\n' +
+ ' \n' +
+ '
\n' +
+ '{drag}\n' +
+ '';
+ //noinspection HtmlUnknownAttribute
+ tActionDelete = '\n';
+ tActionUpload = '';
+ tActionDownload = '{downloadIcon}';
+ tActionZoom = '';
+ tActionDrag = '{dragIcon}';
+ tIndicator = '{indicator}
';
+ tTagBef = '\n';
+ tTagBef2 = tTagBef + ' title="{caption}">
\n';
+ tTagAft = '
{footer}\n{zoomCache}
\n';
+ tGeneric = '{content}\n';
+ tStyle = ' {style}';
+ tHtml = renderObject('html', 'text/html');
+ tText = renderObject('text', 'text/plain;charset=UTF-8');
+ tPdf = renderObject('pdf', 'application/pdf');
+ tImage = '
\n';
+ tOffice = '
';
+ tGdocs = '
';
+ tVideo = '
\n';
+ tAudio = '
\n';
+ tFlash = '
');y[2]&&($=$.replace("{var}",y[2][1"+$+"")),d=!1,C.$element.trigger("maxReached"+j)),g&&w&&(E.append(P(""+S+"
")),d=!1,C.$element.trigger("maxReachedGrp"+j)),setTimeout(function(){C.setSelected(r,!1)},10),E[0].classList.add("fadeOut"),setTimeout(function(){E.remove()},1050)}}}else c&&(c.selected=!1),h.selected=!0,C.setSelected(r,!0);!C.multiple||C.multiple&&1===C.options.maxOptions?C.$button.trigger("focus"):C.options.liveSearch&&C.$searchbox.trigger("focus"),d&&(!C.multiple&&a===s.selectedIndex||(T=[h.index,p.prop("selected"),l],C.$element.triggerNative("change")))}}),this.$menu.on("click","li."+V.DISABLED+" a, ."+V.POPOVERHEADER+", ."+V.POPOVERHEADER+" :not(.close)",function(e){e.currentTarget==this&&(e.preventDefault(),e.stopPropagation(),C.options.liveSearch&&!P(e.target).hasClass("close")?C.$searchbox.trigger("focus"):C.$button.trigger("focus"))}),this.$menuInner.on("click",".divider, .dropdown-header",function(e){e.preventDefault(),e.stopPropagation(),C.options.liveSearch?C.$searchbox.trigger("focus"):C.$button.trigger("focus")}),this.$menu.on("click","."+V.POPOVERHEADER+" .close",function(){C.$button.trigger("click")}),this.$searchbox.on("click",function(e){e.stopPropagation()}),this.$menu.on("click",".actions-btn",function(e){C.options.liveSearch?C.$searchbox.trigger("focus"):C.$button.trigger("focus"),e.preventDefault(),e.stopPropagation(),P(this).hasClass("bs-select-all")?C.selectAll():C.deselectAll()}),this.$button.on("focus"+j,function(e){var t=C.$element[0].getAttribute("tabindex");void 0!==t&&e.originalEvent&&e.originalEvent.isTrusted&&(this.setAttribute("tabindex",t),C.$element[0].setAttribute("tabindex",-1),C.selectpicker.view.tabindex=t)}).on("blur"+j,function(e){void 0!==C.selectpicker.view.tabindex&&e.originalEvent&&e.originalEvent.isTrusted&&(C.$element[0].setAttribute("tabindex",C.selectpicker.view.tabindex),this.setAttribute("tabindex",-1),C.selectpicker.view.tabindex=void 0)}),this.$element.on("change"+j,function(){C.render(),C.$element.trigger("changed"+j,T),T=null}).on("focus"+j,function(){C.options.mobile||C.$button[0].focus()})},liveSearchListener:function(){var u=this;this.$button.on("click.bs.dropdown.data-api",function(){u.$searchbox.val()&&(u.$searchbox.val(""),u.selectpicker.search.previousValue=void 0)}),this.$searchbox.on("click.bs.dropdown.data-api focus.bs.dropdown.data-api touchend.bs.dropdown.data-api",function(e){e.stopPropagation()}),this.$searchbox.on("input propertychange",function(){var e=u.$searchbox[0].value;if(u.selectpicker.search.elements=[],u.selectpicker.search.data=[],e){var t=[],i=e.toUpperCase(),s={},n=[],o=u._searchStyle(),r=u.options.liveSearchNormalize;r&&(i=w(i));for(var l=0;l=a.selectpicker.view.canHighlight.length&&(t=a.selectpicker.view.firstHighlightIndex),a.selectpicker.view.canHighlight[t+f]||(t=t+1+a.selectpicker.view.canHighlight.slice(t+f+1).indexOf(!0))),e.preventDefault();var m=f+t;e.which===B?0===f&&t===c.length-1?(a.$menuInner[0].scrollTop=a.$menuInner[0].scrollHeight,m=a.selectpicker.current.elements.length-1):d=(o=(n=a.selectpicker.current.data[m]).position-n.height)u+a.sizeInfo.menuInnerHeight),s=a.selectpicker.main.elements[v],a.activeIndex=b[x],a.focusItem(s),s&&s.firstChild.focus(),d&&(a.$menuInner[0].scrollTop=o),r.trigger("focus")}}i&&(e.which===D&&!a.selectpicker.keydown.keyHistory||e.which===L||e.which===H&&a.options.selectOnTab)&&(e.which!==D&&e.preventDefault(),a.options.liveSearch&&e.which===D||(a.$menuInner.find(".active a").trigger("click",!0),r.trigger("focus"),a.options.liveSearch||(e.preventDefault(),P(document).data("spaceSelect",!0))))}},mobile:function(){this.options.mobile=!0,this.$element[0].classList.add("mobile-device")},refresh:function(){var e=P.extend({},this.options,this.$element.data());this.options=e,this.checkDisabled(),this.buildData(),this.setStyle(),this.render(),this.buildList(),this.setWidth(),this.setSize(!0),this.$element.trigger("refreshed"+j)},hide:function(){this.$newElement.hide()},show:function(){this.$newElement.show()},remove:function(){this.$newElement.remove(),this.$element.remove()},destroy:function(){this.$newElement.before(this.$element).remove(),this.$bsContainer?this.$bsContainer.remove():this.$menu.remove(),this.selectpicker.view.titleOption&&this.selectpicker.view.titleOption.parentNode&&this.selectpicker.view.titleOption.parentNode.removeChild(this.selectpicker.view.titleOption),this.$element.off(j).removeData("selectpicker").removeClass("bs-select-hidden selectpicker"),P(window).off(j+"."+this.selectId)}};var J=P.fn.selectpicker;function Q(){if(P.fn.dropdown)return(P.fn.dropdown.Constructor._dataApiKeydownHandler||P.fn.dropdown.Constructor.prototype.keydown).apply(this,arguments)}P.fn.selectpicker=Z,P.fn.selectpicker.Constructor=Y,P.fn.selectpicker.noConflict=function(){return P.fn.selectpicker=J,this},P(document).off("keydown.bs.dropdown.data-api").on("keydown.bs.dropdown.data-api",':not(.bootstrap-select) > [data-toggle="dropdown"]',Q).on("keydown.bs.dropdown.data-api",":not(.bootstrap-select) > .dropdown-menu",Q).on("keydown"+j,'.bootstrap-select [data-toggle="dropdown"], .bootstrap-select [role="listbox"], .bootstrap-select .bs-searchbox input',Y.prototype.keydown).on("focusin.modal",'.bootstrap-select [data-toggle="dropdown"], .bootstrap-select [role="listbox"], .bootstrap-select .bs-searchbox input',function(e){e.stopPropagation()}),P(window).on("load"+j+".data-api",function(){P(".selectpicker").each(function(){var e=P(this);Z.call(e,e.data())})})}(e)});
\ No newline at end of file
diff --git a/alive-admin/src/main/resources/static/ajax/libs/bootstrap-table/bootstrap-table.min.css b/alive-admin/src/main/resources/static/ajax/libs/bootstrap-table/bootstrap-table.min.css
new file mode 100644
index 0000000..7e150cf
--- /dev/null
+++ b/alive-admin/src/main/resources/static/ajax/libs/bootstrap-table/bootstrap-table.min.css
@@ -0,0 +1,6 @@
+/**
+ * @author zhixin wen
+ * version: 1.19.1
+ * https://github.com/wenzhixin/bootstrap-table/
+ */
+.bootstrap-table .fixed-table-toolbar::after{content:"";display:block;clear:both}.bootstrap-table .fixed-table-toolbar .bs-bars,.bootstrap-table .fixed-table-toolbar .columns,.bootstrap-table .fixed-table-toolbar .search{position:relative;margin-top:10px;margin-bottom:10px}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group{display:inline-block;margin-left:-1px!important}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group>.btn{border-radius:0}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group:first-child>.btn{border-top-left-radius:4px;border-bottom-left-radius:4px}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group:last-child>.btn{border-top-right-radius:4px;border-bottom-right-radius:4px}.bootstrap-table .fixed-table-toolbar .columns .dropdown-menu{text-align:left;max-height:300px;overflow:auto;-ms-overflow-style:scrollbar;z-index:1001}.bootstrap-table .fixed-table-toolbar .columns label{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.428571429}.bootstrap-table .fixed-table-toolbar .columns-left{margin-right:5px}.bootstrap-table .fixed-table-toolbar .columns-right{margin-left:5px}.bootstrap-table .fixed-table-toolbar .pull-right .dropdown-menu{right:0;left:auto}.bootstrap-table .fixed-table-container{position:relative;clear:both}.bootstrap-table .fixed-table-container .table{width:100%;margin-bottom:0!important}.bootstrap-table .fixed-table-container .table td,.bootstrap-table .fixed-table-container .table th{vertical-align:middle;box-sizing:border-box}.bootstrap-table .fixed-table-container .table thead th{vertical-align:bottom;padding:0;margin:0}.bootstrap-table .fixed-table-container .table thead th:focus{outline:0 solid transparent}.bootstrap-table .fixed-table-container .table thead th.detail{width:30px}.bootstrap-table .fixed-table-container .table thead th .th-inner{padding:.75rem;vertical-align:bottom;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bootstrap-table .fixed-table-container .table thead th .sortable{cursor:pointer;background-position:right;background-repeat:no-repeat;padding-right:30px!important}.bootstrap-table .fixed-table-container .table thead th .both{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7X QMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC")}.bootstrap-table .fixed-table-container .table thead th .asc{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg==")}.bootstrap-table .fixed-table-container .table thead th .desc{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII= ")}.bootstrap-table .fixed-table-container .table tbody tr.selected td{background-color:rgba(0,0,0,.075)}.bootstrap-table .fixed-table-container .table tbody tr.no-records-found td{text-align:center}.bootstrap-table .fixed-table-container .table tbody tr .card-view{display:flex}.bootstrap-table .fixed-table-container .table tbody tr .card-view .card-view-title{font-weight:700;display:inline-block;min-width:30%;width:auto!important;text-align:left!important}.bootstrap-table .fixed-table-container .table tbody tr .card-view .card-view-value{width:100%!important}.bootstrap-table .fixed-table-container .table .bs-checkbox{text-align:center}.bootstrap-table .fixed-table-container .table .bs-checkbox label{margin-bottom:0}.bootstrap-table .fixed-table-container .table .bs-checkbox label input[type=checkbox],.bootstrap-table .fixed-table-container .table .bs-checkbox label input[type=radio]{margin:0 auto!important}.bootstrap-table .fixed-table-container .table.table-sm .th-inner{padding:.3rem}.bootstrap-table .fixed-table-container.fixed-height:not(.has-footer){border-bottom:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height.has-card-view{border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height .fixed-table-border{border-left:1px solid #dee2e6;border-right:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height .table thead th{border-bottom:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height .table-dark thead th{border-bottom:1px solid #32383e}.bootstrap-table .fixed-table-container .fixed-table-header{overflow:hidden}.bootstrap-table .fixed-table-container .fixed-table-body{overflow-x:auto;overflow-y:auto;height:100%}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading{align-items:center;background:#fff;display:flex;justify-content:center;position:absolute;bottom:0;width:100%;max-width:100%;z-index:1000;transition:visibility 0s,opacity .15s ease-in-out;opacity:0;visibility:hidden}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.open{visibility:visible;opacity:1}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap{align-items:baseline;display:flex;justify-content:center}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .loading-text{margin-right:6px}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap{align-items:center;display:flex;justify-content:center}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-dot,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::after,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::before{content:"";animation-duration:1.5s;animation-iteration-count:infinite;animation-name:LOADING;background:#212529;border-radius:50%;display:block;height:5px;margin:0 4px;opacity:0;width:5px}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-dot{animation-delay:.3s}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::after{animation-delay:.6s}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark{background:#212529}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-dot,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-wrap::after,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-wrap::before{background:#fff}.bootstrap-table .fixed-table-container .fixed-table-footer{overflow:hidden}.bootstrap-table .fixed-table-pagination::after{content:"";display:block;clear:both}.bootstrap-table .fixed-table-pagination>.pagination,.bootstrap-table .fixed-table-pagination>.pagination-detail{margin-top:10px;margin-bottom:10px}.bootstrap-table .fixed-table-pagination>.pagination-detail .pagination-info{line-height:34px;margin-right:5px}.bootstrap-table .fixed-table-pagination>.pagination-detail .page-list{display:inline-block}.bootstrap-table .fixed-table-pagination>.pagination-detail .page-list .btn-group{position:relative;display:inline-block;vertical-align:middle}.bootstrap-table .fixed-table-pagination>.pagination-detail .page-list .btn-group .dropdown-menu{margin-bottom:0}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination{margin:0}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.page-intermediate a{color:#c8c8c8}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.page-intermediate a::before{content:'\2B05'}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.page-intermediate a::after{content:'\27A1'}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.disabled a{pointer-events:none;cursor:default}.bootstrap-table.fullscreen{position:fixed;top:0;left:0;z-index:1050;width:100%!important;background:#fff;height:calc(100vh);overflow-y:scroll}.bootstrap-table.bootstrap4 .pagination-lg .page-link,.bootstrap-table.bootstrap5 .pagination-lg .page-link{padding:.5rem 1rem}.bootstrap-table.bootstrap5 .float-left{float:left}.bootstrap-table.bootstrap5 .float-right{float:right}div.fixed-table-scroll-inner{width:100%;height:200px}div.fixed-table-scroll-outer{top:0;left:0;visibility:hidden;width:200px;height:150px;overflow:hidden}@keyframes LOADING{0%{opacity:0}50%{opacity:1}to{opacity:0}}
\ No newline at end of file
diff --git a/alive-admin/src/main/resources/static/ajax/libs/bootstrap-table/bootstrap-table.min.js b/alive-admin/src/main/resources/static/ajax/libs/bootstrap-table/bootstrap-table.min.js
new file mode 100644
index 0000000..ac557c8
--- /dev/null
+++ b/alive-admin/src/main/resources/static/ajax/libs/bootstrap-table/bootstrap-table.min.js
@@ -0,0 +1,6 @@
+/**
+ * @author zhixin wen
+ * version: 1.19.1
+ * https://github.com/wenzhixin/bootstrap-table/
+ */
+function getRememberRowIds(t,e){return $.isArray(t)?props=$.map(t,function(t){return t[e]}):props=[t[e]],props}function addRememberRow(t,e){var i=null==table.options.uniqueId?table.options.columns[1].field:table.options.uniqueId,n=getRememberRowIds(t,i);-1==$.inArray(e[i],n)&&(t[t.length]=e)}function removeRememberRow(t,e){var i=null==table.options.uniqueId?table.options.columns[1].field:table.options.uniqueId,n=getRememberRowIds(t,i),o=$.inArray(e[i],n);-1!=o&&t.splice(o,1)}!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],e):(t="undefined"!=typeof globalThis?globalThis:t||self,t.BootstrapTable=e(t.jQuery))}(this,function(t){function e(t){return t&&"object"==typeof t&&"default" in t?t:{"default":t}}function i(t){return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function n(t,e){if(!(t instanceof e)){throw new TypeError("Cannot call a class as a function")}}function o(t,e){for(var i=0;it.length)&&(e=t.length);for(var i=0,n=Array(e);e>i;i++){n[i]=t[i]}return n}function p(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function g(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function v(t,e){var i;if("undefined"==typeof Symbol||null==t[Symbol.iterator]){if(Array.isArray(t)||(i=d(t))||e&&t&&"number"==typeof t.length){i&&(t=i);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,s=!0,r=!1;return{s:function(){i=t[Symbol.iterator]()},n:function(){var t=i.next();return s=t.done,t},e:function(t){r=!0,a=t},f:function(){try{s||null==i["return"]||i["return"]()}finally{if(r){throw a}}}}}function b(t,e){return e={exports:{}},t(e,e.exports),e.exports}function m(t,e){return RegExp(t,e)}var y=e(t),w="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},S=function(t){return t&&t.Math==Math&&t},x=S("object"==typeof globalThis&&globalThis)||S("object"==typeof window&&window)||S("object"==typeof self&&self)||S("object"==typeof w&&w)||function(){return this}()||Function("return this")(),k=function(t){try{return !!t()}catch(e){return !0}},O=!k(function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}),T={}.propertyIsEnumerable,C=Object.getOwnPropertyDescriptor,P=C&&!T.call({1:2},1),I=P?function(t){var e=C(this,t);return !!e&&e.enumerable}:T,A={f:I},$=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}},R={}.toString,E=function(t){return R.call(t).slice(8,-1)},j="".split,_=k(function(){return !Object("z").propertyIsEnumerable(0)})?function(t){return"String"==E(t)?j.call(t,""):Object(t)}:Object,N=function(t){if(void 0==t){throw TypeError("Can't call method on "+t)}return t},F=function(t){return _(N(t))},D=function(t){return"object"==typeof t?null!==t:"function"==typeof t},V=function(t,e){if(!D(t)){return t}var i,n;if(e&&"function"==typeof(i=t.toString)&&!D(n=i.call(t))){return n}if("function"==typeof(i=t.valueOf)&&!D(n=i.call(t))){return n}if(!e&&"function"==typeof(i=t.toString)&&!D(n=i.call(t))){return n}throw TypeError("Can't convert object to primitive value")},B={}.hasOwnProperty,L=function(t,e){return B.call(t,e)},H=x.document,M=D(H)&&D(H.createElement),U=function(t){return M?H.createElement(t):{}},q=!O&&!k(function(){return 7!=Object.defineProperty(U("div"),"a",{get:function(){return 7}}).a}),z=Object.getOwnPropertyDescriptor,W=O?z:function(t,e){if(t=F(t),e=V(e,!0),q){try{return z(t,e)}catch(i){}}return L(t,e)?$(!A.f.call(t,e),t[e]):void 0},G={f:W},K=function(t){if(!D(t)){throw TypeError(t+" is not an object")}return t},Y=Object.defineProperty,X=O?Y:function(t,e,i){if(K(t),e=V(e,!0),K(i),q){try{return Y(t,e,i)}catch(n){}}if("get" in i||"set" in i){throw TypeError("Accessors not supported")}return"value" in i&&(t[e]=i.value),t},J={f:X},Q=O?function(t,e,i){return J.f(t,e,$(1,i))}:function(t,e,i){return t[e]=i,t},Z=function(t,e){try{Q(x,t,e)}catch(i){x[t]=e}return e},tt="__core-js_shared__",et=x[tt]||Z(tt,{}),it=et,nt=Function.toString;"function"!=typeof it.inspectSource&&(it.inspectSource=function(t){return nt.call(t)});var ot,at,st,rt=it.inspectSource,lt=x.WeakMap,ct="function"==typeof lt&&/native code/.test(rt(lt)),ht=b(function(t){(t.exports=function(t,e){return it[t]||(it[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.10.1",mode:"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"})}),ut=0,dt=Math.random(),ft=function(t){return"Symbol("+((void 0===t?"":t)+"")+")_"+(++ut+dt).toString(36)},pt=ht("keys"),gt=function(t){return pt[t]||(pt[t]=ft(t))},vt={},bt=x.WeakMap,mt=function(t){return st(t)?at(t):ot(t,{})},yt=function(t){return function(e){var i;if(!D(e)||(i=at(e)).type!==t){throw TypeError("Incompatible receiver, "+t+" required")}return i}};if(ct){var wt=it.state||(it.state=new bt),St=wt.get,xt=wt.has,kt=wt.set;ot=function(t,e){return e.facade=t,kt.call(wt,t,e),e},at=function(t){return St.call(wt,t)||{}},st=function(t){return xt.call(wt,t)}}else{var Ot=gt("state");vt[Ot]=!0,ot=function(t,e){return e.facade=t,Q(t,Ot,e),e},at=function(t){return L(t,Ot)?t[Ot]:{}},st=function(t){return L(t,Ot)}}var Tt={set:ot,get:at,has:st,enforce:mt,getterFor:yt},Ct=b(function(t){var e=Tt.get,i=Tt.enforce,n=(String+"").split("String");(t.exports=function(t,e,o,a){var s,r=a?!!a.unsafe:!1,l=a?!!a.enumerable:!1,c=a?!!a.noTargetGet:!1;return"function"==typeof o&&("string"!=typeof e||L(o,"name")||Q(o,"name",e),s=i(o),s.source||(s.source=n.join("string"==typeof e?e:""))),t===x?void (l?t[e]=o:Z(e,o)):(r?!c&&t[e]&&(l=!0):delete t[e],void (l?t[e]=o:Q(t,e,o)))})(Function.prototype,"toString",function(){return"function"==typeof this&&e(this).source||rt(this)})}),Pt=x,It=function(t){return"function"==typeof t?t:void 0},At=function(t,e){return arguments.length<2?It(Pt[t])||It(x[t]):Pt[t]&&Pt[t][e]||x[t]&&x[t][e]},$t=Math.ceil,Rt=Math.floor,Et=function(t){return isNaN(t=+t)?0:(t>0?Rt:$t)(t)},jt=Math.min,_t=function(t){return t>0?jt(Et(t),9007199254740991):0},Nt=Math.max,Ft=Math.min,Dt=function(t,e){var i=Et(t);return 0>i?Nt(i+e,0):Ft(i,e)},Vt=function(t){return function(e,i,n){var o,a=F(e),s=_t(a.length),r=Dt(n,s);if(t&&i!=i){for(;s>r;){if(o=a[r++],o!=o){return !0}}}else{for(;s>r;r++){if((t||r in a)&&a[r]===i){return t||r||0}}}return !t&&-1}},Bt={includes:Vt(!0),indexOf:Vt(!1)},Lt=Bt.indexOf,Ht=function(t,e){var i,n=F(t),o=0,a=[];for(i in n){!L(vt,i)&&L(n,i)&&a.push(i)}for(;e.length>o;){L(n,i=e[o++])&&(~Lt(a,i)||a.push(i))}return a},Mt=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],Ut=Mt.concat("length","prototype"),qt=Object.getOwnPropertyNames||function(t){return Ht(t,Ut)},zt={f:qt},Wt=Object.getOwnPropertySymbols,Gt={f:Wt},Kt=At("Reflect","ownKeys")||function(t){var e=zt.f(K(t)),i=Gt.f;return i?e.concat(i(t)):e},Yt=function(t,e){for(var i=Kt(e),n=J.f,o=G.f,a=0;a0&&(!a.multiline||a.multiline&&"\n"!==t[a.lastIndex-1])&&(l="(?: "+l+")",h=" "+h,c++),i=RegExp("^(?:"+l+")",r)),Pe&&(i=RegExp("^"+l+"$(?!\\s)",r)),Te&&(e=a.lastIndex),n=xe.call(s?i:a,h),s?n?(n.input=n.input.slice(c),n[0]=n[0].slice(c),n.index=a.lastIndex,a.lastIndex+=n[0].length):a.lastIndex=0:Te&&n&&(a.lastIndex=a.global?n.index+n[0].length:e),Pe&&n&&n.length>1&&ke.call(n[0],i,function(){for(o=1;o=74)&&($e=je.match(/Chrome\/(\d+)/),$e&&(Re=$e[1])));var De=Re&&+Re,Ve=!!Object.getOwnPropertySymbols&&!k(function(){return !Symbol.sham&&(Ee?38===De:De>37&&41>De)}),Be=Ve&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,Le=ht("wks"),He=x.Symbol,Me=Be?He:He&&He.withoutSetter||ft,Ue=function(t){return(!L(Le,t)||!Ve&&"string"!=typeof Le[t])&&(Ve&&L(He,t)?Le[t]=He[t]:Le[t]=Me("Symbol."+t)),Le[t]},qe=Ue("species"),ze=!k(function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$")}),We=function(){return"$0"==="a".replace(/./,"$0")}(),Ge=Ue("replace"),Ke=function(){return/./[Ge]?""===/./[Ge]("a","$0"):!1}(),Ye=!k(function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var i="ab".split(t);return 2!==i.length||"a"!==i[0]||"b"!==i[1]}),Xe=function(t,e,i,n){var o=Ue(t),a=!k(function(){var e={};return e[o]=function(){return 7},7!=""[t](e)}),s=a&&!k(function(){var e=!1,i=/a/;return"split"===t&&(i={},i.constructor={},i.constructor[qe]=function(){return i},i.flags="",i[o]=/./[o]),i.exec=function(){return e=!0,null},i[o](""),!e});if(!a||!s||"replace"===t&&(!ze||!We||Ke)||"split"===t&&!Ye){var r=/./[o],l=i(o,""[t],function(t,e,i,n,o){return e.exec===RegExp.prototype.exec?a&&!o?{done:!0,value:r.call(e,i,n)}:{done:!0,value:t.call(i,e,n)}:{done:!1}},{REPLACE_KEEPS_$0:We,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:Ke}),c=l[0],h=l[1];Ct(String.prototype,t,c),Ct(RegExp.prototype,o,2==e?function(t,e){return h.call(t,this,e)}:function(t){return h.call(t,this)})}n&&Q(RegExp.prototype[o],"sham",!0)},Je=Ue("match"),Qe=function(t){var e;return D(t)&&(void 0!==(e=t[Je])?!!e:"RegExp"==E(t))},Ze=function(t){if("function"!=typeof t){throw TypeError(t+" is not a function")}return t},ti=Ue("species"),ei=function(t,e){var i,n=K(t).constructor;return void 0===n||void 0==(i=K(n)[ti])?e:Ze(i)},ii=function(t){return function(e,i){var n,o,a=N(e)+"",s=Et(i),r=a.length;return 0>s||s>=r?t?"":void 0:(n=a.charCodeAt(s),55296>n||n>56319||s+1===r||(o=a.charCodeAt(s+1))<56320||o>57343?t?a.charAt(s):n:t?a.slice(s,s+2):(n-55296<<10)+(o-56320)+65536)}},ni={codeAt:ii(!1),charAt:ii(!0)},oi=ni.charAt,ai=function(t,e,i){return e+(i?oi(t,e).length:1)},si=function(t,e){var i=t.exec;if("function"==typeof i){var n=i.call(t,e);if("object"!=typeof n){throw TypeError("RegExp exec method returned something other than an Object or null")}return n}if("RegExp"!==E(t)){throw TypeError("RegExp#exec called on incompatible receiver")}return Ae.call(t,e)},ri=Se.UNSUPPORTED_Y,li=[].push,ci=Math.min,hi=4294967295;Xe("split",2,function(t,e,i){var n;return n="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(t,i){var n=N(this)+"",o=void 0===i?hi:i>>>0;if(0===o){return[]}if(void 0===t){return[n]}if(!Qe(t)){return e.call(n,t,o)}for(var a,s,r,l=[],c=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),h=0,u=RegExp(t.source,c+"g");(a=Ae.call(u,n))&&(s=u.lastIndex,!(s>h&&(l.push(n.slice(h,a.index)),a.length>1&&a.index=o)));){u.lastIndex===a.index&&u.lastIndex++}return h===n.length?(r||!u.test(""))&&l.push(""):l.push(n.slice(h)),l.length>o?l.slice(0,o):l}:"0".split(void 0,0).length?function(t,i){return void 0===t&&0===i?[]:e.call(this,t,i)}:e,[function(e,i){var o=N(this),a=void 0==e?void 0:e[t];return void 0!==a?a.call(e,o,i):n.call(o+"",e,i)},function(t,o){var a=i(n,t,this,o,n!==e);if(a.done){return a.value}var s=K(t),r=this+"",l=ei(s,RegExp),c=s.unicode,h=(s.ignoreCase?"i":"")+(s.multiline?"m":"")+(s.unicode?"u":"")+(ri?"g":"y"),u=new l(ri?"^(?:"+s.source+")":s,h),d=void 0===o?hi:o>>>0;if(0===d){return[]}if(0===r.length){return null===si(u,r)?[r]:[]}for(var f=0,p=0,g=[];ps;){i=o[s++],(!O||di.call(n,i))&&r.push(t?[i,n[i]]:n[i])}return r}},pi={entries:fi(!0),values:fi(!1)},gi=pi.entries;oe({target:"Object",stat:!0},{entries:function(t){return gi(t)}});var vi,bi=O?Object.defineProperties:function(t,e){K(t);for(var i,n=ui(e),o=n.length,a=0;o>a;){J.f(t,i=n[a++],e[i])}return t},mi=At("document","documentElement"),yi=">",wi="<",Si="prototype",xi="script",ki=gt("IE_PROTO"),Oi=function(){},Ti=function(t){return wi+xi+yi+t+wi+"/"+xi+yi},Ci=function(t){t.write(Ti("")),t.close();var e=t.parentWindow.Object;return t=null,e},Pi=function(){var t,e=U("iframe"),i="java"+xi+":";return e.style.display="none",mi.appendChild(e),e.src=i+"",t=e.contentWindow.document,t.open(),t.write(Ti("document.F=Object")),t.close(),t.F},Ii=function(){try{vi=document.domain&&new ActiveXObject("htmlfile")}catch(t){}Ii=vi?Ci(vi):Pi();for(var e=Mt.length;e--;){delete Ii[Si][Mt[e]]}return Ii()};vt[ki]=!0;var Ai=Object.create||function(t,e){var i;return null!==t?(Oi[Si]=K(t),i=new Oi,Oi[Si]=null,i[ki]=t):i=Ii(),void 0===e?i:bi(i,e)},$i=Ue("unscopables"),Ri=Array.prototype;void 0==Ri[$i]&&J.f(Ri,$i,{configurable:!0,value:Ai(null)});var Ei=function(t){Ri[$i][t]=!0},ji=Bt.includes;oe({target:"Array",proto:!0},{includes:function(t){return ji(this,t,arguments.length>1?arguments[1]:void 0)}}),Ei("includes");var _i=Array.isArray||function(t){return"Array"==E(t)},Ni=function(t){return Object(N(t))},Fi=function(t,e,i){var n=V(e);n in t?J.f(t,n,$(0,i)):t[n]=i},Di=Ue("species"),Vi=function(t,e){var i;return _i(t)&&(i=t.constructor,"function"!=typeof i||i!==Array&&!_i(i.prototype)?D(i)&&(i=i[Di],null===i&&(i=void 0)):i=void 0),new (void 0===i?Array:i)(0===e?0:e)},Bi=Ue("species"),Li=function(t){return De>=51||!k(function(){var e=[],i=e.constructor={};return i[Bi]=function(){return{foo:1}},1!==e[t](Boolean).foo})},Hi=Ue("isConcatSpreadable"),Mi=9007199254740991,Ui="Maximum allowed index exceeded",qi=De>=51||!k(function(){var t=[];return t[Hi]=!1,t.concat()[0]!==t}),zi=Li("concat"),Wi=function(t){if(!D(t)){return !1}var e=t[Hi];return void 0!==e?!!e:_i(t)},Gi=!qi||!zi;oe({target:"Array",proto:!0,forced:Gi},{concat:function(t){var e,i,n,o,a,s=Ni(this),r=Vi(s,0),l=0;for(e=-1,n=arguments.length;n>e;e++){if(a=-1===e?s:arguments[e],Wi(a)){if(o=_t(a.length),l+o>Mi){throw TypeError(Ui)}for(i=0;o>i;i++,l++){i in a&&Fi(r,l,a[i])}}else{if(l>=Mi){throw TypeError(Ui)}Fi(r,l++,a)}}return r.length=l,r}});var Ki=function(t,e,i){if(Ze(t),void 0===e){return t}switch(i){case 0:return function(){return t.call(e)};case 1:return function(i){return t.call(e,i)};case 2:return function(i,n){return t.call(e,i,n)};case 3:return function(i,n,o){return t.call(e,i,n,o)}}return function(){return t.apply(e,arguments)}},Yi=[].push,Xi=function(t){var e=1==t,i=2==t,n=3==t,o=4==t,a=6==t,s=7==t,r=5==t||a;return function(l,c,h,u){for(var d,f,p=Ni(l),g=_(p),v=Ki(c,h,3),b=_t(g.length),m=0,y=u||Vi,w=e?y(l,b):i||s?y(l,0):void 0;b>m;m++){if((r||m in g)&&(d=g[m],f=v(d,m,p),t)){if(e){w[m]=f}else{if(f){switch(t){case 3:return !0;case 5:return d;case 6:return m;case 2:Yi.call(w,d)}}else{switch(t){case 4:return !1;case 7:Yi.call(w,d)}}}}}return a?-1:n||o?o:w}},Ji={forEach:Xi(0),map:Xi(1),filter:Xi(2),some:Xi(3),every:Xi(4),find:Xi(5),findIndex:Xi(6),filterOut:Xi(7)},Qi=Ji.find,Zi="find",tn=!0;Zi in []&&Array(1)[Zi](function(){tn=!1}),oe({target:"Array",proto:!0,forced:tn},{find:function(t){return Qi(this,t,arguments.length>1?arguments[1]:void 0)}}),Ei(Zi);var en=function(t){if(Qe(t)){throw TypeError("The method doesn't accept regular expressions")}return t},nn=Ue("match"),on=function(t){var e=/./;try{"/./"[t](e)}catch(i){try{return e[nn]=!1,"/./"[t](e)}catch(n){}}return !1};oe({target:"String",proto:!0,forced:!on("includes")},{includes:function(t){return !!~(N(this)+"").indexOf(en(t),arguments.length>1?arguments[1]:void 0)}});var an={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0},sn=Ji.forEach,rn=pe("forEach"),ln=rn?[].forEach:function(t){return sn(this,t,arguments.length>1?arguments[1]:void 0)};for(var cn in an){var hn=x[cn],un=hn&&hn.prototype;if(un&&un.forEach!==ln){try{Q(un,"forEach",ln)}catch(dn){un.forEach=ln}}}var fn=he.trim,pn=x.parseFloat,gn=1/pn(ae+"-0")!==-(1/0),vn=gn?function(t){var e=fn(t+""),i=pn(e);return 0===i&&"-"==e.charAt(0)?-0:i}:pn;oe({global:!0,forced:parseFloat!=vn},{parseFloat:vn});var bn=Bt.indexOf,mn=[].indexOf,yn=!!mn&&1/[1].indexOf(1,-0)<0,wn=pe("indexOf");oe({target:"Array",proto:!0,forced:yn||!wn},{indexOf:function(t){return yn?mn.apply(this,arguments)||0:bn(this,t,arguments.length>1?arguments[1]:void 0)}});var Sn=[],xn=Sn.sort,kn=k(function(){Sn.sort(void 0)}),On=k(function(){Sn.sort(null)}),Tn=pe("sort"),Cn=kn||!On||!Tn;oe({target:"Array",proto:!0,forced:Cn},{sort:function(t){return void 0===t?xn.call(Ni(this)):xn.call(Ni(this),Ze(t))}});var Pn=Math.floor,In="".replace,An=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,$n=/\$([$&'`]|\d{1,2})/g,Rn=function(t,e,i,n,o,a){var s=i+t.length,r=n.length,l=$n;return void 0!==o&&(o=Ni(o),l=An),In.call(a,l,function(a,l){var c;switch(l.charAt(0)){case"$":return"$";case"&":return t;case"`":return e.slice(0,i);case"'":return e.slice(s);case"<":c=o[l.slice(1,-1)];break;default:var h=+l;if(0===h){return a}if(h>r){var u=Pn(h/10);return 0===u?a:r>=u?void 0===n[u-1]?l.charAt(1):n[u-1]+l.charAt(1):a}c=n[h-1]}return void 0===c?"":c})},En=Math.max,jn=Math.min,_n=function(t){return void 0===t?t:t+""};Xe("replace",2,function(t,e,i,n){var o=n.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,a=n.REPLACE_KEEPS_$0,s=o?"$":"$0";return[function(i,n){var o=N(this),a=void 0==i?void 0:i[t];return void 0!==a?a.call(i,o,n):e.call(o+"",i,n)},function(t,n){if(!o&&a||"string"==typeof n&&-1===n.indexOf(s)){var r=i(e,t,this,n);if(r.done){return r.value}}var l=K(t),c=this+"",h="function"==typeof n;h||(n+="");var u=l.global;if(u){var d=l.unicode;l.lastIndex=0}for(var f=[];;){var p=si(l,c);if(null===p){break}if(f.push(p),!u){break}var g=p[0]+"";""===g&&(l.lastIndex=ai(c,_t(l.lastIndex),d))}for(var v="",b=0,m=0;m=b&&(v+=c.slice(b,w)+T,b=w+y.length)}return v+c.slice(b)}]});var Nn=Object.assign,Fn=Object.defineProperty,Dn=!Nn||k(function(){if(O&&1!==Nn({b:1},Nn(Fn({},"a",{enumerable:!0,get:function(){Fn(this,"b",{value:3,enumerable:!1})}}),{b:2})).b){return !0}var t={},e={},i=Symbol(),n="abcdefghijklmnopqrst";return t[i]=7,n.split("").forEach(function(t){e[t]=t}),7!=Nn({},t)[i]||ui(Nn({},e)).join("")!=n})?function(t,e){for(var i=Ni(t),n=arguments.length,o=1,a=Gt.f,s=A.f;n>o;){for(var r,l=_(arguments[o++]),c=a?ui(l).concat(a(l)):ui(l),h=c.length,u=0;h>u;){r=c[u++],(!O||s.call(l,r))&&(i[r]=l[r])}}return i}:Nn;oe({target:"Object",stat:!0,forced:Object.assign!==Dn},{assign:Dn});var Vn=Ji.filter,Bn=Li("filter");oe({target:"Array",proto:!0,forced:!Bn},{filter:function(t){return Vn(this,t,arguments.length>1?arguments[1]:void 0)}});var Ln=Object.is||function(t,e){return t===e?0!==t||1/t===1/e:t!=t&&e!=e};Xe("search",1,function(t,e,i){return[function(e){var i=N(this),n=void 0==e?void 0:e[t];return void 0!==n?n.call(e,i):RegExp(e)[t](i+"")},function(t){var n=i(e,t,this);if(n.done){return n.value}var o=K(t),a=this+"",s=o.lastIndex;Ln(s,0)||(o.lastIndex=0);var r=si(o,a);return Ln(o.lastIndex,s)||(o.lastIndex=s),null===r?-1:r.index}]});var Hn=he.trim,Mn=x.parseInt,Un=/^[+-]?0[Xx]/,qn=8!==Mn(ae+"08")||22!==Mn(ae+"0x16"),zn=qn?function(t,e){var i=Hn(t+"");return Mn(i,e>>>0||(Un.test(i)?16:10))}:Mn;oe({global:!0,forced:parseInt!=zn},{parseInt:zn});var Wn=Ji.map,Gn=Li("map");oe({target:"Array",proto:!0,forced:!Gn},{map:function(t){return Wn(this,t,arguments.length>1?arguments[1]:void 0)}});var Kn=Ji.findIndex,Yn="findIndex",Xn=!0;Yn in []&&Array(1)[Yn](function(){Xn=!1}),oe({target:"Array",proto:!0,forced:Xn},{findIndex:function(t){return Kn(this,t,arguments.length>1?arguments[1]:void 0)}}),Ei(Yn);var Jn=function(t){if(!D(t)&&null!==t){throw TypeError("Can't set "+(t+"")+" as a prototype")}return t},Qn=Object.setPrototypeOf||("__proto__" in {}?function(){var t,e=!1,i={};try{t=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set,t.call(i,[]),e=i instanceof Array}catch(n){}return function(i,n){return K(i),Jn(n),e?t.call(i,n):i.__proto__=n,i}}():void 0),Zn=function(t,e,i){var n,o;return Qn&&"function"==typeof(n=e.constructor)&&n!==i&&D(o=n.prototype)&&o!==i.prototype&&Qn(t,o),t},to=Ue("species"),eo=function(t){var e=At(t),i=J.f;O&&e&&!e[to]&&i(e,to,{configurable:!0,get:function(){return this}})},io=J.f,no=zt.f,oo=Tt.set,ao=Ue("match"),so=x.RegExp,ro=so.prototype,lo=/a/g,co=/a/g,ho=new so(lo)!==lo,uo=Se.UNSUPPORTED_Y,fo=O&&ie("RegExp",!ho||uo||k(function(){return co[ao]=!1,so(lo)!=lo||so(co)==co||"/a/i"!=so(lo,"i")}));if(fo){for(var po=function(t,e){var i,n=this instanceof po,o=Qe(t),a=void 0===e;if(!n&&o&&t.constructor===po&&a){return t}ho?o&&!a&&(t=t.source):t instanceof po&&(a&&(e=me.call(t)),t=t.source),uo&&(i=!!e&&e.indexOf("y")>-1,i&&(e=e.replace(/y/g,"")));var s=Zn(ho?new so(t,e):so(t,e),n?this:ro,po);return uo&&i&&oo(s,{sticky:i}),s},go=(function(t){t in po||io(po,t,{configurable:!0,get:function(){return so[t]},set:function(e){so[t]=e}})}),vo=no(so),bo=0;vo.length>bo;){go(vo[bo++])}ro.constructor=po,po.prototype=ro,Ct(x,"RegExp",po)}eo("RegExp");var mo="toString",yo=RegExp.prototype,wo=yo[mo],So=k(function(){return"/a/b"!=wo.call({source:"a",flags:"b"})}),xo=wo.name!=mo;(So||xo)&&Ct(RegExp.prototype,mo,function(){var t=K(this),e=t.source+"",i=t.flags,n=(void 0===i&&t instanceof RegExp&&!("flags" in yo)?me.call(t):i)+"";return"/"+e+"/"+n},{unsafe:!0});var ko=Ue("toStringTag"),Oo={};Oo[ko]="z";var To=Oo+""=="[object z]",Co=Ue("toStringTag"),Po="Arguments"==E(function(){return arguments}()),Io=function(t,e){try{return t[e]}catch(i){}},Ao=To?E:function(t){var e,i,n;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(i=Io(e=Object(t),Co))?i:Po?E(e):"Object"==(n=E(e))&&"function"==typeof e.callee?"Arguments":n},$o=To?{}.toString:function(){return"[object "+Ao(this)+"]"};To||Ct(Object.prototype,"toString",$o,{unsafe:!0});var Ro=Li("slice"),Eo=Ue("species"),jo=[].slice,_o=Math.max;oe({target:"Array",proto:!0,forced:!Ro},{slice:function(t,e){var i,n,o,a=F(this),s=_t(a.length),r=Dt(t,s),l=Dt(void 0===e?s:e,s);if(_i(a)&&(i=a.constructor,"function"!=typeof i||i!==Array&&!_i(i.prototype)?D(i)&&(i=i[Eo],null===i&&(i=void 0)):i=void 0,i===Array||void 0===i)){return jo.call(a,r,l)}for(n=new (void 0===i?Array:i)(_o(l-r,0)),o=0;l>r;r++,o++){r in a&&Fi(n,o,a[r])}return n.length=o,n}});var No,Fo,Do,Vo=!k(function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype}),Bo=gt("IE_PROTO"),Lo=Object.prototype,Ho=Vo?Object.getPrototypeOf:function(t){return t=Ni(t),L(t,Bo)?t[Bo]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?Lo:null},Mo=Ue("iterator"),Uo=!1,qo=function(){return this};[].keys&&(Do=[].keys(),"next" in Do?(Fo=Ho(Ho(Do)),Fo!==Object.prototype&&(No=Fo)):Uo=!0);var zo=void 0==No||k(function(){var t={};return No[Mo].call(t)!==t});zo&&(No={}),L(No,Mo)||Q(No,Mo,qo);var Wo={IteratorPrototype:No,BUGGY_SAFARI_ITERATORS:Uo},Go=J.f,Ko=Ue("toStringTag"),Yo=function(t,e,i){t&&!L(t=i?t:t.prototype,Ko)&&Go(t,Ko,{configurable:!0,value:e})},Xo=Wo.IteratorPrototype,Jo=function(t,e,i){var n=e+" Iterator";return t.prototype=Ai(Xo,{next:$(1,i)}),Yo(t,n,!1),t},Qo=Wo.IteratorPrototype,Zo=Wo.BUGGY_SAFARI_ITERATORS,ta=Ue("iterator"),ea="keys",ia="values",na="entries",oa=function(){return this},aa=function(t,e,i,n,o,a,s){Jo(i,e,n);var r,l,c,h=function(t){if(t===o&&g){return g}if(!Zo&&t in f){return f[t]}switch(t){case ea:return function(){return new i(this,t)};case ia:return function(){return new i(this,t)};case na:return function(){return new i(this,t)}}return function(){return new i(this)}},u=e+" Iterator",d=!1,f=t.prototype,p=f[ta]||f["@@iterator"]||o&&f[o],g=!Zo&&p||h(o),v="Array"==e?f.entries||p:p;if(v&&(r=Ho(v.call(new t)),Qo!==Object.prototype&&r.next&&(Ho(r)!==Qo&&(Qn?Qn(r,Qo):"function"!=typeof r[ta]&&Q(r,ta,oa)),Yo(r,u,!0))),o==ia&&p&&p.name!==ia&&(d=!0,g=function(){return p.call(this)}),f[ta]!==g&&Q(f,ta,g),o){if(l={values:h(ia),keys:a?g:h(ea),entries:h(na)},s){for(c in l){!Zo&&!d&&c in f||Ct(f,c,l[c])}}else{oe({target:e,proto:!0,forced:Zo||d},l)}}return l},sa="Array Iterator",ra=Tt.set,la=Tt.getterFor(sa),ca=aa(Array,"Array",function(t,e){ra(this,{type:sa,target:F(t),index:0,kind:e})},function(){var t=la(this),e=t.target,i=t.kind,n=t.index++;return !e||n>=e.length?(t.target=void 0,{value:void 0,done:!0}):"keys"==i?{value:n,done:!1}:"values"==i?{value:e[n],done:!1}:{value:[n,e[n]],done:!1}},"values");Ei("keys"),Ei("values"),Ei("entries");var ha=Ue("iterator"),ua=Ue("toStringTag"),da=ca.values;for(var fa in an){var pa=x[fa],ga=pa&&pa.prototype;if(ga){if(ga[ha]!==da){try{Q(ga,ha,da)}catch(dn){ga[ha]=da}}if(ga[ua]||Q(ga,ua,fa),an[fa]){for(var va in ca){if(ga[va]!==ca[va]){try{Q(ga,va,ca[va])}catch(dn){ga[va]=ca[va]}}}}}}var ba=Li("splice"),ma=Math.max,ya=Math.min,wa=9007199254740991,Sa="Maximum allowed length exceeded";oe({target:"Array",proto:!0,forced:!ba},{splice:function(t,e){var i,n,o,a,s,r,l=Ni(this),c=_t(l.length),h=Dt(t,c),u=arguments.length;if(0===u?i=n=0:1===u?(i=0,n=c-h):(i=u-2,n=ya(ma(Et(e),0),c-h)),c+i-n>wa){throw TypeError(Sa)}for(o=Vi(l,n),a=0;n>a;a++){s=h+a,s in l&&Fi(o,a,l[s])}if(o.length=n,n>i){for(a=h;c-n>a;a++){s=a+n,r=a+i,s in l?l[r]=l[s]:delete l[r]}for(a=c;a>c-n+i;a--){delete l[a-1]}}else{if(i>n){for(a=c-n;a>h;a--){s=a+n-1,r=a+i-1,s in l?l[r]=l[s]:delete l[r]}}}for(a=0;i>a;a++){l[a+h]=arguments[a+2]}return l.length=c-n+i,o}});var xa=zt.f,ka=G.f,Oa=J.f,Ta=he.trim,Ca="Number",Pa=x[Ca],Ia=Pa.prototype,Aa=E(Ai(Ia))==Ca,$a=function(t){var e,i,n,o,a,s,r,l,c=V(t,!1);if("string"==typeof c&&c.length>2){if(c=Ta(c),e=c.charCodeAt(0),43===e||45===e){if(i=c.charCodeAt(2),88===i||120===i){return NaN}}else{if(48===e){switch(c.charCodeAt(1)){case 66:case 98:n=2,o=49;break;case 79:case 111:n=8,o=55;break;default:return +c}for(a=c.slice(2),s=a.length,r=0;s>r;r++){if(l=a.charCodeAt(r),48>l||l>o){return NaN}}return parseInt(a,n)}}}return +c};if(ie(Ca,!Pa(" 0o1")||!Pa("0b1")||Pa("+0x1"))){for(var Ra,Ea=function(t){var e=arguments.length<1?0:t,i=this;return i instanceof Ea&&(Aa?k(function(){Ia.valueOf.call(i)}):E(i)!=Ca)?Zn(new Pa($a(e)),i,Ea):$a(e)},ja=O?xa(Pa):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger,fromString,range".split(","),_a=0;ja.length>_a;_a++){L(Pa,Ra=ja[_a])&&!L(Ea,Ra)&&Oa(Ea,Ra,ka(Pa,Ra))}Ea.prototype=Ia,Ia.constructor=Ea,Ct(x,Ca,Ea)}var Na=[].reverse,Fa=[1,2];oe({target:"Array",proto:!0,forced:Fa+""==Fa.reverse()+""},{reverse:function(){return _i(this)&&(this.length=this.length),Na.call(this)}});var Da="1.19.1",Va=4;try{var Ba=y["default"].fn.dropdown.Constructor.VERSION;void 0!==Ba&&(Va=parseInt(Ba,10))}catch(La){}try{var Ha=bootstrap.Tooltip.VERSION;void 0!==Ha&&(Va=parseInt(Ha,10))}catch(La){}var Ma={3:{iconsPrefix:"glyphicon",icons:{paginationSwitchDown:"glyphicon-collapse-down icon-chevron-down",paginationSwitchUp:"glyphicon-collapse-up icon-chevron-up",refresh:"glyphicon-refresh icon-refresh",toggleOff:"glyphicon-list-alt icon-list-alt",toggleOn:"glyphicon-list-alt icon-list-alt",columns:"glyphicon-th icon-th",detailOpen:"glyphicon-plus icon-plus",detailClose:"glyphicon-minus icon-minus",fullscreen:"glyphicon-fullscreen",search:"glyphicon-search",clearSearch:"glyphicon-trash"},classes:{buttonsPrefix:"btn",buttons:"default",buttonsGroup:"btn-group",buttonsDropdown:"btn-group",pull:"pull",inputGroup:"input-group",inputPrefix:"input-",input:"form-control",paginationDropdown:"btn-group dropdown",dropup:"dropup",dropdownActive:"active",paginationActive:"active",buttonActive:"active"},html:{toolbarDropdown:['"],toolbarDropdownItem:'',toolbarDropdownSeparator:'',pageDropdown:['"],pageDropdownItem:'%s',dropdownCaret:'',pagination:['"],paginationItem:'%s',icon:'',inputGroup:'%s%s
',searchInput:'',searchButton:'',searchClearButton:''}},4:{iconsPrefix:"fa",icons:{paginationSwitchDown:"fa-caret-square-down",paginationSwitchUp:"fa-caret-square-up",refresh:"fa-sync",toggleOff:"fa-toggle-off",toggleOn:"fa-toggle-on",columns:"fa-th-list",detailOpen:"fa-plus",detailClose:"fa-minus",fullscreen:"fa-arrows-alt",search:"fa-search",clearSearch:"fa-trash"},classes:{buttonsPrefix:"btn",buttons:"secondary",buttonsGroup:"btn-group",buttonsDropdown:"btn-group",pull:"float",inputGroup:"btn-group",inputPrefix:"form-control-",input:"form-control",paginationDropdown:"btn-group dropdown",dropup:"dropup",dropdownActive:"active",paginationActive:"active",buttonActive:"active"},html:{toolbarDropdown:['"],toolbarDropdownItem:'',pageDropdown:['"],pageDropdownItem:'%s',toolbarDropdownSeparator:'',dropdownCaret:'',pagination:['"],paginationItem:'%s',icon:'',inputGroup:'',searchInput:'',searchButton:'',searchClearButton:''}},5:{iconsPrefix:"bi",icons:{paginationSwitchDown:"bi-caret-down-square",paginationSwitchUp:"bi-caret-up-square",refresh:"bi-arrow-clockwise",toggleOff:"bi-toggle-off",toggleOn:"bi-toggle-on",columns:"bi-list-ul",detailOpen:"bi-plus",detailClose:"bi-dash",fullscreen:"bi-arrows-move",search:"bi-search",clearSearch:"bi-trash"},classes:{buttonsPrefix:"btn",buttons:"secondary",buttonsGroup:"btn-group",buttonsDropdown:"btn-group",pull:"float",inputGroup:"btn-group",inputPrefix:"form-control-",input:"form-control",paginationDropdown:"btn-group dropdown",dropup:"dropup",dropdownActive:"active",paginationActive:"active",buttonActive:"active"},html:{dataToggle:"data-bs-toggle",toolbarDropdown:['"],toolbarDropdownItem:'',pageDropdown:['"],pageDropdownItem:'%s',toolbarDropdownSeparator:'',dropdownCaret:'',pagination:['"],paginationItem:'%s',icon:'',inputGroup:'%s%s
',searchInput:'',searchButton:'',searchClearButton:''}}}[Va],Ua={id:void 0,firstLoad:!0,height:void 0,classes:"table table-bordered table-hover",buttons:{},theadClasses:"",striped:!1,headerStyle:function(t){return{}},rowStyle:function(t,e){return{}},rowAttributes:function(t,e){return{}},undefinedText:"-",locale:void 0,virtualScroll:!1,virtualScrollItemHeight:void 0,sortable:!0,sortClass:void 0,silentSort:!0,sortName:void 0,sortOrder:void 0,sortReset:!1,sortStable:!1,rememberOrder:!1,serverSort:!0,customSort:void 0,columns:[[]],data:[],url:void 0,method:"get",cache:!0,contentType:"application/json",dataType:"json",ajax:void 0,ajaxOptions:{},queryParams:function(t){return t},queryParamsType:"limit",responseHandler:function(t){return t},totalField:"total",totalNotFilteredField:"totalNotFiltered",dataField:"rows",footerField:"footer",pagination:!1,paginationParts:["pageInfo","pageSize","pageList"],showExtendedPagination:!1,paginationLoop:!0,sidePagination:"client",totalRows:0,totalNotFiltered:0,pageNumber:1,pageSize:10,pageList:[10,25,50,100],paginationHAlign:"right",paginationVAlign:"bottom",paginationDetailHAlign:"left",paginationPreText:"‹",paginationNextText:"›",paginationSuccessivelySize:5,paginationPagesBySide:1,paginationUseIntermediate:!1,search:!1,searchHighlight:!1,searchOnEnterKey:!1,strictSearch:!1,regexSearch:!1,searchSelector:!1,visibleSearch:!1,showButtonIcons:!0,showButtonText:!1,showSearchButton:!1,showSearchClearButton:!1,trimOnSearch:!0,searchAlign:"right",searchTimeOut:500,searchText:"",customSearch:void 0,showHeader:!0,showFooter:!1,footerStyle:function(t){return{}},searchAccentNeutralise:!1,showColumns:!1,showSearch:!1,showPageGo:!1,showColumnsToggleAll:!1,showColumnsSearch:!1,minimumCountColumns:1,showPaginationSwitch:!1,showRefresh:!1,showToggle:!1,showFullscreen:!1,smartDisplay:!0,escape:!1,filterOptions:{filterAlgorithm:"and"},idField:void 0,selectItemName:"btSelectItem",clickToSelect:!1,ignoreClickToSelectOn:function(t){var e=t.tagName;return["A","BUTTON"].includes(e)},singleSelect:!1,checkboxHeader:!0,maintainMetaData:!1,multipleSelectRow:!1,uniqueId:void 0,cardView:!1,detailView:!1,detailViewIcon:!0,detailViewByClick:!1,detailViewAlign:"left",detailFormatter:function(t,e){return""},detailFilter:function(t,e){return !0},toolbar:void 0,toolbarAlign:"left",buttonsToolbar:void 0,buttonsAlign:"right",buttonsOrder:["search","paginationSwitch","refresh","toggle","fullscreen","columns"],buttonsPrefix:Ma.classes.buttonsPrefix,buttonsClass:Ma.classes.buttons,icons:Ma.icons,iconSize:void 0,iconsPrefix:Ma.iconsPrefix,loadingFontSize:"auto",loadingTemplate:function(t){return'\n '.concat(t,'\n \n \n ')},onAll:function(t,e){return !1},onClickCell:function(t,e,i,n){return !1},onDblClickCell:function(t,e,i,n){return !1},onClickRow:function(t,e){return !1},onDblClickRow:function(t,e){return !1},onSort:function(t,e){return !1},onCheck:function(t){return !1},onUncheck:function(t){return !1},onCheckAll:function(t){return !1},onUncheckAll:function(t){return !1},onCheckSome:function(t){return !1},onUncheckSome:function(t){return !1},onLoadSuccess:function(t){return !1},onLoadError:function(t){return !1},onColumnSwitch:function(t,e){return !1},onPageChange:function(t,e){return !1},onSearch:function(t){return !1},onShowSearch:function(){return !1},onToggle:function(t){return !1},onPreBody:function(t){return !1},onPostBody:function(){return !1},onPostHeader:function(){return !1},onPostFooter:function(){return !1},onExpandRow:function(t,e,i){return !1},onCollapseRow:function(t,e){return !1},onRefreshOptions:function(t){return !1},onRefresh:function(t){return !1},onResetView:function(){return !1},onScrollBody:function(){return !1},onTogglePagination:function(t){return !1}},qa={formatLoadingMessage:function(){return"Loading, please wait"},formatRecordsPerPage:function(t){return"".concat(t," rows per page")},formatShowingRows:function(t,e,i,n){return void 0!==n&&n>0&&n>i?"Showing ".concat(t," to ").concat(e," of ").concat(i," rows (filtered from ").concat(n," total rows)"):"Showing ".concat(t," to ").concat(e," of ").concat(i," rows")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatSearch:function(){return"Search"},formatShowSearch:function(){return"Show Search"},formatPageGo:function(){return"Go"},formatClearSearch:function(){return"Clear Search"},formatNoMatches:function(){return"No matching records found"},formatPaginationSwitch:function(){return"Hide/Show pagination"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"Refresh"},formatToggle:function(){return"Toggle"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"Columns"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"All"}},za={field:void 0,title:void 0,titleTooltip:void 0,"class":void 0,width:void 0,widthUnit:"px",rowspan:void 0,colspan:void 0,align:void 0,halign:void 0,falign:void 0,valign:void 0,cellStyle:void 0,radio:!1,checkbox:!1,checkboxEnabled:!0,clickToSelect:!0,showSelectTitle:!1,sortable:!1,sortName:void 0,order:"asc",sorter:void 0,visible:!0,ignore:!1,switchable:!0,cardVisible:!0,searchable:!0,formatter:void 0,footerFormatter:void 0,detailFormatter:void 0,searchFormatter:!0,searchHighlightFormatter:!1,escape:!1,events:void 0},Wa=["getOptions","refreshOptions","getData","getSelections","load","append","prepend","remove","removeAll","insertRow","updateRow","getRowByUniqueId","updateByUniqueId","removeByUniqueId","updateCell","updateCellByUniqueId","showRow","hideRow","getHiddenRows","showColumn","hideColumn","getVisibleColumns","getHiddenColumns","showAllColumns","hideAllColumns","mergeCells","checkAll","uncheckAll","checkInvert","check","uncheck","checkBy","uncheckBy","refresh","destroy","resetView","showLoading","hideLoading","togglePagination","toggleFullscreen","toggleView","resetSearch","filterBy","scrollTo","getScrollPosition","selectPage","prevPage","nextPage","toggleDetailView","expandRow","collapseRow","expandRowByUniqueId","collapseRowByUniqueId","expandAllRows","collapseAllRows","updateColumnTitle","updateFormatText"],Ga={"all.bs.table":"onAll","click-row.bs.table":"onClickRow","dbl-click-row.bs.table":"onDblClickRow","click-cell.bs.table":"onClickCell","dbl-click-cell.bs.table":"onDblClickCell","sort.bs.table":"onSort","check.bs.table":"onCheck","uncheck.bs.table":"onUncheck","check-all.bs.table":"onCheckAll","uncheck-all.bs.table":"onUncheckAll","check-some.bs.table":"onCheckSome","uncheck-some.bs.table":"onUncheckSome","load-success.bs.table":"onLoadSuccess","load-error.bs.table":"onLoadError","column-switch.bs.table":"onColumnSwitch","page-change.bs.table":"onPageChange","search.bs.table":"onSearch","toggle.bs.table":"onToggle","pre-body.bs.table":"onPreBody","post-body.bs.table":"onPostBody","post-header.bs.table":"onPostHeader","post-footer.bs.table":"onPostFooter","expand-row.bs.table":"onExpandRow","collapse-row.bs.table":"onCollapseRow","refresh-options.bs.table":"onRefreshOptions","reset-view.bs.table":"onResetView","refresh.bs.table":"onRefresh","scroll-body.bs.table":"onScrollBody","toggle-pagination.bs.table":"onTogglePagination","virtual-scroll.bs.table":"onVirtualScroll"};Object.assign(Ua,qa);var Ka={VERSION:Da,THEME:"bootstrap".concat(Va),CONSTANTS:Ma,DEFAULTS:Ua,COLUMN_DEFAULTS:za,METHODS:Wa,EVENTS:Ga,LOCALES:{en:qa,"en-US":qa}},Ya=k(function(){ui(1)});oe({target:"Object",stat:!0,forced:Ya},{keys:function(t){return ui(Ni(t))}}),Xe("match",1,function(t,e,i){return[function(e){var i=N(this),n=void 0==e?void 0:e[t];return void 0!==n?n.call(e,i):RegExp(e)[t](i+"")},function(t){var n=i(e,t,this);if(n.done){return n.value}var o=K(t),a=this+"";if(!o.global){return si(o,a)}var s=o.unicode;o.lastIndex=0;for(var r,l=[],c=0;null!==(r=si(o,a));){var h=r[0]+"";l[c]=h,""===h&&(o.lastIndex=ai(a,_t(o.lastIndex),s)),c++}return 0===c?null:l}]});var Xa=G.f,Ja="".startsWith,Qa=Math.min,Za=on("startsWith"),ts=!Za&&!!function(){var t=Xa(String.prototype,"startsWith");return t&&!t.writable}();oe({target:"String",proto:!0,forced:!ts&&!Za},{startsWith:function(t){var e=N(this)+"";en(t);var i=_t(Qa(arguments.length>1?arguments[1]:void 0,e.length)),n=t+"";return Ja?Ja.call(e,n,i):e.slice(i,i+n.length)===n}});var es=G.f,is="".endsWith,ns=Math.min,os=on("endsWith"),as=!os&&!!function(){var t=es(String.prototype,"endsWith");return t&&!t.writable}();oe({target:"String",proto:!0,forced:!as&&!os},{endsWith:function(t){var e=N(this)+"";en(t);var i=arguments.length>1?arguments[1]:void 0,n=_t(e.length),o=void 0===i?n:ns(_t(i),n),a=t+"";return is?is.call(e,a,o):e.slice(o-a.length,o)===a}});var ss={getSearchInput:function(t){return"string"==typeof t.options.searchSelector?y["default"](t.options.searchSelector):t.$toolbar.find(".search input")},sprintf:function(t){for(var e=arguments.length,i=Array(e>1?e-1:0),n=1;e>n;n++){i[n-1]=arguments[n]}var o=!0,a=0,s=t.replace(/%s/g,function(){var t=i[a++];return void 0===t?(o=!1,""):t});return o?s:""},isObject:function(t){return t instanceof Object&&!Array.isArray(t)},isEmptyObject:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return 0===Object.entries(t).length&&t.constructor===Object},isNumeric:function(t){return !isNaN(parseFloat(t))&&isFinite(t)},getFieldTitle:function(t,e){var i,n=v(t);try{for(n.s();!(i=n.n()).done;){var o=i.value;if(o.field===e){return o.title}}}catch(a){n.e(a)}finally{n.f()}return""},setFieldIndex:function(t){var e,i=0,n=[],o=v(t[0]);try{for(o.s();!(e=o.n()).done;){var a=e.value;i+=a.colspan||1}}catch(s){o.e(s)}finally{o.f()}for(var r=0;rl;l++){n[r][l]=!1}}for(var c=0;cb;b++){for(var m=0;p>m;m++){n[c+b][g+m]=!0}}}}catch(s){u.e(s)}finally{u.f()}}},normalizeAccent:function(t){return"string"!=typeof t?t:t.normalize("NFD").replace(/[\u0300-\u036f]/g,"")},updateFieldGroup:function(t){var e,i,n=(e=[]).concat.apply(e,r(t)),o=v(t);try{for(o.s();!(i=o.n()).done;){var a,s=i.value,l=v(s);try{for(l.s();!(a=l.n()).done;){var c=a.value;if(c.colspanGroup>1){for(var h=0,u=function(t){var e=n.find(function(e){return e.fieldIndex===t});e.visible&&h++},d=c.colspanIndex;d0}}}catch(f){l.e(f)}finally{l.f()}}}catch(f){o.e(f)}finally{o.f()}},getScrollBarWidth:function(){if(void 0===this.cachedWidth){var t=y["default"]("").addClass("fixed-table-scroll-inner"),e=y["default"]("").addClass("fixed-table-scroll-outer");e.append(t),y["default"]("body").append(e);var i=t[0].offsetWidth;e.css("overflow","scroll");var n=t[0].offsetWidth;i===n&&(n=e[0].clientWidth),e.remove(),this.cachedWidth=i-n}return this.cachedWidth},calculateObjectValue:function(t,e,n,o){var a=e;if("string"==typeof e){var s=e.split(".");if(s.length>1){a=window;var l,c=v(s);try{for(c.s();!(l=c.n()).done;){var h=l.value;a=a[h]}}catch(u){c.e(u)}finally{c.f()}}else{a=window[e]}}return null!==a&&"object"===i(a)?a:"function"==typeof a?a.apply(t,n||[]):!a&&"string"==typeof e&&this.sprintf.apply(this,[e].concat(r(n)))?this.sprintf.apply(this,[e].concat(r(n))):o},compareObjects:function(t,e,i){var n=Object.keys(t),o=Object.keys(e);if(i&&n.length!==o.length){return !1}for(var a=0,s=n;a/g,">").replace(/"/g,""").replace(/'/g,"'"):t},unescapeHTML:function(t){return t?(""+t).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/'/g,"'"):t},getRealDataAttr:function(t){for(var e=0,i=Object.entries(t);etd,>th").each(function(n,a){for(var s=y["default"](a),l=+s.attr("colspan")||1,c=+s.attr("rowspan")||1,h=n;o[e]&&o[e][h];h++){}for(var u=h;h+l>u;u++){for(var d=e;e+c>d;d++){o[d]||(o[d]=[]),o[d][u]=!0}}var f=t[h].field;r[f]=s.html().trim(),r["_".concat(f,"_id")]=s.attr("id"),r["_".concat(f,"_class")]=s.attr("class"),r["_".concat(f,"_rowspan")]=s.attr("rowspan"),r["_".concat(f,"_colspan")]=s.attr("colspan"),r["_".concat(f,"_title")]=s.attr("title"),r["_".concat(f,"_data")]=i.getRealDataAttr(s.data()),r["_".concat(f,"_style")]=s.attr("style")}),n.push(r)}),n},sort:function(t,e,i,n,o,a){return(void 0===t||null===t)&&(t=""),(void 0===e||null===e)&&(e=""),n&&t===e&&(t=o,e=a),this.isNumeric(t)&&this.isNumeric(e)?(t=parseFloat(t),e=parseFloat(e),e>t?-1*i:t>e?i:0):t===e?0:("string"!=typeof t&&(t=""+t),-1===t.localeCompare(e)?-1*i:i)},getEventName:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return e=e||"".concat(+new Date).concat(~~(1000000*Math.random())),"".concat(t,"-").concat(e)},hasDetailViewIcon:function(t){return t.detailView&&t.detailViewIcon&&!t.cardView},getDetailViewIndexOffset:function(t){return this.hasDetailViewIcon(t)&&"right"!==t.detailViewAlign?1:0},checkAutoMergeCells:function(t){var e,i=v(t);try{for(i.s();!(e=i.n()).done;){for(var n=e.value,o=0,a=Object.keys(n);oo&&r++;for(var l=i;n>l;l++){t[l]&&s.push(t[l])}return{start:i,end:n,topOffset:o,bottomOffset:a,rowsAbove:r,rows:s}}},{key:"checkChanges",value:function(t,e){var i=e!==this.cache[t];return this.cache[t]=e,i}},{key:"getExtra",value:function(t,e){var i=document.createElement("tr");return i.className="virtual-scroll-".concat(t),e&&(i.style.height="".concat(e,"px")),i.outerHTML}}]),t}(),hs=function(){function e(t,i){n(this,e),this.options=i,this.$el=y["default"](t),this.$el_=this.$el.clone(),this.timeoutId_=0,this.timeoutFooter_=0}return a(e,[{key:"init",value:function(){this.initConstants(),this.initLocale(),this.initContainer(),this.initTable(),this.initHeader(),this.initData(),this.initHiddenRows(),this.initToolbar(),this.initPagination(),this.initBody(),this.initSearchText(),this.initServer()}},{key:"initConstants",value:function(){var t=this.options;this.constants=Ka.CONSTANTS,this.constants.theme=y["default"].fn.bootstrapTable.theme,this.constants.dataToggle=this.constants.html.dataToggle||"data-toggle";var e=t.buttonsPrefix?"".concat(t.buttonsPrefix,"-"):"";this.constants.buttonsClass=[t.buttonsPrefix,e+t.buttonsClass,ss.sprintf("".concat(e,"%s"),t.iconSize)].join(" ").trim(),this.buttons=ss.calculateObjectValue(this,t.buttons,[],{}),"object"!==i(this.buttons)&&(this.buttons={}),"string"==typeof t.icons&&(t.icons=ss.calculateObjectValue(null,t.icons))}},{key:"initLocale",value:function(){if(this.options.locale){var t=y["default"].fn.bootstrapTable.locales,i=this.options.locale.split(/-|_/);i[0]=i[0].toLowerCase(),i[1]&&(i[1]=i[1].toUpperCase());var n={};t[this.options.locale]?n=t[this.options.locale]:t[i.join("-")]?n=t[i.join("-")]:t[i[0]]&&(n=t[i[0]]);for(var o=0,a=Object.entries(n);o