feat: Add comprehensive documentation suite and reorganize project structure
- 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
This commit is contained in:
379
f_scripts/shared/cropper/cropper.css
Normal file
379
f_scripts/shared/cropper/cropper.css
Normal file
@@ -0,0 +1,379 @@
|
||||
/*!
|
||||
* Cropper v2.2.5
|
||||
* https://github.com/fengyuanchen/cropper
|
||||
*
|
||||
* Copyright (c) 2014-2016 Fengyuan Chen and contributors
|
||||
* Released under the MIT license
|
||||
*
|
||||
* Date: 2016-01-18T05:42:29.639Z
|
||||
*/
|
||||
.cropper-container {
|
||||
font-size: 0;
|
||||
line-height: 0;
|
||||
|
||||
position: relative;
|
||||
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
|
||||
direction: ltr !important;
|
||||
-ms-touch-action: none;
|
||||
touch-action: none;
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
-webkit-touch-callout: none;
|
||||
}
|
||||
|
||||
.cropper-container img {
|
||||
display: block;
|
||||
|
||||
width: 100%;
|
||||
min-width: 0 !important;
|
||||
max-width: none !important;
|
||||
height: 100%;
|
||||
min-height: 0 !important;
|
||||
max-height: none !important;
|
||||
|
||||
image-orientation: 0deg !important;
|
||||
}
|
||||
|
||||
.cropper-wrap-box,
|
||||
.cropper-canvas,
|
||||
.cropper-drag-box,
|
||||
.cropper-crop-box,
|
||||
.cropper-modal {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.cropper-wrap-box {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.cropper-drag-box {
|
||||
opacity: 0;
|
||||
background-color: #fff;
|
||||
|
||||
filter: alpha(opacity=0);
|
||||
}
|
||||
|
||||
.cropper-modal {
|
||||
opacity: .5;
|
||||
background-color: #000;
|
||||
|
||||
filter: alpha(opacity=50);
|
||||
}
|
||||
|
||||
.cropper-view-box {
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
|
||||
outline: 1px solid #39f;
|
||||
outline-color: rgba(51, 153, 255, .75);
|
||||
}
|
||||
|
||||
.cropper-dashed {
|
||||
position: absolute;
|
||||
|
||||
display: block;
|
||||
|
||||
opacity: .5;
|
||||
border: 0 dashed #eee;
|
||||
|
||||
filter: alpha(opacity=50);
|
||||
}
|
||||
|
||||
.cropper-dashed.dashed-h {
|
||||
top: 33.33333%;
|
||||
left: 0;
|
||||
|
||||
width: 100%;
|
||||
height: 33.33333%;
|
||||
|
||||
border-top-width: 1px;
|
||||
border-bottom-width: 1px;
|
||||
}
|
||||
|
||||
.cropper-dashed.dashed-v {
|
||||
top: 0;
|
||||
left: 33.33333%;
|
||||
|
||||
width: 33.33333%;
|
||||
height: 100%;
|
||||
|
||||
border-right-width: 1px;
|
||||
border-left-width: 1px;
|
||||
}
|
||||
|
||||
.cropper-center {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
|
||||
display: block;
|
||||
|
||||
width: 0;
|
||||
height: 0;
|
||||
|
||||
opacity: .75;
|
||||
|
||||
filter: alpha(opacity=75);
|
||||
}
|
||||
|
||||
.cropper-center:before,
|
||||
.cropper-center:after {
|
||||
position: absolute;
|
||||
|
||||
display: block;
|
||||
|
||||
content: ' ';
|
||||
|
||||
background-color: #eee;
|
||||
}
|
||||
|
||||
.cropper-center:before {
|
||||
top: 0;
|
||||
left: -3px;
|
||||
|
||||
width: 7px;
|
||||
height: 1px;
|
||||
}
|
||||
|
||||
.cropper-center:after {
|
||||
top: -3px;
|
||||
left: 0;
|
||||
|
||||
width: 1px;
|
||||
height: 7px;
|
||||
}
|
||||
|
||||
.cropper-face,
|
||||
.cropper-line,
|
||||
.cropper-point {
|
||||
position: absolute;
|
||||
|
||||
display: block;
|
||||
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
|
||||
opacity: .1;
|
||||
|
||||
filter: alpha(opacity=10);
|
||||
}
|
||||
|
||||
.cropper-face {
|
||||
top: 0;
|
||||
left: 0;
|
||||
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.cropper-line {
|
||||
background-color: #39f;
|
||||
}
|
||||
|
||||
.cropper-line.line-e {
|
||||
top: 0;
|
||||
right: -3px;
|
||||
|
||||
width: 5px;
|
||||
|
||||
cursor: e-resize;
|
||||
}
|
||||
|
||||
.cropper-line.line-n {
|
||||
top: -3px;
|
||||
left: 0;
|
||||
|
||||
height: 5px;
|
||||
|
||||
cursor: n-resize;
|
||||
}
|
||||
|
||||
.cropper-line.line-w {
|
||||
top: 0;
|
||||
left: -3px;
|
||||
|
||||
width: 5px;
|
||||
|
||||
cursor: w-resize;
|
||||
}
|
||||
|
||||
.cropper-line.line-s {
|
||||
bottom: -3px;
|
||||
left: 0;
|
||||
|
||||
height: 5px;
|
||||
|
||||
cursor: s-resize;
|
||||
}
|
||||
|
||||
.cropper-point {
|
||||
width: 5px;
|
||||
height: 5px;
|
||||
|
||||
opacity: .75;
|
||||
background-color: #39f;
|
||||
|
||||
filter: alpha(opacity=75);
|
||||
}
|
||||
|
||||
.cropper-point.point-e {
|
||||
top: 50%;
|
||||
right: -3px;
|
||||
|
||||
margin-top: -3px;
|
||||
|
||||
cursor: e-resize;
|
||||
}
|
||||
|
||||
.cropper-point.point-n {
|
||||
top: -3px;
|
||||
left: 50%;
|
||||
|
||||
margin-left: -3px;
|
||||
|
||||
cursor: n-resize;
|
||||
}
|
||||
|
||||
.cropper-point.point-w {
|
||||
top: 50%;
|
||||
left: -3px;
|
||||
|
||||
margin-top: -3px;
|
||||
|
||||
cursor: w-resize;
|
||||
}
|
||||
|
||||
.cropper-point.point-s {
|
||||
bottom: -3px;
|
||||
left: 50%;
|
||||
|
||||
margin-left: -3px;
|
||||
|
||||
cursor: s-resize;
|
||||
}
|
||||
|
||||
.cropper-point.point-ne {
|
||||
top: -3px;
|
||||
right: -3px;
|
||||
|
||||
cursor: ne-resize;
|
||||
}
|
||||
|
||||
.cropper-point.point-nw {
|
||||
top: -3px;
|
||||
left: -3px;
|
||||
|
||||
cursor: nw-resize;
|
||||
}
|
||||
|
||||
.cropper-point.point-sw {
|
||||
bottom: -3px;
|
||||
left: -3px;
|
||||
|
||||
cursor: sw-resize;
|
||||
}
|
||||
|
||||
.cropper-point.point-se {
|
||||
right: -3px;
|
||||
bottom: -3px;
|
||||
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
|
||||
cursor: se-resize;
|
||||
|
||||
opacity: 1;
|
||||
|
||||
filter: alpha(opacity=100);
|
||||
}
|
||||
|
||||
.cropper-point.point-se:before {
|
||||
position: absolute;
|
||||
right: -50%;
|
||||
bottom: -50%;
|
||||
|
||||
display: block;
|
||||
|
||||
width: 200%;
|
||||
height: 200%;
|
||||
|
||||
content: ' ';
|
||||
|
||||
opacity: 0;
|
||||
background-color: #39f;
|
||||
|
||||
filter: alpha(opacity=0);
|
||||
}
|
||||
|
||||
@media (min-width: 768px) {
|
||||
.cropper-point.point-se {
|
||||
width: 15px;
|
||||
height: 15px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 992px) {
|
||||
.cropper-point.point-se {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 1200px) {
|
||||
.cropper-point.point-se {
|
||||
width: 5px;
|
||||
height: 5px;
|
||||
|
||||
opacity: .75;
|
||||
|
||||
filter: alpha(opacity=75);
|
||||
}
|
||||
}
|
||||
|
||||
.cropper-invisible {
|
||||
opacity: 0;
|
||||
|
||||
filter: alpha(opacity=0);
|
||||
}
|
||||
|
||||
.cropper-bg {
|
||||
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC');
|
||||
}
|
||||
|
||||
.cropper-hide {
|
||||
position: absolute;
|
||||
|
||||
display: block;
|
||||
|
||||
width: 0;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
.cropper-hidden {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.cropper-move {
|
||||
cursor: move;
|
||||
}
|
||||
|
||||
.cropper-crop {
|
||||
cursor: crosshair;
|
||||
}
|
||||
|
||||
.cropper-disabled .cropper-drag-box,
|
||||
.cropper-disabled .cropper-face,
|
||||
.cropper-disabled .cropper-line,
|
||||
.cropper-disabled .cropper-point {
|
||||
cursor: not-allowed;
|
||||
}
|
||||
162
f_scripts/shared/cropper/cropper.init.js
Normal file
162
f_scripts/shared/cropper/cropper.init.js
Normal file
@@ -0,0 +1,162 @@
|
||||
if (!HTMLCanvasElement.prototype.toBlob) {
|
||||
Object.defineProperty(HTMLCanvasElement.prototype, 'toBlob', {
|
||||
value: function (callback, type, quality) {
|
||||
type = 'image/jpeg';
|
||||
quality = 1;
|
||||
|
||||
var binStr = atob(this.toDataURL(type, quality).split(',')[1]),
|
||||
len = binStr.length,
|
||||
arr = new Uint8Array(len);
|
||||
|
||||
for (var i = 0; i < len; i++) {
|
||||
arr[i] = binStr.charCodeAt(i);
|
||||
}
|
||||
|
||||
callback(new Blob([arr], {type: type || 'image/jpeg'}));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function pad(num, size) {
|
||||
return ('000000000' + num).substr(-size);
|
||||
}
|
||||
|
||||
String.prototype.chunk = function (n) {
|
||||
var ret = [];
|
||||
for (var i = 0, len = this.length; i < len; i += n) {
|
||||
ret.push(this.substr(i, n))
|
||||
}
|
||||
|
||||
return ret
|
||||
};
|
||||
|
||||
$(document).ready(function() {
|
||||
var $image = $(".cropper img");
|
||||
|
||||
$image.cropper({
|
||||
aspectRatio: 512 / 85,
|
||||
resizable: true,
|
||||
rotatable: true,
|
||||
responsive: true,
|
||||
minCropBoxWidth: Math.round(2048),
|
||||
minCropBoxHeight: Math.round(340),
|
||||
done: function (data) {
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
var $inputImage = $('#fedit-image');
|
||||
var URL = window.URL || window.webkitURL;
|
||||
var blobURL;
|
||||
|
||||
if (URL) {
|
||||
$inputImage.change(function () {
|
||||
var files = this.files;
|
||||
var file;
|
||||
|
||||
if (!$image.data('cropper')) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (files && files.length) {
|
||||
file = files[0];
|
||||
|
||||
if (/^image\/\w+$/.test(file.type)) {
|
||||
blobURL = URL.createObjectURL(file);
|
||||
$image.one('built.cropper', function () {
|
||||
URL.revokeObjectURL(blobURL);
|
||||
}).cropper('reset').cropper('replace', blobURL);
|
||||
} else {
|
||||
$body.tooltip('Please choose an image file.', 'warning');
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
$inputImage.prop('disabled', true).parent().addClass('disabled');
|
||||
}
|
||||
|
||||
|
||||
$("a[class='c-zoomin']").click(function () {
|
||||
$image.cropper('zoom', '.1');
|
||||
});
|
||||
$("a[class='c-zoomout']").click(function () {
|
||||
$image.cropper('zoom', '-.1');
|
||||
});
|
||||
$("a[class='c-moveup']").click(function () {
|
||||
$image.cropper('move', '0', '-10');
|
||||
});
|
||||
$("a[class='c-movedown']").click(function () {
|
||||
$image.cropper('move', '0', '10');
|
||||
});
|
||||
$("a[class='c-moveleft']").click(function () {
|
||||
$image.cropper('move', '-10', '0');
|
||||
});
|
||||
$("a[class='c-moveright']").click(function () {
|
||||
$image.cropper('move', '10', '0');
|
||||
});
|
||||
|
||||
|
||||
$("button[id='done']").click(function () {
|
||||
if (typeof ($(".cropper-container").html()) != "undefined") {
|
||||
$image.cropper('getCroppedCanvas').toBlob(function (blob) {
|
||||
var reader = new window.FileReader();
|
||||
reader.readAsDataURL(blob);
|
||||
reader.onloadend = function () {
|
||||
base64data = reader.result.replace('png', 'jpeg');
|
||||
$("input[name='crop_data']").val(base64data);
|
||||
|
||||
$("#fedit-image-form").mask(" ");
|
||||
jQuery.post(current_url + menu_section + "?s=channel-menu-entry3&do=save", $("#fedit-image-form").serialize(), function (data) {
|
||||
|
||||
window.location = current_url + menu_section + "?r=confirm";
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
}
|
||||
});
|
||||
} else {
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
$("button[id='update']").click(function () {
|
||||
if (typeof ($(".cropper-container").html()) != "undefined") {
|
||||
$image.cropper('getCroppedCanvas').toBlob(function (blob) {
|
||||
var reader = new window.FileReader();
|
||||
reader.readAsDataURL(blob);
|
||||
reader.onloadend = function () {
|
||||
t = $("#crop-string").val();
|
||||
base64data = reader.result.replace('png', 'jpeg');
|
||||
$("input[name='crop_data']").val(base64data);
|
||||
|
||||
$(".fancybox-inner").mask(" ");
|
||||
jQuery.post(current_url + menu_section + "?s=channel-menu-entry3&do=save_crop&t=" + t, $("#fedit-image-form").serialize(), function (data) {
|
||||
if (t > 24) {
|
||||
$(".fancybox-inner #upload-response").html(data);
|
||||
$(".fancybox-inner").unmask("");
|
||||
} else {
|
||||
window.location = current_url + menu_section + "?r=confirm";
|
||||
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
} else {
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
$("button[id='default']").click(function () {
|
||||
t = $("#crop-string").val();
|
||||
$(".fancybox-inner").mask(" ");
|
||||
jQuery.post(current_url + menu_section + "?s=channel-menu-entry3&do=save_default&t=" + t, $("#fedit-image-form").serialize(), function (data) {
|
||||
$("#channel-own-photos img").removeClass("own");
|
||||
$("#channel-own-photos #li-" + t + " img").addClass("own");
|
||||
$(".fancybox-inner #upload-response").html(data);
|
||||
$(".fancybox-inner").unmask("");
|
||||
});
|
||||
});
|
||||
});
|
||||
1
f_scripts/shared/cropper/cropper.init.min.js
vendored
Normal file
1
f_scripts/shared/cropper/cropper.init.min.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
if(!HTMLCanvasElement.prototype.toBlob){Object.defineProperty(HTMLCanvasElement.prototype,"toBlob",{value:function(callback,type,quality){type="image/jpeg";quality=1;var binStr=atob(this.toDataURL(type,quality).split(",")[1]),len=binStr.length,arr=new Uint8Array(len);for(var i=0;i<len;i++){arr[i]=binStr.charCodeAt(i)}callback(new Blob([arr],{type:type||"image/jpeg"}))}})}function pad(num,size){return("000000000"+num).substr(-size)}String.prototype.chunk=function(n){var ret=[];for(var i=0,len=this.length;i<len;i+=n){ret.push(this.substr(i,n))}return ret};$(document).ready(function(){var $image=$(".cropper img");$image.cropper({aspectRatio:512/85,resizable:true,rotatable:true,responsive:true,minCropBoxWidth:Math.round(2048),minCropBoxHeight:Math.round(340),done:function(data){}});var $inputImage=$("#fedit-image");var URL=window.URL||window.webkitURL;var blobURL;if(URL){$inputImage.change(function(){var files=this.files;var file;if(!$image.data("cropper")){return}if(files&&files.length){file=files[0];if(/^image\/\w+$/.test(file.type)){blobURL=URL.createObjectURL(file);$image.one("built.cropper",function(){URL.revokeObjectURL(blobURL)}).cropper("reset").cropper("replace",blobURL)}else{$body.tooltip("Please choose an image file.","warning")}}})}else{$inputImage.prop("disabled",true).parent().addClass("disabled")}$("a[class='c-zoomin']").click(function(){$image.cropper("zoom",".1")});$("a[class='c-zoomout']").click(function(){$image.cropper("zoom","-.1")});$("a[class='c-moveup']").click(function(){$image.cropper("move","0","-10")});$("a[class='c-movedown']").click(function(){$image.cropper("move","0","10")});$("a[class='c-moveleft']").click(function(){$image.cropper("move","-10","0")});$("a[class='c-moveright']").click(function(){$image.cropper("move","10","0")});$("button[id='done']").click(function(){if(typeof $(".cropper-container").html()!="undefined"){$image.cropper("getCroppedCanvas").toBlob(function(blob){var reader=new window.FileReader;reader.readAsDataURL(blob);reader.onloadend=function(){base64data=reader.result.replace("png","jpeg");$("input[name='crop_data']").val(base64data);$("#fedit-image-form").mask(" ");jQuery.post(current_url+menu_section+"?s=channel-menu-entry3&do=save",$("#fedit-image-form").serialize(),function(data){window.location=current_url+menu_section+"?r=confirm";return false})}})}else{}});$("button[id='update']").click(function(){if(typeof $(".cropper-container").html()!="undefined"){$image.cropper("getCroppedCanvas").toBlob(function(blob){var reader=new window.FileReader;reader.readAsDataURL(blob);reader.onloadend=function(){t=$("#crop-string").val();base64data=reader.result.replace("png","jpeg");$("input[name='crop_data']").val(base64data);$(".fancybox-inner").mask(" ");jQuery.post(current_url+menu_section+"?s=channel-menu-entry3&do=save_crop&t="+t,$("#fedit-image-form").serialize(),function(data){if(t>24){$(".fancybox-inner #upload-response").html(data);$(".fancybox-inner").unmask("")}else{window.location=current_url+menu_section+"?r=confirm";return false}})}})}else{}});$("button[id='default']").click(function(){t=$("#crop-string").val();$(".fancybox-inner").mask(" ");jQuery.post(current_url+menu_section+"?s=channel-menu-entry3&do=save_default&t="+t,$("#fedit-image-form").serialize(),function(data){$("#channel-own-photos img").removeClass("own");$("#channel-own-photos #li-"+t+" img").addClass("own");$(".fancybox-inner #upload-response").html(data);$(".fancybox-inner").unmask("")})})});
|
||||
2974
f_scripts/shared/cropper/cropper.js
Normal file
2974
f_scripts/shared/cropper/cropper.js
Normal file
File diff suppressed because it is too large
Load Diff
9
f_scripts/shared/cropper/cropper.min.css
vendored
Normal file
9
f_scripts/shared/cropper/cropper.min.css
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
/*!
|
||||
* Cropper v2.2.5
|
||||
* https://github.com/fengyuanchen/cropper
|
||||
*
|
||||
* Copyright (c) 2014-2016 Fengyuan Chen and contributors
|
||||
* Released under the MIT license
|
||||
*
|
||||
* Date: 2016-01-18T05:42:29.639Z
|
||||
*/.cropper-container{font-size:0;line-height:0;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;direction:ltr!important;-ms-touch-action:none;touch-action:none;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}.cropper-container img{display:block;width:100%;min-width:0!important;max-width:none!important;height:100%;min-height:0!important;max-height:none!important;image-orientation:0deg!important}.cropper-canvas,.cropper-crop-box,.cropper-drag-box,.cropper-modal,.cropper-wrap-box{position:absolute;top:0;right:0;bottom:0;left:0}.cropper-wrap-box{overflow:hidden}.cropper-drag-box{opacity:0;background-color:#fff;filter:alpha(opacity=0)}.cropper-dashed,.cropper-modal{opacity:.5;filter:alpha(opacity=50)}.cropper-modal{background-color:#000}.cropper-view-box{display:block;overflow:hidden;width:100%;height:100%;outline:#39f solid 1px;outline-color:rgba(51,153,255,.75)}.cropper-dashed{position:absolute;display:block;border:0 dashed #eee}.cropper-dashed.dashed-h{top:33.33333%;left:0;width:100%;height:33.33333%;border-top-width:1px;border-bottom-width:1px}.cropper-dashed.dashed-v{top:0;left:33.33333%;width:33.33333%;height:100%;border-right-width:1px;border-left-width:1px}.cropper-center{position:absolute;top:50%;left:50%;display:block;width:0;height:0;opacity:.75;filter:alpha(opacity=75)}.cropper-center:after,.cropper-center:before{position:absolute;display:block;content:' ';background-color:#eee}.cropper-center:before{top:0;left:-3px;width:7px;height:1px}.cropper-center:after{top:-3px;left:0;width:1px;height:7px}.cropper-face,.cropper-line,.cropper-point{position:absolute;display:block;width:100%;height:100%;opacity:.1;filter:alpha(opacity=10)}.cropper-face{top:0;left:0;background-color:#fff}.cropper-line,.cropper-point{background-color:#39f}.cropper-line.line-e{top:0;right:-3px;width:5px;cursor:e-resize}.cropper-line.line-n{top:-3px;left:0;height:5px;cursor:n-resize}.cropper-line.line-w{top:0;left:-3px;width:5px;cursor:w-resize}.cropper-line.line-s{bottom:-3px;left:0;height:5px;cursor:s-resize}.cropper-point{width:5px;height:5px;opacity:.75;filter:alpha(opacity=75)}.cropper-point.point-e{top:50%;right:-3px;margin-top:-3px;cursor:e-resize}.cropper-point.point-n{top:-3px;left:50%;margin-left:-3px;cursor:n-resize}.cropper-point.point-w{top:50%;left:-3px;margin-top:-3px;cursor:w-resize}.cropper-point.point-s{bottom:-3px;left:50%;margin-left:-3px;cursor:s-resize}.cropper-point.point-ne{top:-3px;right:-3px;cursor:ne-resize}.cropper-point.point-nw{top:-3px;left:-3px;cursor:nw-resize}.cropper-point.point-sw{bottom:-3px;left:-3px;cursor:sw-resize}.cropper-point.point-se{right:-3px;bottom:-3px;width:20px;height:20px;cursor:se-resize;opacity:1;filter:alpha(opacity=100)}.cropper-point.point-se:before{position:absolute;right:-50%;bottom:-50%;display:block;width:200%;height:200%;content:' ';opacity:0;background-color:#39f;filter:alpha(opacity=0)}@media (min-width:768px){.cropper-point.point-se{width:15px;height:15px}}@media (min-width:992px){.cropper-point.point-se{width:10px;height:10px}}@media (min-width:1200px){.cropper-point.point-se{width:5px;height:5px;opacity:.75;filter:alpha(opacity=75)}}.cropper-invisible{opacity:0;filter:alpha(opacity=0)}.cropper-bg{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC)}.cropper-hide{position:absolute;display:block;width:0;height:0}.cropper-hidden{display:none!important}.cropper-move{cursor:move}.cropper-crop{cursor:crosshair}.cropper-disabled .cropper-drag-box,.cropper-disabled .cropper-face,.cropper-disabled .cropper-line,.cropper-disabled .cropper-point{cursor:not-allowed}
|
||||
10
f_scripts/shared/cropper/cropper.min.js
vendored
Normal file
10
f_scripts/shared/cropper/cropper.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user