UNPKG

@edtr-io/plugin-text

Version:
3 lines (2 loc) 38.2 kB
"use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var t=require("@edtr-io/ui"),n=require("react"),r=require("slate"),o=require("@edtr-io/editor-ui"),i=require("ramda"),a=require("exenv"),u=require("is-hotkey"),l=e(u),c=require("@edtr-io/core"),s=e(require("@convertkit/slate-lists")),d=require("slate-react"),f=e(require("katex")),m=require("react-hotkeys");function p(){return(p=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function v(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function h(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)t.indexOf(n=i[r])>=0||(o[n]=e[n]);return o}var g="@splish-me/color",y=function(e){return e.value.document.getActiveMarksAtRange(ht(e))},E=function(e){return function(t){return y(t).some(function(t){return!!t&&(void 0===e?t.type===g:t.type===g&&t.data.get("colorIndex")==e)})}},b=function(e){return e.value.marks.toArray().filter(function(e){return e.type===g}).reduce(function(t,n){return e.removeMark(n)},e)},k=function(e){return E()(e)?y(e).find(function(e){return!!e&&e.type===g}).data.get("colorIndex"):void 0},C=t.styled.span(function(e){var t=pt(name,e.theme).plugins.colors.colors;return{color:t[e.colorIndex%t.length]}}),x=function(e){function t(){return e.apply(this,arguments)||this}return v(t,e),t.prototype.render=function(){var e=this.props,t=e.children;return n.createElement(C,Object.assign({colorIndex:e.colorIndex},e.attributes),t)},t}(n.Component),w=function(e){function t(){return e.apply(this,arguments)||this}return v(t,e),t.prototype.render=function(){var e=this.props;return n.createElement(C,{colorIndex:e.colorIndex},e.children)},t}(n.Component),T=function(e){var t=void 0===e?{}:e,r=t.EditorComponent,o=void 0===r?x:r,i=t.RenderComponent,a=void 0===i?w:i;return function(){return{serialize:function(e,t){var r=e;if("mark"===r.object){var o=r.data.get("colorIndex");return n.createElement(a,{mark:r,colorIndex:o},t)}},renderMark:function(e,t,r){var i=e.mark;if("mark"===i.object&&i.type===g){var a=i.data.get("colorIndex");return n.createElement(o,Object.assign({colorIndex:a},e))}return r()}}}},O=t.styled.button(function(e){var t=pt(e.name,e.theme);return{backgroundColor:e.active?t.active.backgroundColor:t.backgroundColor,cursor:"pointer",boxShadow:e.active?"inset 0 1px 3px 0 rgba(0,0,0,0.50)":void 0,color:e.active?t.active.color:t.color,outline:"none",height:"25px",border:"none",borderRadius:"4px",margin:"5px",padding:"0px",width:"25px","&:hover":{color:t.hoverColor}}}),N=function(e){var r=t.usePluginTheme(e.name,mt).plugins.colors,i=r.colors,a=r.defaultColor;return n.createElement(n.Fragment,null,n.createElement(O,{active:!E()(e.editor),name:e.name,onClick:function(){b(e.editor).moveToEnd().focus(),e.switchControls(Se.All),e.onChange(e.editor)},title:"Farbe zurücksetzen"},n.createElement(S,{color:a})),i.map(function(t,r){return n.createElement(O,{key:r,active:E(r)(e.editor),name:e.name,onClick:function(){var t;vt(e.editor),(t=r,function(e){return E(t)(e)?b(e):b(e).addMark({type:g,data:{colorIndex:t}})})(e.editor).moveToEnd().focus(),e.switchControls(Se.All),e.onChange(e.editor)},title:"Einfärben"},n.createElement(S,{color:t}))}),n.createElement(O,{name:e.name,onClick:function(){return e.switchControls(Se.All)},title:"Untermenü schließen"},n.createElement(o.EdtrIcon,{icon:o.edtrTextControls.close})))},S=t.styled.div(function(e){return{display:"inline-block",backgroundColor:e.color,borderRadius:" 100%",width:"19px",height:"19px",margin:"3px",verticalAlign:"middle"}}),j=t.styled.span({position:"relative",verticalAlign:"middle",display:"inline-block"}),I=t.styled.span({display:"flex",alignItems:"center",flexDirection:"column"}),A=t.styled.span(function(e){var t=pt(name,e.theme).plugins.colors,n=t.colors;return{border:"2px solid "+(void 0===e.index?t.defaultColor:n[e.index%n.length]),borderRadius:"4px",bottom:"0",width:"80%",position:"absolute"}}),B=function(e){return n.createElement(j,null,n.createElement(I,null,n.createElement(o.EdtrIcon,{icon:o.edtrTextControls.colorText}),n.createElement(A,{index:e.index})))},D=function(e,t){return!(!t.current||!t.current.parent||"blockquote"!==t.current.parent.name)},R=function(e,t){e.command("replaceWithPlugin",{plugin:"blockquote",state:{plugin:t,state:e.value.toJSON()}})},P=function(e){return"@splish-me/h"+e},L=function(e){var t=e.level,r=e.children,o=h(e,["level","children"]);return t<=6&&t>=1?n.createElement("h"+t,o,r):n.createElement("h6",Object.assign({},o),r)},F=function(e){function t(){return e.apply(this,arguments)||this}return v(t,e),t.prototype.render=function(){var e=this.props,t=e.children;return n.createElement(L,Object.assign({level:e.level},e.attributes),t)},t}(n.Component),M=function(e){function t(){return e.apply(this,arguments)||this}return v(t,e),t.prototype.render=function(){var e=this.props;return n.createElement(L,{level:e.level},e.children)},t}(n.Component),z=function(e){return function(t){var n=P(e);return t.value.blocks.some(function(e){return!!e&&e.type===n})}},q=function(e){return function(t){var n=P(e);return t.setBlocks(n)}},K=function(e){return i.find(function(t){return z(t)(e)},[1,2,3,4,5,6])},W=function(e){var t=void 0===e?{}:e,r=t.EditorComponent,o=void 0===r?F:r,i=t.RenderComponent,a=void 0===i?M:i;return function(){return{deserialize:function(e,t){var n=e.tagName.toLowerCase().match(/h([1-6])/);if(n){var r=parseInt(n[1],10);return{object:"block",type:P(r),nodes:t(e.childNodes)}}},serialize:function(e,t){if("block"===e.object){var r=e.type.match(/@splish-me\/h([1-6])/);if(r){var o=parseInt(r[1],10);return n.createElement(a,{level:o,node:e},t)}}},renderNode:function(e,t,r){var i=e.node;if("block"===i.object){var a=i.type.match(/@splish-me\/h([1-6])/);if(a){var u=parseInt(a[1],10);return n.createElement(o,Object.assign({level:u},e))}}return r()}}}},H=t.styled.select(function(e){var t=pt(e.name,e.theme);return{backgroundColor:t.backgroundColor,cursor:"pointer",color:t.color,outline:"none",height:"25px",border:"none",borderRadius:"4px",margin:"5px","&:hover":{color:t.hoverColor}}}),_=t.styled.option(function(e){var t=pt(e.name,e.theme);return{backgroundColor:e.active?t.active.backgroundColor:t.dropDown.backgroundColor,color:e.active?t.active.color:t.color,cursor:"pointer","&:hover":{color:t.hoverColor}}}),V="@splish-me/a",J=o.styled.span({margin:"0 0 0 10px"}),U=function(e){return e.value.inlines.some(function(e){return!!e&&e.type===V})},$=function(e){return e.unwrapInline(V)},Z=function(e){return void 0===e&&(e={href:""}),function(t){return t.value.selection.isExpanded?(vt(t),t.wrapInline({type:V,data:e}).moveToEnd().focus().moveBackward(1)):t.insertText(" ").focus().moveFocusBackward(1).wrapInline({type:V,data:e}).moveToStart()}},Q=function(e){var t=e.attributes,r=e.children,o=e.isSelected,i=e.node.data.get("href");return n.createElement("a",Object.assign({},t,{href:i,style:o?{textDecoration:"underline"}:void 0}),r)},X=function(e){var t=e.editor,r=t.value.inlines.find(function(e){return!!e&&e.type===V}),i=n.useRef(r),a=n.useState(r?r.data.get("href"):void 0),u=a[0],l=a[1],c=!e.readOnly&&U(t)&&t.value.selection.isCollapsed,s=n.useRef(c);if(n.useEffect(function(){s.current!==c&&(r&&u!==r.data.get("href")&&f(u,r,t),s.current=c)},[c,r,u,t]),!r)return n.createElement(n.Fragment,null,e.children);if(void 0===u||i.current.key!==r.key){var d=r.data.get("href");l(d),i.current=r}function f(e,t,n){n.setNodeByKey(t.key,{type:t.type,data:{href:e}})}return n.createElement(n.Fragment,null,e.children,!e.readOnly&&U(t)&&t.value.selection.isCollapsed?n.createElement(o.InlineSettings,{key:"inlineoverlay"+r.key,onDelete:function(){return $(t).focus()},position:"below"},n.createElement(o.InlineInput,{value:u,placeholder:"Hier Link einfügen",onChange:function(e){var n=e.target.value;l(n),f(n,r,t)},onKeyDown:function(e){"Enter"===e.key&&(e.preventDefault(),f(u,r,t),t.focus())},ref:function(e){e&&(s.current||u||setTimeout(function(){t.blur(),setTimeout(function(){e.focus()})}))}}),n.createElement("a",{target:"_blank",href:u,rel:"noopener noreferrer"},n.createElement(J,{title:"Öffne in neuem Tab"},n.createElement(o.Icon,{icon:o.faExternalLinkAlt})))):null)},G=function(e){function t(){return e.apply(this,arguments)||this}return v(t,e),t.prototype.render=function(){var e=this.props,t=e.node.data;return t?n.createElement("a",{href:t.href},e.children):null},t}(n.Component),Y=function(e){var t=void 0===e?{}:e,o=t.EditorComponent,i=void 0===o?Q:o,a=t.RenderComponent,u=void 0===a?G:a,c=t.ControlsComponent,s=void 0===c?X:c;return function(){return{onKeyDown:function(e,t,n){var r=e;return l("mod+k",r)?(r.preventDefault(),U(t)?$(t):Z()(t)):n()},deserialize:function(e,t){if("a"===e.tagName.toLowerCase()){var n=e.attrs.find(function(e){return"href"===e.name});return{object:"inline",type:V,nodes:t(e.childNodes),data:r.Data.create({href:n?n.value:""})}}},serialize:function(e,t){if("inline"===e.object&&e.type===V)return n.createElement(u,{node:e},t)},renderNode:function(e,t,r){var o=e.node;return"inline"===o.object&&o.type===V?n.createElement(i,Object.assign({},e)):r()},renderEditor:function(e,t,r){var o=r();return e.readOnly?o:n.createElement(s,Object.assign({},e,{editor:t}),o)}}}},ee=function(e){var t,o,i={inlines:(t={},t[Ie]={isVoid:!0},t[V]={text:/.+/},t),blocks:(o={},o[je]={isVoid:!0},o)};return function(t){var o=c.useEditorFocus(),a=o.focusPrevious,u=o.focusNext,s=n.useRef(),f=c.useStore(),m=n.useContext(c.OverlayContext),p=c.selectors.getPlugins(f.getState()),v=n.useState(r.Value.fromJSON(t.state.value)),h=v[0],g=v[1],y=n.useRef(t.state.value);n.useEffect(function(){y.current!==t.state.value&&(g(r.Value.fromJSON(t.state.value)),y.current=t.state.value,setTimeout(function(){s.current&&t.focused&&s.current.focus()}))},[y,t.focused,t.state.value]);var E=n.useRef({name:t.name,plugins:p,insert:t.insert,replace:t.replace,remove:t.remove,parent:t.parent,focusPrevious:a,focusNext:u,mergeWithNext:t.mergeWithNext,mergeWithPrevious:t.mergeWithPrevious});E.current={name:t.name,plugins:p,insert:t.insert,replace:t.replace,remove:t.remove,parent:t.parent,focusPrevious:a,focusNext:u,mergeWithNext:t.mergeWithNext,mergeWithPrevious:t.mergeWithPrevious},n.useEffect(function(){s.current&&(t.focused?setTimeout(s.current.focus):s.current.blur())},[t.focused]);var b=n.useRef({overlayContext:m,name:t.name,parent:t.parent,replace:t.replace,plugins:p});b.current={overlayContext:m,name:t.name,parent:t.parent,replace:t.replace,plugins:p};var k=n.useRef();void 0===k.current&&(k.current=[].concat(e.plugins.map(function(e){return e(b)}),[ne(E),re(E)]));var C=n.useMemo(function(){return function(e){return function(t,n,r){if(e.current){var o=e.current,i=o.plugins,a=o.name,u=o.insert,l=o.replace;if("function"==typeof u){var c=t.clipboardData,s=function(e){var t=i[e].onPaste;if(c&&"function"==typeof t){var r=t(c);if(void 0!==r){if("function"==typeof l&&se(n.value))setTimeout(function(){l({plugin:e,state:r.state})});else{var o=ie(n);setTimeout(function(){o&&u({plugin:a,state:o}),u({plugin:e,state:r.state})})}return{v:void 0}}}};for(var d in i){var f=s(d);if("object"==typeof f)return f.v}var m=n.value.blocks.first();r();var p=n.value.document.getBlocks().reverse().takeUntil(function(e){return!!e&&m.key===e.key});p.size&&(p.forEach(function(e){e&&n.removeNodeByKey(e.key)}),setTimeout(function(){p.forEach(function(e){e&&!/^\s*$/.test(e.text)&&u({plugin:a,state:ae([e])})})}))}else r()}else r()}}(E)},[E]),x=n.useMemo(function(){return function(e){return function(t,n,o){var i=t.key;if(l("mod+z",t)||l("mod+y",t)||l("mod+shift+z",t))t.preventDefault();else{if(!("Backspace"===i&&function(e){var t=e.value.selection,n=e.value.document.getFirstText();return t.isCollapsed&&n&&e.value.startText.key===n.key&&0===t.start.offset}(n)||"Delete"===i&&te(n)))return o();if(!e.current)return;var a="Backspace"===i;if(se(n.value)){var u=e.current.remove,c=e.current[a?"focusPrevious":"focusNext"];"function"==typeof u&&("function"==typeof c&&c(),u())}else{var s=e.current[a?"mergeWithPrevious":"mergeWithNext"];if("function"!=typeof s)return;s(function(e){var t=r.Value.fromJSON(e),o=r.Range.create(n.value.selection);return n.insertFragmentAtRange(o,t.document),a||n.select(o),n.value.toJSON()})}}}}(E)},[E]),w=n.useCallback(function(e,t,n){if(e.target&&!d.findNode(e.target,t))return t;n()},[]),T=n.useCallback(function(e){var n=e.value.toJSON();g(e.value),e.operations.filter(function(e){return void 0!==e&&"set_selection"!==e.type}).isEmpty()||(y.current=n,t.state.set(n))},[t.state]);return n.createElement(d.Editor,{ref:function(e){e&&!s.current&&(s.current=e,function(t){var n=e;n.insertFragment=function(e){if(!e.nodes.size)return n;n.value.selection.isExpanded&&n.delete();var t=n.value,r=t.document,o=t.selection,i=o.start,a=o.end,u=t.startText,l=t.endText,c=t.startInline,s=e.getLastText(),d=e.getClosestInline(s.key),f=e.getClosestBlock(s.key),m=e.nodes.first(),p=e.nodes.last(),v=r.getTexts().map(function(e){return e.key}),h=!c||i.isAtStartOfNode(u)||a.isAtStartOfNode(u)||i.isAtEndOfNode(l)||a.isAtEndOfNode(l),g=m.hasBlockChildren()||p.hasBlockChildren();n.insertFragmentAtRange(o,e);var y=(r=(t=n.value).document).getTexts().filter(function(e){return!v.includes(e.key)}),E=h?y.last():y.takeLast(2).first();if(E&&(d||g))n.moveToEndOfNode(E);else if(E&&f){var b=f.nodes.findLastIndex(function(e){return!!e&&"inline"==e.object}),k=f.nodes.takeLast(f.nodes.size-b-1).reduce(function(e,t){return e||(e=0),t?e+t.text.length:e},0);n.moveToStartOfNode(E).moveForward(k)}return n}}())},onPaste:C,onKeyDown:x,onClick:w,onChange:T,placeholder:t.editable?e.placeholder:"",plugins:k.current,readOnly:!t.focused,value:h,schema:i})}};function te(e){var t=e.value.selection,n=e.value.document.getLastText();return t.isCollapsed&&n&&e.value.endText.key===n.key&&t.end.offset===e.value.endText.text.length}function ne(e){return{commands:{replaceWithPlugin:function(t,n){if(!e.current)return t;var r=e.current.replace;return"function"!=typeof r?t:(r(n),t)},unwrapParent:function(t){if(!e.current)return t;var n=oe("replace",e.current);return n&&"function"==typeof n.replace&&n.replace({plugin:e.current.name,state:t.value.toJSON()}),t}},onKeyDown:function(t,n,r){if(l("enter",t)&&!n.value.selection.isExpanded){if(se(n.value)&&e.current){var o=oe("insert",e.current);if(o)return t.preventDefault(),void setTimeout(function(){if(!e.current)return r();var t=e.current.remove;"function"==typeof t&&"function"==typeof o.insert&&(o.insert({plugin:e.current.name}),t())})}if(""===n.value.startText.text&&1===n.value.startBlock.nodes.size&&e.current){var i=oe("insert",e.current);if(i)return t.preventDefault(),e.current?void("function"==typeof i.insert&&(n.delete(),i.insert({plugin:e.current.name}))):r()}if(e.current&&"function"==typeof e.current.insert){t.preventDefault();var a=ie(n);return void setTimeout(function(){if(!e.current)return r();var t=e.current.insert;"function"==typeof t&&t({plugin:e.current.name,state:a})})}}return r()}}}function re(e){return{onKeyDown:function(t,n,r){var o=t.key;if("ArrowDown"===o||"ArrowUp"===o){var i=u();if(i){var a=i.getBoundingClientRect().top;setTimeout(function(){if(e.current){var t=u();if(t){var n=t.getBoundingClientRect().top;a===n&&("ArrowDown"===o?e.current.focusNext():e.current.focusPrevious())}}})}}return r();function u(){var e=window.getSelection();return e&&e.rangeCount>0?e.getRangeAt(0):null}}}}function oe(e,t){if(t.parent)return"function"==typeof t.parent[e]?t.parent:oe(e,t.parent)}function ie(e){if(!te(e)){e.value.focusBlock.type==je?(e.moveToEndOfBlock(),e.insertBlock("paragraph")):e.splitBlock(1);var t=e.value.document.getBlocks().skipUntil(function(t){return!!t&&e.value.blocks.first().key===t.key});return t.forEach(function(t){t&&e.removeNodeByKey(t.key)}),ae(t.toArray())}}function ae(e){return{document:{nodes:[].concat(e.map(function(e){return e.toJSON()}))}}}var ue="paragraph",le=c.StateType.scalar({document:{nodes:[{object:"block",type:ue,nodes:[{object:"text",leaves:[{object:"leaf",text:""}]}]}]}}),ce=function(e){return{Component:ee(e),state:le,icon:o.createIcon(o.faParagraph),title:"Text",description:"Schreibe Text und Matheformeln und formatiere sie.",onKeyDown:function(){return!1},isEmpty:function(e){return se(r.Value.fromJSON(e))}}};function se(e){return""===e.document.text&&1===e.document.nodes.size&&e.document.nodes.get(0).type===ue&&1===e.document.getTexts().size}var de=function(e){return function(t){var n=t.value,r=n.document,o=n.startBlock;if(!o||"list-item-child"!==o.type)return!1;var i=r.getParent(o.key);return r.getParent(i.key).type===e}},fe=function(e){return void 0===e&&(e="unordered-list"),function(t){return t.command("toggleList",{type:e})}},me=function(){return function(){return s({blocks:{ordered_list:"ordered-list",unordered_list:"unordered-list",list_item:"list-item",list_item_child:"list-item-child",default:ue}})}},pe=function(e,t){var r=t.displayMode;return function(t){function o(){var e;return(e=t.apply(this,arguments)||this).state={html:""},e}v(o,t);var i=o.prototype;return i.render=function(){var t=this.state,r=t.error,o=t.html,i=this.props.renderError;return r?i?i(r):n.createElement(e,{html:""+r.message}):n.createElement(e,{html:o})},i.shouldComponentUpdate=function(e){return e.math!==this.props.math},o.getDerivedStateFromProps=function(e){try{return{html:f.renderToString(e.math,{displayMode:r,errorColor:e.errorColor,throwOnError:!!e.renderError}),error:void 0}}catch(e){if(e instanceof f.ParseError)return{error:e};throw e}},o}(n.Component)},ve=pe(function(e){return n.createElement("span",{style:{display:"block"},dangerouslySetInnerHTML:{__html:e.html}})},{displayMode:!0}),he=pe(function(e){return n.createElement("span",{dangerouslySetInnerHTML:{__html:e.html}})},{displayMode:!1}),ge=function(e,t,r,o){var i={color:"#CC0000"};if(t.position===o)return n.createElement("span",{style:i},e);var a=e.substring(0,t.position),u=e.substring(t.position);return n.createElement("span",{style:{display:"inline-block"}},n.createElement(ye,{formula:a,inline:r,oldErrorPosition:t.position}),n.createElement("span",{style:i},u),n.createElement("span",{style:p({},i,{display:"block"})},n.createElement("b",null,t.name,": ",t.message)))},ye=function(e){function t(){return e.apply(this,arguments)||this}return v(t,e),t.prototype.render=function(){var e=this.props,t=e.inline,r=e.formula,o=e.oldErrorPosition;return r?n.createElement(t?he:ve,{math:r,renderError:function(e){return ge(r,e,!t,o)}}):null},t}(n.Component),Ee=a.canUseDOM?require("react-mathquill").default:function(){return null},be=o.styled.div(function(e){return p({whiteSpace:void 0,overflowWrap:void 0},e.inline?{display:"inline-block"}:{display:"flex",flexDirection:"column",alignItems:"center",marginTop:"15px"})}),ke=o.styled.span({background:"#ddd",padding:"2px 4px",borderRadius:5,color:"#1d1c1d",textAlign:"center",minWidth:20}),Ce=n.createElement(n.Fragment,null,"Tastenkürzel:",n.createElement("br",null),n.createElement("br",null),n.createElement("p",null,"Bruch: ",n.createElement(ke,null,"/")),n.createElement("p",null,"Hochgestellt: ",n.createElement(ke,null,"↑")," oder ",n.createElement(ke,null,"^")),n.createElement("p",null,"Tiefgestellt: ",n.createElement(ke,null,"↓")," oder ",n.createElement(ke,null,"_")),n.createElement("p",null,"π, α, β, γ: ",n.createElement(ke,null,"pi"),", ",n.createElement(ke,null,"alpha"),","," ",n.createElement(ke,null,"beta"),",",n.createElement(ke,null,"gamma")),n.createElement("p",null,"≤, ≥: ",n.createElement(ke,null,"<="),", ",n.createElement(ke,null,">=")),n.createElement("p",null,"Wurzeln: ",n.createElement(ke,null,"\\sqrt"),", ",n.createElement(ke,null,"\\nthroot")),n.createElement("p",null,"Mathematische Symbole: ",n.createElement(ke,null,"\\<NAME>"),", z.B."," ",n.createElement(ke,null,"\\neq")," (≠), ",n.createElement(ke,null,"\\pm")," (±), ..."),n.createElement("p",null,"Funktionen: ",n.createElement(ke,null,"sin"),", ",n.createElement(ke,null,"cos"),","," ",n.createElement(ke,null,"ln"),", ..."));function xe(){return nt()&&navigator&&/(android)/i.test(navigator.userAgent)}var we=function(e){var t=e.attributes,r=e.node,i=e.editor,a=e.readOnly,u=e.name,l=r.data,s=l.get("inline"),d=l.get("formula");function f(e){i.setNodeByKey(r.key,{type:r.type,data:{formula:e,inline:r.data.get("inline")}})}var m=n.useState(!0),v=m[0],h=m[1],g=n.createRef(),y=n.useRef(),E=Object.defineProperty({},"current",{get:function(){return g.current?g.current.element:null}}),b=n.useState(d),k=b[0],C=b[1],x=n.useContext(c.OverlayContext),w=e.isSelected&&i.value.selection.isCollapsed&&!a,T=n.useRef(w);function N(e){if(y.current){var t=y.current,n=t.selectionEnd,r=t.value;"ArrowLeft"===e.key&&0===n?i.moveToStart().moveBackward(1).focus():"ArrowRight"===e.key&&n===r.length&&i.moveToEnd().moveForward(1).focus()}}function S(e){C(e),xe()&&f(e)}if(T.current!==w&&(d!==k&&f(k),T.current=w),w){var j=p({supSubsRequireOperand:!0,autoCommands:"pi alpha beta gamma delta",handlers:{moveOutOf:function(e){1==e?i.moveToEnd().moveForward(1).focus():-1==e&&i.moveToStart().moveBackward(1).focus()},deleteOutOf:function(e){-1==e&&i.delete().focus()},upOutOf:function(e){e.typedText("^")},downOutOf:function(e){e.typedText("_")}}},xe()?{substituteTextarea:Te,substituteKeyboardEvents:Oe}:{});return n.createElement(n.Fragment,null,n.createElement(o.Overlay,null,Ce),n.createElement(be,Object.assign({},t,{onClick:function(e){e.stopPropagation()},inline:s}),v?n.createElement(Ee,{latex:k.replace("\\mathbb{N}","\\N"),onChange:function(e){S(e.latex())},config:j,ref:g,mathquillDidMount:function(e){e&&(""==e.latex()&&""!=d&&(alert("Error while parsing LaTeX."),h(!1)),setTimeout(function(){i.blur(),setTimeout(function(){e.focus()})}))}}):s?n.createElement("input",{ref:function(e){return y.current=e},type:"text",value:k,onChange:function(e){S(e.target.value)},onKeyDown:N,autoFocus:!0}):n.createElement("textarea",{style:{width:"100%"},ref:function(e){return y.current=e},value:k,onChange:function(e){return S(e.target.value)},onKeyDown:N,autoFocus:!0}),n.createElement(o.HoveringOverlay,{position:"above",anchor:v?E:y},n.createElement(H,{name:u,value:v?"visual":"latex",onChange:function(e){h("visual"==e.target.value)}},n.createElement(_,{active:v,value:"visual",name:u},"visual"),n.createElement(_,{active:!v,value:"latex",name:u},"latex")),de("ordered-list")(i)||de("unordered-list")(i)?null:n.createElement(o.InlineCheckbox,{label:"eigene Zeile",checked:!s,onChange:function(e){var t={formula:k,inline:!e};if(r.isLeafBlock()){var n=i.value.document.getNextBlock(r.key);i.removeNodeByKey(r.key),n&&i.mergeNodeByKey(n.key)}else i.removeNodeByKey(r.key);e?i.insertBlock({type:je,data:t}):i.insertInline({type:Ie,data:t})}}),n.createElement(O,{name:u,onClick:function(){x.show()}},n.createElement(o.Icon,{icon:o.faQuestionCircle})))))}return n.createElement("span",Object.assign({},t),d?n.createElement(ye,{formula:d,inline:s}):n.createElement("span",{style:{backgroundColor:"lightgrey"}},"[neue Formel]"))};function Te(){var e=document.createElement("input");return e.setAttribute("type","password"),e}function Oe(e,t){var n=e[0];n.value=" ",n.addEventListener("input",function(){var e=n.value;2==e.length?t.typedText(e.charAt(1)):0==e.length&&t.keystroke("Backspace",{preventDefault:function(){return null}}),setTimeout(function(){n.value=" "})})}var Ne=function(e){var t=e.node.data;return t?n.createElement(ye,{formula:t.formula,inline:t.inline}):null};a.canUseDOM&&require("react-mathquill").addStyles();var Se,je="@splish-me/katex-block",Ie="@splish-me/katex-inline",Ae=function(e){return e.value.blocks.some(function(e){return!!e&&e.type===je})||e.value.inlines.some(function(e){return!!e&&e.type===Ie})},Be=function(e){if(e.value.selection.isExpanded){vt(e);var t=document.getSelection();return e.wrapInline({type:Ie,data:{formula:t?t.toString():"",inline:!0}}).moveToEnd(),e.focus().moveBackward(1)}return e.insertInline({type:Ie,data:{formula:"",inline:!0}})},De=function(e){var t=void 0===e?{}:e,r=t.EditorComponent,o=void 0===r?we:r,i=t.RenderComponent,a=void 0===i?Ne:i;return function(e){return{deserialize:function(e,t){switch(e.tagName.toLowerCase()){case"katexblock":return{object:"block",type:je,data:{formula:e.childNodes[0].nodeValue,inline:!1},nodes:t(e.childNodes)};case"katexinline":return{object:"inline",type:Ie,data:{formula:e.childNodes[0].nodeValue,inline:!0},nodes:t(e.childNodes)};default:return}},serialize:function(e,t){if("block"===e.object&&e.type===je||"inline"===e.object&&e.type===Ie)return n.createElement(a,{node:e},t)},onKeyDown:function(e,t,n){var r=e;return u.isHotkey("mod+m")(r)?(r.preventDefault(),Be(t)):n()},renderNode:function(t,r,i){var a=t.node,u=t.node;return"block"===a.object&&a.type===je||"inline"===u.object&&u.type===Ie?n.createElement(o,Object.assign({},t,{editor:r,name:e.current?e.current.name:""})):i()}}}},Re=ue,Pe=function(e){return e.setBlocks(Re)},Le=function(e){function t(){return e.apply(this,arguments)||this}return v(t,e),t.prototype.render=function(){var e=this.props,t=e.children;return n.createElement("div",Object.assign({},e.attributes),t)},t}(n.Component),Fe=function(e){function t(){return e.apply(this,arguments)||this}return v(t,e),t.prototype.render=function(){return n.createElement("p",null,this.props.children)},t}(n.Component),Me=function(e){var t=void 0===e?{}:e,r=t.EditorComponent,o=void 0===r?Le:r,i=t.RenderComponent,a=void 0===i?Fe:i;return function(){return{deserialize:function(e,t){if("p"===e.tagName.toLowerCase())return{object:"block",type:Re,nodes:t(e.childNodes)}},serialize:function(e,t){if("block"===e.object&&e.type===Re||"@splish-me/p"===e.type)return n.createElement(a,{node:e},t)},renderNode:function(e,t,r){var i=e.node;return"block"===i.object&&i.type===Re||"@splish-me/p"===i.type?n.createElement(o,Object.assign({},e)):r()}}}},ze="@splish-me/strong",qe="@splish-me/em",Ke="code",We=function(e){return e.value.document.getActiveMarksAtRange(ht(e))},He=function(e){return We(e).some(function(e){return!!e&&e.type===ze})},_e=function(e){return We(e).some(function(e){return!!e&&e.type===qe})},Ve=function(e){return vt(e),e.toggleMark(ze)},Je=function(e){return vt(e),e.toggleMark(qe)},Ue=function(e){function t(){return e.apply(this,arguments)||this}return v(t,e),t.prototype.render=function(){var e=this.props,t=e.attributes,r=e.children;switch(e.mark.type){case ze:return n.createElement("strong",Object.assign({},t),r);case qe:return n.createElement("em",Object.assign({},t),r);case Ke:return n.createElement("code",Object.assign({},t),r);default:return null}},t}(n.Component),$e=function(e){function t(){return e.apply(this,arguments)||this}return v(t,e),t.prototype.render=function(){var e=this.props,t=e.children;switch(e.mark.type){case ze:return n.createElement("strong",null,t);case qe:return n.createElement("em",null,t);case Ke:return n.createElement("code",null,t);default:return null}},t}(n.Component),Ze=function(e){var t=void 0===e?{}:e,r=t.EditorComponent,o=void 0===r?Ue:r,i=t.RenderComponent,a=void 0===i?$e:i;return function(){return{deserialize:function(e,t){switch(e.tagName.toLowerCase()){case"strong":case"b":return{object:"mark",type:ze,nodes:t(e.childNodes)};case"em":case"i":return{object:"mark",type:qe,nodes:t(e.childNodes)};case"code":case"q":return{object:"mark",type:Ke,nodes:t(e.childNodes)};default:return}},onKeyDown:function(e,t,n){var r=e;return u.isHotkey("mod+b")(r)?(r.preventDefault(),Ve(t)):u.isHotkey("mod+i")(r)?(r.preventDefault(),Je(t)):u.isHotkey("mod+q")(r)?(r.preventDefault(),function(e){return vt(e),e.toggleMark(Ke)}(t)):n()},serialize:function(e,t){var r=e;if("mark"===r.object&&[ze,qe,Ke].indexOf(r.type)>-1)return n.createElement(a,{mark:r},t)},renderMark:function(e,t,r){var i=e.mark;return"mark"===i.object&&[ze,qe,Ke].indexOf(i.type)>-1?n.createElement(o,Object.assign({},e)):r()}}}},Qe=function(e){var t=e.editor,r=e.name,i=e.pluginClosure;return n.createElement(n.Fragment,null,n.createElement(O,{name:r,active:He(t),onClick:function(){Ve(t).focus(),e.onChange(t)},title:"Fett (Strg + B)"},n.createElement(o.EdtrIcon,{icon:o.edtrTextControls.bold})),n.createElement(O,{name:r,active:_e(t),onClick:function(){Je(t).focus(),e.onChange(t)},title:"Kursiv (Strg + I)"},n.createElement(o.EdtrIcon,{icon:o.edtrTextControls.italic})),n.createElement(O,{name:r,active:U(t),onClick:function(){U(t)?$(t).focus():Z()(t),e.onChange(t)},title:"Link (Strg + K)"},n.createElement(o.EdtrIcon,{icon:o.edtrTextControls.link})),n.createElement(O,{name:r,active:!!K(e.editor),onClick:function(){K(e.editor)?(Pe(e.editor),e.onChange(t)):e.switchControls(Se.Headings)},title:"Überschriften"},n.createElement(o.EdtrIcon,{icon:o.edtrTextControls.text})),n.createElement(O,{name:r,onClick:function(){return e.switchControls(Se.Colors)},title:"Textfarben"},n.createElement(B,{index:k(t)})),n.createElement(O,{name:r,onClick:function(){de("unordered-list")(t)||de("ordered-list")(t)||(fe("unordered-list")(e.editor).focus(),e.onChange(t)),e.switchControls(Se.Lists)},title:"Listen"},n.createElement(o.EdtrIcon,{icon:de("ordered-list")(t)?o.edtrTextControls.listNumbered:o.edtrTextControls.listBullets})),n.createElement(O,{name:r,active:D(0,i),onClick:function(){D(0,i)?(function(e,t){t.current&&D(0,t)&&e.command("unwrapParent")}(t,i),e.onChange(t)):(R(t,r),e.onChange(t))},title:"Zitat"},n.createElement(o.EdtrIcon,{icon:o.edtrTextControls.quote})),n.createElement(O,{name:r,active:Ae(t),onClick:function(){Ae(t)?function(e){var t=e.value.blocks.toArray().find(function(e){return e.type===je})||e.value.inlines.toArray().find(function(e){return e.type===Ie});return t?e.removeNodeByKey(t.key):e}(t).focus():Be(t),e.onChange(t)},title:"Matheformel (Strg + M)"},n.createElement(o.EdtrIcon,{icon:o.edtrTextControls.formel})))},Xe=function(e){return n.createElement(n.Fragment,null,i.times(function(t){var r=t+1,o=z(r)(e.editor);return n.createElement(O,{key:t,name:e.name,active:o,onClick:function(){o?Pe(e.editor):q(r)(e.editor),e.editor.focus(),e.onChange(e.editor),e.switchControls(Se.All)},title:"Überschrift "+r},"H",r)},3),n.createElement(O,{name:e.name,onClick:function(){return e.switchControls(Se.All)},title:"Untermenü schließen"},n.createElement(o.EdtrIcon,{icon:o.edtrTextControls.close})))},Ge=function(e){return n.createElement(n.Fragment,null,n.createElement(O,{name:e.name,active:de("ordered-list")(e.editor),onClick:function(){fe("ordered-list")(e.editor).focus(),e.onChange(e.editor)},title:"Nummerierte Liste"},n.createElement(o.EdtrIcon,{icon:o.edtrTextControls.listNumbered})),n.createElement(O,{name:e.name,active:de("unordered-list")(e.editor),onClick:function(){fe("unordered-list")(e.editor).focus(),de("unordered-list")(e.editor)||e.switchControls(Se.All),e.onChange(e.editor)},title:"Aufzählung"},n.createElement(o.EdtrIcon,{icon:o.edtrTextControls.listBullets})),n.createElement(O,{name:e.name,onClick:function(){return e.switchControls(Se.All)},title:"Untermenü schließen"},n.createElement(o.EdtrIcon,{icon:o.edtrTextControls.close})))};!function(e){e[e.All=0]="All",e[e.Headings=1]="Headings",e[e.Lists=2]="Lists",e[e.Colors=3]="Colors"}(Se||(Se={}));var Ye,et=function(e){var t=e.visibleControls,r=e.setVisibleControls,o=e.onChange,i=h(e,["visibleControls","setVisibleControls","onChange"]);switch(t){case Se.All:return n.createElement(Qe,Object.assign({},i,{switchControls:r,onChange:o}));case Se.Headings:return n.createElement(Xe,Object.assign({},i,{switchControls:r,onChange:o}));case Se.Lists:return n.createElement(Ge,Object.assign({},i,{switchControls:r,onChange:o}));case Se.Colors:return n.createElement(N,Object.assign({},i,{switchControls:r,onChange:o}))}},tt=o.styled(o.BottomToolbar)(function(e){return p({opacity:e.visible?1:0,transition:"500ms opacity ease-in-out"},e.isTouch?{bottom:"unset",top:0,transform:"translate(-50%, 50%)"}:{})});function nt(){return"ontouchstart"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0}var rt=function(e){return function(t){var r=e.Component;return{renderEditor:function(e,o,i){var a=e.readOnly;a&&o.blur();var u=t.current?t.current.name:"",l=i();return n.createElement(n.Fragment,null,a?null:n.createElement(r,Object.assign({editor:o},e,{name:u,pluginClosure:t})),l)}}}},ot=t.createPluginTheme(function(e){return{background:{default:"transparent",highlight:e.editor.primary.background},text:{default:e.editor.color,highlight:e.editor.danger.background}}}),it=t.styled.div(function(e){var t=e.active,n=e.name,r=h(e,["active","name"]),o=ot(n,r.theme);return{height:"32px",padding:"4px 8px",cursor:"pointer",backgroundColor:t?o.background.highlight:o.background.default,borderRadius:"4px","&:hover":{background:o.background.highlight}}}),at=t.styled.div({padding:"10px"}),ut=t.styled.span(function(e){var t=e.highlight,n=e.name,r=h(e,["highlight","name"]),o=ot(n,r.theme);return{color:t?o.text.highlight:o.text.default}}),lt=function(e){function t(){return e.apply(this,arguments)||this}return v(t,e),t.prototype.render=function(){var e=this;return n.createElement(at,null,0===this.props.options.length?"keine Einträge vorhanden":this.props.options.map(function(t,r){var o,i=t[0].split(new RegExp("("+(o=e.props.currentValue,o.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"))+")","i")).map(function(t){return{text:t,highlight:t.toLowerCase()===e.props.currentValue.toLowerCase()}});return n.createElement(it,{key:r,active:r===e.props.selected,onClick:function(){return e.props.onSelect(t[1])},name:e.props.name},i.map(function(t,r){return n.createElement(ut,{key:r,highlight:t.highlight,name:e.props.name},t.text)}))}))},t}(n.Component);function ct(e,t){if(e.current){var n=e.current.plugins,r=t.value.document.text.replace("/",""),o=Object.keys(n).filter(function(e){var t=n[e];return e!==name&&"rows"!==e&&(!r.length||t.title&&t.title.toLowerCase().startsWith(r.toLowerCase()))}).map(function(e){return[n[e].title||e,e]}),i=Object.keys(n).filter(function(e){var t=n[e];return e!==name&&"rows"!==e&&t.title&&t.title.toLowerCase().includes(r.toLowerCase())&&!t.title.toLowerCase().startsWith(r.toLowerCase())}).map(function(e){return[n[e].title||e,e]});return[].concat(o,i)}return[]}function st(e){return function(t){e.command("replaceWithPlugin",{plugin:t})}}function dt(e){var t=e.children,r=h(e,["children"]),i=n.useState(0),a=i[0],u=i[1],l=r.options.length;return n.createElement(m.HotKeys,{keyMap:{DEC:"up",INC:"down",INSERT:"enter"},handlers:{DEC:function(){u((a+l-1)%l)},INC:function(){u((a+1)%l)},INSERT:function(){var e=r.options[a];e&&setTimeout(function(){r.onSelect(e[1])})}}},t,n.createElement(o.HoveringOverlay,{position:"below"},n.createElement(lt,Object.assign({selected:a},r))))}var ft=ce({plugins:[].concat([function(e){return{renderEditor:function(t,r,o){var i=r.value.document.text;if(!r.readOnly&&i.startsWith("/")){var a=ct(e,r);return n.createElement(dt,{onSelect:st(r),options:a,currentValue:i.substr(1),name:e.current?e.current.name:""},o())}return o()},onKeyDown:function(t,n,r){n.value.document.text.startsWith("/")&&ct(e,n).length>0&&["ArrowDown","ArrowUp","Enter"].includes(t.key)?t.preventDefault():r()}}},Me(),Ze(),Y(),De(),W(),me(),T(),function(e){return{onKeyDown:function(t,n,r){if(!e.current)return r();var o=t,i=e.current.name;switch(o.key){case" ":return function(e,t,n,r){var o=t.value,i=o.selection;if(i.isExpanded)return n();var a=o.startBlock;if(!function(e,t,n,r){if(/^\d+\.$/.test(e)){if(de("ordered-list")(t))return;return fe("ordered-list")(t)}switch(e){case"*":case"-":case"+":if(de("unordered-list")(t))return;return fe("unordered-list")(t);case">":return R(t,r);case"#":return q(1)(t);case"##":return q(2)(t);case"###":return q(3)(t);case"####":return q(4)(t);case"#####":return q(5)(t);case"######":return q(6)(t);default:return}}(a.text.slice(0,i.start.offset).replace(/\s*/g,""),t,0,r))return n();e.preventDefault(),t.moveFocusToStartOfNode(a).delete()}(o,n,r,i);default:return r()}}}}],[rt({Component:function(e){var t=e.editor.value.selection.isCollapsed,r=n.useState(Se.All),i=r[0],a=r[1],u=n.useState(!1),l=u[0],c=u[1];function s(){a(Se.All),c(!0)}n.useEffect(function(){return Ye=setTimeout(s,2500),function(){clearTimeout(Ye)}},[]);var d=JSON.stringify(e.editor.value.toJSON()),f=n.useRef({value:d,selectionCollapsed:t});n.useEffect(function(){var e=f.current.value!==d;(e||f.current.selectionCollapsed!==t)&&(f.current={value:d,selectionCollapsed:t},Ye&&clearTimeout(Ye),t&&(Ye=setTimeout(s,e?2500:1e3)),c(!1))},[d,t]);var m=n.useCallback(function(e){return f.current=p({},f.current,{value:JSON.stringify(e.value.toJSON())}),e},[]);return n.createElement(n.Fragment,null,!t&&n.createElement(o.HoveringOverlay,{position:nt()?"below":"above"},n.createElement(et,Object.assign({},e,{visibleControls:i,setVisibleControls:a,onChange:m}))),!e.readOnly&&n.createElement(tt,{isTouch:nt(),visible:t&&l},l&&n.createElement(et,Object.assign({},e,{visibleControls:i,setVisibleControls:a,onChange:m}))))}})]),placeholder:n.createElement(n.Fragment,null,"Schreibe etwas oder füge mit ⊕ Elemente hinzu.")}),mt=function(e){return{backgroundColor:"transparent",color:e.editor.color,hoverColor:e.editor.primary.background,active:{backgroundColor:"#b6b6b6",color:e.editor.backgroundColor},dropDown:{backgroundColor:e.editor.backgroundColor},plugins:{colors:{colors:["#1794c1","#469a40","#ff6703"],defaultColor:"black"}}}},pt=t.createPluginTheme(mt);function vt(e){var t=document.getSelection();if(t){for(var n=t.toString();n.startsWith(" ");)e.moveStartForward(1),n=n.substring(1);for(;n.endsWith(" ");)e.moveEndBackward(1),n=n.substring(0,n.length-1)}}function ht(e){var t=document.getSelection(),n=e.value.selection.toRange();if(t){for(var o=t.toString();o.startsWith(" ");)n=n.moveStartForward(1),o=o.substring(1);for(;o.endsWith(" ");)n=n.moveEndBackward(1),o=o.substring(0,o.length-1)}return r.Range.create(n)}exports.createTextPlugin=ce,exports.createTextPluginTheme=pt,exports.defaultNode=ue,exports.getTrimmedSelectionRange=ht,exports.isValueEmpty=se,exports.textPlugin=ft,exports.textPluginThemeFactory=mt,exports.textState=le,exports.trimSelection=vt; //# sourceMappingURL=plugin-text.cjs.production.min.js.map