carbon-react
Version:
A library of reusable React components for easily building user interfaces.
2 lines (1 loc) • 1.32 kB
JavaScript
import{createHeadlessEditor as t}from"@lexical/headless";import{$generateNodesFromDOM as e,$generateHtmlFromNodes as r}from"@lexical/html";import{$getRoot as o,$getSelection as n}from"lexical";import{MARKDOWN_NODES as i}from"./constants.js";import{getTheme as s}from"./theme.js";import l from"../../../../__internal__/utils/logger/index.js";const a=t=>{let e,o;return t.read((()=>{const n=t.getEditorState();o=n.toJSON(),e=r(t,null)})),{htmlString:e,json:o}},m=r=>{const a=t({namespace:"html-to-json",onError:t=>l.error(t.message),theme:s(),nodes:i});let m;if(a.update((()=>{const t=(new DOMParser).parseFromString(r,"text/html"),i=e(a,t);o().select();const s=n();if(s)try{s.insertNodes(i)}catch(t){m=t}}),{discrete:!0}),m)throw m;const c=a.getEditorState().toJSON();return JSON.stringify(c)},c=new RegExp(/((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=+$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=+$,\w]+@)[A-Za-z0-9.-]+)((?:\/[+~%/.\w-_]*)?\??(?:[-+=&;%@.\w_]*)#?(?:[\w]*))?)/);function p(t){return"https://"===t||c.test(t)}const d=t=>m(t),h=()=>'{"root":{"children":[{"children":[],"direction":null,"format":"","indent":0,"type":"paragraph","version":1}],"direction":null,"format":"","indent":0,"type":"root","version":1}}';export{m as DeserializeHTML,a as SerializeLexical,h as createEmpty,d as createFromHTML,p as validateUrl};