@brizy/media-gallery
Version:
161 lines (160 loc) • 5.64 kB
JavaScript
import { isOneOf } from "../../utils/value";
import * as State from "./types/State";
import * as Actions from "./types/Actions";
import { InsertFilesTypes } from "../../types/Context";
import { goToInsertFilesByContext } from "../../ports/Message/utils";
import { isImageUploadError } from "../mediaLibrary/utils";
import { EMPTY, of } from "rxjs";
import { fetchError, importSuccess } from "./notifications";
import { batchActions } from "redux-batched-actions";
export var isReadyOrBulkOrInsert = isOneOf([
State.isReady,
State.isBulkSelectReady,
State.isInsertFromReady,
State.isInsertFromBulkSelectReady
]);
var isReadyOrBulk = isOneOf([
State.isReady,
State.isBulkSelectReady
]);
var isNothingOrBulk = isOneOf([
State.isNothingSelected,
State.isBulkSelectNothing
]);
export var isMultipleBulkSelect = isOneOf([
State.isBulkSelectMultiple,
State.isInsertFromBulkSelectMultiple
]);
export var isReadyOrMultiple = isOneOf([
State.isBulkSelectMultiple,
State.isReady,
State.isBulkSelectReady
]);
export var isReadyOrMultipleInsert = isOneOf([
State.isInsertFromBulkSelectMultiple,
State.isInsertFromReady,
State.isInsertFromBulkSelectReady
]);
export var isReadyOrNothing = isOneOf([
State.isNothingSelected,
State.isReady
]);
export var isBulkSelected = isOneOf([
State.isBulkSelectNothing,
State.isBulkSelectReady,
State.isBulkSelectMultiple
]);
export var isBulkSelectedOrInsert = isOneOf([
State.isBulkSelectNothing,
State.isBulkSelectReady,
State.isBulkSelectMultiple,
State.isInsertFromBulkSelectReady,
State.isInsertFromBulkSelectMultiple
]);
export var isReadyOrNothingOrBulk = isOneOf([
isBulkSelected,
isReadyOrNothing
]);
var isCancelable = isOneOf([
State.isReady,
isBulkSelected
]);
export var isNothingSelected = isOneOf([
State.isInit,
isNothingOrBulk
]);
export var isWithContent = isOneOf([
isReadyOrNothing,
isBulkSelected,
isReadyOrMultipleInsert
]);
export var isSidebarState = isOneOf([
isReadyOrBulkOrInsert,
isNothingSelected,
isMultipleBulkSelect
]);
export var isBulkNothingOrMultiple = isOneOf([
State.isBulkSelectNothing,
isMultipleBulkSelect
]);
var insertFiles = function(s) {
switch(s.insertFilesType){
case InsertFilesTypes.NONE:
case InsertFilesTypes.MULTIPLE:
return isReadyOrMultiple(s);
case InsertFilesTypes.SINGLE:
return isReadyOrBulk(s);
}
};
export var disabled = function(s) {
return {
cancel: isCancelable(s),
delete: isReadyOrMultiple(s),
preview: isReadyOrBulk(s),
insertFiles: insertFiles(s)
};
};
export var getErrorText = function(t, items, insertFilesType) {
return items.length > 1 ? insertFilesType === InsertFilesTypes.NONE ? t("Failed to import images") : t("Failed to insert images") : insertFilesType === InsertFilesTypes.NONE ? t("Failed to import image") : t("Failed to insert image");
};
var getPartialErrorText = function(t, items, insertFilesType) {
return items.length > 1 ? insertFilesType === InsertFilesTypes.NONE ? t("One or more images could not be imported") : t("One or more images could not be inserted") : getErrorText(t, items, insertFilesType);
};
var getSuccessText = function(t, items) {
return items.length > 1 ? t("Images successfully imported to Media Library") : t("Image successfully imported to Media Library");
};
var getAlreadyImportedErrorText = function(t, items) {
return items.length > 1 ? t("Images already in Media Library") : t("Image already in Media Library");
};
var getPartialAlreadyImportedErrorText = function(t, items) {
return items.length > 1 ? t("One or more images already in Media Library") : getAlreadyImportedErrorText(t, items);
};
export var goToInsertFilesOrImportToML = function(c, t, s, items, data) {
goToInsertFilesByContext(c)(data.filter(function(v) {
return !isImageUploadError(v);
}));
if (data.some(isImageUploadError)) {
return of(fetchError(getPartialErrorText(t, items, s.insertFilesType)));
}
if (s.insertFilesType === InsertFilesTypes.NONE) {
if (data.every(function(v) {
return typeof v !== "string" && !v.isStockPhoto;
})) {
return of(batchActions([
Actions.insertFilesError(),
fetchError(getAlreadyImportedErrorText(t, items))
]));
}
if (data.some(function(v) {
return typeof v !== "string" && !v.isStockPhoto;
})) {
return of(batchActions([
Actions.unSelectAll(),
importSuccess(getPartialAlreadyImportedErrorText(t, items))
]));
}
}
return s.insertFilesType === InsertFilesTypes.NONE ? of(batchActions([
Actions.unSelectAll(),
importSuccess(getSuccessText(t, items))
])) : EMPTY;
};
export var getDimensions = function(param) {
var width = param.width, height = param.height;
if (width && height) {
if (width <= height) {
return "".concat(1080, " x ").concat(Math.round(height / width * 1080), " px");
} else {
return "".concat(2000, " x ").concat(Math.round(height / width * 2000), " px");
}
}
return undefined;
};
export var getUrlForFetch = function(param) {
var urls = param.urls, width = param.width, height = param.height;
var url = urls.raw;
var newUrl = new URL(url);
newUrl.searchParams.set("w", width <= height ? "1080" : "2000");
newUrl.searchParams.set("q", "100");
return newUrl.toString();
};