UNPKG

tiptap-extension-iframely

Version:

A Tiptap extension for adding embedded content with Iframely.

2 lines (1 loc) 1.38 kB
"use strict";var i=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var u=Object.prototype.hasOwnProperty;var c=(r,e)=>{for(var t in e)i(r,t,{get:e[t],enumerable:!0})},p=(r,e,t,m)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of f(e))!u.call(r,a)&&a!==t&&i(r,a,{get:()=>e[a],enumerable:!(m=l(e,a))||m.enumerable});return r};var y=r=>p(i({},"__esModule",{value:!0}),r);var b={};c(b,{Iframely:()=>w});module.exports=y(b);var o=require("@tiptap/core"),d=require("@tiptap/react"),n=require("react"),s=require("react/jsx-runtime"),w=o.Node.create({name:"iframely",group:"block",atom:!0,draggable:!0,addAttributes(){return{src:{default:null}}},parseHTML(){return[{tag:'div[data-type="iframely-embed"]'}]},renderHTML({HTMLAttributes:r}){return["div",(0,o.mergeAttributes)(r,{"data-type":"iframely-embed"})]},addCommands(){return{setIframelyEmbed:r=>({commands:e})=>e.insertContent({type:this.name,attrs:r})}},addNodeView(){return(0,d.ReactNodeViewRenderer)(({node:r})=>{let e=(0,n.useRef)(null),t=(0,n.useRef)(!1);return(0,n.useEffect)(()=>{t.current||!e.current||typeof window.iframely!="undefined"&&(window.iframely.load(e.current,r.attrs.src),t.current=!0)},[r.attrs.src]),(0,s.jsx)(d.NodeViewWrapper,{children:(0,s.jsx)("div",{ref:e,className:"not-prose my-8 overflow-hidden shadow-sm"})})})}});0&&(module.exports={Iframely});