当前位置: 首页 > news >正文

南头专业外贸网站建设公司绿色郑州网站

南头专业外贸网站建设公司,绿色郑州网站,重庆seo教程搜索引擎优化,微网站搭建费用本文为开发开源项目的真实开发经历,感兴趣的可以来给我的项目点个star,谢谢啦~ 具体博文介绍: 开源|Documind协同文档(接入deepseek-r1、支持实时聊天)Documind 🚀 一个支持实时聊天和接入 - 掘…

本文为开发开源项目的真实开发经历,感兴趣的可以来给我的项目点个star,谢谢啦~

具体博文介绍:
开源|Documind协同文档(接入deepseek-r1、支持实时聊天)Documind 🚀 一个支持实时聊天和接入 - 掘金

我干了什么

我定义了两个插件:

  • font-size:支持通过setFontSize设置tiptap编辑器字体大小,通过unsetFontSize重置为默认大小。
  • line-height:支持通过设置setLineHeight设置tiptap编辑器行高,通过unsetLineHeight重置为默认行高。

源码参考

这里就不一点一点讲解了,注释看不懂的话可以叫AI帮你解析。

font-size插件:
import { Extension } from "@tiptap/core";
import "@tiptap/extension-text-style";// 声明类型
declare module "@tiptap/core" {interface Commands<ReturnType> {fontSize: {/** 设置字体大小(支持CSS单位如12px/1.2rem等) */setFontSize: (fontSize: string) => ReturnType;/** 清除字体大小设置 */unsetFontSize: () => ReturnType;};}
}// 创建扩展
export const FontSizeExtension = Extension.create({name: "fontSize",// 扩展配置项addOptions() {return {types: ["textStyle"], // 作用对象为文本样式标记};},// 注册全局属性addGlobalAttributes() {return [{types: this.options.types, // 应用范围(textStyle类型)attributes: {fontSize: {default: null, // 默认无字体大小// 从DOM解析字体大小(读取style属性)parseHTML: (element) => element.style.fontSize,// 渲染到DOM时生成样式renderHTML: (attributes) => {if (!attributes.fontSize) {return {}; // 无设置时返回空对象}return {style: `font-size: ${attributes.fontSize};`, // 生成内联样式};},},},},];},// 注册编辑器命令addCommands() {return {/** 设置字体大小命令 */setFontSize:(fontSize: string) =>({ chain }) => {return chain().setMark("textStyle", { fontSize }) // 更新文本样式标记.run();},/** 清除字体大小命令 */unsetFontSize:() =>({ chain }) => {return chain().setMark("textStyle", { fontSize: null }) // 清除字体大小属性.removeEmptyTextStyle() // 移除空文本样式标记.run();},};},
});
line-height插件:
import { Extension } from "@tiptap/core";// 类型声明:扩展Tiptap的命令接口
declare module "@tiptap/core" {interface Commands<ReturnType> {lineHeight: {/** 设置行高(支持CSS单位如1.5/2/24px等) */setLineHeight: (lineHeight: string) => ReturnType;/** 重置为默认行高 */unsetLineHeight: () => ReturnType;};}
}export const LineHeightExtension = Extension.create({name: "lineHeight",// 扩展配置项addOptions() {return {types: ["paragraph", "heading"], // 应用行高样式的节点类型defaultLineHeight: null, // 默认行高(null表示不设置)};},// 添加全局属性处理addGlobalAttributes() {return [{types: this.options.types, // 应用到的节点类型attributes: {lineHeight: {// 默认值(从配置项获取)default: this.options.defaultLineHeight,// 渲染到HTML时的处理renderHTML: (attributes) => {if (!attributes.lineHeight) {return {};}// 将行高转换为行内样式return {style: `line-height: ${attributes.lineHeight};`,};},// 从HTML解析时的处理parseHTML: (element) => {return {// 获取行高样式或使用默认值lineHeight: element.style.lineHeight || this.options.defaultLineHeight,};},},},},];},// 添加自定义命令addCommands() {return {setLineHeight:(lineHeight) =>({ tr, state, dispatch }) => {// 创建事务副本以保持不可变性tr = tr.setSelection(state.selection);// 遍历选区内的所有节点state.doc.nodesBetween(state.selection.from, state.selection.to, (node, pos) => {// 只处理配置的类型节点if (this.options.types.includes(node.type.name)) {tr = tr.setNodeMarkup(pos, undefined, {...node.attrs,lineHeight, // 更新行高属性});}});// 提交事务更新if (dispatch) {dispatch(tr);}return true;},unsetLineHeight:() =>({ tr, state, dispatch }) => {tr = tr.setSelection(state.selection);// 遍历选区节点重置行高state.doc.nodesBetween(state.selection.from, state.selection.to, (node, pos) => {if (this.options.types.includes(node.type.name)) {tr = tr.setNodeMarkup(pos, undefined, {...node.attrs,lineHeight: this.options.defaultLineHeight, // 重置为默认值});}});if (dispatch) {dispatch(tr);}return true;},};},
});

使用案例

首先我们在extensions中添加扩展以激活

extensions: [/*......*/FontSizeExtension,LineHeightExtension.configure({types: ["paragraph", "heading"],}),/*......*/
];
http://www.dtcms.com/a/619608.html

相关文章:

  • 餐饮酒店网站建设网页传奇网址
  • 网站建设 客户评价泰州网站专业制作
  • 电子商务网站概念食品网站建设目的
  • 携程前端开发200道题面经及参考答案(上)
  • 深圳最好的网站建设公司排名建站公司前景
  • 郑州免费网站制作沈阳网络公司排名
  • 易捷网站内容管理系统漏洞太原网站搜索优化
  • 网站投注建设网页设计作业制作个人网站
  • 软件公司网站模板下载广告设计制作属于什么行业
  • 成都科技网站建设咨询电话湛江建站服务
  • 域名先解析后做网站帮做非法网站
  • CSS 自定义属性与滤镜:打造动态视觉效果的现代 Web 技术
  • 做自己的卡盟网站网站开发需要什么
  • 电子商务网站模版做图模板网站有哪些
  • 网站建设做什么会计分录厦门做企业网站比较好的公司
  • 扫码支付做进商城网站南京建设工程交易中心网站
  • 巩义做网站长沙网站设计培训学校
  • QC七大手法之柏拉图
  • 阜阳建设网站公司电话做网站找公司怎么找
  • [C#] NO.4 我的第一个C#项目
  • linux root节点解析
  • 14.vector(上)
  • 烟台网站建设开发网站正在建设中永久
  • 快速搭建网站框架图互联网产品运营推广方案
  • Golang学习第一天笔记总结
  • 用jsp实现网站开发实例wordpress去除评论
  • 【Java常用API】-----System 与 标准 I/O流
  • 网站access数据库被攻击不断增大北京市建设投标网站
  • 6.HTTP协议
  • 做网站都有哪些费用网站代备案公司名称