diff --git a/public/script.js b/public/script.js index e276d0af2..03be886e3 100644 --- a/public/script.js +++ b/public/script.js @@ -228,7 +228,7 @@ import { appendFileContent, hasPendingFileAttachment, populateFileAttachment, de import { initPresetManager } from './scripts/preset-manager.js'; import { evaluateMacros } from './scripts/macros.js'; import { currentUser, setUserControls } from './scripts/user.js'; -import { POPUP_TYPE, callGenericPopup, fixToastrForDialogs } from './scripts/popup.js'; +import { POPUP_TYPE, Popup, callGenericPopup, fixToastrForDialogs } from './scripts/popup.js'; import { renderTemplate, renderTemplateAsync } from './scripts/templates.js'; import { ScraperManager } from './scripts/scrapers.js'; import { SlashCommandParser } from './scripts/slash-commands/SlashCommandParser.js'; @@ -525,7 +525,7 @@ let dialogueResolve = null; let dialogueCloseStop = false; export let chat_metadata = {}; export let streamingProcessor = null; -export let crop_data = undefined; +let crop_data = undefined; let is_delete_mode = false; let fav_ch_checked = false; let scrollLock = false; @@ -5754,17 +5754,20 @@ async function read_avatar_load(input) { create_save.avatar = input.files; } + crop_data = undefined; const file = input.files[0]; const fileData = await getBase64Async(file); if (!power_user.never_resize_avatars) { - $('#dialogue_popup').addClass('large_dialogue_popup wide_dialogue_popup'); - const croppedImage = await callPopup(getCropPopup(fileData), 'avatarToCrop'); + const dlg = new Popup('Set the crop position of the avatar image', POPUP_TYPE.CROP, '', { cropImage: fileData }); + const croppedImage = await dlg.show(); + if (!croppedImage) { return; } - $('#avatar_load_preview').attr('src', croppedImage); + crop_data = dlg.cropData; + $('#avatar_load_preview').attr('src', String(croppedImage)); } else { $('#avatar_load_preview').attr('src', fileData); } @@ -5807,13 +5810,6 @@ async function read_avatar_load(input) { } } -export function getCropPopup(src) { - return `

Set the crop position of the avatar image and click Accept to confirm.

-
- -
`; -} - export function getThumbnailUrl(type, file) { return `/thumbnail?type=${type}&file=${encodeURIComponent(file)}`; } @@ -7122,9 +7118,7 @@ function onScenarioOverrideRemoveClick() { */ export function callPopup(text, type, inputValue = '', { okButton, rows, wide, wider, large, allowHorizontalScrolling, allowVerticalScrolling, cropAspect } = {}) { function getOkButtonText() { - if (['avatarToCrop'].includes(popup_type)) { - return okButton ?? 'Accept'; - } else if (['text', 'alternate_greeting', 'char_not_selected'].includes(popup_type)) { + if (['text', 'alternate_greeting', 'char_not_selected'].includes(popup_type)) { $dialoguePopupCancel.css('display', 'none'); return okButton ?? 'Ok'; } else if (['delete_extension'].includes(popup_type)) { @@ -7165,22 +7159,6 @@ export function callPopup(text, type, inputValue = '', { okButton, rows, wide, w $dialoguePopupInput.trigger('focus'); } - if (popup_type == 'avatarToCrop') { - // unset existing data - crop_data = undefined; - - $('#avatarToCrop').cropper({ - aspectRatio: cropAspect ?? 2 / 3, - autoCropArea: 1, - viewMode: 2, - rotatable: false, - crop: function (event) { - crop_data = event.detail; - crop_data.want_resize = !power_user.never_resize_avatars; - }, - }); - } - $shadowPopup.transition({ opacity: 1, duration: animation_duration, @@ -9179,12 +9157,6 @@ jQuery(async function () { $('#dialogue_popup').removeClass('wide_dialogue_popup'); }, animation_duration); - // $("#shadow_popup").css("opacity:", 0.0); - - if (popup_type == 'avatarToCrop') { - dialogueResolve($('#avatarToCrop').data('cropper').getCroppedCanvas().toDataURL('image/jpeg')); - } - if (popup_type == 'del_chat') { //close past chat popup $('#select_chat_cross').trigger('click'); diff --git a/public/style.css b/public/style.css index b87f32077..da3b29c9f 100644 --- a/public/style.css +++ b/public/style.css @@ -4154,19 +4154,13 @@ h5 { grid-template-columns: 340px auto; } -#avatarCropWrap, .popup-crop-wrap { margin: 10px auto; - max-height: 90%; + max-height: 75vh; + max-height: 75svh; max-width: 100%; } -.popup-crop-wrap { - max-height: 75vh; - max-height: 75svh; -} - -#avatarToCrop, .popup-crop-wrap img { max-width: 100%; /* This rule is very important, please do not ignore this! */