Commit a2ddae30a98cd32163795a7ff4a317a0e0ba48ab

Authored by 潘钊
1 parent ede24294

update

Showing 38 changed files with 4162 additions and 0 deletions

Too many changes to show.

To preserve performance only 38 of 52 files are displayed.

src/main/resources/static/real_control_v2/assets/plugins/jquery.ui/core.js 0 → 100644
  1 +/*!
  2 + * jQuery UI Core 1.11.1
  3 + * http://jqueryui.com
  4 + *
  5 + * Copyright 2014 jQuery Foundation and other contributors
  6 + * Released under the MIT license.
  7 + * http://jquery.org/license
  8 + *
  9 + * http://api.jqueryui.com/category/ui-core/
  10 + */
  11 +(function( factory ) {
  12 + if ( typeof define === "function" && define.amd ) {
  13 +
  14 + // AMD. Register as an anonymous module.
  15 + define( [ "jquery" ], factory );
  16 + } else {
  17 +
  18 + // Browser globals
  19 + factory( jQuery );
  20 + }
  21 +}(function( $ ) {
  22 +
  23 +// $.ui might exist from components with no dependencies, e.g., $.ui.position
  24 +$.ui = $.ui || {};
  25 +
  26 +$.extend( $.ui, {
  27 + version: "1.11.1",
  28 +
  29 + keyCode: {
  30 + BACKSPACE: 8,
  31 + COMMA: 188,
  32 + DELETE: 46,
  33 + DOWN: 40,
  34 + END: 35,
  35 + ENTER: 13,
  36 + ESCAPE: 27,
  37 + HOME: 36,
  38 + LEFT: 37,
  39 + PAGE_DOWN: 34,
  40 + PAGE_UP: 33,
  41 + PERIOD: 190,
  42 + RIGHT: 39,
  43 + SPACE: 32,
  44 + TAB: 9,
  45 + UP: 38
  46 + }
  47 +});
  48 +
  49 +// plugins
  50 +$.fn.extend({
  51 + scrollParent: function( includeHidden ) {
  52 + var position = this.css( "position" ),
  53 + excludeStaticParent = position === "absolute",
  54 + overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/,
  55 + scrollParent = this.parents().filter( function() {
  56 + var parent = $( this );
  57 + if ( excludeStaticParent && parent.css( "position" ) === "static" ) {
  58 + return false;
  59 + }
  60 + return overflowRegex.test( parent.css( "overflow" ) + parent.css( "overflow-y" ) + parent.css( "overflow-x" ) );
  61 + }).eq( 0 );
  62 +
  63 + return position === "fixed" || !scrollParent.length ? $( this[ 0 ].ownerDocument || document ) : scrollParent;
  64 + },
  65 +
  66 + uniqueId: (function() {
  67 + var uuid = 0;
  68 +
  69 + return function() {
  70 + return this.each(function() {
  71 + if ( !this.id ) {
  72 + this.id = "ui-id-" + ( ++uuid );
  73 + }
  74 + });
  75 + };
  76 + })(),
  77 +
  78 + removeUniqueId: function() {
  79 + return this.each(function() {
  80 + if ( /^ui-id-\d+$/.test( this.id ) ) {
  81 + $( this ).removeAttr( "id" );
  82 + }
  83 + });
  84 + }
  85 +});
  86 +
  87 +// selectors
  88 +function focusable( element, isTabIndexNotNaN ) {
  89 + var map, mapName, img,
  90 + nodeName = element.nodeName.toLowerCase();
  91 + if ( "area" === nodeName ) {
  92 + map = element.parentNode;
  93 + mapName = map.name;
  94 + if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) {
  95 + return false;
  96 + }
  97 + img = $( "img[usemap='#" + mapName + "']" )[ 0 ];
  98 + return !!img && visible( img );
  99 + }
  100 + return ( /input|select|textarea|button|object/.test( nodeName ) ?
  101 + !element.disabled :
  102 + "a" === nodeName ?
  103 + element.href || isTabIndexNotNaN :
  104 + isTabIndexNotNaN) &&
  105 + // the element and all of its ancestors must be visible
  106 + visible( element );
  107 +}
  108 +
  109 +function visible( element ) {
  110 + return $.expr.filters.visible( element ) &&
  111 + !$( element ).parents().addBack().filter(function() {
  112 + return $.css( this, "visibility" ) === "hidden";
  113 + }).length;
  114 +}
  115 +
  116 +$.extend( $.expr[ ":" ], {
  117 + data: $.expr.createPseudo ?
  118 + $.expr.createPseudo(function( dataName ) {
  119 + return function( elem ) {
  120 + return !!$.data( elem, dataName );
  121 + };
  122 + }) :
  123 + // support: jQuery <1.8
  124 + function( elem, i, match ) {
  125 + return !!$.data( elem, match[ 3 ] );
  126 + },
  127 +
  128 + focusable: function( element ) {
  129 + return focusable( element, !isNaN( $.attr( element, "tabindex" ) ) );
  130 + },
  131 +
  132 + tabbable: function( element ) {
  133 + var tabIndex = $.attr( element, "tabindex" ),
  134 + isTabIndexNaN = isNaN( tabIndex );
  135 + return ( isTabIndexNaN || tabIndex >= 0 ) && focusable( element, !isTabIndexNaN );
  136 + }
  137 +});
  138 +
  139 +// support: jQuery <1.8
  140 +if ( !$( "<a>" ).outerWidth( 1 ).jquery ) {
  141 + $.each( [ "Width", "Height" ], function( i, name ) {
  142 + var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ],
  143 + type = name.toLowerCase(),
  144 + orig = {
  145 + innerWidth: $.fn.innerWidth,
  146 + innerHeight: $.fn.innerHeight,
  147 + outerWidth: $.fn.outerWidth,
  148 + outerHeight: $.fn.outerHeight
  149 + };
  150 +
  151 + function reduce( elem, size, border, margin ) {
  152 + $.each( side, function() {
  153 + size -= parseFloat( $.css( elem, "padding" + this ) ) || 0;
  154 + if ( border ) {
  155 + size -= parseFloat( $.css( elem, "border" + this + "Width" ) ) || 0;
  156 + }
  157 + if ( margin ) {
  158 + size -= parseFloat( $.css( elem, "margin" + this ) ) || 0;
  159 + }
  160 + });
  161 + return size;
  162 + }
  163 +
  164 + $.fn[ "inner" + name ] = function( size ) {
  165 + if ( size === undefined ) {
  166 + return orig[ "inner" + name ].call( this );
  167 + }
  168 +
  169 + return this.each(function() {
  170 + $( this ).css( type, reduce( this, size ) + "px" );
  171 + });
  172 + };
  173 +
  174 + $.fn[ "outer" + name] = function( size, margin ) {
  175 + if ( typeof size !== "number" ) {
  176 + return orig[ "outer" + name ].call( this, size );
  177 + }
  178 +
  179 + return this.each(function() {
  180 + $( this).css( type, reduce( this, size, true, margin ) + "px" );
  181 + });
  182 + };
  183 + });
  184 +}
  185 +
  186 +// support: jQuery <1.8
  187 +if ( !$.fn.addBack ) {
  188 + $.fn.addBack = function( selector ) {
  189 + return this.add( selector == null ?
  190 + this.prevObject : this.prevObject.filter( selector )
  191 + );
  192 + };
  193 +}
  194 +
  195 +// support: jQuery 1.6.1, 1.6.2 (http://bugs.jquery.com/ticket/9413)
  196 +if ( $( "<a>" ).data( "a-b", "a" ).removeData( "a-b" ).data( "a-b" ) ) {
  197 + $.fn.removeData = (function( removeData ) {
  198 + return function( key ) {
  199 + if ( arguments.length ) {
  200 + return removeData.call( this, $.camelCase( key ) );
  201 + } else {
  202 + return removeData.call( this );
  203 + }
  204 + };
  205 + })( $.fn.removeData );
  206 +}
  207 +
  208 +// deprecated
  209 +$.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() );
  210 +
  211 +$.fn.extend({
  212 + focus: (function( orig ) {
  213 + return function( delay, fn ) {
  214 + return typeof delay === "number" ?
  215 + this.each(function() {
  216 + var elem = this;
  217 + setTimeout(function() {
  218 + $( elem ).focus();
  219 + if ( fn ) {
  220 + fn.call( elem );
  221 + }
  222 + }, delay );
  223 + }) :
  224 + orig.apply( this, arguments );
  225 + };
  226 + })( $.fn.focus ),
  227 +
  228 + disableSelection: (function() {
  229 + var eventType = "onselectstart" in document.createElement( "div" ) ?
  230 + "selectstart" :
  231 + "mousedown";
  232 +
  233 + return function() {
  234 + return this.bind( eventType + ".ui-disableSelection", function( event ) {
  235 + event.preventDefault();
  236 + });
  237 + };
  238 + })(),
  239 +
  240 + enableSelection: function() {
  241 + return this.unbind( ".ui-disableSelection" );
  242 + },
  243 +
  244 + zIndex: function( zIndex ) {
  245 + if ( zIndex !== undefined ) {
  246 + return this.css( "zIndex", zIndex );
  247 + }
  248 +
  249 + if ( this.length ) {
  250 + var elem = $( this[ 0 ] ), position, value;
  251 + while ( elem.length && elem[ 0 ] !== document ) {
  252 + // Ignore z-index if position is set to a value where z-index is ignored by the browser
  253 + // This makes behavior of this function consistent across browsers
  254 + // WebKit always returns auto if the element is positioned
  255 + position = elem.css( "position" );
  256 + if ( position === "absolute" || position === "relative" || position === "fixed" ) {
  257 + // IE returns 0 when zIndex is not specified
  258 + // other browsers return a string
  259 + // we ignore the case of nested elements with an explicit value of 0
  260 + // <div style="z-index: -10;"><div style="z-index: 0;"></div></div>
  261 + value = parseInt( elem.css( "zIndex" ), 10 );
  262 + if ( !isNaN( value ) && value !== 0 ) {
  263 + return value;
  264 + }
  265 + }
  266 + elem = elem.parent();
  267 + }
  268 + }
  269 +
  270 + return 0;
  271 + }
  272 +});
  273 +
  274 +// $.ui.plugin is deprecated. Use $.widget() extensions instead.
  275 +$.ui.plugin = {
  276 + add: function( module, option, set ) {
  277 + var i,
  278 + proto = $.ui[ module ].prototype;
  279 + for ( i in set ) {
  280 + proto.plugins[ i ] = proto.plugins[ i ] || [];
  281 + proto.plugins[ i ].push( [ option, set[ i ] ] );
  282 + }
  283 + },
  284 + call: function( instance, name, args, allowDisconnected ) {
  285 + var i,
  286 + set = instance.plugins[ name ];
  287 +
  288 + if ( !set ) {
  289 + return;
  290 + }
  291 +
  292 + if ( !allowDisconnected && ( !instance.element[ 0 ].parentNode || instance.element[ 0 ].parentNode.nodeType === 11 ) ) {
  293 + return;
  294 + }
  295 +
  296 + for ( i = 0; i < set.length; i++ ) {
  297 + if ( instance.options[ set[ i ][ 0 ] ] ) {
  298 + set[ i ][ 1 ].apply( instance.element, args );
  299 + }
  300 + }
  301 + }
  302 +};
  303 +
  304 +}));
... ...
src/main/resources/static/real_control_v2/assets/plugins/jquery.ui/mouse.js 0 → 100644
  1 +/*!
  2 + * jQuery UI Mouse 1.11.1
  3 + * http://jqueryui.com
  4 + *
  5 + * Copyright 2014 jQuery Foundation and other contributors
  6 + * Released under the MIT license.
  7 + * http://jquery.org/license
  8 + *
  9 + * http://api.jqueryui.com/mouse/
  10 + */
  11 +(function( factory ) {
  12 + if ( typeof define === "function" && define.amd ) {
  13 +
  14 + // AMD. Register as an anonymous module.
  15 + define([
  16 + "jquery",
  17 + "./widget"
  18 + ], factory );
  19 + } else {
  20 +
  21 + // Browser globals
  22 + factory( jQuery );
  23 + }
  24 +}(function( $ ) {
  25 +
  26 +var mouseHandled = false;
  27 +$( document ).mouseup( function() {
  28 + mouseHandled = false;
  29 +});
  30 +
  31 +return $.widget("ui.mouse", {
  32 + version: "1.11.1",
  33 + options: {
  34 + cancel: "input,textarea,button,select,option",
  35 + distance: 1,
  36 + delay: 0
  37 + },
  38 + _mouseInit: function() {
  39 + var that = this;
  40 +
  41 + this.element
  42 + .bind("mousedown." + this.widgetName, function(event) {
  43 + return that._mouseDown(event);
  44 + })
  45 + .bind("click." + this.widgetName, function(event) {
  46 + if (true === $.data(event.target, that.widgetName + ".preventClickEvent")) {
  47 + $.removeData(event.target, that.widgetName + ".preventClickEvent");
  48 + event.stopImmediatePropagation();
  49 + return false;
  50 + }
  51 + });
  52 +
  53 + this.started = false;
  54 + },
  55 +
  56 + // TODO: make sure destroying one instance of mouse doesn't mess with
  57 + // other instances of mouse
  58 + _mouseDestroy: function() {
  59 + this.element.unbind("." + this.widgetName);
  60 + if ( this._mouseMoveDelegate ) {
  61 + this.document
  62 + .unbind("mousemove." + this.widgetName, this._mouseMoveDelegate)
  63 + .unbind("mouseup." + this.widgetName, this._mouseUpDelegate);
  64 + }
  65 + },
  66 +
  67 + _mouseDown: function(event) {
  68 + // don't let more than one widget handle mouseStart
  69 + if ( mouseHandled ) {
  70 + return;
  71 + }
  72 +
  73 + // we may have missed mouseup (out of window)
  74 + (this._mouseStarted && this._mouseUp(event));
  75 +
  76 + this._mouseDownEvent = event;
  77 +
  78 + var that = this,
  79 + btnIsLeft = (event.which === 1),
  80 + // event.target.nodeName works around a bug in IE 8 with
  81 + // disabled inputs (#7620)
  82 + elIsCancel = (typeof this.options.cancel === "string" && event.target.nodeName ? $(event.target).closest(this.options.cancel).length : false);
  83 + if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {
  84 + return true;
  85 + }
  86 +
  87 + this.mouseDelayMet = !this.options.delay;
  88 + if (!this.mouseDelayMet) {
  89 + this._mouseDelayTimer = setTimeout(function() {
  90 + that.mouseDelayMet = true;
  91 + }, this.options.delay);
  92 + }
  93 +
  94 + if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
  95 + this._mouseStarted = (this._mouseStart(event) !== false);
  96 + if (!this._mouseStarted) {
  97 + event.preventDefault();
  98 + return true;
  99 + }
  100 + }
  101 +
  102 + // Click event may never have fired (Gecko & Opera)
  103 + if (true === $.data(event.target, this.widgetName + ".preventClickEvent")) {
  104 + $.removeData(event.target, this.widgetName + ".preventClickEvent");
  105 + }
  106 +
  107 + // these delegates are required to keep context
  108 + this._mouseMoveDelegate = function(event) {
  109 + return that._mouseMove(event);
  110 + };
  111 + this._mouseUpDelegate = function(event) {
  112 + return that._mouseUp(event);
  113 + };
  114 +
  115 + this.document
  116 + .bind( "mousemove." + this.widgetName, this._mouseMoveDelegate )
  117 + .bind( "mouseup." + this.widgetName, this._mouseUpDelegate );
  118 +
  119 + event.preventDefault();
  120 +
  121 + mouseHandled = true;
  122 + return true;
  123 + },
  124 +
  125 + _mouseMove: function(event) {
  126 + // IE mouseup check - mouseup happened when mouse was out of window
  127 + if ($.ui.ie && ( !document.documentMode || document.documentMode < 9 ) && !event.button) {
  128 + return this._mouseUp(event);
  129 +
  130 + // Iframe mouseup check - mouseup occurred in another document
  131 + } else if ( !event.which ) {
  132 + return this._mouseUp( event );
  133 + }
  134 +
  135 + if (this._mouseStarted) {
  136 + this._mouseDrag(event);
  137 + return event.preventDefault();
  138 + }
  139 +
  140 + if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
  141 + this._mouseStarted =
  142 + (this._mouseStart(this._mouseDownEvent, event) !== false);
  143 + (this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event));
  144 + }
  145 +
  146 + return !this._mouseStarted;
  147 + },
  148 +
  149 + _mouseUp: function(event) {
  150 + this.document
  151 + .unbind( "mousemove." + this.widgetName, this._mouseMoveDelegate )
  152 + .unbind( "mouseup." + this.widgetName, this._mouseUpDelegate );
  153 +
  154 + if (this._mouseStarted) {
  155 + this._mouseStarted = false;
  156 +
  157 + if (event.target === this._mouseDownEvent.target) {
  158 + $.data(event.target, this.widgetName + ".preventClickEvent", true);
  159 + }
  160 +
  161 + this._mouseStop(event);
  162 + }
  163 +
  164 + mouseHandled = false;
  165 + return false;
  166 + },
  167 +
  168 + _mouseDistanceMet: function(event) {
  169 + return (Math.max(
  170 + Math.abs(this._mouseDownEvent.pageX - event.pageX),
  171 + Math.abs(this._mouseDownEvent.pageY - event.pageY)
  172 + ) >= this.options.distance
  173 + );
  174 + },
  175 +
  176 + _mouseDelayMet: function(/* event */) {
  177 + return this.mouseDelayMet;
  178 + },
  179 +
  180 + // These are placeholder methods, to be overriden by extending plugin
  181 + _mouseStart: function(/* event */) {},
  182 + _mouseDrag: function(/* event */) {},
  183 + _mouseStop: function(/* event */) {},
  184 + _mouseCapture: function(/* event */) { return true; }
  185 +});
  186 +
  187 +}));
... ...
src/main/resources/static/real_control_v2/assets/plugins/jquery.ui/resizable.js 0 → 100644
  1 +/*!
  2 + * jQuery UI Resizable 1.11.1
  3 + * http://jqueryui.com
  4 + *
  5 + * Copyright 2014 jQuery Foundation and other contributors
  6 + * Released under the MIT license.
  7 + * http://jquery.org/license
  8 + *
  9 + * http://api.jqueryui.com/resizable/
  10 + */
  11 +(function( factory ) {
  12 + if ( typeof define === "function" && define.amd ) {
  13 +
  14 + // AMD. Register as an anonymous module.
  15 + define([
  16 + "jquery",
  17 + "./core",
  18 + "./mouse",
  19 + "./widget"
  20 + ], factory );
  21 + } else {
  22 +
  23 + // Browser globals
  24 + factory( jQuery );
  25 + }
  26 +}(function( $ ) {
  27 +
  28 +$.widget("ui.resizable", $.ui.mouse, {
  29 + version: "1.11.1",
  30 + widgetEventPrefix: "resize",
  31 + options: {
  32 + alsoResize: false,
  33 + animate: false,
  34 + animateDuration: "slow",
  35 + animateEasing: "swing",
  36 + aspectRatio: false,
  37 + autoHide: false,
  38 + containment: false,
  39 + ghost: false,
  40 + grid: false,
  41 + handles: "e,s,se",
  42 + helper: false,
  43 + maxHeight: null,
  44 + maxWidth: null,
  45 + minHeight: 10,
  46 + minWidth: 10,
  47 + // See #7960
  48 + zIndex: 90,
  49 +
  50 + // callbacks
  51 + resize: null,
  52 + start: null,
  53 + stop: null
  54 + },
  55 +
  56 + _num: function( value ) {
  57 + return parseInt( value, 10 ) || 0;
  58 + },
  59 +
  60 + _isNumber: function( value ) {
  61 + return !isNaN( parseInt( value, 10 ) );
  62 + },
  63 +
  64 + _hasScroll: function( el, a ) {
  65 +
  66 + if ( $( el ).css( "overflow" ) === "hidden") {
  67 + return false;
  68 + }
  69 +
  70 + var scroll = ( a && a === "left" ) ? "scrollLeft" : "scrollTop",
  71 + has = false;
  72 +
  73 + if ( el[ scroll ] > 0 ) {
  74 + return true;
  75 + }
  76 +
  77 + // TODO: determine which cases actually cause this to happen
  78 + // if the element doesn't have the scroll set, see if it's possible to
  79 + // set the scroll
  80 + el[ scroll ] = 1;
  81 + has = ( el[ scroll ] > 0 );
  82 + el[ scroll ] = 0;
  83 + return has;
  84 + },
  85 +
  86 + _create: function() {
  87 +
  88 + var n, i, handle, axis, hname,
  89 + that = this,
  90 + o = this.options;
  91 + this.element.addClass("ui-resizable");
  92 +
  93 + $.extend(this, {
  94 + _aspectRatio: !!(o.aspectRatio),
  95 + aspectRatio: o.aspectRatio,
  96 + originalElement: this.element,
  97 + _proportionallyResizeElements: [],
  98 + _helper: o.helper || o.ghost || o.animate ? o.helper || "ui-resizable-helper" : null
  99 + });
  100 +
  101 + // Wrap the element if it cannot hold child nodes
  102 + if (this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)) {
  103 +
  104 + this.element.wrap(
  105 + $("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({
  106 + position: this.element.css("position"),
  107 + width: this.element.outerWidth(),
  108 + height: this.element.outerHeight(),
  109 + top: this.element.css("top"),
  110 + left: this.element.css("left")
  111 + })
  112 + );
  113 +
  114 + this.element = this.element.parent().data(
  115 + "ui-resizable", this.element.resizable( "instance" )
  116 + );
  117 +
  118 + this.elementIsWrapper = true;
  119 +
  120 + this.element.css({
  121 + marginLeft: this.originalElement.css("marginLeft"),
  122 + marginTop: this.originalElement.css("marginTop"),
  123 + marginRight: this.originalElement.css("marginRight"),
  124 + marginBottom: this.originalElement.css("marginBottom")
  125 + });
  126 + this.originalElement.css({
  127 + marginLeft: 0,
  128 + marginTop: 0,
  129 + marginRight: 0,
  130 + marginBottom: 0
  131 + });
  132 + // support: Safari
  133 + // Prevent Safari textarea resize
  134 + this.originalResizeStyle = this.originalElement.css("resize");
  135 + this.originalElement.css("resize", "none");
  136 +
  137 + this._proportionallyResizeElements.push( this.originalElement.css({
  138 + position: "static",
  139 + zoom: 1,
  140 + display: "block"
  141 + }) );
  142 +
  143 + // support: IE9
  144 + // avoid IE jump (hard set the margin)
  145 + this.originalElement.css({ margin: this.originalElement.css("margin") });
  146 +
  147 + this._proportionallyResize();
  148 + }
  149 +
  150 + this.handles = o.handles ||
  151 + ( !$(".ui-resizable-handle", this.element).length ?
  152 + "e,s,se" : {
  153 + n: ".ui-resizable-n",
  154 + e: ".ui-resizable-e",
  155 + s: ".ui-resizable-s",
  156 + w: ".ui-resizable-w",
  157 + se: ".ui-resizable-se",
  158 + sw: ".ui-resizable-sw",
  159 + ne: ".ui-resizable-ne",
  160 + nw: ".ui-resizable-nw"
  161 + } );
  162 +
  163 + if (this.handles.constructor === String) {
  164 +
  165 + if ( this.handles === "all") {
  166 + this.handles = "n,e,s,w,se,sw,ne,nw";
  167 + }
  168 +
  169 + n = this.handles.split(",");
  170 + this.handles = {};
  171 +
  172 + for (i = 0; i < n.length; i++) {
  173 +
  174 + handle = $.trim(n[i]);
  175 + hname = "ui-resizable-" + handle;
  176 + axis = $("<div class='ui-resizable-handle " + hname + "'></div>");
  177 +
  178 + axis.css({ zIndex: o.zIndex });
  179 +
  180 + // TODO : What's going on here?
  181 + if ("se" === handle) {
  182 + axis.addClass("ui-icon ui-icon-gripsmall-diagonal-se");
  183 + }
  184 +
  185 + this.handles[handle] = ".ui-resizable-" + handle;
  186 + this.element.append(axis);
  187 + }
  188 +
  189 + }
  190 +
  191 + this._renderAxis = function(target) {
  192 +
  193 + var i, axis, padPos, padWrapper;
  194 +
  195 + target = target || this.element;
  196 +
  197 + for (i in this.handles) {
  198 +
  199 + if (this.handles[i].constructor === String) {
  200 + this.handles[i] = this.element.children( this.handles[ i ] ).first().show();
  201 + }
  202 +
  203 + if (this.elementIsWrapper && this.originalElement[0].nodeName.match(/textarea|input|select|button/i)) {
  204 +
  205 + axis = $(this.handles[i], this.element);
  206 +
  207 + padWrapper = /sw|ne|nw|se|n|s/.test(i) ? axis.outerHeight() : axis.outerWidth();
  208 +
  209 + padPos = [ "padding",
  210 + /ne|nw|n/.test(i) ? "Top" :
  211 + /se|sw|s/.test(i) ? "Bottom" :
  212 + /^e$/.test(i) ? "Right" : "Left" ].join("");
  213 +
  214 + target.css(padPos, padWrapper);
  215 +
  216 + this._proportionallyResize();
  217 +
  218 + }
  219 +
  220 + // TODO: What's that good for? There's not anything to be executed left
  221 + if (!$(this.handles[i]).length) {
  222 + continue;
  223 + }
  224 + }
  225 + };
  226 +
  227 + // TODO: make renderAxis a prototype function
  228 + this._renderAxis(this.element);
  229 +
  230 + this._handles = $(".ui-resizable-handle", this.element)
  231 + .disableSelection();
  232 +
  233 + this._handles.mouseover(function() {
  234 + if (!that.resizing) {
  235 + if (this.className) {
  236 + axis = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);
  237 + }
  238 + that.axis = axis && axis[1] ? axis[1] : "se";
  239 + }
  240 + });
  241 +
  242 + if (o.autoHide) {
  243 + this._handles.hide();
  244 + $(this.element)
  245 + .addClass("ui-resizable-autohide")
  246 + .mouseenter(function() {
  247 + if (o.disabled) {
  248 + return;
  249 + }
  250 + $(this).removeClass("ui-resizable-autohide");
  251 + that._handles.show();
  252 + })
  253 + .mouseleave(function() {
  254 + if (o.disabled) {
  255 + return;
  256 + }
  257 + if (!that.resizing) {
  258 + $(this).addClass("ui-resizable-autohide");
  259 + that._handles.hide();
  260 + }
  261 + });
  262 + }
  263 +
  264 + this._mouseInit();
  265 +
  266 + },
  267 +
  268 + _destroy: function() {
  269 +
  270 + this._mouseDestroy();
  271 +
  272 + var wrapper,
  273 + _destroy = function(exp) {
  274 + $(exp)
  275 + .removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing")
  276 + .removeData("resizable")
  277 + .removeData("ui-resizable")
  278 + .unbind(".resizable")
  279 + .find(".ui-resizable-handle")
  280 + .remove();
  281 + };
  282 +
  283 + // TODO: Unwrap at same DOM position
  284 + if (this.elementIsWrapper) {
  285 + _destroy(this.element);
  286 + wrapper = this.element;
  287 + this.originalElement.css({
  288 + position: wrapper.css("position"),
  289 + width: wrapper.outerWidth(),
  290 + height: wrapper.outerHeight(),
  291 + top: wrapper.css("top"),
  292 + left: wrapper.css("left")
  293 + }).insertAfter( wrapper );
  294 + wrapper.remove();
  295 + }
  296 +
  297 + this.originalElement.css("resize", this.originalResizeStyle);
  298 + _destroy(this.originalElement);
  299 +
  300 + return this;
  301 + },
  302 +
  303 + _mouseCapture: function(event) {
  304 + var i, handle,
  305 + capture = false;
  306 +
  307 + for (i in this.handles) {
  308 + handle = $(this.handles[i])[0];
  309 + if (handle === event.target || $.contains(handle, event.target)) {
  310 + capture = true;
  311 + }
  312 + }
  313 +
  314 + return !this.options.disabled && capture;
  315 + },
  316 +
  317 + _mouseStart: function(event) {
  318 +
  319 + var curleft, curtop, cursor,
  320 + o = this.options,
  321 + el = this.element;
  322 +
  323 + this.resizing = true;
  324 +
  325 + this._renderProxy();
  326 +
  327 + curleft = this._num(this.helper.css("left"));
  328 + curtop = this._num(this.helper.css("top"));
  329 +
  330 + if (o.containment) {
  331 + curleft += $(o.containment).scrollLeft() || 0;
  332 + curtop += $(o.containment).scrollTop() || 0;
  333 + }
  334 +
  335 + this.offset = this.helper.offset();
  336 + this.position = { left: curleft, top: curtop };
  337 +
  338 + this.size = this._helper ? {
  339 + width: this.helper.width(),
  340 + height: this.helper.height()
  341 + } : {
  342 + width: el.width(),
  343 + height: el.height()
  344 + };
  345 +
  346 + this.originalSize = this._helper ? {
  347 + width: el.outerWidth(),
  348 + height: el.outerHeight()
  349 + } : {
  350 + width: el.width(),
  351 + height: el.height()
  352 + };
  353 +
  354 + this.sizeDiff = {
  355 + width: el.outerWidth() - el.width(),
  356 + height: el.outerHeight() - el.height()
  357 + };
  358 +
  359 + this.originalPosition = { left: curleft, top: curtop };
  360 + this.originalMousePosition = { left: event.pageX, top: event.pageY };
  361 +
  362 + this.aspectRatio = (typeof o.aspectRatio === "number") ?
  363 + o.aspectRatio :
  364 + ((this.originalSize.width / this.originalSize.height) || 1);
  365 +
  366 + cursor = $(".ui-resizable-" + this.axis).css("cursor");
  367 + $("body").css("cursor", cursor === "auto" ? this.axis + "-resize" : cursor);
  368 +
  369 + el.addClass("ui-resizable-resizing");
  370 + this._propagate("start", event);
  371 + return true;
  372 + },
  373 +
  374 + _mouseDrag: function(event) {
  375 +
  376 + var data, props,
  377 + smp = this.originalMousePosition,
  378 + a = this.axis,
  379 + dx = (event.pageX - smp.left) || 0,
  380 + dy = (event.pageY - smp.top) || 0,
  381 + trigger = this._change[a];
  382 +
  383 + this._updatePrevProperties();
  384 +
  385 + if (!trigger) {
  386 + return false;
  387 + }
  388 +
  389 + data = trigger.apply(this, [ event, dx, dy ]);
  390 +
  391 + this._updateVirtualBoundaries(event.shiftKey);
  392 + if (this._aspectRatio || event.shiftKey) {
  393 + data = this._updateRatio(data, event);
  394 + }
  395 +
  396 + data = this._respectSize(data, event);
  397 +
  398 + this._updateCache(data);
  399 +
  400 + this._propagate("resize", event);
  401 +
  402 + props = this._applyChanges();
  403 +
  404 + if ( !this._helper && this._proportionallyResizeElements.length ) {
  405 + this._proportionallyResize();
  406 + }
  407 +
  408 + if ( !$.isEmptyObject( props ) ) {
  409 + this._updatePrevProperties();
  410 + this._trigger( "resize", event, this.ui() );
  411 + this._applyChanges();
  412 + }
  413 +
  414 + return false;
  415 + },
  416 +
  417 + _mouseStop: function(event) {
  418 +
  419 + this.resizing = false;
  420 + var pr, ista, soffseth, soffsetw, s, left, top,
  421 + o = this.options, that = this;
  422 +
  423 + if (this._helper) {
  424 +
  425 + pr = this._proportionallyResizeElements;
  426 + ista = pr.length && (/textarea/i).test(pr[0].nodeName);
  427 + soffseth = ista && this._hasScroll(pr[0], "left") ? 0 : that.sizeDiff.height;
  428 + soffsetw = ista ? 0 : that.sizeDiff.width;
  429 +
  430 + s = {
  431 + width: (that.helper.width() - soffsetw),
  432 + height: (that.helper.height() - soffseth)
  433 + };
  434 + left = (parseInt(that.element.css("left"), 10) +
  435 + (that.position.left - that.originalPosition.left)) || null;
  436 + top = (parseInt(that.element.css("top"), 10) +
  437 + (that.position.top - that.originalPosition.top)) || null;
  438 +
  439 + if (!o.animate) {
  440 + this.element.css($.extend(s, { top: top, left: left }));
  441 + }
  442 +
  443 + that.helper.height(that.size.height);
  444 + that.helper.width(that.size.width);
  445 +
  446 + if (this._helper && !o.animate) {
  447 + this._proportionallyResize();
  448 + }
  449 + }
  450 +
  451 + $("body").css("cursor", "auto");
  452 +
  453 + this.element.removeClass("ui-resizable-resizing");
  454 +
  455 + this._propagate("stop", event);
  456 +
  457 + if (this._helper) {
  458 + this.helper.remove();
  459 + }
  460 +
  461 + return false;
  462 +
  463 + },
  464 +
  465 + _updatePrevProperties: function() {
  466 + this.prevPosition = {
  467 + top: this.position.top,
  468 + left: this.position.left
  469 + };
  470 + this.prevSize = {
  471 + width: this.size.width,
  472 + height: this.size.height
  473 + };
  474 + },
  475 +
  476 + _applyChanges: function() {
  477 + var props = {};
  478 +
  479 + if ( this.position.top !== this.prevPosition.top ) {
  480 + props.top = this.position.top + "px";
  481 + }
  482 + if ( this.position.left !== this.prevPosition.left ) {
  483 + props.left = this.position.left + "px";
  484 + }
  485 + if ( this.size.width !== this.prevSize.width ) {
  486 + props.width = this.size.width + "px";
  487 + }
  488 + if ( this.size.height !== this.prevSize.height ) {
  489 + props.height = this.size.height + "px";
  490 + }
  491 +
  492 + this.helper.css( props );
  493 +
  494 + return props;
  495 + },
  496 +
  497 + _updateVirtualBoundaries: function(forceAspectRatio) {
  498 + var pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b,
  499 + o = this.options;
  500 +
  501 + b = {
  502 + minWidth: this._isNumber(o.minWidth) ? o.minWidth : 0,
  503 + maxWidth: this._isNumber(o.maxWidth) ? o.maxWidth : Infinity,
  504 + minHeight: this._isNumber(o.minHeight) ? o.minHeight : 0,
  505 + maxHeight: this._isNumber(o.maxHeight) ? o.maxHeight : Infinity
  506 + };
  507 +
  508 + if (this._aspectRatio || forceAspectRatio) {
  509 + pMinWidth = b.minHeight * this.aspectRatio;
  510 + pMinHeight = b.minWidth / this.aspectRatio;
  511 + pMaxWidth = b.maxHeight * this.aspectRatio;
  512 + pMaxHeight = b.maxWidth / this.aspectRatio;
  513 +
  514 + if (pMinWidth > b.minWidth) {
  515 + b.minWidth = pMinWidth;
  516 + }
  517 + if (pMinHeight > b.minHeight) {
  518 + b.minHeight = pMinHeight;
  519 + }
  520 + if (pMaxWidth < b.maxWidth) {
  521 + b.maxWidth = pMaxWidth;
  522 + }
  523 + if (pMaxHeight < b.maxHeight) {
  524 + b.maxHeight = pMaxHeight;
  525 + }
  526 + }
  527 + this._vBoundaries = b;
  528 + },
  529 +
  530 + _updateCache: function(data) {
  531 + this.offset = this.helper.offset();
  532 + if (this._isNumber(data.left)) {
  533 + this.position.left = data.left;
  534 + }
  535 + if (this._isNumber(data.top)) {
  536 + this.position.top = data.top;
  537 + }
  538 + if (this._isNumber(data.height)) {
  539 + this.size.height = data.height;
  540 + }
  541 + if (this._isNumber(data.width)) {
  542 + this.size.width = data.width;
  543 + }
  544 + },
  545 +
  546 + _updateRatio: function( data ) {
  547 +
  548 + var cpos = this.position,
  549 + csize = this.size,
  550 + a = this.axis;
  551 +
  552 + if (this._isNumber(data.height)) {
  553 + data.width = (data.height * this.aspectRatio);
  554 + } else if (this._isNumber(data.width)) {
  555 + data.height = (data.width / this.aspectRatio);
  556 + }
  557 +
  558 + if (a === "sw") {
  559 + data.left = cpos.left + (csize.width - data.width);
  560 + data.top = null;
  561 + }
  562 + if (a === "nw") {
  563 + data.top = cpos.top + (csize.height - data.height);
  564 + data.left = cpos.left + (csize.width - data.width);
  565 + }
  566 +
  567 + return data;
  568 + },
  569 +
  570 + _respectSize: function( data ) {
  571 +
  572 + var o = this._vBoundaries,
  573 + a = this.axis,
  574 + ismaxw = this._isNumber(data.width) && o.maxWidth && (o.maxWidth < data.width),
  575 + ismaxh = this._isNumber(data.height) && o.maxHeight && (o.maxHeight < data.height),
  576 + isminw = this._isNumber(data.width) && o.minWidth && (o.minWidth > data.width),
  577 + isminh = this._isNumber(data.height) && o.minHeight && (o.minHeight > data.height),
  578 + dw = this.originalPosition.left + this.originalSize.width,
  579 + dh = this.position.top + this.size.height,
  580 + cw = /sw|nw|w/.test(a), ch = /nw|ne|n/.test(a);
  581 + if (isminw) {
  582 + data.width = o.minWidth;
  583 + }
  584 + if (isminh) {
  585 + data.height = o.minHeight;
  586 + }
  587 + if (ismaxw) {
  588 + data.width = o.maxWidth;
  589 + }
  590 + if (ismaxh) {
  591 + data.height = o.maxHeight;
  592 + }
  593 +
  594 + if (isminw && cw) {
  595 + data.left = dw - o.minWidth;
  596 + }
  597 + if (ismaxw && cw) {
  598 + data.left = dw - o.maxWidth;
  599 + }
  600 + if (isminh && ch) {
  601 + data.top = dh - o.minHeight;
  602 + }
  603 + if (ismaxh && ch) {
  604 + data.top = dh - o.maxHeight;
  605 + }
  606 +
  607 + // Fixing jump error on top/left - bug #2330
  608 + if (!data.width && !data.height && !data.left && data.top) {
  609 + data.top = null;
  610 + } else if (!data.width && !data.height && !data.top && data.left) {
  611 + data.left = null;
  612 + }
  613 +
  614 + return data;
  615 + },
  616 +
  617 + _getPaddingPlusBorderDimensions: function( element ) {
  618 + var i = 0,
  619 + widths = [],
  620 + borders = [
  621 + element.css( "borderTopWidth" ),
  622 + element.css( "borderRightWidth" ),
  623 + element.css( "borderBottomWidth" ),
  624 + element.css( "borderLeftWidth" )
  625 + ],
  626 + paddings = [
  627 + element.css( "paddingTop" ),
  628 + element.css( "paddingRight" ),
  629 + element.css( "paddingBottom" ),
  630 + element.css( "paddingLeft" )
  631 + ];
  632 +
  633 + for ( ; i < 4; i++ ) {
  634 + widths[ i ] = ( parseInt( borders[ i ], 10 ) || 0 );
  635 + widths[ i ] += ( parseInt( paddings[ i ], 10 ) || 0 );
  636 + }
  637 +
  638 + return {
  639 + height: widths[ 0 ] + widths[ 2 ],
  640 + width: widths[ 1 ] + widths[ 3 ]
  641 + };
  642 + },
  643 +
  644 + _proportionallyResize: function() {
  645 +
  646 + if (!this._proportionallyResizeElements.length) {
  647 + return;
  648 + }
  649 +
  650 + var prel,
  651 + i = 0,
  652 + element = this.helper || this.element;
  653 +
  654 + for ( ; i < this._proportionallyResizeElements.length; i++) {
  655 +
  656 + prel = this._proportionallyResizeElements[i];
  657 +
  658 + // TODO: Seems like a bug to cache this.outerDimensions
  659 + // considering that we are in a loop.
  660 + if (!this.outerDimensions) {
  661 + this.outerDimensions = this._getPaddingPlusBorderDimensions( prel );
  662 + }
  663 +
  664 + prel.css({
  665 + height: (element.height() - this.outerDimensions.height) || 0,
  666 + width: (element.width() - this.outerDimensions.width) || 0
  667 + });
  668 +
  669 + }
  670 +
  671 + },
  672 +
  673 + _renderProxy: function() {
  674 +
  675 + var el = this.element, o = this.options;
  676 + this.elementOffset = el.offset();
  677 +
  678 + if (this._helper) {
  679 +
  680 + this.helper = this.helper || $("<div style='overflow:hidden;'></div>");
  681 +
  682 + this.helper.addClass(this._helper).css({
  683 + width: this.element.outerWidth() - 1,
  684 + height: this.element.outerHeight() - 1,
  685 + position: "absolute",
  686 + left: this.elementOffset.left + "px",
  687 + top: this.elementOffset.top + "px",
  688 + zIndex: ++o.zIndex //TODO: Don't modify option
  689 + });
  690 +
  691 + this.helper
  692 + .appendTo("body")
  693 + .disableSelection();
  694 +
  695 + } else {
  696 + this.helper = this.element;
  697 + }
  698 +
  699 + },
  700 +
  701 + _change: {
  702 + e: function(event, dx) {
  703 + return { width: this.originalSize.width + dx };
  704 + },
  705 + w: function(event, dx) {
  706 + var cs = this.originalSize, sp = this.originalPosition;
  707 + return { left: sp.left + dx, width: cs.width - dx };
  708 + },
  709 + n: function(event, dx, dy) {
  710 + var cs = this.originalSize, sp = this.originalPosition;
  711 + return { top: sp.top + dy, height: cs.height - dy };
  712 + },
  713 + s: function(event, dx, dy) {
  714 + return { height: this.originalSize.height + dy };
  715 + },
  716 + se: function(event, dx, dy) {
  717 + return $.extend(this._change.s.apply(this, arguments),
  718 + this._change.e.apply(this, [ event, dx, dy ]));
  719 + },
  720 + sw: function(event, dx, dy) {
  721 + return $.extend(this._change.s.apply(this, arguments),
  722 + this._change.w.apply(this, [ event, dx, dy ]));
  723 + },
  724 + ne: function(event, dx, dy) {
  725 + return $.extend(this._change.n.apply(this, arguments),
  726 + this._change.e.apply(this, [ event, dx, dy ]));
  727 + },
  728 + nw: function(event, dx, dy) {
  729 + return $.extend(this._change.n.apply(this, arguments),
  730 + this._change.w.apply(this, [ event, dx, dy ]));
  731 + }
  732 + },
  733 +
  734 + _propagate: function(n, event) {
  735 + $.ui.plugin.call(this, n, [ event, this.ui() ]);
  736 + (n !== "resize" && this._trigger(n, event, this.ui()));
  737 + },
  738 +
  739 + plugins: {},
  740 +
  741 + ui: function() {
  742 + return {
  743 + originalElement: this.originalElement,
  744 + element: this.element,
  745 + helper: this.helper,
  746 + position: this.position,
  747 + size: this.size,
  748 + originalSize: this.originalSize,
  749 + originalPosition: this.originalPosition
  750 + };
  751 + }
  752 +
  753 +});
  754 +
  755 +/*
  756 + * Resizable Extensions
  757 + */
  758 +
  759 +$.ui.plugin.add("resizable", "animate", {
  760 +
  761 + stop: function( event ) {
  762 + var that = $(this).resizable( "instance" ),
  763 + o = that.options,
  764 + pr = that._proportionallyResizeElements,
  765 + ista = pr.length && (/textarea/i).test(pr[0].nodeName),
  766 + soffseth = ista && that._hasScroll(pr[0], "left") ? 0 : that.sizeDiff.height,
  767 + soffsetw = ista ? 0 : that.sizeDiff.width,
  768 + style = { width: (that.size.width - soffsetw), height: (that.size.height - soffseth) },
  769 + left = (parseInt(that.element.css("left"), 10) +
  770 + (that.position.left - that.originalPosition.left)) || null,
  771 + top = (parseInt(that.element.css("top"), 10) +
  772 + (that.position.top - that.originalPosition.top)) || null;
  773 +
  774 + that.element.animate(
  775 + $.extend(style, top && left ? { top: top, left: left } : {}), {
  776 + duration: o.animateDuration,
  777 + easing: o.animateEasing,
  778 + step: function() {
  779 +
  780 + var data = {
  781 + width: parseInt(that.element.css("width"), 10),
  782 + height: parseInt(that.element.css("height"), 10),
  783 + top: parseInt(that.element.css("top"), 10),
  784 + left: parseInt(that.element.css("left"), 10)
  785 + };
  786 +
  787 + if (pr && pr.length) {
  788 + $(pr[0]).css({ width: data.width, height: data.height });
  789 + }
  790 +
  791 + // propagating resize, and updating values for each animation step
  792 + that._updateCache(data);
  793 + that._propagate("resize", event);
  794 +
  795 + }
  796 + }
  797 + );
  798 + }
  799 +
  800 +});
  801 +
  802 +$.ui.plugin.add( "resizable", "containment", {
  803 +
  804 + start: function() {
  805 + var element, p, co, ch, cw, width, height,
  806 + that = $( this ).resizable( "instance" ),
  807 + o = that.options,
  808 + el = that.element,
  809 + oc = o.containment,
  810 + ce = ( oc instanceof $ ) ? oc.get( 0 ) : ( /parent/.test( oc ) ) ? el.parent().get( 0 ) : oc;
  811 +
  812 + if ( !ce ) {
  813 + return;
  814 + }
  815 +
  816 + that.containerElement = $( ce );
  817 +
  818 + if ( /document/.test( oc ) || oc === document ) {
  819 + that.containerOffset = {
  820 + left: 0,
  821 + top: 0
  822 + };
  823 + that.containerPosition = {
  824 + left: 0,
  825 + top: 0
  826 + };
  827 +
  828 + that.parentData = {
  829 + element: $( document ),
  830 + left: 0,
  831 + top: 0,
  832 + width: $( document ).width(),
  833 + height: $( document ).height() || document.body.parentNode.scrollHeight
  834 + };
  835 + } else {
  836 + element = $( ce );
  837 + p = [];
  838 + $([ "Top", "Right", "Left", "Bottom" ]).each(function( i, name ) {
  839 + p[ i ] = that._num( element.css( "padding" + name ) );
  840 + });
  841 +
  842 + that.containerOffset = element.offset();
  843 + that.containerPosition = element.position();
  844 + that.containerSize = {
  845 + height: ( element.innerHeight() - p[ 3 ] ),
  846 + width: ( element.innerWidth() - p[ 1 ] )
  847 + };
  848 +
  849 + co = that.containerOffset;
  850 + ch = that.containerSize.height;
  851 + cw = that.containerSize.width;
  852 + width = ( that._hasScroll ( ce, "left" ) ? ce.scrollWidth : cw );
  853 + height = ( that._hasScroll ( ce ) ? ce.scrollHeight : ch ) ;
  854 +
  855 + that.parentData = {
  856 + element: ce,
  857 + left: co.left,
  858 + top: co.top,
  859 + width: width,
  860 + height: height
  861 + };
  862 + }
  863 + },
  864 +
  865 + resize: function( event ) {
  866 + var woset, hoset, isParent, isOffsetRelative,
  867 + that = $( this ).resizable( "instance" ),
  868 + o = that.options,
  869 + co = that.containerOffset,
  870 + cp = that.position,
  871 + pRatio = that._aspectRatio || event.shiftKey,
  872 + cop = {
  873 + top: 0,
  874 + left: 0
  875 + },
  876 + ce = that.containerElement,
  877 + continueResize = true;
  878 +
  879 + if ( ce[ 0 ] !== document && ( /static/ ).test( ce.css( "position" ) ) ) {
  880 + cop = co;
  881 + }
  882 +
  883 + if ( cp.left < ( that._helper ? co.left : 0 ) ) {
  884 + that.size.width = that.size.width +
  885 + ( that._helper ?
  886 + ( that.position.left - co.left ) :
  887 + ( that.position.left - cop.left ) );
  888 +
  889 + if ( pRatio ) {
  890 + that.size.height = that.size.width / that.aspectRatio;
  891 + continueResize = false;
  892 + }
  893 + that.position.left = o.helper ? co.left : 0;
  894 + }
  895 +
  896 + if ( cp.top < ( that._helper ? co.top : 0 ) ) {
  897 + that.size.height = that.size.height +
  898 + ( that._helper ?
  899 + ( that.position.top - co.top ) :
  900 + that.position.top );
  901 +
  902 + if ( pRatio ) {
  903 + that.size.width = that.size.height * that.aspectRatio;
  904 + continueResize = false;
  905 + }
  906 + that.position.top = that._helper ? co.top : 0;
  907 + }
  908 +
  909 + isParent = that.containerElement.get( 0 ) === that.element.parent().get( 0 );
  910 + isOffsetRelative = /relative|absolute/.test( that.containerElement.css( "position" ) );
  911 +
  912 + if ( isParent && isOffsetRelative ) {
  913 + that.offset.left = that.parentData.left + that.position.left;
  914 + that.offset.top = that.parentData.top + that.position.top;
  915 + } else {
  916 + that.offset.left = that.element.offset().left;
  917 + that.offset.top = that.element.offset().top;
  918 + }
  919 +
  920 + woset = Math.abs( that.sizeDiff.width +
  921 + (that._helper ?
  922 + that.offset.left - cop.left :
  923 + (that.offset.left - co.left)) );
  924 +
  925 + hoset = Math.abs( that.sizeDiff.height +
  926 + (that._helper ?
  927 + that.offset.top - cop.top :
  928 + (that.offset.top - co.top)) );
  929 +
  930 + if ( woset + that.size.width >= that.parentData.width ) {
  931 + that.size.width = that.parentData.width - woset;
  932 + if ( pRatio ) {
  933 + that.size.height = that.size.width / that.aspectRatio;
  934 + continueResize = false;
  935 + }
  936 + }
  937 +
  938 + if ( hoset + that.size.height >= that.parentData.height ) {
  939 + that.size.height = that.parentData.height - hoset;
  940 + if ( pRatio ) {
  941 + that.size.width = that.size.height * that.aspectRatio;
  942 + continueResize = false;
  943 + }
  944 + }
  945 +
  946 + if ( !continueResize ){
  947 + that.position.left = that.prevPosition.left;
  948 + that.position.top = that.prevPosition.top;
  949 + that.size.width = that.prevSize.width;
  950 + that.size.height = that.prevSize.height;
  951 + }
  952 + },
  953 +
  954 + stop: function() {
  955 + var that = $( this ).resizable( "instance" ),
  956 + o = that.options,
  957 + co = that.containerOffset,
  958 + cop = that.containerPosition,
  959 + ce = that.containerElement,
  960 + helper = $( that.helper ),
  961 + ho = helper.offset(),
  962 + w = helper.outerWidth() - that.sizeDiff.width,
  963 + h = helper.outerHeight() - that.sizeDiff.height;
  964 +
  965 + if ( that._helper && !o.animate && ( /relative/ ).test( ce.css( "position" ) ) ) {
  966 + $( this ).css({
  967 + left: ho.left - cop.left - co.left,
  968 + width: w,
  969 + height: h
  970 + });
  971 + }
  972 +
  973 + if ( that._helper && !o.animate && ( /static/ ).test( ce.css( "position" ) ) ) {
  974 + $( this ).css({
  975 + left: ho.left - cop.left - co.left,
  976 + width: w,
  977 + height: h
  978 + });
  979 + }
  980 + }
  981 +});
  982 +
  983 +$.ui.plugin.add("resizable", "alsoResize", {
  984 +
  985 + start: function() {
  986 + var that = $(this).resizable( "instance" ),
  987 + o = that.options,
  988 + _store = function(exp) {
  989 + $(exp).each(function() {
  990 + var el = $(this);
  991 + el.data("ui-resizable-alsoresize", {
  992 + width: parseInt(el.width(), 10), height: parseInt(el.height(), 10),
  993 + left: parseInt(el.css("left"), 10), top: parseInt(el.css("top"), 10)
  994 + });
  995 + });
  996 + };
  997 +
  998 + if (typeof(o.alsoResize) === "object" && !o.alsoResize.parentNode) {
  999 + if (o.alsoResize.length) {
  1000 + o.alsoResize = o.alsoResize[0];
  1001 + _store(o.alsoResize);
  1002 + } else {
  1003 + $.each(o.alsoResize, function(exp) {
  1004 + _store(exp);
  1005 + });
  1006 + }
  1007 + } else {
  1008 + _store(o.alsoResize);
  1009 + }
  1010 + },
  1011 +
  1012 + resize: function(event, ui) {
  1013 + var that = $(this).resizable( "instance" ),
  1014 + o = that.options,
  1015 + os = that.originalSize,
  1016 + op = that.originalPosition,
  1017 + delta = {
  1018 + height: (that.size.height - os.height) || 0,
  1019 + width: (that.size.width - os.width) || 0,
  1020 + top: (that.position.top - op.top) || 0,
  1021 + left: (that.position.left - op.left) || 0
  1022 + },
  1023 +
  1024 + _alsoResize = function(exp, c) {
  1025 + $(exp).each(function() {
  1026 + var el = $(this), start = $(this).data("ui-resizable-alsoresize"), style = {},
  1027 + css = c && c.length ?
  1028 + c :
  1029 + el.parents(ui.originalElement[0]).length ?
  1030 + [ "width", "height" ] :
  1031 + [ "width", "height", "top", "left" ];
  1032 +
  1033 + $.each(css, function(i, prop) {
  1034 + var sum = (start[prop] || 0) + (delta[prop] || 0);
  1035 + if (sum && sum >= 0) {
  1036 + style[prop] = sum || null;
  1037 + }
  1038 + });
  1039 +
  1040 + el.css(style);
  1041 + });
  1042 + };
  1043 +
  1044 + if (typeof(o.alsoResize) === "object" && !o.alsoResize.nodeType) {
  1045 + $.each(o.alsoResize, function(exp, c) {
  1046 + _alsoResize(exp, c);
  1047 + });
  1048 + } else {
  1049 + _alsoResize(o.alsoResize);
  1050 + }
  1051 + },
  1052 +
  1053 + stop: function() {
  1054 + $(this).removeData("resizable-alsoresize");
  1055 + }
  1056 +});
  1057 +
  1058 +$.ui.plugin.add("resizable", "ghost", {
  1059 +
  1060 + start: function() {
  1061 +
  1062 + var that = $(this).resizable( "instance" ), o = that.options, cs = that.size;
  1063 +
  1064 + that.ghost = that.originalElement.clone();
  1065 + that.ghost
  1066 + .css({
  1067 + opacity: 0.25,
  1068 + display: "block",
  1069 + position: "relative",
  1070 + height: cs.height,
  1071 + width: cs.width,
  1072 + margin: 0,
  1073 + left: 0,
  1074 + top: 0
  1075 + })
  1076 + .addClass("ui-resizable-ghost")
  1077 + .addClass(typeof o.ghost === "string" ? o.ghost : "");
  1078 +
  1079 + that.ghost.appendTo(that.helper);
  1080 +
  1081 + },
  1082 +
  1083 + resize: function() {
  1084 + var that = $(this).resizable( "instance" );
  1085 + if (that.ghost) {
  1086 + that.ghost.css({
  1087 + position: "relative",
  1088 + height: that.size.height,
  1089 + width: that.size.width
  1090 + });
  1091 + }
  1092 + },
  1093 +
  1094 + stop: function() {
  1095 + var that = $(this).resizable( "instance" );
  1096 + if (that.ghost && that.helper) {
  1097 + that.helper.get(0).removeChild(that.ghost.get(0));
  1098 + }
  1099 + }
  1100 +
  1101 +});
  1102 +
  1103 +$.ui.plugin.add("resizable", "grid", {
  1104 +
  1105 + resize: function() {
  1106 + var outerDimensions,
  1107 + that = $(this).resizable( "instance" ),
  1108 + o = that.options,
  1109 + cs = that.size,
  1110 + os = that.originalSize,
  1111 + op = that.originalPosition,
  1112 + a = that.axis,
  1113 + grid = typeof o.grid === "number" ? [ o.grid, o.grid ] : o.grid,
  1114 + gridX = (grid[0] || 1),
  1115 + gridY = (grid[1] || 1),
  1116 + ox = Math.round((cs.width - os.width) / gridX) * gridX,
  1117 + oy = Math.round((cs.height - os.height) / gridY) * gridY,
  1118 + newWidth = os.width + ox,
  1119 + newHeight = os.height + oy,
  1120 + isMaxWidth = o.maxWidth && (o.maxWidth < newWidth),
  1121 + isMaxHeight = o.maxHeight && (o.maxHeight < newHeight),
  1122 + isMinWidth = o.minWidth && (o.minWidth > newWidth),
  1123 + isMinHeight = o.minHeight && (o.minHeight > newHeight);
  1124 +
  1125 + o.grid = grid;
  1126 +
  1127 + if (isMinWidth) {
  1128 + newWidth += gridX;
  1129 + }
  1130 + if (isMinHeight) {
  1131 + newHeight += gridY;
  1132 + }
  1133 + if (isMaxWidth) {
  1134 + newWidth -= gridX;
  1135 + }
  1136 + if (isMaxHeight) {
  1137 + newHeight -= gridY;
  1138 + }
  1139 +
  1140 + if (/^(se|s|e)$/.test(a)) {
  1141 + that.size.width = newWidth;
  1142 + that.size.height = newHeight;
  1143 + } else if (/^(ne)$/.test(a)) {
  1144 + that.size.width = newWidth;
  1145 + that.size.height = newHeight;
  1146 + that.position.top = op.top - oy;
  1147 + } else if (/^(sw)$/.test(a)) {
  1148 + that.size.width = newWidth;
  1149 + that.size.height = newHeight;
  1150 + that.position.left = op.left - ox;
  1151 + } else {
  1152 + if ( newHeight - gridY <= 0 || newWidth - gridX <= 0) {
  1153 + outerDimensions = that._getPaddingPlusBorderDimensions( this );
  1154 + }
  1155 +
  1156 + if ( newHeight - gridY > 0 ) {
  1157 + that.size.height = newHeight;
  1158 + that.position.top = op.top - oy;
  1159 + } else {
  1160 + newHeight = gridY - outerDimensions.height;
  1161 + that.size.height = newHeight;
  1162 + that.position.top = op.top + os.height - newHeight;
  1163 + }
  1164 + if ( newWidth - gridX > 0 ) {
  1165 + that.size.width = newWidth;
  1166 + that.position.left = op.left - ox;
  1167 + } else {
  1168 + newWidth = gridY - outerDimensions.height;
  1169 + that.size.width = newWidth;
  1170 + that.position.left = op.left + os.width - newWidth;
  1171 + }
  1172 + }
  1173 + }
  1174 +
  1175 +});
  1176 +
  1177 +return $.ui.resizable;
  1178 +
  1179 +}));
... ...
src/main/resources/static/real_control_v2/assets/plugins/jquery.ui/themes/base/accordion.css 0 → 100644
  1 +/*!
  2 + * jQuery UI Accordion 1.11.1
  3 + * http://jqueryui.com
  4 + *
  5 + * Copyright 2014 jQuery Foundation and other contributors
  6 + * Released under the MIT license.
  7 + * http://jquery.org/license
  8 + *
  9 + * http://api.jqueryui.com/accordion/#theming
  10 + */
  11 +.ui-accordion .ui-accordion-header {
  12 + display: block;
  13 + cursor: pointer;
  14 + position: relative;
  15 + margin: 2px 0 0 0;
  16 + padding: .5em .5em .5em .7em;
  17 + min-height: 0; /* support: IE7 */
  18 + font-size: 100%;
  19 +}
  20 +.ui-accordion .ui-accordion-icons {
  21 + padding-left: 2.2em;
  22 +}
  23 +.ui-accordion .ui-accordion-icons .ui-accordion-icons {
  24 + padding-left: 2.2em;
  25 +}
  26 +.ui-accordion .ui-accordion-header .ui-accordion-header-icon {
  27 + position: absolute;
  28 + left: .5em;
  29 + top: 50%;
  30 + margin-top: -8px;
  31 +}
  32 +.ui-accordion .ui-accordion-content {
  33 + padding: 1em 2.2em;
  34 + border-top: 0;
  35 + overflow: auto;
  36 +}
... ...
src/main/resources/static/real_control_v2/assets/plugins/jquery.ui/themes/base/all.css 0 → 100644
  1 +/*!
  2 + * jQuery UI CSS Framework 1.11.1
  3 + * http://jqueryui.com
  4 + *
  5 + * Copyright 2014 jQuery Foundation and other contributors
  6 + * Released under the MIT license.
  7 + * http://jquery.org/license
  8 + *
  9 + * http://api.jqueryui.com/category/theming/
  10 + */
  11 +@import "base.css";
  12 +@import "theme.css";
... ...
src/main/resources/static/real_control_v2/assets/plugins/jquery.ui/themes/base/autocomplete.css 0 → 100644
  1 +/*!
  2 + * jQuery UI Autocomplete 1.11.1
  3 + * http://jqueryui.com
  4 + *
  5 + * Copyright 2014 jQuery Foundation and other contributors
  6 + * Released under the MIT license.
  7 + * http://jquery.org/license
  8 + *
  9 + * http://api.jqueryui.com/autocomplete/#theming
  10 + */
  11 +.ui-autocomplete {
  12 + position: absolute;
  13 + top: 0;
  14 + left: 0;
  15 + cursor: default;
  16 +}
... ...
src/main/resources/static/real_control_v2/assets/plugins/jquery.ui/themes/base/base.css 0 → 100644
  1 +/*!
  2 + * jQuery UI CSS Framework 1.11.1
  3 + * http://jqueryui.com
  4 + *
  5 + * Copyright 2014 jQuery Foundation and other contributors
  6 + * Released under the MIT license.
  7 + * http://jquery.org/license
  8 + *
  9 + * http://api.jqueryui.com/category/theming/
  10 + */
  11 +@import url("core.css");
  12 +
  13 +@import url("accordion.css");
  14 +@import url("autocomplete.css");
  15 +@import url("button.css");
  16 +@import url("datepicker.css");
  17 +@import url("dialog.css");
  18 +@import url("draggable.css");
  19 +@import url("menu.css");
  20 +@import url("progressbar.css");
  21 +@import url("resizable.css");
  22 +@import url("selectable.css");
  23 +@import url("selectmenu.css");
  24 +@import url("sortable.css");
  25 +@import url("slider.css");
  26 +@import url("spinner.css");
  27 +@import url("tabs.css");
  28 +@import url("tooltip.css");
... ...
src/main/resources/static/real_control_v2/assets/plugins/jquery.ui/themes/base/button.css 0 → 100644
  1 +/*!
  2 + * jQuery UI Button 1.11.1
  3 + * http://jqueryui.com
  4 + *
  5 + * Copyright 2014 jQuery Foundation and other contributors
  6 + * Released under the MIT license.
  7 + * http://jquery.org/license
  8 + *
  9 + * http://api.jqueryui.com/button/#theming
  10 + */
  11 +.ui-button {
  12 + display: inline-block;
  13 + position: relative;
  14 + padding: 0;
  15 + line-height: normal;
  16 + margin-right: .1em;
  17 + cursor: pointer;
  18 + vertical-align: middle;
  19 + text-align: center;
  20 + overflow: visible; /* removes extra width in IE */
  21 +}
  22 +.ui-button,
  23 +.ui-button:link,
  24 +.ui-button:visited,
  25 +.ui-button:hover,
  26 +.ui-button:active {
  27 + text-decoration: none;
  28 +}
  29 +/* to make room for the icon, a width needs to be set here */
  30 +.ui-button-icon-only {
  31 + width: 2.2em;
  32 +}
  33 +/* button elements seem to need a little more width */
  34 +button.ui-button-icon-only {
  35 + width: 2.4em;
  36 +}
  37 +.ui-button-icons-only {
  38 + width: 3.4em;
  39 +}
  40 +button.ui-button-icons-only {
  41 + width: 3.7em;
  42 +}
  43 +
  44 +/* button text element */
  45 +.ui-button .ui-button-text {
  46 + display: block;
  47 + line-height: normal;
  48 +}
  49 +.ui-button-text-only .ui-button-text {
  50 + padding: .4em 1em;
  51 +}
  52 +.ui-button-icon-only .ui-button-text,
  53 +.ui-button-icons-only .ui-button-text {
  54 + padding: .4em;
  55 + text-indent: -9999999px;
  56 +}
  57 +.ui-button-text-icon-primary .ui-button-text,
  58 +.ui-button-text-icons .ui-button-text {
  59 + padding: .4em 1em .4em 2.1em;
  60 +}
  61 +.ui-button-text-icon-secondary .ui-button-text,
  62 +.ui-button-text-icons .ui-button-text {
  63 + padding: .4em 2.1em .4em 1em;
  64 +}
  65 +.ui-button-text-icons .ui-button-text {
  66 + padding-left: 2.1em;
  67 + padding-right: 2.1em;
  68 +}
  69 +/* no icon support for input elements, provide padding by default */
  70 +input.ui-button {
  71 + padding: .4em 1em;
  72 +}
  73 +
  74 +/* button icon element(s) */
  75 +.ui-button-icon-only .ui-icon,
  76 +.ui-button-text-icon-primary .ui-icon,
  77 +.ui-button-text-icon-secondary .ui-icon,
  78 +.ui-button-text-icons .ui-icon,
  79 +.ui-button-icons-only .ui-icon {
  80 + position: absolute;
  81 + top: 50%;
  82 + margin-top: -8px;
  83 +}
  84 +.ui-button-icon-only .ui-icon {
  85 + left: 50%;
  86 + margin-left: -8px;
  87 +}
  88 +.ui-button-text-icon-primary .ui-button-icon-primary,
  89 +.ui-button-text-icons .ui-button-icon-primary,
  90 +.ui-button-icons-only .ui-button-icon-primary {
  91 + left: .5em;
  92 +}
  93 +.ui-button-text-icon-secondary .ui-button-icon-secondary,
  94 +.ui-button-text-icons .ui-button-icon-secondary,
  95 +.ui-button-icons-only .ui-button-icon-secondary {
  96 + right: .5em;
  97 +}
  98 +
  99 +/* button sets */
  100 +.ui-buttonset {
  101 + margin-right: 7px;
  102 +}
  103 +.ui-buttonset .ui-button {
  104 + margin-left: 0;
  105 + margin-right: -.3em;
  106 +}
  107 +
  108 +/* workarounds */
  109 +/* reset extra padding in Firefox, see h5bp.com/l */
  110 +input.ui-button::-moz-focus-inner,
  111 +button.ui-button::-moz-focus-inner {
  112 + border: 0;
  113 + padding: 0;
  114 +}
... ...
src/main/resources/static/real_control_v2/assets/plugins/jquery.ui/themes/base/core.css 0 → 100644
  1 +/*!
  2 + * jQuery UI CSS Framework 1.11.1
  3 + * http://jqueryui.com
  4 + *
  5 + * Copyright 2014 jQuery Foundation and other contributors
  6 + * Released under the MIT license.
  7 + * http://jquery.org/license
  8 + *
  9 + * http://api.jqueryui.com/category/theming/
  10 + */
  11 +
  12 +/* Layout helpers
  13 +----------------------------------*/
  14 +.ui-helper-hidden {
  15 + display: none;
  16 +}
  17 +.ui-helper-hidden-accessible {
  18 + border: 0;
  19 + clip: rect(0 0 0 0);
  20 + height: 1px;
  21 + margin: -1px;
  22 + overflow: hidden;
  23 + padding: 0;
  24 + position: absolute;
  25 + width: 1px;
  26 +}
  27 +.ui-helper-reset {
  28 + margin: 0;
  29 + padding: 0;
  30 + border: 0;
  31 + outline: 0;
  32 + line-height: 1.3;
  33 + text-decoration: none;
  34 + font-size: 100%;
  35 + list-style: none;
  36 +}
  37 +.ui-helper-clearfix:before,
  38 +.ui-helper-clearfix:after {
  39 + content: "";
  40 + display: table;
  41 + border-collapse: collapse;
  42 +}
  43 +.ui-helper-clearfix:after {
  44 + clear: both;
  45 +}
  46 +.ui-helper-clearfix {
  47 + min-height: 0; /* support: IE7 */
  48 +}
  49 +.ui-helper-zfix {
  50 + width: 100%;
  51 + height: 100%;
  52 + top: 0;
  53 + left: 0;
  54 + position: absolute;
  55 + opacity: 0;
  56 + filter:Alpha(Opacity=0); /* support: IE8 */
  57 +}
  58 +
  59 +.ui-front {
  60 + z-index: 100;
  61 +}
  62 +
  63 +
  64 +/* Interaction Cues
  65 +----------------------------------*/
  66 +.ui-state-disabled {
  67 + cursor: default !important;
  68 +}
  69 +
  70 +
  71 +/* Icons
  72 +----------------------------------*/
  73 +
  74 +/* states and images */
  75 +.ui-icon {
  76 + display: block;
  77 + text-indent: -99999px;
  78 + overflow: hidden;
  79 + background-repeat: no-repeat;
  80 +}
  81 +
  82 +
  83 +/* Misc visuals
  84 +----------------------------------*/
  85 +
  86 +/* Overlays */
  87 +.ui-widget-overlay {
  88 + position: fixed;
  89 + top: 0;
  90 + left: 0;
  91 + width: 100%;
  92 + height: 100%;
  93 +}
... ...
src/main/resources/static/real_control_v2/assets/plugins/jquery.ui/themes/base/datepicker.css 0 → 100644
  1 +/*!
  2 + * jQuery UI Datepicker 1.11.1
  3 + * http://jqueryui.com
  4 + *
  5 + * Copyright 2014 jQuery Foundation and other contributors
  6 + * Released under the MIT license.
  7 + * http://jquery.org/license
  8 + *
  9 + * http://api.jqueryui.com/datepicker/#theming
  10 + */
  11 +.ui-datepicker {
  12 + width: 17em;
  13 + padding: .2em .2em 0;
  14 + display: none;
  15 +}
  16 +.ui-datepicker .ui-datepicker-header {
  17 + position: relative;
  18 + padding: .2em 0;
  19 +}
  20 +.ui-datepicker .ui-datepicker-prev,
  21 +.ui-datepicker .ui-datepicker-next {
  22 + position: absolute;
  23 + top: 2px;
  24 + width: 1.8em;
  25 + height: 1.8em;
  26 +}
  27 +.ui-datepicker .ui-datepicker-prev-hover,
  28 +.ui-datepicker .ui-datepicker-next-hover {
  29 + top: 1px;
  30 +}
  31 +.ui-datepicker .ui-datepicker-prev {
  32 + left: 2px;
  33 +}
  34 +.ui-datepicker .ui-datepicker-next {
  35 + right: 2px;
  36 +}
  37 +.ui-datepicker .ui-datepicker-prev-hover {
  38 + left: 1px;
  39 +}
  40 +.ui-datepicker .ui-datepicker-next-hover {
  41 + right: 1px;
  42 +}
  43 +.ui-datepicker .ui-datepicker-prev span,
  44 +.ui-datepicker .ui-datepicker-next span {
  45 + display: block;
  46 + position: absolute;
  47 + left: 50%;
  48 + margin-left: -8px;
  49 + top: 50%;
  50 + margin-top: -8px;
  51 +}
  52 +.ui-datepicker .ui-datepicker-title {
  53 + margin: 0 2.3em;
  54 + line-height: 1.8em;
  55 + text-align: center;
  56 +}
  57 +.ui-datepicker .ui-datepicker-title select {
  58 + font-size: 1em;
  59 + margin: 1px 0;
  60 +}
  61 +.ui-datepicker select.ui-datepicker-month,
  62 +.ui-datepicker select.ui-datepicker-year {
  63 + width: 45%;
  64 +}
  65 +.ui-datepicker table {
  66 + width: 100%;
  67 + font-size: .9em;
  68 + border-collapse: collapse;
  69 + margin: 0 0 .4em;
  70 +}
  71 +.ui-datepicker th {
  72 + padding: .7em .3em;
  73 + text-align: center;
  74 + font-weight: bold;
  75 + border: 0;
  76 +}
  77 +.ui-datepicker td {
  78 + border: 0;
  79 + padding: 1px;
  80 +}
  81 +.ui-datepicker td span,
  82 +.ui-datepicker td a {
  83 + display: block;
  84 + padding: .2em;
  85 + text-align: right;
  86 + text-decoration: none;
  87 +}
  88 +.ui-datepicker .ui-datepicker-buttonpane {
  89 + background-image: none;
  90 + margin: .7em 0 0 0;
  91 + padding: 0 .2em;
  92 + border-left: 0;
  93 + border-right: 0;
  94 + border-bottom: 0;
  95 +}
  96 +.ui-datepicker .ui-datepicker-buttonpane button {
  97 + float: right;
  98 + margin: .5em .2em .4em;
  99 + cursor: pointer;
  100 + padding: .2em .6em .3em .6em;
  101 + width: auto;
  102 + overflow: visible;
  103 +}
  104 +.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
  105 + float: left;
  106 +}
  107 +
  108 +/* with multiple calendars */
  109 +.ui-datepicker.ui-datepicker-multi {
  110 + width: auto;
  111 +}
  112 +.ui-datepicker-multi .ui-datepicker-group {
  113 + float: left;
  114 +}
  115 +.ui-datepicker-multi .ui-datepicker-group table {
  116 + width: 95%;
  117 + margin: 0 auto .4em;
  118 +}
  119 +.ui-datepicker-multi-2 .ui-datepicker-group {
  120 + width: 50%;
  121 +}
  122 +.ui-datepicker-multi-3 .ui-datepicker-group {
  123 + width: 33.3%;
  124 +}
  125 +.ui-datepicker-multi-4 .ui-datepicker-group {
  126 + width: 25%;
  127 +}
  128 +.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
  129 +.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
  130 + border-left-width: 0;
  131 +}
  132 +.ui-datepicker-multi .ui-datepicker-buttonpane {
  133 + clear: left;
  134 +}
  135 +.ui-datepicker-row-break {
  136 + clear: both;
  137 + width: 100%;
  138 + font-size: 0;
  139 +}
  140 +
  141 +/* RTL support */
  142 +.ui-datepicker-rtl {
  143 + direction: rtl;
  144 +}
  145 +.ui-datepicker-rtl .ui-datepicker-prev {
  146 + right: 2px;
  147 + left: auto;
  148 +}
  149 +.ui-datepicker-rtl .ui-datepicker-next {
  150 + left: 2px;
  151 + right: auto;
  152 +}
  153 +.ui-datepicker-rtl .ui-datepicker-prev:hover {
  154 + right: 1px;
  155 + left: auto;
  156 +}
  157 +.ui-datepicker-rtl .ui-datepicker-next:hover {
  158 + left: 1px;
  159 + right: auto;
  160 +}
  161 +.ui-datepicker-rtl .ui-datepicker-buttonpane {
  162 + clear: right;
  163 +}
  164 +.ui-datepicker-rtl .ui-datepicker-buttonpane button {
  165 + float: left;
  166 +}
  167 +.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
  168 +.ui-datepicker-rtl .ui-datepicker-group {
  169 + float: right;
  170 +}
  171 +.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
  172 +.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
  173 + border-right-width: 0;
  174 + border-left-width: 1px;
  175 +}
... ...
src/main/resources/static/real_control_v2/assets/plugins/jquery.ui/themes/base/dialog.css 0 → 100644
  1 +/*!
  2 + * jQuery UI Dialog 1.11.1
  3 + * http://jqueryui.com
  4 + *
  5 + * Copyright 2014 jQuery Foundation and other contributors
  6 + * Released under the MIT license.
  7 + * http://jquery.org/license
  8 + *
  9 + * http://api.jqueryui.com/dialog/#theming
  10 + */
  11 +.ui-dialog {
  12 + overflow: hidden;
  13 + position: absolute;
  14 + top: 0;
  15 + left: 0;
  16 + padding: .2em;
  17 + outline: 0;
  18 +}
  19 +.ui-dialog .ui-dialog-titlebar {
  20 + padding: .4em 1em;
  21 + position: relative;
  22 +}
  23 +.ui-dialog .ui-dialog-title {
  24 + float: left;
  25 + margin: .1em 0;
  26 + white-space: nowrap;
  27 + width: 90%;
  28 + overflow: hidden;
  29 + text-overflow: ellipsis;
  30 +}
  31 +.ui-dialog .ui-dialog-titlebar-close {
  32 + position: absolute;
  33 + right: .3em;
  34 + top: 50%;
  35 + width: 20px;
  36 + margin: -10px 0 0 0;
  37 + padding: 1px;
  38 + height: 20px;
  39 +}
  40 +.ui-dialog .ui-dialog-content {
  41 + position: relative;
  42 + border: 0;
  43 + padding: .5em 1em;
  44 + background: none;
  45 + overflow: auto;
  46 +}
  47 +.ui-dialog .ui-dialog-buttonpane {
  48 + text-align: left;
  49 + border-width: 1px 0 0 0;
  50 + background-image: none;
  51 + margin-top: .5em;
  52 + padding: .3em 1em .5em .4em;
  53 +}
  54 +.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
  55 + float: right;
  56 +}
  57 +.ui-dialog .ui-dialog-buttonpane button {
  58 + margin: .5em .4em .5em 0;
  59 + cursor: pointer;
  60 +}
  61 +.ui-dialog .ui-resizable-se {
  62 + width: 12px;
  63 + height: 12px;
  64 + right: -5px;
  65 + bottom: -5px;
  66 + background-position: 16px 16px;
  67 +}
  68 +.ui-draggable .ui-dialog-titlebar {
  69 + cursor: move;
  70 +}
... ...
src/main/resources/static/real_control_v2/assets/plugins/jquery.ui/themes/base/draggable.css 0 → 100644
  1 +/*!
  2 + * jQuery UI Draggable 1.11.1
  3 + * http://jqueryui.com
  4 + *
  5 + * Copyright 2014 jQuery Foundation and other contributors
  6 + * Released under the MIT license.
  7 + * http://jquery.org/license
  8 + */
  9 +.ui-draggable-handle {
  10 + -ms-touch-action: none;
  11 + touch-action: none;
  12 +}
... ...
src/main/resources/static/real_control_v2/assets/plugins/jquery.ui/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png 0 → 100644

180 Bytes

src/main/resources/static/real_control_v2/assets/plugins/jquery.ui/themes/base/images/ui-bg_flat_75_ffffff_40x100.png 0 → 100644

178 Bytes

src/main/resources/static/real_control_v2/assets/plugins/jquery.ui/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png 0 → 100644

120 Bytes

src/main/resources/static/real_control_v2/assets/plugins/jquery.ui/themes/base/images/ui-bg_glass_65_ffffff_1x400.png 0 → 100644

105 Bytes

src/main/resources/static/real_control_v2/assets/plugins/jquery.ui/themes/base/images/ui-bg_glass_75_dadada_1x400.png 0 → 100644

111 Bytes

src/main/resources/static/real_control_v2/assets/plugins/jquery.ui/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png 0 → 100644

110 Bytes

src/main/resources/static/real_control_v2/assets/plugins/jquery.ui/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png 0 → 100644

119 Bytes

src/main/resources/static/real_control_v2/assets/plugins/jquery.ui/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png 0 → 100644

101 Bytes

src/main/resources/static/real_control_v2/assets/plugins/jquery.ui/themes/base/images/ui-icons_222222_256x240.png 0 → 100644

4.27 KB

src/main/resources/static/real_control_v2/assets/plugins/jquery.ui/themes/base/images/ui-icons_2e83ff_256x240.png 0 → 100644

4.27 KB

src/main/resources/static/real_control_v2/assets/plugins/jquery.ui/themes/base/images/ui-icons_454545_256x240.png 0 → 100644

4.27 KB

src/main/resources/static/real_control_v2/assets/plugins/jquery.ui/themes/base/images/ui-icons_888888_256x240.png 0 → 100644

4.27 KB

src/main/resources/static/real_control_v2/assets/plugins/jquery.ui/themes/base/images/ui-icons_cd0a0a_256x240.png 0 → 100644

4.27 KB

src/main/resources/static/real_control_v2/assets/plugins/jquery.ui/themes/base/menu.css 0 → 100644
  1 +/*!
  2 + * jQuery UI Menu 1.11.1
  3 + * http://jqueryui.com
  4 + *
  5 + * Copyright 2014 jQuery Foundation and other contributors
  6 + * Released under the MIT license.
  7 + * http://jquery.org/license
  8 + *
  9 + * http://api.jqueryui.com/menu/#theming
  10 + */
  11 +.ui-menu {
  12 + list-style: none;
  13 + padding: 0;
  14 + margin: 0;
  15 + display: block;
  16 + outline: none;
  17 +}
  18 +.ui-menu .ui-menu {
  19 + position: absolute;
  20 +}
  21 +.ui-menu .ui-menu-item {
  22 + position: relative;
  23 + margin: 0;
  24 + padding: 3px 1em 3px .4em;
  25 + cursor: pointer;
  26 + min-height: 0; /* support: IE7 */
  27 + /* support: IE10, see #8844 */
  28 + list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
  29 +}
  30 +.ui-menu .ui-menu-divider {
  31 + margin: 5px 0;
  32 + height: 0;
  33 + font-size: 0;
  34 + line-height: 0;
  35 + border-width: 1px 0 0 0;
  36 +}
  37 +.ui-menu .ui-state-focus,
  38 +.ui-menu .ui-state-active {
  39 + margin: -1px;
  40 +}
  41 +
  42 +/* icon support */
  43 +.ui-menu-icons {
  44 + position: relative;
  45 +}
  46 +.ui-menu-icons .ui-menu-item {
  47 + padding-left: 2em;
  48 +}
  49 +
  50 +/* left-aligned */
  51 +.ui-menu .ui-icon {
  52 + position: absolute;
  53 + top: 0;
  54 + bottom: 0;
  55 + left: .2em;
  56 + margin: auto 0;
  57 +}
  58 +
  59 +/* right-aligned */
  60 +.ui-menu .ui-menu-icon {
  61 + left: auto;
  62 + right: 0;
  63 +}
... ...
src/main/resources/static/real_control_v2/assets/plugins/jquery.ui/themes/base/progressbar.css 0 → 100644
  1 +/*!
  2 + * jQuery UI Progressbar 1.11.1
  3 + * http://jqueryui.com
  4 + *
  5 + * Copyright 2014 jQuery Foundation and other contributors
  6 + * Released under the MIT license.
  7 + * http://jquery.org/license
  8 + *
  9 + * http://api.jqueryui.com/progressbar/#theming
  10 + */
  11 +.ui-progressbar {
  12 + height: 2em;
  13 + text-align: left;
  14 + overflow: hidden;
  15 +}
  16 +.ui-progressbar .ui-progressbar-value {
  17 + margin: -1px;
  18 + height: 100%;
  19 +}
  20 +.ui-progressbar .ui-progressbar-overlay {
  21 + background: url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");
  22 + height: 100%;
  23 + filter: alpha(opacity=25); /* support: IE8 */
  24 + opacity: 0.25;
  25 +}
  26 +.ui-progressbar-indeterminate .ui-progressbar-value {
  27 + background-image: none;
  28 +}
... ...
src/main/resources/static/real_control_v2/assets/plugins/jquery.ui/themes/base/resizable.css 0 → 100644
  1 +/*!
  2 + * jQuery UI Resizable 1.11.1
  3 + * http://jqueryui.com
  4 + *
  5 + * Copyright 2014 jQuery Foundation and other contributors
  6 + * Released under the MIT license.
  7 + * http://jquery.org/license
  8 + */
  9 +.ui-resizable {
  10 + position: relative;
  11 +}
  12 +.ui-resizable-handle {
  13 + position: absolute;
  14 + font-size: 0.1px;
  15 + display: block;
  16 + -ms-touch-action: none;
  17 + touch-action: none;
  18 +}
  19 +.ui-resizable-disabled .ui-resizable-handle,
  20 +.ui-resizable-autohide .ui-resizable-handle {
  21 + display: none;
  22 +}
  23 +.ui-resizable-n {
  24 + cursor: n-resize;
  25 + height: 7px;
  26 + width: 100%;
  27 + top: -5px;
  28 + left: 0;
  29 +}
  30 +.ui-resizable-s {
  31 + cursor: s-resize;
  32 + height: 7px;
  33 + width: 100%;
  34 + bottom: -5px;
  35 + left: 0;
  36 +}
  37 +.ui-resizable-e {
  38 + cursor: e-resize;
  39 + width: 7px;
  40 + right: -5px;
  41 + top: 0;
  42 + height: 100%;
  43 +}
  44 +.ui-resizable-w {
  45 + cursor: w-resize;
  46 + width: 7px;
  47 + left: -5px;
  48 + top: 0;
  49 + height: 100%;
  50 +}
  51 +.ui-resizable-se {
  52 + cursor: se-resize;
  53 + width: 12px;
  54 + height: 12px;
  55 + right: 1px;
  56 + bottom: 1px;
  57 +}
  58 +.ui-resizable-sw {
  59 + cursor: sw-resize;
  60 + width: 9px;
  61 + height: 9px;
  62 + left: -5px;
  63 + bottom: -5px;
  64 +}
  65 +.ui-resizable-nw {
  66 + cursor: nw-resize;
  67 + width: 9px;
  68 + height: 9px;
  69 + left: -5px;
  70 + top: -5px;
  71 +}
  72 +.ui-resizable-ne {
  73 + cursor: ne-resize;
  74 + width: 9px;
  75 + height: 9px;
  76 + right: -5px;
  77 + top: -5px;
  78 +}
... ...
src/main/resources/static/real_control_v2/assets/plugins/jquery.ui/themes/base/selectable.css 0 → 100644
  1 +/*!
  2 + * jQuery UI Selectable 1.11.1
  3 + * http://jqueryui.com
  4 + *
  5 + * Copyright 2014 jQuery Foundation and other contributors
  6 + * Released under the MIT license.
  7 + * http://jquery.org/license
  8 + */
  9 +.ui-selectable {
  10 + -ms-touch-action: none;
  11 + touch-action: none;
  12 +}
  13 +.ui-selectable-helper {
  14 + position: absolute;
  15 + z-index: 100;
  16 + border: 1px dotted black;
  17 +}
... ...
src/main/resources/static/real_control_v2/assets/plugins/jquery.ui/themes/base/selectmenu.css 0 → 100644
  1 +/*!
  2 + * jQuery UI Selectmenu 1.11.1
  3 + * http://jqueryui.com
  4 + *
  5 + * Copyright 2014 jQuery Foundation and other contributors
  6 + * Released under the MIT license.
  7 + * http://jquery.org/license
  8 + *
  9 + * http://api.jqueryui.com/selectmenu/#theming
  10 + */
  11 +.ui-selectmenu-menu {
  12 + padding: 0;
  13 + margin: 0;
  14 + position: absolute;
  15 + top: 0;
  16 + left: 0;
  17 + display: none;
  18 +}
  19 +.ui-selectmenu-menu .ui-menu {
  20 + overflow: auto;
  21 + /* Support: IE7 */
  22 + overflow-x: hidden;
  23 + padding-bottom: 1px;
  24 +}
  25 +.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {
  26 + font-size: 1em;
  27 + font-weight: bold;
  28 + line-height: 1.5;
  29 + padding: 2px 0.4em;
  30 + margin: 0.5em 0 0 0;
  31 + height: auto;
  32 + border: 0;
  33 +}
  34 +.ui-selectmenu-open {
  35 + display: block;
  36 +}
  37 +.ui-selectmenu-button {
  38 + display: inline-block;
  39 + overflow: hidden;
  40 + position: relative;
  41 + text-decoration: none;
  42 + cursor: pointer;
  43 +}
  44 +.ui-selectmenu-button span.ui-icon {
  45 + right: 0.5em;
  46 + left: auto;
  47 + margin-top: -8px;
  48 + position: absolute;
  49 + top: 50%;
  50 +}
  51 +.ui-selectmenu-button span.ui-selectmenu-text {
  52 + text-align: left;
  53 + padding: 0.4em 2.1em 0.4em 1em;
  54 + display: block;
  55 + line-height: 1.4;
  56 + overflow: hidden;
  57 + text-overflow: ellipsis;
  58 + white-space: nowrap;
  59 +}
... ...
src/main/resources/static/real_control_v2/assets/plugins/jquery.ui/themes/base/slider.css 0 → 100644
  1 +/*!
  2 + * jQuery UI Slider 1.11.1
  3 + * http://jqueryui.com
  4 + *
  5 + * Copyright 2014 jQuery Foundation and other contributors
  6 + * Released under the MIT license.
  7 + * http://jquery.org/license
  8 + *
  9 + * http://api.jqueryui.com/slider/#theming
  10 + */
  11 +.ui-slider {
  12 + position: relative;
  13 + text-align: left;
  14 +}
  15 +.ui-slider .ui-slider-handle {
  16 + position: absolute;
  17 + z-index: 2;
  18 + width: 1.2em;
  19 + height: 1.2em;
  20 + cursor: default;
  21 + -ms-touch-action: none;
  22 + touch-action: none;
  23 +}
  24 +.ui-slider .ui-slider-range {
  25 + position: absolute;
  26 + z-index: 1;
  27 + font-size: .7em;
  28 + display: block;
  29 + border: 0;
  30 + background-position: 0 0;
  31 +}
  32 +
  33 +/* support: IE8 - See #6727 */
  34 +.ui-slider.ui-state-disabled .ui-slider-handle,
  35 +.ui-slider.ui-state-disabled .ui-slider-range {
  36 + filter: inherit;
  37 +}
  38 +
  39 +.ui-slider-horizontal {
  40 + height: .8em;
  41 +}
  42 +.ui-slider-horizontal .ui-slider-handle {
  43 + top: -.3em;
  44 + margin-left: -.6em;
  45 +}
  46 +.ui-slider-horizontal .ui-slider-range {
  47 + top: 0;
  48 + height: 100%;
  49 +}
  50 +.ui-slider-horizontal .ui-slider-range-min {
  51 + left: 0;
  52 +}
  53 +.ui-slider-horizontal .ui-slider-range-max {
  54 + right: 0;
  55 +}
  56 +
  57 +.ui-slider-vertical {
  58 + width: .8em;
  59 + height: 100px;
  60 +}
  61 +.ui-slider-vertical .ui-slider-handle {
  62 + left: -.3em;
  63 + margin-left: 0;
  64 + margin-bottom: -.6em;
  65 +}
  66 +.ui-slider-vertical .ui-slider-range {
  67 + left: 0;
  68 + width: 100%;
  69 +}
  70 +.ui-slider-vertical .ui-slider-range-min {
  71 + bottom: 0;
  72 +}
  73 +.ui-slider-vertical .ui-slider-range-max {
  74 + top: 0;
  75 +}
... ...
src/main/resources/static/real_control_v2/assets/plugins/jquery.ui/themes/base/sortable.css 0 → 100644
  1 +/*!
  2 + * jQuery UI Sortable 1.11.1
  3 + * http://jqueryui.com
  4 + *
  5 + * Copyright 2014 jQuery Foundation and other contributors
  6 + * Released under the MIT license.
  7 + * http://jquery.org/license
  8 + */
  9 +.ui-sortable-handle {
  10 + -ms-touch-action: none;
  11 + touch-action: none;
  12 +}
... ...
src/main/resources/static/real_control_v2/assets/plugins/jquery.ui/themes/base/spinner.css 0 → 100644
  1 +/*!
  2 + * jQuery UI Spinner 1.11.1
  3 + * http://jqueryui.com
  4 + *
  5 + * Copyright 2014 jQuery Foundation and other contributors
  6 + * Released under the MIT license.
  7 + * http://jquery.org/license
  8 + *
  9 + * http://api.jqueryui.com/spinner/#theming
  10 + */
  11 +.ui-spinner {
  12 + position: relative;
  13 + display: inline-block;
  14 + overflow: hidden;
  15 + padding: 0;
  16 + vertical-align: middle;
  17 +}
  18 +.ui-spinner-input {
  19 + border: none;
  20 + background: none;
  21 + color: inherit;
  22 + padding: 0;
  23 + margin: .2em 0;
  24 + vertical-align: middle;
  25 + margin-left: .4em;
  26 + margin-right: 22px;
  27 +}
  28 +.ui-spinner-button {
  29 + width: 16px;
  30 + height: 50%;
  31 + font-size: .5em;
  32 + padding: 0;
  33 + margin: 0;
  34 + text-align: center;
  35 + position: absolute;
  36 + cursor: default;
  37 + display: block;
  38 + overflow: hidden;
  39 + right: 0;
  40 +}
  41 +/* more specificity required here to override default borders */
  42 +.ui-spinner a.ui-spinner-button {
  43 + border-top: none;
  44 + border-bottom: none;
  45 + border-right: none;
  46 +}
  47 +/* vertically center icon */
  48 +.ui-spinner .ui-icon {
  49 + position: absolute;
  50 + margin-top: -8px;
  51 + top: 50%;
  52 + left: 0;
  53 +}
  54 +.ui-spinner-up {
  55 + top: 0;
  56 +}
  57 +.ui-spinner-down {
  58 + bottom: 0;
  59 +}
  60 +
  61 +/* TR overrides */
  62 +.ui-spinner .ui-icon-triangle-1-s {
  63 + /* need to fix icons sprite */
  64 + background-position: -65px -16px;
  65 +}
... ...
src/main/resources/static/real_control_v2/assets/plugins/jquery.ui/themes/base/tabs.css 0 → 100644
  1 +/*!
  2 + * jQuery UI Tabs 1.11.1
  3 + * http://jqueryui.com
  4 + *
  5 + * Copyright 2014 jQuery Foundation and other contributors
  6 + * Released under the MIT license.
  7 + * http://jquery.org/license
  8 + *
  9 + * http://api.jqueryui.com/tabs/#theming
  10 + */
  11 +.ui-tabs {
  12 + position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
  13 + padding: .2em;
  14 +}
  15 +.ui-tabs .ui-tabs-nav {
  16 + margin: 0;
  17 + padding: .2em .2em 0;
  18 +}
  19 +.ui-tabs .ui-tabs-nav li {
  20 + list-style: none;
  21 + float: left;
  22 + position: relative;
  23 + top: 0;
  24 + margin: 1px .2em 0 0;
  25 + border-bottom-width: 0;
  26 + padding: 0;
  27 + white-space: nowrap;
  28 +}
  29 +.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
  30 + float: left;
  31 + padding: .5em 1em;
  32 + text-decoration: none;
  33 +}
  34 +.ui-tabs .ui-tabs-nav li.ui-tabs-active {
  35 + margin-bottom: -1px;
  36 + padding-bottom: 1px;
  37 +}
  38 +.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
  39 +.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
  40 +.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
  41 + cursor: text;
  42 +}
  43 +.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
  44 + cursor: pointer;
  45 +}
  46 +.ui-tabs .ui-tabs-panel {
  47 + display: block;
  48 + border-width: 0;
  49 + padding: 1em 1.4em;
  50 + background: none;
  51 +}
... ...
src/main/resources/static/real_control_v2/assets/plugins/jquery.ui/themes/base/theme.css 0 → 100644
  1 +/*!
  2 + * jQuery UI CSS Framework 1.11.1
  3 + * http://jqueryui.com
  4 + *
  5 + * Copyright 2014 jQuery Foundation and other contributors
  6 + * Released under the MIT license.
  7 + * http://jquery.org/license
  8 + *
  9 + * http://api.jqueryui.com/category/theming/
  10 + *
  11 + * To view and modify this theme, visit http://jqueryui.com/themeroller/
  12 + */
  13 +
  14 +
  15 +/* Component containers
  16 +----------------------------------*/
  17 +.ui-widget {
  18 + font-family: Verdana,Arial,sans-serif/*{ffDefault}*/;
  19 + font-size: 1.1em/*{fsDefault}*/;
  20 +}
  21 +.ui-widget .ui-widget {
  22 + font-size: 1em;
  23 +}
  24 +.ui-widget input,
  25 +.ui-widget select,
  26 +.ui-widget textarea,
  27 +.ui-widget button {
  28 + font-family: Verdana,Arial,sans-serif/*{ffDefault}*/;
  29 + font-size: 1em;
  30 +}
  31 +.ui-widget-content {
  32 + border: 1px solid #aaaaaa/*{borderColorContent}*/;
  33 + background: #ffffff/*{bgColorContent}*/ url("images/ui-bg_flat_75_ffffff_40x100.png")/*{bgImgUrlContent}*/ 50%/*{bgContentXPos}*/ 50%/*{bgContentYPos}*/ repeat-x/*{bgContentRepeat}*/;
  34 + color: #222222/*{fcContent}*/;
  35 +}
  36 +.ui-widget-content a {
  37 + color: #222222/*{fcContent}*/;
  38 +}
  39 +.ui-widget-header {
  40 + border: 1px solid #aaaaaa/*{borderColorHeader}*/;
  41 + background: #cccccc/*{bgColorHeader}*/ url("images/ui-bg_highlight-soft_75_cccccc_1x100.png")/*{bgImgUrlHeader}*/ 50%/*{bgHeaderXPos}*/ 50%/*{bgHeaderYPos}*/ repeat-x/*{bgHeaderRepeat}*/;
  42 + color: #222222/*{fcHeader}*/;
  43 + font-weight: bold;
  44 +}
  45 +.ui-widget-header a {
  46 + color: #222222/*{fcHeader}*/;
  47 +}
  48 +
  49 +/* Interaction states
  50 +----------------------------------*/
  51 +.ui-state-default,
  52 +.ui-widget-content .ui-state-default,
  53 +.ui-widget-header .ui-state-default {
  54 + border: 1px solid #d3d3d3/*{borderColorDefault}*/;
  55 + background: #e6e6e6/*{bgColorDefault}*/ url("images/ui-bg_glass_75_e6e6e6_1x400.png")/*{bgImgUrlDefault}*/ 50%/*{bgDefaultXPos}*/ 50%/*{bgDefaultYPos}*/ repeat-x/*{bgDefaultRepeat}*/;
  56 + font-weight: normal/*{fwDefault}*/;
  57 + color: #555555/*{fcDefault}*/;
  58 +}
  59 +.ui-state-default a,
  60 +.ui-state-default a:link,
  61 +.ui-state-default a:visited {
  62 + color: #555555/*{fcDefault}*/;
  63 + text-decoration: none;
  64 +}
  65 +.ui-state-hover,
  66 +.ui-widget-content .ui-state-hover,
  67 +.ui-widget-header .ui-state-hover,
  68 +.ui-state-focus,
  69 +.ui-widget-content .ui-state-focus,
  70 +.ui-widget-header .ui-state-focus {
  71 + border: 1px solid #999999/*{borderColorHover}*/;
  72 + background: #dadada/*{bgColorHover}*/ url("images/ui-bg_glass_75_dadada_1x400.png")/*{bgImgUrlHover}*/ 50%/*{bgHoverXPos}*/ 50%/*{bgHoverYPos}*/ repeat-x/*{bgHoverRepeat}*/;
  73 + font-weight: normal/*{fwDefault}*/;
  74 + color: #212121/*{fcHover}*/;
  75 +}
  76 +.ui-state-hover a,
  77 +.ui-state-hover a:hover,
  78 +.ui-state-hover a:link,
  79 +.ui-state-hover a:visited,
  80 +.ui-state-focus a,
  81 +.ui-state-focus a:hover,
  82 +.ui-state-focus a:link,
  83 +.ui-state-focus a:visited {
  84 + color: #212121/*{fcHover}*/;
  85 + text-decoration: none;
  86 +}
  87 +.ui-state-active,
  88 +.ui-widget-content .ui-state-active,
  89 +.ui-widget-header .ui-state-active {
  90 + border: 1px solid #aaaaaa/*{borderColorActive}*/;
  91 + background: #ffffff/*{bgColorActive}*/ url("images/ui-bg_glass_65_ffffff_1x400.png")/*{bgImgUrlActive}*/ 50%/*{bgActiveXPos}*/ 50%/*{bgActiveYPos}*/ repeat-x/*{bgActiveRepeat}*/;
  92 + font-weight: normal/*{fwDefault}*/;
  93 + color: #212121/*{fcActive}*/;
  94 +}
  95 +.ui-state-active a,
  96 +.ui-state-active a:link,
  97 +.ui-state-active a:visited {
  98 + color: #212121/*{fcActive}*/;
  99 + text-decoration: none;
  100 +}
  101 +
  102 +/* Interaction Cues
  103 +----------------------------------*/
  104 +.ui-state-highlight,
  105 +.ui-widget-content .ui-state-highlight,
  106 +.ui-widget-header .ui-state-highlight {
  107 + border: 1px solid #fcefa1/*{borderColorHighlight}*/;
  108 + background: #fbf9ee/*{bgColorHighlight}*/ url("images/ui-bg_glass_55_fbf9ee_1x400.png")/*{bgImgUrlHighlight}*/ 50%/*{bgHighlightXPos}*/ 50%/*{bgHighlightYPos}*/ repeat-x/*{bgHighlightRepeat}*/;
  109 + color: #363636/*{fcHighlight}*/;
  110 +}
  111 +.ui-state-highlight a,
  112 +.ui-widget-content .ui-state-highlight a,
  113 +.ui-widget-header .ui-state-highlight a {
  114 + color: #363636/*{fcHighlight}*/;
  115 +}
  116 +.ui-state-error,
  117 +.ui-widget-content .ui-state-error,
  118 +.ui-widget-header .ui-state-error {
  119 + border: 1px solid #cd0a0a/*{borderColorError}*/;
  120 + background: #fef1ec/*{bgColorError}*/ url("images/ui-bg_glass_95_fef1ec_1x400.png")/*{bgImgUrlError}*/ 50%/*{bgErrorXPos}*/ 50%/*{bgErrorYPos}*/ repeat-x/*{bgErrorRepeat}*/;
  121 + color: #cd0a0a/*{fcError}*/;
  122 +}
  123 +.ui-state-error a,
  124 +.ui-widget-content .ui-state-error a,
  125 +.ui-widget-header .ui-state-error a {
  126 + color: #cd0a0a/*{fcError}*/;
  127 +}
  128 +.ui-state-error-text,
  129 +.ui-widget-content .ui-state-error-text,
  130 +.ui-widget-header .ui-state-error-text {
  131 + color: #cd0a0a/*{fcError}*/;
  132 +}
  133 +.ui-priority-primary,
  134 +.ui-widget-content .ui-priority-primary,
  135 +.ui-widget-header .ui-priority-primary {
  136 + font-weight: bold;
  137 +}
  138 +.ui-priority-secondary,
  139 +.ui-widget-content .ui-priority-secondary,
  140 +.ui-widget-header .ui-priority-secondary {
  141 + opacity: .7;
  142 + filter:Alpha(Opacity=70); /* support: IE8 */
  143 + font-weight: normal;
  144 +}
  145 +.ui-state-disabled,
  146 +.ui-widget-content .ui-state-disabled,
  147 +.ui-widget-header .ui-state-disabled {
  148 + opacity: .35;
  149 + filter:Alpha(Opacity=35); /* support: IE8 */
  150 + background-image: none;
  151 +}
  152 +.ui-state-disabled .ui-icon {
  153 + filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
  154 +}
  155 +
  156 +/* Icons
  157 +----------------------------------*/
  158 +
  159 +/* states and images */
  160 +.ui-icon {
  161 + width: 16px;
  162 + height: 16px;
  163 +}
  164 +.ui-icon,
  165 +.ui-widget-content .ui-icon {
  166 + background-image: url("images/ui-icons_222222_256x240.png")/*{iconsContent}*/;
  167 +}
  168 +.ui-widget-header .ui-icon {
  169 + background-image: url("images/ui-icons_222222_256x240.png")/*{iconsHeader}*/;
  170 +}
  171 +.ui-state-default .ui-icon {
  172 + background-image: url("images/ui-icons_888888_256x240.png")/*{iconsDefault}*/;
  173 +}
  174 +.ui-state-hover .ui-icon,
  175 +.ui-state-focus .ui-icon {
  176 + background-image: url("images/ui-icons_454545_256x240.png")/*{iconsHover}*/;
  177 +}
  178 +.ui-state-active .ui-icon {
  179 + background-image: url("images/ui-icons_454545_256x240.png")/*{iconsActive}*/;
  180 +}
  181 +.ui-state-highlight .ui-icon {
  182 + background-image: url("images/ui-icons_2e83ff_256x240.png")/*{iconsHighlight}*/;
  183 +}
  184 +.ui-state-error .ui-icon,
  185 +.ui-state-error-text .ui-icon {
  186 + background-image: url("images/ui-icons_cd0a0a_256x240.png")/*{iconsError}*/;
  187 +}
  188 +
  189 +/* positioning */
  190 +.ui-icon-blank { background-position: 16px 16px; }
  191 +.ui-icon-carat-1-n { background-position: 0 0; }
  192 +.ui-icon-carat-1-ne { background-position: -16px 0; }
  193 +.ui-icon-carat-1-e { background-position: -32px 0; }
  194 +.ui-icon-carat-1-se { background-position: -48px 0; }
  195 +.ui-icon-carat-1-s { background-position: -64px 0; }
  196 +.ui-icon-carat-1-sw { background-position: -80px 0; }
  197 +.ui-icon-carat-1-w { background-position: -96px 0; }
  198 +.ui-icon-carat-1-nw { background-position: -112px 0; }
  199 +.ui-icon-carat-2-n-s { background-position: -128px 0; }
  200 +.ui-icon-carat-2-e-w { background-position: -144px 0; }
  201 +.ui-icon-triangle-1-n { background-position: 0 -16px; }
  202 +.ui-icon-triangle-1-ne { background-position: -16px -16px; }
  203 +.ui-icon-triangle-1-e { background-position: -32px -16px; }
  204 +.ui-icon-triangle-1-se { background-position: -48px -16px; }
  205 +.ui-icon-triangle-1-s { background-position: -64px -16px; }
  206 +.ui-icon-triangle-1-sw { background-position: -80px -16px; }
  207 +.ui-icon-triangle-1-w { background-position: -96px -16px; }
  208 +.ui-icon-triangle-1-nw { background-position: -112px -16px; }
  209 +.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
  210 +.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
  211 +.ui-icon-arrow-1-n { background-position: 0 -32px; }
  212 +.ui-icon-arrow-1-ne { background-position: -16px -32px; }
  213 +.ui-icon-arrow-1-e { background-position: -32px -32px; }
  214 +.ui-icon-arrow-1-se { background-position: -48px -32px; }
  215 +.ui-icon-arrow-1-s { background-position: -64px -32px; }
  216 +.ui-icon-arrow-1-sw { background-position: -80px -32px; }
  217 +.ui-icon-arrow-1-w { background-position: -96px -32px; }
  218 +.ui-icon-arrow-1-nw { background-position: -112px -32px; }
  219 +.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
  220 +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
  221 +.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
  222 +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
  223 +.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
  224 +.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
  225 +.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
  226 +.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
  227 +.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
  228 +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
  229 +.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
  230 +.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
  231 +.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
  232 +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
  233 +.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
  234 +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
  235 +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
  236 +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
  237 +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
  238 +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
  239 +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
  240 +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
  241 +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
  242 +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
  243 +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
  244 +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
  245 +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
  246 +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
  247 +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
  248 +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
  249 +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
  250 +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
  251 +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
  252 +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
  253 +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
  254 +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
  255 +.ui-icon-arrow-4 { background-position: 0 -80px; }
  256 +.ui-icon-arrow-4-diag { background-position: -16px -80px; }
  257 +.ui-icon-extlink { background-position: -32px -80px; }
  258 +.ui-icon-newwin { background-position: -48px -80px; }
  259 +.ui-icon-refresh { background-position: -64px -80px; }
  260 +.ui-icon-shuffle { background-position: -80px -80px; }
  261 +.ui-icon-transfer-e-w { background-position: -96px -80px; }
  262 +.ui-icon-transferthick-e-w { background-position: -112px -80px; }
  263 +.ui-icon-folder-collapsed { background-position: 0 -96px; }
  264 +.ui-icon-folder-open { background-position: -16px -96px; }
  265 +.ui-icon-document { background-position: -32px -96px; }
  266 +.ui-icon-document-b { background-position: -48px -96px; }
  267 +.ui-icon-note { background-position: -64px -96px; }
  268 +.ui-icon-mail-closed { background-position: -80px -96px; }
  269 +.ui-icon-mail-open { background-position: -96px -96px; }
  270 +.ui-icon-suitcase { background-position: -112px -96px; }
  271 +.ui-icon-comment { background-position: -128px -96px; }
  272 +.ui-icon-person { background-position: -144px -96px; }
  273 +.ui-icon-print { background-position: -160px -96px; }
  274 +.ui-icon-trash { background-position: -176px -96px; }
  275 +.ui-icon-locked { background-position: -192px -96px; }
  276 +.ui-icon-unlocked { background-position: -208px -96px; }
  277 +.ui-icon-bookmark { background-position: -224px -96px; }
  278 +.ui-icon-tag { background-position: -240px -96px; }
  279 +.ui-icon-home { background-position: 0 -112px; }
  280 +.ui-icon-flag { background-position: -16px -112px; }
  281 +.ui-icon-calendar { background-position: -32px -112px; }
  282 +.ui-icon-cart { background-position: -48px -112px; }
  283 +.ui-icon-pencil { background-position: -64px -112px; }
  284 +.ui-icon-clock { background-position: -80px -112px; }
  285 +.ui-icon-disk { background-position: -96px -112px; }
  286 +.ui-icon-calculator { background-position: -112px -112px; }
  287 +.ui-icon-zoomin { background-position: -128px -112px; }
  288 +.ui-icon-zoomout { background-position: -144px -112px; }
  289 +.ui-icon-search { background-position: -160px -112px; }
  290 +.ui-icon-wrench { background-position: -176px -112px; }
  291 +.ui-icon-gear { background-position: -192px -112px; }
  292 +.ui-icon-heart { background-position: -208px -112px; }
  293 +.ui-icon-star { background-position: -224px -112px; }
  294 +.ui-icon-link { background-position: -240px -112px; }
  295 +.ui-icon-cancel { background-position: 0 -128px; }
  296 +.ui-icon-plus { background-position: -16px -128px; }
  297 +.ui-icon-plusthick { background-position: -32px -128px; }
  298 +.ui-icon-minus { background-position: -48px -128px; }
  299 +.ui-icon-minusthick { background-position: -64px -128px; }
  300 +.ui-icon-close { background-position: -80px -128px; }
  301 +.ui-icon-closethick { background-position: -96px -128px; }
  302 +.ui-icon-key { background-position: -112px -128px; }
  303 +.ui-icon-lightbulb { background-position: -128px -128px; }
  304 +.ui-icon-scissors { background-position: -144px -128px; }
  305 +.ui-icon-clipboard { background-position: -160px -128px; }
  306 +.ui-icon-copy { background-position: -176px -128px; }
  307 +.ui-icon-contact { background-position: -192px -128px; }
  308 +.ui-icon-image { background-position: -208px -128px; }
  309 +.ui-icon-video { background-position: -224px -128px; }
  310 +.ui-icon-script { background-position: -240px -128px; }
  311 +.ui-icon-alert { background-position: 0 -144px; }
  312 +.ui-icon-info { background-position: -16px -144px; }
  313 +.ui-icon-notice { background-position: -32px -144px; }
  314 +.ui-icon-help { background-position: -48px -144px; }
  315 +.ui-icon-check { background-position: -64px -144px; }
  316 +.ui-icon-bullet { background-position: -80px -144px; }
  317 +.ui-icon-radio-on { background-position: -96px -144px; }
  318 +.ui-icon-radio-off { background-position: -112px -144px; }
  319 +.ui-icon-pin-w { background-position: -128px -144px; }
  320 +.ui-icon-pin-s { background-position: -144px -144px; }
  321 +.ui-icon-play { background-position: 0 -160px; }
  322 +.ui-icon-pause { background-position: -16px -160px; }
  323 +.ui-icon-seek-next { background-position: -32px -160px; }
  324 +.ui-icon-seek-prev { background-position: -48px -160px; }
  325 +.ui-icon-seek-end { background-position: -64px -160px; }
  326 +.ui-icon-seek-start { background-position: -80px -160px; }
  327 +/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
  328 +.ui-icon-seek-first { background-position: -80px -160px; }
  329 +.ui-icon-stop { background-position: -96px -160px; }
  330 +.ui-icon-eject { background-position: -112px -160px; }
  331 +.ui-icon-volume-off { background-position: -128px -160px; }
  332 +.ui-icon-volume-on { background-position: -144px -160px; }
  333 +.ui-icon-power { background-position: 0 -176px; }
  334 +.ui-icon-signal-diag { background-position: -16px -176px; }
  335 +.ui-icon-signal { background-position: -32px -176px; }
  336 +.ui-icon-battery-0 { background-position: -48px -176px; }
  337 +.ui-icon-battery-1 { background-position: -64px -176px; }
  338 +.ui-icon-battery-2 { background-position: -80px -176px; }
  339 +.ui-icon-battery-3 { background-position: -96px -176px; }
  340 +.ui-icon-circle-plus { background-position: 0 -192px; }
  341 +.ui-icon-circle-minus { background-position: -16px -192px; }
  342 +.ui-icon-circle-close { background-position: -32px -192px; }
  343 +.ui-icon-circle-triangle-e { background-position: -48px -192px; }
  344 +.ui-icon-circle-triangle-s { background-position: -64px -192px; }
  345 +.ui-icon-circle-triangle-w { background-position: -80px -192px; }
  346 +.ui-icon-circle-triangle-n { background-position: -96px -192px; }
  347 +.ui-icon-circle-arrow-e { background-position: -112px -192px; }
  348 +.ui-icon-circle-arrow-s { background-position: -128px -192px; }
  349 +.ui-icon-circle-arrow-w { background-position: -144px -192px; }
  350 +.ui-icon-circle-arrow-n { background-position: -160px -192px; }
  351 +.ui-icon-circle-zoomin { background-position: -176px -192px; }
  352 +.ui-icon-circle-zoomout { background-position: -192px -192px; }
  353 +.ui-icon-circle-check { background-position: -208px -192px; }
  354 +.ui-icon-circlesmall-plus { background-position: 0 -208px; }
  355 +.ui-icon-circlesmall-minus { background-position: -16px -208px; }
  356 +.ui-icon-circlesmall-close { background-position: -32px -208px; }
  357 +.ui-icon-squaresmall-plus { background-position: -48px -208px; }
  358 +.ui-icon-squaresmall-minus { background-position: -64px -208px; }
  359 +.ui-icon-squaresmall-close { background-position: -80px -208px; }
  360 +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
  361 +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
  362 +.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
  363 +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
  364 +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
  365 +.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
  366 +
  367 +
  368 +/* Misc visuals
  369 +----------------------------------*/
  370 +
  371 +/* Corner radius */
  372 +.ui-corner-all,
  373 +.ui-corner-top,
  374 +.ui-corner-left,
  375 +.ui-corner-tl {
  376 + border-top-left-radius: 4px/*{cornerRadius}*/;
  377 +}
  378 +.ui-corner-all,
  379 +.ui-corner-top,
  380 +.ui-corner-right,
  381 +.ui-corner-tr {
  382 + border-top-right-radius: 4px/*{cornerRadius}*/;
  383 +}
  384 +.ui-corner-all,
  385 +.ui-corner-bottom,
  386 +.ui-corner-left,
  387 +.ui-corner-bl {
  388 + border-bottom-left-radius: 4px/*{cornerRadius}*/;
  389 +}
  390 +.ui-corner-all,
  391 +.ui-corner-bottom,
  392 +.ui-corner-right,
  393 +.ui-corner-br {
  394 + border-bottom-right-radius: 4px/*{cornerRadius}*/;
  395 +}
  396 +
  397 +/* Overlays */
  398 +.ui-widget-overlay {
  399 + background: #aaaaaa/*{bgColorOverlay}*/ url("images/ui-bg_flat_0_aaaaaa_40x100.png")/*{bgImgUrlOverlay}*/ 50%/*{bgOverlayXPos}*/ 50%/*{bgOverlayYPos}*/ repeat-x/*{bgOverlayRepeat}*/;
  400 + opacity: .3/*{opacityOverlay}*/;
  401 + filter: Alpha(Opacity=30)/*{opacityFilterOverlay}*/; /* support: IE8 */
  402 +}
  403 +.ui-widget-shadow {
  404 + margin: -8px/*{offsetTopShadow}*/ 0 0 -8px/*{offsetLeftShadow}*/;
  405 + padding: 8px/*{thicknessShadow}*/;
  406 + background: #aaaaaa/*{bgColorShadow}*/ url("images/ui-bg_flat_0_aaaaaa_40x100.png")/*{bgImgUrlShadow}*/ 50%/*{bgShadowXPos}*/ 50%/*{bgShadowYPos}*/ repeat-x/*{bgShadowRepeat}*/;
  407 + opacity: .3/*{opacityShadow}*/;
  408 + filter: Alpha(Opacity=30)/*{opacityFilterShadow}*/; /* support: IE8 */
  409 + border-radius: 8px/*{cornerRadiusShadow}*/;
  410 +}
... ...
src/main/resources/static/real_control_v2/assets/plugins/jquery.ui/themes/base/tooltip.css 0 → 100644
  1 +/*!
  2 + * jQuery UI Tooltip 1.11.1
  3 + * http://jqueryui.com
  4 + *
  5 + * Copyright 2014 jQuery Foundation and other contributors
  6 + * Released under the MIT license.
  7 + * http://jquery.org/license
  8 + *
  9 + * http://api.jqueryui.com/tooltip/#theming
  10 + */
  11 +.ui-tooltip {
  12 + padding: 8px;
  13 + position: absolute;
  14 + z-index: 9999;
  15 + max-width: 300px;
  16 + -webkit-box-shadow: 0 0 5px #aaa;
  17 + box-shadow: 0 0 5px #aaa;
  18 +}
  19 +body .ui-tooltip {
  20 + border-width: 2px;
  21 +}
... ...
src/main/resources/static/real_control_v2/assets/plugins/jquery.ui/widget.js 0 → 100644
  1 +/*!
  2 + * jQuery UI Widget 1.11.1
  3 + * http://jqueryui.com
  4 + *
  5 + * Copyright 2014 jQuery Foundation and other contributors
  6 + * Released under the MIT license.
  7 + * http://jquery.org/license
  8 + *
  9 + * http://api.jqueryui.com/jQuery.widget/
  10 + */
  11 +(function( factory ) {
  12 + if ( typeof define === "function" && define.amd ) {
  13 +
  14 + // AMD. Register as an anonymous module.
  15 + define( [ "jquery" ], factory );
  16 + } else {
  17 +
  18 + // Browser globals
  19 + factory( jQuery );
  20 + }
  21 +}(function( $ ) {
  22 +
  23 +var widget_uuid = 0,
  24 + widget_slice = Array.prototype.slice;
  25 +
  26 +$.cleanData = (function( orig ) {
  27 + return function( elems ) {
  28 + var events, elem, i;
  29 + for ( i = 0; (elem = elems[i]) != null; i++ ) {
  30 + try {
  31 +
  32 + // Only trigger remove when necessary to save time
  33 + events = $._data( elem, "events" );
  34 + if ( events && events.remove ) {
  35 + $( elem ).triggerHandler( "remove" );
  36 + }
  37 +
  38 + // http://bugs.jquery.com/ticket/8235
  39 + } catch( e ) {}
  40 + }
  41 + orig( elems );
  42 + };
  43 +})( $.cleanData );
  44 +
  45 +$.widget = function( name, base, prototype ) {
  46 + var fullName, existingConstructor, constructor, basePrototype,
  47 + // proxiedPrototype allows the provided prototype to remain unmodified
  48 + // so that it can be used as a mixin for multiple widgets (#8876)
  49 + proxiedPrototype = {},
  50 + namespace = name.split( "." )[ 0 ];
  51 +
  52 + name = name.split( "." )[ 1 ];
  53 + fullName = namespace + "-" + name;
  54 +
  55 + if ( !prototype ) {
  56 + prototype = base;
  57 + base = $.Widget;
  58 + }
  59 +
  60 + // create selector for plugin
  61 + $.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) {
  62 + return !!$.data( elem, fullName );
  63 + };
  64 +
  65 + $[ namespace ] = $[ namespace ] || {};
  66 + existingConstructor = $[ namespace ][ name ];
  67 + constructor = $[ namespace ][ name ] = function( options, element ) {
  68 + // allow instantiation without "new" keyword
  69 + if ( !this._createWidget ) {
  70 + return new constructor( options, element );
  71 + }
  72 +
  73 + // allow instantiation without initializing for simple inheritance
  74 + // must use "new" keyword (the code above always passes args)
  75 + if ( arguments.length ) {
  76 + this._createWidget( options, element );
  77 + }
  78 + };
  79 + // extend with the existing constructor to carry over any static properties
  80 + $.extend( constructor, existingConstructor, {
  81 + version: prototype.version,
  82 + // copy the object used to create the prototype in case we need to
  83 + // redefine the widget later
  84 + _proto: $.extend( {}, prototype ),
  85 + // track widgets that inherit from this widget in case this widget is
  86 + // redefined after a widget inherits from it
  87 + _childConstructors: []
  88 + });
  89 +
  90 + basePrototype = new base();
  91 + // we need to make the options hash a property directly on the new instance
  92 + // otherwise we'll modify the options hash on the prototype that we're
  93 + // inheriting from
  94 + basePrototype.options = $.widget.extend( {}, basePrototype.options );
  95 + $.each( prototype, function( prop, value ) {
  96 + if ( !$.isFunction( value ) ) {
  97 + proxiedPrototype[ prop ] = value;
  98 + return;
  99 + }
  100 + proxiedPrototype[ prop ] = (function() {
  101 + var _super = function() {
  102 + return base.prototype[ prop ].apply( this, arguments );
  103 + },
  104 + _superApply = function( args ) {
  105 + return base.prototype[ prop ].apply( this, args );
  106 + };
  107 + return function() {
  108 + var __super = this._super,
  109 + __superApply = this._superApply,
  110 + returnValue;
  111 +
  112 + this._super = _super;
  113 + this._superApply = _superApply;
  114 +
  115 + returnValue = value.apply( this, arguments );
  116 +
  117 + this._super = __super;
  118 + this._superApply = __superApply;
  119 +
  120 + return returnValue;
  121 + };
  122 + })();
  123 + });
  124 + constructor.prototype = $.widget.extend( basePrototype, {
  125 + // TODO: remove support for widgetEventPrefix
  126 + // always use the name + a colon as the prefix, e.g., draggable:start
  127 + // don't prefix for widgets that aren't DOM-based
  128 + widgetEventPrefix: existingConstructor ? (basePrototype.widgetEventPrefix || name) : name
  129 + }, proxiedPrototype, {
  130 + constructor: constructor,
  131 + namespace: namespace,
  132 + widgetName: name,
  133 + widgetFullName: fullName
  134 + });
  135 +
  136 + // If this widget is being redefined then we need to find all widgets that
  137 + // are inheriting from it and redefine all of them so that they inherit from
  138 + // the new version of this widget. We're essentially trying to replace one
  139 + // level in the prototype chain.
  140 + if ( existingConstructor ) {
  141 + $.each( existingConstructor._childConstructors, function( i, child ) {
  142 + var childPrototype = child.prototype;
  143 +
  144 + // redefine the child widget using the same prototype that was
  145 + // originally used, but inherit from the new version of the base
  146 + $.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor, child._proto );
  147 + });
  148 + // remove the list of existing child constructors from the old constructor
  149 + // so the old child constructors can be garbage collected
  150 + delete existingConstructor._childConstructors;
  151 + } else {
  152 + base._childConstructors.push( constructor );
  153 + }
  154 +
  155 + $.widget.bridge( name, constructor );
  156 +
  157 + return constructor;
  158 +};
  159 +
  160 +$.widget.extend = function( target ) {
  161 + var input = widget_slice.call( arguments, 1 ),
  162 + inputIndex = 0,
  163 + inputLength = input.length,
  164 + key,
  165 + value;
  166 + for ( ; inputIndex < inputLength; inputIndex++ ) {
  167 + for ( key in input[ inputIndex ] ) {
  168 + value = input[ inputIndex ][ key ];
  169 + if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {
  170 + // Clone objects
  171 + if ( $.isPlainObject( value ) ) {
  172 + target[ key ] = $.isPlainObject( target[ key ] ) ?
  173 + $.widget.extend( {}, target[ key ], value ) :
  174 + // Don't extend strings, arrays, etc. with objects
  175 + $.widget.extend( {}, value );
  176 + // Copy everything else by reference
  177 + } else {
  178 + target[ key ] = value;
  179 + }
  180 + }
  181 + }
  182 + }
  183 + return target;
  184 +};
  185 +
  186 +$.widget.bridge = function( name, object ) {
  187 + var fullName = object.prototype.widgetFullName || name;
  188 + $.fn[ name ] = function( options ) {
  189 + var isMethodCall = typeof options === "string",
  190 + args = widget_slice.call( arguments, 1 ),
  191 + returnValue = this;
  192 +
  193 + // allow multiple hashes to be passed on init
  194 + options = !isMethodCall && args.length ?
  195 + $.widget.extend.apply( null, [ options ].concat(args) ) :
  196 + options;
  197 +
  198 + if ( isMethodCall ) {
  199 + this.each(function() {
  200 + var methodValue,
  201 + instance = $.data( this, fullName );
  202 + if ( options === "instance" ) {
  203 + returnValue = instance;
  204 + return false;
  205 + }
  206 + if ( !instance ) {
  207 + return $.error( "cannot call methods on " + name + " prior to initialization; " +
  208 + "attempted to call method '" + options + "'" );
  209 + }
  210 + if ( !$.isFunction( instance[options] ) || options.charAt( 0 ) === "_" ) {
  211 + return $.error( "no such method '" + options + "' for " + name + " widget instance" );
  212 + }
  213 + methodValue = instance[ options ].apply( instance, args );
  214 + if ( methodValue !== instance && methodValue !== undefined ) {
  215 + returnValue = methodValue && methodValue.jquery ?
  216 + returnValue.pushStack( methodValue.get() ) :
  217 + methodValue;
  218 + return false;
  219 + }
  220 + });
  221 + } else {
  222 + this.each(function() {
  223 + var instance = $.data( this, fullName );
  224 + if ( instance ) {
  225 + instance.option( options || {} );
  226 + if ( instance._init ) {
  227 + instance._init();
  228 + }
  229 + } else {
  230 + $.data( this, fullName, new object( options, this ) );
  231 + }
  232 + });
  233 + }
  234 +
  235 + return returnValue;
  236 + };
  237 +};
  238 +
  239 +$.Widget = function( /* options, element */ ) {};
  240 +$.Widget._childConstructors = [];
  241 +
  242 +$.Widget.prototype = {
  243 + widgetName: "widget",
  244 + widgetEventPrefix: "",
  245 + defaultElement: "<div>",
  246 + options: {
  247 + disabled: false,
  248 +
  249 + // callbacks
  250 + create: null
  251 + },
  252 + _createWidget: function( options, element ) {
  253 + element = $( element || this.defaultElement || this )[ 0 ];
  254 + this.element = $( element );
  255 + this.uuid = widget_uuid++;
  256 + this.eventNamespace = "." + this.widgetName + this.uuid;
  257 + this.options = $.widget.extend( {},
  258 + this.options,
  259 + this._getCreateOptions(),
  260 + options );
  261 +
  262 + this.bindings = $();
  263 + this.hoverable = $();
  264 + this.focusable = $();
  265 +
  266 + if ( element !== this ) {
  267 + $.data( element, this.widgetFullName, this );
  268 + this._on( true, this.element, {
  269 + remove: function( event ) {
  270 + if ( event.target === element ) {
  271 + this.destroy();
  272 + }
  273 + }
  274 + });
  275 + this.document = $( element.style ?
  276 + // element within the document
  277 + element.ownerDocument :
  278 + // element is window or document
  279 + element.document || element );
  280 + this.window = $( this.document[0].defaultView || this.document[0].parentWindow );
  281 + }
  282 +
  283 + this._create();
  284 + this._trigger( "create", null, this._getCreateEventData() );
  285 + this._init();
  286 + },
  287 + _getCreateOptions: $.noop,
  288 + _getCreateEventData: $.noop,
  289 + _create: $.noop,
  290 + _init: $.noop,
  291 +
  292 + destroy: function() {
  293 + this._destroy();
  294 + // we can probably remove the unbind calls in 2.0
  295 + // all event bindings should go through this._on()
  296 + this.element
  297 + .unbind( this.eventNamespace )
  298 + .removeData( this.widgetFullName )
  299 + // support: jquery <1.6.3
  300 + // http://bugs.jquery.com/ticket/9413
  301 + .removeData( $.camelCase( this.widgetFullName ) );
  302 + this.widget()
  303 + .unbind( this.eventNamespace )
  304 + .removeAttr( "aria-disabled" )
  305 + .removeClass(
  306 + this.widgetFullName + "-disabled " +
  307 + "ui-state-disabled" );
  308 +
  309 + // clean up events and states
  310 + this.bindings.unbind( this.eventNamespace );
  311 + this.hoverable.removeClass( "ui-state-hover" );
  312 + this.focusable.removeClass( "ui-state-focus" );
  313 + },
  314 + _destroy: $.noop,
  315 +
  316 + widget: function() {
  317 + return this.element;
  318 + },
  319 +
  320 + option: function( key, value ) {
  321 + var options = key,
  322 + parts,
  323 + curOption,
  324 + i;
  325 +
  326 + if ( arguments.length === 0 ) {
  327 + // don't return a reference to the internal hash
  328 + return $.widget.extend( {}, this.options );
  329 + }
  330 +
  331 + if ( typeof key === "string" ) {
  332 + // handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } }
  333 + options = {};
  334 + parts = key.split( "." );
  335 + key = parts.shift();
  336 + if ( parts.length ) {
  337 + curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );
  338 + for ( i = 0; i < parts.length - 1; i++ ) {
  339 + curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};
  340 + curOption = curOption[ parts[ i ] ];
  341 + }
  342 + key = parts.pop();
  343 + if ( arguments.length === 1 ) {
  344 + return curOption[ key ] === undefined ? null : curOption[ key ];
  345 + }
  346 + curOption[ key ] = value;
  347 + } else {
  348 + if ( arguments.length === 1 ) {
  349 + return this.options[ key ] === undefined ? null : this.options[ key ];
  350 + }
  351 + options[ key ] = value;
  352 + }
  353 + }
  354 +
  355 + this._setOptions( options );
  356 +
  357 + return this;
  358 + },
  359 + _setOptions: function( options ) {
  360 + var key;
  361 +
  362 + for ( key in options ) {
  363 + this._setOption( key, options[ key ] );
  364 + }
  365 +
  366 + return this;
  367 + },
  368 + _setOption: function( key, value ) {
  369 + this.options[ key ] = value;
  370 +
  371 + if ( key === "disabled" ) {
  372 + this.widget()
  373 + .toggleClass( this.widgetFullName + "-disabled", !!value );
  374 +
  375 + // If the widget is becoming disabled, then nothing is interactive
  376 + if ( value ) {
  377 + this.hoverable.removeClass( "ui-state-hover" );
  378 + this.focusable.removeClass( "ui-state-focus" );
  379 + }
  380 + }
  381 +
  382 + return this;
  383 + },
  384 +
  385 + enable: function() {
  386 + return this._setOptions({ disabled: false });
  387 + },
  388 + disable: function() {
  389 + return this._setOptions({ disabled: true });
  390 + },
  391 +
  392 + _on: function( suppressDisabledCheck, element, handlers ) {
  393 + var delegateElement,
  394 + instance = this;
  395 +
  396 + // no suppressDisabledCheck flag, shuffle arguments
  397 + if ( typeof suppressDisabledCheck !== "boolean" ) {
  398 + handlers = element;
  399 + element = suppressDisabledCheck;
  400 + suppressDisabledCheck = false;
  401 + }
  402 +
  403 + // no element argument, shuffle and use this.element
  404 + if ( !handlers ) {
  405 + handlers = element;
  406 + element = this.element;
  407 + delegateElement = this.widget();
  408 + } else {
  409 + element = delegateElement = $( element );
  410 + this.bindings = this.bindings.add( element );
  411 + }
  412 +
  413 + $.each( handlers, function( event, handler ) {
  414 + function handlerProxy() {
  415 + // allow widgets to customize the disabled handling
  416 + // - disabled as an array instead of boolean
  417 + // - disabled class as method for disabling individual parts
  418 + if ( !suppressDisabledCheck &&
  419 + ( instance.options.disabled === true ||
  420 + $( this ).hasClass( "ui-state-disabled" ) ) ) {
  421 + return;
  422 + }
  423 + return ( typeof handler === "string" ? instance[ handler ] : handler )
  424 + .apply( instance, arguments );
  425 + }
  426 +
  427 + // copy the guid so direct unbinding works
  428 + if ( typeof handler !== "string" ) {
  429 + handlerProxy.guid = handler.guid =
  430 + handler.guid || handlerProxy.guid || $.guid++;
  431 + }
  432 +
  433 + var match = event.match( /^([\w:-]*)\s*(.*)$/ ),
  434 + eventName = match[1] + instance.eventNamespace,
  435 + selector = match[2];
  436 + if ( selector ) {
  437 + delegateElement.delegate( selector, eventName, handlerProxy );
  438 + } else {
  439 + element.bind( eventName, handlerProxy );
  440 + }
  441 + });
  442 + },
  443 +
  444 + _off: function( element, eventName ) {
  445 + eventName = (eventName || "").split( " " ).join( this.eventNamespace + " " ) + this.eventNamespace;
  446 + element.unbind( eventName ).undelegate( eventName );
  447 + },
  448 +
  449 + _delay: function( handler, delay ) {
  450 + function handlerProxy() {
  451 + return ( typeof handler === "string" ? instance[ handler ] : handler )
  452 + .apply( instance, arguments );
  453 + }
  454 + var instance = this;
  455 + return setTimeout( handlerProxy, delay || 0 );
  456 + },
  457 +
  458 + _hoverable: function( element ) {
  459 + this.hoverable = this.hoverable.add( element );
  460 + this._on( element, {
  461 + mouseenter: function( event ) {
  462 + $( event.currentTarget ).addClass( "ui-state-hover" );
  463 + },
  464 + mouseleave: function( event ) {
  465 + $( event.currentTarget ).removeClass( "ui-state-hover" );
  466 + }
  467 + });
  468 + },
  469 +
  470 + _focusable: function( element ) {
  471 + this.focusable = this.focusable.add( element );
  472 + this._on( element, {
  473 + focusin: function( event ) {
  474 + $( event.currentTarget ).addClass( "ui-state-focus" );
  475 + },
  476 + focusout: function( event ) {
  477 + $( event.currentTarget ).removeClass( "ui-state-focus" );
  478 + }
  479 + });
  480 + },
  481 +
  482 + _trigger: function( type, event, data ) {
  483 + var prop, orig,
  484 + callback = this.options[ type ];
  485 +
  486 + data = data || {};
  487 + event = $.Event( event );
  488 + event.type = ( type === this.widgetEventPrefix ?
  489 + type :
  490 + this.widgetEventPrefix + type ).toLowerCase();
  491 + // the original event may come from any element
  492 + // so we need to reset the target on the new event
  493 + event.target = this.element[ 0 ];
  494 +
  495 + // copy original event properties over to the new event
  496 + orig = event.originalEvent;
  497 + if ( orig ) {
  498 + for ( prop in orig ) {
  499 + if ( !( prop in event ) ) {
  500 + event[ prop ] = orig[ prop ];
  501 + }
  502 + }
  503 + }
  504 +
  505 + this.element.trigger( event, data );
  506 + return !( $.isFunction( callback ) &&
  507 + callback.apply( this.element[0], [ event ].concat( data ) ) === false ||
  508 + event.isDefaultPrevented() );
  509 + }
  510 +};
  511 +
  512 +$.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) {
  513 + $.Widget.prototype[ "_" + method ] = function( element, options, callback ) {
  514 + if ( typeof options === "string" ) {
  515 + options = { effect: options };
  516 + }
  517 + var hasOptions,
  518 + effectName = !options ?
  519 + method :
  520 + options === true || typeof options === "number" ?
  521 + defaultEffect :
  522 + options.effect || defaultEffect;
  523 + options = options || {};
  524 + if ( typeof options === "number" ) {
  525 + options = { duration: options };
  526 + }
  527 + hasOptions = !$.isEmptyObject( options );
  528 + options.complete = callback;
  529 + if ( options.delay ) {
  530 + element.delay( options.delay );
  531 + }
  532 + if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {
  533 + element[ method ]( options );
  534 + } else if ( effectName !== method && element[ effectName ] ) {
  535 + element[ effectName ]( options.duration, options.easing, callback );
  536 + } else {
  537 + element.queue(function( next ) {
  538 + $( this )[ method ]();
  539 + if ( callback ) {
  540 + callback.call( element[ 0 ] );
  541 + }
  542 + next();
  543 + });
  544 + }
  545 + };
  546 +});
  547 +
  548 +return $.widget;
  549 +
  550 +}));
... ...
src/main/resources/static/real_control_v2/assets/plugins/spectrum/spectrum.css 0 → 100644
  1 +/***
  2 +Spectrum Colorpicker v1.8.0
  3 +https://github.com/bgrins/spectrum
  4 +Author: Brian Grinstead
  5 +License: MIT
  6 +***/
  7 +
  8 +.sp-container {
  9 + position:absolute;
  10 + top:0;
  11 + left:0;
  12 + display:inline-block;
  13 + *display: inline;
  14 + *zoom: 1;
  15 + /* https://github.com/bgrins/spectrum/issues/40 */
  16 + z-index: 9999994;
  17 + overflow: hidden;
  18 +}
  19 +.sp-container.sp-flat {
  20 + position: relative;
  21 +}
  22 +
  23 +/* Fix for * { box-sizing: border-box; } */
  24 +.sp-container,
  25 +.sp-container * {
  26 + -webkit-box-sizing: content-box;
  27 + -moz-box-sizing: content-box;
  28 + box-sizing: content-box;
  29 +}
  30 +
  31 +/* http://ansciath.tumblr.com/post/7347495869/css-aspect-ratio */
  32 +.sp-top {
  33 + position:relative;
  34 + width: 100%;
  35 + display:inline-block;
  36 +}
  37 +.sp-top-inner {
  38 + position:absolute;
  39 + top:0;
  40 + left:0;
  41 + bottom:0;
  42 + right:0;
  43 +}
  44 +.sp-color {
  45 + position: absolute;
  46 + top:0;
  47 + left:0;
  48 + bottom:0;
  49 + right:20%;
  50 +}
  51 +.sp-hue {
  52 + position: absolute;
  53 + top:0;
  54 + right:0;
  55 + bottom:0;
  56 + left:84%;
  57 + height: 100%;
  58 +}
  59 +
  60 +.sp-clear-enabled .sp-hue {
  61 + top:33px;
  62 + height: 77.5%;
  63 +}
  64 +
  65 +.sp-fill {
  66 + padding-top: 80%;
  67 +}
  68 +.sp-sat, .sp-val {
  69 + position: absolute;
  70 + top:0;
  71 + left:0;
  72 + right:0;
  73 + bottom:0;
  74 +}
  75 +
  76 +.sp-alpha-enabled .sp-top {
  77 + margin-bottom: 18px;
  78 +}
  79 +.sp-alpha-enabled .sp-alpha {
  80 + display: block;
  81 +}
  82 +.sp-alpha-handle {
  83 + position:absolute;
  84 + top:-4px;
  85 + bottom: -4px;
  86 + width: 6px;
  87 + left: 50%;
  88 + cursor: pointer;
  89 + border: 1px solid black;
  90 + background: white;
  91 + opacity: .8;
  92 +}
  93 +.sp-alpha {
  94 + display: none;
  95 + position: absolute;
  96 + bottom: -14px;
  97 + right: 0;
  98 + left: 0;
  99 + height: 8px;
  100 +}
  101 +.sp-alpha-inner {
  102 + border: solid 1px #333;
  103 +}
  104 +
  105 +.sp-clear {
  106 + display: none;
  107 +}
  108 +
  109 +.sp-clear.sp-clear-display {
  110 + background-position: center;
  111 +}
  112 +
  113 +.sp-clear-enabled .sp-clear {
  114 + display: block;
  115 + position:absolute;
  116 + top:0px;
  117 + right:0;
  118 + bottom:0;
  119 + left:84%;
  120 + height: 28px;
  121 +}
  122 +
  123 +/* Don't allow text selection */
  124 +.sp-container, .sp-replacer, .sp-preview, .sp-dragger, .sp-slider, .sp-alpha, .sp-clear, .sp-alpha-handle, .sp-container.sp-dragging .sp-input, .sp-container button {
  125 + -webkit-user-select:none;
  126 + -moz-user-select: -moz-none;
  127 + -o-user-select:none;
  128 + user-select: none;
  129 +}
  130 +
  131 +.sp-container.sp-input-disabled .sp-input-container {
  132 + display: none;
  133 +}
  134 +.sp-container.sp-buttons-disabled .sp-button-container {
  135 + display: none;
  136 +}
  137 +.sp-container.sp-palette-buttons-disabled .sp-palette-button-container {
  138 + display: none;
  139 +}
  140 +.sp-palette-only .sp-picker-container {
  141 + display: none;
  142 +}
  143 +.sp-palette-disabled .sp-palette-container {
  144 + display: none;
  145 +}
  146 +
  147 +.sp-initial-disabled .sp-initial {
  148 + display: none;
  149 +}
  150 +
  151 +
  152 +/* Gradients for hue, saturation and value instead of images. Not pretty... but it works */
  153 +.sp-sat {
  154 + background-image: -webkit-gradient(linear, 0 0, 100% 0, from(#FFF), to(rgba(204, 154, 129, 0)));
  155 + background-image: -webkit-linear-gradient(left, #FFF, rgba(204, 154, 129, 0));
  156 + background-image: -moz-linear-gradient(left, #fff, rgba(204, 154, 129, 0));
  157 + background-image: -o-linear-gradient(left, #fff, rgba(204, 154, 129, 0));
  158 + background-image: -ms-linear-gradient(left, #fff, rgba(204, 154, 129, 0));
  159 + background-image: linear-gradient(to right, #fff, rgba(204, 154, 129, 0));
  160 + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr=#FFFFFFFF, endColorstr=#00CC9A81)";
  161 + filter : progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr='#FFFFFFFF', endColorstr='#00CC9A81');
  162 +}
  163 +.sp-val {
  164 + background-image: -webkit-gradient(linear, 0 100%, 0 0, from(#000000), to(rgba(204, 154, 129, 0)));
  165 + background-image: -webkit-linear-gradient(bottom, #000000, rgba(204, 154, 129, 0));
  166 + background-image: -moz-linear-gradient(bottom, #000, rgba(204, 154, 129, 0));
  167 + background-image: -o-linear-gradient(bottom, #000, rgba(204, 154, 129, 0));
  168 + background-image: -ms-linear-gradient(bottom, #000, rgba(204, 154, 129, 0));
  169 + background-image: linear-gradient(to top, #000, rgba(204, 154, 129, 0));
  170 + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#00CC9A81, endColorstr=#FF000000)";
  171 + filter : progid:DXImageTransform.Microsoft.gradient(startColorstr='#00CC9A81', endColorstr='#FF000000');
  172 +}
  173 +
  174 +.sp-hue {
  175 + background: -moz-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);
  176 + background: -ms-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);
  177 + background: -o-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);
  178 + background: -webkit-gradient(linear, left top, left bottom, from(#ff0000), color-stop(0.17, #ffff00), color-stop(0.33, #00ff00), color-stop(0.5, #00ffff), color-stop(0.67, #0000ff), color-stop(0.83, #ff00ff), to(#ff0000));
  179 + background: -webkit-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);
  180 + background: linear-gradient(to bottom, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);
  181 +}
  182 +
  183 +/* IE filters do not support multiple color stops.
  184 + Generate 6 divs, line them up, and do two color gradients for each.
  185 + Yes, really.
  186 + */
  187 +.sp-1 {
  188 + height:17%;
  189 + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0000', endColorstr='#ffff00');
  190 +}
  191 +.sp-2 {
  192 + height:16%;
  193 + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffff00', endColorstr='#00ff00');
  194 +}
  195 +.sp-3 {
  196 + height:17%;
  197 + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ff00', endColorstr='#00ffff');
  198 +}
  199 +.sp-4 {
  200 + height:17%;
  201 + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ffff', endColorstr='#0000ff');
  202 +}
  203 +.sp-5 {
  204 + height:16%;
  205 + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0000ff', endColorstr='#ff00ff');
  206 +}
  207 +.sp-6 {
  208 + height:17%;
  209 + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff00ff', endColorstr='#ff0000');
  210 +}
  211 +
  212 +.sp-hidden {
  213 + display: none !important;
  214 +}
  215 +
  216 +/* Clearfix hack */
  217 +.sp-cf:before, .sp-cf:after { content: ""; display: table; }
  218 +.sp-cf:after { clear: both; }
  219 +.sp-cf { *zoom: 1; }
  220 +
  221 +/* Mobile devices, make hue slider bigger so it is easier to slide */
  222 +@media (max-device-width: 480px) {
  223 + .sp-color { right: 40%; }
  224 + .sp-hue { left: 63%; }
  225 + .sp-fill { padding-top: 60%; }
  226 +}
  227 +.sp-dragger {
  228 + border-radius: 5px;
  229 + height: 5px;
  230 + width: 5px;
  231 + border: 1px solid #fff;
  232 + background: #000;
  233 + cursor: pointer;
  234 + position:absolute;
  235 + top:0;
  236 + left: 0;
  237 +}
  238 +.sp-slider {
  239 + position: absolute;
  240 + top:0;
  241 + cursor:pointer;
  242 + height: 3px;
  243 + left: -1px;
  244 + right: -1px;
  245 + border: 1px solid #000;
  246 + background: white;
  247 + opacity: .8;
  248 +}
  249 +
  250 +/*
  251 +Theme authors:
  252 +Here are the basic themeable display options (colors, fonts, global widths).
  253 +See http://bgrins.github.io/spectrum/themes/ for instructions.
  254 +*/
  255 +
  256 +.sp-container {
  257 + border-radius: 0;
  258 + background-color: #ECECEC;
  259 + border: solid 1px #f0c49B;
  260 + padding: 0;
  261 +}
  262 +.sp-container, .sp-container button, .sp-container input, .sp-color, .sp-hue, .sp-clear {
  263 + font: normal 12px "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Geneva, Verdana, sans-serif;
  264 + -webkit-box-sizing: border-box;
  265 + -moz-box-sizing: border-box;
  266 + -ms-box-sizing: border-box;
  267 + box-sizing: border-box;
  268 +}
  269 +.sp-top {
  270 + margin-bottom: 3px;
  271 +}
  272 +.sp-color, .sp-hue, .sp-clear {
  273 + border: solid 1px #666;
  274 +}
  275 +
  276 +/* Input */
  277 +.sp-input-container {
  278 + float:right;
  279 + width: 100px;
  280 + margin-bottom: 4px;
  281 +}
  282 +.sp-initial-disabled .sp-input-container {
  283 + width: 100%;
  284 +}
  285 +.sp-input {
  286 + font-size: 12px !important;
  287 + border: 1px inset;
  288 + padding: 4px 5px;
  289 + margin: 0;
  290 + width: 100%;
  291 + background:transparent;
  292 + border-radius: 3px;
  293 + color: #222;
  294 +}
  295 +.sp-input:focus {
  296 + border: 1px solid orange;
  297 +}
  298 +.sp-input.sp-validation-error {
  299 + border: 1px solid red;
  300 + background: #fdd;
  301 +}
  302 +.sp-picker-container , .sp-palette-container {
  303 + float:left;
  304 + position: relative;
  305 + padding: 10px;
  306 + padding-bottom: 300px;
  307 + margin-bottom: -290px;
  308 +}
  309 +.sp-picker-container {
  310 + width: 172px;
  311 + border-left: solid 1px #fff;
  312 +}
  313 +
  314 +/* Palettes */
  315 +.sp-palette-container {
  316 + border-right: solid 1px #ccc;
  317 +}
  318 +
  319 +.sp-palette-only .sp-palette-container {
  320 + border: 0;
  321 +}
  322 +
  323 +.sp-palette .sp-thumb-el {
  324 + display: block;
  325 + position:relative;
  326 + float:left;
  327 + width: 24px;
  328 + height: 15px;
  329 + margin: 3px;
  330 + cursor: pointer;
  331 + border:solid 2px transparent;
  332 +}
  333 +.sp-palette .sp-thumb-el:hover, .sp-palette .sp-thumb-el.sp-thumb-active {
  334 + border-color: orange;
  335 +}
  336 +.sp-thumb-el {
  337 + position:relative;
  338 +}
  339 +
  340 +/* Initial */
  341 +.sp-initial {
  342 + float: left;
  343 + border: solid 1px #333;
  344 +}
  345 +.sp-initial span {
  346 + width: 30px;
  347 + height: 25px;
  348 + border:none;
  349 + display:block;
  350 + float:left;
  351 + margin:0;
  352 +}
  353 +
  354 +.sp-initial .sp-clear-display {
  355 + background-position: center;
  356 +}
  357 +
  358 +/* Buttons */
  359 +.sp-palette-button-container,
  360 +.sp-button-container {
  361 + float: right;
  362 +}
  363 +
  364 +/* Replacer (the little preview div that shows up instead of the <input>) */
  365 +.sp-replacer {
  366 + margin:0;
  367 + overflow:hidden;
  368 + cursor:pointer;
  369 + padding: 4px;
  370 + display:inline-block;
  371 + *zoom: 1;
  372 + *display: inline;
  373 + border: solid 1px #91765d;
  374 + background: #eee;
  375 + color: #333;
  376 + vertical-align: middle;
  377 +}
  378 +.sp-replacer:hover, .sp-replacer.sp-active {
  379 + border-color: #F0C49B;
  380 + color: #111;
  381 +}
  382 +.sp-replacer.sp-disabled {
  383 + cursor:default;
  384 + border-color: silver;
  385 + color: silver;
  386 +}
  387 +.sp-dd {
  388 + padding: 2px 0;
  389 + height: 16px;
  390 + line-height: 16px;
  391 + float:left;
  392 + font-size:10px;
  393 +}
  394 +.sp-preview {
  395 + position:relative;
  396 + width:25px;
  397 + height: 20px;
  398 + border: solid 1px #222;
  399 + margin-right: 5px;
  400 + float:left;
  401 + z-index: 0;
  402 +}
  403 +
  404 +.sp-palette {
  405 + *width: 220px;
  406 + max-width: 220px;
  407 +}
  408 +.sp-palette .sp-thumb-el {
  409 + width:16px;
  410 + height: 16px;
  411 + margin:2px 1px;
  412 + border: solid 1px #d0d0d0;
  413 +}
  414 +
  415 +.sp-container {
  416 + padding-bottom:0;
  417 +}
  418 +
  419 +
  420 +/* Buttons: http://hellohappy.org/css3-buttons/ */
  421 +.sp-container button {
  422 + background-color: #eeeeee;
  423 + background-image: -webkit-linear-gradient(top, #eeeeee, #cccccc);
  424 + background-image: -moz-linear-gradient(top, #eeeeee, #cccccc);
  425 + background-image: -ms-linear-gradient(top, #eeeeee, #cccccc);
  426 + background-image: -o-linear-gradient(top, #eeeeee, #cccccc);
  427 + background-image: linear-gradient(to bottom, #eeeeee, #cccccc);
  428 + border: 1px solid #ccc;
  429 + border-bottom: 1px solid #bbb;
  430 + border-radius: 3px;
  431 + color: #333;
  432 + font-size: 14px;
  433 + line-height: 1;
  434 + padding: 5px 4px;
  435 + text-align: center;
  436 + text-shadow: 0 1px 0 #eee;
  437 + vertical-align: middle;
  438 +}
  439 +.sp-container button:hover {
  440 + background-color: #dddddd;
  441 + background-image: -webkit-linear-gradient(top, #dddddd, #bbbbbb);
  442 + background-image: -moz-linear-gradient(top, #dddddd, #bbbbbb);
  443 + background-image: -ms-linear-gradient(top, #dddddd, #bbbbbb);
  444 + background-image: -o-linear-gradient(top, #dddddd, #bbbbbb);
  445 + background-image: linear-gradient(to bottom, #dddddd, #bbbbbb);
  446 + border: 1px solid #bbb;
  447 + border-bottom: 1px solid #999;
  448 + cursor: pointer;
  449 + text-shadow: 0 1px 0 #ddd;
  450 +}
  451 +.sp-container button:active {
  452 + border: 1px solid #aaa;
  453 + border-bottom: 1px solid #888;
  454 + -webkit-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee;
  455 + -moz-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee;
  456 + -ms-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee;
  457 + -o-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee;
  458 + box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee;
  459 +}
  460 +.sp-cancel {
  461 + font-size: 11px;
  462 + color: #d93f3f !important;
  463 + margin:0;
  464 + padding:2px;
  465 + margin-right: 5px;
  466 + vertical-align: middle;
  467 + text-decoration:none;
  468 +
  469 +}
  470 +.sp-cancel:hover {
  471 + color: #d93f3f !important;
  472 + text-decoration: underline;
  473 +}
  474 +
  475 +
  476 +.sp-palette span:hover, .sp-palette span.sp-thumb-active {
  477 + border-color: #000;
  478 +}
  479 +
  480 +.sp-preview, .sp-alpha, .sp-thumb-el {
  481 + position:relative;
  482 + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);
  483 +}
  484 +.sp-preview-inner, .sp-alpha-inner, .sp-thumb-inner {
  485 + display:block;
  486 + position:absolute;
  487 + top:0;left:0;bottom:0;right:0;
  488 +}
  489 +
  490 +.sp-palette .sp-thumb-inner {
  491 + background-position: 50% 50%;
  492 + background-repeat: no-repeat;
  493 +}
  494 +
  495 +.sp-palette .sp-thumb-light.sp-thumb-active .sp-thumb-inner {
  496 + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIVJREFUeNpiYBhsgJFMffxAXABlN5JruT4Q3wfi/0DsT64h8UD8HmpIPCWG/KemIfOJCUB+Aoacx6EGBZyHBqI+WsDCwuQ9mhxeg2A210Ntfo8klk9sOMijaURm7yc1UP2RNCMbKE9ODK1HM6iegYLkfx8pligC9lCD7KmRof0ZhjQACDAAceovrtpVBRkAAAAASUVORK5CYII=);
  497 +}
  498 +
  499 +.sp-palette .sp-thumb-dark.sp-thumb-active .sp-thumb-inner {
  500 + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAAMdJREFUOE+tkgsNwzAMRMugEAahEAahEAZhEAqlEAZhEAohEAYh81X2dIm8fKpEspLGvudPOsUYpxE2BIJCroJmEW9qJ+MKaBFhEMNabSy9oIcIPwrB+afvAUFoK4H0tMaQ3XtlrggDhOVVMuT4E5MMG0FBbCEYzjYT7OxLEvIHQLY2zWwQ3D+9luyOQTfKDiFD3iUIfPk8VqrKjgAiSfGFPecrg6HN6m/iBcwiDAo7WiBeawa+Kwh7tZoSCGLMqwlSAzVDhoK+6vH4G0P5wdkAAAAASUVORK5CYII=);
  501 +}
  502 +
  503 +.sp-clear-display {
  504 + background-repeat:no-repeat;
  505 + background-position: center;
  506 + background-image: url(data:image/gif;base64,R0lGODlhFAAUAPcAAAAAAJmZmZ2dnZ6enqKioqOjo6SkpKWlpaampqenp6ioqKmpqaqqqqurq/Hx8fLy8vT09PX19ff39/j4+Pn5+fr6+vv7+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAAAUABQAAAihAP9FoPCvoMGDBy08+EdhQAIJCCMybCDAAYUEARBAlFiQQoMABQhKUJBxY0SPICEYHBnggEmDKAuoPMjS5cGYMxHW3IiT478JJA8M/CjTZ0GgLRekNGpwAsYABHIypcAgQMsITDtWJYBR6NSqMico9cqR6tKfY7GeBCuVwlipDNmefAtTrkSzB1RaIAoXodsABiZAEFB06gIBWC1mLVgBa0AAOw==);
  507 +}
... ...