From 6bee5072d0d5ec250c4654ce4c401e9e8f4c5fb9 Mon Sep 17 00:00:00 2001
From: Daniel Supernault
Date: Fri, 5 Feb 2021 21:13:52 -0700
Subject: [PATCH 1/7] Update pixelfed config, add media_fast_process setting
---
config/pixelfed.php | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/config/pixelfed.php b/config/pixelfed.php
index 2637e8d15..c492cf2c1 100644
--- a/config/pixelfed.php
+++ b/config/pixelfed.php
@@ -263,5 +263,19 @@ return [
'bouncer' => [
'enabled' => env('PF_BOUNCER_ENABLED', false),
- ]
+ ],
+
+ /*
+ |--------------------------------------------------------------------------
+ | Media Fast Process
+ |--------------------------------------------------------------------------
+ |
+ | Don't require photos & video to finish optimization &
+ | upload to S3 if enabled before posting. If disabled
+ | users will have to wait until processed before posting,
+ | sacrificing the user experience to ensure media is federated
+ | using S3 urls (if enabled). Default: off
+ |
+ */
+ 'media_fast_process' => env('PF_MEDIA_FAST_PROCESS', true),
];
From 33b625f508360173a63ea0813aebf750919204d9 Mon Sep 17 00:00:00 2001
From: Daniel Supernault
Date: Fri, 5 Feb 2021 21:15:13 -0700
Subject: [PATCH 2/7] Update ComposeController, add mediaProcessingCheck method
---
app/Http/Controllers/ComposeController.php | 35 ++++++++++++++++++++++
1 file changed, 35 insertions(+)
diff --git a/app/Http/Controllers/ComposeController.php b/app/Http/Controllers/ComposeController.php
index bada3cd65..d2003dddc 100644
--- a/app/Http/Controllers/ComposeController.php
+++ b/app/Http/Controllers/ComposeController.php
@@ -513,4 +513,39 @@ class ComposeController extends Controller
return $status->url();
}
+
+ public function mediaProcessingCheck(Request $request)
+ {
+ $this->validate($request, [
+ 'id' => 'required|integer|min:1'
+ ]);
+
+ $media = Media::whereUserId($request->user()->id)
+ ->whereNull('status_id')
+ ->findOrFail($request->input('id'));
+
+ if(config('pixelfed.media_fast_process')) {
+ return [
+ 'finished' => true
+ ];
+ }
+
+ $finished = false;
+
+ switch ($media->mime) {
+ case 'image/jpeg':
+ case 'image/png':
+ case 'video/mp4':
+ $finished = config('pixelfed.cloud_storage') ? (bool) $media->cdn_url : (bool) $media->processed_at;
+ break;
+
+ default:
+ # code...
+ break;
+ }
+
+ return [
+ 'finished' => $finished
+ ];
+ }
}
From e6e76e809d5b8469a4e2ad07de9df82be9310c86 Mon Sep 17 00:00:00 2001
From: Daniel Supernault
Date: Fri, 5 Feb 2021 21:19:12 -0700
Subject: [PATCH 3/7] Update ComposeModal, add processing step disabled by
default
---
.../assets/js/components/ComposeModal.vue | 112 ++++++++++++++++--
1 file changed, 101 insertions(+), 11 deletions(-)
diff --git a/resources/assets/js/components/ComposeModal.vue b/resources/assets/js/components/ComposeModal.vue
index 82499a14f..fc058a5f5 100644
--- a/resources/assets/js/components/ComposeModal.vue
+++ b/resources/assets/js/components/ComposeModal.vue
@@ -59,11 +59,13 @@
-
-
- {{media.length}}
-
- {{pageTitle}}
+
+
+
+ {{media.length}}
+
+ {{pageTitle}}
+
@@ -561,6 +563,34 @@
+
+
+
+ Loading...
+
+
+ Processing Media
+
+
+ This may take a few seconds.
+
+
+
+
+
+
+
+ Loading...
+
+
+ Processing Media
+
+
+ This may take a few seconds.
+
+
+
+
@@ -685,12 +715,17 @@ export default {
'editMedia',
'cameraRoll',
'tagPeopleHelp',
- 'textOptions'
+ 'textOptions',
+ 'processingVideo',
+ 'processingPhoto'
],
cameraRollMedia: [],
taggedUsernames: [],
taggedPeopleSearch: null,
- textMode: false
+ textMode: false,
+ isProcessingMedia: false,
+ processPhotoInterval: undefined,
+ processVideoInterval: undefined
}
},
@@ -790,9 +825,14 @@ export default {
self.ids.push(e.data.id);
self.media.push(e.data);
self.uploading = false;
- setTimeout(function() {
- self.page = 2;
- }, 300);
+
+ if(e.data.mime == 'video/mp4') {
+ self.processVideo(e.data);
+ return;
+ } else {
+ self.processPhoto(e.data);
+ return;
+ }
}).catch(function(e) {
switch(e.response.status) {
case 451:
@@ -1165,7 +1205,6 @@ export default {
ctx.clearRect(0, 0, image.width, image.height);
}
}
-
},
tagSearch(input) {
@@ -1208,7 +1247,58 @@ export default {
showTextOptions() {
this.page = 'textOptions';
this.pageTitle = 'Text Post Options';
+ },
+
+ processPhoto(media) {
+ this.page = 'processingPhoto';
+ this.pageTitle = '';
+ this.processPhotoCheck(media);
+ },
+
+ processPhotoCheck(media) {
+ this.isProcessingMedia = true;
+ this.processMediaCheck(media);
+ this.processPhotoInterval = setInterval(() => {
+ this.processMediaCheck(media);
+ }, 2500);
+ },
+
+ processVideo(media) {
+ this.page = 'processingVideo';
+ this.pageTitle = '';
+ this.processVideoCheck(media);
+ },
+
+ processVideoCheck(media) {
+ this.isProcessingMedia = true;
+ this.processMediaCheck(media, 'video');
+ this.processVideoInterval = setInterval(() => {
+ this.processMediaCheck(media, 'video');
+ }, 2500);
+ },
+
+ processMediaCheck(media, type = 'photo') {
+ return axios.get('/api/compose/v0/media/processing', {
+ params: {
+ id: media.id
+ }
+ }).then(res => {
+ let data = res.data;
+ if(data.finished === true) {
+ this.isProcessingMedia = false;
+ this.page = 3;
+ if(type == 'photo') {
+ clearInterval(this.processPhotoInterval);
+ } else if (type == 'video') {
+ clearInterval(this.processVideoInterval);
+ } else {
+ }
+ return;
+ }
+ });
}
+
+
}
}
From a1059a6e12103815e64b59e513fe9ee01980ba5a Mon Sep 17 00:00:00 2001
From: Daniel Supernault
Date: Fri, 5 Feb 2021 21:20:19 -0700
Subject: [PATCH 4/7] Update DiscoverComponent, allow unathenicated if enabled
---
.../js/components/DiscoverComponent.vue | 33 ++++++++++++-------
1 file changed, 22 insertions(+), 11 deletions(-)
diff --git a/resources/assets/js/components/DiscoverComponent.vue b/resources/assets/js/components/DiscoverComponent.vue
index e1fa217a4..b16bf3375 100644
--- a/resources/assets/js/components/DiscoverComponent.vue
+++ b/resources/assets/js/components/DiscoverComponent.vue
@@ -4,7 +4,7 @@
-
-
+
@@ -151,6 +151,7 @@
export default {
data() {
return {
+ authenticated: false,
loaded: false,
config: window.App.config,
posts: {},
@@ -163,14 +164,21 @@
recommendedLoading: true
}
},
+
+ beforeMount() {
+ this.authenticated = $('body').hasClass('loggedIn');
+ },
+
mounted() {
this.loaded = true;
this.loadTrending();
- this.fetchData();
- axios.get('/api/pixelfed/v1/accounts/verify_credentials').then(res => {
- window._sharedData.curUser = res.data;
- window.App.util.navatar();
- });
+ if($('body').hasClass('loggedIn') == true) {
+ this.fetchData();
+ axios.get('/api/pixelfed/v1/accounts/verify_credentials').then(res => {
+ window._sharedData.curUser = res.data;
+ window.App.util.navatar();
+ });
+ }
},
methods: {
@@ -180,7 +188,7 @@
}
axios.get('/api/pixelfed/v2/discover/posts')
.then((res) => {
- this.posts = res.data.posts;
+ this.posts = res.data.posts.filter(r => r != null);
this.recommendedLoading = false;
});
},
@@ -206,13 +214,16 @@
}
})
.then(res => {
+ let data = res.data.filter(r => {
+ return r !== null;
+ });
if(this.trendingRange == 'daily') {
- this.trendingDaily = res.data.filter(t => t.sensitive == false);
+ this.trendingDaily = data.filter(t => t.sensitive == false);
}
if(this.trendingRange == 'monthly') {
- this.trendingMonthly = res.data.filter(t => t.sensitive == false);
+ this.trendingMonthly = data.filter(t => t.sensitive == false);
}
- this.trending = res.data;
+ this.trending = data;
this.trendingLoading = false;
});
},
From a9e98965abc7997c0823a8993911ca1d583b3455 Mon Sep 17 00:00:00 2001
From: Daniel Supernault
Date: Fri, 5 Feb 2021 21:21:41 -0700
Subject: [PATCH 5/7] Update components, improve content warnings
---
.../assets/js/components/PostComponent.vue | 6 ++---
resources/assets/js/components/Timeline.vue | 4 +--
.../components/presenter/PhotoPresenter.vue | 25 +++++++++++++------
3 files changed, 23 insertions(+), 12 deletions(-)
diff --git a/resources/assets/js/components/PostComponent.vue b/resources/assets/js/components/PostComponent.vue
index 2c23b9bf0..83418090b 100644
--- a/resources/assets/js/components/PostComponent.vue
+++ b/resources/assets/js/components/PostComponent.vue
@@ -53,7 +53,7 @@
+
{{status.account.username}} diff --git a/resources/assets/js/components/presenter/PhotoPresenter.vue b/resources/assets/js/components/presenter/PhotoPresenter.vue index d96973600..0ac4ef2e2 100644 --- a/resources/assets/js/components/presenter/PhotoPresenter.vue +++ b/resources/assets/js/components/presenter/PhotoPresenter.vue @@ -1,5 +1,5 @@ -
+
@@ -37,10 +36,18 @@
.content-label {
margin: 0;
position: absolute;
- top:45%;
+ top:50%;
left:50%;
- z-index: 999;
+ z-index: 2;
transform: translate(-50%, -50%);
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ width: 100%;
+ height: 100%;
+ z-index: 2;
+ background: rgba(0, 0, 0, 0.2)
}
@@ -56,6 +63,10 @@
}
return 'Photo was not tagged with any alt text.';
+ },
+
+ toggleContentWarning(status) {
+ this.$emit('togglecw');
}
}
}
From 832dac45c5f2a4c2ec4072254c66f0e6cf54462b Mon Sep 17 00:00:00 2001
From: Daniel Supernault
Date: Fri, 5 Feb 2021 21:22:25 -0700
Subject: [PATCH 6/7] Update changelog
---
CHANGELOG.md | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index ba6746003..a9ecf8a27 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -31,6 +31,11 @@
- Updated ComposeController, use MediaStorageService for media deletes. ([ab5469ff](https://github.com/pixelfed/pixelfed/commit/ab5469ff))
- Updated StatusDeletePipeline, use MediaStorageService for media deletes. ([9fd90e17](https://github.com/pixelfed/pixelfed/commit/9fd90e17))
- Updated Discover, allow public discover access. ([1404ac6e](https://github.com/pixelfed/pixelfed/commit/1404ac6e))
+- Updated pixelfed config, add media_fast_process setting. ([6bee5072](https://github.com/pixelfed/pixelfed/commit/6bee5072))
+- Updated ComposeController, add mediaProcessingCheck method. ([33b625f5](https://github.com/pixelfed/pixelfed/commit/33b625f5))
+- Updated ComposeModal, add processing step disabled by default. ([e6e76e80](https://github.com/pixelfed/pixelfed/commit/e6e76e80))
+- Updated DiscoverComponent, allow unathenicated if enabled. ([a1059a6e](https://github.com/pixelfed/pixelfed/commit/a1059a6e))
+- Updated components, improve content warnings. ([a9e98965](https://github.com/pixelfed/pixelfed/commit/a9e98965))
- ([](https://github.com/pixelfed/pixelfed/commit/))
## [v0.10.10 (2021-01-28)](https://github.com/pixelfed/pixelfed/compare/v0.10.9...v0.10.10)
From e6a897bf3f84b3cd8989a0cc4a24ec6b8a91ca15 Mon Sep 17 00:00:00 2001
From: Daniel Supernault
Date: Fri, 5 Feb 2021 21:25:25 -0700
Subject: [PATCH 7/7] Update compiled assets
---
public/js/compose.js | 2 +-
public/js/discover.js | 2 +-
public/js/profile.js | 2 +-
public/js/rempos.js | 2 +-
public/js/status.js | 2 +-
public/js/timeline.js | 2 +-
public/mix-manifest.json | 12 ++++++------
7 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/public/js/compose.js b/public/js/compose.js
index 0a91c944a..053e2c304 100644
--- a/public/js/compose.js
+++ b/public/js/compose.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{"0ox+":function(t,e,i){(t.exports=i("I1BE")(!1)).push([t.i,'.autocomplete-input{border:1px solid #eee;border-radius:8px;width:100%;padding:12px 12px 12px 48px;box-sizing:border-box;position:relative;font-size:16px;line-height:1.5;-webkit-box-flex:1;flex:1;background-color:#eee;background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjNjY2IiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PGNpcmNsZSBjeD0iMTEiIGN5PSIxMSIgcj0iOCIvPjxwYXRoIGQ9Ik0yMSAyMWwtNC00Ii8+PC9zdmc+");background-repeat:no-repeat;background-position:12px}.autocomplete-input:focus,.autocomplete-input[aria-expanded=true]{border-color:rgba(0,0,0,.12);background-color:#fff;outline:none;box-shadow:0 2px 2px rgba(0,0,0,.16)}[data-position=below] .autocomplete-input[aria-expanded=true]{border-bottom-color:transparent;border-radius:8px 8px 0 0}[data-position=above] .autocomplete-input[aria-expanded=true]{border-top-color:transparent;border-radius:0 0 8px 8px;z-index:2}.autocomplete[data-loading=true]:after{content:"";border:3px solid rgba(0,0,0,.12);border-right-color:rgba(0,0,0,.48);border-radius:100%;width:20px;height:20px;position:absolute;right:12px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);-webkit-animation:rotate 1s linear infinite;animation:rotate 1s linear infinite}.autocomplete-result-list{margin:0;border:1px solid rgba(0,0,0,.12);padding:0;box-sizing:border-box;max-height:296px;overflow-y:auto;background:#fff;list-style:none;box-shadow:0 2px 2px rgba(0,0,0,.16)}[data-position=below] .autocomplete-result-list{margin-top:-1px;border-top-color:transparent;border-radius:0 0 8px 8px;padding-bottom:8px}[data-position=above] .autocomplete-result-list{margin-bottom:-1px;border-bottom-color:transparent;border-radius:8px 8px 0 0;padding-top:8px}.autocomplete-result{cursor:default;padding:12px 12px 12px 48px;background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjY2NjIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PGNpcmNsZSBjeD0iMTEiIGN5PSIxMSIgcj0iOCIvPjxwYXRoIGQ9Ik0yMSAyMWwtNC00Ii8+PC9zdmc+");background-repeat:no-repeat;background-position:12px}.autocomplete-result:hover,.autocomplete-result[aria-selected=true]{background-color:rgba(0,0,0,.06)}@-webkit-keyframes rotate{0%{-webkit-transform:translateY(-50%) rotate(0deg);transform:translateY(-50%) rotate(0deg)}to{-webkit-transform:translateY(-50%) rotate(359deg);transform:translateY(-50%) rotate(359deg)}}@keyframes rotate{0%{-webkit-transform:translateY(-50%) rotate(0deg);transform:translateY(-50%) rotate(0deg)}to{-webkit-transform:translateY(-50%) rotate(359deg);transform:translateY(-50%) rotate(359deg)}}',""])},"3VoG":function(t,e,i){(t.exports=i("I1BE")(!1)).push([t.i,"/*!\n * Cropper.js v1.5.6\n * https://fengyuanchen.github.io/cropperjs\n *\n * Copyright 2015-present Chen Fengyuan\n * Released under the MIT license\n *\n * Date: 2019-10-04T04:33:44.164Z\n */\n\n.cropper-container {\n direction: ltr;\n font-size: 0;\n line-height: 0;\n position: relative;\n -ms-touch-action: none;\n touch-action: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.cropper-container img {\n display: block;\n height: 100%;\n image-orientation: 0deg;\n max-height: none !important;\n max-width: none !important;\n min-height: 0 !important;\n min-width: 0 !important;\n width: 100%;\n}\n\n.cropper-wrap-box,\n.cropper-canvas,\n.cropper-drag-box,\n.cropper-crop-box,\n.cropper-modal {\n bottom: 0;\n left: 0;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.cropper-wrap-box,\n.cropper-canvas {\n overflow: hidden;\n}\n\n.cropper-drag-box {\n background-color: #fff;\n opacity: 0;\n}\n\n.cropper-modal {\n background-color: #000;\n opacity: 0.5;\n}\n\n.cropper-view-box {\n display: block;\n height: 100%;\n outline: 1px solid #39f;\n outline-color: rgba(51, 153, 255, 0.75);\n overflow: hidden;\n width: 100%;\n}\n\n.cropper-dashed {\n border: 0 dashed #eee;\n display: block;\n opacity: 0.5;\n position: absolute;\n}\n\n.cropper-dashed.dashed-h {\n border-bottom-width: 1px;\n border-top-width: 1px;\n height: calc(100% / 3);\n left: 0;\n top: calc(100% / 3);\n width: 100%;\n}\n\n.cropper-dashed.dashed-v {\n border-left-width: 1px;\n border-right-width: 1px;\n height: 100%;\n left: calc(100% / 3);\n top: 0;\n width: calc(100% / 3);\n}\n\n.cropper-center {\n display: block;\n height: 0;\n left: 50%;\n opacity: 0.75;\n position: absolute;\n top: 50%;\n width: 0;\n}\n\n.cropper-center::before,\n.cropper-center::after {\n background-color: #eee;\n content: ' ';\n display: block;\n position: absolute;\n}\n\n.cropper-center::before {\n height: 1px;\n left: -3px;\n top: 0;\n width: 7px;\n}\n\n.cropper-center::after {\n height: 7px;\n left: 0;\n top: -3px;\n width: 1px;\n}\n\n.cropper-face,\n.cropper-line,\n.cropper-point {\n display: block;\n height: 100%;\n opacity: 0.1;\n position: absolute;\n width: 100%;\n}\n\n.cropper-face {\n background-color: #fff;\n left: 0;\n top: 0;\n}\n\n.cropper-line {\n background-color: #39f;\n}\n\n.cropper-line.line-e {\n cursor: ew-resize;\n right: -3px;\n top: 0;\n width: 5px;\n}\n\n.cropper-line.line-n {\n cursor: ns-resize;\n height: 5px;\n left: 0;\n top: -3px;\n}\n\n.cropper-line.line-w {\n cursor: ew-resize;\n left: -3px;\n top: 0;\n width: 5px;\n}\n\n.cropper-line.line-s {\n bottom: -3px;\n cursor: ns-resize;\n height: 5px;\n left: 0;\n}\n\n.cropper-point {\n background-color: #39f;\n height: 5px;\n opacity: 0.75;\n width: 5px;\n}\n\n.cropper-point.point-e {\n cursor: ew-resize;\n margin-top: -3px;\n right: -3px;\n top: 50%;\n}\n\n.cropper-point.point-n {\n cursor: ns-resize;\n left: 50%;\n margin-left: -3px;\n top: -3px;\n}\n\n.cropper-point.point-w {\n cursor: ew-resize;\n left: -3px;\n margin-top: -3px;\n top: 50%;\n}\n\n.cropper-point.point-s {\n bottom: -3px;\n cursor: s-resize;\n left: 50%;\n margin-left: -3px;\n}\n\n.cropper-point.point-ne {\n cursor: nesw-resize;\n right: -3px;\n top: -3px;\n}\n\n.cropper-point.point-nw {\n cursor: nwse-resize;\n left: -3px;\n top: -3px;\n}\n\n.cropper-point.point-sw {\n bottom: -3px;\n cursor: nesw-resize;\n left: -3px;\n}\n\n.cropper-point.point-se {\n bottom: -3px;\n cursor: nwse-resize;\n height: 20px;\n opacity: 1;\n right: -3px;\n width: 20px;\n}\n\n@media (min-width: 768px) {\n .cropper-point.point-se {\n height: 15px;\n width: 15px;\n }\n}\n\n@media (min-width: 992px) {\n .cropper-point.point-se {\n height: 10px;\n width: 10px;\n }\n}\n\n@media (min-width: 1200px) {\n .cropper-point.point-se {\n height: 5px;\n opacity: 0.75;\n width: 5px;\n }\n}\n\n.cropper-point.point-se::before {\n background-color: #39f;\n bottom: -50%;\n content: ' ';\n display: block;\n height: 200%;\n opacity: 0;\n position: absolute;\n right: -50%;\n width: 200%;\n}\n\n.cropper-invisible {\n opacity: 0;\n}\n\n.cropper-bg {\n background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC');\n}\n\n.cropper-hide {\n display: block;\n height: 0;\n position: absolute;\n width: 0;\n}\n\n.cropper-hidden {\n display: none !important;\n}\n\n.cropper-move {\n cursor: move;\n}\n\n.cropper-crop {\n cursor: crosshair;\n}\n\n.cropper-disabled .cropper-drag-box,\n.cropper-disabled .cropper-face,\n.cropper-disabled .cropper-line,\n.cropper-disabled .cropper-point {\n cursor: not-allowed;\n}\n",""])},7:function(t,e,i){t.exports=i("K0g3")},"9tPo":function(t,e){t.exports=function(t){var e="undefined"!=typeof window&&window.location;if(!e)throw new Error("fixUrls requires window.location");if(!t||"string"!=typeof t)return t;var i=e.protocol+"//"+e.host,a=i+e.pathname.replace(/\/[^\/]*$/,"/");return t.replace(/url\s*\(((?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)\)/gi,(function(t,e){var n,o=e.trim().replace(/^"(.*)"$/,(function(t,e){return e})).replace(/^'(.*)'$/,(function(t,e){return e}));return/^(#|data:|http:\/\/|https:\/\/|file:\/\/\/|\s*$)/i.test(o)?t:(n=0===o.indexOf("//")?o:0===o.indexOf("/")?i+o:a+o.replace(/^\.\//,""),"url("+JSON.stringify(n)+")")}))}},I1BE:function(t,e){t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var i=function(t,e){var i=t[1]||"",a=t[3];if(!a)return i;if(e&&"function"==typeof btoa){var n=(s=a,"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(s))))+" */"),o=a.sources.map((function(t){return"/*# sourceURL="+a.sourceRoot+t+" */"}));return[i].concat(o).concat([n]).join("\n")}var s;return[i].join("\n")}(e,t);return e[2]?"@media "+e[2]+"{"+i+"}":i})).join("")},e.i=function(t,i){"string"==typeof t&&(t=[[null,t,""]]);for(var a={},n=0;n=0&&h.splice(e,1)}function v(t){var e=document.createElement("style");if(void 0===t.attrs.type&&(t.attrs.type="text/css"),void 0===t.attrs.nonce){var a=function(){0;return i.nc}();a&&(t.attrs.nonce=a)}return b(e,t.attrs),f(t,e),e}function b(t,e){Object.keys(e).forEach((function(i){t.setAttribute(i,e[i])}))}function x(t,e){var i,a,n,o;if(e.transform&&t.css){if(!(o="function"==typeof e.transform?e.transform(t.css):e.transform.default(t.css)))return function(){};t.css=o}if(e.singleton){var s=d++;i=l||(l=v(e)),a=C.bind(null,i,s,!1),n=C.bind(null,i,s,!0)}else t.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(i=function(t){var e=document.createElement("link");return void 0===t.attrs.type&&(t.attrs.type="text/css"),t.attrs.rel="stylesheet",b(e,t.attrs),f(t,e),e}(e),a=k.bind(null,i,e),n=function(){g(i),i.href&&URL.revokeObjectURL(i.href)}):(i=v(e),a=_.bind(null,i),n=function(){g(i)});return a(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;a(t=e)}else n()}}t.exports=function(t,e){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");(e=e||{}).attrs="object"==typeof e.attrs?e.attrs:{},e.singleton||"boolean"==typeof e.singleton||(e.singleton=s()),e.insertInto||(e.insertInto="head"),e.insertAt||(e.insertAt="bottom");var i=m(t,e);return u(i,e),function(t){for(var a=[],n=0;n0&&void 0!==arguments[0]?arguments[0]:{},o=n.search,s=n.autoSelect,l=void 0!==s&&s,d=n.setValue,h=void 0===d?function(){}:d,p=n.setAttribute,u=void 0===p?function(){}:p,m=n.onUpdate,f=void 0===m?function(){}:m,g=n.onSubmit,v=void 0===g?function(){}:g,b=n.onShow,x=void 0===b?function(){}:b,w=n.onHide,y=void 0===w?function(){}:w,C=n.onLoading,_=void 0===C?function(){}:C,k=n.onLoaded,D=void 0===k?function(){}:k;i(this,t),a(this,"value",""),a(this,"searchCounter",0),a(this,"results",[]),a(this,"selectedIndex",-1),a(this,"handleInput",(function(t){var i=t.target.value;e.updateResults(i),e.value=i})),a(this,"handleKeyDown",(function(t){var i=t.key;switch(i){case"Up":case"Down":case"ArrowUp":case"ArrowDown":var a="ArrowUp"===i||"Up"===i?e.selectedIndex-1:e.selectedIndex+1;t.preventDefault(),e.handleArrows(a);break;case"Tab":e.selectResult();break;case"Enter":var n=e.results[e.selectedIndex];e.selectResult(),e.onSubmit(n);break;case"Esc":case"Escape":e.hideResults(),e.setValue();break;default:return}})),a(this,"handleFocus",(function(t){var i=t.target.value;e.updateResults(i),e.value=i})),a(this,"handleBlur",(function(){e.hideResults()})),a(this,"handleResultMouseDown",(function(t){t.preventDefault()})),a(this,"handleResultClick",(function(t){var i=t.target,a=r(i,"[data-result-index]");if(a){e.selectedIndex=parseInt(a.dataset.resultIndex,10);var n=e.results[e.selectedIndex];e.selectResult(),e.onSubmit(n)}})),a(this,"handleArrows",(function(t){var i=e.results.length;e.selectedIndex=(t%i+i)%i,e.onUpdate(e.results,e.selectedIndex)})),a(this,"selectResult",(function(){var t=e.results[e.selectedIndex];t&&e.setValue(t),e.hideResults()})),a(this,"updateResults",(function(t){var i=++e.searchCounter;e.onLoading(),e.search(t).then((function(t){i===e.searchCounter&&(e.results=t,e.onLoaded(),0!==e.results.length?(e.selectedIndex=e.autoSelect?0:-1,e.onUpdate(e.results,e.selectedIndex),e.showResults()):e.hideResults())}))})),a(this,"showResults",(function(){e.setAttribute("aria-expanded",!0),e.onShow()})),a(this,"hideResults",(function(){e.selectedIndex=-1,e.results=[],e.setAttribute("aria-expanded",!1),e.setAttribute("aria-activedescendant",""),e.onUpdate(e.results,e.selectedIndex),e.onHide()})),a(this,"checkSelectedResultVisible",(function(t){var i=t.querySelector('[data-result-index="'.concat(e.selectedIndex,'"]'));if(i){var a=t.getBoundingClientRect(),n=i.getBoundingClientRect();n.topa.bottom&&(t.scrollTop+=n.bottom-a.bottom)}})),this.search=c(o)?o:function(t){return Promise.resolve(o(t))},this.autoSelect=l,this.setValue=h,this.setAttribute=u,this.onUpdate=f,this.onSubmit=v,this.onShow=x,this.onHide=y,this.onLoading=_,this.onLoaded=D},d=0,h=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return"".concat(t).concat(++d)};const p=function(t,e,i,a,n,o,s,r,c,l){"boolean"!=typeof s&&(c=r,r=s,s=!1);const d="function"==typeof i?i.options:i;let h;if(t&&t.render&&(d.render=t.render,d.staticRenderFns=t.staticRenderFns,d._compiled=!0,n&&(d.functional=!0)),a&&(d._scopeId=a),o?(h=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),e&&e.call(this,c(t)),t&&t._registeredComponents&&t._registeredComponents.add(o)},d._ssrRegister=h):e&&(h=s?function(t){e.call(this,l(t,this.$root.$options.shadowRoot))}:function(t){e.call(this,r(t))}),h)if(d.functional){const t=d.render;d.render=function(e,i){return h.call(i),t(e,i)}}else{const t=d.beforeCreate;d.beforeCreate=t?[].concat(t,h):[h]}return i}({render:function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{ref:"root"},[t._t("default",[i("div",t._b({},"div",t.rootProps,!1),[i("input",t._g(t._b({ref:"input",on:{input:t.handleInput,keydown:t.core.handleKeyDown,focus:t.core.handleFocus,blur:t.core.handleBlur}},"input",t.inputProps,!1),t.$listeners)),t._v(" "),i("ul",t._g(t._b({ref:"resultList"},"ul",t.resultListProps,!1),t.resultListListeners),[t._l(t.results,(function(e,a){return[t._t("result",[i("li",t._b({key:t.resultProps[a].id},"li",t.resultProps[a],!1),[t._v("\n "+t._s(t.getResultValue(e))+"\n ")])],{result:e,props:t.resultProps[a]})]}))],2)])],{rootProps:t.rootProps,inputProps:t.inputProps,inputListeners:t.inputListeners,resultListProps:t.resultListProps,resultListListeners:t.resultListListeners,results:t.results,resultProps:t.resultProps})],2)},staticRenderFns:[]},void 0,{name:"Autocomplete",inheritAttrs:!1,props:{search:{type:Function,required:!0},baseClass:{type:String,default:"autocomplete"},autoSelect:{type:Boolean,default:!1},getResultValue:{type:Function,default:function(t){return t}},defaultValue:{type:String,default:""},debounceTime:{type:Number,default:0}},data:function(){var t,e,i,a,n=new l({search:this.search,autoSelect:this.autoSelect,setValue:this.setValue,onUpdate:this.handleUpdate,onSubmit:this.handleSubmit,onShow:this.handleShow,onHide:this.handleHide,onLoading:this.handleLoading,onLoaded:this.handleLoaded});return this.debounceTime>0&&(n.handleInput=(t=n.handleInput,e=this.debounceTime,function(){var n=this,o=arguments,s=function(){a=null,i||t.apply(n,o)},r=i&&!a;clearTimeout(a),a=setTimeout(s,e),r&&t.apply(n,o)})),{core:n,value:this.defaultValue,resultListId:h("".concat(this.baseClass,"-result-list-")),results:[],selectedIndex:-1,expanded:!1,loading:!1,position:"below",resetPosition:!0}},computed:{rootProps:function(){return{class:this.baseClass,style:{position:"relative"},"data-expanded":this.expanded,"data-loading":this.loading,"data-position":this.position}},inputProps:function(){return o({class:"".concat(this.baseClass,"-input"),value:this.value,role:"combobox",autocomplete:"off",autocapitalize:"off",autocorrect:"off",spellcheck:"false","aria-autocomplete":"list","aria-haspopup":"listbox","aria-owns":this.resultListId,"aria-expanded":this.expanded?"true":"false","aria-activedescendant":this.selectedIndex>-1?this.resultProps[this.selectedIndex].id:""},this.$attrs)},inputListeners:function(){return{input:this.handleInput,keydown:this.core.handleKeyDown,focus:this.core.handleFocus,blur:this.core.handleBlur}},resultListProps:function(){var t="below"===this.position?"top":"bottom";return{id:this.resultListId,class:"".concat(this.baseClass,"-result-list"),role:"listbox",style:a({position:"absolute",zIndex:1,width:"100%",visibility:this.expanded?"visible":"hidden",pointerEvents:this.expanded?"auto":"none"},t,"100%")}},resultListListeners:function(){return{mousedown:this.core.handleResultMouseDown,click:this.core.handleResultClick}},resultProps:function(){var t=this;return this.results.map((function(e,i){return o({id:"".concat(t.baseClass,"-result-").concat(i),class:"".concat(t.baseClass,"-result"),"data-result-index":i,role:"option"},t.selectedIndex===i?{"aria-selected":"true"}:{})}))}},mounted:function(){document.body.addEventListener("click",this.handleDocumentClick)},beforeDestroy:function(){document.body.removeEventListener("click",this.handleDocumentClick)},updated:function(){var t,e,i,a;this.$refs.input&&this.$refs.resultList&&(this.resetPosition&&this.results.length>0&&(this.resetPosition=!1,this.position=(t=this.$refs.input,e=this.$refs.resultList,i=t.getBoundingClientRect(),a=e.getBoundingClientRect(),i.bottom+a.height>window.innerHeight&&window.innerHeight-i.bottom0?"above":"below")),this.core.checkSelectedResultVisible(this.$refs.resultList))},methods:{setValue:function(t){this.value=t?this.getResultValue(t):""},handleUpdate:function(t,e){this.results=t,this.selectedIndex=e,this.$emit("update",t,e)},handleShow:function(){this.expanded=!0},handleHide:function(){this.expanded=!1,this.resetPosition=!0},handleLoading:function(){this.loading=!0},handleLoaded:function(){this.loading=!1},handleInput:function(t){this.value=t.target.value,this.core.handleInput(t)},handleSubmit:function(t){this.$emit("submit",t)},handleDocumentClick:function(t){this.$refs.root.contains(t.target)||this.core.hideResults()}}},void 0,!1,void 0,!1,void 0,void 0,void 0);function u(t){u.installed||(u.installed=!0,t.component("Autocomplete",p))}var m,f={install:u};"undefined"!=typeof window?m=window.Vue:void 0!==t&&(m=t.Vue),m&&m.use(f),p.install=u,e.a=p}).call(this,i("yLpj"))},lcPr:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a,n=i("urRO"),o=(a=n)&&a.__esModule?a:{default:a};var s="undefined"==typeof window?[String,Array]:[String,Array,Element,NodeList];e.default={render:function(t){return t("div",{style:this.containerStyle},[t("img",{ref:"img",attrs:{src:this.src,alt:this.alt||"image",style:"max-width: 100%"},on:this.$listeners,style:this.imgStyle})])},props:{containerStyle:Object,src:{type:String,default:""},alt:String,imgStyle:Object,viewMode:Number,dragMode:String,initialAspectRatio:Number,aspectRatio:Number,data:Object,preview:s,responsive:{type:Boolean,default:!0},restore:{type:Boolean,default:!0},checkCrossOrigin:{type:Boolean,default:!0},checkOrientation:{type:Boolean,default:!0},modal:{type:Boolean,default:!0},guides:{type:Boolean,default:!0},center:{type:Boolean,default:!0},highlight:{type:Boolean,default:!0},background:{type:Boolean,default:!0},autoCrop:{type:Boolean,default:!0},autoCropArea:Number,movable:{type:Boolean,default:!0},rotatable:{type:Boolean,default:!0},scalable:{type:Boolean,default:!0},zoomable:{type:Boolean,default:!0},zoomOnTouch:{type:Boolean,default:!0},zoomOnWheel:{type:Boolean,default:!0},wheelZoomRatio:Number,cropBoxMovable:{type:Boolean,default:!0},cropBoxResizable:{type:Boolean,default:!0},toggleDragModeOnDblclick:{type:Boolean,default:!0},minCanvasWidth:Number,minCanvasHeight:Number,minCropBoxWidth:Number,minCropBoxHeight:Number,minContainerWidth:Number,minContainerHeight:Number,ready:Function,cropstart:Function,cropmove:Function,cropend:Function,crop:Function,zoom:Function},mounted:function(){var t=this.$options.props,e=(t.containerStyle,t.src,t.alt,t.imgStyle,function(t,e){var i={};for(var a in t)e.indexOf(a)>=0||Object.prototype.hasOwnProperty.call(t,a)&&(i[a]=t[a]);return i}(t,["containerStyle","src","alt","imgStyle"])),i={};for(var a in e)void 0!==this[a]&&(i[a]=this[a]);this.cropper=new o.default(this.$refs.img,i)},methods:{reset:function(){return this.cropper.reset()},clear:function(){return this.cropper.clear()},initCrop:function(){return this.cropper.crop()},replace:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return this.cropper.replace(t,e)},enable:function(){return this.cropper.enable()},disable:function(){return this.cropper.disable()},destroy:function(){return this.cropper.destroy()},move:function(t,e){return this.cropper.move(t,e)},moveTo:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t;return this.cropper.moveTo(t,e)},relativeZoom:function(t,e){return this.cropper.zoom(t,e)},zoomTo:function(t,e){return this.cropper.zoomTo(t,e)},rotate:function(t){return this.cropper.rotate(t)},rotateTo:function(t){return this.cropper.rotateTo(t)},scaleX:function(t){return this.cropper.scaleX(t)},scaleY:function(t){return this.cropper.scaleY(t)},scale:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t;return this.cropper.scale(t,e)},getData:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.cropper.getData(t)},setData:function(t){return this.cropper.setData(t)},getContainerData:function(){return this.cropper.getContainerData()},getImageData:function(){return this.cropper.getImageData()},getCanvasData:function(){return this.cropper.getCanvasData()},setCanvasData:function(t){return this.cropper.setCanvasData(t)},getCropBoxData:function(){return this.cropper.getCropBoxData()},setCropBoxData:function(t){return this.cropper.setCropBoxData(t)},getCroppedCanvas:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.cropper.getCroppedCanvas(t)},setAspectRatio:function(t){return this.cropper.setAspectRatio(t)},setDragMode:function(t){return this.cropper.setDragMode(t)}}}},lxFg:function(t,e,i){"use strict";var a=i("W1wl");i.n(a).a},urRO:function(t,e,i){t.exports=function(){"use strict";function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(e)}function e(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){for(var i=0;i0&&t<1/0};function O(t){return void 0===t}function E(e){return"object"===t(e)&&null!==e}var I=Object.prototype.hasOwnProperty;function N(t){if(!E(t))return!1;try{var e=t.constructor,i=e.prototype;return e&&i&&I.call(i,"isPrototypeOf")}catch(t){return!1}}function z(t){return"function"==typeof t}var j=Array.prototype.slice;function H(t){return Array.from?Array.from(t):j.call(t)}function U(t,e){return t&&z(e)&&(Array.isArray(t)||R(t.length)?H(t).forEach((function(i,a){e.call(t,i,a,t)})):E(t)&&Object.keys(t).forEach((function(i){e.call(t,t[i],i,t)}))),t}var W=Object.assign||function(t){for(var e=arguments.length,i=new Array(e>1?e-1:0),a=1;a0&&i.forEach((function(e){E(e)&&Object.keys(e).forEach((function(i){t[i]=e[i]}))})),t},Y=/\.\d*(?:0|9){12}\d*$/;function $(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e11;return Y.test(t)?Math.round(t*e)/e:t}var F=/^width|height|left|top|marginLeft|marginTop$/;function X(t,e){var i=t.style;U(e,(function(t,e){F.test(e)&&R(t)&&(t="".concat(t,"px")),i[e]=t}))}function V(t,e){if(e)if(R(t.length))U(t,(function(t){V(t,e)}));else if(t.classList)t.classList.add(e);else{var i=t.className.trim();i?i.indexOf(e)<0&&(t.className="".concat(i," ").concat(e)):t.className=e}}function Z(t,e){e&&(R(t.length)?U(t,(function(t){Z(t,e)})):t.classList?t.classList.remove(e):t.className.indexOf(e)>=0&&(t.className=t.className.replace(e,"")))}function q(t,e,i){e&&(R(t.length)?U(t,(function(t){q(t,e,i)})):i?V(t,e):Z(t,e))}var G=/([a-z\d])([A-Z])/g;function Q(t){return t.replace(G,"$1-$2").toLowerCase()}function J(t,e){return E(t[e])?t[e]:t.dataset?t.dataset[e]:t.getAttribute("data-".concat(Q(e)))}function K(t,e,i){E(i)?t[e]=i:t.dataset?t.dataset[e]=i:t.setAttribute("data-".concat(Q(e)),i)}var tt=/\s\s*/,et=function(){var t=!1;if(r){var e=!1,i=function(){},a=Object.defineProperty({},"once",{get:function(){return t=!0,e},set:function(t){e=t}});c.addEventListener("test",i,a),c.removeEventListener("test",i,a)}return t}();function it(t,e,i){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},n=i;e.trim().split(tt).forEach((function(e){if(!et){var o=t.listeners;o&&o[e]&&o[e][i]&&(n=o[e][i],delete o[e][i],0===Object.keys(o[e]).length&&delete o[e],0===Object.keys(o).length&&delete t.listeners)}t.removeEventListener(e,n,a)}))}function at(t,e,i){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},n=i;e.trim().split(tt).forEach((function(e){if(a.once&&!et){var o=t.listeners,s=void 0===o?{}:o;n=function(){delete s[e][i],t.removeEventListener(e,n,a);for(var o=arguments.length,r=new Array(o),c=0;c1&&void 0!==arguments[1]?arguments[1]:"contain",o=L(a),s=L(i);if(o&&s){var r=i*e;"contain"===n&&r>a||"cover"===n&&r=8&&(o=c+d)}}}if(o){var h,p,u=i.getUint16(o,a);for(p=0;pt.width?3===i?r=t.height*s:c=t.width/s:3===i?c=t.width/s:r=t.height*s;var l={aspectRatio:s,naturalWidth:n,naturalHeight:o,width:r,height:c};l.left=(t.width-r)/2,l.top=(t.height-c)/2,l.oldLeft=l.left,l.oldTop=l.top,this.canvasData=l,this.limited=1===i||2===i,this.limitCanvas(!0,!0),this.initialImageData=W({},e),this.initialCanvasData=W({},l)},limitCanvas:function(t,e){var i=this.options,a=this.containerData,n=this.canvasData,o=this.cropBoxData,s=i.viewMode,r=n.aspectRatio,c=this.cropped&&o;if(t){var l=Number(i.minCanvasWidth)||0,d=Number(i.minCanvasHeight)||0;s>1?(l=Math.max(l,a.width),d=Math.max(d,a.height),3===s&&(d*r>l?l=d*r:d=l/r)):s>0&&(l?l=Math.max(l,c?o.width:0):d?d=Math.max(d,c?o.height:0):c&&(l=o.width,(d=o.height)*r>l?l=d*r:d=l/r));var h=pt({aspectRatio:r,width:l,height:d});l=h.width,d=h.height,n.minWidth=l,n.minHeight=d,n.maxWidth=1/0,n.maxHeight=1/0}if(e)if(s>(c?0:1)){var p=a.width-n.width,u=a.height-n.height;n.minLeft=Math.min(0,p),n.minTop=Math.min(0,u),n.maxLeft=Math.max(0,p),n.maxTop=Math.max(0,u),c&&this.limited&&(n.minLeft=Math.min(o.left,o.left+(o.width-n.width)),n.minTop=Math.min(o.top,o.top+(o.height-n.height)),n.maxLeft=o.left,n.maxTop=o.top,2===s&&(n.width>=a.width&&(n.minLeft=Math.min(0,p),n.maxLeft=Math.max(0,p)),n.height>=a.height&&(n.minTop=Math.min(0,u),n.maxTop=Math.max(0,u))))}else n.minLeft=-n.width,n.minTop=-n.height,n.maxLeft=a.width,n.maxTop=a.height},renderCanvas:function(t,e){var i=this.canvasData,a=this.imageData;if(e){var n=function(t){var e=t.width,i=t.height,a=t.degree;if(90==(a=Math.abs(a)%180))return{width:i,height:e};var n=a%90*Math.PI/180,o=Math.sin(n),s=Math.cos(n),r=e*s+i*o,c=e*o+i*s;return a>90?{width:c,height:r}:{width:r,height:c}}({width:a.naturalWidth*Math.abs(a.scaleX||1),height:a.naturalHeight*Math.abs(a.scaleY||1),degree:a.rotate||0}),o=n.width,s=n.height,r=i.width*(o/i.naturalWidth),c=i.height*(s/i.naturalHeight);i.left-=(r-i.width)/2,i.top-=(c-i.height)/2,i.width=r,i.height=c,i.aspectRatio=o/s,i.naturalWidth=o,i.naturalHeight=s,this.limitCanvas(!0,!1)}(i.width>i.maxWidth||i.widthi.maxHeight||i.heighte.width?n.height=n.width/i:n.width=n.height*i),this.cropBoxData=n,this.limitCropBox(!0,!0),n.width=Math.min(Math.max(n.width,n.minWidth),n.maxWidth),n.height=Math.min(Math.max(n.height,n.minHeight),n.maxHeight),n.width=Math.max(n.minWidth,n.width*a),n.height=Math.max(n.minHeight,n.height*a),n.left=e.left+(e.width-n.width)/2,n.top=e.top+(e.height-n.height)/2,n.oldLeft=n.left,n.oldTop=n.top,this.initialCropBoxData=W({},n)},limitCropBox:function(t,e){var i=this.options,a=this.containerData,n=this.canvasData,o=this.cropBoxData,s=this.limited,r=i.aspectRatio;if(t){var c=Number(i.minCropBoxWidth)||0,l=Number(i.minCropBoxHeight)||0,d=s?Math.min(a.width,n.width,n.width+n.left,a.width-n.left):a.width,h=s?Math.min(a.height,n.height,n.height+n.top,a.height-n.top):a.height;c=Math.min(c,a.width),l=Math.min(l,a.height),r&&(c&&l?l*r>c?l=c/r:c=l*r:c?l=c/r:l&&(c=l*r),h*r>d?h=d/r:d=h*r),o.minWidth=Math.min(c,d),o.minHeight=Math.min(l,h),o.maxWidth=d,o.maxHeight=h}e&&(s?(o.minLeft=Math.max(0,n.left),o.minTop=Math.max(0,n.top),o.maxLeft=Math.min(a.width,n.left+n.width)-o.width,o.maxTop=Math.min(a.height,n.top+n.height)-o.height):(o.minLeft=0,o.minTop=0,o.maxLeft=a.width-o.width,o.maxTop=a.height-o.height))},renderCropBox:function(){var t=this.options,e=this.containerData,i=this.cropBoxData;(i.width>i.maxWidth||i.widthi.maxHeight||i.height=e.width&&i.height>=e.height?"move":"all"),X(this.cropBox,W({width:i.width,height:i.height},dt({translateX:i.left,translateY:i.top}))),this.cropped&&this.limited&&this.limitCanvas(!0,!0),this.disabled||this.output()},output:function(){this.preview(),nt(this.element,"crop",this.getData())}},bt={initPreview:function(){var t=this.element,e=this.crossOrigin,i=this.options.preview,a=e?this.crossOriginUrl:this.url,n=t.alt||"The image to preview",o=document.createElement("img");if(e&&(o.crossOrigin=e),o.src=a,o.alt=n,this.viewBox.appendChild(o),this.viewBoxImage=o,i){var s=i;"string"==typeof i?s=t.ownerDocument.querySelectorAll(i):i.querySelector&&(s=[i]),this.previews=s,U(s,(function(t){var i=document.createElement("img");K(t,x,{width:t.offsetWidth,height:t.offsetHeight,html:t.innerHTML}),e&&(i.crossOrigin=e),i.src=a,i.alt=n,i.style.cssText='display:block;width:100%;height:auto;min-width:0!important;min-height:0!important;max-width:none!important;max-height:none!important;image-orientation:0deg!important;"',t.innerHTML="",t.appendChild(i)}))}},resetPreview:function(){U(this.previews,(function(t){var e=J(t,x);X(t,{width:e.width,height:e.height}),t.innerHTML=e.html,function(t,e){if(E(t[e]))try{delete t[e]}catch(i){t[e]=void 0}else if(t.dataset)try{delete t.dataset[e]}catch(i){t.dataset[e]=void 0}else t.removeAttribute("data-".concat(Q(e)))}(t,x)}))},preview:function(){var t=this.imageData,e=this.canvasData,i=this.cropBoxData,a=i.width,n=i.height,o=t.width,s=t.height,r=i.left-e.left-t.left,c=i.top-e.top-t.top;this.cropped&&!this.disabled&&(X(this.viewBoxImage,W({width:o,height:s},dt(W({translateX:-r,translateY:-c},t)))),U(this.previews,(function(e){var i=J(e,x),l=i.width,d=i.height,h=l,p=d,u=1;a&&(p=n*(u=l/a)),n&&p>d&&(h=a*(u=d/n),p=d),X(e,{width:h,height:p}),X(e.getElementsByTagName("img")[0],W({width:o*u,height:s*u},dt(W({translateX:-r*u,translateY:-c*u},t))))})))}},xt={bind:function(){var t=this.element,e=this.options,i=this.cropper;z(e.cropstart)&&at(t,"cropstart",e.cropstart),z(e.cropmove)&&at(t,"cropmove",e.cropmove),z(e.cropend)&&at(t,"cropend",e.cropend),z(e.crop)&&at(t,"crop",e.crop),z(e.zoom)&&at(t,"zoom",e.zoom),at(i,_,this.onCropStart=this.cropStart.bind(this)),e.zoomable&&e.zoomOnWheel&&at(i,"wheel",this.onWheel=this.wheel.bind(this),{passive:!1,capture:!0}),e.toggleDragModeOnDblclick&&at(i,"dblclick",this.onDblclick=this.dblclick.bind(this)),at(t.ownerDocument,k,this.onCropMove=this.cropMove.bind(this)),at(t.ownerDocument,D,this.onCropEnd=this.cropEnd.bind(this)),e.responsive&&at(window,"resize",this.onResize=this.resize.bind(this))},unbind:function(){var t=this.element,e=this.options,i=this.cropper;z(e.cropstart)&&it(t,"cropstart",e.cropstart),z(e.cropmove)&&it(t,"cropmove",e.cropmove),z(e.cropend)&&it(t,"cropend",e.cropend),z(e.crop)&&it(t,"crop",e.crop),z(e.zoom)&&it(t,"zoom",e.zoom),it(i,_,this.onCropStart),e.zoomable&&e.zoomOnWheel&&it(i,"wheel",this.onWheel,{passive:!1,capture:!0}),e.toggleDragModeOnDblclick&&it(i,"dblclick",this.onDblclick),it(t.ownerDocument,k,this.onCropMove),it(t.ownerDocument,D,this.onCropEnd),e.responsive&&it(window,"resize",this.onResize)}},wt={resize:function(){var t=this.options,e=this.container,i=this.containerData,a=Number(t.minContainerWidth)||200,n=Number(t.minContainerHeight)||100;if(!(this.disabled||i.width<=a||i.height<=n)){var o,s,r=e.offsetWidth/i.width;1===r&&e.offsetHeight===i.height||(t.restore&&(o=this.getCanvasData(),s=this.getCropBoxData()),this.render(),t.restore&&(this.setCanvasData(U(o,(function(t,e){o[e]=t*r}))),this.setCropBoxData(U(s,(function(t,e){s[e]=t*r})))))}},dblclick:function(){var t,e;this.disabled||"none"===this.options.dragMode||this.setDragMode((t=this.dragBox,e=h,(t.classList?t.classList.contains(e):t.className.indexOf(e)>-1)?"move":"crop"))},wheel:function(t){var e=this,i=Number(this.options.wheelZoomRatio)||.1,a=1;this.disabled||(t.preventDefault(),this.wheeling||(this.wheeling=!0,setTimeout((function(){e.wheeling=!1}),50),t.deltaY?a=t.deltaY>0?1:-1:t.wheelDelta?a=-t.wheelDelta/120:t.detail&&(a=t.detail>0?1:-1),this.zoom(-a*i,t)))},cropStart:function(t){var e=t.buttons,i=t.button;if(!(this.disabled||("mousedown"===t.type||"pointerdown"===t.type&&"mouse"===t.pointerType)&&(R(e)&&1!==e||R(i)&&0!==i||t.ctrlKey))){var a,n=this.options,o=this.pointers;t.changedTouches?U(t.changedTouches,(function(t){o[t.identifier]=ht(t)})):o[t.pointerId||0]=ht(t),a=Object.keys(o).length>1&&n.zoomable&&n.zoomOnTouch?"zoom":J(t.target,b),M.test(a)&&!1!==nt(this.element,"cropstart",{originalEvent:t,action:a})&&(t.preventDefault(),this.action=a,this.cropping=!1,"crop"===a&&(this.cropping=!0,V(this.dragBox,g)))}},cropMove:function(t){var e=this.action;if(!this.disabled&&e){var i=this.pointers;t.preventDefault(),!1!==nt(this.element,"cropmove",{originalEvent:t,action:e})&&(t.changedTouches?U(t.changedTouches,(function(t){W(i[t.identifier]||{},ht(t,!0))})):W(i[t.pointerId||0]||{},ht(t,!0)),this.change(t))}},cropEnd:function(t){if(!this.disabled){var e=this.action,i=this.pointers;t.changedTouches?U(t.changedTouches,(function(t){delete i[t.identifier]})):delete i[t.pointerId||0],e&&(t.preventDefault(),Object.keys(i).length||(this.action=""),this.cropping&&(this.cropping=!1,q(this.dragBox,g,this.cropped&&this.options.modal)),nt(this.element,"cropend",{originalEvent:t,action:e}))}}},yt={change:function(t){var e,i=this.options,a=this.canvasData,n=this.containerData,s=this.cropBoxData,r=this.pointers,c=this.action,l=i.aspectRatio,d=s.left,h=s.top,p=s.width,m=s.height,f=d+p,g=h+m,v=0,b=0,x=n.width,w=n.height,y=!0;!l&&t.shiftKey&&(l=p&&m?p/m:1),this.limited&&(v=s.minLeft,b=s.minTop,x=v+Math.min(n.width,a.width,a.left+a.width),w=b+Math.min(n.height,a.height,a.top+a.height));var C=r[Object.keys(r)[0]],_={x:C.endX-C.startX,y:C.endY-C.startY},k=function(t){switch(t){case"e":f+_.x>x&&(_.x=x-f);break;case"w":d+_.xw&&(_.y=w-g)}};switch(c){case"all":d+=_.x,h+=_.y;break;case"e":if(_.x>=0&&(f>=x||l&&(h<=b||g>=w))){y=!1;break}k("e"),(p+=_.x)<0&&(c="w",d-=p=-p),l&&(m=p/l,h+=(s.height-m)/2);break;case"n":if(_.y<=0&&(h<=b||l&&(d<=v||f>=x))){y=!1;break}k("n"),m-=_.y,h+=_.y,m<0&&(c="s",h-=m=-m),l&&(p=m*l,d+=(s.width-p)/2);break;case"w":if(_.x<=0&&(d<=v||l&&(h<=b||g>=w))){y=!1;break}k("w"),p-=_.x,d+=_.x,p<0&&(c="e",d-=p=-p),l&&(m=p/l,h+=(s.height-m)/2);break;case"s":if(_.y>=0&&(g>=w||l&&(d<=v||f>=x))){y=!1;break}k("s"),(m+=_.y)<0&&(c="n",h-=m=-m),l&&(p=m*l,d+=(s.width-p)/2);break;case"ne":if(l){if(_.y<=0&&(h<=b||f>=x)){y=!1;break}k("n"),m-=_.y,h+=_.y,p=m*l}else k("n"),k("e"),_.x>=0?fb&&(m-=_.y,h+=_.y):(m-=_.y,h+=_.y);p<0&&m<0?(c="sw",h-=m=-m,d-=p=-p):p<0?(c="nw",d-=p=-p):m<0&&(c="se",h-=m=-m);break;case"nw":if(l){if(_.y<=0&&(h<=b||d<=v)){y=!1;break}k("n"),m-=_.y,h+=_.y,p=m*l,d+=s.width-p}else k("n"),k("w"),_.x<=0?d>v?(p-=_.x,d+=_.x):_.y<=0&&h<=b&&(y=!1):(p-=_.x,d+=_.x),_.y<=0?h>b&&(m-=_.y,h+=_.y):(m-=_.y,h+=_.y);p<0&&m<0?(c="se",h-=m=-m,d-=p=-p):p<0?(c="ne",d-=p=-p):m<0&&(c="sw",h-=m=-m);break;case"sw":if(l){if(_.x<=0&&(d<=v||g>=w)){y=!1;break}k("w"),p-=_.x,d+=_.x,m=p/l}else k("s"),k("w"),_.x<=0?d>v?(p-=_.x,d+=_.x):_.y>=0&&g>=w&&(y=!1):(p-=_.x,d+=_.x),_.y>=0?g=0&&(f>=x||g>=w)){y=!1;break}k("e"),m=(p+=_.x)/l}else k("s"),k("e"),_.x>=0?f=0&&g>=w&&(y=!1):p+=_.x,_.y>=0?g0?c=_.y>0?"se":"ne":_.x<0&&(d-=p,c=_.y>0?"sw":"nw"),_.y<0&&(h-=m),this.cropped||(Z(this.cropBox,u),this.cropped=!0,this.limited&&this.limitCropBox(!0,!0))}y&&(s.width=p,s.height=m,s.left=d,s.top=h,this.action=c,this.renderCropBox()),U(r,(function(t){t.startX=t.endX,t.startY=t.endY}))}},Ct={crop:function(){return!this.ready||this.cropped||this.disabled||(this.cropped=!0,this.limitCropBox(!0,!0),this.options.modal&&V(this.dragBox,g),Z(this.cropBox,u),this.setCropBoxData(this.initialCropBoxData)),this},reset:function(){return this.ready&&!this.disabled&&(this.imageData=W({},this.initialImageData),this.canvasData=W({},this.initialCanvasData),this.cropBoxData=W({},this.initialCropBoxData),this.renderCanvas(),this.cropped&&this.renderCropBox()),this},clear:function(){return this.cropped&&!this.disabled&&(W(this.cropBoxData,{left:0,top:0,width:0,height:0}),this.cropped=!1,this.renderCropBox(),this.limitCanvas(!0,!0),this.renderCanvas(),Z(this.dragBox,g),V(this.cropBox,u)),this},replace:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return!this.disabled&&t&&(this.isImg&&(this.element.src=t),e?(this.url=t,this.image.src=t,this.ready&&(this.viewBoxImage.src=t,U(this.previews,(function(e){e.getElementsByTagName("img")[0].src=t})))):(this.isImg&&(this.replaced=!0),this.options.data=null,this.uncreate(),this.load(t))),this},enable:function(){return this.ready&&this.disabled&&(this.disabled=!1,Z(this.cropper,p)),this},disable:function(){return this.ready&&!this.disabled&&(this.disabled=!0,V(this.cropper,p)),this},destroy:function(){var t=this.element;return t.cropper?(t.cropper=void 0,this.isImg&&this.replaced&&(t.src=this.originalUrl),this.uncreate(),this):this},move:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t,i=this.canvasData,a=i.left,n=i.top;return this.moveTo(O(t)?t:a+Number(t),O(e)?e:n+Number(e))},moveTo:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t,i=this.canvasData,a=!1;return t=Number(t),e=Number(e),this.ready&&!this.disabled&&this.options.movable&&(R(t)&&(i.left=t,a=!0),R(e)&&(i.top=e,a=!0),a&&this.renderCanvas(!0)),this},zoom:function(t,e){var i=this.canvasData;return t=(t=Number(t))<0?1/(1-t):1+t,this.zoomTo(i.width*t/i.naturalWidth,null,e)},zoomTo:function(t,e,i){var a=this.options,n=this.canvasData,o=n.width,s=n.height,r=n.naturalWidth,c=n.naturalHeight;if((t=Number(t))>=0&&this.ready&&!this.disabled&&a.zoomable){var l=r*t,d=c*t;if(!1===nt(this.element,"zoom",{ratio:t,oldRatio:o/r,originalEvent:i}))return this;if(i){var h=this.pointers,p=ot(this.cropper),u=h&&Object.keys(h).length?function(t){var e=0,i=0,a=0;return U(t,(function(t){var n=t.startX,o=t.startY;e+=n,i+=o,a+=1})),{pageX:e/=a,pageY:i/=a}}(h):{pageX:i.pageX,pageY:i.pageY};n.left-=(l-o)*((u.pageX-p.left-n.left)/o),n.top-=(d-s)*((u.pageY-p.top-n.top)/s)}else N(e)&&R(e.x)&&R(e.y)?(n.left-=(l-o)*((e.x-n.left)/o),n.top-=(d-s)*((e.y-n.top)/s)):(n.left-=(l-o)/2,n.top-=(d-s)/2);n.width=l,n.height=d,this.renderCanvas(!0)}return this},rotate:function(t){return this.rotateTo((this.imageData.rotate||0)+Number(t))},rotateTo:function(t){return R(t=Number(t))&&this.ready&&!this.disabled&&this.options.rotatable&&(this.imageData.rotate=t%360,this.renderCanvas(!0,!0)),this},scaleX:function(t){var e=this.imageData.scaleY;return this.scale(t,R(e)?e:1)},scaleY:function(t){var e=this.imageData.scaleX;return this.scale(R(e)?e:1,t)},scale:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t,i=this.imageData,a=!1;return t=Number(t),e=Number(e),this.ready&&!this.disabled&&this.options.scalable&&(R(t)&&(i.scaleX=t,a=!0),R(e)&&(i.scaleY=e,a=!0),a&&this.renderCanvas(!0,!0)),this},getData:function(){var t,e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],i=this.options,a=this.imageData,n=this.canvasData,o=this.cropBoxData;if(this.ready&&this.cropped){t={x:o.left-n.left,y:o.top-n.top,width:o.width,height:o.height};var s=a.width/a.naturalWidth;if(U(t,(function(e,i){t[i]=e/s})),e){var r=Math.round(t.y+t.height),c=Math.round(t.x+t.width);t.x=Math.round(t.x),t.y=Math.round(t.y),t.width=c-t.x,t.height=r-t.y}}else t={x:0,y:0,width:0,height:0};return i.rotatable&&(t.rotate=a.rotate||0),i.scalable&&(t.scaleX=a.scaleX||1,t.scaleY=a.scaleY||1),t},setData:function(t){var e=this.options,i=this.imageData,a=this.canvasData,n={};if(this.ready&&!this.disabled&&N(t)){var o=!1;e.rotatable&&R(t.rotate)&&t.rotate!==i.rotate&&(i.rotate=t.rotate,o=!0),e.scalable&&(R(t.scaleX)&&t.scaleX!==i.scaleX&&(i.scaleX=t.scaleX,o=!0),R(t.scaleY)&&t.scaleY!==i.scaleY&&(i.scaleY=t.scaleY,o=!0)),o&&this.renderCanvas(!0,!0);var s=i.width/i.naturalWidth;R(t.x)&&(n.left=t.x*s+a.left),R(t.y)&&(n.top=t.y*s+a.top),R(t.width)&&(n.width=t.width*s),R(t.height)&&(n.height=t.height*s),this.setCropBoxData(n)}return this},getContainerData:function(){return this.ready?W({},this.containerData):{}},getImageData:function(){return this.sized?W({},this.imageData):{}},getCanvasData:function(){var t=this.canvasData,e={};return this.ready&&U(["left","top","width","height","naturalWidth","naturalHeight"],(function(i){e[i]=t[i]})),e},setCanvasData:function(t){var e=this.canvasData,i=e.aspectRatio;return this.ready&&!this.disabled&&N(t)&&(R(t.left)&&(e.left=t.left),R(t.top)&&(e.top=t.top),R(t.width)?(e.width=t.width,e.height=t.width/i):R(t.height)&&(e.height=t.height,e.width=t.height*i),this.renderCanvas(!0)),this},getCropBoxData:function(){var t,e=this.cropBoxData;return this.ready&&this.cropped&&(t={left:e.left,top:e.top,width:e.width,height:e.height}),t||{}},setCropBoxData:function(t){var e,i,a=this.cropBoxData,n=this.options.aspectRatio;return this.ready&&this.cropped&&!this.disabled&&N(t)&&(R(t.left)&&(a.left=t.left),R(t.top)&&(a.top=t.top),R(t.width)&&t.width!==a.width&&(e=!0,a.width=t.width),R(t.height)&&t.height!==a.height&&(i=!0,a.height=t.height),n&&(e?a.height=a.width/n:i&&(a.width=a.height*n)),this.renderCropBox()),this},getCroppedCanvas:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!this.ready||!window.HTMLCanvasElement)return null;var e=this.canvasData,i=ut(this.image,this.imageData,e,t);if(!this.cropped)return i;var a=this.getData(),n=a.x,o=a.y,r=a.width,c=a.height,l=i.width/Math.floor(e.naturalWidth);1!==l&&(n*=l,o*=l,r*=l,c*=l);var d=r/c,h=pt({aspectRatio:d,width:t.maxWidth||1/0,height:t.maxHeight||1/0}),p=pt({aspectRatio:d,width:t.minWidth||0,height:t.minHeight||0},"cover"),u=pt({aspectRatio:d,width:t.width||(1!==l?i.width:r),height:t.height||(1!==l?i.height:c)}),m=u.width,f=u.height;m=Math.min(h.width,Math.max(p.width,m)),f=Math.min(h.height,Math.max(p.height,f));var g=document.createElement("canvas"),v=g.getContext("2d");g.width=$(m),g.height=$(f),v.fillStyle=t.fillColor||"transparent",v.fillRect(0,0,m,f);var b=t.imageSmoothingEnabled,x=void 0===b||b,w=t.imageSmoothingQuality;v.imageSmoothingEnabled=x,w&&(v.imageSmoothingQuality=w);var y,C,_,k,D,M,T=i.width,S=i.height,A=n,B=o;A<=-r||A>T?(A=0,y=0,_=0,D=0):A<=0?(_=-A,A=0,D=y=Math.min(T,r+A)):A<=T&&(_=0,D=y=Math.min(r,T-A)),y<=0||B<=-c||B>S?(B=0,C=0,k=0,M=0):B<=0?(k=-B,B=0,M=C=Math.min(S,c+B)):B<=S&&(k=0,M=C=Math.min(c,S-B));var P=[A,B,y,C];if(D>0&&M>0){var R=m/r;P.push(_*R,k*R,D*R,M*R)}return v.drawImage.apply(v,[i].concat(s(P.map((function(t){return Math.floor($(t))}))))),g},setAspectRatio:function(t){var e=this.options;return this.disabled||O(t)||(e.aspectRatio=Math.max(0,t)||NaN,this.ready&&(this.initCropBox(),this.cropped&&this.renderCropBox())),this},setDragMode:function(t){var e=this.options,i=this.dragBox,a=this.face;if(this.ready&&!this.disabled){var n="crop"===t,o=e.movable&&"move"===t;t=n||o?t:"none",e.dragMode=t,K(i,b,t),q(i,h,n),q(i,v,o),e.cropBoxMovable||(K(a,b,t),q(a,h,n),q(a,v,o))}return this}},_t=c.Cropper,kt=function(){function t(i){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(e(this,t),!i||!A.test(i.tagName))throw new Error("The first argument is required and must be an or
@@ -8,17 +8,16 @@ Sensitive Content
- This photo contains sensitive content which
- some people may find offsensive or disturbing. + {{ status.spoiler_text ? status.spoiler_text : 'This post may contain sensitive content.'}}
- +