UNPKG

react-filerobot-image-editor

Version:

React component version of filerobot image editor (FIE).

1 lines 2.54 kB
import _defineProperty from"@babel/runtime/helpers/defineProperty";function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}import{useCallback,useRef}from"react";import{SET_FEEDBACK,SET_ORIGINAL_SOURCE}from"../actions";import{DEFAULT_ZOOM_FACTOR}from"../utils/constants";import isSameSource from"../utils/isSameSource";import loadImage from"../utils/loadImage";import useDispatch from"./useDispatch";import useStore from"./useStore";var useSetOriginalSource=function(a){var b=a.resetOnSourceChange,c=a.keepZoomOnSourceChange,d=useDispatch(),e=useRef(null),f=useStore(),g=f.t,h=f.originalSource,i=f.config,j=i.defaultSavedImageName,k=i.noCrossOrigin,l=useCallback(function(a){d({type:SET_ORIGINAL_SOURCE,payload:_objectSpread({originalSource:a,dismissHistory:null===a||void 0===a?void 0:a.noHistoryRecord,keepPrevZoomRatio:c},!(b||c)&&{zoom:{factor:DEFAULT_ZOOM_FACTOR,x:null,y:null}})})},[b,c]),m=function(a){if(null!==a&&void 0!==a&&a.width&&a.height){var b=_objectSpread({},a);return delete b.src,l(b),!0}return!1},n=useCallback(function(a){d({type:SET_FEEDBACK,payload:{feedback:{message:a.message||a,duration:0}}})},[]);return{loadAndSetOriginalSource:function(a){return new Promise(function(b){var c=(null===a||void 0===a?void 0:a.src)||a;if(e.current===c||!c&&h||isSameSource(c,h))return void(e.current||b());var d=function(){e.current=null,b()};e.current=c,setTimeout(function(){if(a instanceof HTMLImageElement){if(!a.name&&j&&(a.name=j),!a.complete)return void a.addEventListener("load",function(){l(a),d()});l(a),d()}else a&&("string"==typeof a||null!==a&&void 0!==a&&a.src)?loadImage((null===a||void 0===a?void 0:a.src)||a,{name:j,noCrossOrigin:k,width:null===a||void 0===a?void 0:a.width,height:null===a||void 0===a?void 0:a.height,key:null===a||void 0===a?void 0:a.key}).then(l)["catch"](function(b){m(a)||n(b)})["finally"](d):m(a)?d():(n(g("invalidImageError")),d())},0)})},setOriginalSource:l,setOriginalSourceIfDimensionsFound:m}};export default useSetOriginalSource;