Ghost/ghost/admin/app/components/gh-editor-feature-image.js
Rishabh Garg 48030c3050
Added basic image editing alpha feature (#16669)
refs https://github.com/TryGhost/Team/issues/3034

- adds new alpha feature flag for image editing in Admin
- allows new config for Pintura files that enable the image editing in
Admin
- adds new ember component for triggering image editing for post feature
images

---------

Co-authored-by: Sodbileg Gansukh <sodbileg.gansukh@gmail.com>
2023-04-19 16:27:26 +05:30

96 lines
2.2 KiB
JavaScript

import Component from '@glimmer/component';
import {action} from '@ember/object';
import {inject as service} from '@ember/service';
import {tracked} from '@glimmer/tracking';
export default class GhEditorFeatureImageComponent extends Component {
@service settings;
@tracked isEditingAlt = false;
@tracked isHovered = false;
@tracked captionInputFocused = false;
@tracked showUnsplashSelector = false;
@tracked canDrop = false;
get hideButton() {
return !this.canDrop && !this.isHovered && !this.args.forceButtonDisplay;
}
@action
setUploadedImage(results) {
if (results[0]) {
this.args.updateImage(results[0].url);
}
}
@action
setUnsplashImage({src, caption}) {
this.args.updateImage(src);
this.args.updateCaption(caption);
}
@action
toggleUnsplashSelector() {
this.showUnsplashSelector = !this.showUnsplashSelector;
}
@action
toggleAltEditing() {
this.isEditingAlt = !this.isEditingAlt;
}
@action
onAltInput(event) {
this.args.updateAlt(event.target.value);
}
@action
dragOver(event) {
if (!event.dataTransfer.files) {
return;
}
// this is needed to work around inconsistencies with dropping files
// from Chrome's downloads bar
if (navigator.userAgent.indexOf('Chrome') > -1) {
let eA = event.dataTransfer.effectAllowed;
event.dataTransfer.dropEffect = (eA === 'move' || eA === 'linkMove') ? 'move' : 'copy';
}
// event.stopPropagation();
event.preventDefault();
this.canDrop = true;
}
@action
dragLeave(event) {
if (!event.dataTransfer.files) {
return;
}
event.preventDefault();
this.canDrop = false;
}
@action
drop(setFiles, event) {
if (!event.dataTransfer.files) {
return;
}
event.stopPropagation();
event.preventDefault();
this.canDrop = false;
setFiles(event.dataTransfer.files);
}
@action
saveImage(setFiles, imageFile) {
this.canDrop = false;
setFiles([imageFile]);
}
}