- Created complete documentation in docs/ directory - Added PROJECT_OVERVIEW.md with feature highlights and getting started guide - Added ARCHITECTURE.md with system design and technical details - Added SECURITY.md with comprehensive security implementation guide - Added DEVELOPMENT.md with development workflows and best practices - Added DEPLOYMENT.md with production deployment instructions - Added API.md with complete REST API documentation - Added CONTRIBUTING.md with contribution guidelines - Added CHANGELOG.md with version history and migration notes - Reorganized all documentation files into docs/ directory for better organization - Updated README.md with proper documentation links and quick navigation - Enhanced project structure with professional documentation standards
31 lines
1.1 KiB
JavaScript
31 lines
1.1 KiB
JavaScript
/*jshint camelcase:true, plusplus:true, forin:true, noarg:true, noempty:true, eqeqeq:true, bitwise:true, strict:true, undef:true, unused:true, curly:true, browser:true, devel:true, maxerr:100, white:false, onevar:false */
|
|
/*global jQuery:true $:true */
|
|
|
|
/* jQuery Simulate Extended Plugin 1.3.0
|
|
* http://github.com/j-ulrich/jquery-simulate-ext
|
|
*
|
|
* Copyright (c) 2014 Jochen Ulrich
|
|
* Licensed under the MIT license (MIT-LICENSE.txt).
|
|
*/
|
|
|
|
;(function( $ ) {
|
|
"use strict";
|
|
|
|
/* Overwrite the $.simulate.prototype.mouseEvent function
|
|
* to convert pageX/Y to clientX/Y
|
|
*/
|
|
var originalMouseEvent = $.simulate.prototype.mouseEvent,
|
|
rdocument = /\[object (?:HTML)?Document\]/;
|
|
|
|
$.simulate.prototype.mouseEvent = function(type, options) {
|
|
if (options.pageX || options.pageY) {
|
|
var doc = rdocument.test(Object.prototype.toString.call(this.target))? this.target : (this.target.ownerDocument || document);
|
|
options.clientX = (options.pageX || 0) - $(doc).scrollLeft();
|
|
options.clientY = (options.pageY || 0) - $(doc).scrollTop();
|
|
}
|
|
return originalMouseEvent.apply(this, [type, options]);
|
|
};
|
|
|
|
|
|
})( jQuery );
|