首页 > 其他分享 >9月28日总结

9月28日总结

时间:2023-10-03 14:33:06浏览次数:32  
标签:总结 node text Slate 28 Location path Path

能够对于文字、段落乃至任何元素的精准定位 并做出增删改查,都是在开发一款富文本编辑器时一项最基本也是最重要的功能之一。让我们先来看看Slate中对于如何在文档树中定位元素是怎么定义的[源码]:

/**

  • The Location interface is a union of the ways to refer to a specific
  • location in a Slate document: paths, points or ranges.
  • Methods will often accept a Location instead of requiring only a Path,
  • Point or Range. This eliminates the need for developers to manage
  • converting between the different interfaces in their own code base.
    */
    export type Location = Path | Point | Range

Location是一个包含了Path、Point及Range的联合类型,代指了Slate中所有关于“定位”的概念,同时也方便了开发。例如在几乎所有的Transforms方法中,都可以通过传递Location参数来决定Transforms方法需要应用到文档中的哪些位置上[链接]。

All transforms support a parameter options. This includes options specific to the transform, and general NodeOptions to specify which Nodes in the document that the transform is applied to.

interface NodeOptions {
  at?: Location
  match?: (node: Node, path: Location) => boolean
  mode?: 'highest' | 'lowest'
  voids?: boolean
}

Path

Path是三个中最基本的概念,也是唯一一个不可拓展的类型。

/**

  • Path arrays are a list of indexes that describe a node's exact position in
  • a Slate node tree. Although they are usually relative to the root Editor
  • object, they can be relative to any Node object.
    */
    export type Path = number[]

Path类型就是一个数组,用来表示Slate文档树中自根节点root到指定node的绝对路径。我们以下边的示例来演示下各个node所代表的路径:

const initialValue: Descendant[] = [
// path: [0]
{
type: 'paragraph',
children: [
{ text: 'This is editable ' }, // path: [0, 0]
{ text: 'rich text!', bold: true } // path: [0, 1]
]
},
// path: [1]
{
type: 'paragraph',
children: [
{ text: 'It' so cool.' } // path: [1, 0]
]
}
]

虽然Path所代表的路径通常是以顶层Editor作为root节点的,但也会有其他情况,比如由Node提供的get方法中传入的Path参数则代表的是相对路径[源码]:

/**

  • Get the descendant node referred to by a specific path. If th

标签:总结,node,text,Slate,28,Location,path,Path
From: https://www.cnblogs.com/lmyy/p/17741121.html

相关文章

  • 9.30每日总结
    今天是到家的第二天,首先我是不负众望地昏迷不醒,然后十二点出门觅食,下午去配了一副我日思夜想的黑框眼镜,顺便去磨了一个刀,晚上在电视中学习重要的人生经验,体味丰富的人生状态今天我学到了:如果人十二点之后起床,那么假期会变少~(>_<)~......
  • 9.28每日总结
    今天是回家的前一天晚上上午我学到了统一建模语言中关于图的定制,学习了乒乓球的姿势下午学习了数据结构中的队列,复习了栈,学习了离散数学中的闭包运算与集合运算晚上学习了营养与健康,收拾东西逃离河北(doge今天我学到了:东西要提前收拾,否则会使人手忙脚乱 ......
  • 挑战程序设计竞赛 2.2 poj 1328 Radarinstallation
    https://vjudge.net/problem/POJ-1328假设海岸线是一条无限长的直线。陆地在海岸线的一边,海洋在另一边。每个小岛都是位于海边的一个点。而位于海岸线上的任何雷达装置都只能覆盖d的距离,因此,如果两者之间的距离最多为d,那么海中的一个小岛就可以被一个半径为d的装置覆盖。......
  • 洛谷5343总结
    这题我们很容易想出一个状态,设f[i][j]表示前i个长度划分长度为j的块的总方案然后我们自信的写出\(f[i][j]=f[i-1][j]+f[i][j-a[i]]\)但这其实是错的!这跟背包很想,+f[i][j-a[i]]这一项的本质是说这个长度为j的块的最后一段的长度是a[i],但其实最后一段的长度是不定的,所以我们可以写......
  • 2023信友队提高组复赛冲刺班 10.2赛后总结
    T1:区块链赛场上还以为很难,直接打表,80pts。本来以为还不错,结果一堆人AC,吐血!算了,还是来说说正解吧,说多了都是血和泪啊啊啊!先对开头的公式进行变形,得到:nb/(b-n)xorb=a通过大量的样例我们可以发现,当b=n+1时,nb/(b-n)取到最大值这是为什么呢?我们可以来证明一下:∵ nb/(b-n)是......
  • C++ STL 一般总结
    以下内容来源网上经过整合而成一、一般介绍     STL(StandardTemplateLibrary),即标准模板库,是一个具有工业强度的,高效的C++程序库。它被容纳于C++标准程序库(C++StandardLibrary)中,是ANSI/ISOC++标准中最新的也是极具革命性的一部分。该库包含了诸多在计算机科学领域里......
  • Gym 103428B Subset
    CF传送门首先考虑没有选出的数互不相同的限制。设\(f_m\)为选出\(m\)个\(\in[0,n]\)的数,异或\(\text{popcount}=k\)的方案数。可以考虑枚举这\(m\)个数和\(n\)的\(\text{LCP}\)(要求后一位为\(1\)),然后钦定一位为\(1\)来满足\(\text{popcount}\)的限制。那......
  • 每日总结
    今天又画了一点的网页。学习了python的爬虫代码,主要是读别人的代码。importurllib.requestimporturllib.parseurl='https://www.baidu.com/s?wd='#请求对象的定制为了解决反爬的第一种手段headers={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x6......
  • 每日总结
    今日收获今天背了单词!将国庆的作业写完啦!!(当然,后续有了更好的灵感会继续改正和完善);还找了找关于C#的模板;明天预计学习大数据喽!!!背单词!!!备考软考!!再弄一弄C#的那个作业去;......
  • P2824 [HEOI2016/TJOI2016] 排序
    针对区间排序,显然能够上值域线段树类似,但这里有个更强的做法。如果能转化成01序列,那么一个区间排序的时候,只需区间询问1的个数+区间修改就可以了。因为是排列,很清晰的二分一个mid,把大于等于它的设为1,小于它的设为0,再跑上面的算法,最后check一下询问位置是否为1即可。单调性?感性......