react-filerobot-video-editor
Version:
React component version of filerobot video editor (FVE).
1 lines • 2.25 kB
JavaScript
import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";import _defineProperty from"@babel/runtime/helpers/defineProperty";var _excluded=["isDesignState"];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{useReducer}from"react";import{REDO,RESET,UNDO}from"../actions";import extractCurrentDesignState from"../utils/extractCurrentDesignState";import isFunction from"../utils/isFunction";import emitCustomEvent from"../utils/emitCustomEvent";import{EVENTS}from"../utils/constants";var applyCallbackFn=function(a,b){setTimeout(function(){isFunction(a)&&b&&a(b)})},useAppReducer=function(a,b){var c=2<arguments.length&&arguments[2]!==void 0?arguments[2]:{},d=_objectSpread(_objectSpread({},b),{},{pastDesignStates:[],futureDesignStates:[],hasRedo:!1,hasUndo:!1});return useReducer(function(b,e){var f=a(b,e)||d;if([UNDO,REDO,RESET].includes(e.type)){var g;return e.type===UNDO&&(g=c.onUndo,emitCustomEvent(EVENTS.DESIGN_UNDO,f)),e.type===REDO&&(g=c.onRedo,emitCustomEvent(EVENTS.DESIGN_REDO,f)),e.type===RESET&&(g=c.onReset,emitCustomEvent(EVENTS.DESIGN_RESET,f)),emitCustomEvent(EVENTS.DESIGN_UPDATE,f),applyCallbackFn(c.onModify,f),applyCallbackFn(g,f),f}if(f.isDesignState){var h=extractCurrentDesignState(b),i=f.isDesignState,j=_objectWithoutProperties(f,_excluded),k=_objectSpread(_objectSpread({},j),{},{pastDesignStates:[h].concat(_toConsumableArray(b.pastDesignStates)),hasUndo:!0,hasRedo:!1,futureDesignStates:[],isResetted:!1,haveNotSavedChanges:!0});return emitCustomEvent(EVENTS.DESIGN_UPDATE,k),applyCallbackFn(c.onModify,k),k}return f},d)};export default useAppReducer;