react-filerobot-image-editor
Version:
React component version of filerobot image editor (FIE).
1 lines • 5.93 kB
JavaScript
import _defineProperty from"@babel/runtime/helpers/defineProperty";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";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{EVENTS,TEXT_EDITOR_ID}from"../../../../../utils/constants";import emitCustomEvent from"../../../../../utils/emitCustomEvent";import getNodeText from"../../../../../utils/getNodeText";import rgbaToHexWithOpacity from"../../../../../utils/rgbaToHexa";export var getQuotedFontFamily=function(a){return a&&"\"".concat(a.replaceAll("\"",""),"\"")};var jsCanvasCssPropToCssTextProp=function(a){return"fill"===a?"color":"baselineShift"===a?"transform":"".concat(a.replaceAll(/[A-Z]/g,function(a){return"-".concat(a.toLowerCase())}))};export var jsStyleToCssText=function(a){return Object.keys(a||{}).map(function(b){return"".concat(jsCanvasCssPropToCssTextProp(b),": ").concat(Number.isFinite(a[b])?"".concat(a[b],"px"):a[b],";")}).join(" ")};export var cssStyleToJsCanvasProps=function(a){if(!a)return{};var b={};return a.split(/;\s*/).forEach(function(a){if(a){var c=a.split(/:\s*/),d=_slicedToArray(c,2),e=d[0],f=d[1],g=e.replaceAll(/-([a-z])/g,function(a,b){return"".concat(b[0].toUpperCase()).concat(b.slice(1))});b[g]=null!==f&&void 0!==f&&f.toLowerCase().endsWith("px")||/^[0-9]*$/.test(f)?parseFloat(f):null===f||void 0===f?void 0:f.replaceAll("\"","")}}),b.color&&(b.fill=b.color,delete b.color),b.transform&&(b.baselineShift=-parseFloat(b.transform.match(/\((.*)px\)/)[1]),delete b.transform),"undefined"!=typeof b.letterSpacing&&(b.letterSpacing=parseFloat(b.letterSpacing)),b};export var getNewFormattedContent=function(a,b){var c=[],d=_objectSpread({},b);return Array.from(a.childNodes).forEach(function(a,b){var e;if("BR"===a.nodeName)return void c.push(a);var f=getNodeText(a);if(f){var g=a;if("#text"===a.nodeName){var h,i=a.parentNode;if(null!==(h=i.style)&&void 0!==h&&h.cssText.includes(jsStyleToCssText(d)))return;var j=getNodeText(i)===getNodeText(a)&&(null===i||void 0===i?void 0:i.style)&&"MARK"!==i.nodeName;g=j&&i||document.createElement("span"),j||(g.innerText=f)}return d.fontFamily&&(d.fontFamily=getQuotedFontFamily(d.fontFamily)),Object.assign(g.style,d),0<b&&f&&g.style.cssText===(null===(e=c[b-1])||void 0===e?void 0:e.style.cssText)?void(c[b-1].innerText="".concat(c[b-1].innerText).concat(f)):void c.push(g)}}),c};var _pushNodeFlattenedContent=function(a,b){var c=2<arguments.length&&arguments[2]!==void 0?arguments[2]:{},d="BR"===b.nodeName;if("#text"!==b.nodeName||b.textContent||0===b.textContent||d){if("#text"===b.nodeName&&b.textContent||d){var e,f,g=a[a.length-1],h=(null===g||void 0===g?void 0:g.endIndex)||0,i=d?"\n":b.textContent;if(g&&!g.isDetached&&"true"!==(null===(e=b.parentNode)||void 0===e||null===(e=e.dataset)||void 0===e?void 0:e.detached)&&JSON.stringify(c)===JSON.stringify(g.style))g.textContent="".concat(g.textContent).concat(i),g.endIndex=g.startIndex+g.textContent.length;else{var j,k=h+(i.length||1);a.push({style:c,textContent:i,startIndex:h,endIndex:k,isDetached:"true"===(null===(j=b.parentNode)||void 0===j||null===(j=j.dataset)||void 0===j?void 0:j.detached)})}var l="MARK"===b.parentNode.nodeName&&b.parentNode||"MARK"===(null===(f=b.parentNode.parentNode)||void 0===f?void 0:f.nodeName)&&b.parentNode.parentNode;return void(l&&(getNodeText(l).startsWith(b.textContent)&&(l.dataset.startIndex=h),getNodeText(l).endsWith(b.textContent)&&(l.dataset.endIndex=(parseInt(l.dataset.startIndex,10)||0)+getNodeText(l).length)))}var m=cssStyleToJsCanvasProps(b.style.cssText);b.childNodes.forEach(function(b){(getNodeText(b)||"BR"===b.nodeName)&&_pushNodeFlattenedContent(a,b,_objectSpread(_objectSpread({},c),m))})}};export{_pushNodeFlattenedContent as pushNodeFlattenedContent};var _recursivelyRemoveCssProperties=function(a){var b=1<arguments.length&&arguments[1]!==void 0?arguments[1]:[];"#text"===a.nodeName||a.childNodes.forEach(function(a){var c;null!==(c=a.style)&&void 0!==c&&c.cssText&&b.forEach(function(b){return a.style.removeProperty(jsCanvasCssPropToCssTextProp(b))}),_recursivelyRemoveCssProperties(a,b)})};export{_recursivelyRemoveCssProperties as recursivelyRemoveCssProperties};var _getCurrentSelectedNodeStyles=function(a){var b=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{};if(!a)return b;var c=_objectSpread(_objectSpread({},a.style&&cssStyleToJsCanvasProps(a.style.cssText)),b);return a.id===TEXT_EDITOR_ID||"true"===a.contentEditable?(c.fill&&(c.fill="#".concat(rgbaToHexWithOpacity(c.fill).hex)),c):_getCurrentSelectedNodeStyles(a.parentNode,c)};export{_getCurrentSelectedNodeStyles as getCurrentSelectedNodeStyles};export var calculateTextChanges=function(a,b){var c=a.current.innerText,d=window.getSelection(),e=0;if(0<d.rangeCount){var f=d.getRangeAt(0),g=f.cloneRange();g.selectNodeContents(a.current),g.setEnd(f.endContainer,f.endOffset),e=g.toString().length}var h=0;if(void 0!==b&&(h=c.length-b.length,0<h)){for(var i=0,j=0;i<b.length&&i<c.length&&b[i]===c[i];)i++;for(;j<b.length-i&&j<c.length-i&&b[b.length-1-j]===c[c.length-1-j];)j++;var k=b.slice(i,b.length-j),l=c.slice(i,c.length-j);h=l.length-k.length}return{charsDiff:h,oldText:b,newText:c,oldCaretPosition:e-h,caretPosition:e}};export var dispatchTextContentChangingEvent=function(a,b,c){var d=calculateTextChanges(a,b);return emitCustomEvent(EVENTS.TEXT_CONTENT_CHANGING,_objectSpread(_objectSpread({},d),{},{annotationId:c})),d};