react-filerobot-video-editor
Version:
React component version of filerobot video editor (FVE).
1 lines • 4.25 kB
JavaScript
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _defineProperty from"@babel/runtime/helpers/defineProperty";var _excluded=["fonts","onFontChange"],_excluded2=["id","x","y","width","height","radius","radiusX","radiusY","points","image","originalImage","text","scaleX","scaleY","rotation","place","gravity"],_excluded3=["shouldSave","neverSave"];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,useEffect,useMemo,useRef,useState}from"react";import randomId from"../../utils/randomId";import{ALLOWED_TEXT_PART_FORMATS,TOOLS_IDS}from"../../utils/constants";import{useSelectTool,useSetAnnotation,useStore,useUpdateEffect}from"./..";import previewThenCallAnnotationAdding from"./previewThenCallAnnotationAdding";import useDebouncedCallback from"../useDebouncedCallback";var getTextPartSharedFormats=function(a){var b={};return ALLOWED_TEXT_PART_FORMATS.forEach(function(c){"undefined"!==a[c]&&(b[c]=a[c])}),b},useAnnotation=function(){var a,b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},c=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},d=c.enablePreview,e=void 0===d||d,f=c.selectToolOnAnnotationChange,g=useSetAnnotation(),h=useStore(),i=h.previewGroup,j=h.annotations,k=h.selectionsIds,l=void 0===k?[]:k,m=h.config,n=h.toolId,o=m.moreAnnotationPreviewClasses,p=useSelectTool(),q=null===(a=j[l[0]])||void 0===a?void 0:a.name,r=_objectSpread(_objectSpread({},m.annotationsCommon),m[b.name||q]),s=useState(function(){return _objectSpread(_objectSpread(_objectSpread({},r),b),q===b.name&&j[l[0]])}),t=_slicedToArray(s,2),u=t[0],v=t[1],w=useRef(),x=null===i||void 0===i?void 0:i.getStage(),y=useCallback(function(a){var c=a.fonts,d=a.onFontChange,e=_objectWithoutProperties(a,_excluded),f=e.id&&b.name!==TOOLS_IDS.PEN;g(_objectSpread(_objectSpread({},e),{},{selectOnSet:f}))},[]),z=useDebouncedCallback(function(a){v(function(b){return _objectSpread(_objectSpread({},b),{},{shouldSave:!1,neverSave:!1},"function"==typeof a?a(b):a)})},15),A=useCallback(function(a,c){if(a.name===c){var d=a.id,e=a.x,f=a.y,g=a.width,h=a.height,i=a.radius,j=a.radiusX,k=a.radiusY,l=a.points,m=a.image,n=a.originalImage,o=a.text,p=a.scaleX,q=a.scaleY,s=a.rotation,t=a.place,u=a.gravity,v=_objectWithoutProperties(a,_excluded2),w=_objectSpread(_objectSpread({},r),b);if(Array.isArray(w.text)&&0<w.text.length){var x=getTextPartSharedFormats(v);w.text=w.text.map(function(a){return _objectSpread(_objectSpread({},a),{},{style:_objectSpread(_objectSpread({},a.style),x)})})}return _objectSpread(_objectSpread({},w),v)}return _objectSpread(_objectSpread({},r),b)},[r,b]),B=useCallback(function(a){v(function(c){var d=A(c,a.name||b.name);return _objectSpread(_objectSpread(_objectSpread({},d),a),{},{id:a.id||randomId(a.name||c.name),shouldSave:!0,neverSave:!1})})},[A]);return useEffect(function(){var a=(void 0===f||f)&&u.name&&u.name!==n;a&&p(u.name,!0)},[u.name]),useUpdateEffect(function(){var a=u.shouldSave,b=u.neverSave,c=_objectWithoutProperties(u,_excluded3),d=1===l.length&&j[l[0]];!b&&(a||d)&&y(_objectSpread(_objectSpread({},c),{},{id:a?c.id:d.id}))},[u]),useUpdateEffect(function(){setTimeout(function(){1===l.length?(w.current=u,v(_objectSpread(_objectSpread({},j[l[0]]),{},{neverSave:!0}))):w.current&&(v(_objectSpread(_objectSpread({},w.current),{},{neverSave:!0})),w.current=null)})},[l,j]),useEffect(function(){var a=null;if(x&&e){var c=A(u,b.name);a=previewThenCallAnnotationAdding(x,_objectSpread(_objectSpread({},c),{},{name:b.name}),i,B,o)}return function(){a&&a()}},[x,u,i,e]),useMemo(function(){return[u,z,B]},[u,z,B])};export default useAnnotation;