react-filerobot-video-editor
Version:
React component version of filerobot video editor (FVE).
1 lines • 4.38 kB
JavaScript
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";import _defineProperty from"@babel/runtime/helpers/defineProperty";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";var _excluded=["cropX2","cropY2","crop","watermark"];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 Konva from"konva";import{CLOUDIMG_TO_EDITOR_POSITIONS,ELLIPSE_CROP,TOOLS_IDS,WATERMARK_ANNOTATION_ID}from"./constants";import deepMerge from"./deepMerge";import mapNumber from"./mapNumber";import{finetuneNameToParamInfo}from"./operationsToCloudimageUrl";var propertyToOperation=function(a,b){var c=2<arguments.length&&arguments[2]!==void 0?arguments[2]:{},d=3<arguments.length&&arguments[3]!==void 0?arguments[3]:{},e=CLOUDIMG_TO_EDITOR_POSITIONS[b];switch(a){case"wat_text":return{watermark:{text:b.replaceAll("+"," ")}};case"wat_font":return{watermark:{fontFamily:b}};case"wat_color":return{watermark:{fill:"#".concat(b)}};case"wat_fontsize":return{watermark:{fontSize:parseFloat(b)}};case"wat_opacity":return{watermark:{opacity:parseFloat(b)}};case"wat_pos":{var f=b.split(","),g=_slicedToArray(f,2),h=g[0],i=g[1];return{watermark:{x:parseFloat(h)/100*c.width,y:parseFloat(i)/100*c.height}}}case"wat_url":return{watermark:{image:decodeURIComponent(b)}};case"wat_scale":{var j=b.split(","),k=_slicedToArray(j,2),l=k[0],m=k[1];return{watermark:{width:parseFloat(l)/100*(c.width||0),height:parseFloat(m)/100*(c.height||0)}}}case"tl_px":{var n=b.split(","),o=_slicedToArray(n,2),p=o[0],q=o[1];return{crop:{x:mapNumber(parseFloat(p),0,d.width,0,c.width),y:mapNumber(parseFloat(q),0,d.height,0,c.height)}}}case"br_px":{var r=b.split(","),s=_slicedToArray(r,2),t=s[0],u=s[1];return{cropX2:mapNumber(parseFloat(t),0,d.width,0,c.width),cropY2:mapNumber(parseFloat(u),0,d.height,0,c.height)}}case"round":return{crop:{ratio:ELLIPSE_CROP}};case"gravity":return{crop:e?{lockCropAreaAt:e,width:null,height:null}:{noEffect:!0,ratio:b,ratioTitleKey:b,width:null,height:null}};case"aspect_ratio":return{crop:{ratio:+b}};case"w":return{resize:{width:parseFloat(b)}};case"h":return{resize:{height:parseFloat(b)}};case"r":return{adjustments:{rotation:-parseInt(b,10)}};case"flip":case"mirror":return{adjustments:{isFlippedX:b.includes("x")||b.includes("h"),isFlippedY:b.includes("y")||b.includes("v")}};default:{var v;if(Object.keys(finetuneNameToParamInfo).forEach(function(b){finetuneNameToParamInfo[b].cloudimage.name===a.toLowerCase()&&(v=b)}),!v)return null;var w=finetuneNameToParamInfo[v],x=w.cloudimage,y=w.internal;return{finetunes:[Konva.Filters[v]],finetunesProps:_defineProperty({},y.propName,mapNumber(parseFloat(b),x.min,x.max,y.min,y.max))}}}},cloudimageQueryToDesignState=function(a,b,c){var d,e;if(!a)return null;var f=a.split("&"),g={};f.forEach(function(a){var d=a.split("="),e=_slicedToArray(d,2),f=e[0],h=e[1],i=propertyToOperation(f,h,b,c);i&&(g=deepMerge(g,i,!0))});var h=g,i=h.cropX2,j=h.cropY2,k=h.crop,l=void 0===k?{}:k,m=h.watermark,n=_objectWithoutProperties(h,_excluded);null!==(d=g.adjustments)&&void 0!==d&&d.isFlippedX&&(l.x=b.width-(i||0)),null!==(e=g.adjustments)&&void 0!==e&&e.isFlippedY&&(l.y=b.height-(j||0));var o=_objectSpread(_objectSpread(_objectSpread({},n),i&&j&&l||null!==l&&void 0!==l&&l.noEffect||null!==l&&void 0!==l&&l.lockCropAreaAt?{adjustments:_objectSpread(_objectSpread({},n.adjustments),{},{crop:_objectSpread({width:i||0,height:j||0},l)})}:{}),{},{annotations:_objectSpread({},m?_defineProperty({},WATERMARK_ANNOTATION_ID,_objectSpread(_objectSpread({},m),{},{x:((null===l||void 0===l?void 0:l.x)||0)+(m.x||0),y:((null===l||void 0===l?void 0:l.y)||0)+(m.y||0),id:WATERMARK_ANNOTATION_ID,name:m.text?TOOLS_IDS.TEXT:TOOLS_IDS.IMAGE},m.text?{width:m.text.length*m.fontSize,height:m.fontSize}:{})):{})});return o};export default cloudimageQueryToDesignState;