@20minutes/draft-convert 3.0.0 → 3.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -0
- package/dist/draft-convert.js +440 -0
- package/dist/draft-convert.min.js +1 -0
- package/esm/blockEntities.js +67 -0
- package/esm/blockInlineStyles.js +98 -0
- package/esm/convertFromHTML.js +537 -0
- package/esm/convertToHTML.js +107 -0
- package/esm/default/defaultBlockHTML.js +33 -0
- package/esm/default/defaultInlineHTML.js +18 -0
- package/esm/encodeBlock.js +44 -0
- package/esm/index.js +4 -0
- package/esm/util/accumulateFunction.js +9 -0
- package/esm/util/blockTypeObjectFunction.js +9 -0
- package/esm/util/getBlockTags.js +27 -0
- package/esm/util/getElementHTML.js +36 -0
- package/esm/util/getElementTagLength.js +20 -0
- package/esm/util/getNestedBlockTags.js +29 -0
- package/esm/util/parseHTML.js +18 -0
- package/esm/util/rangeSort.js +6 -0
- package/esm/util/splitReactElement.js +18 -0
- package/esm/util/styleObjectFunction.js +8 -0
- package/esm/util/updateMutation.js +48 -0
- package/lib/blockEntities.js +74 -0
- package/lib/blockInlineStyles.js +105 -0
- package/lib/convertFromHTML.js +544 -0
- package/lib/convertToHTML.js +114 -0
- package/lib/default/defaultBlockHTML.js +39 -0
- package/lib/default/defaultInlineHTML.js +25 -0
- package/lib/encodeBlock.js +51 -0
- package/lib/index.js +27 -0
- package/lib/util/accumulateFunction.js +15 -0
- package/lib/util/blockTypeObjectFunction.js +15 -0
- package/lib/util/getBlockTags.js +34 -0
- package/lib/util/getElementHTML.js +43 -0
- package/lib/util/getElementTagLength.js +27 -0
- package/lib/util/getNestedBlockTags.js +36 -0
- package/lib/util/parseHTML.js +24 -0
- package/lib/util/rangeSort.js +12 -0
- package/lib/util/splitReactElement.js +24 -0
- package/lib/util/styleObjectFunction.js +14 -0
- package/lib/util/updateMutation.js +55 -0
- package/package.json +18 -18
|
@@ -0,0 +1 @@
|
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("React"),require("ReactDOMServer"),require("Draft"),require("Immutable")):"function"==typeof define&&define.amd?define(["React","ReactDOMServer","Draft","Immutable"],t):"object"==typeof exports?exports.DraftConvert=t(require("React"),require("ReactDOMServer"),require("Draft"),require("Immutable")):e.DraftConvert=t(e.React,e.ReactDOMServer,e.Draft,e.Immutable)}(self,((e,t,n,r)=>(()=>{"use strict";var o={126:e=>{e.exports=t},311:e=>{e.exports=function(e,t,n,r,o,i,l,a){if(!e){var c;if(void 0===t)c=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,o,i,l,a],s=0;(c=new Error(t.replace(/%s/g,(function(){return u[s++]})))).name="Invariant Violation"}throw c.framesToPop=1,c}}},752:e=>{e.exports=r},831:e=>{e.exports=n},883:t=>{t.exports=e}},i={};function l(e){var t=i[e];if(void 0!==t)return t.exports;var n=i[e]={exports:{}};return o[e](n,n.exports,l),n.exports}l.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return l.d(t,{a:t}),t},l.d=(e,t)=>{for(var n in t)l.o(t,n)&&!l.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},l.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),l.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};l.r(a),l.d(a,{convertFromHTML:()=>De,convertToHTML:()=>re,parseHTML:()=>le});var c=l(311),u=l.n(c),s=l(883),f=l.n(s),p=l(126),d=l.n(p),y=l(831);function h(e){return h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},h(e)}function v(e,t,n){return(t=function(e){var t=function(e){if("object"!=h(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=h(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==h(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function b(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function g(e){return function(e){if(Array.isArray(e))return b(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return b(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?b(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function m(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function O(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?m(Object(n),!0).forEach((function(t){v(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):m(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function E(e,t,n,r,o,i){var l=r-n;return t+n<=e.offset?O(O({},e),{},{offset:e.offset+l}):t>=e.offset&&t+n<=e.offset+e.length?O(O({},e),{},{length:e.length+l}):e.offset>=t&&e.offset+e.length<=t+n&&o>0?O(O({},e),{},{offset:e.offset+o}):e.offset<t&&e.offset+e.length<=t+n&&e.offset+e.length>t&&o>0?[O(O({},e),{},{length:t-e.offset}),O(O({},e),{},{offset:t+o,length:e.offset-t+e.length})]:e.offset>=t&&e.offset+e.length>t+n&&t+n>e.offset&&i>0?[O(O({},e),{},{offset:e.offset+o,length:t+n-e.offset}),O(O({},e),{},{offset:t+n+o+i,length:e.offset+e.length-(t+n)})]:e}const w=function(e,t){return e.offset===t.offset?t.length-e.length:e.offset-t.offset};function j(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function x(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?j(Object(n),!0).forEach((function(t){v(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):j(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var S={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`","\n":"<br/>"},M=["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"];function P(e){if(-1!==M.indexOf(e.type))return d().renderToStaticMarkup(e);var t=d().renderToStaticMarkup(f().cloneElement(e,{},"\r")).split("\r");return u()(t.length>1,"convertToHTML: Element of type ".concat(e.type," must render children")),u()(t.length<3,"convertToHTML: Element of type ".concat(e.type," cannot use carriage return character")),{start:t[0],end:t[1]}}function k(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(null==e)return e;if("string"==typeof e)return e;if(f().isValidElement(e)){if(function(e){return f().isValidElement(e)&&f().Children.count(e.props.children)>0}(e))return d().renderToStaticMarkup(e);var n=P(e);return null!==t&&"object"===h(n)?n.start+t+n.end:n}return u()(Object.prototype.hasOwnProperty.call(e,"start")&&Object.prototype.hasOwnProperty.call(e,"end"),"convertToHTML: received conversion data without either an HTML string, ReactElement or an object with start/end tags"),null!==t?e.start+t+e.end:e}var T=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"start";if(f().isValidElement(e)){var n=P(e);if("string"==typeof n)return 0;var r=n[t].length,o=f().Children.toArray(e.props.children)[0];return r+(o&&f().isValidElement(o)?T(o,t):0)}return"object"===h(e)&&e[t]?e[t].length:0};const D=T;function L(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function R(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?L(Object(n),!0).forEach((function(t){v(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):L(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var H=function(){return arguments.length>1&&void 0!==arguments[1]?arguments[1]:""};const A=function(e){return function(t){return"function"==typeof e?e(t):e[t]}},I=function(e,t){return function(){var n=e.apply(void 0,arguments);return null!=n?n:t.apply(void 0,arguments)}};function C(e){switch(e){case"BOLD":return f().createElement("strong",null);case"ITALIC":return f().createElement("em",null);case"UNDERLINE":return f().createElement("u",null);case"CODE":return f().createElement("code",null);default:return{start:"",end:""}}}var N=function(e,t){return e.filter((function(e){return!t.some((function(t){return t.style===e.style}))}))},_=function(e,t){return t.reduceRight((function(e,t){var n=e[e.length-1];return u()(n.style===t.style,"Style ".concat(n.style," to be removed doesn't match expected ").concat(t.style)),e.slice(0,-1)}),e)},q=function(e,t){return t.filter((function(t){return e>=t.offset&&e<t.offset+t.length}))},B=function(e,t){var n=e.offset<=t.offset,r=e.offset+e.length>=t.offset+t.length;return n&&r},V=function(e,t){return t.offset+t.length-(e.offset+e.length)},U=function(e,t){for(var n=0;n<e.length;){if(!t.every(B.bind(null,e[n])))return e.slice(n);n+=1}return[]},K=function(e,t,n){return t+k(e(n.style)).start},G=function(e,t,n){return k(e(n.style)).end+t},F=function(e){return function(t){return e(t)}};F.__isMiddleware=!0;const W=function(e){return function(t){return"function"==typeof e?e(t):e[t.type]}};function $(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function z(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?$(Object(n),!0).forEach((function(t){v(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):$(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function J(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Q(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?J(Object(n),!0).forEach((function(t){v(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):J(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function X(e,t){if(u()(null!=e,"Expected block HTML value to be non-null"),"function"==typeof e.nest){var n=P(e.nest(t)),r=n.start,o=n.end;return Q(Q({},e),{},{nestStart:r,nestEnd:o})}if(f().isValidElement(e.nest)){var i=P(e.nest),l=i.start,a=i.end;return Q(Q({},e),{},{nestStart:l,nestEnd:a})}return u()(Object.prototype.hasOwnProperty.call(e,"nestStart")&&Object.prototype.hasOwnProperty.call(e,"nestEnd"),"convertToHTML: received block information without either a ReactElement or an object with start/end tags"),e}var Y=["1","a","i"];const Z={unstyled:f().createElement("p",null),paragraph:f().createElement("p",null),"header-one":f().createElement("h1",null),"header-two":f().createElement("h2",null),"header-two-unordered":f().createElement("h2",null),"header-two-ordered":f().createElement("h2",null),"header-three":f().createElement("h3",null),"header-four":f().createElement("h4",null),"header-five":f().createElement("h5",null),"header-six":f().createElement("h6",null),"code-block":f().createElement("pre",null),blockquote:f().createElement("blockquote",null),"unordered-list-item":{element:f().createElement("li",null),nest:f().createElement("ul",null)},"ordered-list-item":{element:f().createElement("li",null),nest:function(e){var t=Y[e%3];return f().createElement("ol",{type:t})}},media:f().createElement("figure",null),atomic:f().createElement("figure",null)};var ee=function(e,t){return t},te=function(e){return!0},ne=function(e){var t=e.styleToHTML,n=void 0===t?{}:t,r=e.blockToHTML,o=void 0===r?{}:r,i=e.entityToHTML,l=void 0===i?ee:i,a=e.validateHTML,c=void 0===a?te:a;return function(e){var t;u()(null!=e,"Expected contentState to be non-null"),t=!0===o.__isMiddleware?o(W(Z)):I(W(o),W(Z));var r=(0,y.convertToRaw)(e),i=[],a=r.blocks.map((function(e){var o=e.type,a=e.depth,s="",p="",y=t(e);if(!y)throw new Error("convertToHTML: missing HTML definition for block with type ".concat(e.type));if(y.nest)for(;a+1!==i.length||o!==i[a].type;)if(a+1===i.length){var h=i[a];s+=X(t(h),a).nestEnd,p+=X(t(e),a).nestStart,i[a]=e}else if(a+1<i.length){var v=i[i.length-1];s+=X(t(v),a).nestEnd,i=i.slice(0,-1)}else p+=X(t(e),a).nestStart,i.push(e);else s=i.reduceRight((function(e,n){return e+X(t(n),a).nestEnd}),""),i=[];var b,m=function(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:F;u()(null!=e,"Expected raw block to be non-null"),t=!0===n.__isMiddleware?n(C):I(A(n),A(C));for(var r="",o=[],i=e.inlineStyleRanges.sort(w),l=g(e.text),a=0;a<l.length;a+=1){var c=q(a,i),s=N(o,c),f=N(c,o),p=N(o,s),d=U(p,f),y=d.concat(f).sort(V),h=y.reduce(K.bind(null,t),"");r+=s.concat(d).reduce(G.bind(null,t),"")+h+l[a],o=(o=_(o,d.concat(s))).concat(y),u()(o.length===c.length,"Character ".concat(a,": ").concat(o.length-c.length," styles left on stack that should no longer be there"))}return o.reduceRight((function(e,n){return e+k(t(n.style)).end}),r)}(function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:H,r=g(e.text),o=n;if(n.__isMiddleware&&(o=n(H)),Object.prototype.hasOwnProperty.call(e,"entityRanges")&&e.entityRanges.length>0){for(var i=e.entityRanges.sort(w),l=e.inlineStyleRanges,a=function(e){var n,a=i[e],c=t[a.key],u=r.slice(a.offset,a.offset+a.length).join(""),s=o(c,u),f=k(s,u);n=f||""===f?g(f):u;var p=D(s,"start"),d=D(s,"end"),y=function(t){return t.reduce((function(t,r,o){var i=function(t,r){return r>e||Object.prototype.hasOwnProperty.call(t,"style")?E(t,a.offset,a.length,n.length,p,d):t}(r,o);return Array.isArray(i)?t.concat(i):t.concat([i])}),[])};i=y(i),l=y(l),r=[].concat(g(r.slice(0,a.offset)),g(n),g(r.slice(a.offset+a.length)))},c=0;c<i.length;c+=1)a(c);return R(R({},e),{},{text:r.join(""),inlineStyleRanges:l,entityRanges:i})}return e}(function(e){for(var t=g(e.text),n=e.entityRanges.sort(w),r=e.inlineStyleRanges.sort(w),o="",i=function(){var e=t[l];if(void 0!==S[e]){var i=S[e],a=g(o).length;o+=i;var c=function(t){return E(t,a,e.length,i.length,0,0)};n=n.map(c),r=r.map(c)}else o+=e},l=0;l<t.length;l+=1)i();return x(x({},e),{},{text:o,inlineStyleRanges:r,entityRanges:n})}(e),r.entityMap,l),n),O=function(e){return u()(null!=e,"Expected block HTML value to be non-null"),"string"==typeof e?e:f().isValidElement(e)?(t=e,f().isValidElement(t)&&f().Children.count(t.props.children)>0?d().renderToStaticMarkup(e):P(e)):Object.prototype.hasOwnProperty.call(e,"element")&&f().isValidElement(e.element)?z(z({},e),P(e.element)):(u()(Object.prototype.hasOwnProperty.call(e,"start")&&Object.prototype.hasOwnProperty.call(e,"end"),"convertToHTML: received block information without either a ReactElement or an object with start/end tags"),e);var t}(t(e));b="string"==typeof O?O:O.start+m+O.end,0===m.length&&Object.prototype.hasOwnProperty.call(O,"empty")&&(b=f().isValidElement(O.empty)?d().renderToStaticMarkup(O.empty):O.empty);var j=s+p+b;return c(j)?j:""})).join("");return i.reduce((function(e,n){return e+X(t(n),n.depth).nestEnd}),a)}};const re=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return 1===t.length&&Object.prototype.hasOwnProperty.call(t[0],"_map")&&null!=t[0].getBlockMap?ne({}).apply(void 0,t):ne.apply(void 0,t)};var oe=l(752),ie=function(e){var t=document.implementation.createHTMLDocument("");return t.documentElement.innerHTML=e,t};function le(e){var t;return"undefined"!=typeof DOMParser&&null!==(t=(new DOMParser).parseFromString(e,"text/html"))&&null!==t.body||(t=ie(e)),t.body}var ae=" ",ce=/\r/g,ue=/\n/g,se=/ /g,fe=/\r/g,pe=["p","h1","h2","h3","h4","h5","h6","li","blockquote","pre"],de={b:"BOLD",code:"CODE",del:"STRIKETHROUGH",em:"ITALIC",i:"ITALIC",s:"STRIKETHROUGH",strike:"STRIKETHROUGH",strong:"BOLD",u:"UNDERLINE"},ye=function(e,t){return e&&!0===e.__isMiddleware?e(t):e},he=function(e,t,n){},ve=function(e,t,n){return n},be=function(e,t){},ge=function(e){return[]},me=function(e){if(null!=e)return e;throw new Error("Got unexpected null or undefined")};function Oe(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:(0,oe.Map)();return!0===n?{text:"\r",inlines:[(0,oe.OrderedSet)()],entities:new Array(1),blocks:[{type:e,data:r,depth:Math.max(0,Math.min(4,t))}],isNewline:!0}:{text:"\n",inlines:[(0,oe.OrderedSet)()],entities:new Array(1),blocks:[]}}function Ee(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:(0,oe.Map)();return{text:"\r",inlines:[(0,oe.OrderedSet)()],entities:new Array(1),blocks:[{type:e,data:n,depth:Math.max(0,Math.min(4,t))}]}}function we(e,t){switch(e){case"h1":return"header-one";case"h2":return"header-two";case"h3":return"header-three";case"h4":return"header-four";case"h5":return"header-five";case"h6":return"header-six";case"li":return"ol"===t?"ordered-list-item":"unordered-list-item";case"blockquote":return"blockquote";case"pre":return"code-block";case"div":case"p":return"unstyled";default:return null}}function je(e,t,n){return we(e,n)}function xe(e,t,n){var r=de[e];if(r)n=n.add(r).toOrderedSet();else if(t instanceof HTMLElement){var o=t;n=n.withMutations((function(e){"bold"===o.style.fontWeight&&e.add("BOLD"),"italic"===o.style.fontStyle&&e.add("ITALIC"),"underline"===o.style.textDecoration&&e.add("UNDERLINE"),"line-through"===o.style.textDecoration&&e.add("STRIKETHROUGH")})).toOrderedSet()}return n}function Se(e,t){return xe(e,t,arguments.length>2&&void 0!==arguments[2]?arguments[2]:(0,oe.OrderedSet)())}function Me(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=t.text.slice(0,1),o="\r"===e.text.slice(-1)&&"\r"===r,i="\r"!==e.text&&"\r"!==t.text,l="\r"===e.text&&!e.isNewline&&t.isNewline;if(o&&(i||l)&&(e.text=e.text.slice(0,-1),e.inlines.pop(),e.entities.pop(),e.blocks.pop()),"\r"===e.text.slice(-1)&&!0===n){if(t.text===ae||"\n"===t.text)return e;r!==ae&&"\n"!==r||(t.text=t.text.slice(1),t.inlines.shift(),t.entities.shift())}var a=0===e.text.length&&t.isNewline;return{text:e.text+t.text,inlines:e.inlines.concat(t.inlines),entities:e.entities.concat(t.entities),blocks:e.blocks.concat(t.blocks),isNewline:a}}function Pe(e,t,n,r,o,i,l,a,c,u,s,f,p,d,y,h){var v=e.nodeName.toLowerCase(),b=!1,g="unstyled";if("#text"===v){var m=e.textContent;if(""===m.trim()&&null===r)return{text:"",inlines:[],entities:[],blocks:[]};if(""===m.trim()&&"code-block"!==r)return function(e){var t=new Array(1);return e&&(t[0]=e),{text:ae,inlines:[(0,oe.OrderedSet)()],entities:t,blocks:[]}}(h);"code-block"!==r&&(m=m.replace(ue,ae));var O=Array(m.length).fill(h),E=0;return c(m,s,f,p,d).sort(w).forEach((function(e){var t=e.entity,n=e.offset,r=e.length,o=e.result,i=n+E;null==o&&(o=m.substr(i,r));var l=m.split("");l.splice.bind(l,i,r).apply(l,o.split("")),m=l.join(""),O.splice.bind(O,i,r).apply(O,Array(o.length).fill(t)),E+=o.length-r})),{text:m,inlines:Array(m.length).fill(t),entities:O,blocks:[]}}if("br"===v){var j=r;return null===j?Oe("unstyled",i,!0):Oe(j||"unstyled",i,y.flat)}var x={text:"",inlines:[],entities:[],blocks:[]};t=l(v,e,t=xe(v,e,t)),"ul"!==v&&"ol"!==v||(n&&(i+=1),n=v,r=null);var S,M,P=u(v,e,n,r);if(!1===P)return{text:"",inlines:[],entities:[],blocks:[]};if("string"==typeof(P=P||{})?(S=P,M=(0,oe.Map)()):(S="string"==typeof P?P:P.type,M=P.data?(0,oe.Map)(P.data):(0,oe.Map)()),r||-1===o.indexOf(v)&&!S)if(!n||"ordered-list-item"!==r&&"unordered-list-item"!==r||"li"!==v)r&&"atomic"!==r&&"atomic"===S&&(r=S,b=!0,x=Oe(S,i,!0,M));else{var k=we(v,n);x=Ee(k,i),r=k,b=!0,g="ul"===n?"unordered-list-item":"ordered-list-item"}else x=Ee(S||we(v,n),i,M),r=S||we(v,n),b=!0;var T=e.firstChild;null!=T||!h||"atomic"!==S&&"atomic"!==r||(T=document.createTextNode("a")),null!=T&&(v=T.nodeName.toLowerCase());for(var D=null;T;){D=a(v,T,s,f,p,d),x=Me(x,Pe(T,t,n,r,o,i,l,a,c,u,s,f,p,d,y,D||h),y.flat);var L=T.nextSibling;if(L&&o.indexOf(v)>=0&&r){var R=u(v,T,n,r),H=void 0,A=void 0;!1!==R&&("string"==typeof(R=R||{})?(H=R,A=(0,oe.Map)()):(H=R.type||we(v,n),A=R.data?(0,oe.Map)(R.data):(0,oe.Map)()),x=Me(x,Oe(H,i,y.flat,A),y.flat))}L&&(v=L.nodeName.toLowerCase()),T=L}return b&&(x=Me(x,Ee(g,i,(0,oe.Map)()),y.flat)),x}function ke(e,t,n,r,o,i,l,a,c,u,s){var f=s(e=e.trim().replace(ce,"").replace(se,ae));if(!f)return null;var p=function(e){return pe.some((function(t){return-1!==e.indexOf("<".concat(t))}))}(e)?pe.concat(["div"]):["div"],d=Pe(f,(0,oe.OrderedSet)(),"ul",null,p,-1,t,n,r,o,i,l,a,c,u);return 0===d.text.indexOf("\r")&&(d={text:d.text.slice(1),inlines:d.inlines.slice(1),entities:d.entities.slice(1),blocks:d.blocks}),"\r"===d.text.slice(-1)&&(d.text=d.text.slice(0,-1),d.inlines=d.inlines.slice(0,-1),d.entities=d.entities.slice(0,-1),d.blocks.pop()),0===d.blocks.length&&d.blocks.push({type:"unstyled",data:(0,oe.Map)(),depth:0}),d.text.split("\r").length===d.blocks.length+1&&d.blocks.unshift({type:"unstyled",data:(0,oe.Map)(),depth:0}),d}var Te=function(e){var t=e.htmlToStyle,n=void 0===t?ve:t,r=e.htmlToEntity,o=void 0===r?be:r,i=e.textToEntity,l=void 0===i?ge:i,a=e.htmlToBlock,c=void 0===a?he:a;return function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{flat:!1},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:le,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:y.genKey,a=y.ContentState.createFromText(""),u=function(e,t,n,r,o,i,l,a,c,u,s,f){var p=ke(e,t,n,r,o,i,l,a,c,u,s);if(null==p)return[];var d=0;return p.text.split("\r").map((function(e,t){e=e.replace(fe,"");var n=d+e.length,r=me(p).inlines.slice(d,n),o=me(p).entities.slice(d,n),i=(0,oe.List)(r.map((function(e,t){var n={style:e,entity:null};return o[t]&&(n.entity=o[t]),y.CharacterMetadata.create(n)})));return d=n+1,new y.ContentBlock({key:f(),type:me(p).blocks[t].type,data:me(p).blocks[t].data,depth:me(p).blocks[t].depth,text:e,characterList:i})}))}(e,ye(n,Se),ye(o,be),ye(l,ge),ye(c,je),(function(){var e;return a.createEntity?(a=(e=a).createEntity.apply(e,arguments)).getLastCreatedEntityKey():y.Entity.create.apply(y.Entity,arguments)}),(function(){var e;return a.getEntity?(e=a).getEntity.apply(e,arguments):y.Entity.get.apply(y.Entity,arguments)}),(function(){var e;a.mergeEntityData?a=(e=a).mergeEntityData.apply(e,arguments):y.Entity.mergeData.apply(y.Entity,arguments)}),(function(){var e;a.replaceEntityData?a=(e=a).replaceEntityData.apply(e,arguments):y.Entity.replaceData.apply(y.Entity,arguments)}),t,r,i),s=y.BlockMapBuilder.createFromArray(u),f=u[0].getKey();return a.merge({blockMap:s,selectionBefore:y.SelectionState.createEmpty(f),selectionAfter:y.SelectionState.createEmpty(f)})}};const De=function(){return arguments.length>=1&&"string"==typeof(arguments.length<=0?void 0:arguments[0])?Te({}).apply(void 0,arguments):Te.apply(void 0,arguments)};return a})()));
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
+
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
3
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
4
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
5
|
+
import updateMutation from './util/updateMutation';
|
|
6
|
+
import rangeSort from './util/rangeSort';
|
|
7
|
+
import getElementHTML from './util/getElementHTML';
|
|
8
|
+
import getElementTagLength from './util/getElementTagLength';
|
|
9
|
+
var converter = function converter() {
|
|
10
|
+
var entity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
11
|
+
var originalText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
|
|
12
|
+
return originalText;
|
|
13
|
+
};
|
|
14
|
+
export default (function (block, entityMap) {
|
|
15
|
+
var entityConverter = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : converter;
|
|
16
|
+
var resultText = _toConsumableArray(block.text);
|
|
17
|
+
var getEntityHTML = entityConverter;
|
|
18
|
+
if (entityConverter.__isMiddleware) {
|
|
19
|
+
getEntityHTML = entityConverter(converter);
|
|
20
|
+
}
|
|
21
|
+
if (Object.prototype.hasOwnProperty.call(block, 'entityRanges') && block.entityRanges.length > 0) {
|
|
22
|
+
var entities = block.entityRanges.sort(rangeSort);
|
|
23
|
+
var styles = block.inlineStyleRanges;
|
|
24
|
+
var _loop = function _loop(index) {
|
|
25
|
+
var entityRange = entities[index];
|
|
26
|
+
var entity = entityMap[entityRange.key];
|
|
27
|
+
var originalText = resultText.slice(entityRange.offset, entityRange.offset + entityRange.length).join('');
|
|
28
|
+
var entityHTML = getEntityHTML(entity, originalText);
|
|
29
|
+
var elementHTML = getElementHTML(entityHTML, originalText);
|
|
30
|
+
var converted;
|
|
31
|
+
if (!!elementHTML || elementHTML === '') {
|
|
32
|
+
converted = _toConsumableArray(elementHTML);
|
|
33
|
+
} else {
|
|
34
|
+
converted = originalText;
|
|
35
|
+
}
|
|
36
|
+
var prefixLength = getElementTagLength(entityHTML, 'start');
|
|
37
|
+
var suffixLength = getElementTagLength(entityHTML, 'end');
|
|
38
|
+
var updateLaterMutation = function updateLaterMutation(mutation, mutationIndex) {
|
|
39
|
+
if (mutationIndex > index || Object.prototype.hasOwnProperty.call(mutation, 'style')) {
|
|
40
|
+
return updateMutation(mutation, entityRange.offset, entityRange.length, converted.length, prefixLength, suffixLength);
|
|
41
|
+
}
|
|
42
|
+
return mutation;
|
|
43
|
+
};
|
|
44
|
+
var updateLaterMutations = function updateLaterMutations(mutationList) {
|
|
45
|
+
return mutationList.reduce(function (acc, mutation, mutationIndex) {
|
|
46
|
+
var updatedMutation = updateLaterMutation(mutation, mutationIndex);
|
|
47
|
+
if (Array.isArray(updatedMutation)) {
|
|
48
|
+
return acc.concat(updatedMutation);
|
|
49
|
+
}
|
|
50
|
+
return acc.concat([updatedMutation]);
|
|
51
|
+
}, []);
|
|
52
|
+
};
|
|
53
|
+
entities = updateLaterMutations(entities);
|
|
54
|
+
styles = updateLaterMutations(styles);
|
|
55
|
+
resultText = [].concat(_toConsumableArray(resultText.slice(0, entityRange.offset)), _toConsumableArray(converted), _toConsumableArray(resultText.slice(entityRange.offset + entityRange.length)));
|
|
56
|
+
};
|
|
57
|
+
for (var index = 0; index < entities.length; index += 1) {
|
|
58
|
+
_loop(index);
|
|
59
|
+
}
|
|
60
|
+
return _objectSpread(_objectSpread({}, block), {}, {
|
|
61
|
+
text: resultText.join(''),
|
|
62
|
+
inlineStyleRanges: styles,
|
|
63
|
+
entityRanges: entities
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
return block;
|
|
67
|
+
});
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
2
|
+
import invariant from 'invariant';
|
|
3
|
+
import styleObjectFunction from './util/styleObjectFunction';
|
|
4
|
+
import accumulateFunction from './util/accumulateFunction';
|
|
5
|
+
import getElementHTML from './util/getElementHTML';
|
|
6
|
+
import rangeSort from './util/rangeSort';
|
|
7
|
+
import defaultInlineHTML from './default/defaultInlineHTML';
|
|
8
|
+
var subtractStyles = function subtractStyles(original, toRemove) {
|
|
9
|
+
return original.filter(function (el) {
|
|
10
|
+
return !toRemove.some(function (elToRemove) {
|
|
11
|
+
return elToRemove.style === el.style;
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
var popEndingStyles = function popEndingStyles(styleStack, endingStyles) {
|
|
16
|
+
return endingStyles.reduceRight(function (stack, style) {
|
|
17
|
+
var styleToRemove = stack[stack.length - 1];
|
|
18
|
+
invariant(styleToRemove.style === style.style, "Style ".concat(styleToRemove.style, " to be removed doesn't match expected ").concat(style.style));
|
|
19
|
+
return stack.slice(0, -1);
|
|
20
|
+
}, styleStack);
|
|
21
|
+
};
|
|
22
|
+
var characterStyles = function characterStyles(offset, ranges) {
|
|
23
|
+
return ranges.filter(function (range) {
|
|
24
|
+
return offset >= range.offset && offset < range.offset + range.length;
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
var rangeIsSubset = function rangeIsSubset(firstRange, secondRange) {
|
|
28
|
+
// returns true if the second range is a subset of the first
|
|
29
|
+
var secondStartWithinFirst = firstRange.offset <= secondRange.offset;
|
|
30
|
+
var secondEndWithinFirst = firstRange.offset + firstRange.length >= secondRange.offset + secondRange.length;
|
|
31
|
+
return secondStartWithinFirst && secondEndWithinFirst;
|
|
32
|
+
};
|
|
33
|
+
var latestStyleLast = function latestStyleLast(s1, s2) {
|
|
34
|
+
// make sure longer-lasting styles are added first
|
|
35
|
+
var s2endIndex = s2.offset + s2.length;
|
|
36
|
+
var s1endIndex = s1.offset + s1.length;
|
|
37
|
+
return s2endIndex - s1endIndex;
|
|
38
|
+
};
|
|
39
|
+
var getStylesToReset = function getStylesToReset(remainingStyles, newStyles) {
|
|
40
|
+
var i = 0;
|
|
41
|
+
while (i < remainingStyles.length) {
|
|
42
|
+
if (newStyles.every(rangeIsSubset.bind(null, remainingStyles[i]))) {
|
|
43
|
+
i += 1;
|
|
44
|
+
} else {
|
|
45
|
+
return remainingStyles.slice(i);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return [];
|
|
49
|
+
};
|
|
50
|
+
var appendStartMarkup = function appendStartMarkup(inlineHTML, string, styleRange) {
|
|
51
|
+
return string + getElementHTML(inlineHTML(styleRange.style)).start;
|
|
52
|
+
};
|
|
53
|
+
var prependEndMarkup = function prependEndMarkup(inlineHTML, string, styleRange) {
|
|
54
|
+
return getElementHTML(inlineHTML(styleRange.style)).end + string;
|
|
55
|
+
};
|
|
56
|
+
var defaultCustomInlineHTML = function defaultCustomInlineHTML(next) {
|
|
57
|
+
return function (style) {
|
|
58
|
+
return next(style);
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
defaultCustomInlineHTML.__isMiddleware = true;
|
|
62
|
+
export default (function (rawBlock) {
|
|
63
|
+
var customInlineHTML = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultCustomInlineHTML;
|
|
64
|
+
invariant(rawBlock !== null && rawBlock !== undefined, 'Expected raw block to be non-null');
|
|
65
|
+
var inlineHTML;
|
|
66
|
+
if (customInlineHTML.__isMiddleware === true) {
|
|
67
|
+
inlineHTML = customInlineHTML(defaultInlineHTML);
|
|
68
|
+
} else {
|
|
69
|
+
inlineHTML = accumulateFunction(styleObjectFunction(customInlineHTML), styleObjectFunction(defaultInlineHTML));
|
|
70
|
+
}
|
|
71
|
+
var result = '';
|
|
72
|
+
var styleStack = [];
|
|
73
|
+
var sortedRanges = rawBlock.inlineStyleRanges.sort(rangeSort);
|
|
74
|
+
var originalTextArray = _toConsumableArray(rawBlock.text);
|
|
75
|
+
for (var i = 0; i < originalTextArray.length; i += 1) {
|
|
76
|
+
var styles = characterStyles(i, sortedRanges);
|
|
77
|
+
var endingStyles = subtractStyles(styleStack, styles);
|
|
78
|
+
var newStyles = subtractStyles(styles, styleStack);
|
|
79
|
+
var remainingStyles = subtractStyles(styleStack, endingStyles);
|
|
80
|
+
|
|
81
|
+
// reset styles: look for any already existing styles that will need to
|
|
82
|
+
// end before styles that are being added on this character. to solve this
|
|
83
|
+
// close out those current tags and all nested children,
|
|
84
|
+
// then open new ones nested within the new styles.
|
|
85
|
+
var resetStyles = getStylesToReset(remainingStyles, newStyles);
|
|
86
|
+
var openingStyles = resetStyles.concat(newStyles).sort(latestStyleLast);
|
|
87
|
+
var openingStyleTags = openingStyles.reduce(appendStartMarkup.bind(null, inlineHTML), '');
|
|
88
|
+
var endingStyleTags = endingStyles.concat(resetStyles).reduce(prependEndMarkup.bind(null, inlineHTML), '');
|
|
89
|
+
result += endingStyleTags + openingStyleTags + originalTextArray[i];
|
|
90
|
+
styleStack = popEndingStyles(styleStack, resetStyles.concat(endingStyles));
|
|
91
|
+
styleStack = styleStack.concat(openingStyles);
|
|
92
|
+
invariant(styleStack.length === styles.length, "Character ".concat(i, ": ").concat(styleStack.length - styles.length, " styles left on stack that should no longer be there"));
|
|
93
|
+
}
|
|
94
|
+
result = styleStack.reduceRight(function (res, openStyle) {
|
|
95
|
+
return res + getElementHTML(inlineHTML(openStyle.style)).end;
|
|
96
|
+
}, result);
|
|
97
|
+
return result;
|
|
98
|
+
});
|