UNPKG

reactjs-tiptap-editor

Version:

A modern WYSIWYG rich text editor based on tiptap and shadcn ui for React

2 lines (1 loc) 3.31 kB
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("./index-CSvnpArE.cjs"),s=require("react/jsx-runtime"),g=require("react"),m=require("./ActionMenuButton-C5YeJ90E.cjs"),o=require("./RichTextEditor-DaQRHXru.cjs"),v=u.Node.create({name:"heading",addOptions(){return{levels:[1,2,3,4,5,6],HTMLAttributes:{}}},content:"inline*",group:"block",defining:!0,addAttributes(){return{level:{default:1,rendered:!1}}},parseHTML(){return this.options.levels.map(e=>({tag:`h${e}`,attrs:{level:e}}))},renderHTML({node:e,HTMLAttributes:t}){return[`h${this.options.levels.includes(e.attrs.level)?e.attrs.level:this.options.levels[0]}`,u.mergeAttributes(this.options.HTMLAttributes,t),0]},addCommands(){return{setHeading:e=>({commands:t})=>this.options.levels.includes(e.level)?t.setNode(this.name,e):!1,toggleHeading:e=>({commands:t})=>this.options.levels.includes(e.level)?t.toggleNode(this.name,"paragraph",e):!1}},addKeyboardShortcuts(){return this.options.levels.reduce((e,t)=>({...e,[`Mod-Alt-${t}`]:()=>this.editor.commands.toggleHeading({level:t})}),{})},addInputRules(){return this.options.levels.map(e=>u.textblockTypeInputRule({find:new RegExp(`^(#{${Math.min(...this.options.levels)},${e}})\\s$`),type:this.type,getAttributes:{level:e}}))}});function x(e){var r;const t=g.useMemo(()=>{var l;const n=(l=e==null?void 0:e.items)==null?void 0:l.find(a=>a.isActive());return n&&!n.default?{...n}:{title:e.tooltip,level:0,isActive:()=>!1}},[e]);return s.jsxs(o.DropdownMenu,{children:[s.jsx(o.DropdownMenuTrigger,{asChild:!0,disabled:e==null?void 0:e.disabled,children:s.jsx(m.ActionMenuButton,{disabled:e==null?void 0:e.disabled,icon:"MenuDown",title:t==null?void 0:t.title,tooltip:e==null?void 0:e.tooltip})}),s.jsx(o.DropdownMenuContent,{className:"richtext-w-full",children:(r=e==null?void 0:e.items)==null?void 0:r.map((n,c)=>{var l,a;return s.jsxs(g.Fragment,{children:[s.jsxs(o.DropdownMenuCheckboxItem,{checked:(t==null?void 0:t.title)===n.title,onClick:n.action,children:[s.jsx("div",{className:`heading- richtext-ml-1 richtext-h-full${n.level}`,children:n.title}),!!((l=n==null?void 0:n.shortcutKeys)!=null&&l.length)&&s.jsx(o.DropdownMenuShortcut,{className:"richtext-pl-4",children:(a=n==null?void 0:n.shortcutKeys)==null?void 0:a.map(d=>o.getShortcutKey(d)).join(" ")})]}),n.level===0&&s.jsx(o.DropdownMenuSeparator,{})]},`heading-k-${c}`)})})]})}const b=v.extend({addOptions(){var e;return{...(e=this.parent)==null?void 0:e.call(this),levels:[1,2,3,4,5,6],button({editor:t,extension:r,t:n}){var h;const{extensions:c=[]}=t.extensionManager??[],l=((h=r.options)==null?void 0:h.levels)||[],a=c.find(i=>i.name==="base-kit"),d=l.map(i=>({action:()=>t.commands.toggleHeading({level:i}),isActive:()=>t.isActive("heading",{level:i})||!1,disabled:!t.can().toggleHeading({level:i}),title:n(`editor.heading.h${i}.tooltip`),level:i,shortcutKeys:["alt","mod",`${i}`]}));a&&a.options.paragraph!==!1&&d.unshift({action:()=>t.commands.setParagraph(),isActive:()=>t.isActive("paragraph")||!1,disabled:!t.can().setParagraph(),level:0,title:n("editor.paragraph.tooltip"),shortcutKeys:["alt","mod","0"]});const f=d.filter(i=>i.disabled).length===d.length;return{component:x,componentProps:{tooltip:n("editor.heading.tooltip"),disabled:f,items:d,editor:t}}}}}});exports.Heading=b;